Il existe un bug dans Grub 2.04 assurez-vous donc d'avoir une version antérieure ou ultérieure.
Eh bien, les bases pour ajouter un fichier ISO à Grub sont les mêmes pour une machine UEFI que pour une machine BIOS : modifier /etc/grub.d/40_custom
et ajouter un menuentry
(GParted est utilisé dans cet exemple) au bas du fichier :
menuentry "GParted Live ISO" {
}
Maintenant, nous allons ajouter une variable contenant le répertoire où nous avons stocké l'ISO (jusqu'ici, tout va bien : pas de différences avec les machines BIOS) :
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}
J'utilise /opt
pour les stocker, car je n'aime pas créer des répertoires à la racine de ma machine et, selon la directive de l Hiérarchie du système de fichiers Linux c'est là que les logiciels optionnels devraient résider de toute façon.
Avant d'ajouter le loopback
nous avons besoin de savoir sur quel disque dur le fichier est stocké, donc nous faisons un : df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1
et la sortie sur ma machine est : /dev/sdb2
.
Cependant Grub utilise ( hdX,Y
) et la notation こん C'est là qu'intervient la différence entre les machines UEFI et BIOS ! Maintenant, redémarrez votre machine, Allez dans le menu Grub. et appuyez sur C : Ceci vous amènera à l'invite de commande Grub avec des commandes différentes de celles auxquelles vous êtes habitué mais le seul dont vous avez besoin est : ls
.
Sur ma machine, la sortie est la suivante :
(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...
Hein ? 4 disques durs ? J'en ai seulement 3 ! Et ce n'est pas (hd1,4)
sur un BIOS mais (hd1,gpt3)
dans l'UEFI et (hd0)
n'a pas de partitions du tout !
Eh bien, apparemment, quand une partie de la NVRAM est utilisée comme stockage et apparaît comme (hd0)
vous devez commencer à numéroter vos disques à 1 ! Alors que toutes les informations que vous trouvez sur le démarrage des fichiers ISO disent que vous devez commencer à numéroter à partir de 0 (sur les machines BIOS, c'est toujours vrai mais ce n'est pas nécessairement le cas sur certaines machines UEFI ! )
Ainsi, la valeur de loopback
devient (hd2,gpt2)$GPartedISOFile
car le fichier ISO sur ma machine était /dev/sdb2
(deuxième lecteur hd2
, la deuxième partition gpt2
):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
loopback loop (hd2,gpt2)$GPartedISOFile
}
Une autre différence est que le linux
y initrd
sur les machines BIOS sont appelés linuxefi
y initrdefi
sur les machines UEFI, ce qui nous donne notre résultat final :
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
loopback loop (hd2,gpt2)$GPartedISOFile
linuxefi (loop)/live/vmlinuz boot=live components config findiso=$GPartedISOFile ip=frommedia toram=filesystem.squashfs union=overlay username=user
initrdefi (loop)/live/initrd.img
}
Donc maintenant, enregistrez ce fichier, et mettez à jour Grub avec :
update-grub
- Après tout ce qui précède, redémarrez, Allez dans le menu Grub. choisissez
GParted Live ISO
et vous pouvez maintenant facilement démarrer votre ISO sans avoir à chercher une clé USB !
-)
Exemple de CloneZilla Live (pour cette question )
menuentry "CloneZilla ISO" {
set ISOFile="/opt/Live-ISOs/clonezilla-live-20170905-zesty-amd64.iso"
loopback loop (hd2,gpt2)$ISOFile
linuxefi (loop)/live/vmlinuz boot=live components config findiso=$ISOFile ip=frommedia toram=filesystem.squashfs union=overlay
initrdefi (loop)/live/initrd.img
}