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)

uboot使用nfs出现*** ERROR: Cannot mount

重启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出现*** ERROR: Cannot mount

然后再在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)修改如图:

uboot使用nfs出现*** ERROR: Cannot mount

(3)保存退出。

(4)重启NFS服务器。sudo service nfs-kernel-server restart

解决后重新输入命令下载成功如图:

uboot使用nfs出现*** ERROR: Cannot mount

终于成功了,感觉好不容易啊,学习linux每一步都需要花大量的时间。