Como o grub2 encontra seu arquivo de configuração no boot EFI?

6

Existem bazillions de threads grub2 / EFI na rede, mas achei difícil encontrar uma resposta para a pergunta acima. Nos foi dito que no grub2 o arquivo de configuração é /boot/grub/grub.cfg. Mas quando há problemas de inicialização, o grub2 pode acabar em um prompt de comando (também conhecido como shell de emergência) sem qualquer mensagem de erro. Então, antes de ser capaz de resolver qualquer problema, seria bom entender como o grub2 tenta localizar seu arquivo de configuração.

    
por Uwe Geuder 29.12.2015 / 18:34

1 resposta

6

A primeira coisa a entender é que não há um caminho fixo. grub2 pode ser configurado diferentemente durante a instalação e o nome grub.cfg é de de jeito nenhum codificado. O segundo aprendizado é que não há um único arquivo de configuração, e. g. meu sistema Ubuntu na hora de escrever usa 2 arquivos diferentes em seqüência, ambos na verdade chamados grub.cfg.

Por padrão, o grub2 faz 2 coisas essenciais ao iniciar:

  1. define a variável do prefixo como um valor incorporado durante a instalação do grub2
  2. continue com o arquivo de configuração $ prefix / grub.cfg, se existir

(para mais detalhes, consulte link )

A condição "se existir" é a desagradável: se o arquivo não existir (por exemplo, porque o prefixo $ não está apontando para o lugar certo) não há mensagem de erro que ele tentou fazer e você acaba no prompt de comando.

Se você acabar no escudo de emergência, as primeiras coisas a verificar são as valor da variável do prefixo (usando o comando set) e o conteúdo do esse diretório (usando comandos ls e cat).

(O comportamento padrão pode ser substituído por um built-in arquivo de configuração, mas eu não acho que eu vi que usado em prática.)

O Ubuntu define o prefixo para o mesmo lugar onde o grubx64.efi e o shimx64.efi usado para inicialização segura estão localizados. Então o primeiro arquivo de configuração grub.cfg é carregado a partir do mesmo diretório onde esses binários da EFI residem. Da perspectiva do Linux, o caminho é / boot / efi / EFI / ubuntu e da perspectiva grub2 (hd0, gpt1) / efi / ubuntu (os números da unidade e da partição podem variar dependendo de onde ESP, ou seja, a partição do sistema EFI está localizada, os nomes de arquivos no grub2 parecem estar insensível a maiúsculas e minúsculas, então o EFI mostrado pelo Linux é mostrado como efi pelo grub2).

O primeiro arquivo grub.cfg contém apenas 3 instruções:

  1. localize a partição que contém o sistema de arquivos raiz pelo UUID (em sistemas usando um sistema de arquivo de inicialização separado localize o sistema de arquivos de inicialização em vez disso)
  2. defina o prefixo para um novo valor de $ root / boot / grub (usando o $ valor raiz determinado na etapa anterior, para sistemas com um partição de inicialização separada, isso deve ser $ root / grub)
  3. execute o arquivo de configuração a partir do local $ prefix / grub.cfg

O último é o local do Linux /boot/grub/grub.cfg, que geralmente nos é dito.

    
por 29.12.2015 / 18:34

Tags