La réponse est simple. La partition système EFI (ESP) doit être FAT32 (FAT16 ou même FAT12 feront également l'affaire pour la plupart des UEFI appropriés ; ils sont principalement affichés sous la forme vfat
sous Linux) au lieu de ext2 :
mkfs.fat -F32 /dev/sda2
FWIW, si vous n'allez pas installer grub i386-pc (pour le démarrage BIOS/CSM), vous n'avez pas besoin de la partition "BIOS boot". Il n'est requis que par grub i386-pc
(mais pas grub x86_64-efi
ou i386-efi
) sur GPT.
Peu importe que vous utilisiez l'ESP pour /boot
. Si c'est le cas, vous devez exécuter :
grub2-install --efi-directory /boot
Si vous le montez sur /boot/efi
à la place, vous devez alors exécuter :
grub2-install --efi-directory /boot/efi
--boot-directory /boot
est implicite (c'est-à-dire par défaut); Peu importe si /boot
est l'ESP, une autre partition séparée ou un répertoire sur le /
système de fichiers.
Vous n'aurez peut-être même pas besoin de chrooter à nouveau pour effectuer grub2-install
; Par exemple, vous avez monté sda4
, votre partition pour /
, sur /mnt
; ET PUIS, monté sda2
, votre ESP, sur /mnt/boot/efi
, vous pouvez simplement exécuter :
grub2-install --boot-directory /mnt/boot --efi-directory /mnt/boot/efi
Bien que grub2-mkconfig
doit être exécuté dans chroot AFAIK. Mais si vous prévoyez d'écrire un grub.cfg
simple et propre vous-même à la place (ce qui est la seule façon élégante d'utiliser grub2), alors cela ne vous concernera pas.
Le problème semblait être le mélange et la correspondance du BIOS, de l'EFI, du MBR et du GPT. J'ai essayé de suivre les guides et d'utiliser le GPT, mais il y avait certaines dépendances que je n'ai pas pu résoudre car je suis trop inexpérimenté. Ce n'est même pas clair pour moi que le noyau a été construit avec le support GPT (via l'option de configuration CONFIG_EFI_PARTITION
).
Lorsque j'ai abandonné GPT et EFI et que je suis passé uniquement au BIOS et au MBR, j'ai pu démarrer la machine résultante. Le BIOS et le GPT sont censés être une combinaison valide, mais je me demande si cela fonctionne dans la pratique (voir, par exemple, les options du chargeur de démarrage).
Voici la configuration avec laquelle j'ai pu faire fonctionner la machine :
$ parted
GNU Parted 3.2
Using /dev/sda
(parted) print
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 135MB 134MB primary ext2 boot
2 135MB 19.5GB 19.3GB primary ext4
3 19.5GB 21.5GB 2012MB primary linux-swap(v1)
La partition 1 est /boot
, la partition 2 est /
, et la partition 3 est swap
.