My question is, when there are multiple bootloaders (.efi) reside in ESP, are they identical? since they are all grub2. Can all of them discover all the kernel in the system?
Se houver várias instalações do UEFI Linux em um disco, elas normalmente usarão a mesma partição de sistema EFI (ESP), mas seus respectivos executáveis EFI residirão em subdiretórios diferentes do ESP, na forma EFI/bootloader-id
. Os executáveis de EFI possuem o mesmo nome; para instalações de 64 bits, é grubx64.efi
. Então as variáveis EFI estariam localizadas em EFI/bootloader-id/grubx64.efi
Esses executáveis são instalados por grub-install
em execução em seus respectivos sistemas, embora você possa precisar apontar grub-install
para essa partição usando --efi-directory
. E você também pode ter que escolher o
valor de bootloader-id
com --bootloader-id
. Diferentes distribuições do Linux possuem padrões diferentes para bootloader-id
. Por exemplo, o padrão Debian para debian
. Para mais informações sobre as opções grub-install
, consulte man grub-install
.
grub-install
corrige o nome dos dispositivos de inicialização / raiz nesses executáveis usando UUIDs.
Esses executáveis EFI são executados pelo firmware EFI na placa-mãe. Como o executável EFI conhece os dispositivos de inicialização / raiz para sua instalação do Linux e, por definição, grub.cfg
tem um local fixo relativo aos dispositivos de inicialização / raiz, o executável EFI pode executar /boot/grub/grub.cfg
correspondente a essa instalação. E grub.cfg
tem todas as informações necessárias para fazer uma inicialização, incluindo os nomes dos kernels instalados no sistema.
A página GRUB do Arch Wiki tem uma boa cobertura desses assuntos. Veja também a página Debian Wiki UEFI .