基于RK3588单板机Linux系统操作指南(二) 电子说
4 系统OTA升级说明
本章节主要介绍使用update工具进行OTA升级系统的方法。可通过网络自动下载升级固件进行升级;亦可通过下载升级固件至USB设备(例如U盘)后,再进行系统升级。
关于OTA升级更多说明请查阅产品资料“6-开发参考资料Rockchip官方参考文档LinuxRecovery”目录下的《Rockchip_Developer_Guide_Linux_Recovery_CN》文档。
备注:目前仅支持从eMMC启动系统进行OTA升级。
4.1通过网络方式升级
执行如下命令,安装http服务器,安装成功后可看到"/var/www/html"目录下的index.html文件。
Host# sudo apt-get update
Host# sudo apt-get install apache2


执行如下命令,重启apache2服务。
Host# sudo /etc/init.d/apache2 restart

执行如下命令,查看PC机IP地址。
Host# ifconfig

通过浏览器访问"http://192.168.12.28/",其中192.168.12.28为PC机IP地址,显示"It works!"表示服务器搭建成功。

请将升级固件update.img拷贝至自定义的文件夹。执行如下命令,在"/var/www/html/"目录下创建一个文件夹存放update.img升级固件。
Host# sudo mkdir /var/www/html/file
Host# cd /var/www/html/file


通过浏览器访问"http://192.168.12.28/file",其中192.168.12.28为PC机IP地址,可看到通过客户端访问服务器的文件。

进入单板机系统,执行如下命令将update.img升级固件从http服务器端下载至单板机系统用户数据分区"/userdata/"目录下,其中192.168.12.28为PC机IP地址。
备注:由于使用update工具进行系统升级时,仅支持从系统"/userdata/"挂载点获取升级镜像,因此需将升级固件拷贝至"/userdata/"。
Target# wget http://192.168.12.28/file/update.img -P /userdata

执行如下命令,进入recovery模式并进行Linux系统升级。
备注:升级过程中,单板机将会重启两次,第一次重启是为了进入recovery模式进行系统升级,第二次重启是系统升级完成后单板机重启。
Target# update ota /userdata/update.img

系统升级完成,单板机重新启动后将自动登录系统,打印信息如下。

4.2通过USB方式升级
(1)拷贝升级固件至eMMC升级
请先将升级固件update.img通过USB设备拷贝至单板机系统用户数据分区"/userdata/"目录。执行命令,进入recovery模式并进行系统升级,打印信息如下。
备注:
a) 由于使用update工具进行系统升级时,仅支持从系统"/userdata/"挂载点获取升级镜像,因此需将升级固件拷贝至"/userdata/"。
b) USB设备节点请以实际为准。
Target# cp /media/sda2/update.img /userdata/
Target# update ota /userdata/update.img

系统升级完成,单板机重新启动后将自动登录系统,打印信息如下。

(2)直接从USB设备进行升级
由于使用update工具从USB设备进行系统升级时,仅支持从系统"/udisk"挂载点获取升级镜像,因此需将USB设备重新挂载至"/udisk"。
备注:
a) 当接入多个USB设备时,请注意识别存放升级镜像的USB设备的分区。
b) 为确保升级流程顺利完成,需严格遵循以下环境准备要求:升级所需的镜像文件(update.img)必须存放于"/udisk/"根目录下,此路径为update程序默认的资源加载位置,若文件存放路径错误将导致程序无法识别升级资源;同时需在执行update程序前预先创建"/userdata/"空目录,这是由于升级过程中update程序会执行关键路径完整性检测,若检测到该目录不存在,系统将触发保护机制自动终止升级流程并退出Recovery模式,最终导致升级失败。
执行如下命令,查看U盘挂载路径。
Target# df -h

Target# umount /dev/sda2
Target# mkdir -p /udisk
Target# mount /dev/sda2 /udisk
Target# mkdir -p /userdata
Target# update ota /udisk/update.img

系统升级完成,单板机重新启动后将自动登录单板机系统,打印信息如下。

