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