陈工-创龙科技 发表于 2026-9-9 08:54:12

工控单板 Linux 系统使用指南|存储配置、升级与 OverlayFS 恢复出厂实操(三)

4.1.3 编译生成OTA升级包由于生成OTA升级包需要用到Simg2img工具,请执行如下命令安装相应依赖软件。Host#sudo apt-get install android-sdk-libsparse-utils
https://file1.elecfans.com/web3/M00/76/9F/wKgZPGqeYs2Ae1wvAAHTjcpBvs4987.png
请确保已按照《系统开发手册》的“编译Recovery”、“编译生成系统镜像”章节正确编译生成包含Recovery分区的完整系统镜像。修改"sw-description"或"sw-subimgs.cfg"后,需在LinuxSDK源码目录下,执行如下命令,重新生成OTA升级包。备注:如需编译生成eMMC配置单板机使用的OTA升级包,请先参考《系统开发手册》“LinxuSDK配置与编译”章节重新编译SDK。Host#cd /home/tronlong/T153/aiot-t153-linux-v1.0/Host#source build/envsetup.sh //加载Tina构建环境Host#swupdate_pack_swu //生成对应的OTA升级包
https://file1.elecfans.com/web3/M00/76/A1/wKgZO2qeYuGAYC5TAAF-6mtGjSE219.png

https://file1.elecfans.com/web3/M00/76/A1/wKgZO2qeYuCAIToPAACVrTQ2kPo276.png

https://file1.elecfans.com/web3/M00/76/9F/wKgZPGqeYuGAOI1SAAG3QvgO97M558.png

https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeY0iAU-mFAAEUz4Ptb1g040.png
生成的OTA升级包ubuntu_t153_sbc-tlt153-nand.swu位于LinuxSDK源码"out/t153/sbc-tlt153-nand/ubuntu/swupdate/"目录下。备注:eMMC版本OTA升级包ubuntu_t153_sbc-tlt153-emmc.swu位于LinuxSDK源码"out/t153/sbc-tlt153-emmc/ubuntu/swupdate/"目录下。Host#cd out/t153/sbc-tlt153-nand/ubuntu/swupdate/Host#ls
https://file1.elecfans.com/web3/M00/76/A1/wKgZO2qeY16AJmO8AACMOQVxBdc272.png

https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeY16AeE_HAACLdy0xv-8219.png
生成的OTA包体积因板级配置、打包内容的不同,会而有所差异,以实际为准,可以使用ls -lh命令查看OTA升级包大小。
https://file1.elecfans.com/web3/M00/76/A1/wKgZO2qeY3OAb_kTAABiai4oE2I532.png

