Shim - Amorçage UEFI compatible Secure Boot

Mise à jour : Debian 10.8 - Buster

Ce document décrit la mise en œuvre "manuelle" de l'amorçage UEFI compatible Secure Boot au moyen du chargeur intermédiaire shim

Cette installation manuelle n'est pas nécessaire pour installer Shim avec Grub2, ce dernier intégrant tous les mécanismes permettant d'installer "automatiquement" shim : voir Grub2 - Installation - Amorçage UEFI

Smmaire

1 - Préalable

2 - Principe

Le lancement d'une application s'effectue en deux étapes, amorçage de shim par la plate-forme puis lancement de l'application par shim

2.1 - Amorçage de shim

L'installation et l'amorçage de shim s'effectuent comme pour une application UEFI en mode non Secure Boot : installer la version signée du programme Shim dans un répertoire de l'ESP (EFI System Partition) du disque d'amorçage

Installer également dans le même répertoire

2.2 - Lancement de l'application

Une fois amorçé, Shim cherche à lancer un programme efi nécessairement nommé grubx64.efi, situé dans le même répertoire. Ce programme peut-être un programme efi quelconque (pas nécessairement le chargeur GRUB). Le programme doit être signé

3 - Installation

3.1 - Récupération de shim, mmx, fbx

$ sudo aptitude install shim-signed
$ sudo aptitude install shim-helpers-amd64-signed
$ ls -ln /usr/lib/shim/*.efi.signed
-rw-r--r-- 1 0 0 1206824 juil. 24 2020 /usr/lib/shim/fbx64.efi.signed
-rw-r--r-- 1 0 0 1261192 juil. 24 2020 /usr/lib/shim/mmx64.efi.signed
-rw-r--r-- 1 0 0 1322936 juin 9 2019 /usr/lib/shim/shimx64.efi.signed

3.2 - Installation dans l'ESP

$ sudo mkdir -p /boot/efi/EFI/BOOT
$ sudo cp /usr/lib/shim/shimx64.efi.signed /boot/efi/EFI/BOOT/bootx64.efi
$ for i in {mmx64,fbx64}; do cp /usr/lib/shim/$i.efi.signed /boot/efi/EFI/BOOT/$i.efi; don
$ sudo tree /boot/efi/EFI/BOOT
/boot/efi/EFI/BOOT
├── BOOTX64.EFI
├── fbx64.efi
└── mmx64.efi

3.3 - Installation du programme à lancer

$ sudo cp appli.efi.signed /boot/efi/EFI/BOOT/grubfx64.efi
$ sudo tree /boot/efi/EFI/BOOT
/boot/efi/EFI/BOOT
├── BOOTX64.EFI
├── fbx64.efi
├── grubx64.efi
└── mmx64.efi

4 - Chargeur de secours fbx

4.1 - Installation de fbx

$ sudo tree /boot/efi/EFI/BOOT
/boot/efi/EFI/BOOT
├── bootx64.efi
└── grubx64.efi

4.2 - Installation de BOOTX64.CSV

<application_efi>,<nom_entrée>,<options>,<description>
$ echo "shimx64.efi,Tetris,,Ceci est l'entrée d'amorçage de Tetris signé" |iconv -t UCS-2 >BOOTX64.CSV
$ echo "shimx64.efi,Tetris,,Ceci est l'entrée d'amorçage de Tetris signé" |iconv -t UCS-2 |sudo tee /boot/efi/EFI/debian_new/BOOTX64.CSV
$ sudo tree /boot/efi/EFI/Tetris
/boot/efi/EFI/Tetris
├── BOOTX64.CSV
├── grubx64.efi
└── shimx64.efi

4.3 - Amorçage

$ sudo efibootmgr -v |grep Tetris
Boot0008* Tetris HD(1,GPT,bb55ab27-f6e4-4665-9091-3486bd16f240,0x800,0x100000)/File(\EFI\Tetris\shimx64.efi)