O GRUB não inicializa automaticamente

2

O GRUB não inicializa meu kernel automaticamente ou exibe um menu de inicialização. Porque não?

Meu /boot/grub/grub.conf contém o seguinte

default 0
timeout 5

root (hd0,0)
kernel /boot/3.8.13

Em vez de inicializar, recebo um prompt, então posso fazer:

> kernel /boot/3.8.13
> boot

e o kernel será iniciado. Eu quero que isso aconteça automaticamente.

Eu provavelmente deveria mencionar que o kernel falha para inicializar, mas esse é um tópico diferente e não vejo como isso poderia estar relacionado (suponho que o GRUB não tenha como saber isso , a menos que seja algo trivial como uma arquitetura incompatível, no entanto, não é tão trivial).

Eu tenho seguido o guia na seção link 11. "Grub apenas mostra um prompt do Grub"

Em particular, verifiquei que o arquivo grub.conf existe em / boot / grub e que o menu.lst no mesmo diretório é um link simbólico para o grub.conf. Eu também executei o comando grub-install.

Eu tentei os seguintes argumentos para o grub-install:

grub-install --no-floppy /dev/sda
grub-install --root-directory=/boot /dev/sda

Meu sistema tem um HD físico, / dev / sda. Eu tenho / boot em / dev / sda1 e root em / dev / sda2, que é criptografado. No entanto, eu nem estou tentando fazer o grub carregar algum initrd ainda, primeiro as primeiras coisas que eu quero que o GRUB possa ao menos iniciar o kernel antes de eu tentar com o initrd.

    
por ioctlvoid 02.07.2013 / 15:33

1 resposta

1

A configuração não deve ser muito complicada. Eu mudei o root= para onde a raiz eventualmente virá (sua unidade criptografada). Inicializar estando em uma partição separada é parte do problema aqui.

Então, vamos colocar as coisas em conjunto com a forma como elas devem acabar. Primeiro, a raiz real será montada como /dev/sda2 quando você puder descriptografá-la. /dev/sda2/boot será um diretório vazio onde você montaria sua partição de inicialização, /dev/sda1 .

Como /dev/sda1 será sua partição de inicialização, ela não deverá ter um diretório de inicialização, caso contrário, uma vez montada, você terá /boot/boot/[grub/, 3.8.13, initrd.img, etc] .

A tabela de montagem seria semelhante a esta:

  • /dev/sda2 /
  • /dev/sda1 /boot

Mova seu kernel para /dev/sda1/3.8.13 , mova seu initrd.img para /dev/sda1/initrd.img , mova seu diretório grub para /dev/sda1/grub .

Em seguida, queremos instalar o grub no mbr de /dev/sda e nunca na partição /dev/sda1 , para que a nossa instalação pareça algo como grub-install /dev/sda . Precisamos dizer onde encontrar os arquivos de configuração para escrever nas tabelas de configuração do grub, que é onde --boot-directory deve entrar.

Vamos supor que, enquanto você está no seu CD ao vivo, corrigindo essa coisa, você tem /dev/sda1 montado como /boot e suas configurações do grub estão em /boot/grub . A instalação seria grub-install --boot-directory=/boot /dev/sda .

Se você tivesse /dev/sda1 montado como /mnt/fixboot enquanto estava no livecd, a configuração não mudaria e o comando de instalação mudaria para grub-install --boot-directory=/mnt/fixboot .

Configuração:

default 0
timeout 5

root (hd0,0)
kernel /3.8.13 root=/dev/sda2
initrd /initrd.img

A configuração pode mudar quando você descobrir como descriptografar /dev/sda2 ; provavelmente vai acabar tendo que ser um dispositivo /dev/mapper .

    
por 02.07.2013 / 16:01

Tags