Primeiro, o firmware procura as variáveis EFI Boot####
(por exemplo, Boot0000
, Boot0001
e assim por diante). Eles descrevem as entradas do menu de inicialização EFI e contêm a localização completa do executável correspondente. Por exemplo:
$ sudo efibootmgr -v BootCurrent: 0000 Timeout: 2 seconds BootOrder: 0000,0001,0006,0007 Boot0000* Linux Boot Manager HD(1,800,32000,785c8ca2-bb16-48fd-917b-19d69543338f)File(\EFI\gummiboot\gummibootx64.efi) Boot0001* EFI Shell HD(1,800,32000,785c8ca2-bb16-48fd-917b-19d69543338f)File(\shellx64.efi) Boot0006 Hard Drive BIOS(2,0,00)P0: ST9640320AS . Boot0007 CD/DVD Drive BIOS(3,0,00)P1: SlimtypeDVD A DS8A5SH .
Isto descreve a localização de um disco rígido SATA; um UUID da partição GPT; e um caminho dentro dessa partição.
( Geralmente , todas as entradas de inicialização apontarão para a partição do sistema EFI (código de tipo EF
para MBR e C12A7328-F81F-11D2-BA4B-00A0C93EC93B
para GPT - mostrado como EF00
em gdisk ), mas isso não é necessário.
Se o firmware não tiver entradas de inicialização armazenadas ou se você estiver inicializando a partir de mídia removível, ele usará o local de fallback - ele procurará por todas as partições do sistema EFI (com o tipo de partição correspondente e sistema de arquivos FAT32) e dentro dessas partições, ele espera encontrar um executável EFI em \EFI\BOOT\BOOTX64.EFI
. (Esse caminho é para sistemas Intel x86_64; outras arquiteturas usam nomes de arquivos diferentes no mesmo diretório).
EFI não tenta inicializar automaticamente qualquer arquivo *.EFI
aleatório, mesmo que esteja na partição do sistema EFI.
Veja também:
- Inicialização UEFI: como isso funciona, então? por AdamW
- FGA: O processo de inicialização do EFI por Jonathan de Boyne Pollard
-
Gerenciando carregadores de inicialização EFI para Linux por Rod Smith (autor de
gdisk
)