2012年8月13日 星期一

[Android] Galaxy Nexus 刷機筆記(重返 Google 親生子?) @ Mac OS X 10.8

七月多推薦周邊親人買 Galaxy Nexus 來用,那時洽逢 SAMSUNG 與 Apple 智慧財產官司的關係,花了好大一把功夫才買到一台(空機價約13.5k附近),雖然不是最便宜的(美國官網公訂價$399美金,台灣有機會可以找到 13k 一台),但看在缺貨情況已經很滿意了。使用上除了拍照有聲音外,還都不錯用,不致於想要 root 它啦,不過,讓我想更新它的主因是...直到 2012-08-11 時,尚未接收到 Android 4.1 OTA 更新通知,查了一下原來這隻手機似乎是港台機?代號是 yakjuzs 並且屬於 SAMSUNG 系列的?也就是系統更新是 SAMSUNG 在維護的,與其等到 SAMSUNG  推出 Android 4.1 更新檔,還不如自己更新吧 :P 於是就下海刷一下吧!


雖然過去工作常編 AOSP 甚至把一些手機 root 研究,但本身使用 Android 手機時,並不太想要 root 或刷機的 :P 例如刷機刷用的檔案有沒被加料等等。故這次更新我主要採用 Google 官方提供的 Factory Images for Nexus Devices 來源,這也是我專挑 Google Nexus 原生手機的主因之一,可以方便地處理一些事務。


刷機有風險,需自行承擔手機失去保固或變成磚頭


手上這隻手機在 "設定" > "關於手機" 可以看到 "基頻版本" 為 I9250XXK1 和 "版本號碼" 有 "ITL41F.I9250ZSKKB" 字樣,並且透過 Android-SDK 來取得 adb/fastboot 等指令來驗證系統,並把手機接上後,也將手機開啟開發者設定,使用 adb devices 和 adb shell 確認手機狀態:


$ adb devices
XXXXXXX

$ adb shell cat /system/build.prop
...
ro.build.id=ITL41F
ro.build.display.id=ITL41F.I9250ZSKKB
ro.build.version.incremental=I9250ZSKKB
...
ro.build.version.release=4.0.1
...
ro.product.model=Galaxy Nexus
ro.product.brand=samsung
ro.product.name=yakjuzs
ro.product.device=maguro
... 


進入刷機前,請先手動備份需要的資料,實在是過程會清掉系統資料,就像重灌電腦一樣。備份資料嘛,例如手機內的照片、簡訊、鈴聲等等,其中簡訊用 SMS Backup & Restore 這套 Android app 軟體,可以輕鬆地把簡訊匯出 XML 檔案,並支援匯入(若有草稿需先清掉才能正常備份)。


接著,把手機關機後,同時按 "Volume + 鍵" 、 "Volume - 鍵" 和 "Powert 鍵" 一會兒,手機就會進入 fastboot mode:


fastboot_mode


透過指令進行 bootloader unlock (此步將清除手機資料,請詳看 unlock bootloader 訊息),打完就可以看到手機畫面切換為詢問 unlock bootloader ,並透過 Volume +/- 鍵進行選擇切換,並用 Power 鍵確定:


unlock_bootloader


$ fastboot oem unlock
...
OKAY [ 23.924s]
finished. total time: 23.924s


選 YES 後,則將進行 unlock bootloader 並且在 fastboot mode 最下一行顯示紅色的 "LOCK STATE - UNLOCKED" ,代表可以自行安裝(刷機)指定的 OS 啦:


fastboot_unlock


接著就將下載好的 Factory Images for Nexus Devices 解壓縮並擺好位置(在此使用 Factory Images "yakju" for Galaxy Nexus "maguro" (GSM/HSPA+) - 4.1.1 (JRO03C) ,請確認自己手機的狀況),透過一連串的 fastboot 指令進行更新:


$ fastboot flash bootloader /path/yakju-jro03c/bootloader-maguro-primelc03.img
sending 'bootloader' (2308 KB)...
OKAY [ 0.315s]
writing 'bootloader'...
OKAY [ 0.300s]
finished. total time: 0.615s
$ fastboot reboot-bootloader
rebooting into bootloader...
OKAY [ 0.007s]
finished. total time: 0.007s
$ fastboot flash radio /path/yakju-jro03c/radio-maguro-i9250xxlf1.img
sending 'radio' (12288 KB)...
OKAY [ 1.720s]
writing 'radio'...
OKAY [ 1.369s]
finished. total time: 3.088s
$ fastboot reboot-bootloader
rebooting into bootloader...
OKAY [ 0.007s]
finished. total time: 0.007s
$ fastboot -w update /path/yakju-jro03c/image-yakju-jro03c.zip
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
archive does not contain 'system.sig'
--------------------------------------------
Bootloader Version...: PRIMELC03
Baseband Version.....: I9250XXLF1
Serial Number........: #################
--------------------------------------------
checking product...
OKAY [ 0.007s]
checking version-bootloader...
OKAY [ 0.008s]
checking version-baseband...
OKAY [ 0.008s]
sending 'boot' (4366 KB)...
OKAY [ 0.589s]
writing 'boot'...
OKAY [ 0.431s]
sending 'recovery' (4708 KB)...
OKAY [ 0.629s]
writing 'recovery'...
OKAY [ 0.500s]
sending 'system' (396675 KB)...
OKAY [ 43.758s]
writing 'system'...
OKAY [ 38.104s]
erasing 'userdata'...
OKAY [ 0.292s]
formatting 'userdata' partition...
Creating filesystem with parameters:
        Size: 14539534336
        Block size: 4096
        Blocks per group: 32768
        Inodes per group: 8144
        Inode size: 256
        Journal blocks: 32768
        Label:
        Blocks: 3549691
        Block groups: 109
        Reserved block group size: 871
Created filesystem with 11/887696 inodes and 97200/3549691 blocks
sending 'userdata' (137559 KB)...
writing 'userdata'...
OKAY [ 28.911s]
erasing 'cache'...
OKAY [ 0.013s]
formatting 'cache' partition...
Creating filesystem with parameters:
Size: 452984832
Block size: 4096
Blocks per group: 32768
Inodes per group: 6912
Inode size: 256
Journal blocks: 1728
Label:
Blocks: 110592
Block groups: 4
Reserved block group size: 31
Created filesystem with 11/27648 inodes and 3566/110592 blocks
sending 'cache' (8832 KB)...
writing 'cache'...
OKAY [ 2.715s]
rebooting...


finished. total time: 116.000s


如此一來,手機重開機後,就會是 Android 4.1.1 囉!先測試一下打電話、接電話的基本功能吧!


最後,我還是習慣把手機的 bootloader lock 起來 XD 一樣關機後,同時按住 "Volume + 鍵" 、 "Volume - 鍵" 和 "Powert 鍵" 一會兒,進入 fastboot mode 後,透過指令進行:


$ fastboot oem lock
...
OKAY [ 0.165s]
finished. total time: 0.165s


收工。


一開始只是單純想要手動升到 Android 4.1.1 ,後來發現連拍照聲音也都解決了 XD 只能說剛好買到的 Galaxy Nexus 可能要拿去賣給亞洲(日本?)吧,所以有些地區有規定手機拍照一定要有聲音(防偷拍)。透過這次的系統更新,之後應該可以等 Google 第一波作業系統就升級了吧,不再需要等 SAMSUNG 囉~


沒有留言:

張貼留言