在嵌入式 Linux 开发的时候,常常需要使用Ubuntu nfs服务器以方便程序的调试.使用 nfs,用户可以将板子要用到的根文件系统放在主机目录下,开发板则通过以太网挂载到这个目录并将这个目录下的文件作为根文件系统的内容,这样用户的程序更新后不比重新烧写板子的根文件系统便能被重新使用,这点能够大大加快程序的调试.Ubuntu 下安装 nfs 服务器的步骤如下:
1 进行 NFS 服务器端与客户端的安装:
sudo apt-get install nfs-kernel-server nfs-common portmap
安装客户端的作用是可以在本机进行Ubuntu nfs服务器的测试.
2.配置挂载目录和权限
emacs /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)
#
# 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)
#
/home/gexueyuan/mini2440/rootfs *(rw,sync,no_root_squash)
/home/gexueyuan/mini2440/rootfs 表示允许其他计算机访问的目录
' * '星号表示允许任何ip访问,此处位置可以设置允许访问该目录的客户端ip地址,例如,192.168.1.*就表示允许192.168.1.X的ip来进行访问
rw:表示可读可写
sync:同步写磁盘(async:资料会暂存于内存当中,而不是直接写入硬盘)
no_root_squash:表示客户端root用户对该目录具有写权限
(可选
3. 更新 exports 文件
只要你更改了/etc/exports, 你不可以通过 sudo exportfs -r 来更新 这个文件
)
4 重启NFS服务
sudo /etc/init.d/nfs-kernel-server start / stop 启动命令/停止命令
sudo /etc/init.d/nfs-kernel-server restart 重启 nfs 服务
启动结果:
[sudo] password for gexueyuan:
* Stopping NFS kernel daemon [ OK ]
* Unexporting directories for NFS kernel daemon... [ OK ]
* Exporting directories for NFS kernel daemon... exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/home/gexueyuan/mini2440/rootfs".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
[ OK ]
* Starting NFS kernel daemon [ OK ]
5 进行测试
尝试一下挂载本地磁盘(我的 linux 系统 IP 为 192.168.1.230,将 /home/gexueyuan/mini2440/rootfs 挂载到/mnt/nfs)
以下是代码片段:
$ sudo mount (-t nfs) 192.168.1.230:/home/gexueyuan/mini2440/rootfs /mnt/nfs
运行结果:
运行 $ df 看看结果
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 40207968 17311896 20853656 46% /
none 248580 208 248372 1% /dev
none 254196 324 253872 1% /dev/shm
none 254196 368 253828 1% /var/run
none 254196 0 254196 0% /var/lock
/dev/sda1 112039 61774 44480 59% /boot
192.168.1.230:/home/gexueyuan/mini2440/rootfs
40208000 17311872 20853696 46% /mnt
$ sudo umount /mnt