2014年2月10日 星期一

[比教學更基礎更全面的] Root/刷機之前的 Android 知識補給站 -- 網路上的刷機資源導覽

讓你的 android 手機斷開鎖鏈! 終於趁過年期間開始玩 android 手機/平板。 目前戰績只有刷一隻 Nexus S、 root 一部 ASUS memo pad、 把 HTC Aria 刷成各種 「永不停息開機畫面」 的磚塊 ^_^|||。 不過文倒是爬了很多, 趁著記憶猶新, 趕快幫那些剛要踏入 root/刷機世界的新手們整理一下鳥瞰概觀式的心得以及 [搜尋到、 多數尚未研究的] 連結。 特別提醒: 「廠商鎖機」 的壓力會造成解鎖工具經常無法提供原始碼, 所以 android 社群的文化並不是那麼地開放。 本文所介紹的軟體, 其中有一些並沒有原始碼! 安全性未驗證!

一、 該不該 root/刷機?

手機不該 Root/越獄/刷機的理由有很多; 但 「安全」 絕對不是其中之一。 簡單地說, root/刷機確實有風險, 也很可能會喪失原廠的一些服務。 但如果你在乎自主權/隱私/資訊安全, 那麼的確可以考慮承擔這些風險與損失。 我自己都只拿舊機或便宜的機器來實驗。

二、 基本觀念

你花錢買來的手機, 最終的控制權不一定在你手上。 概念上, 這跟 Windows 8 「安全開機」 開機鑰匙不在你家 是一樣的。 所以想 root 或刷機, 通常第一步要先打開一個鎖 -- 把 S-on 的狀態 (所謂的 "security on"; 其實稱 "shackle on" 比較貼近事實, 也就是 "上鎖" 的狀態) 變成 S-off ("security off" 或 "shackle off", 也就是解鎖的狀態)。

所謂 root, 就是取得最高權限, 允許自己對手機為所欲為。 其實這並不可怕, OK? 只要別去關掉預設的警告設定, 每次遇到 app 要求使用最高權限做事時, 系統都會警告/提醒。 對於一般不熟悉電腦的人, 建議點選 「僅此次」 或 「僅xx分鐘」, 而不要點選 「永遠允許」。

事實上, 有些 apps 就是必須要請你自己先取得 root 權限才能安裝。 其中包含一些保護隱私、 對抗 NSA 及廠商竊聽軟體的 apps。 另外, 搜尋 "rooted apps" 會看到不同的人推薦不同的好用 apps 給那些 rooted phones (已 root 的手機)。 Root 對你的手機更改不多 (但通常一樣失去保固)。

至於 刷機刷 ROM, 則是把整部手機的韌體換掉。 刷機過程有風險, 手機可能變磚塊! (我自己的 HTC Aria 就刷成磚塊了。 目前還不知道怎麼救回來。) 成功之後, 原廠內建的 apps 通通不見; 經常甚至連中文輸入法都必須自己另外安裝! 刷完之後, 通常你也就具有 root 的權限, 在你自己的手機內暢行無阻。 當然, 你必須先根據你的手機的型號去搜尋、 挑選、 下載 custom ROM, 最後才能刷進手機裡。 通常這會是一個一兩百 MB 的壓縮檔, 裡面的 system 子目錄底下跟 GNU/linux 作業系統有幾分神似。

更多解釋基本觀念的文章請見:

  1. [資訊] 什麼是 S-OFF / S-ON / root
  2. Root: 取得管理員權限; 刷機: 重灌
  3. Root/CWM/解鎖 bootloader/ROM/Deodex 是什麼? (大推!)
  4. 玩Android 必須知道 什麼是Recovery、HBOOT、SPL、RADIO、APP2SD (大推!)
  5. What is the difference between Fastboot and HBoot mode?
  6. Custom ROM and Root: The most important terms explained (大推!)

三、 買一部好刷機