注意:
(1)同时升级系统多个分区时,userdata分区容量可能无法满足升级固件(update.img)的大小,导致升级固件update.img无法完整拷贝至"/userdata/"目录下,从而导致OTA升级失败,所以升级前请确保userdata分区容量充足。同时,推荐对升级固件分区进行裁剪(分多次升级),或参考《系统开发手册》文档的“配置分区大小”章节,拓展userdata分区的容量。
(2)如需定制升级固件update.img,推荐仅保留需要升级的局部分区,减少升级固件update.img大小。
(3)如在package-file文件中配置了recovery分区升级,则recovery.img将不会在recovery模式中升级,为预防出现在升级recovery.img过程中掉电导致后面其他分区无法正常升级的问题,recovery分区在当前运行的默认系统下进行升级,即执行"update ota /userdata/update.img"命令后会先检测update.img升级固件中是否有打包recovery.img,若有则先升级recovery分区,再进入recovery模式升级其他分区固件;若没有则直接进入recovery模式进行固件升级。
(4)misc分区不推荐打包至update.img升级固件中,在升级程序中该分区将被忽略,即使升级misc分区,升级成功后recovery程序仍会清空misc分区中所有命令及参数,从而导致无法达到预期结果。
5 OverlayFS使用说明
本章节演示通过Overlayrs特性实现恢复出厂设置功能,将文件系统恢复至初始状态。
5.1 OverlayFS简介
OverlayFS是Linux内核中的一种联合挂载文件系统挂载服务,通过合并多个目录最终实现分层存储管理。
OverlayFS文件系统由下层目录(Lowerdir)、上层目录(Upperdir)、工作目录(Workdir)和合并目录(Merged)构成。通过写时复制机制优先展示上层文件,利用whiteout机制和opaque目录实现文件删除功能。

具体实现原理如下图所示:


更多详情可访问官方网站:https://www.kernel.org/doc/html/latest/filesystems/overlayfs.html。
在支持OverlayFS的设备上,系统采用分层存储机制保护rootfs分区。rootfs分区以只读方式挂载至"/root-ro"(lower层),确保原始系统镜像免受意外修改或损坏。并且,所有用户修改均定向写入userdata分区的"/userdata/rootfs_overlay"(upper层),而非直接操作rootfs分区。
Target# mount

若在"/root-ro/"(lower层)目录中创建文件,会提示只读,无法写入。
Target# cd /root-ro/
Target# touch test

若在用户目录(merge层)中,则可以创建,写入文件。
Target# cd /root/
Target# echo "hello world" > test.txt
Target# cat test.txt

5.2恢复出厂设置功能演示
本章节演示通过恢复出厂设置操作将文件系统回溯至初始状态。此操作可彻底清除用户数据及自定义配置,使系统重置为最近一次完成系统镜像固化的状态。
执行如下命令配置LAN2网口静态IP作为演示。配置完成后,可以看到LAN2网口的IP地址被修改为192.168.11.195。当恢复出厂设置时,该配置将失效,恢复为初始的动态获取IP。
Target# nmcli con mod "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.11.195/24 ipv4.gateway 192.168.11.254
Target# nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 8.8.4.4"
Target# nmcli con up "Wired connection 1"

Overlay通过联合挂载技术将"/root-ro"(lower层)和"/userdata/rootfs_overlay"(upper层)合并为一个视图(merge层),使lower层对用户不可见。当修改文件时,系统自动执行写时复制机制,若文件存在于lower层,系统会先将其复制到upper层,随后仅对upper层的副本进行修改;若文件仅存在于upper层(如用户新增文件),则直接在该层操作。
执行如下命令,验证这一机制在文件系统中的表现,可观察到单板机文件系统分别在"/etc/NetworkManager/system-connections"(merge层)目录与"/userdata/rootfs_overlay/etc/NetworkManager/system-connections"(upper层)目录下会自动生成静态IP配置文件。
Target# ls -l /etc/NetworkManager/system-connections //查看"/etc/NetworkManager/system-connections"文件
Target# ls -l /userdata/rootfs_overlay/etc/NetworkManager/system-connections //查看"userdata/rootfs_overlay/etc/NetworkManager/system-connections"文件

在"/root-ro/etc/NetworkManager/system-connections"(lower层)下,该文件没有生成。
Target# ls -l /root-ro/etc/NetworkManager/system-connections //查看"/root-ro/etc/NetworkManager/system-connections"文件

执行如下命令,进行恢复出厂设置。在这个过程中,单板机将进入recovery模式,进行格式化处理,其中"/root-ro"(lower层)的内容将得到保留,格式化完成之后系统将自动引导进入文件系统。
Target# update

进入系统后,可查看到静态IP配置修改已清除,"/userdata/rootfs_overlay"(upper层)相关文件消失,且IP地址成功恢复成初始状态。
Target# ls -l /etc/NetworkManager/system-connections //查看"/etc/NetworkManager/system-connections"文件
Target# ls -l /userdata/rootfs_overlay/etc/NetworkManager/system-connections //查看"userdata/rootfs_overlay/etc/NetworkManager/system-connections"文件
Target# ifconfig //查看IP地址

由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注Tronlong创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !