经过几个小时的阅读和尝试和错误过程后,我想解释一下我的 nfs 安装问题和解决方案。
我在虚拟领域工作了多年Debian 8.5主机系统为多种嵌入式设备开发软件,基于imx,或者raspi、beagle board等。
在开发过程中,从主机通过 nfs 安装嵌入式根分区非常有用。配置通常很简单。
主机配置
# /etc/exports
/opt/tftpboot/rootfs *(rw,sync,insecure,no_subtree_check,no_root_squash)
- 建议使用特定的 ip,而不是通配符
- 还删除了生产环境中不安全的选项
客户端配置
如果内核支持网络文件系统,则可以很容易地从嵌入式/或远程系统配置根文件系统的安装。
# example part of the kernel command line
root=/dev/nfs nfsroot=10.0.102.247:/opt/tftpboot/rootfs,nolock
顺便说一句,随着新版本的nfs 内核服务器,交付与Debian 10.2或者9.x无法挂载根文件系统。启动过程卡住,主机设备上没有错误日志,远程系统上没有错误日志。
从外壳测试
我尝试从闪存启动远程系统并从 busybox shell 挂载远程文件夹,但失败了。
$ mount -t nfs 10.0.102.247:/opt/tftpboot/rootfs /mnt/nfs
no route to host
Ping 工作正常;-) 主机端的防火墙也配置良好。在排除任何其他问题(例如网络问题)后,我已将 mount 命令更改为使用 NFS V4,mount 命令的工作方式与预期一致。
mount -t nfs -o nfsvers=4 10.0.102.247:/opt/tftpboot/rootfs /mnt/nfs
答案1
解决方案
现在我们需要切换回在内核命令行中挂载根文件系统并传递 NFS V4。
# working example part of the kernel command line
root=/dev/nfs nfsroot=10.0.102.247:/opt/tftpboot/rootfs,v4,tcp