在嵌入式Linux开发中,利用NFS服务从开发板访问Linux主机是个高效&方便的调试方法,在程序调试过程中可以避免多次下载程序到开发板。但这需要在Linux主机上首先开通NFS服务。
以ubuntu 12.04LTS为例,首先安装NFS服务
sudo apt-get install nfs-kernel-server
编辑NFS配置文件: vi /etc/exports
增加一行描述供NFS访问的的目录,格式如:
/myself/nfs *(rw,sync,no_root_squash)
(/myself/nfs是我系统里的目录,请根据情况修改)
其中"*"表示所有客户机都可以访问(只要能通过网络访问到你)
rw当然表示有读写权限(不要担心,客户机只对/home/vincent有写权限)
no_root_squash表示客户机对此目录有root操作权限
配置完毕,可以重启NFS服务
sudo /etc/init.d/portmap restart //nfs is a RPC service, portmap maps its port
sudo /etc/init.d/rpcbind restart
sudo /etc/init.d/nfs-kernel-server restart
查看NFS目录可以使用 ”showmount -e“ 命令,显示全部可以挂载的目录。
查看nfs服务的当前状态可以使用“sudo /etc/init.d/nfs-kernel-server status”命令,显示nfsd running时表示运行正常,显示nfsd not running时表示运行不正常。也可以使用"ps -e |grep nfs"查看进程中nfs服务是否启动,如果未启动,重启Ubuntu系统再次启动nfs服务器。
测试NFS服务是否开启成功
在本机localhost(127.0.0.1)上挂载nfs目录到/mnt,(挂载未在/etc/exports里面添加的目录是无效的)
sudo mount -t nfs localhost:/home/vincent /mnt
可以看到/mnt下已经有/home/vincent的内容了 ,卸载使用 umount /mnt命令即可。
从开发板上挂载NFS目录(假设主机IP为192.168.80.5)
mount -t nfs -o nolock 192.168.80.5:/myself/nfs /mnt
-o nolock是去除文件锁,否则会报错
这样就可以在开发板的/mnt直接访问主机的/myself/nfs了,把要在开发板上运行的程序放到/myself/nfs下,然后在开发板上从/mnt里执行,简单而又方便。