O Wiki do Gentoo tem informações que discutem tanto o Grub 1 quanto o Grub 2. Note que a situação é completamente diferente no Grub 1 e Grub 2: o Grub 1 não sabe nada sobre RAID, mas pode falsificar a leitura de um dispositivo RAID-1 lendo um dos discos (isso requer um formato de superbloco de 0.9 ou 1.0 mdraid, não 1.1 ou 1.2 ); O Grub 2 suporta nativamente os volumes Linux mdraid.
O Grub 2 funciona em três etapas (consulte aqui para mais detalhes):
- O setor de inicialização.
- Uma imagem principal, gerada por
install-grub
in/boot/grub/core.img
, capaz de mostrar o prompt de recuperação e carregar módulos, mas não muito mais. - Um sistema completo com módulos carregáveis, que normalmente (através do módulo
normal
) mostra um menu de inicialização descrito por/boot/grub/grub.cfg
.
Gerando a imagem principal
Execute grub-install /dev/sda
para gerar a imagem principal e preencha /boot/grub
com os arquivos do módulo. grub-install
também instala um setor de inicialização no dispositivo indicado. Execute os dois grub-install /dev/sdc
e grub-install /dev/sdd
se você quiser ter um setor de inicialização nas duas unidades.
Se grub-install
não detectar suas unidades corretamente, crie o script a seguir como /usr/local/sbin/grub-probe-verbose
e execute grub-install --grub-probe=/usr/local/sbin/grub-probe-verbose
para ver o que está acontecendo.
#!/bin/sh
exec /usr/sbin/grub-probe "$@" | tee /dev/stderr
De sua transcrição de bash -x /sbin/grub-install /dev/sdc
, parece que grub-probe
não está detectando /dev/md1
como uma matriz RAID ( /sbin/grub-probe --device-map=/boot/grub/device.map --target=partmap --device /dev/md1
e /sbin/grub-probe --device-map=/boot/grub/device.map --target=abstraction --device /dev/md1
não retornam nada). Caso o problema esteja apenas em grub-probe
e não no código de inicialização, tente ignorar sua decisão:
grub-install --modules='biosdisk ext2 msdos raid mdraid' /dev/sdc
O suporte a superblocos do mdraid 1.x ainda é recente; não está no Grub 1.98, você precisa de pelo menos Revisão 2550 do Bazar de 2010-07-20 (o código estava em uma ramificação por alguns meses antes). O Debian squeeze e o Ubuntu 10.10 são fornecidos com o suporte ao superbloco 1.x; Eu esperaria que o Gentoo tivesse 1,99 agora.
Gerando o grub.cfg
Execute grub-mkconfig -o /boot/grub/grub.cfg.grub-mkconfig
para produzir um arquivo de configuração do Grub provisório. Revise-o e, se parecer correto, renomeie-o para /boot/grub/grub.cfg
.
Mapa de dispositivos
Você pode precisar ajustar /boot/grub/device.map
para obter a saída de grub-mkconfig
correta. Este arquivo será gerado automaticamente por grub-mkdevicemap
, se não existir, mas as configurações com muitos discos tendem a confundi-lo. Eu esperaria que ele contivesse algo como
(md0) /dev/md1
(hd0) /dev/sdc
(hd1) /dev/sdd
onde md0
é o nome do volume do Grub e /dev/md1
é o nome no Linux. O Grub precisa acessar /boot/grub
para duas coisas:
- O setor de inicialização do Grub lê a imagem principal em um local fixo em um disco suportado pelo BIOS (não há muita escolha). Com um BIOS para PC,
(hd0)
é o disco do qual o BIOS lê o setor de inicialização (é o disco que contém o setor de inicialização) e(hd1)
é algum outro disco (nem sempre é possível escolher). É mais simples se(hd0)
for o disco (ou um disco, com uma matriz RAID-1) que contenha/boot/grub
. - A imagem principal carrega módulos e
grub.cfg
e o kernel do Linux a partir de um local do sistema de arquivos determinado porgrub-install
, normalmente/grub
ou/boot/grub
de um dispositivo que pode ser uma matriz RAID ou qualquer outro tipo de volume suportado Grub.
Se você alterar device.map
, precisará executar grub-install
novamente. Você pode precisar executar grub-mkconfig
novamente se não estiver contando com o comando search
para tudo.