Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

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.
  1. Avec Gparted, créez la partition qui recevra les fichiers isos (ici, /dev/sdb5 en NTFS)
  2. Montez cette partition :
    1. Créez le répertoire /media/partisos :

      ...@...:~$ sudo mkdir /media/partisos

    2. 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"

    3. É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
    4. Montez la partition :

      ...@...:~$ sudo mount /media/partisos

  3. Créez le dossier /media/partisos/isos/ avec les droits d'écriture :

    ...@...:~$ sudo mkdir -p /media/partisos/isos
    ...@...:~$ sudo chown $USER:$USER isos

  4. 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

  1. 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 :
    1. É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

    2. Activez cette configuration :

      ...@...:~$ sudo update-grub

  2. 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"
        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 :

    1. Distributions Ubuntu :
      ~/Téléchargements/isos/grubiso.cfg
      ...
      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
      1. 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”
    2. Distributions Linux :
      1. 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”)
      2. 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
      3. 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
      4. 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)
      5. 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
        }
      6. openSUSE :
        linux (loop)/boot/x86_64/loader/linux install=hd:$iso_path
        initrd (loop)/boot/x86_64/loader/initrd
      7. 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
    3. Distributions linux spécialisées :
      1. Jeux :
        1. 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
      2. 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
      3. 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
    4. Distributions pour test d'environnements :
      1. 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
      2. 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
      3. 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.

    5. 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
      }
      1. Remplacer XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX avec UUID de la partition ou est l'image Windows 10.
      2. Activer les modules necessaires :
        1. insmod part_gpt: ce module est nécessaire, si Win10-ISO-Image est sur une table de partition GPT.
        2. insmod part_msdos: Choisir si l'image Windows est sur une table de partition DOS
        3. insmod ntfs: ce module est nécessaire si l'image Windows est sur une table de partition NTFS.
        4. insmod ext2: Remplacer insmod ntfs par insmod ext2, si l'image est sur des partitions ext2/ext3 ou ext4
      3. Remplacer /ISO_PATH/file.iso pas le chemin d'accès et le fichier iso
  3. exemple :
    ~/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
    }
  4. Syntaxe :
    1. Ligne vide :
      menuentry "   " {
          true
      }
    2. Ligne de sous-titre :
      menuentry "-------------------     Sous-titre     -------------------" {
          true
      }
    3. 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