Il y a un bogue dans grub 2.04 alors assurez-vous d'avoir une version antérieure ou ultérieure.
Eh bien, les bases pour ajouter un fichier ISO à grub sont les mêmes pour un UEFI que pour une machine BIOS: éditez /etc/grub.d/40_custom
et ajoutez un menuentry
élément (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'à présent, tout va bien: aucune différence avec les machines du 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 de répertoires à la racine de ma machine et selon la hiérarchie du système de fichiers Linux, c'est là que les logiciels optionnels devraient de toute façon résider.
Avant d' ajouter la loopback
variable que nous devons savoir sur quel disque dur le fichier est stocké, donc nous faisons: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1
et la sortie sur ma machine est la suivante : /dev/sdb2
.
Cependant grub utilisations ( hdX,Y
notation) et c'est là la différence entre les machines et UEFI BIOS vient! Alors maintenant , redémarrez votre machine, allez dans le menu sans tête et appuyez sur : Cela vous amènera à la commande grub rapide avec différentes commandes que vous êtes habitué , mais le seul que vous avez besoin est: .Cls
Sur ma machine, la sortie est:
(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...
Hein? 4 disques? J'en ai seulement 3! Et ce n'est pas en (hd1,4)
ligne sur un BIOS mais (hd1,gpt3)
en UEFI et (hd0)
n'a aucune partition du tout!
Eh bien, apparemment, lorsqu'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 trouverez sur le démarrage des fichiers ISO indiquent que vous devez commencer la numérotation à partir de 0 (sur les machines BIOS, cela est toujours vrai , ce n'est pas nécessairement le cas sur certaines machines UEFI !)
Ainsi, la valeur de loopback
devient (hd2,gpt2)$GPartedISOFile
comme le fichier ISO sur ma machine /dev/sdb2
(deuxième lecteur hd2
, 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 les linux
et initrd
sur les machines BIOS sont appelées linuxefi
et linuxefi
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
}
Alors 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 à nouveau!
:-)
Exemple 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
}