1MB 以下的 Buildroot 自定义内核

Buildroot custom kernel under 1MB

我正在尝试使用 Buildroot 构建 1 Mb 以下的最小内核。它适用于具有 qspi 内存 基本功能、以太网、usb、spi、 一些 GPIO 的 [=27] 的小型电路板=].通过 sshUART 进行基本终端访问。 我的第一个想法是,是否有可能通过 linux-menuconfig 修改内核 .config 以达到这个大小。

此外,如果可以在不深入了解内核体系结构的情况下识别冗余部分并将它们从编译中排除。

如果有人可以指导我如何解决这个问题,甚至指定一些工具和方法来解决这个问题,那将非常有帮助。

谢谢!

如果您的开发板有有效的构建根目录,那么最好继续使用它。禁用内核选项的技术应该是相同的。在 article 中,他达到了 ~0,7MB uImage,但失去了很多功能 (p40)。他从最小(裸)配置 (p27) 开始,然后添加配置块。因此,与其识别冗余部分,不如构建可以启动的尽可能小的 uImage。比添加更多选项:ext2、serial 等等。实际上这项工作需要大量的测试。你可能会打破依赖关系。

内核配置(工作的和新的)可以使用 diff -Naur 进行比较,因此您可以看到发生了什么变化。

题外话:

看起来像altera官方支持的yocto。 here 是如何构建 altera-image-minimal 的说明。如果您对它的大小满意,那就使用它,不要花时间最小化 uImage。如果您需要在其中安装额外的软件包,那么您可以轻松扩展它。

here 是关于构建 Angstrom(基于 yocto 的发行版)的说明。您可以基于 console-image-minimal 创建自定义图像。

我在生产中使用 Angstrom。不得不说,第一次上手真的很吃力。

是否使用 buildroot 构建内核并不重要。重要的是配置它以使其适合 1MB。当您从 buildroot 构建内核时,您可以使用 make linux-menuconfig 来完成,正如您提到的那样。

也就是说,要获得小于 1MB 的内核将非常困难。 Biff once did this for an x86-based platform, bifferboard。但那是在没有网络或 USB 的情况下。

您可以参考the kernel size tuning guide,其中有一些补丁的链接以减小大小。但是几年没更新了