Como o GRUB 2 funciona em várias partições do Linux com UEFI

2

Quando instalamos um novo Linux, o instalador instala um carregador de inicialização (arquivo efi) na partição EFI e atualiza a entrada do menu na NVRAM, e provavelmente configurará o carregador de inicialização recém-adicionado como padrão. O bootloader irá ler o /boot/grub/grub.cfg para carregar o kernel e o initrd.

A minha pergunta é, quando existem vários bootloaders (.efi) residem no ESP, eles são idênticos? Desde que eles são todos GRUB2. Cada um deles pode descobrir todos os kernels no sistema?

Como a partição de cada SO tem /boot/grub/grub.cfg file, qual deles está sendo lido pelo bootloader padrão?

    
por user3346398 19.07.2017 / 05:39

1 resposta

3

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 .

    
por 19.07.2017 / 06:15