O kernel não consegue encontrar o arquivo / dev / sda durante a inicialização

3

Eu configurei um kernel do gentoo (kernel-2.6.36-gentoo-r5), mas quando eu inicializo ele não pode montar /dev/sda1 :

ALERT! /dev/sda1 does not exist . Dropping to a shell .

Eu uso o shell para acessar o diretório /dev , e descubro que ele não tem arquivos sda* ou hd* . No entanto, quando eu inicio no meu kernel Debian (vmlinuz-2.6.32-5-686), ele pode encontrar e montar a partição /dev/sda1 .

Qual é o problema? Como posso consertar isso? Não adicionei nenhum nome de módulo ao arquivo /etc/modules.autoload.d/kernel-2.6 para permitir que eles sejam carregados automaticamente durante a inicialização - essa é a causa do problema?

    
por mike 01.03.2011 / 16:40

5 respostas

4

Você não menciona precisamente como você reconstruiu o kernel. Este é um processo bastante complexo e você deve seguir a recomendação da sua distribuição. De fato, você deve usar o kernel de sua distribuição, a menos que você precise de algum recurso (como um conjunto mais recente de drivers para suportar seu hardware) que não esteja disponível pré-compilado.

Existem duas armadilhas comuns, que podem causar os sintomas observados.

  • Talvez você tenha se esquecido de compilar um driver necessário. A configuração do kernel é um processo árduo e é fácil esquecer uma configuração crucial. Em particular, certifique-se de incluir os drivers necessários para acessar seu sistema de arquivos raiz: controlador de disco, esquema de partição, sistema de arquivos e, se relevante, gerenciamento de volume. Esses drivers devem ser construídos no kernel (ou seja, não módulos), ou você deve ter um initrd (nesse caso, o driver initrd e o sistema de arquivos relevante devem ser integrados). Começar com .config da sua distribuição e alterar apenas o que você precisa é recomendado.
  • Se você usar um initrd, talvez tenha se esquecido de regenerá-lo ou instalá-lo ou de informar seu bootloader sobre ele.
por 07.12.2010 / 22:43
4

Você não precisa de algum driver para acessar seu dispositivo root. SATA, talvez, ou um dos módulos SCSI usados por isso. Ou você não criou o driver ou não o colocou no initrd.

    
por 18.02.2011 / 14:26
3

Você precisa ter certeza de selecionar os drivers SATA corretos ao configurar seu kernel. Eu não sei qual é o seu hardware, então você precisa descobrir por si mesmo quais drivers funcionarão para você.

Eu sempre construo os drivers SATA no kernel, e não como um módulo, é mais fácil de lidar.

    
por 01.03.2011 / 18:24
3

Para usuários iniciantes do Gentoo, sugiro usar genkernel em vez de make menuconfig . Por padrão, genkernel incluirá todos os drivers necessários para .

Se você tiver tempo, re-execute genkernel e gradualmente reduza os drivers que você não precisa, edite grub.conf e reinicialize. Continue reduzindo. Observe as configurações (obtenha o arquivo .config ).

No meu caso, optei por fazer uma reinstalação, desta vez use o arquivo .config e vá direto para make . Não é necessário, mas eu simplesmente não gosto de ter muitos kernels semi-assados por aí, além de alguns (possivelmente irracionais) não gostarem de ter que inicializar o initrd.

(Bem, pelo menos é assim que eu fiz isso. Leva tempo, mas finalmente satisfaz :-))

    
por 10.03.2011 / 12:32
2

A execução de make && make modules_install && make install não deve apenas compilar o kernel, mas também instalar a imagem do kernel (bzImage) e copiá-la para / boot /, criar um initrd e criar uma entrada do grub para ambos.

Se este não for o (s) comando (s) e / ou sintaxe que você estava usando, eu recomendo tentar este processo. Se este é o processo que você seguiu, recomendo a reconstrução do initrd com mkinitrd e a verificação de que o dispositivo raiz na configuração do grub representa com precisão a configuração do sistema.

    
por 07.12.2010 / 16:10