上回我们学习到网络环境搭建的作用与方法,今天则完成了PC,Ubuntu虚拟机和正点原子Linux开发板三者互连,然而因为Ubuntu22.04无法启动低版本NFS,导致无法挂载根文件系统也就是不能完全移植,因此解决方法是之后将Linux内核版本降低为18.04. 那就先讲下所做的工作吧。
1.网络拓扑
1.1 Vmware
通过网线将开发板连接PC以太网网卡。网络为
PC->Ubuntu虚拟机上网: WIFI网卡->VMnet8
Linxu开发板->Ubuntu虚拟机: 以太网网卡->VMnet0
设备 | IP地址 |
---|---|
WIndows主机 | 192.168.10.200 |
Ubuntu虚拟机 | 192.168.10.100 |
Linux开发板 | 192.168.10.50 |
注意VMware软件中此时已经设置的是PC校园网随机分配的IP地址.
并且向Ubuntu虚拟机添加网络适配器2,
1.2Ubuntu
在Ubuntu虚拟机中配置网络.
1.NAT网络适配器VMnet8可以自动获取IP地址,
2.桥接模式网络适配器VMnet0为自行分配的Ubuntu虚拟机IP地址.
[!warning]- 有线-IPv4-路由设置勾选"仅对该网络上的资源使用此连接"选项以保证Ubuntu虚拟机的正常上网, 并重启.
1.3Windows网络
在window主机配置网卡
1.配置与开发板连接的以太网网卡IPv4网络,包括IP地址, 子网掩码和默认网关.
注意IP地址与默认网关应在同一网段.
1.4开发板配置
开发板设置网络环境变量
1.Uboot配置版本
2.Linux配置版本
其中Uboot每次上电都需要修改环境变量, 希望是验证有误
互连验证方法是用Uboot去ping Ubuntu虚拟机的IP地址,成功显示为xxxx is alive。
Linux有待测试。
可以发现, 需要确保在同一网段的设备是:
- Ubuntu ens33(桥接模式网络适配器)的IP地址,
- PC的以太网网卡的IP地址
- 开发板的IP地址
- 默认网关
[!warning] 上述地址的设置涉及多个设备, 修改还需注意。
2.网络连接
这时让开发板用网线连接PC,当进入Uboot命令行模式
后,以太网网卡才能识别开发板网关FEC1,此时就可以使用NFS或者TFTP服务进行上下载文件和挂载根文件系统了。简单来说,可以使用TFTP进行给予UDP的文件下载,NFS进行TCP的根文件系统挂载。
- 配置TFTP服务下载文件
1.安装TFTP
2.然后创建有读写权限的共享文件夹
3.然后写tftp
的网络配置文件/etc/xinetd.d/tftp
和/etc/default/tftpd-hpa
4.重新启动tftp
服务
然后就可以使用tftp指令
上下载文件了。
- 配置
Ubuntu18.04
环境及以下的NFS服务挂载根文件系统
1.安装
NFS
2.创建有读写权限的共享文件夹
3.配置NFS共享权限文件/etc/exports
和IP访问权限文件/etc/hosts
4.sudo cat /proc/fs/nfsd/versions
检查支持NFS版本,没有直接重装低版本Linux!!!😠
5.sudo vim /etc/default/nfs-kernel-server
修改nfs支持版本
6.sudo vim /etc/nfs.conf
为Ubuntu18.04
版本后修改nfs支持版本;
7.重启nfs服务并sudo cat /proc/fs/nfsd/versions
检查版本, 版本兼容则可以去测试挂载根文件系统了.
8.如果不行, 建议关闭Ubuntu防火墙或换低版本Ubuntu以兼容硬件, 注意正点原子的imx6ull板子的Uboot
当前仅支持nfsv2
,Ubuntu22.04
压根没有😢
参考资料:
嵌入式Linux开发——解决uboot无法使用nfs服务从ubuntu中下载文件(TTT、cannot mount等错误)uboot nfs_门牙会稍息的博客-CSDN博客
nfs下载镜像报错File lookup fail、“TTTTTTTTTTTTTTT”Kashine的博客-CSDN博客
Ubuntu22.04虚拟机通过NFS连接开发板_爱折腾的捣蛋鬼的博客-CSDN博客
解决Ubuntu 22.04 LTS作为nfs server时根文件系统挂载失败的问题_ubantu20.4挂载nfs超时_cosmosZ000的博客-CSDN博客
用NFS挂载根文件系统详解(带nfs版本不兼容问题的解决方法)正在起飞的蜗牛的博客-CSDN博客