Bem, o sistema operacional é o que instala o gerenciador de inicialização em primeiro lugar, então claramente ele tem algum controle sobre ele.
Firmware UEFI tem um gerenciador de inicialização integrado, que armazena as opções de menu e outros parâmetros como variáveis EFI como Boot0001
, BootOrder
, BootNext
.
Eles são armazenados na mesma NVRAM que outras configurações de firmware - na verdade, muitas configurações de firmware também são expostas como variáveis EFI - e os sistemas operacionais podem lê-los / gravá-los chamando o código EFI. (É semelhante a chamar o BIOS por meio de interrupções antigas, exceto que a interface UEFI é um pouco melhor definida.)
# ls /sys/firmware/efi/efivars/Boot* /sys/firmware/efi/efivars/Boot0003-8be4df61-93ca-11d2-aa0d-00e098032b8c /sys/firmware/efi/efivars/Boot0004-8be4df61-93ca-11d2-aa0d-00e098032b8c /sys/firmware/efi/efivars/Boot0005-8be4df61-93ca-11d2-aa0d-00e098032b8c /sys/firmware/efi/efivars/Boot0006-8be4df61-93ca-11d2-aa0d-00e098032b8c /sys/firmware/efi/efivars/BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c /sys/firmware/efi/efivars/BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c # efibootmgr --verbose BootCurrent: 0004 Timeout: 2 seconds BootOrder: 0004,0003,0005,0006 Boot0003* Windows Boot Manager HD(1,GPT,785c8ca2-bb16-48fd-917b-19d69543338f,0x800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi) Boot0004* Linux Boot Manager HD(1,GPT,785c8ca2-bb16-48fd-917b-19d69543338f,0x800,0x32000)/File(\EFI\gummiboot\gummibootx64.efi) Boot0005* Hard Drive BBS(HD,,0x0)P0: ST9640320AS . Boot0006* CD/DVD Drive BBS(CDROM,,0x0)P1: SlimtypeDVD A DS8A5SH . # efibootmgr --bootnext 0003 BootNext: 0003 BootCurrent: 0004 Timeout: 2 seconds BootOrder: 0004,0003,0005,0006 ... # efivar --print --name 8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0004 GUID: 8be4df61-93ca-11d2-aa0d-00e098032b8c Name: "Boot0004" Attributes: Non-Volatile Boot Service Access Runtime Service Access Value: 00000000 01 00 00 00 72 00 4c 00 69 00 6e 00 75 00 78 00 |....r.L.i.n.u.x.| 00000010 20 00 42 00 6f 00 6f 00 74 00 20 00 4d 00 61 00 | .B.o.o.t. .M.a.| 00000020 6e 00 61 00 67 00 65 00 72 00 00 00 04 01 2a 00 |n.a.g.e.r.....*.| 00000030 01 00 00 00 00 08 00 00 00 00 00 00 00 20 03 00 |............. ..| 00000040 00 00 00 00 a2 8c 5c 78 16 bb fd 48 91 7b 19 d6 |......\x...H.{..| 00000050 95 43 33 8f 02 02 04 04 44 00 5c 00 45 00 46 00 |.C3.....D.\.E.F.| 00000060 49 00 5c 00 67 00 75 00 6d 00 6d 00 69 00 62 00 |I.\.g.u.m.m.i.b.| 00000070 6f 00 6f 00 74 00 5c 00 67 00 75 00 6d 00 6d 00 |o.o.t.\.g.u.m.m.| 00000080 69 00 62 00 6f 00 6f 00 74 00 78 00 36 00 34 00 |i.b.o.o.t.x.6.4.| 00000090 2e 00 65 00 66 00 69 00 00 00 7f ff 04 00 |..e.f.i....... | # efivar --print --name 8be4df61-93ca-11d2-aa0d-00e098032b8c-BootNext GUID: 8be4df61-93ca-11d2-aa0d-00e098032b8c Name: "BootNext" Attributes: Non-Volatile Boot Service Access Runtime Service Access Value: 00000000 03 00 |.. |
Essa lista geralmente contém os carregadores de inicialização UEFI e os discos MBR "modo de compatibilidade de BIOS".
Nos sistemas da BIOS, não há acesso direto a essa configuração. No entanto, o sistema operacional pode sobrescrever o setor de inicialização existente com o seu próprio, e na verdade quase sempre faz porque não há configuração; por exemplo. A instalação do Windows sempre escreverá no setor de inicialização do Windows .
Nota: As "variáveis EFI" não são realmente específicas para a EFI - uma técnica similar também existia em