Efibootmgr

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Efibootmgr and the translation is 65% complete.
Outdated translations are marked like this.

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

Il supporto CONFIG_EFI_VARS deve essere abilitato:

KERNEL Abilitare il supporto alle variabili EFI
Firmware Drivers  --->
   EFI (Extensible Firmware Interface) Support  --->
       <*> EFI Variable Support via sysfs

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
Important
l percorso dell'immagine EFI da avviare deve utilizzare \ (backslash) invece di / (forward slash) come separatore di percorso.
Important
Additionally, if the ESP was already created by another OS, it might be named differently than /boot/efi. If an ESP was created by another OS, begin the EFI Boot entry using this directory name, which immediately follows /boot.


If this is the folder structure:

root #tree /boot/ -L 3
/boot/
└── EFI
    ├── Grub
    │   └── grubx64.efi
    └── Gentoo
        └── bzImage-4.14.83.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-4.14.83.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

Rimozione

Unmerge

root #emerge --ask --depclean --verbose sys-boot/efibootmgr

Vedere anche

  • rEFInd — a boot manager for EFI and UEFI platforms forked from and successor to rEFIt.
  • 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

  1. At least for Dell EFI firmwares, a workaround was implemented in kernel 5.10: https://lkml.org/lkml/2020/9/18/228