Ceci est une ancienne révision du document !



Cette page est un tutoriel Grub2 dont la documentation principale est disponible sur les pages grub-pc et grub-uefi.

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.

  • 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
  • Être lancé sur une variante Ubuntu contenant gparted (ce n'est pas le même logiciel ni sur Kubuntu ni sur Lubuntu).
  • 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.

Partitionnement avec 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,
  • Créer une nouvelle table de partitions de type "msdos" (remet la clé à zéro),dans le menu "Périphérique" de gparted
  • 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

ou le même partitionnement en lignes de commande

  • vérifier le nom de la clé (ici:sdc) :
    sudo blkid
  • Créer une nouvelle table de partitions de type "msdos" :
    sudo mkfs.fat -I /dev/sdc

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.

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.
Les dossiers de configuration "locale" ou "themes" seront mis dans le dossier /boot/grub/ accessible directement (GRUB-SOS ou GRUB-LEGACY).

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
}

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.

  • utilisateurs/frombenny/grub-usb.1570134219.txt.gz
  • Dernière modification: Le 03/10/2019, 22:23
  • par frombenny