Dernière mise à jour : Debian 10.5 / Buster
Le noyau linux est compatible avec un amorçage direct UEFI via un chargeur intégré appelé EFI Stub. Ce document décrit comment mettre en oeuvre cette méthode d'amorçage
Les deux premières méthodes peuvent être utilisées facilement en dépannage. La troisième méthode est destinée à un amorçage automatique.
Sommaire
$ cat /boot/config-$(uname -r) |grep -i efi_stub
CONFIG_EFI_STUB=y
$ sudo mkdir -p /boot/efi/EFI/stub
$ sudo cp /vmlinuz /initrd.img /boot/efi/EFI/stub/
$ sudo tree /boot/efi/EFI/stub
/boot/efi/EFI/stub
├── initrd.img
└── vmlinuz
0 directories, 2 files
Afin que vmlinuz et initrd.img soient mis à jour automatiquement, créer les scripts suivants : (on recopie également les versions antérieures *.old afin de disposer de la version précédente en cas de problème)
$ sudo mkdir -p /etc/kernel/postinst.d
$ sudo nano /etc/kernel/postinst.d/zz-update-efistub
#!/bin/sh cp /vmlinuz /boot/efi/EFI/stub/
cp /vmlinuz.old /boot/efi/EFI/stub/
$ sudo mkdir -p /etc/initramfs/post-update.d
$ sudo nano /etc/initramfs/post-update.d/zz-update-efistub
#!/bin/sh cp /initrd.img /boot/efi/EFI/stub/
cp /initrd.img.old /boot/efi/EFI/stub/
Rendre les scripts exécutables
$ sudo chmod +x /etc/kernel/postinst.d/zz-update-efistub
$ sudo chmod +x /etc/kernel/postinst.d/zz-update-efistub
et lancer leur exécution
$ sudo /etc/kernel/postinst.d/zz-update-efistub
$ sudo /etc/initramfs/post-update.d/zz-update-efistub
$ sudo tree /boot/efi/EFI/stub
$ findmnt /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda2 ext4 rw,relatime,errors=remount-ro
$ efibootmgr
BootCurrent: 0003
Timeout: 3 seconds
BootOrder: 0000,0011,0006,0002,0003,004,005
....
Boot0006* EFI Internal Shell
Boot0007* shell.efi
....
$ sudo efibootmgr --bootnext 7
BootNext: 007
BootCurrent: 0011
.....
$ sudo reboot
Shell> FS0:
FS0:\EFI\stub\vmlinuz root=/dev/sda2 initrd=\EFI\stub\initrd.img
FS0:\> \EFI\stub\vmlinuz root=/dev/mapper/buster ro quiet splash initrd=\EFI\stub\initrd.img
# nano /boot/efi/EFI/stub/stub.nsh
\EFI\stub\vmlinuz root=/dev/sda2 ro quiet splash initrd=\EFI\stub\initrd.img
Shell> FS0:
FS0:\>\EFI\stub\stub.nsh
# nano /boot/efi/startup.nsh
\EFI\stub\vmlinuz root=/dev/sda2 ro quiet splash initrd=\EFI\stub\initrd.img
$ findmnt /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mapper/buster ext4 rw,relatime,errors=remount-ro
$ su -l
# export UUID=$(blkid -s UUID -o value /dev/mapper/buster)
# efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Debian stub" -l '\EFI\stub\vmlinuz' \
-u "root=UUID=$UUID ro quiet splash initrd=\\EFI\\stub\\initrd.img"
où les options ont la signification suivante
$ efibootmgr -v |grep stub
Boot0002* Debian stub HD(1,GPT,15....f0,0x200000,0x31e00000)/File(\EFI\stub\vmlinuz)r.o.o.t.=.U.U.I.D.=.0.6.....e. .r.o. .q.u.i.e.t. .i.n.i.t.r.d.=.\.E.F.I.\.s.t.u.b.\.i.n.i.t.r.d...i.m.g.
$ efibootmgr
BootCurrent: 0001
Timeout: 3 seconds
BootOrder: 0002,0001,0000
Boot0000* debian
Boot0001* UEFI : Built-in EFI Shell
Boot0002* Debian stub