同じカーネルバージョン(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に文字列を追加します。