2. RAUC及依赖工具解压
(1) liblz4.tar.bz2在OK8MP-linux-fs/rootfs/usr/lib目录下解压
forlinx@ubuntu:~/OK8MP-linux-sdk/OK8MP-linux-fs/rootfs/usr/lib$ tar -xvf liblz4.tar.bz2
(2) fw_setenv.tar.b z2在OK8MP-linux-fs/rootfs/目录下解压
forlinx@ubuntu:~/OK8MP-linux-sdk/OK8MP-linux-fs/rootfs$ tar -xvf fw_setenv.tar.bz2
(3) unsquashfs.tar.bz2在OK8MP-linux-fs/rootfs/目录下解压
forlinx@ubuntu:~/OK8MP-linux-sdk/OK8MP-linux-fs/rootfs$ tar -xvf unsquashfs.tar.bz2
(4) yocto-rauc-1.5.1.tar.bz2在OK8MP-linux-fs/rootfs/目录下解压
forlinx@ubuntu:~/OK8MP-linux-sdk/OK8MP-linux-fs/rootfs$ tar -xvf yocto-rauc-1.5.1.tar.bz2
3. 修改工具配置
(1) 修改fw_env.config指定env基地址
forlinx@ubuntu:~/OK8MP-linux-sdk/OK8MP-linux-fs/rootfs/etc$ gedit fw_env.config
删除原有内容只添加:
/dev/mmcblk2 0x400000 0x2000
(2) 修改RAUC配置文件
forlinx@ubuntu:~/OK8MP-linux-sdk/OK8MP-linux-fs/rootfs/etc/rauc$ gedit system.conf

注意:需要保证compatible和升级包内一致,分区内容正确。
(3) 修改编译脚本
forlinx@ubuntu:~/OK8MP-linux-sdk$ gedit tools/fakeroot.fs
需要注掉脚本的该部分

(4) 修改挂载配置文件
forlinx@ubuntu:~/OK8MP-linux-sdk/OK8MP-linux-fs/rootfs/etc$ gedit fstab
修改OK8MP-linux-fs/rootfs/etc/fstab文件如下
/dev/mmcblk2p3 /run/media/mmcblk2p3 auto defaults,sync,noauto 0 0
/dev/mmcblk2p4 /run/media/mmcblk2p4 auto defaults,sync,noauto 0 0

注:在这里主要是防止服务自动挂载分区导致升级时报分区已经挂载问题。
0
3 生成升级包
1. 全编译获取所需镜像
forlinx@ubuntu:~/OK8MP-linux-sdk$ . /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux
forlinx@ubuntu:~/OK8MP-linux-sdk$ . environment-setup-aarch64-poky-linux
forlinx@ubuntu:~/OK8MP-linux-sdk$ ./build.sh all
2. 拷贝镜像以及密钥文件
(1) 创建rauc文件夹
forlinx@ubuntu:~$ mkdir rauc
(2) 在rauc文件夹下创建build和bundle文件夹
forlinx@ubuntu:~/rauc$ mkdir build
forlinx@ubuntu:~/rauc$ mkdir bundle
(3) 将images下编译生成的boot.img和rootfs.ext4拷贝到bundle的文件夹
(4) 将提供测试的密钥文件解压到rauc文件夹下
forlinx@ubuntu:~/rauc$ tar -xvf key.tar.bz2

3. 创建升级包配置文件
在bundle文件夹下创建manifest.raucm升级包配置文件
forlinx@ubuntu:~/rauc/bundle$ geidt manifest.raucm
内容如下:
[update]
compatible=forlinx-imx8mp
version=r0
description=rauc bundle based on Forlinx-LINUX-5.4.70
build=20240306
[image.rootfs]
filename=rootfs.ext4
[image.boot]
filename=boot.img
4. 制作升级包
(1) 创建打包脚本
forlinx@ubuntu:~/rauc$ gedit run.do_bundle.sh
脚本内容如下:
#!/bin/shif[ -e build/bundle.raucb ]; thenrm build/bundle.raucbecho "---------------------rm old bundle.raucb-------------------------"fi rauc bundle --debug --cert="development-1.cert.pem"--key="development-1.key.pem" bundle build/bundle.raucb
(2) 赋予脚本权限
forlinx@ubuntu:~/rauc$ chmod 777 run.do_bundle.sh
(3) 生成升级包
forlinx@ubuntu:~/rauc$ ./run.do_bundle.sh
会在build文件夹下生成bundle.raucb升级包

0
4 系统升级
1. 把bundle.raucb升级包传到OKMX8MP-C开发板ext4分区内,以防有权限问题。
2. 查看系统状态和升级
root@OK8MP:~# rauc info bundle.raucb
(1)查看压缩包信息

(2)查看系统状态
root@OK8MP:~# rauc status

(3)系统升级
root@OK8MP:~# rauc install bundle.raucb

3. 切换启动分区
查看uboot环境变量
root@OK8MP:~# fw_printenv
配置从systme_1进行启动
root@OK8MP:~# fw_setenv doraucboot 1
root@OK8MP:~# sync
root@OK8MP:~# reboot
重新启动后查看系统状态
root@OK8MP:~# rauc status

0
5 回退版本
重新配置为system_0启动
root@OK8MP:~# fw_setenv doraucboot 0
root@OK8MP:~# fw_printenv //打印环境变量
root@OK8MP:~# sync
RAUC升级为两个系统交替替换,升级时一定要注意目前uboot引导的分区。