基础条件
VMware虚拟机
Ubuntu18.04 【网络配置陈桥接模式】
RK3568开发板【我是用讯为的RK3568】
网线连接路由器或者和电脑直连
配置TFTP和NFS的作用
使用tftp和nfs网络挂载可以很方便的进行软件的调试,挂载成功后只要把Ubuntu下编译好的文件程序放到挂载的目录下,开发板上面就可以直接运行了。否则还需要通过windows进行拷贝比较麻烦。
一、首先配置Ubuntu的tftp服务
1.1 安装 TFTP 服务端
首先在 ubuntu 中执行以下命令安装 TFTP 服务:
sudo apt-get install tftp-hpa tftpd-hpa
在家目录创建 tftpboot 文件夹,并修改文件夹权限为777,如下图所示:
mkdir -p /home/topeet/tftpboot
sudo chmod 777 /home/topeet/tftpboot
权限修改为777文件夹是绿色的
1.2 最后修改配置文件,打开配置文件以后如下图所示:
sudo vim /etc/default/tftpd-hpa
修改后如下:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/topeet/tftpboot/"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l-c-s"
1.3 修改完成保存退出,在终端输入以下命令重启 tftpd-hpa 服务。
service tftpd-hpa restart
二、 安装 NFS 服务
2.1 首先执行以下命令安装 NFS 服务:
sudo apt-get install nfs-kernel-server
2.2 然后使用以下命令创建 rk_rootfs 文件并赋予其777权限如下图所示:
2.3 使用以下命令编辑/etc/exports 文件,并添加 NFS 服务的工作目录的路径:
sudo vim /etc/exports
添加 NFS 目录:以/home/topeet/rk_rootfs 为例,将其添加到/etc/exports 文件中, 如下所示:
/home/topeet/rk-rootfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
![在这里插入图片描述](https://img-blog.csdnimg.cn/0683dfbdd65f4e03aec609e3381a8087.png
配置参数说明:
rw : 读写访问
sync : 所有数据在请求时写入共享
async : NFS 在写入数据前可以相应请求
secure : NFS 通过 1024 以下的安全 TCP/IP 端口发送
insecure : NFS 通过 1024 以上的端口发送
wdelay : 如果多个用户要写入 NFS 目录,则归组写入(默认)
no_wdelay : 如果多个用户要写入 NFS 目录,则立即写入,当使用 async 时,无需此设置。
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_squas root: 用户具有根目录的完全管理访问权限
2.4 配置nfs的nfs-kernel-server这文件
终端打开文件
sudo vi /etc/default/nfs-kernel-server
修改为
2.5 使用以下命令重启 NFS 服务:
service nfs-kernel-server restart
2.6可以使用 showmount -e 查看挂载情况
说明:/home/topeet/rk_rootfs * 这里的 * 代表任意IP
三、配置开发板网络
3.1 连接好网线,上电启动开发板,在加载阶段点击“ctrl+c”进入 uboot 命令行,如下图所示:
3.2 配置开发板和tftp服务的IP(Ubuntu的ip)
setenv ipaddr 192.168.31.98 设置开发板的IP
setenv serverip 192.168.31.189 设置tftp服务的IP,这里就是Ubuntu的IP
setenv gateway 192.168.31.1 网关
然后保存参数
saveenv
四、nfs 挂载文件系统
4.1 开发板还是在uboot下输入
setenv bootargs "root=/dev/nfs root=/dev/nfs nfsroot=${serverip}:/home/topeet/rk_rootfs,v3 rw ip=${ipaddr}:${serverip}:${gateway}:255.255.255.0::eth1:off"
然后保存
saveenv
4.2 查看Ubuntu下的rk_rootfs目录
开发板下的目录
是一样的
五、我新建了一个用于共享的独立Ubuntu给开发板的目录,权限和设置都是和上面rk_rootfs一样的。然后在开发板系统中挂载。
5.1 这里把Ubuntu的nfs_rootfs挂载到了开发板发mnt下:
mount -t nfs 192.168.31.189:/home/topeet/nfs_rootfs /mnt
5.2 测试
Ubuntu下拷贝一个编译好的rk-opent程序到nfs_rootfs目录下
然后在到开发板的mnt目录下查看并执行
至此,网络挂载nfs成功。