本专题主要分为两大步,一步是在linux中进行设置,另一步则是在tq2440上进行设置。
在所有设置之前,首先要保证开发板和PC机能够ping得通。
建立Ubuntu nfs服务器
在嵌入式 linux 开发的时候,常常需要使用Ubuntu nfs服务器以方便程序的调试.使用 nfs,用户可以将板子要用到的根文件系统放在主机目录下,开发板则通过以太网挂载到这个目录并将这个目录下的文件作为根文件系统的内容,这样用户的程序更新后不比重新烧写板子的根文件系统便能被重新使用,这点能够大大加快程序的调试.Ubuntu 下安装 nfs 服务器的步骤如下:
1 进行 NFS 服务器端与客户端的安装:
sudo apt-get install nfs-kernel-server nfs-common portmap
安装客户端的作用是可以在本机进行Ubuntu nfs服务器的测试.
2 配置portmap
sudo dpkg-reconfigure portmap运行后选择"否"
另外很重要的一点,要用 sysv-rc-conf (而不是 chkconfig)工具查看一下当前 nfs 和 portmap的状态,若是 off,则用 sudo sysv-rc-conf portmap on 或 sudo sysv-rc-conf nfs-kernel-server on打开
3 配置挂载目录和权限
vim /etc/exports
我的配置如下:
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync) hostname2(ro,sync)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt)
# /srv/nfs4/homes gss/krb5i(rw,sync)
#
/home/ankwyq/share *(rw,sync,)
解释一下:
#后面的都是解释
share 是Ubuntu nfs服务器的共享目录,*表示任何 IP 都可以共享这个目录,你可以改为受限的 IP,rw表示的是权限,sync 是默认的.
4 重启NFS服务
/etc/init.d/portmap start
/etc/init.d/nfs-kernel-server restart 重启 nfs 服务
5 进行测试
尝试一下挂载本地磁盘(我的 linux 系统 IP 为 192.168.1.8,将/home/ankwyq/share 挂载到/mnt)
$ sudo mount -t nfs 192.168.1.8:/home/ankwyq/share /mnt -o nolock
可以在root_nfs下的文件夹内建立文件,看看/mnt里有没有相应的变化
卸载
$ sudo umount /mnt
这样nfs服务就算搭建完成了
第三步:修改文件系统
首先将定制好的yaffs文件系统放到share目录下;修改 文件系统中的"etc/init.d/rcS"文件(可以在嵌入式上启动系统后改,也可在制作文件系统镜像的时候改),屏蔽掉 net_set & 这行,改为"#net_set &" 即可在uboot中设置关于nfs的参数。然后在终端执行下面的代码
cd /home/ankwyq/share/dev
mknod console c 5 1
mknod null c 1 3
文件系统的修改到此完成。
启动nfs,/etc/init.d/nfs-kernel-server restart
接下来就是在tq2440端进行设置
下载uboot和linux以及yaffs到tq2440开发板上,修改nfs的设置,pc机的ip为192.168.1.8。
然后用yaffs启动系统,在文件系统端执行代码:mount -t nfs 192.168.1.8:/home/ankwyq/share /mnt -o nolock
查看文件系统上的/mnt文件夹会看到,该文件夹和share是一样的。nfs开发环境建立完成。