NFSモジュールを使用して構築されたInitrdは、NFSルートをマウントできません。

NFSモジュールを使用して構築されたInitrdは、NFSルートをマウントできません。

NFSルートの代わりにtmpfsルートを使用してディスクレスノードを起動できるようにカスタムinitrdを構築しています(initrdのスクリプトは、ルートデバイスの内容をtmpfsファイルシステムにコピーして値を変更しますNEWROOT)。私のテスト環境では、すべてが大丈夫に見えます。カスタムinitrdを作成して起動しました。 /neverはtmpfsとしてマウントされていませんが、NFSルートによって提供されるすべてのファイルがあります。素晴らしい機能です。

その後、実際の環境に移動し始め、initrdが起動したときにNFSルート(この時点ではまだ一般的なNFSブートでした)をマウントしようとしたときに窒息して文句を言いましたmount.nfs4: No such device

次のコマンドを使用してinitrdを生成します。

dracut -v -m "nfs network base" --include rd.live.overlay/ / initrd-tmpfs.img

ロード中であることを確認しましたinitrd-tmpfs.img(ロードされたinitrdをリストしたPXEブートの初期部分に基づいています)。

initrdが失敗した場合は、緊急シェルに入り、いくつかの興味深い作業を行います。

ip addr showDHCP の IP が一覧表示され、NFS サーバーに ping を送信できます。

echo $netrootNFS起動パラメータのリストnfs4:[Server IP]:[root location]:[nfs options]

mount -t nfs4 [Server IP]:[root location] /sysroot結果:(mount.nfs4: No such device非常におなじみ)

modprobe nfs結果:modprobe:FATAL: Module nfs not found明らかに問題があります

grep nfs /usr/lib/dracut/modules.txt一致

grep nfs /usr/lib/modules/[kernel version]/modules.order何度も一致すると言われていますが、kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.koそれらのどれも存在しません。

環境: RHEL 7


私の質問に対する答えがすでに書かれた後に答えがあるようです。答えを投稿します。

ベストアンサー1

最後のデバッグ段階でヒントを得たので、他の人に答えを投稿する必要があると思いました。grep nfs /usr/lib/modules/[kernel version]/modules.order一致kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.koが存在しません。

カーネルドライバをよく*.ko表し、initrdオプションがあります--add-drivers

dracut -v -m "nfs network base" --include rd.live.overlay/ / initrd-tmpfs.img

になる:

dracut -v -m "nfs network base" --add-drivers "nfs nfsv4" \
--include rd.live.overlay/ / initrd-tmpfs.img

その後、lsinitrd | grep nfslist nfs.ko、ルートデバイスが独自にインストールされ、コピーされ、幸せな日になります。 HAディスクレスクラスタに適したnfsv4.kotmpfsディレクトリと一緒にNFSから起動するディスクレスサーバーがあります。/

私のテスト環境とターゲット間のドライバの違いは、含めるドライバを指定できる/etc/dracut.conf結果ですが、あまり/etc/dracut.conf.d/調査しませんでした(コマンドを実行するときにドライバを指定することをお勧めします。私の精神)。

おすすめ記事