A menos que dito de outra forma, o GRUB assume que o primeiro disco detectado pelo instalador também será o primeiro disco detectado pelo firmware do sistema. Em instalações de CD ou de rede, essa heurística geralmente funciona (a menos que você tenha vários controladores de armazenamento).
Mas quando a mídia de instalação é USB, o instalador do RHEL 6 a detecta primeiro antes de qualquer outro dispositivo de armazenamento. Se você está configurando uma instalação kickstart, você pode definitivamente dizer para escrever o bootloader em /dev/sdb
. Isso é feito usando a opção --driveorder
da palavra-chave bootloader
: se você está inicializando o instalador a partir do USB, você deve especificar o disco no qual o SO será instalado como o primeiro disco na ordem do disco, ou seja
bootloader --location=mbr --driveorder=sdb,sda <...>
A lógica pode parecer um pouco estranha aqui. É porque a opção está realmente tentando identificar qual disco o BIOS do sistema verá como o "primeiro disco" ao inicializar o sistema instalado, já que a maneira padrão do BIOS de selecionar o disco para inicializar é colocá-lo como primeiro disco na ordem vista pelo BIOS. Mas a opção --driveorder deve usar os nomes dos dispositivos Linux como eles existem no momento da instalação ... o que não será necessariamente o mesmo de quando o sistema instalado está rodando.
Essencialmente, devemos dizer ao instalador "uma vez que o sistema esteja instalado e inicializando por conta própria, o que é agora /dev/sdb
será o primeiro disco".
Isso será suficiente para instalar o bootloader com sucesso no disco rígido de destino. Mas também deixará o sistema instalado com um arquivo /boot/grub/device.map
que indica que o primeiro disco será /dev/sdb
... o que provavelmente não será mais verdadeiro depois que o sistema inicializar com a unidade USB desconectada. Isso vai te morder se / quando você precisar atualizar o pacote GRUB, fazendo com que o bootloader falhe após uma atualização.
No entanto, a solução é simples: se você está construindo uma instalação do Kickstart para USB, basta configurar um comando pós-instalação para excluir o arquivo /boot/grub/device.map
após a conclusão da instalação. Pode ser tão simples como:
%post
rm /boot/grub/device.map
%end
Se /boot/grub/device.map
não existir, o comando grub-install
irá recriá-lo automaticamente se / quando for executado na próxima vez ... e, então, será muito mais provável que ele faça a escolha correta. Se quiser ter absoluta certeza, você pode verificar a situação após a conclusão da instalação e a reinicialização do sistema, além de gravar um arquivo /boot/grub/device.map
preciso manualmente.