安装配置nfs服务器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Debian和Ubuntu Linux的NFS配置介绍 (2)
ubuntu9.04下nfs的设置使用 (6)
嵌入式linux的NFS开发环境的建立 (8)
Ubuntu9.10在ARM上建立NFS服务 (12)
在Ubuntu 9.10下怎么设置ip (14)
FreeBSD网络文件系统(NFS) (16)
NFS服务器 (16)
安装配置nfs服务器
/s/blog_5b1423a10100awm2.html
1 安装
root@ubuntu:/# apt-get install nfs-common nfs-kernel-server nfs-client
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
Reading state information... 完成
nfs-common 已经是最新的版本了。
nfs-kernel-server 已经是最新的版本了。
注意,我选了 nfs-common 而非 nfs-client
nfs-common 已经是最新的版本了。
共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件未被升级。
2 配置
root@ubuntu:~# nano /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) hostname2(ro,sync)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt)
# /srv/nfs4/homes gss/krb5i(rw,sync)
/home/cache/netboot 192.168.1.0/24(rw,no_root_squash,sync)
(注*上面这一行是服务器端提供的磁盘空间的位置,可以是服务器的仸一目录,建议将一个单独的磁盘分区挂在这个目录下。
但是请注意:这个服务器端的/home/cache/netboot并不是将来客户端的虚拟根目录,因为在/home/cache/netboot下面将会有一个名为root的子目录,而这个/home/cache/netboot/root才是本文中的客户端的虚拟根目录,在启动完成后、实际运行过程中,工作就仅局限在/home/cache/netboot/root中了。
建立root的问题下文将会讲到)
3 启动nfs或者重新加载
启动nfs
root@ubuntu:/# /etc/init.d/nfs-kernel-server start
* Exporting directories for NFS kernel daemon...
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.0/24:/home/cache/netboot".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
...done.
* Starting NFS kernel daemon
...done.
如果是修改了/etc/exports 配置文件,不需要重新启动nfs服务器,只需要刷新一下,命
令如下
root@ubuntu:/# exportfs -r
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.0/24:/home/cache/netboot".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
Debian和Ubuntu Linux的NFS配置介绍
/os/linux/200802/128786.html
NFS(Network File System,网络文件系统)可以通过网络将分享不同主机(不同的OS)
的目录——可以通过NFS挂载远程主机的目录,访问该目录就像访问本地目录一样!
一般而言,使用nfs能够方便地使各unix-like系统之间实现共享。
但如果需要在
unix-like和windows系统之间共享,就得使用samba了!
NFS运行在SUN的RPC(Remote Procedure Call,远程过程调用)基础上, RPC定义
了一种与系统无关的方法来实现进程间通信。
由此, NFS server也可以看作是RPC server.
正因为NFS是一个RPC服务程序,所以在使用它之前,先要映射好端口——通过portmap设定。
比如:某个NFS client发起NFS服务请求时,它需要先得到一个端口(port)。
所以它先通过portmap得到port number. (不仅NFS,所有的RPC服务程序启动之前,都需要设定好portmap)
在启动RPC服务(比如NFS)之前,需要启动portmap服务!(关于nfs和portmap是否存在于当前系统,看后面的"NFS安装"部分。
与NFS相关的几个文件,命令
1、/etc/exports
对NFS卷的访问是由exports来批准,它枚举了若干有权访问NFS服务器上文件系统的主机名。
bitscn_com
2、/sbin/exportfs
维护NFS的资源共享。
可以通过它重新设定 /etc/exports 的共享目录,卸载NFS Server共享的目录或者重新共享等。
3、/usr/sbin/showmount
用在 NFS Server 端,而 showmount 则主要用在 Client 端。
showmount 可以用來查看 NFS 共享的目录资源。
4、/var/lib/nfs/xtab
NFS的记录文档:通过它可以查看有哪些Client 连接到NFS主机的记录。
下面这几个并不直接负责NFS,实际上它们负责所有的RPC
5、/etc/default/portmap
实际上, portmap负责映射所有的RPC服务端口,它的内容非常非常之简单(后面详述)
6、/etc/hosts.deny
设定拒绝portmap服务的主机
7、/etc/hosts.allow
设定允许portmap服务的主机
安装NFS
Debian/Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
$ sudo apt-get install nfs-kernel-server
(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)
这样,宿主机就相当于NFS Server.
同样地,目标系统作为NFS的客户端,需要安装NFS客户端程序。
如果是Debian/Ubuntu 系统,则需要安装nfs-common.
$ sudo apt-get install nfs-commmon
nfs-common和nfs-kernel-server都依赖于portmap!
配置NFS
由于NFS是一个RPC server程序。
而portmap是用来挂你RPC的端口号映射的。
所以先要配置portmap.
配置portmap
方法1:编辑/etc/default/portmap,将 -i 127.0.0.1 去掉。
方法2:$ sudo dpkg-reconfigure portmap ,对Should portmap be bound to the loopback address?选N.
配置/etc/hosts.deny
(禁止仸何host(主机)能和你的NFS服务器进行NFS连接),加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
配置/etc/hosts.allow
允许那些你想要的主机和你的NFS服务器建立连接。
下列步骤将允许仸何IP地址以192.168.2开头的主机(连接到NFS服务器上),也可以指定特定的IP地址。
参看man页hosts_access(5), hosts_options(5)。
加入:
### NFS DAEMONS
portmap: 192.168.2.
lockd: 192.168.2. 网管网bitsCN_com
rquotad: 192.168.2.
mountd: 192.168.2.
statd: 192.168.2.
/etc/hosts.deny 和 /etc/hosts.allow 设置对portmap的访问。
采用这两个配置文件有点类似"mask"的意思。
现在/etc/hosts.deny中禁止所有用户对portmap的访问。
再在/etc/hosts.allow 中允许某些用户对portmap的访问。
运行$ sudo /etc/init.d/portmap restart 重启portmap daemon.
配置/etc/exports
NFS挂载目录及权限由/etc/exports文件定义
比如我要将将我的home目录中的/home/zp/share目录让192.168.2.*的IP共享,则在该文件末尾添加下列语句:
/home/zp/share 192.168.2.*(rw,sync,no_root_squash)
或者:/home/zp/share 192.168.2.0/24(rw,sync,no_root_squash)
192.168.2.* 网段内的NFS客户端能够共享NFS服务器/home/zp/share目录内容。
且有读,写权限,并且该用户进入/home/zp/share目录后的身份为root
最好加上sync,否则$ sudo exportfs -r 时会给出警告, sync是NFS的默认选项。
运行$ showmount -e 查看NFS server的export list.
网管网
若更改了/etc/exports,运行$ sudo exportfs -r 更新
运行$ sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务
/etc/exports实际上就是nfs服务器的核心配置文件了。
鸟哥的Linux私房菜列举了一些exports文件的写法。
测试NFS
可以尝试一下挂载本地磁盘(假设本地主机IP地址为:192.128.2.1,将
/home/zp/share挂载到/mnt)
$ sudo mount 192.168.2.1:/home/zp/share /mnt
运行$ df 看看结果
$ sudo umount /mnt
注意被拷贝文件的读/写权限!
另外,可以使用一定的参数:
使用加参数的办法:mount -o nolock,rsize=1024,wsize=1024,timeo=15
192.168.2.130:/tmp/ /tmp/
ubuntu9.04下nfs的设置使用
/User/begehau/Article/18822_1.htm
ARM9移植通常会用到网络来将bootloader和 linux的下载到开发板中去,在这当中通常会用到tftp或nfs, tftp的设置方法上篇文章已经介绍过了,这里将介绍下nfs的设置及测试方法。
1:sudo apt-get install nfs-kernel-server 下载安装nfs服务
2 : 配置/etc/exports (路径为你要共享的文件夹详细路径,自己替换)
sudo gedit /etc/exports
--------------------------------------------------
路径*(rw,sync,no_root_squash)
--------------------------------------------------
sudo exportfs -r 使刚配置的文件生效
3:修改portmap
sudo gedit /etc/default/portmap
将 -i 127.0.0.1 去掉
sudo gedit /etc/hosts.deny
加上以下内容:
--------------------------------------------------
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
--------------------------------------------------
sudo gedit /etc/hosts.allow
加上以下内容,ip地址自己相应修改:
--------------------------------------------------
### NFS DAEMONS
portmap:192.168.1.
lockd:192.168.1.
mountd:192.168.1.
rquotad:192.168.1.
statd:192.168.1.
--------------------------------------------------
4:修改要共享文件夹的属性
sudo chmod 777 路径+文件夹名
5:重启NFS服务
sudo
sudo /etc/init.d/nfs-kernel-server restart
sudo /etc/init.d/portmap restart
6:在本机上测试是否开始正常工作
sudo mount 192.168.1.*:路径 /mnt
ls -l /mnt
如果出现相应信息则证明挂载成功,否则如果出现0信息则是挂载失败
精准设计Fedora nfs中port
/c?m=9d78d513d98715ee4fece4690c65c0666805d33f608a96027fa5c e0ac4384c413626bee6613510758592383c50f85e5c9bac6233200351eadbdf883b9ae7cb7472cd7 b23716c914164c418df9b187********a98af0ee7cbf226d4ee8cdc851215884404099dedce1f450 3ca18b04976a5f1d95f15284cedab276588082b34ec6306ed16a7b72f6f0386fdd64b4cb470963e4 f&p=cb57df15d9c72dfc57eecd644a&user=baidu
学习Fedora时,你可能会遇到Fedora nfs问题,这里将介绍Fedora nfs问题的解决方法,在这里拿出来和大家分享一下。
vmware又装了一个fedora7,这次装的是gcome,界面超漂亮,但是连一把Fedora nfs居然找不到port.。
又回到kde的那个系统(同一个xp下,用同一个vmware打开),这样就成功了。
我赶紧snapshot了一下,保留下这个正确的状态,对比看看到底问题出在哪里。
正确状态:
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs
nfsroot=192.168.1.1:/yctek/root
ip=192.168.1.12:192.168.1.1:192.168.1.1:255.255.255.0::eth0:off" eth0是briaged
xp主机ip 192.168.1.13 但是从虚拟机里ping不通,从超级终端中ping 192.168.1.1通,但是1.13也不通,总之,ARM和Fedora nfs 是可以互相ping通的(两个Fedora nfs都能ping通,但是还是问题依旧)/etc/exports 中的内容:/yctek/root *(rw,
sync,no_root_squash) vmware在启动两个Fedora nfs时eth0都failed,但是能成功的还是能成功没什么影响我在两个Fedora nfs下试/etc/rc.d/init.d/portmap start 和serivce portmap start这两个命令,结果两个系统都不认,并且在setup里也只有nfs而无portmap 了,这和redhat是不一样的。
但是该成功的还成功,看来Fedora nfs里portmap已经默认了。
找了半天也没找出问题,我先去vpc下redhat中看一下吧,这边的问题是能找到portmap,但是console就是active 不了,这应该不是nfs的问题了。
先把/yctek/root换一次血试试。
我像在vmware下一样,用.iso把所需的root文件考过来,就在执行 tar jxvf recover_system_pack.tar.bz2时,出现了和在Fedora nfs下类似的时间戳警告,
执行一下,果然有影响:
IP-Config: Complete:
device=eth0, addr=192.168.1.12, mask=255.255.255.0, gw=192.168.1.1,
host=www, domain=, nis-domain=,
bootserver=192.168.1.1, rootserver=192.168.1.1, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.1
Looking up port of RPC 100005/1 on 192.168.1.1
Root-NFS: Server returned error -13 while mounting /yctek/root
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: test name =
VFS: fs_name =
VFS: fs_name =
VFS: fs_name =
VFS: fs_name =
VFS: tried fs_name = err= -2
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) Fedora nfs一波未平一波又起,先放放。
在原来那个root放回/yctek,报错信息是这样的:Freeing init memory: 176K
/etc/init.d/rcS: 20: /bin/hostname: Permission denied
Please press Enter to activate this console.
Bummer, could not run '/bin/sh': Permission denied
Please press Enter to activate this console.
看来问题还是出在/etc/init.d/rcS这个文件里,和我vmware里那个比比,结果是一模一样,看来问题不在这里。
我又在那个kde中,把.iso中的recover_system拷根目录,用tar jxvf 释放到yctek里,Fedora nfs也出现了时间戳警告,不过和red hat 中的警告很不一样,开超级终端试一下,居然active成功了。
不过我还是担心这个root有问题所以没有执行recover_system
嵌入式linux的NFS开发环境的建立
/bbs/thread-985579-1-1.html
在应用程序开发环节,NFS方式比ftp方式的执行效率要高,因为它不需要将linux server 端的程序下载到嵌入式目标系统就可以调试。
下面先将NFS建立的详细过程写一下,然后举一个简单的应用程序开发实例来比较ftp方式和nfs方式的不同。
1 建立NFS开发环境
嵌入式linux的NFS开发环境包含着两个方面:一是linux server端的NFS Server支持;二是target board的NFS Client支持。
1.1 linux server端
1.1.1 以root的身份登录,编译共享目录的配置文件exports,指定共享目录及其权限。
#vi /etc/exports
在该文件中添加:
/home/lqm(共享目录) 192.168.1.*(rw,sync,no_root_squash)
添加的内容表示允许IP范围在192.168.1.*的计算机以读写的权限来访问共享目录
/home/lqm。
【注:参数说明如下:
rw---读/写权限。
如果设定只读权限,则设为ro。
但是一般情况下,为了方便交互,要设置为rw。
sync--数据同步写入内存和硬盘。
no_root_squash--此参数用来要求服务器允许远程系统以它自己的root特权存取该目录。
就是说,如果用户是root,那么他就对这个共享
目录有root的权限。
很明显,该参数授予了target
board很大的权利。
安全性是首先要考虑的,可以采取一定的保护机制,在下面会讲一下保护机制。
如果使用默认的root_squash,target
board自己的根文件系统可能有很多无法写入,所以运行会受到极大的限制。
在安全性有所保障的前提下,推荐使用no_root_squash参数。
】
1.1.2 起用保护机制
可以通过设定/etc/hosts.deny和/etc/hosts.allow文件来限制网络服务的存取权限。
***/etc/hosts.deny***
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
***/etc/hosts.allow***
portmap:192.168.1.100
lockd:192.168.1.100
mountd:192.168.1.100
rquotad:192.168.1.100
statd:192.168.1.100
同时使用这两个文件就会使得只有ip为192.168.1.100的机器使用NFS服务。
你的target board的ip地址设定为192.168.1.100,这样就可以了。
1.1.3 启动
首先要启动portmapper(端口映射)服务,这是NFS本身需要的。
#/etc/init.d/portmap start
然后启动NFS Server。
此时NFS会激活守护进程,然后开始监听客户端的请求。
#/etc/init.d/nfs start
NFS Server启动后,还要检查一下linux server的iptables等,确定没有屏蔽NFS使用的端口和允许通信的主机。
可以首先在linux server上面进行NFS的回环测设。
修改/etc/hosts.allow,把ip改为linux server的ip地址,然后在linux server上执行命令:
#mount -t nfs :/home/lqm /mnt
#ls /mnt
如果NFS Server正常工作,应该在/mnt下面看到共享目录/home/lqm的内容。
1.2 target board端的client
1.2.1 嵌入式linux内核应该支持NFS客户端。
内核配置时,选择如下:
File system--> Network File Systems-->
选中NFS System support和Provide NFSvs client support,然后保存退出,重新编译内
核,将生成的zImage重新下载到target board。
1.2.2 在target board的linux shell下,执行下列命令来进行NFS共享目录的挂载。
#mkdir /mnt/nfs
#mount -o nolock -t nfs :/home/lqm /mnt/nfs
#ls /mnt/nfs
由于很多嵌入式设备的根文件系统中不带portmap,所以一般都使用-o
nolock参数,即不使用NFS文件锁,这样就可以避免使用portmap。
如果顺利,在/mnt/nfs 下,就可以看到linux
server的共享文件夹下的内容了,而且两个文件夹内的修改是同步的。
2 应用程序实例
编写一个简单的C程序test.c
-------------------------------------------
/*This is a test program.*/
int main(void)
{
int i;
for(i=0;i
printf("Hello World %d times.\n",i);
return 0;
}
-------------------------------------------
编译该程序:
#arm-linux-gcc -o test test.c
2.1 FTP方式
首先将test下载到target board。
启动target board的linux,在超级终端中执行:
#cd /var
#ftp
ftp>bin //以binary mode传输文件
ftp>get test
ftp>exit
然后修改文件属性:
#chmod +x test
#./test
这时可以查看结果了。
2.2 NFS方式
在target board端挂载linux server的共享输出目录,并且运行程序。
#mkdir /mnt/nfs
#mount -o nolock -t nfs :/home/lqm /mnt/nfs
#ls /mnt/nfs
这时应该可以显示linux server的共享目录的内容。
然后执行:
#./test
3 总结
这两种方式在应用程序不是特别复杂时区别不是很大,但是当开发程序比较复杂时,采用NFS方式显然效率要高得多。
完成应用程序得开发,调试好后就可以下载
到嵌入式目标板的flash文件系统,或者直接编译到嵌入式linux内核并且烧写到flash,
从而最终成为一个独立的嵌入式应用程序。
---------------------------------------
参考书目:《building embedded linux systems》
《嵌入式linux系统开发详解--基于EP93XX系列ARM》
这两本书在过程上都比较细致,很适合初学者学习。
在实践熟悉的基础上,提升理论高度,这是我所认可的学习方法。
ubuntu 9.10 和mirco2440建立nfs链接,使用其他开发板也可借鉴( 转载) /lastnightcode/blog/item/d342b2bd39b45f0019d81f38.html
首先现配置下ubuntu 9.10服务器
1.在ubuntu 9.10上安装nfs服务器
sudo apt-get install nfs-kernel-server
2.配置该服务器
sudo gedit /etc/exports
在打开的空的文件中,添加下面这句话
/opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)
/opt/FriendlyARM/mini2440/root_qtopia是ubuntu 9.10的共享目录
*(rw,sync,no_root_squash)中,*表示所有客户机都可以挂载上述共享目录,rw 表示挂接
此目录的客户机对该目录有读写的权力,no_root_squash 表示允许挂接此目录的客户机享
有该主机的 root 身份。
3.启动服务
sudo /etc/init.d/nfs-kernel-server start
4.安装串口调试软件minicom(命令行界面)或者cutecom(图形界面),通过软件源更新
sudo apt-get install minicom
sudo apt-get install cutecom
在ubuntu 9.10上的工作就完成了
下面是在开发板上要做的工作了
开发板的系统可以选择从nfs共享文件夹启动或者是从开发部内部的flash中启动。
这里选择从nfs共享文件夹启动。
1.从ubuntu 9.10 的命令行中输入cutecome,启动cutecome。
2.将micro2440开发板的左下角的开关打到nor,从nor启动。
3.在cutecome的输入端输入q,并回车。
4.进入了micro2440的Supervivi,在cutecom的输入端输入下面的命令行:
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs
nfsroot=192.168.1.101:/opt/FriendlyARM/mini2440/root_qtopia
ip=192.168.1.230:192.168.1.101:192.168.1.2:255.255.255.0::eth0:o ff"
其中 ,param set linux_cmd_line 是设置启动 linux 时的命令参数。
其各参数的含义如下: nfsroot 是自己开发主机的 IP 地址。
“ip=”后面:
第一项(192.168.1.230)是目标板的临时 IP(注意不要和局域网内其他 IP 冲突);
第二项(192.168.1.101)是开发主机的 IP;
第三项(192.168.1.2)是目标板上网关(GW)的设置;
第四项(255.255.255.0)是子网掩码;
第五项是开发主机的名字(一般无关紧要,可随便填写)
eth0 是网卡设备的名称。
5.输入boot 然后回车。
6.micro2440从ubuntu 9.10主机的/opt/FriendlyARM/mini2440/root_qtopia这里启动,这个是事先编译好的环境。
7.启动后,cutecom的输入端口等价于开发板的命令行。
另外,如果不想使用nfs共享目录的方法启动开发板的,而采用开发板自己的内部flash启动,在开发的时候还想启用ubuntu 9.10上的共享目录,用共享目录上的资源来进行开发,则
1.确保nfs服务已经打开
sudo /etc/init.d/nfs-kernel-server start
2.在目标板的linux启动后的命令行里输入
mount -t nfs -o nolock 192.168.1.101:/opt/FriendlyARM/mini2440/root_qtopia /mnt 192.168.1.101是主机ubuntu 9.10的地址。
就会将ubuntu 9.10的
/opt/FriendlyARM/mini2440/root_qtopia目录挂载到开发板的/mnt下,注意,如果/mnt目录事先没建立好会报错,可以用mkdrir mnt来建立。
对于使用别的开发板的,可以采用这种方法来开发。
Ubuntu9.10在ARM上建立NFS服务
/dongliqiang2006/archive/2010/01/07/5152131.aspx
前言,我参照别人的做法,也是网上普遍做的方法,在linux下构建nfs服务。
具体而言:在ubuntu9.10构建nfs服务器端,在ARM上构建客户端,这样便于开发。
先引用别人的做法:
1、进行NFS服务器端与客户端的安装:
sudo apt-get install nfs-kernel-server nfs-common portmap
安装客户端的作用是可以在本机进行NFS服务的测试。
2、配置portmap
两种方法任选一种就可以:
(1):sudo gedit /etc/default/portmap
注释掉 -i 127.0.0.1
(2)sudo dpkg-reconfigure portmap
运行后选择“否”
3、配置挂载目录和权限
#sudo gedit /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) hostname2(ro,sync)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt)
# /srv/nfs4/homes gss/krb5i(rw,sync)
#
/home/nfsboot 192.168.1.*(rw,sync,no_root_squash)
解释一下:
#后面的都是解释
/home/nfsboot是NFS的共享目录,*表示任何IP都可以共享这个目录,你可以改为受限的IP,rw表示的是权限,sync是默认的。
4、更新exports文件
只要你更改了/etc/exports, 你不可以通过sudo exportfs -r 来更新这个文件
5、重启NFS服务
sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务
6、进行测试
尝试一下挂载本地磁盘(我的linux系统IP为202.198.137.18,将/home/nfsboot挂载到/mnt)
$ sudo mount 192.168.1.7:/home/nfsboot /mnt
运行 $ df 看看结果
$ sudo umount /mnt
5、嵌入式系统中使用NFS服务挂载(来自网上)
嵌入式要mount 的时候使用
mount -t nfs -o nolock 192.168.1.7:/home/nfsboot /mnt
PS:理论上,就可以了,因为我以前搞国,也没有什么障碍。
但是现在问题来了,以前的系统版本是8。
04,而现在是9。
10,结果死活是运行不了。
冥冥之中找了一两天,晕死,我老是怀疑自己那个地方敲错了。
知道昨天晚上,看到一篇9。
10的nfs服务构建,才看到:
注意,上面的主机IP不能使用*来通配,否则在客户机上会出现访问拒绝,但是如果我们要设置局域网访问呢?怎么办,使用子网掩码例如:10.1.60.0/255.255.254.0即可让10.1.60.*和10.1.61.*都可以访问,还可以使用 10.1.60/23这种方式类确定子网。
说明什么?以前的那种方式是不行的,我就指定一个
/home/nfsboot 192.168.1.7(rw,sync,no_root_squash)//本机ip,现用来测试嘛
OK!成了!!!
ARM上面的nfs支持,这里不说了,我的博客里面有。
在从arm上面挂载,成功了!
外沿:从中我也学会了nfs相关的一些知识,例如
题:1. sudo mount -t nfs 192.168.1.7:/home/nfsboot /mnt
mount.nfs: access denied by server while mounting 192.168.1.7:/home/nfsboot
因为我是指定一个网段的。
deng@ladeng-laptop:~$ showmount -e
showmount: RPC: Program not registered
mountd起没起
解决办法:
ladeng@ladeng-laptop:~$ host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.
ladeng@ladeng-laptop:~$ host 127.0.0.1 //禁用无线
;; connection timed out; no servers could be reached
事实是:即使指定一个ip,可一用nfs了,但是此法仍然不行。
why??学习中
deng@ladeng-laptop:~$ df
文件系统 1K-块已用可用已用% 挂载点
/dev/sda10 17061584 5290556 10904324 33% /
tmpfs 767520 0 767520 0% /lib/init/rw
varrun 767520 128 767392 1% /var/run
varlock 767520 0 767520 0% /var/lock
udev 767520 172 767348 1% /dev
tmpfs 767520 84 767436 1% /dev/shm
lrm 767520 2192 765328 1%
/lib/modules/2.6.28-17-generic/volatile
/dev/sda9 241116 45117 183551 20% /boot
/dev/sda8 8111964 1502092 6197808 20% /home
/dev/sda6 38538496 21477824 17060672 56% /media/MEDIA
用来查看挂载情况
至此,此问题告一段落,开始着手真正的程序开发!
在Ubuntu 9.10下怎么设置ip
本人第一次发帖,分类选了安装配置教程,请版主莫见怪,如有问题,可移到其他版块!虽然是菜鸟问题,只能怪自己太菜了!
在公司电脑的虚拟机上安装了Ubuntu9.10系统,但必须通过公司的局域网来连接外网,而通过上网则必须通过设定ip才能访问。
这个弄了很长时间,一直连接不上!希望高手能给指导一下!谢谢~~
点击Configure VPN来配置
然后选择Wired->Add来配置IP
不知道这种做法对还是不对,正确的应该怎么来配置?是否还可以通过终端来配置呢?在线等高手来解答!
应该就是这样配置的
在终端输入ifconfig eth0 ip地址
可以修改为静态ip地址,不过重启后就不是了
从nfs下启动失败?
Looking up port of RPC 100003/2 on 192.168.0.1
portmap: server 192.168.0.1 not responding, timed out
Root-NFS: Unable to get nfsd port number from server, using default
Looking up port of RPC 100005/1 on 192.168.0.1
portmap: server 192.168.0.1 not responding, timed out
Root-NFS: Unable to get mountd port number from server, using default mount: server 192.168.0.1 not responding, timed out
Root-NFS: Server returned error -5 while mounting /home/armlinux/root
VFS: Unable to mount root fs via NFS, trying floppy.
request_module[block-major-2]: Root fs not mounted
VFS: Cannot open root device "nfs" or 02:00
Please append a correct "root=" boot option
可能是你的NFS服务器没有配置好
可能是你的防火墙没有造成的,你可以用这个service iptables stop这个命令把防火墙关掉试下
是否IP地址设置不当或未设置,导致网络就无法连通;
2. 是否NFS服务器设置不当或未启动相应的服务;
3. 防火墙的问题。
FreeBSD网络文件系统(NFS)
amd_flags="-a /net -c 1800 -k i386 -d my.domain -l syslog /host /etc/amd.map"
这个参数使用了另一些有用的参数,-k参数用于运行amd的计算机内核体系,-d参数用于定义计算机的domain名,修改这个参数可以帮助amd侦测计算机所在的domain名字,因此要修改为计算机实际的域名,-l参数定义审计记录文件,缺省使用syslog。
amd的设置相当复杂,这里只是通过一个映射文件来提供针对一个目录的自动安装维护,实际上amd 可以同时维护多个目录,这就需要设置一个配置文件,来定义多个监视目录。
对于一般的目的,使用命令行指定一个映射就够用了。
NFS服务器
为了使得其他系统能使用FreeBSD上的硬盘空间,就需要运行NFS服务进程。
NFS服务器使用了几个守护进程用于提供NFS服务。
最基本的提供NFS服务的系统至少要运行nfsd和mountd 守护进程,nfsd用于处理NFS协议,而mountd用于处理客户的mount请求。
此外,由于NFS使用RPC 远程调用,因此portmap、rpc_lockd、rpc_statd等RPC守护进程都可以用来帮助提供更高效的服务。
这些守护进程一般应该在系统启动时载入,因此需要在rc.conf中更改相关的参数:nfs_server_enable, rpc_statd_enable, rpc_lockd.enable和portmap_enable参数将对应相应的守护进程。
那么系统重起之后,就有了能共享文件出去的能力,余下的工作只是用来配置需要共享那些目录,以及进行何种限制以保证安全性,这些设置工作需要更改/etc/exports文件:# cat /etc/exports
/usr/src/sys -maproot=daemon ns host2
/usr/ports -ro -network 192.168.1.0
从这个例子中可以看出exports文件的格式,首先是定义要共享出去的文件目录,必须使用绝对路径,而不能使用是符号连接。
后面就是对这个目录进行访问限制的参数,用于保证安全性。
第一行设置中,将/usr/sys/src目录共享出去,但限制客户机上的root用户等价于本机上的daemon用户,以避免客户机上的root用户拥有这个服务器上的root权力,进行非法操作,此后的ns和host2参数是主机名,这就限制只有ns和host2才能共享这个/usr/sys/src目录。
第二行设置共享了/usr/ports目录,但限制为只允许读取,并且也只有192.168.1.0网络上的计算机才能访问这个共享目录。
目录的访问限制中具有多种选项,这些选项对于保证NFS的安全性相当重要。
-ro---以只读形式输出文件系统,远程客户只能读不能写这个目录
-maproot---将客户机上的root用户映射为服务器中的某个用户和族,也可以使用UID 和GID的形式,如maproot=root,maproot=10,或maproot=10:1。
这个设置选项可以用来保护服务器上的文件系统不被客户中的使用者非法访问。
-mapall---将客户上的所有用户都映射为本机的某个用户,使用形式与maproot相同。
它同样也是用于保护服务器文件系统的安全性的。
-alldirs---允许安装该目录下的所有子目录。
-network---允许一定网络上的计算机可以装载这个文件系统。
-mask---用于修订 network中的网络号使用的缺省掩码,可定义对网络的一部分开放文件系统。
当更改了exports文件之后,需要向mountd发送SIGHUP信号,使其重读exports文件的内容。
由于使用nfsiod能够提升系统性能,对于NFS客户计算机,就可以在系统启动时执行这个守护进程。
这需要在FreeBSD的系统配置文件rc.conf中设置nfs_client_enable参数的值为"YES",系统启动时就自动执行nfsiod。
使用fstab
对于经常用到的NFS文件系统,并且提供NFS服务的Unix主机也非常可靠。
那么就可以将这些系统加入/etc/fstab文件中,在系统启动时自动安装该NFS文件系统。
由于NFS
文件系统不在本地,因此在服务器不能提供NFS服务时就会造成故障,系统会遇到启动障碍,而不同正常启动。
因此对于一台不稳定的服务器系统,最好不要使用/etc/fstab来装载NFS文件系统,或者在/etc/fstab的设置参数选项中使用noauto参数,不让系统自动装载这个文件系统。
# Device Mountpoint FStype Options Dump Pass#
/dev/wd0s3b none swap sw 0 0
/dev/wd0s3a / ufs rw 1 1
/dev/wd0s3f /usr ufs rw 2 2
/dev/wd0s3e /var ufs rw 2 2
proc /proc procfs rw 0 0
/dev/wcd0c /cdrom cd9660 ro,noauto 0 0 nfssrv:/exports /nfs nfs ro,noauto 0 0 /etc/fstab文件中的第四列为安装文件系统时使用的安装参数,如果增加了noauto选项,这样系统启动时并不立即安装这个文件系统,而是直到管理员输入mount命令之后才
进行安装。
但是此时mount命令的参数就可以比较简单,对应前面安装nfssrv的命令,可以简化为 mount /nfs,mount会查看fstab文件寻找匹配的行,以使用正确的参数安装文件系统。
自动安装守护进程AMD
为了更方便的使用NFS,可以使用自动安装软件amd(automounter daemon,自动安装守护进程)自动维护文件系统,这就使在访问具体目录时能够立即安装该文件系统,而经过一端时间间隔内没有任何访问发生,再自动卸载这个文件系统。
amd需要指定一个进行监视的空目录,所有要安装的文件系统与这个目录下的子目录一一对应;它还需要一个维护用的空目录,用于安装远程文件系统,而监视目录中的子目录
将是正确安装的文件系统的符号连接。
这些子目录和符号连接并不需要管理员创建,而是要在映射文件中指明,由amd来创建和维护。
当监视子目录被访问时,amd守护进程就会安装相应的文件系统并建立正确的连接,使得目录和文件能被正常访问。
通常使用/etc/amd.map用作amd的映射文件,这个文件就用于告诉amd子目录与文件系统的对应关系。
下面是一个最简单的映射文件amd.map:
# cat /etc/amd.map
/defaults type:=host;fs:=${autodir}/${rhost};rhost:=${key}
nfssrv typs:=nfs;rhost:=nfssrv;rfs:=/exports
第一行使用/defaults定义缺省的设置,type参数用于定义维护的文件系统的类型,host类型为通过NFS安装远程服务器中直接在exports文件中输出的目录,fs参数为amd安装文件系统使用的安装位置,变量autodir为 amd维护安装文件系统的目录,而rhost变量为远程计算机的名字,需要进行设置。
缺省的rhost变量设置为${key}的值,当用户访问amd监视目录的子目录时,key就被设置为这个子目录的名字。
通过这个缺省设置,当用户访问amd监视目录的任意一个子目录时,这个子目录名就被转换为远程NFS 服务器的名字,amd就自动将这个服务器共享的目录安装到fs定义的安装位置上。
第二行设置一个专有的映射关系,第一列也是amd设置的key值,当访问对应的子目录时就启动这个设置,这一个安装点为nfs类型,nfs类型与host略有不同,host类型只需要rhost 定义,而查询服务器上的共享出的目录来自动安装,而nfs类型则要配置者手工指定远程主机共享的目录,这就需要设置rfs参数。
通常在自动维护的计算机数量较少时,使用nfs类型更明确,否则可以使用host类型以简化配置工作。
设置好映射文件之后,就可以运行amd守护进程了。
# amd -a /net -c 1800 /host /etc/amd.map
# ls /host
# cd /host/nfssrv
# ls -l /host
nfssrv
上面的amd的命令参数为,第一个-a参数告诉amd将真实的文件系统安装到/net这个临时目录下,在执行amd之前必须建立这个空目录,这个目录将被amd作为autodir变量设置映射关系;-c参数用于指明超时参数,经过这个时间间隔内没有访问这个文件系统上的内容,就卸载已安装的文件系统,设置为1800秒;而/host目录为amd监视用户访问的目录,访问这个目录中的子目录,就会触发amd守护进程,例如上例中使用cd /host/nfssrv访问nfssrv子目录,那么amd 就将启动,将nfssrv设置为key值,因此amd就读取/defauts设置的缺省参数和nfssrv这个key值对应的参数,然后执行自动安装过程。
最后一个参数就是指定映射文件为/etc/amd.map。
因此,amd的处理过程可以总结为:用户首先访问/host目录下的子目录,触发amd;amd 使用子目录的名字作为key值,读取相应映射文件中的设置,将文件系统安装到/net目录下的相应目录上(fs定义的目录);最后amd在/host目录下以key值建立符号连接,指向已经安装到/net 目录下的真实文件系统,使得用户访问子目录的操作能够正常完成。
amd主要是和NFS结合使用,用于维护多台服务器的用户和文件目录的一致性,然而amd 不仅仅能用于维护NFS文件系统,同样也可以用于维护其他种类的文件系统,如CD9660、本地文件目录的连接,以及扩展到运行一个程序等方式自动安装相应的文件系统,对于这些非NFS文件系统,就需要使用不同的type参数定义不同的类型。
例如可以使用amd将所有用户的个人目录维护在同一个路径下,而不是事实上分布在不同目录和主机上,等等。
此时,amd.map应为:
/defaults opts:=rw,grpid,nosuid,nodev
wb host==wb;type:=link;fs:=/home/wb
cd opts:=ro;host==wb;type:=cdfs;dev:=/dev/wcd0c
dos host==wb;type:=program;mount:="/sbin/mount_msdos mount_msdos /dev/wd0s1。