uboot使用nfs出现*** ERROR: Cannot mount
想在ZYNQ上运行openwrt,之前移植(适配)了uboot,然后试了好几个版本的openwrt,嗯。。有点坎坷。
后来最终编译成功后,简单烧进去试了下要么输出ipv6错误要么移植重复uboot,就试了试之前uboot的网络是否ok,结果nfs又搞了好长时间。
uboot可以ping我的Ubuntu和PC,只是显示host XX.XX.XX.XX is alive,心里没谱,Ubuntu ping 开发版ping不通,后来才知道
主机和bai虚拟机能相互ping通是因du为主机与虚拟机都开启了对zhi应的进程(或线程,不清楚dao)等待ping命令的到来1653,而在uboot命令输入状态下,当使用ping命令时,实际上是uboot先根据你输入的IP地址发送一个ICMP回送请求和回答报文到对应主机,然后再等待一段时间,如果在这段时间后主机没有响应,则显示ping不通,主机如果在这段时间内发送了回答报文则能ping通。可以通过追踪程序的调用来查看该过程。
你使用主机或虚拟机ping开发板时,开发板正处于main_loop循环中(等待用户输入命令),根本没有对应的程序或中断(uboot中一般不使用中断)来检测主机的ping命令,当然ping不通。
后来安装正点原子的教程设置Ubuntu的nfs,但是出现*** ERROR: Cannot mount
折腾好久,搜索好多案例,然后结合自己的实际情况,将这个事情捋一捋:
sudo apt-get install nfs-kernel-server 安装nfs
sudo vi /etc/exports 修改nfs配置文件,将nfs运行挂载的目录在exports中定义
以后在后面添加如下所示内容: /home/kennan/linux/nfs *(rw,sync,no_root_squash)
重启NFS服务,使用如下命令: sudo service nfs-kernel-server restart
此时可以运行以下命令来显示共享的目录:
showmount -e
在nfs运行的过程中,修改了/etc/exports配置文件,可以使用exportfs命令使改动生效,具体命令:
sudo exportfs -rv
上述方法试了之后还是不行的,又继续搜到如下方案,
在host文件中将开发板的IP地址增加进去,
host文件在/etc/hosts中
sudo vi /etc/hosts
打开后加入 10.0.0.5 /home/kennan/linux/nfs/
然后再在uboot中使用nfs下载zImage文件,还是显示了错误,不过这次多了一行:
[email protected] **********************
感受到了进步,后来又由于某些原因,发现我在Ubuntu中实际新建的文件夹是/home/kennan/kennan/linux/nfs/
多出来一层kennan,应该是Ubuntu还用不习惯,删掉了一层kennan使得与nfs配置一致。
嗯,还是不行,然后又搜到一个信息,可能是uboot中使用得NFS版本为V2版本,而ubuntu中的NFS版本为V3,V4及以上版本,从而导致uboot不能再NFS服务器中找到文件
解决办法为:让buntu中得NFS兼容V2。修改/etc/default/nfs-kernel-server 文件。
操作方法如下:
(1)打开文件:sudo vim /etc/default/nfs-kernel-server (注意一定要sudo或者root权限)
(2)修改如图:
(3)保存退出。
(4)重启NFS服务器。sudo service nfs-kernel-server restart
解决后重新输入命令下载成功如图:
终于成功了,感觉好不容易啊,学习linux每一步都需要花大量的时间。