Ubuntu下nfs服务器的搭建
nfs的全称是Network File-System,可以通过它实现不同机器不同系统之间的文件共享。目前我正在用SmartArm3250,现在编好程序后,是通过nfs把可执行文件传输到开发板中,让其在开发板里运行的。
现在以这个模式来说明nfs的建立,主机是安装有Ubuntu10.04的PC机,目标板是安装有裁剪后的Linux的SmartArm3250。安装nfs服务是在主机上进行配置,在目标板上进行操作使用的。具体的步骤如下:
一、在主机上安装必要的软件,使用命令:1、sudo apt-get install
nfs-kernel-server 2、sudo apt-get install portmap。
二、在主机上配置配置文件。安装好上面的软件后,会在/etc下出现一个名叫exports 的文件(如果没有新建一个也可以),打开后可以看到如下内容:
1.# /etc/exports: the access control list for filesystems which may be exporte
d
2.#        to NFS clients.  See exports(5).
3.#
4.# Example for NFSv2 and NFSv3:
5.# /srv/homes      hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_
subtree_check)
6.#
7.# Example for NFSv4:
8.# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
9.# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
10.#
其实就是一些注释,提示你怎样配置nfs。因为nfs是一种网络共享,所以首先要确定你想把哪个文件夹共享出来,目前假设共享的文件目录为/home/wzy/Documents,建议不要把共享的文件夹选的太大,那样会严重影响共享传输的速度;还要确定主机的IP地址是多少,目前先假设IP为192.168.1.100。配置时
只需要在exports文件的末尾加上一句话:
1./home/wzy/Desktop  19
ubuntu网络配置2.168.1.*(rw,sync,no_root_squash)
下面解释一下,总共需要写三部分的东西,第一部分就是/home/wzy/Desktop,也就是待共享的目录。第二部分192.168.1.*是指在这个IP地址段内可以共享,第三部分就是括号里的内容,就是参数,也是配置的重点地方,下面重点说一下:
第一个参数: rw: 可擦写的权限;ro: 只读的权限。
第二个参数: sync: 资料同步写入到内存与硬盘当中;async: 资料会先暂存于内存当中,而非直接写入硬盘。
第三个参数: 1、no_root_squash: 登入NFS 主机使用分享目录的使用者,如果是root 的话,那么对于这个分享的目录来说,他就具有root的权限!这个项目极不安全,不建议使用!
2、root_squash: 在登入NFS 主机使用分享之目录的使用者如果是root时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的UID 与GID都会变成nobody那个身份。
3、all_squash: 不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody啦!
4、anonuid: 前面关于*_squash提到的匿名使用者的UID设定值,通常为nobody,但是你可以自行设定这个UID的值!当然,这个UID必需要存在于你的/etc/passwd当中!
5、anongid:同anonuid,但是变成group ID就是了。
三、启动nfs服务。
1、首先把上面修改过的配置文件重新导入:sudo exportfs –rv
2、重新启动portmap服务(端口映射):sudo /etc/init.d/portmap restart
3、重新启动nfs服务:sudo /etc/init.d/nfs-kernel-server restart
以上三步输入完毕,就配置好了nfs服务了,如果后面有需要要修改exports
文件,在修改之后,还是需要重新输入1步骤中的命令。
四、使用nfs。基本就是使用mount指令,让共享的文件夹挂载到一个指定目录下。在使用nfs服务之前,
还需要启动portmap服务,就是在你想要挂载东西的平台上,输入 portmap&,启动portmap服务。现在可以在本机上进行一下自测,在终端中输入: mount -t nfs 192.168.1.100:/home/wzy/Desktop /mnt 如果没有提示就说明挂在成功。如果想要与开发板进行nfs传输,则在开发板的Linux系统下的终端中输入: mount -t nfs 192.168.1.100:/home/wzy/Desktop /mnt -o nolock 完成挂载,进入/mnt目录会发现在PC机中/home/wzy/Desktop 中的东西显示出来了。
在使用mount的时候还可能会遇到一些问题,其中一个常见的错误提示是access denied by server while mounting,可能的原因就是在配置文件中设置的那个IP段范围设置错了或者设置小了,如果修改之后还没有好的话,那就直接使用一个“*”代替之前的那个整个IP号,虽然不是很安全,但是一定能解决办法。修改之后一定要记得重新导入配置文件。
通过以上的步骤就基本可以实现nfs服务了,可以通过这种方式方便快捷的把在PC编写好的开发板程序传输到开发板中运行了,这种方法是最快的实现路径了。