カスタムビルドカーネルが起動不可能な initramfs を生成する - CentOS 7

カスタムビルドカーネルが起動不可能な initramfs を生成する - CentOS 7

私は独自のカーネル (4.19.37) を構築しており、ビルド ( make) またはインストール ( make install_modules+ make install) 中に問題はありません。 を実行するまではすべて順調に進んでいるようですgrub2-mkconfig -o /boot/grub2/grub.cfg。このコマンドを実行すると、grub は の既存vmlinuz-*カーネルと新規カーネル/boot/の両方と、それらに対応する を見つけますinitramfs-*.img。ただし、その時点でシステムは無期限 (数時間以上) にハングします。 Ctrl+Cでは停止しないようで、再起動する必要があります。この問題を調べたところ、問題になる可能性があるのは、リムーバブル ディスクのブート可能 OS の検出だけで、これを削除し、パーGRUB_DISABLE_OS_PROBER=trueに追加することで排除しました。/etc/default/grubこのSEの投稿どちらも役に立ちませんでした。

再起動すると、コマンドラインに戻ります。grub>おそらく、grub2-mkconfiggrub 構成ファイルが終了せず破損しているためです。ここでは、問題なく古いカーネルと新しいカーネルの両方、および initramfs をロードできますが、ブートを実行するとカーネル パニックが発生します。

end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

カーネルパニック終了 - 同期していません: VFS: 不明ブロック(1,0)にルートファイルシステムをマウントできません

当然、ビルド プロセスによって作成された に何か問題があると推測していますinitramfs-4.19.37.img。実験として、新しいカーネルをロードできるかどうかをテストしましたが、古い initramfs (4.19.10) を使用できました。確かに で起動しますemergency mode。ただし、その逆、つまり古いカーネルを新しい initramfs で使用することはできません。つまり、新しい initramfs イメージに何か問題があるということです。

さらに賢くなって、私の最後の実験は、 で古い initramfs イメージと新しい initramfs イメージをマウントすることでしたmount。両方ともエラーなしで正常にマウントされ、ファイル構造が同一のようです。また、カーネル ビルドの新しいファイルと古いファイルの両方を比較しましたが.config、違いはわずかでした。

その他の注意点/観察事項:

  • 上の画像ではList of all partions:何も生成されていないので、ファイル システムの種類に問題があるのではないかと考えています。私のハード ドライブは ですがxfs、? CPIO のファイル システムは何ですかinitramfs?
  • コマンドラインではgrub>ls /で表示されるはずのものが出力されます/boot。 これには、すべての myvmlinuz-*およびinitramfs-*.imgfileが含まれます。
  • 私のファイルシステムはxfs
  • 他のカーネルバージョンも試してみましたが結果は同じでした
  • ビルドとインストールは 2 回成功しました。1 回は既存のカーネル (4.19.10) で、アップグレードでした。2 回目は同じカーネルでlow-latencyプリエンプション モデルを使用しました。そのとき何を違ったやり方で行ったのか、どうしてもわかりません。

最後の質問は、initramfsこれらのビルドのフォームの何が問題なのか、整合性を検証するために他に何ができるのか、ファイル システム.configのカーネルをビルドするときに何か変更する必要があるのか​​、ということです。xfs


免責事項:これは実際にはこの質問ただし、問題を少し単純化しました。背景情報が関連している可能性があります。

関連情報