{{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.//