- 註冊時間
- 2014-1-9
- 最後登錄
- 2025-6-8
- 帖子
- 4425
- 閱讀權限
- 100
- 積分
- 16848
- 精華
- 3
- 機型
- 小米6
- 版本
- 8.8.30
 
|
本帖最後由 鸚鵡 於 2014-7-25 16:41 編輯
[寫在前面]
小弟在6/11拿到手機之前從未接觸過小米機,拿到 也僅是把 JBL15 刷 root
Android 平台手機分別對 Moto、HTC、Samsung 三隻很舊款的手機進行刷機達到勉強堪用 (都是版本 2.1 刷成 2.2)
所以以下分享,單純是個人研讀相關文章、資料
並加以自己的經驗和部份的專業彙整而成
若有任何錯誤,請訊息通知 小弟會優先修正
[概述]
目前 Android 平台中和 系統、APP、使用者資料 有關的主要資料分別放在兩個路徑下
/system 主要系統、系統設定、函式庫、內建程式 會放在這裡
/data 程式的相關資料(無論內建或自行安裝)、使用者資料、使用者安裝的程式 則放在這裡
其他比較容易被提起的路徑
/system/app 系統內建的程式的 apk
/system/etc 系統相關設定的資料
/data/data 所有程式的相關資料
/data/app 使用者自行安裝的 app
/data/dalvik-cache 所有程式(apk檔案)會被手機系統最佳化成為 dex 檔案 並存放在這 (odex 會放在 apk 相同路徑)
/cache 暫存(緩存)用
/sdcard 記憶卡 或 內部儲存空間
[雙清?三清?]
進入Recovery 中的清除數據 會有四個選項,前三者分別是:
清空緩存 清空 /cache
清空用戶數據 清空相關設定值,也就是 /data 下的資料,但是會保留 /data/app
(一般的 Android 這個動作是清空 /data 路徑下所有資料)
清空所有數據 以上兩者全清,並且連 /data/app 裡自行安裝的程式也一併刪除
MI2S 似乎特地把清除所有數據分拆出另一個 清除用戶數據
藉以保留 /data/app 下已安裝的應用程式,省去系統在大幅度改版下需要進行雙清時 使用者也可以保留已安裝的 app
[刷機方式]
目前 MI2S 共有三種刷機方式,分別是
1. fastboot 模式下的 線刷
2. recovery 模式下的 卡刷
3. 正常開機裡的系統升級中的 選擇安裝包
(系統與安全中的系統升級,或 桌面 -> 功能表(左下角三條線) -> 關於手機 -> 畫面下方的系統升級
fastboot 線刷
會對 system1 以及 system2 同步刷新
recovery 卡刷
固定將 儲存空間內的 update.zip 刷入 system1
系統升級 選擇安裝包 來 進行刷機
適用卡刷包、特定刷機包(客製/第三方)、root包、OTA升級
MI2S 有提供特定模式的雙系統
兩份 /system 交替使用:這裡用 system1(系統1) 和 system2(系統2) 示意
一份 /data 共用
所以 一般的穩定版本使用一段時間要刷最新的開發版本
或 開發版本想刷回穩定版本使用時
都會建議雙清,避免系統版本差異過大產生系統設定檔格式不相容造成的錯誤(FC ?)
同清除數據說明,清除用戶數據一併清除系統設定時,可以保留已經安裝的 app 省去重新安裝的步驟
新手機出廠時,原廠預先做了等同線刷的動作,也就是 system1 和 system2 內容完全相同
而 recovery 中的卡刷 是固定刷入 system1
只有在系統升級中利用 選擇安裝包 進行刷機或更新時 才會雙系統的效果
雙系統刷機法
system1 開機後 進行 系統升級->選擇更新包 -> 開始更新後
手機的第一個動作是:
1. 將 system1 完全複製到 system2
2. 將更新包的內容刷入 system2 內,動作是強制覆蓋
3. 更改系統更底層的啟動判斷,變更開機時預設啟動系統為 system2
註:在 system2 中操作則是相反的對 system1 動作
以上是一種交叉式的刷機模式,官方透過這樣的方式來拿到一種 刷不死 的環境
情境模擬:
在 system1 中刷了第三方的包,重新啟動進入 system2 發現有嚴重bug,或是根本無法進入系統
這時候可以進入 recovery 模式中,選擇 重新啟動 進入 system1 繼續使用
一天後 bug 修正後再次刷機,這時候 又是從 system1 刷入 system2
重新啟動後 進入 system2 正常使用
待下次刷機,則是反過來對 system1 刷機,即使失敗了還是可以回到本次成功的 system2
Recovery 中指定開機的系統:
進入 recovery 模式後,選擇 重啟手機,會出現 system1(系統1) 以及 system2(系統2) 以供選擇
其中一個系統 會 額外註明 (最近),最近開機或重新開機時 預設進入的系統
透過系統更新 + Recovery 切換,我個人是這樣利用
JBL15穩定版本 中 刷 root 包,重開機後進入已經 root 的 JBL15系統
之後進行 OTA升級因驗證錯誤無法升級時
透過 recovery 回到之前的尚未 root 的 JBL15系統,進行 OTA升級
這時候 已經 root 的 JBL15 已經被刷成 JBL16
進入系統後 再刷 root包,則會把 尚未 root 的 JBL15 刷成 JBL16+root
情境時間軸 |system1 |system2
==============|==============|====================
新機開箱 |JBL15(*) |JBL15
| |
刷root包 |JBL15(*) |JBL15+root
| |
重新開機後 |JBL15 |JBL15+root(*)
| |
OTA升級JBL16失敗 |JBL15 |JBL15+root(*)
| |
進Recovery回system1 |JBL15(*) |JBL15+root
| |
OTA升級JBL16 |JBL15(*) |JBL16
| |
重新開機後 |JBL15 |JBL16(*)
| |
刷root包 |JBL16+root |JBL16(*)
| |
重新開機後 |JBL16+root(*) |JBL16
| |
刷JBL17含root卡刷包 |JBL16+root(*) |JBL17+root
| |
重新開機後 |JBL16+root |JBL17+root(*)
| |
刷開發版 3.6.21 |開發版3.6.21 |JBL17+root(*)
| |
重新開機後 |開發版3.6.21(*) |JBL17+root
| |
OTA升級開發版3.6.28 |開發版3.6.21(*) |開發版3.6.28
| |
重新開機後 |開發版3.6.21 |開發版3.6.28(*)
| |
刷JBL17含root卡刷包 |JBL17+root |開發版3.6.28(*)
| |
重新開機後 |JBL17+root(*) |開發版3.6.28
註:標示 (*) 代表 MI2S 進入的系統,也就是[選擇更新包]時所在系統
當然也可以作成類似下面的情況:
system1 / system2
穩定 開發版
穩定 原生Android
開發版 原生Android
…… 等等更多的組合
[額外說明]
已經有人透過修改底層的啟動程序
進而將原本應該掛載到 /data 的磁碟分割 掛載到其它路徑
並在裡面新增兩個路徑(目錄),分別是 data1 和 data2
然後在切換系統時,在另外判斷將 data1 或 data2 其中一個掛載到 /data
進而可以達成 雙系統 獨立資料區 的目的
唯一的缺點是 兩邊獨立的 data 資料 會共用那 3.71GB 的空間
但是對於沒有大型遊戲需求的玩家,的確也是一個玩家級的解決方案
|
-
總評分: 經驗 + 22
貢獻 + 2
查看全部評分
|