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:
- define a variável do prefixo como um valor incorporado durante a instalação do grub2
- 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:
- 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)
- 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)
- 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.