Processo básico de inicialização
Grub
- O Grub lê seu código de disco, md, sistema de arquivos, etc. do MBR.
- O Grub encontra sua partição / boot e lê o resto de si mesmo. Incluindo a configuração e quaisquer módulos que a configuração especifique precisam ser carregados.
- O Grub segue as instruções na configuração, que geralmente dizem para carregar um kernel e initramfs na memória, e executar o kernel.
Existe um modo de fallback, para quando o Grub não pode realmente ler o sistema de arquivos - porque não havia espaço suficiente para incorporar todo o código no registro de inicialização, ou porque ele não conhece o sistema de arquivos ou as camadas isto. Nesse caso, o GRUB incorpora uma lista de setores e lê o código deles. Isso é muito menos robusto e melhor evitado. Pode até ser capaz de fazer o kernel e o initramfs assim (não tenho certeza).
Kernel
O kernel então assume o controle e faz um monte de inicialização básica de hardware. Este estágio é bastante rápido. Em seguida, o kernel descompacta o initramfs para um tmpfs e procura por um /init
nesse tmpfs. Em seguida, ele é executado (no sentido normal, o kernel está cheio executando neste momento) /init
. Este é, a propósito, um script de shell simples e simples.
Initramfs
Você pode extrair o initramfs manualmente fazendo algo como mkdir /tmp/foo; cd /tmp/foo; zcat /boot/initrd.img-3.8-trunk-amd64 | cpio -idmv
.
O initramfs é responsável por carregar todos os drivers, iniciar o udev e encontrar o sistema de arquivos raiz. Esta é a etapa que está falhando para você - não é possível encontrar o sistema de arquivos raiz, portanto, ele é liberado.
Uma vez que o initramfs tenha terminado, ele tem o sistema de arquivos root montado e entrega o controle para / sbin / init.
Inicialização do sistema
Neste ponto, seu init assume o controle - acho que o Ubuntu está usando o upstart atualmente.
O que está quebrado
Não tenho certeza do que está quebrado (parte, confesso, porque estou muito mais familiarizado com o funcionamento do Debian do que o Ubuntu, embora seja semelhante), mas tenho algumas sugestões:
- O initramfs tem sua própria cópia de
mdadm.conf
. Você pode precisar executarupdate-initramfs -u
para corrigi-lo. - Veja as mensagens de inicialização. Pode haver um erro. Livre-se de 'quiet' e 'splash' e talvez adicione 'verbose' à sua linha de kernel para realmente vê-los.
- Dependendo do armazenamento usado, talvez seja necessário definir o parâmetro rootdelay.
- Quando você é enviado para o prompt do shell, você não tem muitos comandos, mas você tem o mdadm. Tente descobrir o que deu errado. Se você corrigir o problema, a inicialização poderá continuar.