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

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

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

  

网络文件系统(NFSNetwork File System

i(@4ZL7XV)A0

是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。

;W6tCMG&o\b0

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

DN!{^]!x+m cXb0

嵌入式Linux NFS 开发环境的实现包括两个方面:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台{M0~9k*g-_5r

一是Linux 服务器端的NFS 服务器支持;

0y}(Q8Ol2j0

二是嵌入式目标系统的NFS 客户端的支持。因此,NFS 开发环境的建立需要配置linux 服务器端和嵌入式目标系统端。

3RT Vm,B#M0

一、Linux 服务器端NFS 服务器的配置

'g-a4q"V3D0

root 身份登陆Linux 服务器,编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台py\@ cw

执行如下命令编辑文件/etc/exports龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台7t E)l!qa\ LI

# vi /etc/exports龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台B#lf[N^z+Hk

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

qJPx-U(h Q0

/home/work 192.168.0.*rw,sync,no_root_squash龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台GH3V6HiA;K

然后保存退出。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;h9|&Zq4Q

添加的内容表示:允许ip 地址范围在192.168.0.*的计算机以读写的权限来访问/home/work 目录。

G%hL+@ N8kY0

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

o th4HCGHA/\8\0

括号内的参数意义描述如下:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台u8^b-_q8Tf@#S#AZ

rw:读/写权限,只读权限的参数为ro龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台e8aOa [ W

sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 `R j0V i'~u.@f

no_root_squashNFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。

pSwe(cjZ0

接着执行如下命令,启动端口映射:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 ef|o0gw;P0r

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

"] c,PL$p!{;[0

最后执行如下命令启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'}$kr1dEj(b)sh8I

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

v!W4v/_!g(ckT*R9\0

用户也可以重新启动Linux 服务器,自动启动NFS 服务。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台SY_;Q&`x/x&A

NFS 服务器启动后,还需要检查Linux 服务器的防火墙等设置(一般需要关闭防火墙服务),确保没有屏蔽掉NFS 使用的端口和允许通信的主机,主要是检查Linux 服务器iptablesipchains 等选项的设置,以及/etc/hosts.deny/etc/hosts.allow 文件。

#Ex Qf7Z6MVo L0

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

9iZ8V;LBR8W0

# mount –t nfs 192.168.0.20:/home/work /mnt

0pi*gK!@] nq0

# ls /mnt龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台t\2T i)M!yh,o

命令将Linux 服务器的NFS 输出共享目录挂载到/mnt 目录下,因此,如果NFS 正常工作,应该能够在/mnt 目录看到/home/work 共享目录中的内容。

+x4aM\x$Z0

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

4?"i'zk"x;_0

Linux 服务器设置好后,还需要对客户端进行相关配置。在配置内核时选择Load an Alternate Configuration File输入配置文件的路径和文件名添加内核对NFS的支持:

4n6X)N+KP$p'\0

选中networking options-》IP:kernel level auloconfiguralion龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台EJ3c&P8bP"y s_

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

0]~+b#b.c.rx)L:|0

