关于挂载NFS文件系统的问题都遇到过,别笑话。烧个Linux系统,一键烧写和USB烧写共不下十来次!:L (我也是小小菜鸟一个)
昨天晚上终于挂载成功,就把我是怎样挂载成功的以及一些问题的解决和注意事项和大家分享。希望对那些没有挂载成功的人有所帮助。
首先挂载前,请仔细检查以下硬件设备是否都连接好:
1、电源线插上
2、串口线连接好开发板COM0和PC机
3、USB电缆连接开发板和PC机
4、网线插上!
其中最容易忽略的就是网线没有插上,导致像这样的问题一直没有解决
rpcbind: server x.x.x.x not responding, timed out
Root-NFS: Unable to get mountd port number from server, using default
Root-NFS: Server returned error -5 while mounting /home/glorin/sharetmp/filesys
针对这种问题,有两个地方要注意,除了上面的网线没有插上外,另外的就是主机IP(我的是虚拟机中的Ubuntu的IP)和开发板的IP不在同一
个网段内。
解决方法1.改主机IP;2.改开发板IP
那么怎么才知道开发板IP?呵呵,我是菜鸟,开始没有弄清楚,所以就以为是在设置uboo启动参数(就是setenv bootargs .....)的时候就
是能够设置开发板IP和主机IP在同一个网段,其实错了!
正确的查看你开发板上的IP地址是在设置uboot启动参数后利用printenv,在显示你的设置uboot参数之前,前面几行会有显示
ipaddress=x.x.x.x
serverip=x.x.x.x
......
这其中的ipaddress才是你开发板上真正的ip地址,即便你在setenv中改了,也是没有改过来!你会发现这两个ip是在同一个网段的。
好,这就是你要设置的两个ip。既然如此,那就更改ip吧。(已经改好的不用改)
更改主机IP方法:
$ sudo vim etc/network/interfaces
然后设置:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.20(参考,请写刚才与ipaddress同一网段内,或者干脆写serverip中的IP)
netmask 255.255.255.0
gateway 192.168.1.1(参考,这个应该知道该怎么设置吧)
修改后重启网络配置:
sudo /etc/init.d/networking restart
完了保证设置完全正确,对于使用ubuntu系统的人,请修改/etc/NetworkManager/nm-system-settings.conf
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
将managed=ture改为false。
然后执行sudo /etc/init.d/network-manager restart,重新配置一下。(对于DNS,设置的话:sudo /etc/resolv.conf即可)
至此主机IP地址设置完成。
或者你不想修改主机IP,说我还想上网的。这个关系也不大,成功挂载及烧写文件系统成功后再改回去就是了。
好吧,那就改开发板上的IP,这个你的先能够进入开发板环境
2修改开发板IP,使其与主机(虚拟机中的Ubuntu)在同一个网段内。
进入开发板环境,也就是能够使用开发板上的linux命令。
进入到/etc/init.d/目录下会看到一个rcS文件,IP就是在这个文件修改的。
# vim /etc/init.d/rcS
加上一段:
/sbin/ifconfig eth0 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.1 up
:wq 保存退出
注:以上地址仅供参考,请根据各自情况设置。
好了,那么就开始挂载NFS。
1.设置共享目录
例如大家采用/home/localhost/arm6410/root作为NFS共享目
$ sudo mkdir arm6410
$ cd arm6410
$ sudo mkdir root
$ chmod 777 arm6410
$ chmod 777 root
注:共享目录和飞凌的不一样,我想很多人也许出问题就在这里。这就涉及到工作目录和系统根目录的问题了。记住的就是大家打开终端,然
后创建的目录是在/home/XXX。你可以在根文件系统的home下看到XXX。
2.设置IP
上面已经讲过怎么设置,请参考。
3.配置NFS服务并启动
安装NFS
在虚拟机上新建一个终端,依次输入以下命令:
sudo apt-get install portmap
sudo apt-get install nfs-kernel-server
sudo gedit /etc/exports
在弹出的文本编辑器中编辑exports文件,在最后一行添加:
/home/localhost/arm6410/root *(rw,sync,no_root_squash)
启动NFS服务
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-kernel-server restart
为了测试主机上NFS服务是否启动,先假设已经设置好主机的IP地址为:192.168.1.20
sudo mount -t nfs 192.168.1.20:/home/localhost/arm6410/root /mnt
然后用命令:ls /mnt查看挂载内容(或者看能否在mnt目录下看到arm6410/root目录)
成功后卸载sudo umount /mnt
4.在开发板上设置并保存启动参数
在u-boot命令行下输入以下命令设置u-boot启动参数:
setenv bootargs "root=/dev/nfs nfsroot=192.168.0.20:/home/localhost/arm6410/root ip=192.168.1.10:192.168.1.20:192.168.1.1:255.255.255.0:arm6410:eth0:off console=ttySAC0,115200"
saveenv
重新启动开发板,Linux内核启动后会自动挂载NFS文件系统。同样注意的就是共享目录。
以上步骤成功后,后面烧写yaffs2文件按照手册上即可。