https://file1.elecfans.com/web3/M00/76/A1/wKgZO2qeY3SAabdBAABhxeAG8QA117.png
4.1.4使用OTA升级包升级Linux系统请使用网线将单板机对应网口、PC机连接至同一个路由器。在Ubuntu系统执行如下命令查看PC机IP地址。Host# ifconfig
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeY4-AKRneAAGaJ8LOgIo931.png
执行如下命令,在OTA升级包所在目录启动HTTP服务。Host# python3 -m http.server --bind 0.0.0.0
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeY5iAecpfAABBwdkTZJ8797.png
进入单板机系统,执行如下命令,使用wget从Ubuntu下载OTA升级包到"/mnt/UDISK"目录下,命令中192.168.12.54为Ubuntu IP地址。Host# wget -O /mnt/UDISK/ubuntu_t153_sbc-tlt153-nand.swu http:// 192.168.12.54:8000/ubuntu_t153_sbc-tlt153-nand.swu
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeY6iALd2KAABJ7hzUiOY278.png
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeY6iAPbw-AABZh_3MbhQ354.png
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeY7WAAL_-AACCx76HL0g362.png
为避免下载OTA升级包不完全导致升级失败,需等待wget工具打印“saved [数据长度/数据长度]”,并使用ls -lh命令查看OTA升级包体积,确认与Ubuntu端一致后,方可进行OTA升级。Host# ls -lh /mnt/UDISK/ubuntu_t153_sbc-tlt153-nand.swu
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeY8CAAGnvAAAYvZPB23E341.png
执行如下命令,进行OTA升级。该命令仅需执行一次,**upgrade_kernel、upgrade_usr阶段由Recovery系统内的脚本S99swupdate_autorun,根据env中保留的swu_param变量自动执行余下升级步骤。OTA升级完整日志信息保存在"/mnt/UDISK/swupdate.log"文件中。备注:升级过程中,单板机将会重启两次,第一次重启是为了进入Recovery模式进行系统升级,第二次重启是系统升级完成后单板机重启。Target# swupdate_cmd.sh -i /mnt/UDISK/ubuntu_t153_sbc-tlt153-nand.swu -e stable,upgrade_recovery
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeY8-ADYFnAAD0m9hRevc292.png
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeY8-AWxarAACSL69GhXA997.png
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeY8-AbnyOAADuYXjf0g4038.png
系统升级完成,单板机重新启动后将自动登录系统,打印信息如下。
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeY-2AIoXYAAA5JG6NDA0048.png
升级过程日志信息保存在"/mnt/UDISK/swupdate.log"文件中。
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeY_qAHnXSAAANrw2LaJE653.png
4.2 通过USB方式升级本章节演示通过U盘进行OTA升级系统,通过U盘进行OTA升级可以实现部分分区升级或者完整Linux系统镜像升级。备注:U盘格式只支持FAT,推荐使用FAT32。
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZBmAUjVJAABSlfLy3p0011.png
4.2.1 制作系统升级U盘升级U盘目录结构如下图所示,update目录用于存放升级所需的文件,auto_update.txt用于定义升级规则,目录下存放的fex文件需与auto_update.txt中的定义匹配,否则升级过程会产生报错。update目录名称以及auto_update.txt文件名固定。
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZC2AFqpeAAAknTWPGjM289.png
uto_update.txt文件内容如下:
#请根据所需升级存储介质的固件,选择对应启动模式,例如升级eMMC固件,请从eMMC启动系统#(1)升级eMMC/eMMC配置系统启动卡固件#sunxi_flash write update/boot-resource.fex boot-resource#sunxi_flash write update/env.fex env#sunxi_flash write update/env.fex env-redund#sunxi_flash write update/boot.fex boot#sunxi_flash write update/dtbo.fex dtbo#sunxi_flash write update/dtbo.fex dtbo-r#sunxi_flash write update/rootfs.fex rootfs
#(2)升级eMMC完整固件#sunxi_flash write update/t153_linux_sbc-tlt153-nand_uart0.img firmware
#(3)升级NAND FLASH固件#sunxi_flash write update/boot-resource.fex boot-resource#sunxi_flash write update/env.fex env-redund#sunxi_flash write update/boot.fex boot#sunxi_flash write update/rootfs-ubifs.fex rootfs
#(4)升级NAND FLASH完整固件#sunxi_flash write update/t153_linux_sbc-tlt153-nand_uart0.img firmware
#(5)升级NAND FLASH配置Linux系统启动卡固件#sunxi_flash write update/boot-resource.fex boot-resource#sunxi_flash write update/env.fex env#sunxi_flash write update/boot.fex boot#sunxi_flash write update/rootfs-ubifs.fex rootfs%
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZDqAa-SjAADo9qNHylw490.png
auto_update.txt升级命令格式为"sunxi_flash write ",其中:sunxi_flash write:前置命令(不可变):下载文件的绝对路径:文件要下载到的分区名(根据sys_partition.fex来确定具体分区名)请确保已按照《系统开发手册》正确编译LinuxSDK,并打包镜像,可用的升级文件位于LinuxSDK源码"out/pack_out/"目录下。
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZEeAfwhZAALo7pJccFQ765.png
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZFSAU3TFAAA8528MkG4029.png
4.2.2 U盘升级演示本次以NAND FLASH配置单板机进行U盘升级演示,请取消auto_update.txt文件中NAND FLASH固件升级栏目下"sunxi_flash write update/boot.fex boot"行前的注释。
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeZGWAQx4yAADoQrkfgVQ636.png
将制作好的升级U盘连接至单板机任一USB 2.0 HOST接口,单板机上电,在U-Boot倒计时结束前长按"Ctrl + C"进入U-Boot命令行模式,在U-Boot命令行输入如下命令执行U自动升级检查,系统将自动根据auto_update.txt中定义的规则进行升级。
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeZHGAK1IYAAlhtZcDp3Y391.png
U-Boot# auto_update_check
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZHuACWiYAABACLGoaCg692.png
系统升级完成,单板机重新启动后将自动登录单板机系统,打印信息如下。
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZImAQvUOAAA4sGJkVjE312.png
单独升级内核,会导致内核版本和文件系统中内核模块版本不一致,从而无法自动加载模块,可参考《系统开发手册》“Kernel开发”章节,替换相同版本的内核模块。目前支持U盘升级的固件如下表所示。
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZJKAJnv7AAAhD1CZ2ss906.png
5 OverlayFS使用说明本章节演示通过Overlayrs特性实现恢复出厂设置功能,将文件系统恢复至初始状态。5.1 OverlayFS简介OverlayFS是Linux内核中的一种联合挂载文件系统挂载服务,通过合并多个目录最终实现分层存储管理。OverlayFS文件系统由下层目录(Lowerdir)、上层目录(Upperdir)、工作目录(Workdir)和合并目录(Merged)构成。通过写时复制机制优先展示上层文件,利用whiteout机制和opaque目录实现文件删除功能。
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZJ-AV9dQAAAyjtjhNTo479.png
具体实现原理如下图所示:
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZK-AIg3SADFSU-SxdNw376.png
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZLaAdLBDAACZ51s4K2Y062.png
更多详情可访问官方网站:https://www.kernel.org/doc/html/latest/filesystems/overlayfs.html。在支持OverlayFS的设备上,系统采用分层存储机制保护rootfs分区。rootfs分区以只读方式挂载至"/root-ro"(lower层),确保原始系统镜像免受意外修改或损坏。并且,所有用户修改均定向写入userdata分区的"/userdata/rootfs_overlay"(upper层),而非直接操作rootfs分区。Target#mount
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeZNOAGrHkAADWpKgrM30029.png
若在"/root-ro/"(lower层)目录中创建文件,会提示只读,无法写入。Target#cd /root-ro/Target#touch test
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZOCAWvsvAAAQ2Sy4YWI120.png
若在用户目录(merge层)中,则可以创建,写入文件。Target#cd /root/Target#echo "hello world" > test.txtTarget#cat test.txt
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeZO-AFy4uAAAR3twDR88979.png
5.2 恢复出厂设置功能演示本章节演示通过恢复出厂设置操作将文件系统回溯至初始状态。此操作可彻底清除用户数据及自定义配置,使系统重置为最近一次完成系统镜像固化的状态。请先参考本文档中的“网络配置说明”章节,配置任意网口的静态IP。以下以配置LAN1网口静态IP作为演示。配置完成后,可以看到LAN1网口的IP地址被修改为192.168.11.99。当恢复出厂设置时,该配置将失效,恢复为初始的动态获取IP。
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZQyAcL49AACWZt-Lw8g542.png
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeZQyAH-K-AAAfy5IzvOU824.png
Overlay通过联合挂载技术将"/root-ro"(lower层)和"/userdata/rootfs_overlay"(upper层)合并为一个视图(merge层),使lower层对用户不可见。当修改文件时,系统自动执行写时复制机制,若文件存在于lower层,系统会先将其复制到upper层,随后仅对upper层的副本进行修改;若文件仅存在于upper层(如用户新增文件),则直接在该层操作。执行如下命令,进行恢复出厂设置。在这个过程中,单板机将进入Recovery模式,进行格式化处理,其中"/root-ro"(lower层)的内容将得到保留,格式化完成之后系统将自动引导进入文件系统。Target# update
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeZR6AHY-rAACDrEBC3MY729.png
进入系统后,可查看到静态IP配置修改已清除,"/etc/systemd/network/eth0.network"LAN1网络配置相关文以及IP地址成功恢复成初始状态。
Target# cat /etc/systemd/network/eth0.network //查看eth0.network文件内容
https://file1.elecfans.com/web3/M00/76/A0/wKgZPGqeZSeAdbA0AACVT7tFEc4178.png
https://file1.elecfans.com/web3/M00/76/A2/wKgZO2qeZSaAEP-xAAAWCjRSaGc982.png
页: [1]
查看完整版本: 工控单板 Linux 系统使用指南|存储配置、升级与 OverlayFS 恢复出厂实操(三)

Baidu
map