在嵌入式linux的开发过程中,我们需要在linux上搭建一些服务来进行更好的软件开发。在linux下交叉编译后,使用这些服务(FTP、NFS)将可执行文件下载到板子嵌入式系统中运行。通过FTP方式有些麻烦,影响效率,并且无法实现在线调试。因此建立NFS服务,实现linux服务器上的特定分区共享到嵌入式目标系统上,同时可以在线对程序进行调试和修改,提高了开发效率。
那么,如何配置NFS开发环境呢?首先,嵌入式linux的NFS开发环境的实现包括2个方面,一方面是:linux服务器端的NFS服务器端支持;二是嵌入式目标系统的NFS客户端支持。
首先配置linux服务器端的NFS服务器。
执行:sudo apt-get install nfs-kernel-server 下载并安装。
重启服务:sudo /eetc/init.d/nfs-kernel-server
配置:sudo vi /etc/exports (nfs允许挂载的目录及权限在文件/etc/exports中进行了定义)
添加:/source/rootfs *(rw, sync, no_root_squash)
- 其中,/source/rootfs 为要共享的目录, * 代表允许所有的网络段访问,rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squash是nfs客户端分享目录使用者的权限。例如:/home/zrh 192.168.1.* (rw, sync, no_root_squash) 则表示允许IP范围在192.168.1.*的计算机以读写的权限访问/home/zrh目录。
linux服务器端验证,关闭PC和虚拟机的防火墙。
执行:sudo mount -t NFS 192.168.1.223:/home/zrh /mnt
然后查看/mnt下能否看到/home/zrh目录中的内容。
其次,配置嵌入式目标系统NFS客户端配置。在配置内核的时候,需要添加一些选项。(支持NFS客户端的选上即可)
linux服务器端执行:sudo mkdir /mnt/nfs
sudo mount -t NFS -o nolock 192.168.1.223:/home/zrh /mnt/nfs
最后嵌入式目标系统上验证。我使用的是mini2440板子,首先连接好开发板的串口、网线、USB线,选择NOR FLASH启动,终端上输入'q’ 进入,执行:
supervivi>param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.131:/home/zrh ip=192.168.1.230:192.168.1.131:192.168.1.1:255.255.255.0:sbc2440.arm9.net:eth0:off"
回车。boot重启。此时目标板则通过NFS方式启动了系统,进入后可以操作。
TFTP服务:
1)安装tftp-hpa,tftpd-hpa, xinetd
sudo apt-get install tftp-hpa , tftpd-hpa, xinetd
2) 在/etc/xinetd.d/下创建并配置tftp文件
sudo vim /etc/xinetd.d/tftp
-c 用于开启上传功能。
3)配置tftpd-hpa
sudo vim /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure -l -c -s"
4)设置tftpboot文件夹的权限
sudo chmod a+wr /var/lib/tftpboot
5)重启xinetd服务
sudo /etc/init.d/xinetd restart