如果希望立即刷機, 大概就不太能夠買最新的機型。 就像 linux 對舊的硬體支援比較好一樣, 各家的 custom ROM 也是如此。 你也不能買太小眾的型號。 另一方面, 能夠用很低的價錢上網買二手的 (當初) 熱門機種, 並且在上面跑最新的軟體, 這也很帥啊! (就像我現在在 2004 年的 ASUS z9100 筆電上面用 2013 年的 Antix 13.2 打字一樣, 感覺超拉風的。)

有些公司的態度很差, 防 root/刷機就像防賊一樣, 例如 HTC。 又例如 因為我表明要 root/刷機, 所以華碩拒絕修正或告知如何繞過產品瘕疵。 如果你認真想 root/刷機, 就要避開這些公司的產品。

總之, 買機器之前, 請務必先逛一下這三個網站。 如果你像 RMS 一樣高度重視自由, 請從 replicant 的清單 (下詳) 當中挑手機。 如果只是優先考慮尊重客戶自主權的廠商, 不介意用 「不完全自由的 custom ROM」, 則可以從 Root-Friendly Android 的五個等級當中挑最高級的機型。 當然, 該頁面強調: 排序條件純粹依照是否容易 root, 完全不考慮其他功能的優劣。 如果心中已有幾款型號, 則可以在 Android ROMS: The UnLocker 找到你的型號到底有哪些 ROM 可用。

確定要購買某款手機/平板之前, 再到 rootzwiki 找到你要的型號, 略讀掃瞄一下看看從 root 到刷機有沒有任何重大的已知問題。 (其實真正的步驟可能更簡單; 下詳。) 又到最重要的 custom rom 網站 Cynogenmod 確認一下它有支援你的手機/平板。

如果你愛玩技術、 重視資訊透明、 又買到比較開放的手機 你甚至可以用一些完全開放原始碼的工具逐步手工 root、 刷機。 不會比較簡單, 但可以學得比較多, 也比較安心。 若然, 建議按照 replicant 的步驟做一遍, 而不要用下一節推薦的常用工具。 至於要不要用 replicant 作為你每天使用的版本, 那是另一個問題。 下詳。 例如我就是看了 Root-Friendly Android 才上網買一部舊的 Nexus S 來刷; 刷過 replicant 之後, 又改刷 Cyanogenmod, 現在就開始用了。

四、 行前提醒

我一直使用 Linux 作業系統。 其中有一個原因就是資訊安全。 經過 微軟的 NSA 後門 RSA 的 NSA 後門 等等事件之後, 我更加確信: 軟體作者敢公開原始碼, 才值得完全信任。 所以我的手機與平板不論是在 root 之前或之後, 都盡量只安裝 f-droid 市集 的軟體 (而不是 google play 的軟體)。 如果你沒有我的堅持, 那麼遇到惡意軟體的風險可能就比我高很多。 惡意軟體對於 root 手機的危害, 可能遠大於未 root 手機。 所以未來成功之後, 當某個 app 要求 root 權限時 (一般版本的 root/ROM 都會有提醒), 請特別三思這是一個什麼樣的 app。 我自己(幾乎)只安裝看得見原始碼的 apps -- (幾乎)只從 f-droid 市集 安裝 apps。

[2016/10/9] 開始 root/刷機之前, 請務必先 (1) 備份資料 (2) 清除手機上的簡訊、通訊錄、相片、...等等個資。 因為你不知道接下來哪一步會不小心把手機搞爛掉, 被迫將你私密的手機送到不認識的人手中修理。 備份的部分, 請參考 「您不可不知的 Andorid 4.0 內建的軟體備份與還原機制 — 免 Root 全機備份」 及自由軟體計畫 Holo Backup。 刪除個資的部分, 請見 Selling your phone or tablet? Here’s how to ‘completely wipe’ your Android device The best way to completely wipe your Android device

五、 有錢好辦事

[2016/10/9] 有一個方法可以省略以下許多麻煩: 直接找 「台灣手機解鎖救磚」 之類的 root/刷機專門店, 或是搜尋 「台北 root」 或 「高雄 刷機」 等等, 找到你所居住城市的付費 root/刷機服務商。 這是最省事的方法。 當然, 手機要交出去之前, 記得一定要先做上述的刪除隱私資料動作。 root/刷機結束, 拿回來之後, 最好也請高手朋友檢查一下, 確認沒有被安裝任何其怪的 apps。

