配置网络文件系统服务NFS
在嵌入式Linux下进行应用程序的开发与在Windows下进行应用程序的开发方式有很大不同。在Windows环境下,可以直接在PC上使用各种集成开发工具,进行程序的编辑、编译和运行,但是在嵌入式Linux环境下,缺少简单、高效的开发工具,程序的开发需要在PC机和嵌入式Linux平台上共同完成。因此在程序的调试运行过程中,需要在PC机和嵌入式开发板之间交换信息,这通常是使用FTP(文件传输协议)的方式实现这种信息交换。即先在PC机上编辑源程序文件,再用交叉编译工具生成可执行文件,然后通过FTP下载到嵌入式目标版系统中运行,如果有错误则再回到PC机上重新编辑、编译,再下载到目标板上运行,直到程序正确运行为止。但是FTP方式缺点是每次在PC机上编译完成后都要使用FTP下载到目标板中,这样程序的开发效率比较低,没法进行在线调试。在此次的便携式卫星通信地球站监控系统的程序开发过程中,采用NFS(网络文件系统)方式下的应用程序开发,这种方式使PC机和嵌入式目标板之间信息交换的效率更高。
NFS(Network File System)方式可以将远程主机上的目录通过网络连接到本地主机,用户可以很方便地在本地主机上操作远程主机上的共享目录。因此,可以通过建立网络文件系统,把PC机上的特定目录共享到嵌入式开发板系统上,这样就可以直接在PC机上对嵌入式开发板进行操作,就能够实时、在线地对程序进行编辑、编译和运行等调试,这极大地提高了嵌入式Linux下的应用程序的开发效率。嵌入式Linux开发平台下的NFS开发环境配置,包括PC机的NFS配置和嵌入式开发板系统的NFS配置。
1.配置PC机的NFS
以超级用户(root)方式进入PC机上的fedora7 Linux操作系统,编辑PC机和嵌入式目标板之间的共享目录的配置文件exports,设定共享目录和权限,操作命令如下:
[root@localhost /]#cd /etc;
[root@localhostetc]#vim /etc/exports ;
在exports文件中添加“/nfs *(rw,sync,no_root_squash)”后保存,“*”表示所有与PC机进行网络连接的客户机(这里指嵌入式目标板)都可以共享PC机中的“/nfs”目录,“rw”表示共享此目录的客户机对这个目录拥有读写的权利,“no_root_squash”表示共享这个目录的客户机享有该主机的 root 身份。其作用是是将PC机的/nfs设置为共享目录,则与此PC机相连的嵌入式目标板可以用读写方式访问共享目录/nfs。在Fedora7 Linux操作系统中默认开启了防火墙,这会导致 NFS服务无法正常使用,所以先要关闭防火墙,可以用“lokkit”命令打开防火期设置界面,然后在其中选择“禁用”,然后点击“确定”后退出设置界面。接着启动NFS服务,操作命令如下:
[root@localhostetc]#/etc/init.d/nfsstart ;
然后检查Linux服务器的iptables、ipchains等选项和文件/etc/hosts.deny、/etc/hosts.allow来确保没有屏蔽NFS使用的端口和允许通信的主机。配置完毕后,为了验证共享目录能否被访问,可以在PC机上进行NFS服务器的环回测试,操作命令如下:
[root@localhostetc]# mount–t nfs localhost:/nfs /mnt
若配置成功,能够在/mnt目录中看到/nfs共享目录中的内容。
2. 配置便携式卫星通信地球站监控系统控制板板的NFS
首先要使运行在嵌入式目标板系统的Linux内核支持PC机上的NFS,这需要把NFS(网络文件系统)编译进目标板的Linux内核。操作命令如下:
[root@localhost/]#cd /home/arm/ linux-2.6.19;
[root@localhostlinux-2.6.19]#make menuconfig ; //启动内核配置菜单界面
选择内核配置菜单中的“Fils System--->”选项,按回车键后选择下级菜单中的“Network File System--->”选项,按回车键后选中菜单中的“NFS system support”和“Provide NFSv3 client support”两项,保存退出。然后分别运行以下操作命令:
[root@localhost linux-2.6.19]#make clean;//此命令清除以前生成的后缀“.o”和“.ko”的文件
[root@localhostlinux-2.6.19]#make dep;//建立内核文件之间的依赖关系
[root@localhostlinux-2.6.19]#make zImage;//编译一个压缩的内核启动映像
这会在arch/arm/boot中生成一个内核映像文件zImage;然后将Linux内核文件zImage下载到嵌入式目标板系统的SDRAM,并烧写到Flash中,在嵌入式开发板系统的下,这里实际上是在PC机的超级终端上运行如下命令:
[root@localhost/]#mkdir /nfs ; //建立PC机上Linux输出共享目录的挂载点,
[root@localhost/]#mount –o nolock –t nfs localhost: /nfs /nfs; //此命令使PC机上的Linux的输出目录“/nfs”,通过NFS映射到了嵌入式目标板系统的目录“/nfs”。