Ceci est une ancienne révision du document !
GRUB sur une clé USB
Le but de ce tutoriel est de créer un Grub sur une clé USB bootable avec un ou plusieurs iso()s lançable(s) directement comme indiqué ici.
Dans ce tutoriel, le parti pris est d'utiliser une table de partitions de type "msdos" accessible aussi bien depuis des systèmes anciens que récents. On les formatera en FAT32 pour qu'on puisse y avoir accès, aussi, depuis MS Windows.
Pré-requis
- Avoir une clé USB d'au moins 2 Go (Selon le ou les isos qu'on veut lancer. Attention, tout son contenu sera effacé !).
- Repérer son nom.
sudo blkid
- Avoir à disposition un fichier iso d'une des variantes Ubuntu.
La procédure pour faire la même chose depuis Windows n'est pas traitée ici.
Installation de grub sur la clé
Partitionnement avec gparted
- Si une ou plusieurs partitions sont montées, la/les démonter par clic droit,
- Créer 2 partitions de type "FAT32" (les noms proposés ici seront utilisés dans les lignes de commande plus loin) :
- une de 8 Mo avec pour étiquette : EFI-USB
- une autre avec l'espace restant, étiquette : GRUB-SOS
Fichiers de configuration
On utilisera 2 fichiers de configuration :
- sur GRUB-SOS : on copie le fichier grub.cfg issu de l'iso xubuntu dans un dossier /boot/grub. On en profite pour copier la police par défaut (certains grub cherchent font.pf2 d'autres unicode.pf2).
cd /media/$USER/GRUB-SOS/ mkdir boot && mkdir boot/grub cd boot/grub cp /media/$USER/EFI-USB/boot/grub/grub.cfg . cp /media/$USER/EFI-USB/boot/grub/font.pf2 . cp font.pf2 unicode.pf2
- sur EFI-USB : comme on n'aura plus accès à la partition lorsqu'elle sera bootable, on remplacera le contenu de /media/$USER/EFI-USB/grub.cfg par celui-ci qui renvoie vers la partition GRUB-SOS :
- grub.cfg
search.fs_label GRUB-SOS root set prefix=($root)'/boot/grub' configfile $prefix/grub.cfg
rendre bootable la partition EFI-USB
On relancera gparted et par clic-droit sur la partition EFI-USB, on lui attribuera les drapeaux "esp" et "boot". La clé est prête. A vous de modifier le fichier grub.cfg de GRUB-SOS pour lancer ce que vous souhaitez avec.
Pour un démarrage en mode "legacy" (ordinateurs anciens)
Partitionner la clé avec gparted
- Bien se positionner sur le bon disque (ici sdc),
- Si une ou plusieurs partitions sont montées, la/les démonter par clic droit,
- Créer une nouvelle table de partitions "msdos" (remet la clé à zéro)
- Créer 1 partition de type "FAT32" sur la totalité de la clé avec pour étiquette : GRUB-LEGACY.
Ce qu'il faut mettre sur cette partition
- il faut d'abord être lancé sur un système non-EFI.
[ -d /sys/firmware/efi ] && echo "- - Session EFI - -" || echo "Session non-EFI"
- ouvrir la clé dans un gestionnaire de fichiers (objectif: que la partition soit montée),
- copier le dossier boot du système sur lequel on est car il fonctionne :
mkdir /media/$USER/GRUB-LEGACY/boot cp /boot/grub /media/$USER/GRUB-LEGACY/boot/
Installer le grub dans le MBR pour rendre la clé bootable
- vérifier le nom de la clé (ici:sdc) :
sudo blkid
- la commande qui met grub dans le MBR :
sudo grub-install --root-directory=/media/$USER/GRUB-LEGACY /dev/sdc
- maintenant, modifiez le fichier /boot/grub/grub.cfg à votre guise.
Personnaliser le menu Grub
Préalable pour le menu en français
Dans le gestionnaire de fichiers, vous pouvez faire un copier/coller d'un dossier "locale" présent dans un /boot/grub d'un linux installé pour le mettre dans votre /boot/grub. Les paramètres 'locale_dir' et 'lang' permettront de l'activer dans le grub.cfg.
Pour le thème utilisé dans l'exemple
Dans le grub.cfg exemple, le thème utilisé provient de cette page.
Exemple de fichier grub.cfg avec un thème
Comme les fichiers grub.cfg en service sont complexes à comprendre, voici un exemple pour un Grub sur clé USB :
- grub.cfg
insmod part_gpt insmod part_msdos insmod fat #insmod all_video insmod efi_gop insmod efi_uga insmod video_bochs insmod video_cirrus insmod gfxterm set gfxmode=1920x1080 set locale_dir=/boot/grub/locale set lang=fr_FR insmod gettext terminal_output gfxterm insmod gfxmenu loadfont /boot/grub/unicode.pf2 loadfont /boot/grub/themes/Crunchy-simple/ComicNeue_normal.pf2 loadfont /boot/grub/themes/Crunchy-simple/ComicNeue_title.pf2 set theme=/boot/grub/themes/Crunchy-simple/theme-fog.txt export theme insmod jpeg menuentry ".. Xubuntu Disco 19.04 fr" { iso_path="/xubuntu-19.04-desktop-amd64.iso" loopback loop $iso_path 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 }
Booter sur cette nouvelle clé
Selon le BIOS de votre ordinateur, vous avez peut-être une touche (F7, F11,..) pour choisir le média de démarrage ?
Sinon, il faut aller dans le BIOS (accès souvent avec touche Echap ou F2 selon les ordinateurs) pour changer l'ordre de démarrage des disques.
Sur certains BIOS, dans le dernier onglet, on a la liste des supports et on peut aller dessus et valider avec la touche entrée.