安卓设备供应商在64位SOC上闪烁32位内核



我正在尝试为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。。。希望这些信息对你有所帮助。

    相关内容

    • 没有找到相关文章

    最新更新