請選擇 進入手機版 | 繼續訪問電腦版

米柚愛好者論壇

 找回密碼
 立即註冊
查看: 5480|回覆: 12

關於刷機的一些分享,包含雙系統的概念

[複製鏈接]

114

主題

36

好友

8970

積分

顧問團

Rank: 12Rank: 12

發表於 2014-1-13 01:51:38 |顯示全部樓層
其他
產品名稱: -
本帖最後由 鸚鵡 於 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 的空間
但是對於沒有大型遊戲需求的玩家,的確也是一個玩家級的解決方案

已有 9 人評分經驗 貢獻 收起 理由
阿山哥 + 2 讚!
吳主任 + 1 讚!
apple20222 + 1 讚!
JH_Chen + 1 讚!
ag059087 + 1 讚!
rismy + 1 讚!
凱366 + 5 + 1 幹的好!
道奇兔 + 3 讚!
harry.potertw + 5 + 1 讚!

總評分: 經驗 + 20  貢獻 + 2   查看全部評分

欠稿文章主題:
Android系統 - 簽名稽核機制 概述
Android系統 - 最高權限(root)

9

主題

13

好友

1219

積分

資源組

Rank: 12Rank: 12

發表於 2014-1-13 06:41:27 |顯示全部樓層
真是太詳細了...完整說明了小米手機與MIUI系統進行刷機時的觀念....讚!

50

主題

27

好友

1萬

積分

資源組

紅米 Note

Rank: 12Rank: 12

發表於 2014-1-13 11:17:26 |顯示全部樓層
叫我寫那麼多....
我可能會先躺平....

1

主題

0

好友

373

積分

大一

Rank: 3

發表於 2014-1-17 10:21:44 |顯示全部樓層
請問紅米是不是也可刷雙系統? 謝!

29

主題

26

好友

1萬

積分

大四

論壇老灰阿

Rank: 8Rank: 8Rank: 8Rank: 8

發表於 2014-1-17 10:35:09 |顯示全部樓層
ag059087 發表於 2014-1-17 10:21
請問紅米是不是也可刷雙系統? 謝!

紅米不行

1

主題

0

好友

373

積分

大一

Rank: 3

發表於 2014-1-17 10:40:51 |顯示全部樓層
真是殘念啊!!~~

6

主題

1

好友

708

積分

大二

Rank: 4Rank: 4

發表於 2014-2-23 19:56:05 |顯示全部樓層
感謝大大分享唷!已於2014.02.23 收錄於 米柚愛好者論壇 刷機/教學/技巧/資源整合[持續更新][2014.02.23更新] 中囉^^
http://forum.tommykids.info
歡迎來玩耍喲!

3

主題

1

好友

149

積分

高中

Rank: 2Rank: 2

發表於 5 天前 |顯示全部樓層
> 進入Recovery 中的清除數據 會有四個選項,前三者分別是:
> 清空緩存   清空 /cache
> 清空用戶數據 清空相關設定值,也就是 /data 下的資料,但是會保留 /data/app
>         (一般的 Android 這個動作是清空 /data 路徑下所有資料)
> 清空所有數據 以上兩者全清,並且連 /data/app 裡自行安裝的程式也一併刪除
>
請問TWRP Recovery內的Wipe預設是否就是三清?
能否只做雙清以便保留先前灌好的App?
是再點進Advance並挑選下列某幾項嗎?
Dalvik Cache、Cache、Data、System、emmc、Android Secure、sdcard。

114

主題

36

好友

8970

積分

顧問團

Rank: 12Rank: 12

發表於 5 天前 |顯示全部樓層
absolute 發表於 2014-7-21 16:13
> 進入Recovery 中的清除數據 會有四個選項,前三者分別是:
> 清空緩存   清空 /cache
> 清空用戶數據 ...

預設應該是 雙清

三清 是再加上 清除 Data
已有 1 人評分經驗 收起 理由
absolute + 1 感謝告知!

總評分: 經驗 + 1   查看全部評分

欠稿文章主題:
Android系統 - 簽名稽核機制 概述
Android系統 - 最高權限(root)

3

主題

1

好友

149

積分

高中

Rank: 2Rank: 2

發表於 前天 15:51 |顯示全部樓層
鸚鵡 發表於 2014-7-21 16:20
預設應該是 雙清

三清 是再加上 清除 Data

鸚鵡大大:
前幾天用TWRP刷你包的紅米16.0時沒Wipe,
剛開始使用都還好,但昨天熊熊發作,
跑一些App偶爾會閃退,接著Google行事曆無法同步,TWRP
剛剛殘殘先Wipe再重刷一次你的16.0,
重開機後就看不到先前灌的App囉,
TWRP Wipe我一進去就滑,沒再進Advance內點選,
請問這樣是否就是三清呢?
您需要登錄後才可以回帖 登錄 | 立即註冊

手機版|米柚愛好者論壇

GMT+8, 2014-7-26 23:09 , Processed in 0.030153 second(s), 27 queries .

Powered by MIUI@EZBOX

© 2014 EZBOX

回頂部