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-grubin/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.cfge o kernel do Linux a partir de um local do sistema de arquivos determinado porgrub-install, normalmente/grubou/boot/grubde 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.