Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/06/2022, à 21:04

DonutMan75

[RESOLU] Clef USB Grub

Bonsoir à tous,
j'ai une clef USB 128 Gb que j'aimerais bidouiller afin, à terme, d'avoir un amorceur Grub qui me permettrait de lancer différentes live-sessions stockées sur la clef (Ubuntu, Debian, ...)

Mon système supporte l'EFI 64 bits et je souhaite donc ne pas m'encombrer avec les éventuelles compatibilités et partir :
- sur un démarrage UEFI (donc pas BIOS)
- sur une table des partitions GPT (donc pas MBR)

$ more /sys/firmware/efi/fw_platform_size 
64

Ma première étape est simplement d'installer Grub sur la clef pour faire en sorte qu'il s'exécute lorsqu'on boote sur la clef (je verrai comment rajouter les images des live-sessions dans un second temps).

J'ai suivi différents tuto (voir par exemple celui-ci) mais, in fine, je n'arrive pas à obtenir une clef bootable.

Puis-je vous présenter les différentes étapes que j'ai suivi, si jamais l'un d'entre vous (plus familier que moi avec Grub) trouve une erreur manifeste dans ma démarche ?

1) Installer une table des partitions GPT

$ sudo parted /dev/sdc
(parted) mklabel gpt
(parted) print                                                            
Model:  USB  SanDisk 3.2Gen1 (scsi)
Disk /dev/sdc: 123GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name     Flags

2) Créer une première partition qui contiendra /efi

(parted) mkpart primary 1MiB 551 MiB 

Les valeurs de départ (1MiB) et de fin (551 MiB) sont issues des différents tuto que j'ai pu lire et je pense que cela provient :
1) du fait de ne pas souhaiter écraser la table GPT
2) d'avoir une taille suffisamment grande pour contenir /efi/

On positionne ensuite les flags esp et boot à ON

(parted) set 1 esp on
(parted) set 1 boot on                                                 
(parted) print
Model:  USB  SanDisk 3.2Gen1 (scsi)
Disk /dev/sdc: 123GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 


Number  Start   End     Size    File system  Name     Flags
 1      1049kB  551MB   549MB                primary  boot, esp

3) Créer une seconde partition qui contiendra /boot

Ici j'aurai la place dans un second temps de rajouter toutes les images que je souhaite...

Ce sera une partition EXT4

(parted) mkpart primary 551MiB 100%
(parted) print
Model:  USB  SanDisk 3.2Gen1 (scsi)
Disk /dev/sdc: 123GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name     Flags
 1      1049kB  551MB  549MB                  primary  boot, esp
 2      578MB   123GB  122GB                  primary

4) On créé les systèmes de fichiers

Donc FAT32 pour /efi et EXT4 pour /boot

$ sudo mkfs.fat -F32 /dev/sdc1
$ sudo mkfs.ext4 /dev/sdc2

On vérifie avec parted que tout est bien pris en compte :

(parted) print                                                            
Model:  USB  SanDisk 3.2Gen1 (scsi)
Disk /dev/sdc: 123GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name     Flags
 1      1049kB  551MB  549MB  fat32        primary  boot, esp
 2      578MB   123GB  122GB  ext4         primary

5) On installe Grub

Comme c'est une installation sur un disque amovible, il est nécessaire de monter les partitions /efi et /boot afin d'indiquer à grub où installer les données.

$ sudo mount /dev/sdc1 ./test/efi/
$ sudo mount /dev/sdc2 ./test/boot/

On lance ensuite grub-install :

$ sudo grub-install --target=x86_64-efi --recheck --removable --efi-directory="./efi" --boot-directory="./boot" /dev/sdc
Installation pour la plate-forme x86_64-efi.
Installation terminée, sans erreur.

Une fois ceci effectué, j'ai bien mes partitions /efi et /boot qui sont remplies :

$ tree efi/
efi/
└── EFI
    └── BOOT
        ├── BOOTX64.CSV
        ├── BOOTX64.EFI
        ├── fbx64.efi
        ├── grub.cfg
        ├── grubx64.efi
        └── mmx64.efi

