Inicializando a partir da linha de comando do GRUB, diz que a paridade não existe

1

Encontrei algumas questões relacionadas, mas nenhuma delas resolveu meu problema.

Eu tenho um laptop com um disco rígido com o Windows. Eu queria instalar o Debian em um segundo disco rígido, então eu o anexei com um caddy e removi o disco rígido do Windows (apenas no caso, você sabe). Então eu instalei o Debian com sucesso com o GRUB instalado no mesmo disco que era o único naquele momento. Então eu coloco de volta o disco rígido do Windows.

Agora, na BIOS, posso escolher qual unidade eu quero inicializar. A unidade do Windows inicializa perfeitamente, mas quando eu escolho inicializar a partir da unidade Debian, ela mostra o menu GRUB e, em seguida, uma tela preta com um traço piscando.

Se eu remover o disco rígido do Windows, posso inicializar com sucesso o Debian, então o problema deve estar na configuração do GRUB.

Assim, eu vou para o console do GRUB. Eu detecto que o linux está na (hd0,5) partion e vmlinuz e initrd são alcançáveis a partir da raiz, então eu vou para o normal:

grub> set root=(hd0,5)
grub> linux /vmlinuz root=/dev/sda5
grub> initrd /initrd.img
grub> boot

Então eu posso ver um monte de saída initrd que então vai para um monte de Begin: Running /scripts/local-block ... done. mensagens e finalmente falha com uma mensagem sda5 doesn't exists. Dropping to a shell like. Mas bem ... você sabe ... existe, então estou bloqueado.

    
por Hidden 01.04.2017 / 12:41

1 resposta

0

Você tem dois problemas: identificar a unidade e identificar a partição.

O Grub conta partições de 0, o Linux conta partições de 1. Então, se hd0 do Grub for sda do Linux, então (hd0,5) do Grub será sda6 do Linux.

A partição escolhida como “root” no Grub não é necessariamente a partição raiz do Linux. No Grub, “root” é apenas um atalho para não ter que digitar a designação da partição na frente dos nomes dos arquivos. Se você tiver uma partição /boot separada, então você normalmente definiria isso como a raiz do Grub, porque o Grub só se preocupa com o que está em /boot (a imagem do kernel e a imagem inicial do ramdisk). O Linux não se importa com o que está em /boot , exceto para atualizá-lo.

A numeração do drive pode não coincidir entre o Grub e o Linux. O Grub depende do BIOS do computador para enumerar as unidades. O Linux possui seus próprios drivers. Quando os discos são conectados por meio de uma interface diferente, é difícil prever em qual ordem eles serão enumerados; pode ser até o controlador de disco que responde mais rápido. Portanto, o hd0 do Grub não é necessariamente o sda do Linux.

Para fazer seu computador inicializar de forma confiável, não importa como os discos estão conectados e qual é o tempo das respostas do controlador, use rótulos ou UUIDs em vez de uma designação de letra / número. Depois de inicializar, execute update-grub - normalmente, deve gerar um arquivo /boot/grub/grub.cfg usando UUIDs. Tanto o Grub quanto o Linux irão enumerar as partições disponíveis quando elas iniciarem e se lembrarem de seus UUIDs. Em grub.cfg , você verá linhas como

search --no-floppy --fs-uuid --set=root 82aecd65-6423-4d95-9319-3034263ee747

e

linux /vmlinux root=UUID=82aecd65-6423-4d95-9319-3034263ee747 ro
    
por 01.04.2017 / 16:36