更换 system.img 后无法启动 Android 设备

Can't boot Android device after replacing system.img

我正在使用 NXP(以前称为 Freescale)的 i.MX53 板开发自定义 android 设备。我有 OS 源代码、各种中间文件,以及曾经由另一位开发人员(他定制了 OS,但后来离开了我们公司)生成的最终结果文件。我现在需要修改这些设备上系统分区的内容。我试图使用 make_ext4fs.exe 和包含先前开发人员必须使用的原始文件集合的目录来构建和加载一个新的 system.img 文件。我相信我已经创建了一个与之前使用的系统映像几乎相同的系统映像。都是ext4, 200MB.

此板有一个实用程序(称为 MfgTool),只需单击一个按钮即可自动为您复制和安装图像。 MfgTool 成功地将我的图像写入设备。但是,当我尝试启动时,它失败了,只是循环显示自定义启动映像。如果我在此过程中换出新的系统映像并恢复之前的系统映像,一切都会重新开始。因此,只需正确构建此系统映像即可。

可能是什么原因?图像的什么差异可能导致这种情况?是否可能需要签名,或者我没有考虑到的其他某种保护?

将其中一个系统映像服务可执行文件替换为 shell,将 kmsg 和 logcat 转储到文件(例如在数据分区或外部存储中),然后调用原始可执行文件。然后,启动到您以前的系统并收集这些日志。

事实证明,我的主要问题是我需要将图像的安装点设置为 "system" 而不是通过 make_ext4fs 创建的“/system”,尽管那里有所有文档从相反的方面来说!我通过仔细阅读 ASOP 源代码了解了这一点:...build\tools\releasetools\img_from_target_files.

值得注意的是,在这个障碍之后,我 运行 又遇到了设备运行不正常的问题。结果证明这是图像中没有任何符号链接的结果。看起来至少你通常有符号链接将你的 "bash" 命令指向 system/bin 中的工具箱二进制文件。我不知道您通常是如何获得这些链接的,但是创建这些链接然后将它们捆绑到图像中可以解决这个问题。如果您像这样手动创建系统映像,我建议检查 bin 目录中的符号链接。