在 Buildroot 中启用 udev 包似乎会破坏构建

问题描述 投票:0回答:1

我正在尝试将我的 buildroot 从使用 mdev 移动到 udev。我已从 v5 build-root dev_defconfig 中删除了以下配置参数以删除 mdev:

-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y

并启用系统中启用 udev 所需的配置:

+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y

然后尝试通过以下方式构建内核:

make dev_defconfig
make

但这似乎让我陷入以下编译错误:

Loading RAMDisk Image
Image too large: increase CONFIG_SYS_BOOTM_LEN
Must RESET board to recover
Signature check Bad (error 1)
make[1]: *** [Makefile:817: target-post-image] Error 1
make: *** [Makefile:84: _all] Error 2

有人知道我应该在哪里解决这个问题吗?看起来包括udev在内的图像大小已经超出了限制。但不确定这个集合在哪里以及如何增加它?

embedded filesystems
1个回答
0
投票

这原来是gunzip大小和uboot对大小限制的问题。 uboot代码中定义的默认gunzip大小如下: (我正在使用这个 uboot 版本 u-boot-2021.07):

common/bootm.c
#define CONFIG_SYS_BOOTM_LEN   0x800000

即8MB。我的 Gunzip 图像大小超过 27MB,因此我必须将上述大小更改为 30MB。我通过一个补丁实现了这一点,如下所示:

diff --git a/common/bootm.c b/common/bootm.c
index ea71522d..8347316f 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -34,8 +34,8 @@
 #include <image.h>
 
 #ifndef CONFIG_SYS_BOOTM_LEN
-/* use 8MByte as default max gunzip size */
-#define CONFIG_SYS_BOOTM_LEN   0x800000
+/* changing the default 8MByte gunzip size to ~27MB */
+#define CONFIG_SYS_BOOTM_LEN   0x1AE0000
 #endif
 
 #define MAX_CMDLINE_SIZE       SZ_4K

所以我使用的整体结构如下:

  1. 在 buildroot 中有以下包:

    包/uboot-tools/

  2. 在buildroot中有以下补丁文件:

    board/xxxx/yyyy/patches/uboot-tools/0004-max-gunzip-size-increased-from-8-MByte-to-30-MByte.patch

然后构建堆栈不会再抛出编译错误。

© www.soinside.com 2019 - 2024. All rights reserved.