nfs file system support重新编译内核下载bootloaderkernel到开发板上龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'l9m'c0N{f*uJ

在嵌入式目标系统的Linux Shell 下,执行如下命令来进行NFS 共享目录挂载:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 t/x_,SI(z

# mkdir /mnt/nfs //建立Linux 服务器输出共享目录的挂载点;龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 k y'CQ2\3laUB9O

# mount –t nfs 192.168.0.20:/home/work /mnt/nfs –o nolock龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台&@R!}2H:u?o

# cd /mnt/nfs

D8K6_1c4K0

# ls

0r$Gwn'ts'\0

此时,嵌入式目标系统端所显示的内容即为Linux 服务器的输出目录的内容,即Linux 服务器的输出目。

7t6X\3f}p2A"oZ%z\0

/home/work 通过NFS 映射到了嵌入式目标系统的/mnt/nfs 目录。用户可以用增//修改文件的方式来验证实际效果。mount 命令中的192.168.0.20 Linux 服务器的IP 地址,/home/work Linux 服务器端所配置的共享输出目录,/mnt/nfs 为嵌入式设备上的本地目录。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台:\ {!ig#S6fJ[

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

8_5lw \/`9A0

host启动nfs龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台y%KSq(xy8sj0B4a
snfs
9}b2wL,p$u{0 #!/bin/bash
#M u,V5K6vT7b3I0 ifconfig eth0 192.168.0.20
L)U`^ en,j-u,E[A0 /etc/rc.d/init.d/portmap start龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台~\y)^&] e
/etc/rc.d/init.d/nfs start龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台7Hs}1M6wH2g4KF8^ `
嵌入式目标机挂载nfs
3F@o_} em0K @0 mnfs

4jK;ww/~7K}:q4m2M0

#!/bin/sh
v!l.C^\!a}8D0 mount -t nfs 192.168.0.20:/home/work/nfs /mnt/nfs -o nolock龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台z I6EN&G CbU_
echo “nfs ok
龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Yzq tzR

核心提示:
/AY0VIGQ0 nfs
服务是基于 rpc 来实现的一个方便的共享文件系统, linux windows 之间共享的文件非常的便利。 linux nfs 已经被完全整合进了内核,只要在编译内核的时候选择编译文件系统,那么默认就支持 nfs nfs龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台9rb*D ~.USJ~ m

nfs 服务是基于 rpc 来实现的一个方便的共享文件系统, linux windows 之间共享的文件非常的便利。 linux nfs 已经被完全整合进了内核,只要在编译内核的时候选择编译文件系统,那么默认就支持 nfs龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台G2ss TI4F
nfs
主服务进程使用的端口是 2049 udp 2049 tcp 其他进程端口都是半随机的基于 portmap 建议在 /etc/sysconfig/nf 将随机端口定义成静态端口,使端口不混乱,并且利于配置 iptables 防火墙策略 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台A Q7Q#~3K1P|
nfs
装置包是 nfs-utils 基于 uid 识别用户,配置文件 /etc/export /etc/sysconfig/nf 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台DWo;e9Cv.q ^
nfs
多进程的 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台q;B!yq z0Qr
nfsd
主服务进程 工作于内核中的只能以 root 用户来运行
Q @6\"H {0V;?}0 1 rpc.mountd
基于 rpc 实现的挂载监控的进程 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台l%cvC+B-Z
2 rpc.srard
用户建立的连接若是断掉,负责通知服务器重新建立 4 连接 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台p*p4e5| x1ie:U
3 lockd
处置客户端请求文件锁,防止多用户同时对一个文件写入造成的抵触 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台&X'm3EM#|H
4 rpc.rquotad RPC
辅助进程,默认监察随机端口
-})Y;mBAX;Z7F3m]0 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;P_zf2apW
若是想让系统在启动时自动挂载 NFS 服务器上的输出目录,就编辑 /etc/fstab 加入如下格式
8@ Ie!T4ap&w4] O0 NFS
服务器名或 IP 地址:输出目录 外地挂载目录 nf default 0 0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台:dBOCPE
实现 nfs 服务 只需要编译 /etc/export , 该文件默认为空的每一行表示你共享的一个文件系统
#`3t+O y%XgF6E0
添加格式:
9u^ ? Y|B_ vG[f;@0
共享文件目录 允许访问的主机(访问权限) 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台4Bq#b4I0Yar7u
注:被导出的目录为独立的文件系统,若不是则在权限中定义 subtrww_check 使更安全,如果共享文件中有空格用括起来, 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 ] Q5EO?E'u9A2R)@&x
定义允许访问的主机可以是 IP 网段, IP NIS 域( @NIS 域名)并且可以通配)
o#Qz!X0y.X M0
下面介绍几种常用的访问权限 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台q t``7{%~_
ro
可读
@/b t |DG\0 rw
可读可写
r)g$mN:UyX9sW0 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