在项目开发测试阶段时,频繁修改烧写 SD 或者 eMMC 将使得开发效率大大降低,在开发测试阶段,为了快捷的替换镜像文件以及文件系统中的可执行文件,配置文件等等,可以将嵌入式系统的文件系统,通过NFS 方式挂在到本地 HOST 端,方便移动修改文件。本文以 IMX8MQ EVK 开发板做参考,介绍了两种 NFS挂载方式。
一、 配置 Ubuntu 环境
1.1 主机网络设置
(1)关闭主机防火墙和 WiFi 功能。
(2)进入 DOS 页面,使用命令“ipconfig”查看以太网 IP 地址。
ps:该操作若查看不到相应 IP 地址,则用网线将电脑和开发板连接,启动开发板后再来查看电脑端 IP 。
1.2 虚拟机网络设置
(1)关闭原 Ubuntu ,重新打开并设置网络模式为桥接,重新启动虚拟机。
ps:这里需要注意桥接时使用的适配器需要和主机上以太网对应的适配器相对应。
(2)关闭虚拟机防火墙:
$ sudo service firewalld stop $ sudo service firewalld status //关闭以后应该显示为 inactive |
(3)使用命令“ifconfig”查看当前网络情况,将 Ubuntu IP 重新设置,使其与主机处于同一网段。
$ ifconfig ens33 169.254.3.10 netmask 255.255.255.0 //有些电脑为 eth0 eth1 ,根据自己电脑情况进行调整设置 |
(4)配置 TFTP :
① 修改配置文件如下:
$ sudo vim /etc/xinetd.conf service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /home/jy/tftp //此为内核设备树镜像所在文件夹绝对路径 disable = no } $ sudo service xinetd start |
② 验证 TFTP 功能:
$ tftp localhost tftp> get {An Image found in the tftp folder} tftp> quit //可在当前目录下查看到从 tftp 文件夹下下载的文件 |
(5)配置 NFS :
$ sudo vim /etc/exports /home/jy/tftp/NFS-8mq *(rw,sync,no_root_squash,no_subtree_check) //注意:需要在 root 身份下对 rootfs.tar.bz2 进行解压,并给予 NFS-8mq 文件夹 777 权限
$ sudo service portmap restart $ sudo service nfs-kernel-server restart |
(6)配置 DHCP :
$ sudo apt-get install isc-dhcp-server $ sudo vim /etc/default/isc-dhcp-serverINTERFACES=”ens33” |
//将 INTERFACES 的内容补充为虚拟机网卡名称
$ sudo vim /etc/dhcp/dhcpd.conf
$ sudo service isc-dhcpd-server restart $ sudo netstat -uap |
二、 配置开发板
2.1 使用 DHCP + NFS 启动开发板
(1)将开发板和电脑用网线连接起来,并启动开发板进入 u-boot 命令行模式,设置环境变量:
u-boot=> setenv ipaddr 169.254.3.10 u-boot=> setenv serverip 169.254.3.30 u-boot=> setenv gatwayip 169..254.3.11 u-boot=> setenv netmask 255.255.255.0 u-boot=> saveenv u-boot=> ping 169.254.3.30 u-boot=> ping 169.254.3.20 |
(2)设置启动环境变量:
u-boot=> setenv rootfsinfo ‘setenv bootargs ${bootargs} root=/dev/nfs ip=dhcp nfsroot=${serverip}:/home/jy/tftp/NFS-8mq,v3,tcp rw’ u-boot=> setenv bootcmd_net ‘run rootfsinfo; dhcp ${loadaddr} ${image}; dhcp ${fdt_addr} ${fdt_file}; booti ${loadaddr} - ${fdt_addr}’ u-boot=> saveenv u-boot=> run bootcmd_net |
(3)启动 log 显示如下:
|
2.2 使用 TFTP + NFS 启动开发板
(1)设置第一步同 2.1 小节第一步,第二步设置如下:
u-boot=> setenv rootfsinfo ‘setenv bootargs ${bootargs} root=/dev/nfs ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}::eth0:off nfsroot=${serverip}:/home/jy/tftp/NFS-8mq,v3,tcp’ u-boot=> setenv bootcmd_net ‘run rootfsinfo; tftp ${loadaddr} ${image}; tftp ${fdt_addr} ${fdt_file}; booti ${loadaddr} - ${fdt_addr}’ u-boot=> run bootcmd_net_tftp |
参考资料:
- i.MX_Linux_User's_Guide
- i.MX_Reference_Manual
评论