2 directories, 6 files
$ tree data/
data/
├── boot
│   └── grub
│       ├── fonts
│       │   └── unicode.pf2
│       ├── grubenv
│       ├── locale
│       │   ├── ast.mo
│       │   ├── ...
│       │   ├── fr.mo
│       │   ├── ...
│       │   └── zh_TW.mo
│       └── x86_64-efi
│           ├── acpi.mod
│           ├── ...
│           ├── gfxmenu.mod
│           ├── gfxterm_background.mod
│           ├── gfxterm_menu.mod
│           ├── gfxterm.mod
│           ├── gptsync.mod
│           ├── grub.efi
│           ├── ...
│           └── zfs.mod
└── lost+found [error opening dir]

6 directories, 308 files

A ce stade, je pense donc avoir un Grub fonctionnel et une clef USB bootable.

6) Test de la clef USB

Hélas, quand je fais :

$ sudo qemu-system-x86_64 -cdrom /dev/sdc

Il m'affiche un laconique "No bootable device.".

Idem quand je redémarre mon pc en bootant sur la clef, j'ai un magnifique écran noir sans rien qui s'affiche...


7) Pistes de résolutions

1) Peut-être mon installation de grub est trop minimale et il ne se passe rien ?? Par défaut j'imaginais avoir au moins accès à un terminal grub... Mais je ne suis sûr de rien...

2) Voyez-vous dans mon protocole une raison évidente pour laquelle la clef ne serait pas bootable ?

3) Mon couple table GPT / partition ESP /efi me semble correct mais il y a peut-être une subtilité que je n'ai pas vue ?

4) Un problème de paramètrage du "BIOS/UEFI" de ma carte mère (qui pourtant arrive bien à exécuter Grub avec un dual boot Linux/Windows sur mon disque dur) ?

Merci par avance pour toute idée ou suggestion smile

Bonne soirée !

Donut

Dernière modification par DonutMan75 (Le 30/06/2022, à 07:43)

Hors ligne

#2 Le 25/06/2022, à 21:55

geole

Re : [RESOLU] Clef USB Grub

Bonsoir.
J'ai cru comprendre que tu veux lancer des iso stockées sur la clé USB.
Est-ce pour concurrencer ventoy ou dans but autre?


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#3 Le 25/06/2022, à 22:36

DonutMan75

Re : [RESOLU] Clef USB Grub

Bonsoir geole,
merci pour ton retour.
Oui je pense que ventoy réponds à ma problèmatique (ventoy ou solution équivalente).
Néanmoins, je souhaite que ce soit pour moi l'occasion de comprendre comment fonctionne Grub (l'objectif est donc en partie didactique).
D'où l'utilité de faire ça "à la main" avec des outils atomiques comme parted, grub etc..

Donut

Hors ligne

#4 Le 25/06/2022, à 23:05

geole

Re : [RESOLU] Clef USB Grub

A tout hasard, n'aurais-tu pas un niveau de trop?

$ tree efi/
efi/
└── EFI
    └── BOOT
       

Dernière modification par geole (Le 25/06/2022, à 23:06)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#5 Le 27/06/2022, à 23:51

DonutMan75

Re : [RESOLU] Clef USB Grub

Bonsoir geole, non ça semble être correct car j'observe bien la même chose ailleurs.
J'ai testé de nouvelles choses, je suspecte un soucis au niveau des paramètres de mon bios uefi..
Je continue à chercher ^^

Donut

Hors ligne

#6 Le 30/06/2022, à 07:42

DonutMan75

Re : [RESOLU] Clef USB Grub

Bonjour à tous,
le sujet a été résolu sur le forum debian-fr.org par PascalHambourg.

Outre quelques petites améliorations des commandes passées à gparted, il fallait rajouter les options --force-extra-removable et --no-nvram dans l'appel de grub-install.

Bonne journée à tous,

Donut

Hors ligne