一、搭建NFS服务器
1、安装Ubuntu NFS服务
- – apt-get install nfs-kernel-server
- 安装过程弹出对话,选择Y,回车继续安装,安装完成后可以在输入一次上面的命令, ,最后显示如下图,就安装成功了。
如果安装出现一下情况,请先用apt-get update 命令更新一下数据源的地址。
2、配置
在Ubuntu上打开 vi /etc/exports。
– 最后一行添加/home/minilinux/ *(rw,sync,no_root_squash)
- /home/minilinux/:表示要共享的目录,根据实际情况修改
- *:代表允许所有的网络段访问
- rw:是可读写权限
- ync:是资料同步写入内存和硬盘
- no_root_squash:是Ubuntu nfs 客户端分享目录使用者的权限,如果客户端使用的是root 用户,那么对于该共享目录而言,该客户端就具有root 权限
- 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 检查父目录的权限(默认)
- 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
3、重启
重启portmap 服务
- /etc/init.d/portmap restart
重启nfs 服务
- /etc/init.d/nfs-kernel-server restart
4、测试NFS 服务器
- 在虚拟机 Ubuntu 控制台输入“mount -t nfs localhost:/home/minilinux /mnt”命令,这个命令可以把/home/minilinux 挂载到/mnt 目录下。
- 使用“df”命令查看是否挂载成功,如下图就代表成功了。
最后可以使用命令“umount /mnt”取消挂载 NFS。
二、在开发板上使用NFS共享目录
1、修改最小系统ifconfig-eth0文件(可以重新修改Ubuntu上的最小系统,然后再烧写镜像到板子,也可以直接在板子的系统上修改)
2、重新配置最小系统内核
1)拷贝内核到Ubuntu
还记得我们在《一、烧写最小linux系统》里面烧写的那个zImage文件吗?iTOP-4412 开发板的内核默认没有配置 NFS 功能,所以需要将 NFS 功能配置。我们去光盘的“06_源码_uboot和kernel”目录下,找到“iTop4412_Kernel_3.0_20200410.tar.gz”文件,如下
将文件拷贝到Ubuntu的 /home/topeet/android4.0目录,没有这个目录可以自己创建,也可以换一个其他目录,我跟着教程走。拷贝完后使用解压命令:
tar vxf iTop4412_Kernel_3.0_20200410.tar.gz解压。
2)配置缺省文件
我们进入iTop4412_Kernel_3.0目录里,首先使用“ cp config_for_linux_scp_elite .config”(这里以精英版 SCP 核心板为例, 如果是其它开发板,则需要对应配置)命令配置缺省信息(注意:make zImage在编译前,一定要配置好缺省文件,不然有可能会一直重启哦)。
3)配置内核
使用“make menuconfig” 命令打开配置。
进入Networking support
– 选中Networking options然后进入
• 选中IP: kernel level autoconfiguration
• 进入File systems
– 选中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”,“Root file system onNFS”一共六个选项
• 保存退出 • 注释掉网卡调试信息drivers/net/usb/dm9620.c,关键词LEN_PLOAD,注释掉三行打印信息。
4)编译内核和烧写内核到开发板
使用“make zImge”命令编译内核,然后烧写内核,具体烧写看前面《一、烧写最小linux系统》中的zImage,其他的可以不用动。还是用原来的。
3、在开发板上挂载共享目录
1)确保开发板和Ubuntu正常通信
2)挂载
- 在开发板的/mnt 目录下,使用命令“mkdir nfs”新建一个目录,作为开发板的 NFS 同 步目录
- 使用命令:“mount -t nfs -o nolock 192.168.0.104:/home/minilinux /mnt/nfs”挂载。
打开 vi /etc/exports,如下图,我们中途把这个地址配置成linux目录下,所以我们要重新给他修改过来,改完后记得重启nfs(参考上面重启)
重启完后,我们在来到开发板的超级终端上,挂载,如下:
我们可以看到Ubuntu和开发板上都能打开这个共享的目录。