Grub boot migration BIOS vers UEFI EFI en MBR

Voir :

https://wiki.debian-fr.xyz/Debian_%26_UEFI

Voir aussi :

systemd-boot (Remplace Grub pour les machines compatibles EFI)

Avant toute chose sauvegarder !

Il existe une version de Grub pour DOS/MBR : grub-pc
Il existe une version de Grub pour EFI/MBR : grub-efi
Les deux peuvent être installés sur la même machine.

Testé sous Debian

Création d'une partition /boot/efi en FAT de type “ef” Sur une partition primaire (je n'ai pas testé sur une partition logique) (Taille minimum recommandée : 1MB)

Installation prérequis

#apt-get install efivar syslinux-efi apt-get install efibootmgr grub-efi dosfstools

Pour Debian Wheezy, une façon de faire est de mettre à jour Grub en prenant les paquets de Jessie :

grub2-common

grub-common

grub-efi

grub-efi-amd64

grub-efi-amd64-bin

Partitionnement

Créer une partion de VFAT de 20M (1M minimum conseillé) de type “ef” Pour cela il peut être nécessaire de réduire la partition principale à l'aide de GParted (inclus dans systemrescuecd, taper startx pour lancer l’interface graphique)

Ou avec fdisk

fdisk /dev/sda # Part type id (Hex code) : "ef" EFI (FAT-12/16/

Formatage / Montage partition EFI

mkfs.vfat /dev/sda4 mkdir -p /boot/efi

Trouver le UUID de le partition EFI.

fdisk -l |grep EFI blkid /dev/sda4

Remplacer B24E-9BC6 par votre UUID

#/dev/sda4
#UUID=B24E-9BC6 /boot/efi vfat defaults,uid=0,gid=0,umask=0077,shortname=winnt 0 0
UUID=8343-3610 /boot/efi vfat umask=0077 0 1

Montage de la partition EFI crée.

mount /boot/efi

Installation Grub

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck /dev/sda

Boot auto

Pour booter automatiquement sur Grub

Par défaut le système s'attend à démarrer sur :

/boot/efi/EFI/boot/bootx64.efi

/boot/efi/EFI/BOOT/BOOTX64.efi

cd /boot/efi/EFI mkdir boot cp -p debian/grubx64.efi boot/bootx64.efi

Autres

A tester

mkdir -p /boot/grub/locale cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo

Pb

Err failed to register the EFI boot entry: Invalid argument.

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck /dev/sda
Installing for x86_64-efi platform.
grub-install: warning: Cannot read EFI Boot* variables.
grub-install: warning: efivarfs_get_variable: read failed: Invalid argument.
grub-install: warning: efi_get_variable: ops->get_variable failed: Invalid argument.
grub-install: error: failed to register the EFI boot entry: Invalid argument.

Solution

Ajouter --no-nvram ou --removable à grub-install

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck /dev/sda --removable