近来在Linux下进行PXA270板子上的嵌入式 开发,需要使用到Linux一些服务配置,比如NFS和TFTP,开始不熟悉的话会遇到很多麻烦,所以写一点文章,希望有同样经历的网友不会再走一些弯路。
我的Linux系统是MagicLinux,是国人开发的Linux系统,中文支持好,使用的是bsh。大体上跟RedHat系列的Linux系统差不多。
下面介绍NFS的安装与配置:
1.以root的身份在控制台输入setup,在系统服务选项中选中
- nfs
- portmap 服务选项portmap服务对NFS 是必须的,因为它是NFS 的动态端口分配守护进程,如果portmap不启动,NFS就启动不了的。如果Linux上系统服务上没有这个配置选项,可以到网上搜索一些相关的软件包。
2.编辑 /etc/exports 文件
exports文件是NFS的共享目录配置文件,主要是指定共享目录和共享策略。使用vi命令编辑,在文件中加入类似下面的内容:
/ *(rw,sync) # ‘/’ 和 ‘*’ 之间要有一个空格
/home 10.13.9.19(rw,sync) *(ro,sync)
第一条规则 / 表示整个根目录进行共享,* 表示对于所有用户共享,rw 可读写,sync 文件同步
第一条规则 /home 表示共享目录,当然你还可以类似的添加其他目录进行共享。后面的内容表示对ip为10.13.9.19的主机赋予读写权限,其他机器 * 仅有读写权限。
还有其他一些设置方法,如:
/ bluefish(rw,no_root_squash) #对主机名为bluefish 的用户共享
/share 172.29.0.0/255.255.0.0(ro)
/share/private (noaccess)
选项说明:
ro read only
rw read write
no_root_squash 信任客户端,对应 UID
noaccess 客户端不能使用
3.然后在控制台分别执行以下两条命令
[root]# service portmap restart
[root]# service nfs restart
如果看到一连串的[ok]时,表示已经启动成功了。如果第一次启动,nfs ,又使用restart命令,可能开始会出现一些[FAILED],那是在停止nfs服务,而nfs服务还没有启动所以会FAILED。
当然你还可以使用其它命令来启动或关闭nfs服务:
start 启动 NFS 服务
stop 停止 NFS 服务
restart 停止并重新启动 NFS 服务
reload 重新载入 NFS 设定值
4.测试NFS服务
要测试NFS是否真正配置的成功,只要进行以下测试:
[root]# mout -t nfs 10.13.9.19:/{cwd} /mnt #{cwd}是NFS共享的目录,/mnt 是挂载到本地的服务
如果你在/mnt 下可以看到NFS共享目录的内容,表示你NFS设置成功了。使用#umount /mnt 取消挂载。
5.另外还可以使用一些命令查看NFS的各种状态:
showmount -e 可看有分享哪些目录
# showmount -a 可看出所有的 mount
检查NFS的运行级别:
# chkconfig --list portmap
# chkconfig --list nfs
根据需要设置在相应的运行级别自动启动NFS:
# chkconfig --level 235 portmap on
# chkconfig --level 235 nfs on linux nfs 配置示例
关键字: linux nfs 配置示例
7.2.2 配置/etc/exports文件
用户可以把需要共享的文件系统直接编辑到/etc/exports文件中,这样当NFS服务器重新启动时系统就会自动读取/etc/exports文件,从而告诉内核要输出的文件系统和相关的存取权限。在下面的例子中显示了/etc/exports文件中几个条目项的内容,被挂载在/pub目录下的文件系统具有只读访问权限,所有的计算机在访问文件系统的时候不必经过安全检查。编辑/etc/exports文件:
# vi /etc/exports /usr/sys/src -maproot=daemon host2 /usr/ports -ro -network 192.168.1.0
从上面这个例子中可以看出exports文件的格式,首先是定义要共享的文件目录。必须使用绝对路径,而不能使用符号链接。然后设置对这个目录进行访问限制的参数,用于保证安全性。在第1行设置中,将/usr/sys/src目录共享出去。但限制客户机上的root用户等价于本机上的daemon用户,以避免客户机上的root用户拥有这个服务器上的root权限进行非法操作。此后的host2参数是主机名,从而限制只有host2才能共享这个/usr/sys/src目录;第2行设置共享/usr/ports目录,但限制为只允许读取,并且也只有网络上的192.168.1.0计算机才能访问这个共享目录。
(1)rw:可读写权限。
(2)ro:只读权限。
(3)no_root_squash:当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使用者,通常它的UID与GID都会变成nobody身份。
(4)root_squash;如果登录NFS主机使用共享目录的使用者是root,那么对于这个共享的目录来说,它具有root的权限。
(5)all_squash:忽略登录NFS使用者的身份,其身份都会被转换为匿名使用者,通常即nobody。
(6)anonuid:通常为nobody,也可以自行设定这个UID的值,UID必须存在于/etc/passwd中。
(7)anongid:同anonuid,但是变为Group ID。
(8)sync:同步写入资料到内存与硬盘中。
(9)async:资料会先暂存于内存中,而非直接写入硬盘。
主机可以使用以下格式。
(1)单个机器:一个全限定域名(能够被服务器解析)、主机名(能够被服务器解析)或IP地址。
(2)使用通配符来指定的机器系列,使用 * 或 ?字符来指定一个字符串匹配。IP地址中不使用通配符。如果反向DNS查询失败,它们可能会碰巧有用。在完整域名中指定通配符时,点(.)不包括在通配符中。例如,*.example.com包括one.example.com,但不包括one.two.example.com.。
(3)IP网络:使用a.b.c.d/z,a.b.c.d是网络,z是子网掩码中的位数(如192.168.0.0/24)。另一种可以接受的格式是a.b.c.d/netmask,a.b.c.d是网络,netmask是子网掩码(如192.168.70.8/255.255.255.0)。