https://github.com/zytc2009/BigTeam_learning
分类: LINUX
2010-04-03 07:00:35
1. linux服务器安装portmap nfs-kernel-server portmap
# apt-get install portmap nfs-kernel-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run `apt-get -f install' to correct these:
The following packages have unmet dependencies:
nfs-kernel-server: Depends: nfs-common (>= 1:
Depends: libgssapi2 but it is not going to be installed
Depends: libnfsidmap2 but it is not going to be installed
Depends: librpcsecgss3 but it is not going to be installed
sflphone: Depends: dbus-c++-1 (>=
Depends: libccrtp1-1.6-0 but it is not installable
Depends: libcommoncpp2-1.6-0 but it is not installable
Depends: libcppunit-1.12-0 but it is not going to be installed
Depends: libpulse0 (>=
Depends: librsvg2-common (>=
Depends: libsamplerate0 (>=
Depends: sflphone-iax2 but it is not installable
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
# apt-get -f install
2. 新建共享文件夹
在/home/下面建立nfsshare目录,做为nfs的共享目录。
3. 以root 身份登陆Linux 服务器,编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等。
# vi /etc/exports or # gedit /etc/exports
在该文件里添加如下内容:
/home/nfsshare 192.168.7.0/24(rw,sync,no_root_squash)
然后保存退出。
添加的内容表示:允许ip 地址范围在192.168.7.*的计算机以读写的权限来访问/home/ nfsshare 目录。
/home/nfsshare 也称为服务器输出共享目录。
可以设定的参数主要有以下这些:
ro: 即为:read only
rw: 即为:read write
no_root_squash: 信任客户端,对应 UID,登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。
最好加上sync, 否则 $ exportfs -r 时会给出警告, sync是NFS的默认选项.
运行 $ showmount -e 查看NFS server的export list.
root@jane-desktop:/etc# exportfs -r
exportfs: No options for /home/nfsshare 192.168.7.*(rw,sync,no_root_squash): suggest 192.168.7.*(rw,sync,no_root_squash)(sync) to avoid warning
exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.7.*(rw,sync,no_root_squash):/home/nfsshare".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
若更改了/etc/exports, 运行 $ sudo exportfs -r 更新
运行 $ sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务)
4. 配置portmap
方法1: 编辑/etc/default/portmap, 将 -i 127.0.0.1 去掉.
方法2: $ dpkg-reconfigure portmap , 对Should portmap be bound to the loopback address? 选N.
5. 配置/etc/hosts.deny
(禁止任何host(主机)能和你的NFS服务器进行NFS连接),加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
6. 配置/etc/hosts.allow
允许那些你想要的主机和你的NFS服务器建立连接。下列步骤将允许任何IP地址以192.168.1开头的主机(连接到NFS服务器上),也可以指定特定的IP地址。参看man页 hosts_access(5), hosts_options(5)。加入:
### NFS DAEMONS
portmap: 192.168.7.
lockd: 192.168.7.
rquotad: 192.168.7.
mountd: 192.168.7.
statd: 192.168.7.
/etc/hosts.deny 和 /etc/hosts.allow 设置对portmap的访问. 采用这两个配置文件有点类似"mask"的意思. 现在/etc/hosts.deny中禁止所有用户对portmap的访问. 再在/etc/hosts.allow 中允许某些用户对portmap的访问.
no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。
root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被縮成为匿名使用者,通常他的 UID与GID 都会变成 nobody 那个身份;
all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。
anonuid:将登入NFS主机的用户都设定成指定user id,此ID必须存在于/etc/passwd中。
anongid:同 anonuid ,但是变成 group ID 就是了!
sync:资料同步写入存储器中。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
insecure: 允许从这台机器过来的非授权访问。
noaccess: 客户端不能使用
7. 接着执行如下命令,启动端口映射:
# ./init.d/portmap start
* Starting portmap daemon...
* Already running.
8. 最后执行如下命令启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求:
# /etc/rc.d/init.d/nfs-kernel-server restart
9. Linux 服务器上测试NFS
# mount –t nfs 192.168.7.15:/home/work /mnt
本地主机IP地址为192.168.7.15,将/home/share挂载到/mnt/nfs
出错:
# mount 192.168.7.15:/home/nfsshare /mnt/nfs/
mount.nfs: 192.168.7.15:/home/nfsshare failed, reason given by server: Permission denied
解决:/etc/exports 中
/home/nfsshare 192.168.7.0/24(rw,sync, insecure, no_root_squash)
可能权限上还有问题,之后再说。
10. 客户端设置
在配置内核时添加内核对NFS的支持:
选中Networking >> networking options >> IP:kernel level auloconfiguralion项
选中file systems>>network file systems>> root file system on nfs 和nfs file system support重新编译内核下载bootloader和kernel到开发板上
11. 客户端mount NFS 共享目录
# mkdir /mnt/nfs
# mount –t nfs 192.168.7.15:/home/nfsshare /mnt/nfs –o nolock
# umount /mnt/nfs
12. 挂载NFS根文件系统
将根文件系统拷贝到/home/nfsshare下,然后修改uboot的参数。
bootargs=console=ttyS1,115200n8 root=/dev/nfs rw nfsroot=192.168.7.15:/home/nfsshare ip=dhcp