Atmel Sama5d2 上的 NFS 启动失败 xplained

Atmel Sama5d2 上的 NFS 启动失败 xplained

我目前正在尝试从 NFS 服务器启动 Atmel Sama5d2 Xplained 评估板。我运行的是 Debian 9,内核版本为 4.9.0,nfs 服务器是 nfs-kernel-server。

这是 NFS 服务器配置

/srv/tftp/xplained/rootfs *(rw,nohide,no_subtree_check,async,no_root_squash)

我的 NFS 服务器成功导出我的文件夹,因为我可以通过网络将它们安装到另一个 Linux 上。

我还可以从我的 tftp 服务器检索内核映像和 dtb 文件。

但是当内核启动时,它无法从导出的 rootfs 启动并返回以下错误

VFS: Unable to mount root fs via NFS, trying floppy. 
List of all partitions: 
0100            8192 ram0  (driver?) 
0101            8192 ram1  (driver?) 
0102            8192 ram2  (driver?) 
0103            8192 ram3  (driver?) 
b300         3833856 mmcblk0  driver: mmcblk   
  b301          112172 mmcblk0p1 00000000-01   
  b302         3721550 mmcblk0p2 00000000-02 
b318             128 mmcblk0rpmb  (driver?) 
b310 1024 mmcblk0boot1  (driver?) 
b308            1024 mmcblk0boot0  (driver?) 
No filesystem could mount root, tried:  nfs

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

这是我的内核参数

ip=dhcp console=ttyS0,115200 earlyprintk root=/dev/nfs rootfstype=nfs rw nfsroot=<server_ip>:/srv/tftp/xplained/rootfs

以及有关 nfs-moutd 服务的 dmesg

oct. 09 18:10:13 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:788 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs)
oct. 09 18:10:18 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:704 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs)
oct. 09 18:10:28 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:796 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs)
oct. 09 18:10:48 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:762 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs)

我尝试了在互联网上找到的许多东西,例如检查防火墙规则、锁定端口等......但它仍然不起作用。最奇怪的是,我在 Ubuntu 机器上尝试使用相同的数据包,结果成功了。
我还尝试了全新的 Debian 安装,它也有效。

我想了解为什么它不能在我的开发计算机上运行。可能如何修复它

答案1

我在运行 Manjaro Linux(基于 arch)时遇到了同样的问题。在 ubuntu 14.04 上它可以工作,但在 manjaro 上不行。进行wireshark捕获后,问题就暴露出来了。 nfs 服务器响应“接受状态:远程无法支持版本 # (2)”。我在 nfs 服务器上的 /etc/nfs.conf 中启用了版本 2,如下所示:

[nfsd]
# debug=0
# threads=8
# host=
# port=0
# grace-time=90
# lease-time=90
# udp=y
# tcp=y
vers2=y
vers3=y
vers4=y
vers4.0=y
vers4.1=y
vers4.2=y
# rdma=n
#

这对我有用。

答案2

感谢@alanSchmitz,经过一番调查,我终于找到了问题所在。

显然我必须通过在内核启动参数上指定 NFS v3 来强制在 uboot 中使用 NFS v3,如下所示root=/dev/nfs rootfstype=nfs rw nfsroot=<server_ip>:/srv/tftp/xplained/rootfs,vers=3

我尝试在服务器端修复此问题,但找不到如何强制使用 NFS v3。

如果我发现如何在服务器端强制使用 NFS v3 来安装共享,我将更新我的答案。

相关内容