像我儿子一样永远保持好奇和梦想

【转】How to configure NFS on Linux (2) 中文

上一篇 / 下一篇  2012-08-30 17:03:54 / 个人分类:linux

  

网络文件系统(NFSNetwork File System

WPi#u[QJ.}0

是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台L^QFX

在嵌入式Linux 的开发过程中,开发者需要在Linux 服务器上进行所有的软件开发,交叉编译后,通用FTP 方式将可执行文件下载到嵌入式系统运行,但这种方式不但效率低下,且无法实现在线的调试。因此,可以通过建立NFS,把Linux 服务器上的特定分区共享到待调试的嵌入式目标系统上,就可以直接在嵌入式目标系统上操作Linux 服务器,同时可以在线对程序进行调试和修改,大大的方便了软件的开发。因此,NFS 的是嵌入式Linux 开发的一个重要的组成部分,本部分内容将详细说明如何配置嵌入式Linux NFS 开发环境。

SA;?N\/r._0

嵌入式Linux NFS 开发环境的实现包括两个方面:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台kJ4N&^Q;h!CT/u

一是Linux 服务器端的NFS 服务器支持;ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台k X] o$LJ;b

二是嵌入式目标系统的NFS 客户端的支持。因此,NFS 开发环境的建立需要配置linux 服务器端和嵌入式目标系统端。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台xM3n-AobP


一、Linux 服务器端NFS 服务器的配置ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台)co%n!G/BTV

root 身份登陆Linux 服务器,编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台$p b,?A'| ?

执行如下命令编辑文件/etc/exports

;YM!s t p-^2Z0

# vi /etc/exportsET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台hsE,Q:@Sc

在该文件里添加如下内容:

V8jPX4br#F0

/home/work 192.168.0.*rw,sync,no_root_squashET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台_5V"W5_'R6I-|0Q

然后保存退出。

osS;}:DWM-|0

添加的内容表示:允许ip 地址范围在192.168.0.*的计算机以读写的权限来访问/home/work 目录。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台yIiD5wV;g

/home/work 也称为服务器输出共享目录。

.b uh-Y9u0

括号内的参数意义描述如下:

