Como o grub efi loader encontra o diretório grub.cfg e boot correto?

9

Pelo que entendi, o BIOS do uefi carrega o grub.efi da partição efi. Isso agora carrega vários módulos grub e o arquivo de configuração do diretório / boot.

Mas como o grub encontra o dispositivo correto no qual a partição de inicialização reside? No grub legacy, você normalmente instala o grub em uma partição específica, usando

# grub-install --root-directory=/dev/sda

Portanto, é bem claro onde ele procurará o diretório de inicialização. Como o grub-efi descobre o dispositivo correto?

user128063
fonte
pelo que entendi, a configuração para a localização do kernel está na partição efi.
315 Joe
Claramente, as informações devem estar na partição efi, mas você nunca as especifica em nenhum momento (como costumava ser) ao instalar o grub.
user128063
no arquivo .efi que é gerado quando você executar grub-efi
Joe

Respostas:

9

Depois de usar o ghex para examinar meu arquivo "BOOTX64.EFI" na partição efi, encontrei esta linha.

search.fs_uuid a43d1f11-6ebe-477d-8be3-321a33bc37f9 root hd2,gpt4 
set prefix=($root)'/boot/grub'

Isso mostra que as informações para o local do grub (a partição de inicialização) foram incorporadas pelo grub2-install ao arquivo BOOTX64.EFI gerado para o sistema.

O Grub2 é então executado pelo carregador EFI e você obtém a interface do grub para escolher o sistema operacional (kernel) no qual inicializar ou o kernel padrão é carregado.

Apenas para expandir um pouco: os arquivos ".EFI" são como aplicativos que o subsistema UEFI pode executar. Destina-se a ser usado para inicializar o sistema e fornecer um local conveniente para executar programas de proteção contra execução e do tipo antivírus.

Eles colocaram o extensível em "Interface de Firmware Extensível Unificada"

Joe
fonte
Seria interessante ver se você poderia consertar este arquivo e alterar sua configuração e uuid e ainda inicializar sem reinstalar o Grub
Joe
Estranho, não consigo encontrá-lo. Meu diretório efi do ubuntu possui um grub.cfg (em ascii) com as informações de prefixo e raiz dentro da identificação. Mas meu diretório archlinux efi simplesmente possui um grubx64.efi que não tem sinal dos comandos raiz e prefixo que você mencionou, mesmo quando os li no ghex.
user128063
Não no ubuntu.efi procure por boot.efi. a partição efi tem uma pasta. Chamado efi e nele uma pasta chamada boot.
31716 Joe
A pasta efi possui vários binários efi, um para Windows, outro para o Ubuntu e assim por diante. O nome do arquivo efi é irrelevante. A razão pela qual não consegui encontrar a linha uuid é porque minha partição raiz é uma partição lvm. Ele armazena um lvmid!
user128063
1
Oh, desculpe, eu li errado o seu post anterior. O Stackexchange cortou sua postagem anterior na parte em que você descreveu seu sistema. Sua descrição é de uma única imagem do carregador de inicialização (grub) (BOOTX64.EFI) que inicializa dois sistemas operacionais, tanto quanto eu sei. Aqui estão mais algumas possibilidades: 1) O steamos também pode ter seu próprio gerenciador de inicialização separado, para o qual teria seu próprio arquivo EFI na partição efi. 2) você possui um sistema de inicialização híbrido EFI-legado, onde o seu gerenciador de inicialização steamos é armazenado no MBR. Você pode ver o bootorder efi é usar sudo efibootmgr -vno Gentoo, mas tenho certeza que você sabe disso
user128063