Buildroot 不生成压缩的内核映像
Buildroot doesn't generate compressed Kernel image
我已经成功使用 buildroot (v. 2019.05) 构建了 u-boot 和 Kernel 并且能够一起启动。
问题是,即使我将内核压缩模式选择为 gzip
,我得到的只是未压缩的 Image
文件。
在输出目录中(还有Linux)只有Image
个文件,而应该有Image.gz
个。
如何从 / 而不是 Image
生成 Image.gz
?
根据 Linux package configuration tool:
This selection will just ensure that the correct host tools are built.
The actual compression for the kernel should be selected in the kernel
configuration menu.
确保您 select 压缩选项也使用 make linux-menuconfig
。
在 buildroot 中,除了 select 压缩机制之外,您还可以 select 内核映像(uImage、zImage、vmlinux ...)的输出格式。
您应该在 output/images/
或内核的构建目录中找到其中一个。
使用 U-boot 时,您可能想使用 uImage 或 zImage。参见 this question。如果在内核配置中 selected (CONFIG_KERNEL_GZIP),它们都将被压缩。
在引导过程中,内核的未压缩大小被记录在开头。您可以将它与文件系统上的大小进行比较。
## Booting kernel from Legacy Image at 10000000 ...
Image Name: Linux-4.14.73-ltsi
Created: 2019-05-14 11:55:16 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4684016 Bytes = 4.5 MiB
Load Address: 00008000
Entry Point: 00008000
...
在 arm64 上,Linuxdoes not support self-extracting compression。它依靠引导加载程序来执行此操作。
Linux 构建系统确实有一个 Image.gz
(和 Image.bz2
等)目标,但它只是在 [=13= 上调用 gzip
](将其与 zImage
进行比较,后者添加了 self-extractor)。
由于在内核构建系统之外进行压缩很容易,而且有很多不同的压缩器可能,Buildroot 没有为它们提供选项。但是,可以 select 自定义图像名称 (BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
),然后将 BR2_LINUX_KERNEL_IMAGE_TARGET_NAME
设置为 Image.gz
。或者,您可以在 post-build 脚本中进行压缩。
记得确保引导加载程序能够使用该算法解压缩。
我已经成功使用 buildroot (v. 2019.05) 构建了 u-boot 和 Kernel 并且能够一起启动。
问题是,即使我将内核压缩模式选择为 gzip
,我得到的只是未压缩的 Image
文件。
在输出目录中(还有Linux)只有Image
个文件,而应该有Image.gz
个。
如何从 / 而不是 Image
生成 Image.gz
?
根据 Linux package configuration tool:
This selection will just ensure that the correct host tools are built. The actual compression for the kernel should be selected in the kernel configuration menu.
确保您 select 压缩选项也使用 make linux-menuconfig
。
在 buildroot 中,除了 select 压缩机制之外,您还可以 select 内核映像(uImage、zImage、vmlinux ...)的输出格式。
您应该在 output/images/
或内核的构建目录中找到其中一个。
使用 U-boot 时,您可能想使用 uImage 或 zImage。参见 this question。如果在内核配置中 selected (CONFIG_KERNEL_GZIP),它们都将被压缩。
在引导过程中,内核的未压缩大小被记录在开头。您可以将它与文件系统上的大小进行比较。
## Booting kernel from Legacy Image at 10000000 ...
Image Name: Linux-4.14.73-ltsi
Created: 2019-05-14 11:55:16 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4684016 Bytes = 4.5 MiB
Load Address: 00008000
Entry Point: 00008000
...
在 arm64 上,Linuxdoes not support self-extracting compression。它依靠引导加载程序来执行此操作。
Linux 构建系统确实有一个 Image.gz
(和 Image.bz2
等)目标,但它只是在 [=13= 上调用 gzip
](将其与 zImage
进行比较,后者添加了 self-extractor)。
由于在内核构建系统之外进行压缩很容易,而且有很多不同的压缩器可能,Buildroot 没有为它们提供选项。但是,可以 select 自定义图像名称 (BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
),然后将 BR2_LINUX_KERNEL_IMAGE_TARGET_NAME
设置为 Image.gz
。或者,您可以在 post-build 脚本中进行压缩。
记得确保引导加载程序能够使用该算法解压缩。