web-dev-qa-db-ja.com

カーネルが「ルートデバイスを開けません」エラーでパニックします。「root =」オプションはどこに追加しますか?

linuxカーネル3.0.0.13(アップグレードによってインストールされたもの)で起動しようとすると、カーネルパニックエラーが発生します。

VFS:ルートデバイス「sda1」または不明なブロック(0,0)を開けません。正しい「root =」ブートオプションを追加してください。

幸いなことに、以前のバージョンを使用してブートする場合、問題はありません。どうすれば解決できますか?正しいroot= optionはどこに追加すればよいですか?このカーネルが機能しない場合、どのようにデフォルトとして削除し、古いカーネルに固執することができますか?

8
lucacerone

あなたはログなどで多くの情報を提供していませんが、おそらくあなたが直面しているこのエラーはおそらくカーネルがIDE/SATAドライブによって混乱しているためだと推測しています。簡単なGoogle検索を行うと、 リンク1リンク2リンク

次は リンク参照 by 上記リンクの1つからの抜粋です

最も可能性の高い問題の1つです(ただし、一度解決すると、再び問題が発生することはほとんどありません)。

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

または

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

数字の0,0または8,3は異なる場合があります-カーネルがアクセスしようとする(そして失敗する)デバイスを指します。一般的に言えば、最初の数字が0の場合、カーネルはハードウェアを識別できません。別の数字(8など)の場合、ファイルシステムを識別できません(ただし、ハードウェアにアクセスできます)。

ここでの問題は、ブートしているカーネルが、(ブートローダー構成内で)与えたroot=/dev/...パラメーターを実際のアクセス可能なファイルシステムに変換できないことです。いくつかの理由により、このような失敗が発生する可能性があります。

  • カーネル構成にHDDコントローラーのドライバーがありません(ケース1、4、5)
  • カーネル構成に、HDDコントローラーが使用するバスのドライバーがありません
  • カーネル構成には、使用しているファイルシステムのドライバーがありません
  • デバイスがroot =パラメーターで誤って識別されている(ケース2、3)

理由がわかれば、問題の解決は簡単です。おそらくそうではないので、ここでは簡単な検査を行います。

カーネル構成ウィザードを開き(make menuconfig部分)、それに応じてカーネル構成を更新します。

  • ハードディスクコントローラーが使用するバス/プロトコルのサポート(モジュールとしてではなく)が組み込まれているかどうかを確認します。
  • ほとんどの場合、これはPCIサポート、SATAサポート(SCSIデバイスサポートの下にあります)、...
  • 使用するHDDコントローラーのサポートが組み込まれている(モジュールとしてではない)かどうかを確認します。最もよくあるケースの1つ:ハードディスクコントローラープロトコル(IDE、SATA、SCSIなど)のサポートを選択したが、
    HDDコントローラドライバ自体を選択します(Intel PIIXなど)。試してみる
    次のlscpiコマンドを実行し、その出力を貼り付けます
    http://kmuto.jp/debian/hcl/ 。サイトには、システムに選択する必要があるカーネルドライバーが表示されます。 menuconfig内で、
    「/」と入力して検索機能を開き、ドライバーを入力できます
    nameが存在する場所を確認します。 # lspci -n
  • 使用しているファイルシステムのサポートが組み込まれている(モジュールとしてではない)かどうかを確認します。
  • あなたのルートファイルシステムはbtrfsを使用していると言います(私は絶対にお勧めしません)が、あなたはそれを選択しなかったか、または
    モジュール、表示されるエラーが表示されます。ファイルシステムを確認してください
    サポートはカーネルに組み込まれています。
  • root=のカーネルパラメーターが正しいパーティションを指しているかどうかを確認します。

    これは見た目ほど愚かではありません。 1つのカーネルで起動すると、ディスクは/ dev/sdaとしてリストされますが、(設定済みの)カーネルは/ dev/hdaであると想定します。これは、カーネルが互いに矛盾しているためではなく、使用されているドライバーのためです。古いドライバーはhda構文を使用し、新しいsdaを使用しています。

    Hdaをsda(およびhdbをsdb、および...)に切り替えてみてください。

    また、最近のカーネルでは、デバイス上で見つかったパーティションの概要が示されています。存在する場合、パーティションを誤って選択したかどうかを特定するのに役立ちます(このセクションの冒頭に示した例では、2つのパーティションのみが見つかり、カーネルは3番目のブートを指示されました)。そうでない場合は、おそらくカーネルが最初のデバイスを認識していないためです(したがって、パーティションを表示することはできません)。

  • ブートローダーによってブートされているカーネルが正しいカーネルであるかどうかを確認します。最初のカーネル(ブートしない)をビルドした後、カーネルを新しいカーネルで上書きする前に/bootをマウントする必要があることを忘れている人を見てきました。その結果、カーネルはルートファイルシステム(/)にコピーされますが、ブートローダーはカーネルイメージが/bootパーティションにあることを期待しています。

11
Nitin Venkatesh

何が起こっているのかを説明するこの回答を読んだ後、[Boot-Reapir CD] [1] [1]を使用してみてください。 https://help.ubuntu.com/community/Boot-Repair

「デバイスがroot =パラメーターで誤って識別されている(ケース2、3)」の修復に非常に役立ちました。

0
madcap66