我正在尝试构建一个AOSP内核,但是我无法使得到的boot.img小到足以闪现并引导它。它包含带有附加dtb和initramfs的压缩内核。我的意图是使用塞兹卡勒测试驱动程序。我目前使用的是像素XL (marlin)。我使用内核分支android-msm-marlin-3.18-pie-qpr3 (也尝试了相关的),我正在尝试各种基于gcc的工具链。对于AOSP,我选择了派(tag android-9.0.0_r46,build PQ3A.190801.002)。然而,请注意,这是一个普遍的问题,它不是模糊-,内核-或设备特定的。
我的要求是:
CONFIG_DEBUG_INFOprintk等我尝试过的事情和我的想法:
CONFIG_CC_OPTIMIZE_FOR_SIZE=y,CONFIG_CORE_SMALL=y,CONFIG_NET_SMALL=y,CONFIG_KASAN_OUTLINE=y,CONFIG_TRIM_UNUSED_KSYMS=y,CONFIG_SLOB=y,.Image.xzkern-dtb或Image.lzma-dtb似乎没有问题,但是当试图引导它时(串行调试日志):[5710] partition_enable_wp: group 0 not defined
[5720] DTB offset is incorrect, kernel image does not have appended DTB
[5720] Device info 0x00000131/00010001/0x00010001/0, pmic 0x20009/0x455013/0x0/0x0
[5740] ERROR: Appended Device Tree Blob not found
[5740] panic (frame 0x83a86848):
...我验证了DTB是否存在,内核是否按预期压缩。我在这里的问题是:有可能吗?Android引导程序甚至支持xz/lzma吗?我在网上几乎找不到任何关于那个的信息。有没有办法使用xz或lzma压缩内核来引导Android?
我还学习了在AOSP主页(链接)上使用KASAN和KCOV构建Pixel内核的教程。我有一些问题,但最终(使用Linaro 5.5.0,有一些配置更改和没有CONFIG_DEBUG_INFO),我可以得到它的构建和引导。不错的概念证明,但不是我所需要的,因为我必须跳过一些必要的功能。
我已经在这个问题上呆了几个星期了。还有其他选择吗?我很乐意让它以任何方式启动。我很乐意提供任何细节和日志,但我觉得这已经是一个很长的帖子。提前谢谢你!
发布于 2020-05-14 23:38:00
我找到了一个适合我的解决方案。不过,这是一个很接近的选择,但对于不同的情况来说,可能还不够大。不管怎样,这可能会对其他人有帮助。
我使用的是皮格斯,而不是默认的gzip工具,它为-11开关提供了更高的压缩级别。使用-I 45增加优化迭代次数进一步改进了它(缺省值为15)。这就挤出了我所需要的最后一点:得到的Image.gz-dtb比以前小了2.5%。
以下是我对内核构建系统所做的更改(假设pigz在构建时将在您的PATH中):
diff --git a/arch/arm64/boot/Makefile b/arch/arm64/boot/Makefile
index b7cf2a498c19..7dfd438e997b 100644
--- a/arch/arm64/boot/Makefile
+++ b/arch/arm64/boot/Makefile
@@ -30,7 +30,8 @@ $(obj)/Image: vmlinux FORCE
$(call if_changed,objcopy)
$(obj)/Image.gz: $(obj)/Image FORCE
- $(call if_changed,gzip)
+# $(call if_changed,gzip)
+ $(call if_changed,pigz)
$(obj)/Image.lz4: $(obj)/Image FORCE
$(call if_changed,lz4)
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index c2b437eb23d5..73d4581f7531 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -272,6 +272,11 @@ quiet_cmd_gzip = GZIP $@
cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@) || \
(rm -f $@ ; false)
+
+quiet_cmd_pigz = PIGZ $@
+cmd_pigz = (cat $(filter-out FORCE,$^) | pigz -n -f -11 -I 45 > $@) || \
+ (rm -f $@ ; false)
+
# DTC
# ---------------------------------------------------------------------------它闪烁和靴子罚款,甚至靴子在一个合理的时间,与我以前的情况相反。
https://stackoverflow.com/questions/61368285
复制相似问题