Linux必学知识点:单独编译、烧写构建某个镜像,打包Linux系统镜像
本文目录
- 一、单独编译uboot镜像
- 二、单独编译内核和设备树镜像
- 三、单独编译Recovery 镜像
- 四、单独编译文件系统镜像
- 五、打包所有镜像文件
- 六、单独烧写某个镜像文件

使用相同的Uboot和Kernel,加上不同的文件系统,构成不同的系统。
一、单独编译uboot镜像
在使用命令./build.sh uboot
编译 U-Boot 时,会使用默认的配置文件进行编译,针对 RK3568 平台,默认配置文件位于 configs/rk3568_defconfig
。当你修改了 U-Boot 的配置后,需要将修改保存到默认配置文件中。
-
修改uboot配置
在u-boot目录下使用命令:export ARCH=arm64
选择arm架构,然后使用make menuconfig
来打开图形化配置界面,然后根据实际来选择配置。选择完成后选择保存,会在当前目录下生成.config
配置文件。 -
替换默认配置文件
将修改配置后生成的.config文件,替换原来的默认文件的内容。使用命令:cp .config configs/rk3568_defconfig
。 -
编译uboot
在Linux源码目录下,输入./build.sh uboot
命令单独对uboot镜像进行编译。编译成功以后会在u-boot日录下生成uboot.img镜像文件,如下图所示:
二、单独编译内核和设备树镜像
在Linux源码目录下,输入./build.sh kernel
命令单独对kernel镜像进行编译。编译完成后映像文件 kernel.img
、resource.img
(设备树镜像) 会打包成 boot.img
放到kernel目录,如下图所示:
在编译内核时,使用默认的配置文件来进行编译,针对 RK3568 平台的默认配置文件为 arch/arm64/configs/rockchip_linux_defconfig
。当你修改了内核配置后,需要将更改保存到这个默认配置文件,并单独编译内核。
-
修改kernel配置
在kernel
目录下使用命令:export ARCH=arm64
选择arm架构,然后使用make menuconfig
来打开图形化配置界面,然后根据实际来选择配置。选择完成后选择保存,会在当前目录下生成.config
配置文件。 -
替换默认配置文件
将修改配置后生成的.config
文件,替换原来的默认文件的内容。使用命令:cp .config arch/arm64/configs/rockchip_linux_defconfig
。 -
编译kernel
输入./build.sh kernel
命令单独对kernel镜像进行编译。
三、单独编译Recovery 镜像
- 概述
Recovery 镜像(Recovery Image)是嵌入式设备或移动设备中常见的一种系统映像,它通常包含一个最小化的操作系统和工具,用于恢复、修复或重新刷入设备的主系统。当主系统出现故障、损坏或无法启动时,Recovery 镜像可以作为备用系统,帮助用户恢复设备到正常状态。 - 编译
在Linux源码目录下,输入./build.sh recovery
命令单独对kernel镜像进行编译。编译完成后会在rockdev目录下生成recovery.img镜像文件。
四、单独编译文件系统镜像
更详细的文件系统构建流程查看地址。
- 选择板级配置
首先,需要选择适用于 RK3568 开发板的板级配置(这里指的是 rk3568-evb1-ddr4-v10)。这个配置文件包含关于开发板硬件的定义和编译选项,用于构建系统。
./build.sh BoardConfig-rk3568-evb1-ddr4-v10.mk
,这个命令会加载开发板的硬件配置,为接下来的文件系统编译做好准备。 - 选择文件系统
(1)编译 Buildroot 文件系统: 如果你选择使用 Buildroot,可以通过以下命令编译文件系统:./build.sh rootfs
,编译完成后,生成的文件系统镜像可以在以下位置找到:Linux 源码目录下的buildroot/output/rockchip_rk3568/images
。
(2)编译 Debian 文件系统: Debian 是一个广泛使用的 Linux 发行版,适用于较为完整的嵌入式系统开发。如果你需要使用 Debian 文件系统,运行以下命令:./build.sh debian
,编译完成后,生成的 Debian 文件系统镜像可以在以下位置找到:Linux 源码目录下的debian/linaro-rootfs.img
。
(3)编译 Yocto 文件系统: Yocto 是一个灵活的工具集,用于创建定制的嵌入式 Linux 系统。如果你选择使用 Yocto,运行以下命令:./build.sh yocto
,编译完成后,生成的 Yocto 文件系统镜像可以在以下位置找到:Linux 源码目录下的yocto/build/latest/rootfs.img
。
五、打包所有镜像文件
当你在 Linux 源码目录下单独编译完所有镜像(如 Buildroot、Debian、Yocto)后,可以将这些镜像打包为 update.img,用于烧写到设备上。以下是打包镜像的具体步骤:
- 打包固件镜像:
./build.sh firmware
- 生成 update.img 镜像:
./build.sh updateimg
打包完成后,最终的 update.img 文件会存放在 rockdev 目录下,可以通过工具(如 RKDevTool)将其刷入到 RK3568 开发板中。
六、单独烧写某个镜像文件
这里总的镜像文件的烧写就不做过多的介绍,可以查看其他博客来学习。我们来学习如何单独烧写某个镜像文件,如kernel、设备树、buildroot等。
注意:在单独烧写某个镜像前,最好先烧写一个完整的镜像,来验证设备的硬件和基础软件(如引导加载程序、内核、文件系统等)都工作正常,一旦你在这个基础上单独烧写某个镜像(如单独升级内核或文件系统),如果发现设备功能异常,你可以快速排查出是否是新烧写的镜像导致的问题,缩小排查范围。
-
完整流程
(1) 准备Linux单独镜像(可以自己编译Linux系统)。
(2)安装RKTools驱动。
(3)下载烧写工具:RKDevTool Release_v2.84
。
(4)设置拨码开关为烧写模式,并且连接好硬件。
(5)开始烧写。 -
烧录工具使用步骤
(1)将单独的镜像放到烧录工具以下目录中。
(2)导入配置
linux.cfg 是 Rockchip 平台烧录工具的重要配置文件,定义每个镜像的存放位置和加载地址。它描述了设备的分区布局、镜像路径、烧写顺序等信息,用于指导烧录工具将固件正确烧写到设备中。