Ceci est une ancienne révision du document !
Table des matières
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 :
- /etc/fstab
... 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 :
- /etc/grub.d/40_custom
... 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 :- ~/Téléchargements/isos/grubiso.cfg
set iso_root="/isos" # à adapter selon le répertoire des isos menuentry "------------------- Sous-titre -------------------" { true } menuentry "Titre_entrée_menu" { set iso_name="nom_fichier_iso.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.." <Lignes variables> }
Voici les lignes variables pour quelques cas :
- Distributions Ubuntu :
set VAR="<variante>" 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 : Lignes “preseed” :
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.imgenvironnement 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.imgenvironnement 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.imgUberstudent 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.lzLogiciels 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.imgDistributions 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 isoexemple :- ~/Téléchargements/isos/grubiso.cfg
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 :Commandes disponibles dans GRUB
Conclusion
Problèmes connus
Voir aussi