J'ai un disque dur externe usb que j'ai formaté de manière à ce qu'il puisse booter aussi bien de manière traditionnelle (legacy) que en mode uefi:
toto@aldebaran:~$ sudo fdisk -l /dev/sda
[sudo] Mot de passe de toto:
Disque /dev/sda : 447,13 GiB, 480103981056 octets, 937703088 secteurs
Disk model: 80G2G0A-00JH30
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 6B6A3B5A-81C8-479D-B261-B4733B4D0D70
Périphérique Début Fin Secteurs Taille Type
/dev/sda1 2048 4095 2048 1M Amorçage BIOS
/dev/sda2 4096 2101247 2097152 1G Système EFI
/dev/sda3 2101248 18878463 16777216 8G Partition d'échange Linux
/dev/sda4 18878464 102764543 83886080 40G Système de fichiers Linux
/dev/sda5 102764544 186650623 83886080 40G Système de fichiers Linux
/dev/sda6 186650624 937701375 751050752 358,1G Système de fichiers Linux
michel@pc-linuxshop-A7K57UJU:~$
Grub s'installe dans sda1 dans le cas d'un amorçage en mode traditionnel, sda2 est monté dans /boot/efi pour un amorçage en mode UEFI.
J'ai installé un système linux (linux mint) sur ce disque USB, à partir d'un laptop dont le boot est legacy.
Pas de souci lorsqu'il est branché sur un ordinateur qui s'amorce à l'ancienne. Par contre si ce disque dur externe est branché sur un ordinateur dont l'amorçage est UEFI, il n’apparaît pas dans la liste des périphériques sur les quels on peut booter.
Depuis un ordinateur UEFI où est installé Ubuntu (22.04), je lance les commandes suivantes:
sudo mount /dev/sda4 /mnt
sudo mount /dev/sda2 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt/$i; done
sudo mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars
sudo chroot /mnt
grub-install
update-grub
exit
sudo umount /dev/sda2
sudo umount /dev/sda4
(/dev/sda4 contient la racine de linx mint avec lequel je veux démarrer mon disque USB.)
Mais déception: ça ne fonctionne pas.
Le disque possède le drapeau pmbr_boot, ce qui pose problème.
Il faut enlever ce drapeau:
toto@aldebaran:~$ sudo parted /dev/sda
(parted) disk_set pmbr_boot off
(parted) quit
Et voilà, le problème est résolu.