A2zI(L,vJTG0

rw:读/写权限,只读权限的参数为ro

fm B3[9CJ(R0

sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台2u0g:DD6^T,j|S4t

no_root_squashNFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台)CT;b~P`NO?/Vo)f

接着执行如下命令,启动端口映射:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台:|Q$}2Xc\?A

# /etc/rc.d/init.d/portmap startET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台4Fv%f'|5JJ

最后执行如下命令启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求:

V u8ImHq)Z0

# /etc/rc.d/init.d/nfs start

U]+[~ v,h/z0

用户也可以重新启动Linux 服务器,自动启动NFS 服务。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台OPv&R];AzW_

NFS 服务器启动后,还需要检查Linux 服务器的防火墙等设置(一般需要关闭防火墙服务),确保没有屏蔽掉NFS 使用的端口和允许通信的主机,主要是检查Linux 服务器iptablesipchains 等选项的设置,以及/etc/hosts.deny/etc/hosts.allow 文件。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台7B8` k:LR b[ w0S

我们首先在Linux 服务器上进行NFS 服务器的回环测试,验证共享目录是否能够被访问。在Linux 服务器上运行如下命令:

3QpN_1p4V V-P4E0

# mount –t nfs 192.168.0.20:/home/work /mntET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 \,D&cLgj/x6Y2b;s p

# ls /mnt

#QC)U9@cAv0

命令将Linux 服务器的NFS 输出共享目录挂载到/mnt 目录下,因此,如果NFS 正常工作,应该能够在/mnt 目录看到/home/work 共享目录中的内容。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台&tQ u/?|


二、嵌入式目标系统NFS 客户端的配置

x5Y0Fk8@(x1U,]0

Linux 服务器设置好后,还需要对客户端进行相关配置。在配置内核时选择Load an Alternate Configuration File输入配置文件的路径和文件名添加内核对NFS的支持:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台4{Y.M3]I

选中networking options-》IP:kernel level auloconfiguralion

#a$msv(l+b0j)S0

选中file systems-》network file systems-》下的root file system on nfs

B!a3w:josZr0

nfs file system support重新编译内核下载bootloaderkernel到开发板上ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台XX;ce)w C%N\

在嵌入式目标系统的Linux Shell 下,执行如下命令来进行NFS 共享目录挂载:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台4Ht.{UE$[ T

# mkdir /mnt/nfs //建立Linux 服务器输出共享目录的挂载点;

#at&Dt%J5_})g}0

# mount –t nfs 192.168.0.20:/home/work /mnt/nfs –o nolockET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台@'^ i iI F

# cd /mnt/nfsET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'E1EF:R0G R

# ls

e!];w.x,`V N"Y(yT0

此时,嵌入式目标系统端所显示的内容即为Linux 服务器的输出目录的内容,即Linux 服务器的输出目。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台)dy ]{ fc

/home/work 通过NFS 映射到了嵌入式目标系统的/mnt/nfs 目录。用户可以用增//修改文件的方式来验证实际效果。mount 命令中的192.168.0.20 Linux 服务器的IP 地址,/home/work Linux 服务器端所配置的共享输出目录,/mnt/nfs 为嵌入式设备上的本地目录。

,EH;EM3B%|0rtB@]0

在开发过程中,来回输入命令非常烦人,我写了两个简单的脚本来完成nfs的启动,挂载。

K h:p9Sy2v @ F0

host启动nfsET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 Ry^l$qJ
snfsET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台i/PA)pmn{S2?
#!/bin/bash
3}:goz$G&~0Y0 ifconfig eth0 192.168.0.20ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台E5g.]&d T-l'J4t})A8{
/etc/rc.d/init.d/portmap startET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 |v ULP f*Ps
/etc/rc.d/init.d/nfs start
3VG$es.U P-P0
嵌入式目标机挂载nfsET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台8zsn*{/Aq
mnfs
ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台s3Mx@1zO

#!/bin/shET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 p;f _K Qqi;V`
mount -t nfs 192.168.0.20:/home/work/nfs /mnt/nfs -o nolock
sIv$@;U&e Kl e.C0 echo “nfs ok
ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台H}#j C%f,a1b7G!eAx _

核心提示:
X ad R9Lj-DK(q!?0 nfs
服务是基于 rpc 来实现的一个方便的共享文件系统, linux windows 之间共享的文件非常的便利。 linux nfs 已经被完全整合进了内核,只要在编译内核的时候选择编译文件系统,那么默认就支持 nfs nfsET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台)A"zy;C8S)z2d

nfs 服务是基于 rpc 来实现的一个方便的共享文件系统, linux windows 之间共享的文件非常的便利。 linux nfs 已经被完全整合进了内核,只要在编译内核的时候选择编译文件系统,那么默认就支持 nfsET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台(h-q;vG*oy9BH
nfs
主服务进程使用的端口是 2049 udp 2049 tcp 其他进程端口都是半随机的基于 portmap 建议在 /etc/sysconfig/nf 将随机端口定义成静态端口,使端口不混乱,并且利于配置 iptables 防火墙策略 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 _A8|}s6q]J
nfs
装置包是 nfs-utils 基于 uid 识别用户,配置文件 /etc/export /etc/sysconfig/nf ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Xyo&[ny
nfs
多进程的 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台8H+H:Zt#G
nfsd
主服务进程 工作于内核中的只能以 root 用户来运行 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台6QM lN I!B Bn
1 rpc.mountd
基于 rpc 实现的挂载监控的进程 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台was1g+N5T/I4G
2 rpc.srard
用户建立的连接若是断掉,负责通知服务器重新建立 4 连接
K mil4YM0 3 lockd
处置客户端请求文件锁,防止多用户同时对一个文件写入造成的抵触 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台eAS-Ar5]$f2D
4 rpc.rquotad RPC
辅助进程,默认监察随机端口 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台`Ppz~
ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Q0v)y^M)A ][
若是想让系统在启动时自动挂载 NFS 服务器上的输出目录,就编辑 /etc/fstab 加入如下格式 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Fo*O9kz;~3D{`%I
NFS
服务器名或 IP 地址:输出目录 外地挂载目录 nf default 0 0
{0g3`X6|({0
实现 nfs 服务 只需要编译 /etc/export , 该文件默认为空的每一行表示你共享的一个文件系统
n:GDx$Zy0
添加格式: ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 ?:E/S{ M-CNT4l
共享文件目录 允许访问的主机(访问权限) ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台1CLhI3z+V$u N
注:被导出的目录为独立的文件系统,若不是则在权限中定义 subtrww_check 使更安全,如果共享文件中有空格用括起来, ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台iW_)A9x8_{s%X
定义允许访问的主机可以是 IP 网段, IP NIS 域( @NIS 域名)并且可以通配)
(J8BsY;he \0
下面介绍几种常用的访问权限
6G(M"Q(QV$}VF0 ro
可读 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台yJ3c.R^0F N'wJ@1_
rw
可读可写
0]6IZqfl;e[.K0 async
异步写入

TAG: linux Linux LINUX nfs NFS 设置 应用 中文

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar