在ubuntu下安装、配置nfs服务的步骤如下:
1、安装nfs
Ubuntu 上默认是没有安装nfs服务器的,因此我们首先安装nfs服务器端:
$sudo apt-get install nfs-kernel-server
在一些文档中,提出还需要使用apt-get来手动安装nfs的客户端nfs-common,以及端口映射器portmap,但其实这是没有必要的,因为在安装nfs-kernel-server时, apt会自动为我们把它们安装好。
2、配置/etc/exports
nfs 允许挂载的目录及权限在文件/etc/exports中进行了定义。
例如,我们要将根目录下的rootfs目录共享出来,那么我们需要在/etc/exports文件末尾添加如下一行:/rootfs*(rw,sync,no_root_squash)
其中:/rootfs是要共享的目录,*代表允许所有的网络段访问,rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squash是nfs客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限。
其它nfs常用的参数有:
ro只读访问
rw读写访问sync所有数据在请求时写入共享
asyncnfs在写入数据前可以响应请求
securenfs通过1024以下的安全TCP/IP端口发送
insecurenfs通过1024以上的端口发送
wdelay如果多个用户要写入nfs目录,则归组写入(默认)
no_wdelay如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。
hide在nfs共享目录中不共享其子目录
no_hide共享nfs目录的子目录
subtree_check如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
no_subtree_check和上面相对,不检查父目录权限
all_squash共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash保留共享文件的UID和GID(默认)
root_squashroot用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squasroot用户具有根目录的完全管理访问权限
anonuid=xxx指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx指定nfs服务器/etc/passwd文件中匿名用户的GID
3、重启服务
sudo /etc/init.d/nfs-kernel-server restart
sudo /etc/init.d/portmap restart
4、在本机上测试
showmount -e
mount 172.20.149.190:/home/jgyang/nfsroot /mnt
ls -l /mnt
注:可以通过一个符号链接来export NFS目录,但在/etc/exports下所添加的挂载点应为真正的目录。比如建一符号链接
ln -s /home/pub/work/freerunner/out/target/product/freerunner /home/jgyang/nfsroot
这样在开发板上设置的内核命令行中设置的NFS目录就可是:/home/jgyang/nfsroot,但在/etc/exports文件中export 出的目录应当是实
际的NFS所在的目录,即/home/pub/work/freerunner/out/target/product /freerunner。
这样有两个好处,一是可以省去开发板中启动参数命令过长的麻烦;二是在重新编译android之后可以直接使用生成的NFS,而不必再重新拷
贝一份。
三.NFS 客户端配置
* 使用 mount 命令来挂载其他机器共享的 NFS 目录。可以在终端提示符后输入以下类似的命令:
sudo mount example.hostname.com:/ubuntu /local/ubuntu
挂 载点 /local/ubuntu 目录必须已经存在。而且在 /local/ubuntu 目录中没有文件或子目录。另一个挂载其他机器的 NFS 共享的方式就
是在 /etc/fstab 文件中添加一行。该行必须指明 NFS服务器的主机名、服务器输出的目录名以及挂载 NFS 共享的本机目录。 以下是
在 /etc/fstab 中的常用语法: