首页 > 系统相关 >[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区

[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区

时间:2023-01-17 18:31:51浏览次数:75  
标签:Firefly Kernel RKDevTool 分区 boot Ubuntu 固件 rootfs


[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_linux

我们定制自己的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分区_linux_02

2、环境搭建

环境搭建主要就是安装RK驱动助手

  1. 右键点击以管理员身份DriverAssitant
  2. 点击驱动安装(注意:如果大家以前安装过该驱动,要首先点击驱动卸载,待卸载完毕后再点击安装!)

3、只单独更新某个分区的固件

首先板卡要进入升级模式,进入升级模式后,打开​​RKDevTool​​工具,下方打印着“发现一个LOADER设备”,此时我们点击读取分区表

[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_ubuntu_03


​Ubuntu​​​系统有些分区在原始的​​RKDevTool​​​工具的配置文件中不一定存在,不存在的分区会报错,这些不用理会,点击​​OK​​即可:

[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_芯片_04


在读取分区表后,​​RKDevTool​​工具中存在的分区同时会同步到分区的起始地址,此时我们找到相应的分区加载自己的固件即可:

[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_芯片_05


打上前面的​​√​​,点击运行即可:

[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_芯片_06


单独更新其他分区的固件也是同理的!

4、​​RKDevTool​​​保存​​Ubuntu​​系统分区配置文件

我们看到默认的​​RKDevTool​​​有些分区在​​Ubuntu​​​系统是存在的,有些却没有,为了方便后面的调试,保存​​Ubuntu​​系统分区的配置文件!

我们首先对​​RKDevTool​​相应分区出单击再右键删除​​Ubuntu​​​系统不存在的分区,同时增添一些​​RKDevTool​​​不存在的​​Ubuntu​​系统分区,然后点击读取分区表更新分区地址(注意:rootfs​userdata​分区不需要添加):

[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_芯片_07


在空白处右键导出配置文件,并保存为​​rk356x-ubuntu-config.cfg​​:

[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_linux_08


[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_芯片_09


在下次打开​​RKDevTool​​工具的时候可以重新加载这个配置文件,同样右键导入​​rk356x-ubuntu-config.cfg​​配置文件:

[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_linux_10


[RK356x] [Firefly-Ubuntu] 10min教你单独更新Kernel到Ubuntu系统的boot分区_linux_11


可以看到​​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​​系统固件的绝大部分,两者烧写所花时间差别不大,完全没必要只单独更新根文件系统。


标签:Firefly,Kernel,RKDevTool,分区,boot,Ubuntu,固件,rootfs
From: https://blog.51cto.com/u_13726704/6017615

相关文章