Pages

2012年8月25日

[ Android 系統 ] HTC One X 取得 root 權限

注意:這篇內容目前暫不適用於更新到 4.0.4(即軟體版本 2.17.709.2 以上)的 HTC One X。如果您有針對 4.0.4 的 One X 取得 root 權限的需求,請參考此篇文章:[Android 系統] HTC One X 升級到 4.0.4 (韌體版本 2.17.709.x )後,取得 root 權限的過渡時期辦法
首先,澄清 root 跟 S-OFF 這兩件事情的差別。
取得 root 權限:大多數人都是直接稱之 'root'。意義是,取得 Android 環境中,最高操作權限。可以以最大權限使用者的身份對整個 Android 系統(軟體)進行各種操作。可以任意增添/搬移/刪除檔案。一個操作不慎,往往就能令整個系統崩潰無法再運作。
S-OFF:Security Off 的縮寫。其相反意義是 S-ON(也就是,NAND Lock)。'root' 跟 'S-OFF' 是兩回事,千萬別被許多搞不清楚狀況的人的發言給搞混了。S-ON/S-OFF 是硬體層面的保護機制。在 One X 上,系統是儲存於 FlashROM(快閃記憶體)上。FlashROM 被切成好幾個 partition(分割區),每個 partition 儲存不同內容。S-ON 狀態時,表示有寫入保護,需要經過特殊程序才能將內容寫入被保護的區域,而且會起動安全檢查機制。S-OFF 狀態時,表示所有 partition 都可以寫入,而且不會啟動安全檢查機制。
什麼情況下需要 root 權限,什麼情況下沒有 S-OFF 辦不到呢?
例如說,想要用 Google Play 翻牆軟體來購買 app(因為台灣到這篇文章發表之時,依然未重新開放付費機制),或者是用 DroidWall 來阻擋連線等等。由於這些操作會動到系統的一些檔案,需要比預設更高的權限。此時就需要 root 權限,才能滿足需求。但是這不必 S-OFF。
可是如果希望把手上的 One X 的 ROM 內容從官方「台灣-繁體中文」換成官方「全球-英文」時,由於官方 RUU(ROM Update Utility,ROM 更新工具)會檢查 CID/映像檔簽名,而 CID 是放在寫入保護區域中,所以沒辦法更改。當 RUU 發現 CID/映像檔簽名不合的時候,就會產生錯誤而不再繼續動作,因此無法滿足需求。
目前 One X 尚未有 S-OFF 的解決方案。原因是 One X 硬體用的是 NVIDIA Tegra 3,而不再是 Qualcomm,因此原本適用於 HTC 機種的 unrevoked 就無法應用於 One X 上。XDA 還在討論中。附註:該討論串目前處於停止的狀態。重新開啟時間不明。


要取得 One X 的 root 權限,需要幾個步驟:
  • 替 bootloader 解鎖。
  • 刷入 ClockworkMod Recovery。
  • 安裝 SuperSU app。

在開始之前…

需要先來準備一些東西,待會作業會用到的。

Java

操作的環境,至少需要安裝 JRE ( Java Runtime Environment )。
Windows 的使用者可以到 http://java.com/,點擊頁面上的「免費 Java 下載」進行安裝。
Linux 的使用者,請參考你所使用的 Linux 版本是否有對應的 Java 套件。或者也可以去 http://java.sun.com/ 下載 JRE 使用。這個網址只提供通用的 rpm 以及 tar.gz 套件。
OSX 的使用者,對不起杜歐貓對 OSX 完全不熟,無法提供任何資訊。
另外還需要 Android SDK 裡面的一些程式(platform-tools 裡面的 adb 與 fastboot)。杜歐貓這邊幫各位打包好,各位不用安裝整個 Android SDK。請點擊檔案名下載:adb-fastboot_package.zip。解開後,副檔名為 dll 與 exe 的檔案適用於 Windows 平台。adb-linux 與 fastboot-linux 適用於 Linux 平台。adb-osx 與 fastboot-osx 適用於 OSX 平台。
Windows 的使用者,還需要 HTC Sync。
Ubuntu Linux 的使用者,還需要一些特殊步驟:
  1. 建立 /etc/udev/rules.d/51-android.rules (需要 root 權限,請使用 sudo 搭配偏好的編輯器)。
  2. 內容為
    SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"(上面的內容為一行)
  3. 儲存後離開。然後執行
    sudo chmod a+r /etc/udev/rules.d/51-android.rules
  4. 重開機。
