CM9.1_i9100刷机失败解决办法

7次阅读
没有评论

解决问题:CM9.1_i9100_刷机失败提示“包无效”

一、问题复现

某智能手机用户欲将手机从现有ROM升级至最新版本的CyanogenMod (CM) 9.1(针对galaxy S2 i9100)。但在进行OTA更新时,刷机过程卡在了“Installing update…”步骤中,并出现了提示:“验证更新包…安装更新…警告:没有文件上下文。此软件包适用于设备galaxys2, i9100,GT-I9100,GT-I9100M,GT-I9100P,GT-I9100T,SC-O2C;而本机为. E: 错误在 /tmp/update.zip (状态 7)”。用户怀疑手机设备属性与要求的版本不符,但调整配置文件“/system/build.prop”中ro.product.device属性值并未解决问题。

二、尝试解决办法

  1. 修改updater-script中的检验条件:有些网站建议修改“META-INF/com/google/android/updater-script”文件内的ifelse(getprop("ro.product.device")<>"GT-I900",abort("this package is for device: galaxys2, i9100, GT-I9100, GT-I9100M, GT-I9100P, GT-I9100T, SC-O2C; this device is ..E:")检查语句。然而,按照此步骤进行修改后,会带来签名验证错误。

  2. 重新制作更新包:通过解压.zip文件并使用Java生成正确的证书文件(如.MF、SF和RSA),再重新压缩整个目录来生成新的更新包(zip)。但这仍然会出现签名验证失败问题。

  3. 改变build.prop中的ro.product.device值:有些教程提示可以通过修改/system/build.propro.product.device的值到i9100,或者通过参数绕过此检查,但这种方法对于CM 9.1并未产生实际效果。

三、最终解决方案

在IRC频道帮助下找到了有效方法。按照https://web.archive.org/web/20161224194651/https://wiki.cyanogenmod.org/w/Install_CM_for_i9100的建议,用户发现要成功安装CyanogenMod 9.1到galaxy S2 i9100,需要使用从CyanogenMod 13版本提供的boot.img文件,并将其通过首次进入下载模式(Power + Home + Down)进行刷入。即刻步骤为:

  • 在进入Download模式后
  • 运行命令heimdall flash --KERNEL boot.img --no-reboot

完成上述操作之后,用户将能够正常使用“sideload”方式安装更新.zip文件。

四、总结

对于遇到类似问题的用户来说,关键在于正确获取与设备相匹配的boot.img,并通过适当的方法进行刷入。这解决了由于固件版本不匹配导致的刷机失败问题,并且验证了在某些情况下,从新版本中获取适配旧版rom所需的特定文件是解决问题的有效途径。

五、实施

  1. 确认目标设备型号(即galaxy S2 i9100或GT-I9100)。
  2. 下载与之兼容的CyanogenMod 13的boot.img文件。
  3. 使用Heimdall命令行工具进行刷入。
  4. 正常方式安装更新.zip。

通过遵循上述步骤,可以成功解决CM版本与其他设备适配性问题带来的刷机失败情况。

正文完