在嵌入式 Linux 开发中,需要在 Linux 主机上为开发板编写程序代码,然后编译程序为可执行程序。再把可执行程序传输到开发板上才能调试或运行。那么如何更快、更便捷地传输文件,将影响 到开发工作的效率。NFS 无疑是最好的选择。通过 NFS 服务,主机将用户指定的目录通过 网络共享给目标机(和 windows 的文件网络共享类似)。目标机可以直接运行存放于 Linux 主机共享目录下的程序。这样调试程序时十分方便。
NFS 即网络文件系统(Network File-System),可以通过网络让不同机器、不同系统之间可以实现文件共享。通过 NFS,可以访问远程共享目录,就像访问本地磁盘一样。NFS 只是一种文件系统,本身并没有传输功能,是基于 RPC(远程过程调用)协议实现的,采 用 C/S 架构。
安装NFS软件包
在终端输入下面命令安装 NFS 服务器:
$ sudo apt-get install nfs-kernel-server nfs-common
添加NFS共享目录
安装完 NFS 服务器等相关软件后,需要指定用于共享的 NFS 目录,其方法是在 “/etc/exports”文件里面设置对应的目录及相应的访问权限,每一行对应一个设置。下面介 绍如何添加 NFS 共享目录。
在终端输入“sudo vi /etc/exports”指令,如下所示:
$ sudo vi /etc/exports [sudo] password for i2somdev:
打开“/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,no_subtree_check) hostname2(ro,sync,no_subtree_check) /srv/nfshare 192.168.0.0/255.255.0.0(rw,sync,no_subtree_check,root_squash) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) #
修改完成后,执行":wq"保存并退出“/etc/exports”文件。然后新建“/srv/nfshare”目录,并为该目录 设置最宽松的权限:
$ sudo mkdir /srv/nfshare $ sudo chmod -R 777 /srv/nfshare
然后启动PC上的NFS服务
$ sudo service nfs-kernel-server start
开发板挂载NFS目录
在开发板上就可以挂载PC的NFS目录:
# mount -t nfs -o nolock 192.168.1.100:/srv/nfshare /mnt
常见问题
Q.挂载时提示"Permission denied"错误
A:检查PC和开发板网络是否连通。检查PC上NFS服务的/etc/export文件中的目录是否正确,IP地址配置是否正确。