如果你用的 Ubuntu Linux 為 64bit 版本,則需要多執行
sudo apt-get install ia32-libs
安裝 ia32-libs 套件(約需下載 198MB,安裝空間 330MB)。
準備工作到此結束。

解鎖:

首先要替 bootloader 解鎖(出廠預設值是上鎖)。目前僅能透過 HTC 官方提供的解鎖服務來解除 bootloader 的鎖定狀態。
提醒:透過官方解鎖服務解除 bootloader 鎖定狀態後,透過 fastboot 指令取得的 CID 內容會被清除,而且官方將會知道這台機器已經被解鎖,有可能影響保固。
提醒:解鎖成功時,手機會被重置回出廠狀態,所有資料都會被清除(SD 卡的內容不受影響)。請特別注意,操作前備份好重要資料。
  1. 先到 http://htcdev.com/ 註冊一個帳號,並且登入。
  2. http://htcdev.com/bootloader/ ,在 "Select Your Device" 處,選擇 "All Other Supported Models",然後點擊 [Begin Unlock Bootloader]。
  3. 按照網頁指示操作,就可以替 bootloader 解鎖。
  4. 過程中需要 Android SDK,Java Runtime 與 HTC Sync,這些工具應該在稍早前就已經準備妥當了。


刷入 ClockworkMod Recovery

解鎖之後,需要先刷入第三方 recovery image。由於 DJ 慣用的第三方 recovery image 是 ClockworkMod Recovery,因此以下都以 ClockworkMod Recovery 為操作說明。
為什麼要刷這第三方的 recovery 呢?有很多好處。取得 root 權限 / 可以刷第三方 ROM / 系統故障時還有一個可以維修的點 /  可以進行全系統備份等等。
通常刷機或是取得 root 的愛好者的習慣,都是解鎖後,馬上刷入第三方 recovery,然後做一次全系統備份。這樣萬一後續操作失誤而造成系統崩潰或是遺失檔案,還有機會恢復正常的系統。
首先要取得 ClockworkMod Recovery。可以從 ClockworkMod ROM Manager - Recoveries 取得。有分成按鍵操作版本跟觸控螢幕操作版本(觸控螢幕操作版本即為 Touch Recovery)。
本文發布時,最新的 Recovery 版本為 5.8.4.0。
按鍵操作版本(GSM/3G 版本)
觸控操作版本(GSM/3G 版本)
  1. 關閉本機電源(請先取消「設定」,「電源」中的「快速開機」)。
  2. 螢幕熄滅後,再靜待片刻。然後按住音量鍵-(即下面的音量鍵),接著按電源鍵。待螢幕出現。若螢幕畫面如下圖,則表示成功進入 bootloader。
    bootloader
  3. 當光標停在 FASTBOOT 字樣上(如上圖)時,按電源鍵,進入 FASTBOOT。
  4. 將 One X 與電腦透過 USB 線連接。此時可以看到手機畫面上的紅底白字 FASTBOOT 變成 FASTBOOT USB
  5. 開啟一個命令列視窗。切換到有 fastboot 所在的目錄,執行
    fastboot devices
    應該會得到
    ############    fastboot其中 ############ 是一串由英文跟數字組合而成的字串。

    若沒有任何顯示,則是有問題的。
  6. 將下載的 ClockworkMod Recovery image 放置在 fastboot 所在目錄,執行
    fastboot flash recovery RECOVERY-IMAGE-FILENAME其中 RECOVERY-IMAGE-FILENAME 就是 下載的 ClockworkMod Recovery image 的檔案名稱。
  7. 寫入完成後,執行
    fastboot reboot-bootloader
  8. bootloader 重新啟動後,手機螢幕上,光標應該停在 HBOOT 上。按一下電源鍵,即可回到 HBOOT。
  9. 利用音量鍵,將光標移動到 RECOVERY 上。按一下電源鍵,進入 ClockworkMod Recovery。
  10. 進入 ClockworkMod Recovery 後,如果是觸控版:直接點 backup and restore;如果是按鍵版,利用音量鍵將光標移動到 backup and restore 然後按一下電源鍵。接著使用 backup 指令進行全系統備份。
  11. 備份完畢後,點 +++Go Back+++ 回到最上層目錄後,執行 reboot 重開機。


SuperSU App

來到最後的步驟了。最後只需要裝入 SuperSu,就可以完成 root 的工作了。
SuperSU(連結)


沒有留言: