我知道你們一定和我一樣在system分區幹了奇怪的事情

然後驗證通不過了吧

啊哈哈哈哈哈除了fastboot刷system鏡像之外,你還可以這樣修復。

首先我們先理解一下OTA包的原理

實際上解包以後可以發現其實是一大堆差量補丁。

這就是說,修改/system分區下原有的文件時會死的,往裡面寫新的文件時不會死的。

另外我們可以看到,這次升級只修改了/system和內核(/boot)和recovery,而沒有修改radio

OTA包內容

準備

最省力的辦法(大版本升級適用)

進入fastboot,摳出鏡像中的img

fastboot flash boot boot.img

fastboot flash recovery recovery.img

fastboot flash system system.img

糾結的辦法(小版本升級適用)

自查

  • 是否安裝了Xposed,如果是,使用自帶的卸載功能
  • 是否使用過修改build.prop的應用(改機型、分辨率,etc)。在官方鏡像中找到/system/etc/build.prop覆蓋
  • 是否使用幸運破解器Android核心破解?。在官方鏡像中找到/system/framework/core.odex覆蓋;自帶的恢復功能無法變回一模一樣
  • 刷過新的內核?從官方鏡像里找到boot.img,在fastboot下刷入 fastboot flash boot boot.img
  • 刷過第三方recovery?從官方鏡像里找到recovery.img,在fastboot下刷入 fastboot flash boot recovery.img
  • 某個版本的SuperSU之後,會在開機修改/system/bin/install-recovery.sh,需要手動替換
  • 可以在adb shell 中使用find /system -type f -mtime -xxx,xxx是鏡像編譯日期到今天的天數

這些操作不影響本次升級

  • root,安裝了busybox,等
  • unlock bootloader
  • 刷了radio
  • 修改了hosts

搞定了?

  • adb reboot bootloader
  • 進入recovery
  • 音量+鍵調出菜單->apply update from adb;連電腦上,輸入adb sideload c1a33561be84a8a6a7d5a4c8e3463c4db9352ce6.signed-hammerhead-LRX21O-from-KTU84P.c1a33561.zip
  • 喝杯茶

RP極好的話就成功了,但是一般來說會有某些文件hash失敗,提示status 7

PS: 如果你使用Win8或以上系統,遇到device not found/未知設備,請高級啟動->禁用驅動程序預先簽名,並啟動Device Install Service服務

這樣的話就要再到鏡像里摳出來覆蓋了

我的情況是/system/lib/libbt-hci.so掛了,不知道哪個混蛋應用改掉的

以上ww

 

本文大部分姿勢來自http://forum.xda-developers.com/google-nexus-5/general/info-nexus-5-ota-help-desk-t2523217