六、 S-off 及 Root

root 好像有兩條途徑: 一種是利用沒人知道的漏洞直接取得權限; 另一種是解鎖 boot loader, 然後載入 superSU。 以下是一些常見的 root/解鎖工具:

  1. HTC 官方有提供 bootloader 解鎖工具
  2. (多年前破解 Sony PS3 的神人 geohot 的作品) towelroot 讓 root 變得超簡單: 不需要電腦, 直接在手機/平板上面安裝這個 apk, 一執行馬上取得 root 權限!
  3. unrevoked 透過 Revolutionary 進行 S-OFF 並取得 ROOT 權限
  4. Bin4ry root 一鍵快速 Root 你的 Android 手機,幾乎適用所有手機!?
  5. Motochopper

這幾個工具都可以 root 許多廠牌的手機/平板; 但都沒有程式原始碼。 我個人比較傾向信任 unrevoked。 其實 Bin4ry 以及 motochopper 的作者 djrbliss 也都是 android 開發者社群的大大, 也都相當受到大家信任。 不過讀到 unrevoked 採用 (自由軟體的) dokuwiki 所架設的 官網文件, 我有更多的共鳴。 在問與答當中, 他們提到為什麼無法提供原始碼: 如果釋出原始碼, 很可能未來有些機型就無法 root 了。 他們沒把話講得很明白; 不過顯然是怕某些廠商處心積慮想要綁架消費者, 會閱讀原始碼、 改版硬體、 破解 unrevoked。 不過, 就像 微軟推出 "安全" 更新, 讓 fairuse4wm 無法幫你捍衛合理使用權 一樣, 手機廠商即使沒看到原始碼, 也有可能破解上述工具, 讓 root 失效。

如果失敗, 請特別檢查手機上面 「usb 偵錯」 或 「usb 連線」 之類的相關設定, 看看與文件要求是否一致。 再不行, 就拿錯誤訊息 google 一下吧。 也別忘了用手機型號跟 「root」 搜尋。

七、 Xposed

Root 之後, 刷機之前, 還可以考慮另一個可能性。 有些太新或太小眾的機型可能沒有 ROM 可以刷 -- 例如我的 ASUS MeMO Pad HD7。 又或者你可能很喜歡原廠預設的某些 apps, 不想因為刷機而失去它。

這時還有一個選項可以讓你的手機變得幾乎跟刷機一樣強大。 Xposed Framework 建立了一個奇特的架構。 讓開發者可以用小幅增刪功能的方式, 在不修改手機廠原生 ROM 的情況下, 幫你從系統層次補漏洞、 增功能。 這不是一個 custom ROM, 而是一個奇特的生態系, 它彷彿讓開發者可以潛入底層系統、 把原生系統原本未開放的功能與選項帶回水面上給一般使用者自主微調。 目前有大約 200 個小程式架在這套標準上面。 這篇文章 比較刷機 vs xposed 的優缺點。

Xposed 上面的 apps 多半有提供原始碼 (所以比較不可能藏後門)。

八、 挑一個好用的 ROM 來刷

OK, 還是決定要刷機是嗎? 首先要 解鎖 bootloader。 [2016/10/1: 大推觀念文 Root 與Unlock Bootloader(解鎖)。]

然後建議安裝 recovery 工具 CWM 或 TWRP, 用它來備份原本的 ROM:

  1. How To Install A Custom Recovery To An Android Phone / Device
  2. How to flash a custom recovery (like CWM or TWRP) on Android
  3. What Is TWRP Recovery & How To Install & Use It On Android Devices [Guide]
  4. TWRP 使用大法
  5. 刷機上不可或缺的好夥伴-第三方CWM Recovery程式
  6. ClockworkMod Recovery (官網教學文)
  7. Backup Stock / Custom ROM via Clockworkmod (CWM) Recovery

有些時候, 即使 root 失敗或沒有 root, 也可以直接刷機。 (例如按照 replicant 的教學文刷 Nexus S 就直接略過 root; 又例如我的 Aria root 失敗, 還是可以刷... 然後就變成磚塊了 orz。) 不過最簡單的方法, 還是先 root, 因為上述 root 工具執行完之後, 通常也會啟動自由刷機功能。

