linux-kernel - Buildroot 没有内核的 uImage 选项
问题描述
我正在为 c-sky 平台构建一个 Linux 内核,在“内核二进制格式”中,没有 uImage 选项,只有 vmlinux。但我的电路板需要一个 uImage。如果找不到它,它将启动到默认 rom,这不是我想要的。所以我想知道,我需要做什么才能获得 uImage 选项?我注意到它适用于 ARM 等其他一些架构/平台。但不适用于我的拱门,c-sky。
谁能帮我?
谢谢!
解决方案
在 Linux 内核中,不同的架构有不同的可用图像格式。uImage
在 Linux 中可用,但在 Buildroot 中未启用。
有 2 种方法可以生产uImage
.
手动方式(可以进行初步测试):
- 在 menuconfig -> 内核中,设置:
Kernel binary format
= 自定义目标Kernel image target name
=uImage
make host-uboot-tools
make linux
第 2 步是必需的,因为要构建uImage
您需要mkimage
从host-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 之前手动构建。
推荐阅读
- java - 将多个 Blob 上传到 Azure 存储
- java - Checkstyle 在文件更改之前不会发现违规行为
- assembly - 对于给定的堆栈位置和大小,为 x86 实模式设置堆栈段、基址和堆栈指针的正确方法?
- mongodb - 如何向 MongoDB 计数查询添加文本
- php - 字符集转换:PHP 的 iconv 不起作用
- javascript - 菜单栏中的链接没有被点击,但在 pc 上作为导航栏完美工作
- etw - 使用 TraceProcessor 解析 CLR 事件
- c++ - 在c ++中将多维数组初始化为类成员
- java - 如何在 Java 中使用相同的循环限定三个不同的条件?
- javascript - 使用 javascript 在 json 中遇到未定义的错误