2014/12/26

Android 刷機 - HTC One X 升級 Android 4.4.4 (CM-11)

Stratageme.com via photopin cc

背景故事

這篇要分享的是把兩年多前買的 HTC One X 升級到 Android 4.4 (cyanogenmod: cm-11-m12) 的資訊, 但重點會放在原理的探討, 實際操作步驟網路上已有許多圖文並茂的好文, 這邊希望能達到了解每個步驟的用意, 進而有能力判斷合適性與排除問題.
其實之前剛過保固的時候就已刷過 Android Revolution HD (Android 4.2), 在順暢度與省電方面相當滿意, 這次則是因為要買藍牙心率帶發現: 必須要 Android 4.3 以上的手機才能連接藍牙 4.0 裝置. 而 HTC One X 的藍牙晶片已是 4.0, 所以只要升級作業系統 (Android) 即可.

ROM 的選擇

既然要刷 ROM 當然要到 XDA 朝聖一下, 在鎖定 Android 4.3 以上版本的前提下, 看來看去比較中意的有:
最後決定就刷 CyanogenMod (簡稱 cm), 因為:
  • 輕巧: 之前使用的 原廠系統 與 Android Revolution HD 都有包含 HTC Sense 等額外套件, 比較肥大, 常會有內部儲存空間不足的囧況.
  • 更新: 很多 ROM (包括 MIUI) 都是在 CM 上再加東西, 目前 4.4 相對比較新的情況下, 如果遇到問題, CM 應該比較快修正.
  • 主觀: 單純想試試原生的 Android 系統界面.
而此時, 採用 Android 4.4 的 cm-11 尚未正式發佈, 所以我選擇 2014/11/12 的 M12 snapshot: cm-11-20141112-SNAPSHOT-M12-endeavoru.zip, 後續如有更新可到 cyanogenmod for HTC One X - endeavoru 挑選.
CyanogenMod for HTC One X 下載畫面

刷機理論

一般 ROM 的發佈頁面都會有安裝說明, 第一次刷 Android Revolution HD 時也是矇著眼睛照作, 很多指令都不知其目的, 遇到問題會卡很久, 且還蠻害怕會刷成磚的. 所以這次把相關的知識收集彙整如下:

系統分區 (Partition)

和電腦磁碟分區類似, Android 的內部記憶體也會分區, 並負責不同功能:
  1. hboot: 電源開啟後的第一個作用區, 負責引導其他分區的啟用.
  2. radio: 底層無線通訊模組相關的驅動程式與應用程式.
  3. splash1: 開機第一個畫面.
  4. recovery: 負責系統備份與還原.
  5. boot: Linux kernel 與 ramdisk, 負責啟動作業系統.
  6. system: 系統程式主要存放的分區.
  7. userdata: 使用者資料.
  8. cache: 快取區.
Linux 下的磁碟分區範例

開機流程

有了以上分區, 再來看看電源按下去後, 手機發生什麼事? 配合分區來看:
  1. 首先位於 hboot 分區的 bootloader 會啟動.
  2. 如果是按: 音量鍵(-) + 電源鍵, 會進入 fastboot 模式:
    • fastboot 也屬於 hboot 分區, 用於裝置檢測與開發, 我們會需要他來:
      • 輸入 fastboot <指令> <參數> 控制裝置.
      • 進入 recovery 模式.
  3. 如果只按: 電源鍵則會進入一般開機模式, 此時的流程為:
    1. bootloader 會檢查 boot 與 recovery 區塊, 確保其內容沒有被異動.
      • 這是廠商會了安全與某些因素刻意的安排, 也是刷 ROM 最大的阻礙.
    2. 載入 splash1 的開機畫面.
    3. 引導 boot 啟動作業系統 (同 Linux).
    4. 載入 radiosystem 分區的程式.

所以刷機是…

