使用 UBoot 从 NFS 服务器启动
Posted
技术标签:
【中文标题】使用 UBoot 从 NFS 服务器启动【英文标题】:Boot from NFS server with UBoot 【发布时间】:2019-09-19 08:05:15 【问题描述】:我的 NFS 服务器有问题。我基本上必须从 NFS 启动嵌入式处理器。 在 ubuntu 机器上,我只是将文件系统放在 /tftpboot 中, 在 /etc/exports 中添加了这一行:
/tftpboot *(rw,no_root_squash,no_all_squash,sync)
然后我执行了命令:
sudo /usr/sbin/exportfs -av
sudo /etc/init.d/nfs-server restart
但在嵌入式处理器上我收到此错误:
Looking up port of RPC 100003/2 on 192.168.2.11
Looking up port of RPC 100005/1 on 192.168.2.11
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
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
尤其是线条
Looking up port of RPC 100003/2 on 192.168.2.11
Looking up port of RPC 100005/1 on 192.168.2.11
让我觉得问题出在 NFS 服务器的配置上,谁能帮帮我?
【问题讨论】:
【参考方案1】:我今天在 SUSE Leap 上安装旧的嵌入式设备和 NFS 服务器时遇到了完全相同的问题。 我嗅探了与 Wireshark 的通信,它让我知道出了什么问题。 在我的情况下,问题与 "iptable filter" 和 "NFS 服务器版本"有关:
-
配置iptables在NFS服务器端打开NFS相关端口
我的设备只支持第 2 版 NFS,并且 SUSE NFS 服务器默认配置为支持 v3 和 v4。
解决1: 你可以查看帖子 Iptables Rules for NFS Server and NFS Client
sudo iptables -A INPUT -s 172.17.200.26/16 -d 172.17.200.26/16 -p udp -m multiport --dports 10053,111,2049,32769,875,892,20048,950 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -s 172.17.200.26/16 -d 172.17.200.26/16 -p tcp -m multiport --dports 10053,111,2049,32803,875,892,20048,950 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -s 172.17.200.26/16 -d 172.17.200.26/16 -p udp -m multiport --sports 10053,111,2049,32769,875,892,20048,950 -m state --state ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -s 172.17.200.26/16 -d 172.17.200.26/16 -p tcp -m multiport --sports 10053,111,2049,32803,875,892,20048,950 -m state --state ESTABLISHED -j ACCEPT
解决2可以检查: https://documentation.suse.com/sles/15-SP1/html/SLES-all/cha-nfs.html#sec-nfs-configuring-nfs-server
通过修改 /etc/sysconfig/nfs 在服务器上启用 NFS 版本 2:
NFSD_OPTIONS="-V2"
MOUNTD_OPTIONS="-V2
我希望它可以帮助某人,我在这个问题上浪费了几个小时
我添加了由于wireshark捕获发现的问题2的截图:
【讨论】:
以上是关于使用 UBoot 从 NFS 服务器启动的主要内容,如果未能解决你的问题,请参考以下文章
Linux系统移植—使用nfs或者ftp给开发板下载linux镜像