我正在尝试为Android设备重新编译内核。该设备是Xioami Redmi 7A。它有一个64位处理器高通骁龙439。我编译了内核,没有出错,在arch/arm64/boot/
下得到了Image
文件,到目前为止还不错。
我试着把它闪到设备上。首先,我下载了库存的boot
图像。然后,我使用Android Image Kitchen:打开它
./unpackimg original-boot
因此,现在,根据所有的教程,应该用新编译的启动映像替换旧的启动映像,重新打包映像并将其闪存到设备上。
# replace the boot-img in the split-img folder
./repackimg
# now I get a fresh image-new.img, so I flash it
fastboot flash boot image-new.img
我试过了,但设备又回到了快速启动模式。
所以我开始搜索论坛。我在stackoverflow上发现了这个问题。这个家伙基本上注意到,他从编译器中得到的映像与原始启动映像的格式不同。我检查了一下,得到了这个:
原始引导映像:
file boot-kernel
boot-kernel: Linux kernel ARM boot executable zImage (little-endian)
编译的:
file Image
Image: Linux kernel ARM64 boot executable Image, little-endian, 4K pages
我看到两个主要区别:
显然,我是为ARM64
编译的,因为该设备有一个64位处理器。但由于某种原因,原始图像似乎是ARM
zImage
这个stackerflow问题表明只有32 bit ARM
处理器支持zImage
映像。好吧,这很酷,但等等这是否意味着我的64位arm设备运行32位arm引导映像
为了确保它不是Android-Image-Kitchen
错误,并且脚本是好的,我打开了原始图像的包装,然后重新打包并将其未经修改地闪存到设备上:
./unpackimg original-img
./repackimg
fastboot flash boot image-new.img
它靴子所以,Android-Image-Kitchen
肯定是不可能的。
我是遗漏了什么,还是这意味着即使处理器支持64位,这个设备真的在32位系统下工作在qualcomm官方网站上证明它是64位的。
有办法确保吗?我怎样才能找到它?因为如果它是真的,我必须使用32位arm工具链而不是64位的工具链来编译它。帮助
UPD:我在设备上执行了getconf LONG_BIT
。愚蠢的是,它返回了32
。所以,是的,小米刚刚将32位内核闪存到64位SOC上。哈哈。如果我成功了,我会尝试将内核编译为32位,并回答我自己的问题。
Hi Redmi 8A有相同的SoC,但它有64位内核和操作系统。。。有些人成功地将8A内核移植到7A,当然不是没有问题。。在您的情况下,您可以将8A图像与7A。。。希望这些信息对你有所帮助。