首页 > 解决方案 > Buildroot 没有内核的 uImage 选项

问题描述

我正在为 c-sky 平台构建一个 Linux 内核,在“内核二进制格式”中,没有 uImage 选项,只有 vmlinux。但我的电路板需要一个 uImage。如果找不到它,它将启动到默认 rom,这不是我想要的。所以我想知道,我需要做什么才能获得 uImage 选项?我注意到它适用于 ARM 等其他一些架构/平台。但不适用于我的拱门,c-sky。

谁能帮我?

谢谢!

标签: linux-kernelbuildroot

解决方案


在 Linux 内核中,不同的架构有不同的可用图像格式。uImage在 Linux 中可用,但在 Buildroot 中未启用。

有 2 种方法可以生产uImage.


手动方式(可以进行初步测试):

  1. 在 menuconfig -> 内核中,设置:
    • Kernel binary format= 自定义目标
    • Kernel image target name=uImage
  2. make host-uboot-tools
  3. make linux

第 2 步是必需的,因为要构建uImage您需要mkimagehost-uboot-tools. 使用“自定义映像”Buildroot 并没有意识到这一点,如果没有第 2 步,构建就会失败。


正确的方法:

uImage只需在 Buildroot 中为 C-Sky 架构启用该格式即可。这个简单的补丁就足够了:

diff --git a/linux/Config.in b/linux/Config.in
index 1a50958ea146..c89c12b433be 100644
--- a/linux/Config.in
+++ b/linux/Config.in
@@ -211,7 +211,7 @@ config BR2_LINUX_KERNEL_UIMAGE
        depends on BR2_arc || BR2_arm || BR2_armeb || \
                   BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \
                   BR2_sh || BR2_mips || BR2_mipsel || \
-                  BR2_mips64 || BR2_mips64el || BR2_xtensa
+                  BR2_mips64 || BR2_mips64el || BR2_xtensa || BR2_csky
        select BR2_PACKAGE_HOST_UBOOT_TOOLS

 config BR2_LINUX_KERNEL_APPENDED_UIMAGE

这允许选择Kernel binary format=uImage并正常构建,而无需host-uboot-tools在 Linux 之前手动构建。


推荐阅读