18.04.2 initrdをramdiskにロードする

18.04.2 initrdをramdiskにロードする

PXEブートカーネルを作成しようとしていますクローンデプロイ. すぐには動作しないが、Ubuntu インストールでは問題なく動作するドライバーが必要な NIC があるので、Ubuntu を起動するカーネルと initrd を使用して PXE ブートするだけだと考えました (Linux にあまり詳しくないので、これよりよい方法は思いつきません。独自のカーネルを構築しようとしても、動作する NIC を作成できませんでした)。

最新の 18.04.2 インストールを実行しています。そのため、次のファイルを PXE システムの適切な場所にコピーし vmlinuz-4.18.0-20-genericinitrd.img-4.18.0-20-generic そこから起動しようとしました。

これは (ipxe) ブート コマンド ラインです (読みやすくするためにイメージの場所を短縮しています)。

kernel http://.../IpxeBoot?filename=vmlinuz-4.18.0-20-generic&type=kernel initrd=initrd.img-4.18.0-20-generic root=/dev/ram0 rw ramdisk_size=1560000  web=http://.../ USER_TOKEN= task=debug consoleblank=0 
imgfetch --name initrd.img-4.18.0-20-generic http://.../IpxeBoot?filename=initrd.img-4.18.0-20-generic&type=bootimage
boot

起動時に、一連の関連デバイス (NIC を含む) が初期化されますが、その後、次のエラーが発生します。

gave up waiting for root file system device
ALERT! /dev/ram0 does not exist. Dropping to a shell!

見つけたこの質問、これは、起動中にどこかで brd モジュールをロードし、initrd を実際に使用可能な RAM ディスクに変換するための追加手順を実行する必要があることを示しています。 が提案されましたがadd "brd rd_size=16777216" to /etc/initramfs/modules、initrd.img-4.18.0-20-generic ファイルを解凍すると ( を使用)、/etc/initramfs がありません。 (また、ram0 から ram15 ではなく、ram0 のみを作成するために をunmkinitramfs使用する必要があることにも注意してください)。rd_nr=1 rd_size=1048576

ブート エラーを回避するにはどうすればよいでしょうか。また、brd のロードが必要な場合、このカーネル バージョンではどのように実行すればよいでしょうか。

答え1

初期 RAM ディスク (この場合は) は、システムへのカーネルのインストール中にツールinitrd.img-4.18.0-20-genericによって自動的に生成されます。update-initramfs

update-initramfsシステムをチェックアウトし、initrd起動時にロードするために必要なモジュールを追加します。

スクリプトを配置できる場所は 2 つありますinitial ramdisk

/usr/share/initramfs-tools

そして

/etc/initramfs-tools 

あなたの場合は、その行を挿入し/etc/initramfs-tools/modulesて実行する必要があります

update-initramfs -u

現在のカーネル用。

次に結果を確認します。

mkdir myinitramfs

cd myinitramfs

zcat /boot/initrd.img-4.18.0-20-generic | cpio --extract

cat conf/modules

モジュールがリストに含まれているか確認する

関連情報