在制作根文件系统,在U-boot阶段通过nfs挂载文件系统后出现了该问题,这个问题网上已经有很多解答,但是没有一个是我需要的。我出错的现象如下:
在此期间我尝试了很多种方法都没有得到解决,并且我在nfs服务器端查看Log发现有nfs mount迹象,这就很奇怪了,我通过抓包软件抓nfs的交互字段发现:
Accept State: remote can't support version # (2)
Program Version (Minimum): 3
Program Version (Maximum): 4
我内核支持nfs版本2,3,4,默认使用2。但是我的nfs服务版本是3,查询结果如下:
那么在uboot启动参数应该指定Nfs挂载版本,指定选项如下:
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
nfs-options加vers=3
有些版本内核可能需要指定为nfsvers=3 这个需要看源代码
查看nfs共享了那些目录:/var/lib/nfs/etab
查询有多少nfs客户端链接情况:/var/lib/nfs/rmtab
每次客户端mount过NFS而又没有正常umount后,在/var/lib/nfs/rmtab里会留下记录
这里补充一个问题,nfs服务器新版本可能有一个bug,开始我以为是这个bug导致我nfs连接不上,其实不是。Bug如下:
当 systemctp status nfs-service.service 状态时出现nfs-server.service active but exited? 这个问题目前没有找到真正的答案,但是有讨论,交流地址如下:
https://www.linuxquestions.org/questions/linux-newbie-8/nfs-server-service-active-but-exited-948965/
反正老外也是瞎jiba扯 。