From 11e57219b9d2fe0834a9a24d1f986128cb26c1ab Mon Sep 17 00:00:00 2001 From: woodrabbit Date: Thu, 23 May 2024 23:13:59 +0800 Subject: [PATCH] Update openEuler-KMPE.md Added an explanation for the "make dtbs" command. Signed-off-by: woodrabbit --- .../openEuler-KMPE/openEuler-KMPE.md | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/playground/openEuler-Exp/openEuler-KMPE/openEuler-KMPE.md b/playground/openEuler-Exp/openEuler-KMPE/openEuler-KMPE.md index 7c7093a..1a0b09e 100644 --- a/playground/openEuler-Exp/openEuler-KMPE/openEuler-KMPE.md +++ b/playground/openEuler-Exp/openEuler-KMPE/openEuler-KMPE.md @@ -45,7 +45,6 @@ uname -r > uname_r.log # 保存当前内核版本信息 wget https://gitee.com/openeuler/kernel/repository/archive/openEuler-20.03-LTS-SP3.zip unzip openEuler-20.03-LTS-SP3.zip # kernel-openEuler-20.03-LTS-SP3 mv kernel-openEuler-20.03-LTS-SP3 kernel -cd kernel ``` 🔔 *注意* @@ -56,31 +55,48 @@ cd kernel #### 4. 编译内核 -```shell -make openeuler_defconfig -``` - -在这里,我们按源代码文件`kernel/arch/arm64/configs/openeuler_defconfig`配置内核。 +先进入内核目录查看内核可以编译成为何种类型的文件: ```shell +cd kernel make help | grep Image ``` -输出结果为: +这里输出结果为: ``` * Image.gz - Compressed kernel image (arch/arm64/boot/Image.gz) Image - Uncompressed kernel image (arch/arm64/boot/Image) ``` -这表示内核可编译为Image文件。 +表示内核可编译为Image类型的文件。 + +配置内核: + +```shell +make openeuler_defconfig +``` + +在这里,我们按源代码文件`kernel/arch/arm64/configs/openeuler_defconfig`配置了内核(会产生一个默认名称为`.config`的配置文件)。 ```shell echo $(nproc) # For instance: 4 -make -j$(nproc) Image modules dtbs +make -j$(nproc) Image +make -j$(nproc) modules +make -j1 dtbs ``` -上面的命令是以多线程编译内核的Image、modules和dtbs。为简单起见,我们将线程数设置成了核数。 +上面的命令是以多线程编译内核和内核模块。为简单起见,我们将线程数设置成了核数。然后,又以单线程编译了dtbs。那么,这里的`make dtbs`是什么意思呢?下面是一个参考回答: + +> 在Linux内核编译的上下文中,make dtbs 通常用于构建设备树源文件(Device Tree Source files)或设备树二进制文件(Device Tree Blobs, DTBs)。设备树(Device Tree)是一种数据结构,它描述了非平台特定的硬件细节,允许操作系统内核为给定硬件板卡上的设备提供合适的驱动程序和配置。 +> +> 具体来说,make dtbs 命令会执行内核源代码树中定义的规则,这些规则用于从设备树源文件(.dts 文件)生成二进制设备树(.dtb 文件)。这些 .dtb 文件随后可以被引导加载程序(如U-Boot)加载到内核,以便内核在启动时可以知道哪些设备存在以及它们的配置。 +> +> 在较新的内核版本中,你可能还会看到 make dtbs_install 这样的命令,它通常用于将生成的 .dtb 文件安装到某个特定的目录(如 /boot),以便在引导时可以被加载。 +> +> 注意:不是所有的内核配置都需要设备树,这通常取决于你的硬件平台和内核配置。例如,传统的PC硬件通常不需要设备树,但许多嵌入式系统和ARM板卡确实需要。 +> +> 如果你正在编译一个需要设备树的内核,并且你的内核源代码树中包含了相应的 .dts 文件,那么运行 make dtbs(或类似的命令)就是必要的步骤之一。 #### 5. 安装内核 -- Gitee