
サーバー: 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.