在学习阶段,对开发板的NFS挂载也费了不少的心思,分析原因之一为对当前网络和开发板型号不同的理解不够深刻,原因之二是照搬网上各种实现NFS挂载的成功案例,而不结合自身的要求,导致在一个简单的NFS挂载上浪费了很多的时间,现将根据自己的环境,成功挂载6410到ubuntu的方法记录下来。
一、环境和开发板
(1)本开发环境为10.3.135.*的网段,是代理服务上网的,其实这并不影响我们的开发及NFS的挂载。
(2)本次NFS挂载的ARM板为飞凌TE6410。
(3)宿主机(即我用的ubuntu系统)的IP地址为10. 3.135.241,网段网关为10.3.135.2,子网掩码为255.255.255.0,这些都是我们所需要的,而对于开发板的IP地址,我并没有作任何要求(原因后面步骤里会提到),只是要保证链接开发板的网线可以获取的地址是和宿主机在同一个网段里面的,即在同一个网关下。
二、NFS挂载步骤
(1)对于6410开发板,制作好一键烧写的SD开,将光盘\TE6410官方基础资料-2G\Linux-2.6.36\demo\下的两个文件(即zImage和u-boot)拷贝至开发板,并不需要拷贝飞凌提供的cramfs文件系统或yaffs2文件系统;
(2)将SD卡插入开发板,拨码开关拨至11111000,设置SD卡启动,烧写u-boot和zImage到开发板,后关电源,拨码开关拨至10011000,设置为nandflash启动;
注:以上两步做完之后,将开发板放置一边,等待配置宿主机NFS服务器。
(3 )配置NFS服务器(即为网上到处可以找到的方法)
①在虚拟机上新建一个终端,依次输入以下命令:
sudo apt-get install nfs-kernel-server
安装nfs,根据网络不同,安装所需的时间也不同。
②在Linux主机上建一个NFS共享文件夹
如:在/home/username/下建立一个名为nfs_share文件夹,右键属性菜单中选择“共享”(共享时可能会弹出对话框,选择安装即可)
然后勾选第2项“允许其他人来创建和删除这个文件夹里的文件”。第3项根据需要选择。
③修改NFS配置文件,在终端输入如下命令:
sudo gedit /etc/exports
在弹出的文本编辑器中编辑exports文件,在最后一行添加:
/home/usrname/nfs_share *(rw,sync,no_root_squash)
④重启NFS服务器,命令如下:
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-kernel-server restart
⑤ 测试挂载
如宿主机IP为10.3.135.241,则在终端输入命令:
sudo mount -t nfs 10.3.135.241:/home/usrname/nfs_share /mnt
然后用命令:ls /mnt查看挂载内容
成功后卸载:sudo umount /mnt
(4)解压yaffs2(或cramfs)文件系统到挂载目录(这一步较为关键)
针对6410开发板,选择解压yaffs2文件系统(在飞凌光盘\TE6410官方基础资料-2G\Linux-2.6.36\filesystem\目录下找到),将其解压到挂载共享目录/home/usrname/nfs_share/下。
(5)设置6410启动参数
在u-boot命令行下输入以下命令设置u-boot启动参数:
setenv bootargs "root=/dev/nfs nfsroot=10.3.135.241:/home/usrname/nfs_share ip=10.3.135.240:10.3.135.241:10.3.135.2:255.255.255.0:arm6410:eth0:off console=ttySAC0,115200"
注意:上面参数设置时,必须一行输入完成,中间没有回车符。
设置完成后保存,输入命令:
saveenv
其中:
10.3.135.241是NFS服务器主机(即宿主机)的IP
10.3.135.240是开发板IP(开发板的IP是在这里通过启动参数设置的,保证其IP地址与网关内其他电脑不冲突)
10.3.135.2是网关IP地址
通过如上步骤设置,开发板可以自动挂载宿主机中的文件系统,在宿主机上对共享目录中文件的操作如同对开发板中的文件操作。