同じカーネルバージョンの2つのコンパイル:1つは起動中で、もう1つはルートデバイスを見つけることができません。

同じカーネルバージョンの2つのコンパイル:1つは起動中で、もう1つはルートデバイスを見つけることができません。

同じカーネルバージョン(4.0.5 + gentooパッチ)の2つのビルドがあります。 1つは正しく起動しますが、複数のカーネルCONFIGフラグがありません。

これらのフラグを追加して実行すると、make all && make install「ルートデバイス/ dev / sda4が見つかりません」というエラーが発生します。

私は湿地の標準を持っています/etc/fstab

/dev/sda1               /boot           ext2         noauto,noatime,discard  0 2
/dev/sda4               /               ext4         noatime,discard         0 1
/dev/sda3               none            swap            sw              0 0
/dev/cdrom              /mnt/cdrom      auto            noauto,ro       0 0
/dev/fd0                /mnt/floppy     auto            noauto          0 0

Googleをチェックすると、これはinitramfsのいくつかの構成によるものであることがわかりました。これは興味深いです(そして私が知っている限りデバッグするのは難しいです!)。

私はGrub 1を使用しており、次のような構成があります。

title Gentoo Linux 4.0.5 - no docker, has X.
root (hd0,0)
kernel /boot/vmlinuz-4.0.5-gentoo-x root=/dev/sda4 rootfstype=ext4
initrd /boot/initramfs-genkernel-x86_64-4.0.5-gentoo

title Gentoo Linux 4.0.5 - latest build.
root (hd0,0)
kernel /boot/vmlinuz-4.0.5-gentoo root=/dev/sda4 rootfstype=ext4
initrd /boot/initramfs-genkernel-x86_64-4.0.5-gentoo

最初のエントリはブートストラップビルド、2番目のエントリは非ブートストラップビルドです。

私のもの疑うはい、カーネル+ initramfsにはバイナリの一致要件があり、新しいバージョンではバイナリの場所を変更してファームウェアのロードに失敗します。

誰かが権威ある文書へのリンクがある場合、またはカーネル/initramfs/rootデバイスの対話に対する権威ある答えがある場合は、大変感謝します。

UUID=<uuid>編集:この問題の調査に時間を費やした結果、これも役に立たないことがわかりました。しかし、正しく機能しないブートでinitramfsシェルを入力すると、そのシェルが存在しないことを示しているようです/dev/sda<1-4>(これが私が探しているものです)。まあ。

ベストアンサー1

両方のコアに同じinitramfsを使用しているようです。 initramfsにはそこからロードする必要があるカーネルモジュールが含まれており、カーネル構成の違いによってこれが問題になる可能性があります。

一般的に言えば、両方のカーネルが同じソースツリーに構築され、カーネルが2番目のコンパイル時にモジュールが再コンパイルされない場合にのみ、2つのカーネルが「互換性がある」と思います。したがって、追加のモジュールを有効にすると(既存のモジュールが再コンパイルされない)、「互換性のある」カーネルになりますが、CONFIGフラグを変更すると既存のモジュールが再コンパイルされ、「互換性のない」カーネルになります。互換性のないカーネル間でモジュールを混在させるのに問題がある可能性があります。したがって、互換性のないカーネル構成の変更に対して新しいinitramfsを作成する必要があります。さらに、同じバージョン文字列を持つ2つの互換性のないカーネルを同じシステムにインストールすると、2つのカーネルのモジュールが同じ場所にあるかのように問題が発生する可能性があります/lib/modules/<version>。ただし、どちらのモジュールも配置できます。EXTRAVERSION=カーネルバージョンの文字列を一意にするには、カーネルツリーのルートMakefileに文字列を追加します。

おすすめ記事