Kernel entra em pane com o erro “Não é possível abrir o dispositivo root”, onde eu adiciono a opção “root =”?

7

sempre que eu tento inicializar com o kernel Linux 3.0.0.13 (aquele instalado pelos upgrades) eu recebo um erro Kernel Panic:

  

VFS: Não é possível abrir o dispositivo raiz "sda1" ou bloco desconhecido (0,0)   Por favor, anexe uma opção de inicialização correta "root=";

Por sorte, se eu inicializar usando a versão anterior, não tenho nenhum problema. Como posso resolver isso? Onde devo acrescentar o root= option correto? Se eu não conseguir esse kernel funcionar, como posso removê-lo como padrão e ficar com o mais antigo?

    
por lucacerone 24.10.2011 / 09:48

2 respostas

8

Você não forneceu muitas informações com os logs, mas eu acredito que o erro que você está enfrentando é porque o kernel está confuso com uma unidade IDE / SATA. Fazer uma rápida pesquisa no Google levou-me ao link 1 , link 2 , link 3

Veja a seguir o trecho de um link referido por um dos links acima :

  

O mais provável é um dos problemas mais recorrentes (mas, uma vez resolvido,   provavelmente você nunca mais verá isso novamente:

Unable to mount root fs on unknown-block(0,0)
     

ou

VFS: Cannot open root device "sda3" or unknown-block(8,3)
Please append a correct "root=" boot option; here are the available partitions:
  sda driver: sd
    sda1 sda2
     

Os dígitos 0,0 ou 8,3 podem ser diferentes no seu caso - referem-se a   o dispositivo que o kernel tenta acessar (e que falha).   De um modo geral, pode-se dizer que, se o primeiro dígito é 0, então o   O kernel não consegue identificar o hardware. Se for outro dígito   (como 8), é incapaz de identificar o sistema de arquivos (mas é capaz de   acessar o hardware).

     

O problema aqui é que o kernel que você está inicializando não pode   traduzir o parâmetro root=/dev/... que você deu (dentro do boot   configuração do carregador) em um sistema de arquivos real e acessível. De várias   razões podem resultar em tal falha:

     
  • a configuração do kernel não possui drivers para seu controlador de HDD (casos 1, 4, 5)
  •   
  • a configuração do kernel está faltando drivers para o barramento usado pelo seu controlador de HDD
  •   
  • a configuração do kernel está faltando drivers para o sistema de arquivos que você está usando
  •   
  • o dispositivo foi identificado erroneamente em seu parâmetro root = (casos 2, 3)
  •   

Resolver o problema é fácil se você souber qual é o motivo. Você mais   provavelmente não, então aqui está um rápido check-up.

     

Abra o assistente de configuração do kernel (a parte make menuconfig )   que você pode atualizar a configuração do kernel de acordo.

     
  • Verifique se você tem suporte embutido (e não como módulo) para o barramento / protocolo que seu controlador de disco rígido usa.
  •   
  • O mais provável é que esse suporte seja PCI, suporte a SATA (que está abaixo do suporte a dispositivos SCSI), ...
  •   
  • Verifique se você tem suporte embutido (e não como módulo) para o controlador de HDD que você usa.      Um dos casos mais freqüentes: você selecionou o suporte para o protocolo do controlador de disco rígido (IDE, SATA, SCSI, ...), mas esqueceu de usar o protocolo.   selecione o controlador do HDD em si (como o Intel PIIX). Tente
      executando o seguinte comando lscpi e cole sua saída no link . O site mostrará a você qual kernel   drivers que você precisa selecionar para o seu sistema. Dentro do menuconfig,
      você pode digitar "/" para abrir a função de pesquisa e digitar o driver
      nome para descobrir onde ele reside.      %código%
  •   
  • Verifique se você tem suporte embutido (e não como módulo) para o (s) sistema (s) de arquivos usado (s).
  •   
  • Digamos que seu sistema de arquivos raiz use btrfs (que definitivamente não recomendo), mas você não o selecionou ou selecionou para ser criado como um.   módulo, então você receberá o erro que você vê. Verifique se o sistema de arquivos
      suporte é construído no kernel.
  •   
  • Verifique se o parâmetro do kernel para # lspci -n está apontando para a partição correta.

         

    Isso não é tão estúpido quanto parece. Quando você é iniciado com um   kernel, ele pode listar seus discos como sendo / dev / sda enquanto o seu   O kernel (configurado) espera que ele seja / dev / hda. Isso não é   porque os núcleos são inconsistentes entre si, mas por causa do   drivers usados: drivers mais antigos usam a sintaxe hda, sda mais recente.

         

    Tente alternar hda com sda (e hdb com sdb e ...).

         

    Além disso, kernels recentes oferecem uma visão geral das partições encontradas   no dispositivo disse. Em caso afirmativo, pode ajudá-lo a identificar se você   uma partição selecionada (no exemplo dado no início deste   seção, apenas duas partições são encontradas enquanto o kernel era   instruído a inicializar o terceiro). Se isso não acontecer, é mais provável   porque o kernel não conhece o dispositivo para começar (então ele não pode   tente exibir partições).

  •   
  • Verifique se o kernel que está sendo inicializado pelo gerenciador de inicialização é o kernel correto.      Eu tenho visto pessoas que, depois de construir um primeiro kernel (que não inicializa), esquecem que eles têm que montar root= antes do   Sobrescreva o kernel com um novo. Como resultado, eles copiam   kernel para o sistema de arquivos raiz ( /boot ) enquanto o gerenciador de inicialização   espera que a imagem do kernel esteja na partição / .

  •   
    
por Nitin Venkatesh 27.02.2012 / 05:51
0

Depois de ler esta resposta, que explica o que está acontecendo, tente usar o [Boot-Reapir CD] [1] [1]: link

Trabalhou muito bem na reparação do "o dispositivo foi identificado erroneamente em seu parâmetro root = (casos 2, 3)".

    
por madcap66 30.09.2013 / 14:25

Tags