GNU/Linux >> Linux の 問題 >  >> Ubuntu

「ルートデバイスを開けません」エラーのあるカーネルパニック、「root =」オプションをどこに追加すればよいですか?

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

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

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

承認された回答:

続行するためのログなどの情報はあまり提供されていませんが、おそらくこのエラーが発生しているのは、カーネルがIDE/SATAドライブによって混乱しているためだと思います。 Googleですばやく検索すると、リンク1、リンク2、リンク3

にたどり着きました。

以下は、上記のリンクの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内で、
    「/」と入力して検索機能を開き、ドライバー名を入力して
    ドライバーの場所を確認できます。 # lspci -n
  • 使用しているファイルシステムのサポートが(モジュールとしてではなく)組み込まれているかどうかを確認します。
  • ルートファイルシステムがbtrfs(絶対にお勧めしません)を使用しているが、それを選択しなかったか、
    モジュールとしてビルドするように選択した場合、次のエラーが表示されます。 。ファイルシステムのサポートがカーネルに組み込まれていることを確認してください。
  • root=のカーネルパラメータを確認してください 正しいパーティションを指しています。

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

    hdaをsdaに(そしてhdbをsdbに、そして…)切り替えてみてください。

    また、最近のカーネルは、デバイス上で検出された
    パーティションの概要を示しています。含まれている場合は、
    パーティションを誤って選択したかどうかを特定するのに役立つ場合があります(このセクションの冒頭に示した例では、カーネルが起動するように指示されているのに対し、
    パーティションは2つしか見つかりません。第3)。そうでない場合は、カーネルが最初にデバイスを認識していないため、
    可能性があります(したがって、
    パーティションの表示を試みることはできません)。

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


Ubuntu
  1. 最新のメインラインカーネルで自動的に最新の状態に保つ方法は?

  2. Inittabファイルはどこにありますか?

  3. ラップトップ上のマルウェアに対処する方法は?

  1. カーネル4.10.0-20-genericでモジュールBtusbをロードする際のエラー?

  2. rootオプションでPHP-FPMを自動起動

  3. カーネルはどのようにルート パーティションをマウントしますか?

  1. Linuxカーネルをftraceで分析する

  2. rootアカウントでのログインを無効にする

  3. vm.overcommit_ratio の残りのメモリはどこに行くのですか?