依上述分區與流程推論, 刷機反向來看就是:
  1. 把其他強者提供的 ROM 替換 bootsystem 分區的內容.
    • 核心在 boot / 應用程式在 system.
    • radio 一般不需替換.
  2. 替換的方式就是進入 recovery 模式, 利用備份還原機制進行.
    • recovery 分區的 recovery 程式一般會替換.
    • 常用的 recovery 程式為: ClockworkMod ROM Manager (可觸控操作).
  3. 因為 bootloader 會限制分區內容的異動, 所以需要解鎖.
    • 上述需異動的分區有: recovery / boot / system.
    • 各家手機這塊的限制與解除方式不同, 這邊只看 HTC 的作法.
所以實際操作上, 刷機就是:
  1. 解鎖 bootloader 開放覆寫分區的限制.
  2. 安裝好用的 recovery 程式 (透過 fastboot).
  3. 透過 recovery 程式更新 system 分區.
  4. 透過 fastboot 指令更新 boot 分區.

1. 解鎖 bootloader

提醒
  • bootloader 與 fastboot 都位在 hboot 分區, 一旦刷壞裝置就無法啟動, 沒有專用設備無法復原, 即所謂變磚. 其他 recovery / boot / system 分區都可透過 fastboot 指令更新, 因此風險較低 (就多刷幾次).
  • hboot 更新一般只能往高版本更新, 無法降版, 所以確定不會回頭再更新.
目前要解鎖 HTC 手機有兩個選項:
  1. 官方解鎖 (S-ON):
    • 優點:
      • 變磚風險低.
      • 保有對 radio 分區與電信業者限制的保護 (算嗎?)
    • 缺點:
      • 只開放 recovery / boot / system 三個分區.
      • 需要向 HTC 註冊, 會喪失保固.
  2. 非官方解鎖 (S-OFF):
    • 優點:
      • 解除所有分區限制.
      • 必要時可還原出廠狀態享有保固.
    • 缺點:
      • 風險較高.
      • 操作比較複雜? (沒實際作過不知道)
因為一般刷 ROM 只需異動 recovery / boot / system 三區即可, 所以除非是為了保固問題或特殊原因, 選擇官方解鎖應該是比較保險的作法 (我就是採用這個作法).
而關於 S-ON 與 S-OFF 到底是什麼? 一般 HTC 手機出廠都是在 S-ON (Security On) 狀態, 此時各重要分區都是受保護的, 這個 Security 的狀態可在 fastboot 模式下看到 (LOCKED / UNLOCKED / RELOCKED):
另一台 HTC Legend 的 fastboot 畫面

而一般大家提到 官方解鎖 bootloader 與 S-OFF 的差異主要有:
  • radio 分區無法覆寫.
  • boot 分區無法透過 recovery 直接覆寫 (要透過 fastboot 指令).
  • 限定電信業者 (CID, 在 S-OFF 狀態下可變更為 SuperCID: 11111111).
  • 提前喪失保固.
所以有以上考量者可考慮進行 S-OFF, 但注意台灣販賣的 HTC One X, 其 CPU 多是 NVIDIA Tegra 3, 到底實際能不能 S-OFF 我沒研究到.

2. 安裝 recovery 程式

Recovery 其實就是把網路取得的軟件包 (多是 zip 檔), 安裝到 system 等分區的工具程式, 目前多使用 ClockworkMod ROM Manager, 可直接觸控操作非常方便. 而它可提供的功能有:
  • 安裝軟件包, 如: ROM 與 Google Applications.
  • 進行 Nandroid backup 與 restore (完整的系統備份).
  • 清除 data / cache / Dalvik cache.
  • 回復原廠設定.
ClockworkMod ROM Manager 下載頁面

3. 透過 recovery 更新 system 分區

這步基本流程就是:
  • 先把 ROM 與要安裝的軟件包 (如: Google Apps) 放到記憶卡 (SD卡).
  • 開機配合按音量鍵進入 fastboot 模式, 再轉進 recovery 模式.
  • 使用 ClockworkMod ROM Manager 進行資料清除 (data / cache / Dalvik cache).
  • 使用 ClockworkMod ROM Manager 進行 ROM 與軟件包的安裝.
  • 注意畫面的訊息, 沒意外就完成了.