再來就是挑一個你有興趣的 ROM。

Replicant OS 旨在打造完全自由的 custom ROM。 歐洲自由軟體基金會 fsfe 提供了一些 實用的建議; RMS 從自由的角度提供全面性的技術概觀。 不過號稱最開放的 Nexus S, 在 replicant 團隊的檢視之下, 還是有很多硬體元件很不開放 -- 包含 wifi。 所以對一般人來說, 目前 replicant 還不太能用。

支援型號最多、 最主流的 custom ROM, 是 CyanogenMod, 簡稱 CM。 如果你不知道該刷哪一版、 或是懶得比較, 這會是最安全最保守的基本款。

這篇 2012 年中的文章 簡單比較了五種 ROMs, 按 lifehacker 讀者投票的熱門程度排序分別是: Paranoid Android、 AOKP、 米柚、 SlimROMS、 Liquid Smooth。 也請參考 2015 年十大 custom ROM

不過一直都有新的計畫出現, 所以別忘了搜尋 「CyanogenMod alternative」 找到你當時最熱門的版本。 也可用你的機型加上 「custom ROM」 看看有沒有專為你的機型所設計的版本。

以下的連結 (盡量) 直接連到各家 Custom ROM 的 「支援裝置清單」。 搜尋你的手機型號時請注意: 有些網站採用開發者稱呼手機的 (類似變數名稱) 拗口裝置代號而非廠商行銷時的響亮帥氣名稱, 所以請先到英文維基百科頁面的簡介或 codename 欄位 (或是在 PChome/Yahoo! 查價格時特別注意小括弧內的字串) 找到你的手機的代號。 以我手邊的機器為例, Google/Samsung Nexus S 的代號是 crespo 或 i9023; ASUS MeMO Pad HD7 的代號是 ME173X; HTC Aria 的代號是 A6366。

  1. Replicant
  2. CyanogenMod
  3. Paranoid Android
  4. AOKP
  5. 米柚
  6. SlimROMS
  7. Liquid Smooth
  8. Chameleon OS
  9. CarbonROM

當然, 別忘了回到 「買一部好刷機」 那一節的 UnLocker 頁面, 看看你的機器是否有更多的 Custom ROM 可刷。

也別忘了看一下: 你所挑的 ROM, 是否有原始碼? 重點不在於你自己是否看得懂、 有時間看。 重點是: 在全球不知多少高手的目光之下, 作者敢提供原始碼, 那麼藏後門的可能性就大大降低了。

決定之後, 當然就按照各官網的教學文來刷囉。

九、 我的手機變成磚塊了!

萬一 root 或刷機失敗, 手機無法開機時, 不必緊張。 通常的解決方案就是一不作二不休, 乾脆跳過 root, 直接刷機。 請參考以下連結:

  1. Android 手機變磚急救法 - 刷ROM [附教學及工具下載點]
  2. How Do I Fix My Bricked Android Phone?
  3. Are You Sure It’s Bricked? How You Can Fix Your Broken Smartphone
  4. RootzWiki 的 Brick 教學

如果刷其他的 ROM 還是都不行, 最保險的方式就是試著刷回官方的 ROM。 如果還是失敗, 那就回到第五節, 花錢請專家解救吧。

十、 更多連結

  1. 挨踢路人甲的一系列 Android 刷機相關文章, 超豐富!
  2. A4TW 臺灣 Android 社群網站
  3. Android-APK 刷機系列文章 (香港網站)
  4. Ultimate Guide to Android Rooting, Custom ROMs & Apps

報告完畢! 我要去玩那隻跑著全新軟體 (CM 10.2.1 相當於 Android 4.3.1) 的舊手機了 :-)

4 則留言:

  1. 研究中推...ME173CX變成磚塊了! 哭哭~

    回覆刪除
  2. 我的SONY xperia ZL突然不能登GOOGLE..................
    靠著Flashtool刷網路上一個大大的安卓5.0.2才成功
    刷機果然該學,但不能太精

    回覆刪除