PXEで使用されるデフォルトのネットワークブートイメージは5.4ですが、最新バージョンのカーネル5.11でvmlinuzとinitrdが利用できないのはなぜですか?
答え1
まあ、vmlinuzとinitrdはISOイメージの内側にあります(ネットワーク起動にISOイメージを使用しているかどうかにかかわらず)。
したがって、5.4ネットワークブートISOイメージには、5.4のvmlinuzとinitrdが含まれています。
5.11でvmlinuzとinitrdを使用するには、5.11のファイルで作成されたネットワークブートISOイメージが必要です。ダウンロードできない場合は、作成する必要があります(Google、Ubuntu用に作成するための標準的なプロセスが必要です)。
答え2
initrd ファイルには通常多くのカーネルモジュールが含まれていますが、通常はすべてのモジュールが含まれているわけではありません。
netbootイメージは、完全な/lib/modules/
ディレクトリツリーを含むより完全なルートファイルシステムを設定します。最新のカーネルを使用している場合、/lib/modules/<kernel-version-number>/
そのディレクトリはイメージに存在しないため、initramfsブートフェーズ後にカーネルモジュールをロードしようとすると失敗します。モジュールは特に「弱い依存関係」を準備します。そしてカーネルABIには互換性のない変更はありません。
これは、カーネルが「必須ではない」ハードウェア、または後でホットプラグされるハードウェア、モジュールとして提供され、initramfsブートフェーズでロードされないファイルシステムやその他のカーネル機能をサポートできないことを意味します。
最新のカーネルには、新しいカーネル機能を利用するためにそれに対応する最新のユーザースペースツールが必要な場合がありますが、これは上記の正しいカーネルバージョンを持たないカーネルモジュールよりもすぐにエラーを引き起こす可能性が低くなります。
もちろん、必要なタスクを実行したい場合は、最新のカーネルバージョン用のモジュールを含むカスタムネットワークブートイメージを準備するのを妨げることはありません。
casper/extras/modules.squashfs-generic
Ubuntuのnetboot ISOでは、カーネルモジュールはISOにcasper/extras/modules.squashfs-generic-hwe
別々のsquashfsイメージでパッケージされていますubuntu-20.04.3-live-server-amd64.iso
。これには、カーネルmodules.squashfs-generic
パッケージング5.4.0-81-generic
用のモジュールと、カーネルを有効にするmodules.squashfs-generic-hwe
ハードウェア用のモジュール5.11.0-27-generic
(!)が含まれています。
ISOディレクトリには対応するファイルもファイルもありますhwe-vmlinuz
。 PXEブート構成で通常とファイルの代わりにこれらのファイルを使用すると、実際にカーネルバージョンが得られます。ただhwe-initrd
casper
vmlinuz
initrd
5.11.0-27-generic
一般的なUbuntuネットワーク起動ガイドラインこのオプションの存在に関する言及は無視してください。
これが十分に新しいものでない場合は、casper/extras/modules.squashfs-*
最新のカーネルモジュールを含むファイルを追加し、標準ファイルの代わりにそれを使用してカスタムネットワークブートISOを作成することが可能でなければなりません。 initrdファイルの必須カスタマイズ(存在する場合)は、「読者に練習として残す」。 (翻訳:まだやったことはありませんが、適度な努力をすれば成し遂げられそうです。)