Table des matières

, ,

Lancer des images iso directement depuis GRUB 2

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.

Généralités

Pourquoi lancer ses ISOs avec Grub?

Prérequis

Pour les versions 19.10 et suivantes installées en mode UefiProblèmes connus pour pouvoir continuer à utiliser cette fonctionnalité.

Installation depuis l'iso lancé (Ubuntu et dérivés)

Depuis la version 22.04, comme isodevice n'est plus monté par défaut, cette procédure est devenue inutile.

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

Ajout d'une option ISO à Grub

En quelques clics avec GRML

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.

Manuellement

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.

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

Méthode simple et rapide

Lorsque Grub est en mode EFI, on peut activer le menu par défaut intégré à l'iso avec ce menu type:

/etc/grub.d/40_custom
menuentry "..    Xubuntu Lunar 23.04 (Daily build)" {
	iso_path="/isos/lunar-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..

Distributions Ubuntu et dérivés

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.

/etc/grub.d/40_custom
menuentry "..    Xubuntu 22.04 LTS ...." {
	set iso_path="/isos/xubuntu-22.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
}

Sources des isos

Ubuntu et ses variantes
Attention ! pour certaines anciennes versions avant 18.04, on peut avoir vmlinuz.efi (et non vmlinuz) et une extension .lz ou .gz à 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 :

Dérivés : LinuxMint,..

Systèmes de maintenance

GParted Live

SystemRescueCd

À 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

Clonezilla vous permettra de cloner une partition vers une image ou une autre partition ou inversement.

Distributions Linux principales

Arch

Ne connaissant aucune version livecd officielle, voici quelques distributions dérivées de Arch Linux (pas trouvé comment les lancer directement en français) :

Debian

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

Dérivées

Fedora

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.

Gentoo

Dérivées

OpenMandriva Lx

openSUSE

Slackware

Un petit tour chez la grand-mère des distros. Pas réussi à lancer la version live depuis Grub.

Distributions linux spécialisées

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.

Jeux

Logiciels éducatifs

Logiciels pour la MAO (Musique Assistée par Ordinateur)

Distributions pour test d'environnements

Enlightenment

Pantheon d'Elementary OS

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)

antiX: IceWm et Fluxbox

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

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

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 :

  1. Remplacer XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX avec UUID de la partition ou est l'image Windows 10.
  2. 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
  3. Remplacer /ISO_PATH/file.iso pas le chemin d'accès et le fichier iso

Pour aller plus loin

GRUB sur une clé USB

Pour lancer ses ISOs, on peut créer une clé USB bootable avec Grub dessus.

Remise à zéro de la clé

Dans Gparted

Se positionner sur le bon disque (ici sdc),
cliquer sur la liste des périphériques dans gparted
Si une ou plusieurs partitions sont montées, la/les démonter par clic droit,
puis créer une nouvelle table de partitions de type "msdos",
dans le menu "Périphérique" de gparted

Créer 2 partitions

Installer Grub

Pour faire fonctionner cette clé, il vous faudra rajouter un fichier dans /grub sur la clé: grub.cfg.

exemple de fichier grub.cfg

Voici un grub.cfg qui fonctionne:

grub.cfg
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 22.04 LTS" {
	set iso_path="/xubuntu-22.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.

Une configuration sans être root

le dossier /isos

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

Fichier de configuration non root

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:

Maintenant, chaque modification de grubiso.cfg dans /isos est prise en compte sans nouvel update-grub !

Problèmes connus

grub en version 2.04 installé en mode EFI

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

Versions Ubuntu 32 bits en mode EFI

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