开发板使用的是forlinux的,上位机使用的ubuntu12.04的虚拟机。借鉴了几个大大的博客经验,很快就调通了。
1.首先在ubuntu12.04安装软件
$sudo apt-get install nfs-kernel-servernfs-common portmap
2.配置portmap
$sudo vim/etc/default/portmap
3.创建NFS工作目录
$sudomkdir /nfsroot
$sudochmod 777 nfsroot //更改权限
4.
$sudo vi /etc/exports
添加如下内容:
/nfsroot *(rw,sync,no_root_squash)
解释:/nfsroot 是共享目录,*(rw,sync,no_root_squash)中,*表示所有客户机都可以挂载
rw 表示挂接此目录的客户机对该目录有读和写的权限
sync 数据同步,同时写入内存与磁盘
no_root_squash 表示服务器共享目录用户的属性,如果用户是root,那么对于这个共享目录来说就是具有root的权限。
5. 更新exports
$sudo exports -r
6.重启NFS服务
$ sudo /etc/init.d/nfs-kernel-server restart
7.在PC机器测试
$ sudo mount 192.168.1.111:/nfsboot /mnt 192.168.1.111为NFS服务器IP地址
此时可以查看/mnt目录下内容即为NFS服务器上的内容
卸载
$sudo umount /mnt
如果成功就进行下一步。
8. 设置ip等信息
首先选vmware的vm-->settings-->NetworkAdapter选择为Bridge(桥接)方式。
然后运行你的开发板,进入系统后在secureCRT中敲入命令:ifconfig会显示如下类似的信息:
eth0 Link encap:Ethernet HWaddr08:90:90:90:90:90
inet addr:192.168.0.232 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:91 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10679 (10.4 KiB) TXbytes:0 (0.0 B)
Interrupt:108 Base address:0xc000
其中inetaddr是你的开发板的ip地址,Bcast是默认网关,Mask是子网掩码。根据这些信息设置pc机的ip
$vim /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.200
netmask 255.255.255.0
gateway 192.168.0.255
其中子网掩码(netmask)和默认网关(gateway)要与上面开发板中严格保持一致,ip地址只需要保持在同一个网段即可。
接着重启pc机中linux的网络配置,在pc机的终端中输入如下指令:sudo/etc/init.d/networking restart。可以输入ifconfig检查一下是否设置正确。
最再重启一下pc机的nfs,在终端中输入:sudo /etc/init.d/nfs-kernel-server restart 。到此,pc机上的设置就基本完成了,接下来在开发板上就可以挂载了。
在开发板上挂载nfs:
给开发板接上网线后,
mount -o nolock 192.168.0.200:/nfsroot /mnt
其中192.168.0.111是你在pc机上设置的那个ip地址;/nfsroot是你在配置pc机linux的nfs服务器的时候设置的共享目录;/mnt是你开发板上linux中的目录。-o的意思是mount命令带有参数,后面的nolock就是所带的参数。
对于嵌入式开发,个人觉得还是nfs方便一些,板子默认的用SD卡进行程序文件拷贝的办法,太笨,太麻烦。最后吐槽一下,其实forlinux的板子材料还是偏少一些。
最后这篇文章参考了qingyu2431和沧海猎人的博客,谢谢。