These days I got notification from my phone (Nexus5 with android 5.0) that I have update to android 5.0.1.
The phone is rooted without modification of the boot partition.
I tried to update, the phone rebooted and started the update process and after a few seconds it say ERROR, and stops.
It appears that the updater checks for modifications on system partition and if some are found, the update is stopped.
Here is how I managed to update, without flashing all back to stock and suffering the pain of reinstalling all my apps, loosing user data (if not backed up), loosing app states and so on, basically a lot of time can be lost.
The below instructions will probably work on all nexus devices with slight modifications.
All the commands which I am going to present you are tested on linux, but they should work on windows and mac too, as long as you have downloaded android SDK.
I assume that your bootloader is unlocked. If not, you can not do anything without wiping out the phone.
How to check if bootloader is locked, two ways:
1. When you power on the phone you see the GOOGLE logo. If the bootloader is unlocked you will see unlocked padlock below the google logo.
2. Switch OFF the phone, then hold for 5-6 seconds Volume Down + Power.
This will start the bootloader for you (one lying down android with open stomach :))
Below the android you will see some info, about your phone, bootloader version etc.
On the last line it says: "LOCK STATE - unlocked" if bootloader is unlocked
1. Download android sdk. http://developer.android.com/sdk/index.html#Other
If you do not intend to develop, you DO NOT need the "android studio", just download 'SDK tool only"
2. If undr Linus/Mac, extract the contents of the package
3. Run android-sdk-linux/tools/android. This will start GUI which will let you choose which components to install
4. Choose "Android Platform SDK tools" and hit install
5. If all went fine, you will have folder android-sdk-linux/platform-tools/ which contains the tools you need.
6. Switch On "usb debugging" on your device.
7. When you connect the phone, try this simple command:
sudo android-sdk-linux/platform-tools/adb shell
The phone will probably pop up a dialog, asking for confirmation to allow the connection from the computer.
Hit YES and the command you executed will be drop you in a shell on the phone.
If this happens then all is good, you can continue
8. Download the stock images for your current version of android:
https://developers.google.com/android/nexus/images
9. Extract the file, in my case (hammerhead-lrx21o-factory-01315e08.tgz). You will get ZIP file called hammerhead-lrx21o/image-hammerhead-lrx21o.zip
10. Extract it too and you will get the image files
cache.img
boot.img
recovery.img
userdata.img
system.img
11. If you want to root your phone after the update, download also:
Chanfire installable ZIP: As of time of this writing, version 2.40 (http://download.chainfire.eu/641/SuperSU/UPDATE-SuperSU-v2.40.zip)
You can see which is the latest version here: http://forum.xda-developers.com/apps/supersu
12. Upload the file to your device, you can do this with the following command:
android-sdk-linux/platform-tools/adb push UPDATE-SuperSU-v2.40.zip /sdcard/Downloads
This will place the file in your Download folder on the phone.
13. Download TWRP rescue image:
http://techerrata.com/browse/twrp2/hammerhead
14. Be very careful from now on :)
15. Go in to fastboot mode by doing either power off the phone, then hit volumedown + power for a few seconds, or if the phone is on, with the following command:
sudo android-sdk-linux/platform-tools/adb reboot bootloader
This is supposed to send you in bootloader.
15. Flash stock recovery image: (you should be in the dir where the extracted images are )
sudo android-sdk-linux/platform-tools/fastboot flash boot boot.img
reboot bootloader again
sudo android-sdk-linux/platform-tools/fastboot reboot-bootloader
16. Flash recovery image to stock
sudo android-sdk-linux/platform-tools/fastboot flash recovery recovery.img
reboot bootloader again
sudo android-sdk-linux/platform-tools/fastboot reboot-bootloader
17. Flash the system img
sudo android-sdk-linux/platform-tools/fastboot flash system system.img
18. Reboot the device.
In the bootloader, navigate with (volume +/-) and when it shows "REBOOT", hit power to confirm, this will reboot the phone and boot android. And you now have unrooted device.
19. Apply the update, either go to settings-> about -> check for updates.
If nothing is shown there you can wait for some time and the notification will pop up again. (there is a faster method for update, but I intentionally do not show it here)
20. When the update is applied, if you want to root again the device, do the following:
sudo android-sdk-linux/platform-tools/adb reboot bootloader
21. Flash the recovery image with the twrp image which you downloaded earlier:
sudo android-sdk-linux/platform-tools/fastboot flash recovery openrecovery-twrp-2.8.2.0-hammerhead.img
22. Reboot bootloader
sudo android-sdk-linux/platform-tools/fastboot reboot-bootloader
23. With volume +/- navigate to menu "Recovery Mode"
24. You will see a interface with buttons.
25. Go to Install
26. Navigate to your download folder and select the file you uploaded there earlier. In current case this is UPDATE-SuperSU-v2.40.zip
27. At the bottom "Swipe to Confirm Flash"
28. If all went fine, your device is rooted at this step
29. Reboot the phone and enjoy your root.