ディスクレスノード。NFS経由でルートファイルシステムをマウントできません

ディスクレスノード。NFS経由でルートファイルシステムをマウントできません

サーバー: CentOS 7
クライアント用 NFS ルート ファイルシステム、カーネル: Slackware 14.1

「NFS 上のルート ファイル システム」と「IP: カーネル レベルの自動構成」を「DHCP、BOOTP、RARP」サポートで有効にし、カーネル (3.10.17) を再コンパイルしました。

TFTP、NFS、DHCP はすべて準備完了です。Linux
クライアントで NFS をマウントできることを確認しました。(mount -t nfs ...)
DHCP と TFTP は正常に動作し、RAM ルート ファイル システムを使用する isolinux カーネルから起動できます。

ここで、ディスクレス ノードが必要なので、NFS 経由でルート ファイル システムをマウントするカーネルが必要です。

kernel kernels/vmlinuz
append ip=dhcp root=/dev/nfs nfsroot=192.168.1.4:/srv/diskless/slackware-14.1,nfsvers=3 raid=noautodetect

起動時にエラーが発生します

VFS: Unable to mount root fs via NFS, trying floppy.

また、カーネルは起動時に DHCP によって IP アドレスを取得できなかったようです。
(情報は表示されません。手動で「ip=192.168.1.7: ... :eth0」を使用するかどうかはわかりません)

Slackware は巨大なカーネルを使用しているため、initrd イメージがありません。(問題はここにあるのかもしれません)(私のコンピューターの Linux には ether がありませんでしたが、正常に動作しています :) )

あるいは、カーネルのメニュー構成で私が選択しなかったオプションがあるかもしれません:( 。(そして、私はそれを本当に知る必要があります)

答え1

私もあなたと同じ問題を抱えていましたが、解決策を見つけることができました。私も Slackware 14.1 と巨大なカーネルを使用しています。

私の問題は、huge カーネルに Ethernet ドライバーが含まれていないことでした。私の場合、e1000 ドライバーは huge.s カーネルのモジュールとしてコンパイルされており、このカーネルにはすべてのドライバーが含まれていると思っていましたが、私の思い込みは間違っていました。e1000 ドライバーをカーネルに追加すると (モジュールとしてではなく)、すべてが機能し始め、NFS でルートをマウントできるようになりました。

VFS マウント メッセージの前に次のような内容が表示されます。

[    3.325468] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[    3.337383] Sending DHCP requests ., OK
[    3.340259] IP-Config: Got DHCP answer from 192.168.10.5, my address is 192.168.10.6
[    3.340870] IP-Config: Complete:
[    3.341128]      device=eth0, hwaddr=08:00:27:c0:3e:a7, ipaddr=192.168.10.6, mask=255.255.255.0, gw=255.255.255.255
[    3.341682]      host=test, domain=, nis-domain=(none)
[    3.341989]      bootserver=192.168.10.5, rootserver=192.168.10.5, rootpath=
[    3.342198]      nameserver0=192.168.10.5
[    3.342816] md: Skipping autodetection of RAID arrays. (raid=autodetect will force)
[    3.382613] VFS: Mounted root (nfs filesystem) readonly on device 0:13.

関連情報