I am trying for network file system (NFS) booting between two systems.
I am using dhcp server to assign IP-address for client. And my kernel and root file system are present in server. My client is able to load the kernel. But can't able to mount the root filesystem. I am getting error regarding remote procedure call (RPC)
The following lines appear while booting at client side
NFS: MNTPATH: '/nfsroot'
NFS: sending MNT request for 172.16.6.237:/nfsroot
NFS: failed to create MNT RPC client, status=-101
NFS: Unable to mount server 172.16.6.237, error -101
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
0000 bla bla bla
kernel panic- not syncing: VFS: Unable to mount root fs or unknown-block(2,0)
The above lines are few lines when I am doing NFS (network file system).
In kernel configuration i enabled all necessary flags for NFS support.
In above error The line related to RPC client is present in kernel fs/nfs/mount_clnt.c program.
I also came to know that the error occurs in rpc_ping() function which is present in net/sunrpc/clnt.c file.
How can I fix this?
edit:-
My dhcp.conf looks like this:
{
allow booting;
allow bootp;
use-host-decl-names on;
ddns-update-style interim;
ignore client-updates;
next-server 172.16.6.237;
subnet 172.16.6.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
range dynamic-bootp 172.16.6.10 172.16.6.254;
default-lease-time 21600;
max-lease-time 43200;
option domain-name-servers 127.0.0.1;
option routers 172.16.6.1;
filename "pxelinux.0";
}
host hostname {
hardware ethernet 74:27:ea:42:b7:b7;
fixed-address 172.16.6.238;
option root-path"172.16.6.237:/nfsroot";
}
}
And my pxelinu.cfg/default file looks like this:
{
default openwrt
label openwrt
kernel openwrt-x86-generic-vmlinuz
append boot=nfs root=/dev/nfs nfsroot=172.16.6.237:/nfsroot,soft,vers=3,clientaddr=172.16.6.238 ip=dhcp rw nfsrootdebug
}
If I am giving proto=tcp then the error number will become -110 (time out)
If I removed proto=tcp the error number becomes -101 (Network unreachable)