![[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_rk3568](https://file.cfanz.cn/uploads/png/2023/01/17/10/412a53R8Y4.png)
我们定制自己的Ubuntu固件或者调试过程中往往需要修改Kernel,给Kernel进行功能裁剪或者添加,在修改并编译Kernel后,如果我们打包成整个Ubuntu固件再进行烧写,则太过于浪费时间了,这是因为一个Ubuntu固件的大小动不动就是以GB为单位,那么能不能只单独更新Kernel到boot分区呢?答案是肯定的!
在前一篇文章《[RK356x] [Firefly-Ubuntu] 10min带你了解Ubuntu固件各个分区》中,我带领大家了解到Ubuntu固件各个分区,以下是Linux_SDK的rockdev目录下的各个分区固件,其中烧写到内核分区的文件是boot.img!从软链接就可以看出boot.img指向的是kernel目录下的boot.img。
neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_20211019$ ls -l rockdev/boot.img
lrwxrwxrwx 1 neutionwei neutionwei 18 Jan 20 09:07 boot.img -> ../kernel/boot.img
文章目录
- 1、准备工具
- 2、环境搭建
- 3、只单独更新某个分区的固件
- 4、`RKDevTool`保存`Ubuntu`系统分区配置文件
- 5、为何不添加`rootfs`与`userdata`分区?
1、准备工具
工欲善其事,必先利其器,为了尽可能避免发生奇怪的错误,我在这里列举一下大家需要用到的工具:
- PC机:Windows 10系统
- RK驱动助手:DriverAssitant(瑞芯微驱动助手),版本 >= 5.1.1
- AndroidTool烧写工具:RKDevTool,版本 >= 2.81
- 良好的Type-C 数据线
RK驱动助手与AndroidTool烧写工具可以到Firefly官方进行下载,链接如下:
https://www.t-firefly.com/doc/download/107.html
大家点击以下图片中指向的地方进行下载:
![[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_ubuntu_02](https://file.cfanz.cn/uploads/png/2023/01/17/10/8I961K0Q0S.png)
2、环境搭建
环境搭建主要就是安装RK驱动助手:
- 右键点击以管理员身份DriverAssitant;
- 点击驱动安装(注意:如果大家以前安装过该驱动,要首先点击驱动卸载,待卸载完毕后再点击安装!)
3、只单独更新某个分区的固件
首先板卡要进入升级模式,进入升级模式后,打开RKDevTool工具,下方打印着“发现一个LOADER设备”,此时我们点击读取分区表:
![[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_运维_03](https://file.cfanz.cn/uploads/png/2023/01/17/10/N36f43517I.png)
Ubuntu系统有些分区在原始的RKDevTool工具的配置文件中不一定存在,不存在的分区会报错,这些不用理会,点击OK即可:
![[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_linux_04](https://file.cfanz.cn/uploads/png/2023/01/17/10/PGaI432ED4.png)
在读取分区表后,RKDevTool工具中存在的分区同时会同步到分区的起始地址,此时我们找到相应的分区加载自己的固件即可:
![[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_rk3568_05](https://file.cfanz.cn/uploads/png/2023/01/17/10/A2XVPcU0K6.png)
打上前面的√,点击运行即可:
![请添加图片描述 [RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_运维_06](https://file.cfanz.cn/uploads/png/2023/01/17/10/CWfa1Ke4bH.png)
单独更新其他分区的固件也是同理的!
4、RKDevTool保存Ubuntu系统分区配置文件
我们看到默认的RKDevTool有些分区在Ubuntu系统是存在的,有些却没有,为了方便后面的调试,保存Ubuntu系统分区的配置文件!
我们首先对RKDevTool相应分区出单击再右键删除Ubuntu系统不存在的分区,同时增添一些RKDevTool不存在的Ubuntu系统分区,然后点击读取分区表更新分区地址(注意:rootfs与userdata分区不需要添加):
![[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_linux_07](https://file.cfanz.cn/uploads/png/2023/01/17/10/VZ7Y6H533f.png)
在空白处右键导出配置文件,并保存为rk356x-ubuntu-config.cfg:
![请添加图片描述 [RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_运维_08](https://file.cfanz.cn/uploads/png/2023/01/17/10/1CIc6a5I3L.png)
![请添加图片描述 [RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_ubuntu_09](https://file.cfanz.cn/uploads/png/2023/01/17/10/DCAX997MbY.png)
在下次打开RKDevTool工具的时候可以重新加载这个配置文件,同样右键导入rk356x-ubuntu-config.cfg配置文件:
![请添加图片描述 [RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_ubuntu_10](https://file.cfanz.cn/uploads/png/2023/01/17/10/897730fK30.png)
![请添加图片描述 [RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_运维_11](https://file.cfanz.cn/uploads/png/2023/01/17/10/cdcb2EQeb3.png)
可以看到RKDevTool工具的分区与我们之前修改的一致!
5、为何不添加rootfs与userdata分区?
(1)Firefly发布的Linux_SDK在打包固件的时候,对于rootfs分区的大小,会根据rootfs的实际文件大小进行动态变化,换句话说,parameter-ubuntu.txt文件中的0x00c00000@0x00038000(rootfs),-@0x00c38000(userdata:grow)内容的rootfs分区大小指定与userdata分区起始地址会动态发生修改!(参考:《[RK356x] [Firefly-Linux] 一节课间时间带你了解Ubuntu固件各个分区》)如果直接烧写rootfs过大将会造成文件系统覆盖到userdata分区。
(2)userdata分区一般与recovery分区进行出厂设置有联系。
(3)rootfs分区占了Ubuntu系统固件的绝大部分,两者烧写所花时间差别不大,完全没必要只单独更新根文件系统。









