Existem várias etapas no processo de inicialização (estou descrevendo um BIOS de PC tradicional):
- O BIOS lê o primeiro setor (512 bytes) do disco de inicialização.
- O código neste primeiro setor lê dados adicionais e codifica em um local fixo através da interface do BIOS. Essa interface da BIOS expõe apenas dois discos rígidos: o disco 0 é onde quer que o primeiro setor tenha sido lido eo disco 1 é outro disco que não é facilmente previsível se você tiver mais de dois. O setor de inicialização contém um byte que indica em qual disco rígido estão os dados adicionais; este é o disco que contém
/boot/grub
.
- O código carregado no estágio anterior compreende partições, sistemas de arquivos e outras noções de alto nível. Os dados incluem uma localização do sistema de arquivos (ou seja, uma string como
(hd0)/boot/grub
) que determina onde encontrar grub.cfg
e outros módulos do Grub.
-
grub.cfg
é executado, geralmente para mostrar um menu e inicializar um sistema operacional.
O setor de inicialização é gerado por grub-setup
, normalmente chamado por grub-install
. O setor de inicialização termina em qualquer disco especificado (na sintaxe do Linux) na linha de comando grub-install
ou grub-setup
. Você pode verificar se tem um setor de inicialização em um disco executando file -s /dev/sda
. Como você está adicionando um novo disco e quer inicializar a partir dele, é necessário executar grub-install
no novo disco. Executar grub-install
várias vezes no mesmo disco é inofensivo.
A parte difícil está no passo 2 acima. Se possível, coloque o Grub (ou seja, o diretório /boot/grub
) no disco de inicialização do BIOS (ou, ao se aproximar da outra direção, diga ao seu BIOS para inicializar a partir do disco onde /boot/grub
é). É aqui que entra em jogo device.map
. Certifique-se de que (hd0)
esteja mapeado para o disco que contém /boot/grub
e, em seguida, execute grub-install
nesse disco.
Se os seus dois discos estiverem em uma configuração de software RAID-1, você terá setores de inicialização idênticos. Esse é o comportamento desejável: se o disco que é o disco de inicialização do BIOS falhar, a inicialização do outro apenas funcionará (já que eles contêm os mesmos bytes nos mesmos locais relevantes). Se você tiver espelhado apenas algumas partições, a instalação de um setor de inicialização afeta apenas um dos discos. Você deve executar grub-install
novamente no segundo disco, depois de alterar device.map
para associar (hd0)
ao disco que contém a segunda cópia espelhada de /boot/grub
.
O passo 3 é bastante complexo, mas normalmente funciona imediatamente. Na etapa 4, o Grub localiza os sistemas de arquivos pelo UUID ou procura por arquivos nomeados, portanto, você não precisa mais se preocupar com as várias maneiras de designar discos.