Pour lancer une distribution linux sans avoir à graver sur Cd, les solutions existantes ont le plus souvent recours à une clé USB gravée avec :
On peut aussi utiliser Virtualbox qui ne nécessite pas de clé USB mais dont l'inconvénient est qu'il ne teste pas votre configuration mais un matériel émulé.
Voici la procédure à suivre pour lancer vos ISOs présents sur le disque dur directement avec Grub 2.
grub-install -V
L'installation se fait directement sans souci !
Lorsque Grub lance une iso Ubuntu, le support d'installation est monté par défaut dans /isodevice.
Pour permettre une installation vous devez :
- avoir ajouté l'option "toram" dans la ligne "linux (loop)" du menu de votre iso.
- Pour démonter /isodevice et contourner ce problème, on lancera ces 2 commandes:
sudo losetup -d /dev/loop0 sudo umount -lrf /isodevice
Maintenant, il suffit de double cliquer sur "installer ubuntu".
GRML rescueboot est un logiciel qui ajoute automatiquement des isos à votre menu GRUB2
Installer grml-rescueboot
Copier un fichier iso dans /boot/grml (en tant qu'admin bien sûr)
Executer
sudo update-grub
Le menu est prêt ! Vous pouvez redémarrer et choisir votre iso.
Dans ce tutoriel, les fichiers "iso" sont tous stockés dans un dossier /isos à la racine d'une des partitions présentes dans l'ordinateur.
sudo update-grub
Une méthode modulaire (plus souple) est d'utiliser un fichier de configuration par système d'exploitation et de le référencer dans grub.cfg : voir la section Une configuration sans être root
Lorsque Grub est en mode EFI, on peut activer le menu par défaut intégré à l'iso avec ce menu type:
menuentry ".. Xubuntu Oracular 24.10 (Daily build)" { iso_path="/isos/Oracular-desktop-amd64.iso" export iso_path search --set=root --file $iso_path loopback loop $iso_path echo "Lancement de l'iso en cours, veuillez patienter.." root=(loop) configfile /boot/grub/loopback.cfg loopback --delete loop }
Testé sans souci avec les variantes Ubuntu (2021 et suivantes), Linux Mint 20.1 et Debian 10. Parfois, sur d'autres distributions, on a le menu mais ensuite le lancement échoue.
C'est pratique et rapide à mettre en œuvre (on ne change que le nom de l'iso) mais la distribution n'est pas localisée en français..
Ubuntu utilise le paquet 'casper' pour ses live-cd. Donc ce menu est valable aussi pour Linux-Mint et d'autres distributions basées sur Ubuntu.
menuentry ".. Xubuntu 24.04 LTS ...." { set iso_path="/isos/xubuntu-24.04-desktop-amd64.iso" 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 }
Pour vérifier, il faut ouvrir l'iso avec le gestionnaire d'archives (par clic droit) et regarder dans le dossier "casper".
Voici les lignes 'preseed' pour toutes les variantes d'Ubuntu :
menuentry "GParted Live" { linux (loop)/live/vmlinuz findiso=${iso_path} boot=live union=overlay username=user config components noswap toram=filesystem.squashfs ip= net.ifnames=0 nosplash locales=fr_FR.UTF-8 keyboard-layouts=fr initrd (loop)/live/initrd.img }
À partir de la version 6. Basé maintenant sur Arch (au lieu de Gentoo).
Page de téléchargement - Manuel d'utilisation - Manuel d'installation (First approch using Grub2 with isoloop)
menuentry "systemrescuecd > v6" { set iso_path="/systemrescuecd-amd64-6.1.6.iso" search --set=root --file $iso_path loopback loop $iso_path probe -u $root --set=iso_disk echo 'Lancement en cours, patientez ...' linux (loop)/sysresccd/boot/x86_64/vmlinuz img_dev=/dev/disk/by-uuid/$iso_disk img_loop=$iso_path archisobasedir=sysresccd copytoram setkmap=fr-latin9 initrd (loop)/sysresccd/boot/x86_64/sysresccd.img }
Clonezilla vous permettra de cloner une partition vers une image ou une autre partition ou inversement.
linux (loop)/live/vmlinuz persistent boot=live findiso=$iso_path union=overlay username=user config components quiet noswap lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 edd=on nomodeset nodmraid ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\" keyboard-layouts=fr ocs_live_batch=\"no\" vga=normal ip=frommedia nosplash toram=filesystem.squashfs timezone=Europe/Paris utc=yes initrd (loop)/live/initrd.img
linux (loop)/live/vmlinuz persistent boot=live findiso=$iso_path union=overlay username=user hostname=xenial config components quiet noswap lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 edd=on nomodeset nodmraid noeject ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\" keyboard-layouts=fr ocs_live_batch=\"no\" vga=normal ip=frommedia nosplash toram=filesystem.squashfs timezone=Europe/Paris utc=yes net.ifnames=0 initrd (loop)/live/initrd.img
Ne connaissant aucune version livecd officielle, voici quelques distributions dérivées de Arch Linux (pas trouvé comment les lancer directement en français) :
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
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
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 }
Même si Debian est parent du projet Ubuntu, son lancement est différent car il n'utilise pas casper (pour connaître la version du vmlinuz et du initrd, il faut ouvrir l'iso avec votre gestionnaire d'archives).
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
Dérivées
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
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
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
Dérivées
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
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 }
linux (loop)/boot/x86_64/loader/linux install=hd:$iso_path initrd (loop)/boot/x86_64/loader/initrd
Un petit tour chez la grand-mère des distros. Pas réussi à lancer la version live depuis Grub.
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
Ce sont des distributions dédiées à une certaine utilisation. N'oubliez pas les paramètres généraux et les lignes en italiques sont celles qui sont différentes du menu de base.
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
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
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
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
elementary OS (basé sur Ubuntu) a son propre environnement baptisé Pantheon.
Page de téléchargement (pour tester, on peut mettre 0€ et utiliser le magnet/torrent)
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 est une distribution pouvant tourner sur de vieux systèmes. Elle utilise notamment des environnements de bureau légers tels que IceWm et Fluxbox.
Page de téléchargement
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.
Voici la configuration de base :
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 }
Adaptation :
Pour lancer ses ISOs, on peut créer une clé USB bootable avec Grub dessus.
sudo blkid
Dans Gparted
sudo apt install grub-pc-bin grub-efi-amd64-bin
sudo mkdir /mnt/efi sudo mkdir /mnt/usb sudo mount /dev/sdc1 /mnt/efi sudo mount /dev/sdc2 /mnt/usb
sudo grub-install --no-floppy --boot-directory=/mnt/usb --removable --target=i386-pc /dev/sdc sudo grub-install --no-floppy --boot-directory=/mnt/usb --removable --target=x86_64-efi --efi-directory=/mnt/efi /dev/sdc
Pour faire fonctionner cette clé, il vous faudra rajouter un fichier dans /grub sur la clé: grub.cfg.
Voici un grub.cfg qui fonctionne:
insmod part_gpt insmod part_msdos insmod fat insmod ext2 insmod ntfs #insmod all_video insmod efi_gop insmod efi_uga insmod video_bochs insmod video_cirrus insmod gfxterm set gfxmode=1920x1080 set locale_dir=/grub/locale set lang=fr_FR insmod gettext terminal_output gfxterm insmod gfxmenu rmmod tpm insmod gzio insmod loopback insmod iso9660 insmod png insmod jpeg insmod font loadfont /grub/fonts/unicode.pf2 loadfont /grub/themes/Crunchy-simple/ComicNeue_normal.pf2 loadfont /grub/themes/Crunchy-simple/ComicNeue_title.pf2 theme=/grub/themes/Crunchy-simple/theme-fog.txt #timeout=4 default=1 background_image /grub/themes/Crunchy-simple/fog/foggy-forest.jpg gfxpayload=keep menuentry "------------------- MAINTENANCE -------------------" { true } menuentry "... Gparted live" { set iso_path="/gparted-live-1.0.0-5-amd64.iso" search --set=root --file $iso_path loopback loop $iso_path echo 'Lancement en cours, veuillez patienter ...' linux (loop)/live/vmlinuz findiso=${iso_path} boot=live union=overlay username=user config components noswap toram=filesystem.squashfs ip= net.ifnames=0 nosplash locales=fr_FR.UTF-8 keyboard-layouts=fr initrd (loop)/live/initrd.img } menuentry "----------------- Linux à installer -----------------" { true } menuentry ".... Xubuntu 24.04 LTS" { set iso_path="/xubuntu-24.04-desktop-amd64.iso" search --set=root --file $iso_path loopback loop $iso_path echo 'Lancement 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 -- initrd (loop)/casper/initrd } menuentry "----------- Accès aux systèmes installés -----------" { true } menuentry ".. Menu sur /dev/sda2 (e pour modifier)" { set root='hd0,gpt2' configfile /boot/grub/grub.cfg } menuentry " > » ETEINDRE « <" { halt }
Comme sur la clé, nous sommes sur une partition NTFS, nous pourrons modifier ce fichier sans avoir besoin d'être 'root'.
Le thème utilisé provient de cette page.
Si ce dossier est à la racine, peut-être avez-vous des problèmes de droits avec. Il vous suffit de changer l'appartenance du dossier avec la commande:
sudo chown -R $USER:$USER /isos
Plus haut, nous avons dit qu'il fallait ajouter les menus dans le fichier "/etc/grub.d/40_custom". Cela oblige à faire un update-grub après chaque modification.
La solution:
menuentry "===>> lancer mes isos" { search --set=root --file /isos/grubiso.cfg configfile /isos/grubiso.cfg }
Maintenant, chaque modification de grubiso.cfg dans /isos est prise en compte sans nouvel update-grub !
Selon ce bug, pour les versions 19.10 et suivantes avec un grub en version 2.04 installé en mode EFI, le boot iso via la commande loopback
ne fonctionne plus.
Un contournement plus simple a été suggéré au post #51 du lien ci-dessus, c'est de rajouter une ligne pour supprimer le module tpm avant la commande loopback:
rmmod tpm loopback loop $iso_path
En résumé : cela ne fonctionne pas
Détail : …sans remasteriser l'ISO, car l'ISO standard n'a pas du tout de répertoire /EFI (contrairement aux versions 64 bits). La "philosophie" des versions 32 bits (donc avant la 20.04) est qu'elles étaient faites pour marcher sur des "vieilles machines", donc a priori en mode BIOS.
Une façon de remasteriser (en anglais) pour obtenir ce support : https://askubuntu.com/questions/392719/32-bit-uefi-boot-support
Contributeurs principaux : Frombenny …