Efibootmgr
efibootmgr è un programma per la gestione delle voci di avvio UEFI
Esso non è un bootloader. E' uno strumento che interagisce con il firmware UEFI del sistema, che a sua volta agisce come un bootloader. Utilizzando efibootmgr le voci di avvio possono essere create, rimescolate, editate e rimosse.
Installazione
Kernel
CONFIG_EFIVAR_FS support needs to be enabled.
It is not possible to use efivarfs without the EFI runtime services, which (in case they have been disabled by default, i.e.
CONFIG_EFI_DISABLE_RUNTIME=y
) can also be enabled by the kernel command-line option efi=runtime.Emerge
Il pacchetto sys-boot/efibootmgr non ha nessuna USE flags. Quello che è necessario è soltanto installarlo:
root #
emerge --ask sys-boot/efibootmgr
Configurazione
Variabili EFI
Per utilizzare con successo efibootmgr, le variabili del filesystem EFI devono essere accessibili. Questo richiede che il sistema sia stato avviato in modalità EFI (e non attraverso la modalità di firmware MBR) altrimenti le variabili EFI non possono essere accessibili. Se il sistema è in modalità MBR, riavviarlo in modalità EFI. Usualmente questo coinvolge o la modifica di un'opzione nelle impostazioni del firmware o la selezione di una voce di avvio EFI nel menu di avvio del sistema.
Quando il sistema è in modalita EFI, eseguire il seguente comando per verificare l'esistenza di efivarfs:
root #
mount | grep efivars
efivarfs on /sys/firmware/efi/efivars type efivarfs (ro,relatime)
Viene montato ro tramite lo script init sysfs), quindi deve essere rimontato rw manualmente utilizzando il seguente comando:
root #
mount -o remount,rw -t efivarfs efivarfs /sys/firmware/efi/efivars
Precondizioni
Se una EFI System Partition (ESP) non esiste, bisogna crearne una, vedere EFI System Partition
Utilizzo
Elencare le voci di avvio
Per elencare le voci di avvio correnti utilizzare l'opzione --verbose (-v)
:
root #
efibootmgr -v
BootCurrent: 0002 Timeout: 3 seconds BootOrder: 0003,0003,0002,0000,0004 Boot0000* CD/DVD Drive BIOS(3,0,00) Boot0001* Hard Drive BIOS(2,0,00) Boot0002* Gentoo HD(1,800,61800,6d98f360-cb3e-4727-8fed-5ce0c040365d)File(\EFI\boot\bootx64.efi) Boot0003* Hard Drive BIOS(2,0,00)P0: ST1500DM003-9YN16G
Creare una voce di avvio
Per creare una voce di avvio EFI, devono essere passati a efibootmgr un paio di argomenti:
--create (-c)
per creare una nuova voce;--part (-p)
seguito dal numero di partizione nella quale la EFI System Partition è ospitata;--disk (-d)
seguito dal disco nel quale la Partizone di Sistema EFI è ospitata;--label (-L)
seguito dall'etichetta da utilizzare come voce di avvio;--loader (-l)
seguito dal percorso dell'immagine EFI da avviare
l percorso dell'immagine EFI da avviare deve utilizzare \ (backslash) invece di / (forward slash) come separatore di percorso.
Additionally, if the ESP was already created by another OS, it might be named differently than /efi/EFI. If an ESP was created by another OS, begin the EFI Boot entry using this directory name, which immediately follows /efi.
Below are some examples of how a UEFI entry can be created. If this is the folder structure:
root #
tree /efi/ -L 3
/efi/ └── EFI ├── Grub │ └── grubx64.efi └── Gentoo └── bzImage.efi
then the loader paths will be:
root #
efibootmgr -c -L "Grub" -l '\EFI\Grub\grubx64.efi'
root #
efibootmgr -c -L "Gentoo" -l '\EFI\Gentoo\bzImage.efi'
Per esempio:
root #
efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l "\efi\boot\bootx64.efi"
It is also possible to add parameters – maybe not supported by all UEFI implementations[1] - to the kernel's command line:
root #
efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l '\efi\boot\bootx64.efi' -u 'root=/dev/sda3 initrd=\efi\boot\initramfs.img quiet'
Facoltativamente, è possibile installare kernel aggiuntivi e renderli noti al firmware UEFI. Ciò è particolarmente utile quando si desidera testare più kernel o eseguire il dual-boot con un altro sistema operativo. Questi verranno mostrati nel prompt di selezione di avvio, normalmente dopo che un tasto di scelta rapida della tastiera è stato premuto al momento giusto durante l'inizializzazione del sistema. L'ultima voce aggiunta ottiene sempre la massima priorità di avvio, quindi sarà l'impostazione predefinita. Se la combinazione di tasti di scelta rapida è sconosciuta, cerca la documentazione ufficiale del produttore del computer. Queste informazioni di solito non sono difficili da trovare.
Cancellare una voce di avvio
Prima di cancellare una voce, capire qual'è l'ID di tale voce.
Per cancellare una voce di Gentoo come mostrato sopra (che ha Boot0002 come identificatore), chiedere a efibootmgr di cancellare la voce con id 2, passando l'argomento --bootnum (-b)
come identificatore, e --delete-bootnum (-B)
per cancellare la voce:
root #
efibootmgr -b 2 -B
Removable media
EFI bootloaders on removable media are not configured as boot entries, so efibootmgr is not required. See removable media boot path on the ESP for details.
Rimozione
Unmerge
root #
emerge --ask --depclean --verbose sys-boot/efibootmgr
Vedere anche
- rEFInd — a boot manager for UEFI platforms.
- EFI stub kernel spiega come configurare il kernel Linux per abilitarlo ad esser avviato direttamente da EFI
- Alternative 2: efibootmgr nell'Handbook di Gentoo
References
- ↑ At least for Dell EFI firmware, a workaround was implemented in kernel 5.10: https://lkml.org/lkml/2020/9/18/228