Why are there so many
.efi
files?
A maioria desses arquivos são arquivos de suporte. Por exemplo, o MokManager é uma ferramenta para gerenciar MOKs (Machine Owner Keys), que são usadas pelo Shim para expandir o número de chaves de inicialização segura que o computador reconhece. O MokManager é normalmente chamado se o Shim não puder iniciar seu gerenciador de inicialização padrão (normalmente o GRUB). Parece que você tem pelo menos duas cópias do Shim em EFI/centos
( shim.efi
e shim-centos.efi
), e EFI/boot/BOOTAA64.EFI
é provavelmente uma terceira cópia do Shim. As chances são de que uma delas em EFI/centos
seja redundante - talvez tenha sido deixada de uma instalação anterior que usou um nome diferente ou foi criada por acidente.
Os desenvolvedores de Linux também criaram o hábito de criar novos arquivos de programa EFI para solucionar problemas ou problemas de casos especiais. Por exemplo, sua instalação mostra duas cópias do GRUB no diretório EFI/centos
- grubaa64.efi
e gcdaa64.efi
são idênticas, exceto para onde eles procuram por seus arquivos de configuração e suporte. (Veja esta pergunta e resposta do Stack Exchange por um pouco mais sobre esta questão.)
How did the boot manager find
shim.efi
?
Você já respondeu (parcialmente) a essa pergunta - no que você chamou de "inicialização nativa", o computador armazena um caminho para o carregador de inicialização em uma variável NVRAM. A maioria das distribuições Linux atualmente usa o Shim por padrão, então a variável NVRAM apontará para um binário Shim. Quando Shim for lançado, ele se registrará com o firmware e, em seguida, iniciará um carregador de inicialização (normalmente GRUB).
Why didn't the boot manager find all the other .efi files?
Um gerenciador de boot EFI padrão não verifica ativamente arquivos .efi
, exceto o nome do arquivo de fallback e, em alguns EFIs, o carregador de inicialização da Microsoft. (Há outros que podem ser adicionados à lista de inicialização em alguns casos, como entradas de inicialização de rede e entradas para um shell EFI interno.)
Em vez disso, a maioria das EFIs confia no instalador do sistema operacional para registrar um carregador de boot como parte do processo de instalação do carregador de boot. Assim, o CentOS gravará Shim, GRUB e os binários .efi
relacionados ao ESP e, em seguida, incluirá uma ou mais entradas NVRAM para apontar para elas. Em teoria, um sistema operacional poderia armazenar dez, cem, mil ou mais arquivos .efi
no ESP e registrar apenas um deles. Quando você reiniciar e acertar qualquer tecla que seja necessária para entrar no gerenciador de inicialização EFI, você verá apenas a entrada que o instalador do sistema operacional adicionou. Você pode adicionar, excluir ou editar essas entradas com a ferramenta efibootmgr
na maioria das distribuições do Linux.
AFAIK, as únicas ferramentas que procuram ativamente por carregadores de inicialização EFI são:
-
rEFIt - Esse gerenciador de inicialização antigo era usado principalmente em Macs, mas pode ser usado em sistemas baseados em UEFI. PCs. Ele procura ativamente por carregadores de inicialização na maioria dos subdiretórios de
EFI
(ou seja,EFI/centos/
,EFI/BOOT/
, etc.), sendoEFI/tools/
uma exceção notável. Observe que o rEFIt não está mais sendo mantido. -
rEFInd - Esta é a minha bifurcação atualizada do rEFIt, e herda o algoritmo de varredura ativa do rEFIt, com alguns ajustes para que funcione melhor com o Linux e para editar explicitamente entradas de inicialização redundantes ou desnecessárias. Assim, o rEFInd mostra os dois
.efi
binários e os kernels do Linux (que na maioria dos casos são arquivos de programa EFI, graças ao Carregador de topo EFI ). -
Scripts de configuração do GRUB 2 - As distribuições que dependem do GRUB 2 geralmente são fornecidas com scripts que varrem por
.efi
arquivos e os adicionam ao menu GRUB. Ao contrário de rEFIt e rEFInd, no entanto, essas verificações ocorrem quando o Linux (ou algum outro sistema operacional host) está em execução, não no momento da inicialização.
Observe que nenhuma dessas ferramentas afeta o que aparece no próprio menu do gerenciador de inicialização da EFI; todos eles afetam o que aparece em seus próprios menus, nada mais. Em teoria, outras ferramentas podem realizar essas varreduras. Um EFI poderia fazer tais varreduras, seja em cada inicialização ou após o comando do usuário, mas na prática eu não sei de nenhum que faça isso; AFAIK, todas as EFIs dependem de seus próprios gerenciadores de inicialização com entradas NVRAM associadas. (Alguns têm bugs, o que faz com que essas entradas na NVRAM não sejam confiáveis, fazendo com que o nome do arquivo de retorno seja uma necessidade prática.)