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 show
DHCP の IP が一覧表示され、NFS サーバーに ping を送信できます。
echo $netroot
NFS起動パラメータのリスト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 nfs
list nfs.ko
、ルートデバイスが独自にインストールされ、コピーされ、幸せな日になります。 HAディスクレスクラスタに適したnfsv4.ko
tmpfsディレクトリと一緒にNFSから起動するディスクレスサーバーがあります。/
私のテスト環境とターゲット間のドライバの違いは、含めるドライバを指定できる/etc/dracut.conf
結果ですが、あまり/etc/dracut.conf.d/
調査しませんでした(コマンドを実行するときにドライバを指定することをお勧めします。私の精神)。