ClockworkMod Recovery 參考畫面

4. 透過 fastboot 更新 boot 分區

這個步驟據說是因為 HTC 官方解鎖 bootloader 才有的限制: 導致 recovery 程式無法直接將 ROM 裡面的 boot.img 更新到 boot 分區, 所以要另外透過 fastboot 指令更新. 操作上大概就是:
  • 把 ROM 檔裡面的 boot.img 解壓縮出來 (在電腦裡).
  • 透過 fastboot 指令更新 boot 分區:
    • 範例: fastboot flash boot boot.img
這個步驟如果沒作, 一般是會卡在開機畫面, 也就是回顧一下上面說的流程, 一般開機流程, bootloader 載入 splash1 分區的開機畫面後, 會請 boot 分區的系統核心進行開機程序, 因為此時 boot 分區為更新, 所以無法正常啟動.

成果檢視

講了這麼多, 讓我們實際拿一份操作說明來驗證一下理論與實務的對應關係, 以下是 [ROM][official] HTC One X CyanogenMod 11.0 nightlies + M-releases 的安裝步驟:
First time installing CyanogenMod 11.0 to your HTC One X (GSM), or coming from another ROM:
1. Read the official wiki
2. Read known issues ans FAQs
3. DO A BACKUP
4. Unlock your device via http://www.htcdev.com if you haven't done so lready
5. Flash the preferred (touch / non-touch) HTC One X (GSM) recovery image from http://www.clockworkmod.com/rommanager via Fastboot
6. DO A DATA WIPE / FACTORY RESET
7. Copy GApps and the CM 11.0 zip to your SD card
8. Boot into Recovery
9. Flash the CM 11.0 zip from SD card
10. Flash GApps for KitKat from SD card
11. Flash the boot.img included in the CM 11.0 zip via Fastboot
12. Reboot
13. Don't restore system data using Titanium Backup!
14. Restoring Apps + Data might cause problems and is not recommended, avoid it if possible!
讓我們逐項往下看, 並與前述的理論進行比對:
1. Read the official wiki
2. Read known issues ans FAQs
3. DO A BACKUP
這三項大致就是前置作業, 了解這個 ROM 的內容與已知問題, 讓你可以先衡量符不符合自己的需求, 而最重要的應該是進行備份, 進行備份, 進行備份!
4. Unlock your device via http://www.htcdev.com if you haven't done so already
這項就是解鎖 HTC bootloader, 連到 HTC 官網 照著作即可, 如果之前有作過就可跳過.
5. Flash the preferred (touch / non-touch) HTC One X (GSM) recovery image from http://www.clockworkmod.com/rommanager via Fastboot
這項是安裝 Recovery 程式, 這邊推薦使用 ClockworkMod ROM Manager.
6. DO A DATA WIPE / FACTORY RESET
這項是用 Recovery 程式進行舊資料清除.
7. Copy GApps and the CM 11.0 zip to your SD card
8. Boot into Recovery
9. Flash the CM 11.0 zip from SD card
10. Flash GApps for KitKat from SD card
這四項是用 Recovery 程式安裝已複製到 SD 卡內的 ROM 與 Google Apps.
11. Flash the boot.img included in the CM 11.0 zip via Fastboot
這項是透過 fastboot 更新 boot 分區, 到這邊基本上就完成了.
12. Reboot
13. Don't restore system data using Titanium Backup!
14. Restoring Apps + Data might cause problems and is not recommended, avoid it if possible!
最後三項就是重新啟動手機 (第一次啟動會比較久), 並說明部份備份機制可能導致問題不建議使用.
以上, 是不是覺得安裝說明的每個步驟都變清楚了呢.

參考資料

沒有留言:

張貼留言