我正在尝试使用Buildroot 构建1 Mb以下的最小内核。它适用于具有 qspi内存和基本功能,ethernet,usb,spi,和某些GPIO 的小型主板。通过 ssh 和 UART 进行基本终端访问。 我的第一个想法是,如果甚至可以通过 linux-menuconfig 修改内核 .config 来达到这个大小。
此外,如果可以识别冗余部分,而无需深入了解内核体系结构并将其排除在编译之外。
如果有人能指导我如何解决这个问题,甚至指定一些工具和方法,那将会非常有帮助。
谢谢!
答案 0 :(得分:3)
如果您的电路板上有构建根目录,那么最好继续使用它。禁用内核选项的技术应该是相同的。在article中,他失去了很多功能,达到了~0,7MB uImage(p40)。他从最小(裸)配置(p27)开始并添加配置块。因此,您可以创建尽可能小的uImage,而不是识别冗余部分。比添加更多选项:ext2,串口等。实际上这项工作需要大量的测试。你可能会制造依赖性。
可以使用diff -Naur
比较内核配置(工作和新配置),这样您就可以看到发生了哪些变化。
Offtopic:
看起来像altera正式支持yocto。 here是如何构建altera-image-minimal
的说明。如果你对它的尺寸很好,那就不要使用它,也不要花时间去减少uImage。如果您需要安装额外的软件包,那么您可以轻松扩展它。
here是关于构建Angstrom(基于yocto的分发)的说明。您可以基于console-image-minimal创建自定义图像。
我在生产中使用Angstrom。必须说,第一次使用它真的很难。
答案 1 :(得分:3)
是否使用buildroot构建内核并不是真正相关的。重要的是配置它,使其适合1MB。当您从buildroot构建内核时,可以使用make linux-menuconfig
来执行此操作,如您所述。
也就是说,获得1MB以下的内核会非常困难。 Biff once did this for an x86-based platform, bifferboard。但那没有网络或USB。
您可以参考the kernel size tuning guide,其中包含指向某些修补程序的链接以减小大小。但它在几年内没有更新。