系统环境:
上位机系统平台:opensuse13.2 x86_64(KDE)
下位机:mini2440开发板
系统IP:192.168.1.108
防火墙状态:已关闭
说明:本次安装基于终端命令方式,并且使用的时root权限,其中#
开头的表示该行是终端输入的命令,非#
开头的代码表示修改内容,如遇到问题,可以留言。
#opensuse上安装NFS服务器:
##安装NFS服务器
#zypper in nfs-kernel-server
##配置NFS服务器
#vim /etc/exports
/opt/samsung/mini2440/kernel/rootfs *(rw,sync,insecure,no_root_squash)
以下说明:
/opt/samsung/mini2440/kernel/rootfs:是与nfs服务客户端共享的目录
*:代表允许所有的网段访问,(也可以使用具体的IP,如192.168.1.100/24)
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
no_root_squash:客户机用root访问该共享文件夹时,不映射root用户。(root_squash:客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户)
NFS服务器参数说明:
格式:<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
参数列表:
参数 | 功能 |
---|---|
rw | 该分享目录可以读写 |
ro | 该分享目录只能读取 |
secure | 不允许Client使用大于1024的Client端port,也就是从Server传递资料到Client端的目地port要小于1024,此时Client端一定要使用root帐号才能mount远端NFS Server,通常会建议使用insecure |
insecure | 允许Client端自行决定自己机器使用的port,笔者通常都会设这个,如此非使用root帐号的clinet端才能mount NFS Server |
async | 允许异步写入资料,所以效能会比同步写入好。写入时会先放到内存,等硬盘有空档再写入!风险为若Server当机或不正常关机,会损失资料,但通常Server都很稳定,所以建议打开获得更好的效能 |
sync | 同步写入,效能比较不好 |
nohide | 当export出两个目录,而其中一个目录是另外一个目录的子目录,例如我们使用虚拟目录的例子,此时我们mount根目录时,会自动把所有子目录mount起来。建议使用这个选项比较方便,尤其在NFSv4有虚拟目录的情形 |
hide | 当mount根目录时,export出的子目录需要自己明确的再挂载 |
subtree_check | 当分享的目录是某个档案系统的子目录,选用这个可以确定父目录的权限可以让NFS Server分享使用 |
no_subtree_check | 刚好和上面的相反,因为不做权限测试,效能比较好 |
fsid=0 | 定义NFSv4中的根目录,只能有一个 |
root_squash | 在权限的地方有详细解释,代表当client用root会变成匿名权限 |
no_root_squash | 关掉root_squash功能 |
all_squash | 在Client所有的使用者都是变成匿名身份 |
anonuid | 指定在Client中操作该目录的权限帐号,如使用anouid=0,那在Client端不管是谁都有着root的权限操作该目录 |
anongid | 同上,不过这是指定使用者群组 |
#重启NFS服务器
#SuSEfirewall2 stop//关闭防火墙
#service nfsserver restart
#service rpcbind restart
#service rpcbind status
rpcbind.service - RPC Bind
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled)
Active: active (running) since Thu 2016-05-19 22:52:43 CST; 26s ago
Docs: man:rpcbind(8)
Main PID: 11516 (rpcbind)
CGroup: /system.slice/rpcbind.service
`-11516 /sbin/rpcbind -w -f
#service nfsserver status
Loaded: loaded (/etc/init.d/nfsserver)
Active: active (running) since Thu 2016-05-19 22:49:55 CST; 3min 24s ago
Process: 11036 ExecStop=/etc/init.d/nfsserver stop (code=exited, status=0/SUCCESS)
Process: 11056 ExecStart=/etc/init.d/nfsserver start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfsserver.service
|-11076 /usr/sbin/rpc.idmapd -p /var/lib/nfs/rpc_pipefs
|-11080 /usr/sbin/rpc.mountd
|-11083 /usr/sbin/rpc.statd --no-notify
|-28357 /usr/sbin/rpc.idmapd -p /var/lib/nfs/rpc_pipefs
`-28361 /usr/sbin/rpc.mountd
如果上述命令中rpcbind没有安装,则可通过如下命令安装:
#zypper in rpcbind
#opensuse上安装NFS客户端(用于本地测试):
#zypper in nfs-client
#service nfs restart//重启nfs客户端,发现很多博客将nfsserver和nfs搞混
#mount -t nfs 192.168.1.100:/opt/samsung/mini2440/kernel/rootfs /tmp//本地测试
#ls /tmp
.ash_history bin dev etc home lib linuxrc mnt opt proc root sbin sys tmp usr var www
#
此时表示NFS服务器构建成功,接着我们在mini2440上配置NFS客户端。
#mini2440端构建NFS客户端:
#mount -t nfs:192.168.1.100:/opt/samsung/mini2440/kernel/rootfs /tmp
mini2440通过使用NFS作根文件系统:
配置linux内核:
make menuconfig
进入如下菜单:File systems —>Network File Systems —> ,然后配置成如下:
设置NFS启动参数:
bootargs=root=/dev/nfs console=ttySAC0 nfsroot=192.168.1.100:/opt/samsung/mini2440/kernel/rootfs ip=192.168.1.130:192.168.1.100:192.168.1.1:255.255.255.0:mini2440:eth0:off