今天用迅为的itop-4412的开发板 挂载nfs 把流程写一下,和遇到的问题。图片用的开发手册的图片 我有的没截图
1、搭建 NFS 服务器
实现 NFS,需要一个主机作为 NFS 服务器,选择虚拟机 Ubuntu 作为主机。首先需要在
在虚拟机 Ubuntu 上安装 Ubuntu NFS 服务,这是一个软件包,可以使用 apt 命令下载(当
然,首先要保证虚拟机可以上网)。在 Ubuntu root 用户下输入“apt-get install nfs-kernel-server”命令安装 Ubuntu NFS 服务,如下图。
如果说源没找到,记得更新一下源 apt-get update
在安装过程中会提示”是否继续安装”的信息,输入”y”,如下图。
然后按回车,会继续安装。安装完成,如下图。
为了确保确实可以安装成功,再次执行“apt-get install nfs-kernel-server”命令,如下
图
由上图可知,零更新、零新安装,说明安装已经成功。继续搭建 NFS 服务器。
在/etc/exports 文件的最后一行添加:
/home/minilinux/ *(rw,sync,no_root_squash),如下图。“/home/minilinux/ ”目录
需要自己建,默认 Ubuntu 中是没有的。
下面讲解一下上面输入的内容都代表什么意思:
/home/minilinux/:要共享的目录;
*:代表允许所有的网络段访问;
rw:是可读写权限;
sync:是资料同步写入内存和硬盘;
no_root_squash:是 Ubuntu nfs 客户端分享目录使用者的权限,如果客户端使用的是
root 用户,那么对于该共享目录而言,该客户端就具有 root 权限;
其他 Ubuntu nfs 常用的参数有:
ro:只读访问
async :nfs 在写入数据前可以相应请求
secure: nfs 通过以下的安全 TCP/IP 端口发送
insecure: nfs 通过 1024 以上的端口发送
wdelay:如果多个用户要写入 NFS 目录,则归组(默认)
no_wdelay:如果多个用户要写入 NFS 目录,则立即写入,当使用 async 时,无需此设
置
hide:在 nfs 共享目录中不共享妻子目录
no_hide:共享 nfs 目录的子目录
subtree_check:如果共享/usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认
北京迅为电子有限公司 www.topeetboard.com
5
)
no_subtree_check:和上面相对,不检查父目录权限
all_squash:共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录
no_all_squash:保留共享文件的 UID 和 GID(默认)
root_squash root:用户的所有请求映射成如 anonymous 用户一样的权限(默认)
no_root_squash root:用户具有根目录的完全管理访问权限
anonuid=xxx:指定 nfs 服务器/etc/passwd 文件中匿名用户多的 UID
anongid=xxx:指定 nfs 服务器/etc/passwd 文件中匿名用户的 GID
请注意:如果使用的是 Ubuntu12.04 系统则执行这一步重启。
接下来重启 portmap 服务,输入“/etc/init.d/portmap restart”命令,运行结果如下
图。
请注意:如果使用的是 Ubuntu14.04 或者 Ubuntu16.02 系统则执行这一步重启。
接下来重启 rpcbind 服务,输入“/etc/init.d/rpcbind restart”命令,运行结果如下
图。
最后重启 nfs 服务,输入“/etc/init.d/nfs-kernel-server restart”命令,运行结果如下
图。
至此,Ubuntu nfs 服务器端的配置完成。
正常是没问题的 我在开发板上面挂载的时候 报错,说没有权限,我最后在板子和ubuntu 上面都chmod 777 文件夹
还是不行
mount: mounting 192.168.11.146:/home/minilinux on /mnt/nfs failed: Permission denied
/mnt # mount -t nfs -o nolock 192.168.11.146:/home/minilinux /mnt/nfs
最后在网上查的资料,有可能IP权限的问题 我在
/etc/exports 文件中添加 ip权限
然后重启 portmap服务 和nfs服务 就可以了
/etc/init.d/portmap restart
/etc/init.d/nfs-kernel-server restart
2 测试 NFS 服务器
完成前面的搭建工作之后,可以在虚拟机 Ubuntu 本机上验证一下。把/home/minilinux
挂载到/mnt 目录下,需要输入“mount -t nfs localhost:/home/minilinux /mnt”命令,并
使用“df”命令查看是否挂载成功,如下图。
可以看到上图中最后一行就是挂载的 nfs 文件系统,这说明 Ubuntu nfs 服务器端搭建成
功了。
最后可以使用命令“umount /mnt”卸载 NFS。
实现 nfs 文件系统可能需要修改 linux 最小文件系统的“etc/init.d/ifconfig-eth0”文
件。修改第八行为:if grep -q nfs /proc/mounts ; then。修改后如下图,如果以后提供给
大家的最小 linux 文件系统中已经修改,这部分则不需要修改。
4 配置内核
iTOP-4412 开发板的内核默认没有配置 NFS 功能,所以需要将 NFS 功能配置。
首先使用“ cp config_for_linux_scp_elite .config”(这里以精英版 SCP 核心板为例,
如果是其它开发板,则需要对应配置)命令配置缺省信息。然后使用“make menuconfig”
命令进行配置
选中“ Network File Systems”目录,并进入该目录。选中“NFS client support ”、
“NFS client support for NFS version 3 ”、“ NFS client support for the NFSv3 ACL
protocol extension ”、“NFS client support for NFS version 4 ”、“NFS client
support for NFSv4.1 (EXPERIMENTAL) ”和“Root file system on NFS ”选项,一共 6
个选项。如下图。
保存,退出。
然后使用“make zImge -j8”命令编译内核。如下图。
NFS 共享目录使用介绍
通过路由器网线连接开发板和路由器。系统起来后首先使用“ifconfig”查看开发板 ip。
如下图
如果开发板的ip不对 就需要 ifconfig eth IP地址 然后进行ping一下
最后可以使用命令“umount /mnt/nfs”命令卸载 NFS 目录。
由上图可知,开发板和虚拟机可以完成同步,方便调试。至此,nfs 共享目录的制作和使
用介绍全部结束。
文档大部分用了我查看的文档的截图,流程是没问题的。