{{tag>tutoriel}}
====== Lancer des images iso directement depuis GRUB 2 ======
Lancer ses ISOs avec Grub permet de :
* **tester** n'importe quelle distribution Linux
* **installer une distribution** sans avoir à graver un CD
* **installer une distribution de maintenance** quand l'ordinateur ne marche plus (gparted live, rescueCD,.. )
Voici comment lancer vos isos présents sur le disque dur directement avec Grub 2.
Nous utiliserons un fichier de configuration par système d'exploitation et le référencerons dans **grub.cfg**.
===== Pré-requis =====
* **version de Grub** >= 1.97 :...@...:~$ grub-install -V
grub-install (GRUB) 2.04-1ubuntu26.15
===== Première étape =====
Dans les exemples, la partition pour les fichiers isos sera **/dev/sdb5 -> (hd1,5)**
Rappel de la notation de GRUB :
* disque :
* sda -> hd0
* sdb -> hd1
* etc.
* partition :
* sda1 -> 1
* sda2 -> 2
* etc.
- **Avec Gparted**, créez la partition qui recevra les fichiers isos (ici, /dev/sdb5 en NTFS)
- **Montez cette partition** :
- **Créez le répertoire /media/partisos** :...@...:~$ sudo mkdir /media/partisos
- **Repérez l'UUID de la partition voulue** (ici, /dev/sdb5) :...@...:~$ sudo blkid /dev/sdb5
/dev/sdb5: LABEL="isos" UUID="19D22ADE39FB5783" TYPE="ntfs" PARTUUID="6db6c434-05"
- **Éditez avec les droits d'administration le fichier /etc/fstab** pour y ajouter la ligne :
...
UUID=19D22ADE39FB5783 /media/partisos ntfs-3g rw,user,auto,gid=1000,uid=1000,nls=utf8,umask=002 0 0
- **Montez la partition** :...@...:~$ sudo mount /media/partisos
- **Créez le dossier /media/partisos/isos/** avec les droits d'écriture :...@...:~$ sudo mkdir -p /media/partisos/isos
...@...:~$ sudo chown $USER:$USER isos
- **Créez un lien symbolique dans le dossier Téléchargements pour un accès facile** :...@...:~$ ln -f -s -r -t ~/Téléchargements isos
Désormais, les fichiers iso téléchargés pourront être déplacés dans ce dossier isos depuis le dossier ~/Téléchargements.
Les fichiers de configuration de grub dans /boot/grub/grub.cfg
===== Autres étapes =====
- **Modifiez la configuration de GRUB** pour ne plus devoir lancer la commande **update-grub** après chaque modification et pouvoir modifier les sous-menus sans droits d'administration :
- **Éditez avec les droits d'administration le fichier /etc/grub.d/40_custom** pour lui ajouter cette entrée de menu qui mène à un fichier de configuration situé sur la partition isos :
...
menuentry " " {
true
}
menuentry "===>> lancer mes isos" {
search --set=root --file /isos/grubiso.cfg
configfile /isos/grubiso.cfg
}
Les sous-menus seront écrits dans le fichier grubiso.cfg, accessible sans droits d'administrateur depuis ~/Téléchargements/isos/grubiso.cfg
- **Activez cette configuration** :...@...:~$ sudo update-grub
- **Créez et éditez le fichier** :
set iso_root="/isos" # à adapter selon le répertoire des isos
menuentry "------------------- Sous-titre -------------------" {
true
}
menuentry "Titre_entrée_menu" {
set iso_name=".iso"
set iso_path="$iso_root/$iso_name"
search --set=root --file $iso_path
loopback loop $iso_path
echo "Lancement de l'iso en cours, veuillez patienter.."
}
Voici les lignes variables pour quelques cas :
- **Distributions Ubuntu** :
...
set VAR=""
linux (loop)/casper/vmlinuz locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$iso_path boot=casper \
file=/cdrom/preseed/$VAR.seed noprompt quiet splash toram --
initrd (loop)/casper/initrd
- **Variantes** :
^ Ubuntu | set VAR="ubuntu" |
^ Kubuntu | set VAR="kubuntu" |
^ Lubuntu | set VAR="lubuntu" |
^ Ubuntu-Budgie | set VAR="ubuntu-budgie" |
^ Ubuntu-Mate | set VAR="ubuntu-mate" |
^ Ubuntu Studio | set VAR="ubuntustudio" |
^ Xubuntu | set VAR="xubuntu" |
^ Ubuntu Kylin | set VAR="cli" |
^ Linux Mint | set VAR="linuxmint" |
^ Voyager | set VAR="xubuntu" |
- **Distributions Linux** :
- **Arch**
^ Archbang | linux (loop)/arch/boot/x86_64/vmlinuz img_dev=/dev/sda2 img_loop=$iso_path earlymodules=loop archisobasedir=arch archisolabel=ARCHBANG\\ initrd (loop)/arch/boot/intel_ucode.img (loop)/arch/boot/x86_64/archiso.img | environnement Openbox\\ (modifier 'img_dev' selon la partition où est votre iso et 'archisolabel') |
^ ArchEX | linux (loop)/arch/boot/x86_64/vmlinuz img_dev=/dev/sda2 img_loop=$iso_path earlymodules=loop archisobasedir=arch archisolabel=ARCH_201607\\ initrd (loop)/arch/boot/intel_ucode.img (loop)/arch/boot/x86_64/archiso.img | environnement Lxde\\ (modifier 'img_dev' selon la partition où est votre iso et 'archisolabel') |
^ Manjaro Lxqt | menuentry ".. Manjaro Lxqt" {\\ set iso_path="/manjaro-lxqt-20.0-200423-linux56.iso"\\ search --set=root --file $iso_path\\ probe -u $root --set=iso_disk\\ set iso_device="/dev/disk/by-uuid/$iso_disk"\\ loopback loop $iso_path\\ echo 'Lancement en cours, patientez ...'\\ probe -l (loop) --set=klabel\\ linux (loop)/boot/vmlinuz-x86_64 img_dev=$iso_device img_loop=$iso_path misobasedir=manjaro misolabel=$klabel driver=free lang=fr_FR keytable=fr tz=Europe/Paris\\ initrd (loop)/boot/intel_ucode.img (loop)/boot/initramfs-x86_64.img\\ } | ('img_dev' et 'misolabel' sont trouvés avec la commande “probe”) |
- **Debian** :
^ Stable | linux (loop)/live/vmlinuz-4.9.0-4-amd64 boot=live findiso=${iso_path} components keyboard-layouts=fr locales=fr_FR.UTF-8 timezone=Europe/Paris\\ initrd (loop)/live/initrd.img-4.9.0-4-amd64 | (version 9.3 : Stretch) |
^ LMDE | linux (loop)/live/vmlinuz boot=live findiso=${iso_path} live-config lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr timezone=Europe/Paris utc=yes quiet splash\\ initrd (loop)/live/initrd.lz | |
- **Fedora live Workstation** : Par rapport au menu standard, on définira une variable de plus : $isolabel. Pour la trouver, il faut ouvrir l'iso avec le gestionnaire d'archives (clic droit). Dans le dossier 'isolinux', il faut ouvrir 'isolinux.cfg' puis rechercher CDLABEL
set isolabel="Fedora-WS-Live-32-1-6"
linuxefi (loop)/images/pxeboot/vmlinuz root=live:CDLABEL=$isolabel iso-scan/filename=$iso_path rd.live.image rhgb
initrdefi (loop)/images/pxeboot/initrd.img
- **Gentoo** :
^ Gentoo Live DVD | linux (loop)/isolinux/gentoo isoboot=$iso_path root=/dev/ram0 init=/linuxrc aufs looptype=squashfs loop=/image.squashfs cdroot vconsole.keymap=fr locale=fr_FR console=tty1 nomodeset\\ initrd (loop)/isolinux/gentoo.xz | (les codes pour le lancer directement en français ne fonctionnent plus depuis la version 2016) |
^ Sabayon | linux (loop)/boot/sabayon root=/dev/ram0 init=/linuxrc lang=fr_FR isoboot=${iso_path} cdroot looptype=squashfs loop=/livecd.squashfs overlayfs\\ initrd (loop)/boot/sabayon.igz | (lui peut être lancé en français sans problème) |
- **OpenMandriva Lx** :
menuentry "OpenMandriva" {
set iso_path=/isos/OpenMandrivaLx.4.1-plasma.x86_64.iso
set isoname=OpenMandrivaLx_4.1
loopback loop $iso_path
echo 'Lancement en cours, patientez ...'
linux (loop)/boot/vmlinuz0 root=live:LABEL=${isoname} iso-scan/filename=${iso_path} locale.LANG=fr_FR.UTF-8 vconsole.keymap=fr rd.live.image toram --
initrd (loop)/boot/liveinitrd.img
}
- **openSUSE** :
linux (loop)/boot/x86_64/loader/linux install=hd:$iso_path
initrd (loop)/boot/x86_64/loader/initrd
- **Slackware** :
linux (loop)/kernels/huge.s/bzImage load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s locale=fr_FR.utf8 kbd=fr tz=Europe/Paris
initrd (loop)/isolinux/initrd.img
- **Distributions linux spécialisées** :
- **Jeux** :
- **Fedora Games** (voir plus haut) :
set isolabel="Fedora-Game-Live-24-1-2"
linux (loop)/isolinux/vmlinuz root=live:CDLABEL=$isolabel iso-scan/filename=$iso_path rootfstype=auto rd.live.image rhgb KEYTABLE=fr LANG=fr_FR.utf8 locale.lang=fr_FR vconsole.keymap=fr\\ initrd (loop)/isolinux/initrd.img
- **Logiciels éducatifs** :
^ edubuntu | pas d'iso depuis 2014 |
^ PrimTux | linux (loop)/live/vmlinuz2 boot=live findiso=${iso_path} components live-config hostname=localhost lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr timezone=Europe/Paris utc=yes quiet splash\\ initrd (loop)/live/initrd2.img |
^ Uberstudent | linux (loop)/casper/vmlinuz locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$iso_path boot=casper file=/cdrom/preseed/uberstudent.seed noprompt quiet splash\\ initrd (loop)/casper/initrd.lz |
- **Logiciels pour la MAO (Musique Assistée par Ordinateur)** :
^ Ubuntu Studio | (déjà cité plus haut) |
^ Musix | linux (loop)/live/vmlinuz boot=live findiso=${iso_path} live-config lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr timezone=Europe/Paris utc=yes quiet splash\\ initrd (loop)/live/initrd.img |
- **Distributions pour test d'environnements** :
- **Enlightenment** (Elive)
linux (loop)/live/vmlinuz1 username=eliveuser boot=live findiso=${iso_path} live-config lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr timezone=Europe/Paris utc=yes loglevel=0 quiet splash
initrd (loop)/live/initrd1.img
- **Pantheon d'Elementary OS** (basé sur Ubuntu)
linux (loop)/casper/vmlinuz locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$iso_path boot=casper noprompt quiet splash
initrd (loop)/casper/initrd.lz
- **antiX: IceWm et Fluxbox** :
probe -u $root --set=iso_disk
linux (loop)/antiX/vmlinuz fromiso=$iso_path bootuuid=$iso_disk lang=fr tz=Europe/Paris xres=1920x1080 toram hwclock=utc quiet splasht disable=lxF
initrd (loop)/antiX/initrd.gz
Remarque : 'xres' est à adapter à votre configuration. Sur leur site web, on trouve aussi une autre distribution nommée MX19 qui fonctionne avec le même menu grub.
- **Windows 10** :
menuentry "Windows 10" --class windows --class os {
# Insert modules needed in order to access the iso-file
insmod part_gpt
#insmod part_msdos
insmod ntfs
#insmod ext2
# Insert module needed in order to find partition
insmod search_fs_uuid
# Set UUID of partition with the iso-image
# and let grub2 find the partition
# (save it's identifier to the variable $root)
set uuid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
search --no-floppy --set=root --fs-uuid $uuid
# Mount the iso image by addressing it with (partition)/path
set iso=/ISO_PATH/file.iso
loopback loop ($root)$iso
# boot (chain-load) the image using the cdboot.efi file located
# on the win10-image
chainloader (loop)/efi/microsoft/boot/cdboot.efi
}
- **Remplacer** XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX avec UUID de la partition ou est l'image Windows 10.
- **Activer** les modules necessaires :
- insmod part_gpt: ce module est nécessaire, si Win10-ISO-Image est sur une table de partition GPT.
- insmod part_msdos: Choisir si l'image Windows est sur une table de partition DOS
- insmod ntfs: ce module est nécessaire si l'image Windows est sur une table de partition NTFS.
- insmod ext2: Remplacer insmod ntfs par insmod ext2, si l'image est sur des partitions ext2/ext3 ou ext4
- **Remplacer** /ISO_PATH/file.iso pas le chemin d'accès et le fichier iso
- **exemple** :
menuentry "------------------- Distributions Ubuntu -------------------" {
true
}
menuentry "Ubuntu 20.04.4 LTS (Focal Fossa) 64 bits" {
set iso_name="ubuntu-20.04.3-desktop-amd64.iso"
set iso_path="$iso_root/$iso_name"
search --set=root --file $iso_path
loopback loop $iso_path
echo "Lancement de l'iso en cours, veuillez patienter.."
linux (loop)/casper/vmlinuz \
locale=fr_FR bootkbd=fr console-setup/layoutcode=fr \
iso-scan/filename=$iso_path boot=casper file=/cdrom/preseed/xubuntu.seed \
noprompt quiet splash toram --
initrd (loop)/casper/initrd
}
- **Syntaxe** :
- **Ligne vide** :
menuentry " " {
true
}
- **Ligne de sous-titre** :
menuentry "------------------- Sous-titre -------------------" {
true
}
- **Entrée de menu** :
menuentry "Titre_de_menu" {
set iso_name="nom_du_fichier.iso"
set iso_path="$iso_root/$iso_name"
search --set=root --file $iso_path
loopback loop $iso_path
echo "Lancement de l'iso en cours, veuillez patienter.."
linux (loop)/casper/vmlinuz \
locale=fr_FR bootkbd=fr console-setup/layoutcode=fr \
iso-scan/filename=$iso_path boot=casper file=/cdrom/preseed/xubuntu.seed \
noprompt quiet splash toram --
initrd (loop)/casper/initrd
}
Voir aussi :**[[tutoriel:systeme:grub:iso:commandes:start|]]**
===== Conclusion =====
===== Problèmes connus =====
===== Voir aussi =====
* **(fr)** [[https://doc.ubuntu-fr.org/tutoriel/grub2_lancer_des_images_iso]]
* **(en)** [[https://www.gnu.org/software/grub/manual/grub/grub.pdf]]
* **(fr)** [[http://tradinfo.e-monsite.com/medias/files/manuel-gnu-grub-2.04-multiboot-2.pdf]]
----
//Basé sur << [[https://doc.ubuntu-fr.org/tutoriel/grub2_lancer_des_images_iso|Lancer des images iso directement depuis GRUB 2]] >> par doc.ubuntu-fr.org.//