如何將EXT3的ROM修改為EXT4版

2011 年 6 月 8 日 | 作者:小布仔 | 分類:Desire HD, Incredible S, 系統強化

EXT4與EXT3的差異,網路上已經有很多資料,機器達人在此不再贅述,但是好是壞、對效能的提升有沒有幫助則有待驗證。本篇內容提供進階讀者關於EXT3 ROM修改為EXT4的指南。

EXT4檔案系統格式與EXT3的檔案系統格式是不同的,但EXT4的驅動程式可以掛載EXT3的檔案系統,雖然透過mount指令看到掛載為EXT4,但實際上並沒有發揮EXT4全部的好處,由於某些EXT4的新功能可以直接運用在EXT3的檔案系統格式上,直接掛載或許即可提升少許效能。

用EXT4去掛載EXT3分割區的好處是,當您刷回只支援EXT3的ROM時,可以無痛還原。(在此告訴大家 → 並沒有自動轉換為EXT4這件事。)

而要完整地支援EXT4,我們需要先把DATA分割區「手動」格式化為EXT4,這個動作等同Wipe Data(恢復原廠設定)。而SYSTEM、CACHE分割區會在刷ROM的時候,ROM的作者就幫您處理好了,所以這部分不用煩惱(/META-INF/com/google/android/updater-script中的format指令)。

當DATA分割區格式化為EXT4之後,就代表您無法無痛還原成EXT3的ROM了,因為這些ROM無法將EXT4的DATA分割區掛載起來,所以要刷回EXT3的ROM時,同時也要手動先將DATA分割區格式化為EXT3。

手動格式化DATA分割區的方法

可透過ClockworkMod Recovery服用以下兩個檔案來格式化DATA分割區為EXT3或是EXT4:

[下載] Format_Data_to_EXT3.zip
[下載] Format_Data_to_EXT4.zip

ClockworkMod Recovery版本差異

不管是舊版的2.5.1.2~3或是新版的3.x.x.x都可以將DATA分割區格式化為EXT3或EXT4,也能正確地安裝EXT3或EXT4的ROM,其中的差別簡單講就是3.2.0.0版才能正常地備份與還原EXT4的ROM

完全EXT4版的三大要件

  1. 核心支援EXT4檔案格式,查看的方法為開機狀態使用adb shell執行「cat /proc/filesystems」指令來查看是否有ext4字眼,HTC原廠核心並不支援EXT4,因此需使用第三方的核心。
  2. boot.img中RAM Disk的init.spade.rc需指定用EXT4掛載system、data、cache、devlog四個分割區
    mount ext4 emmc@system /system ro data=ordered
    mount ext4 emmc@userdata /data nosuid nodev data=ordered
    mount ext4 emmc@cache /cache nosuid nodev data=ordered
    mount ext4 emmc@devlog /devlog nosuid nodev data=ordered

    EXT3版的init.spade.rc則為
    mount ext3 emmc@system /system ro data=ordered
    mount ext3 emmc@userdata /data nosuid nodev data=ordered
    mount ext3 emmc@cache /cache nosuid nodev data=ordered
    mount ext3 emmc@devlog /devlog nosuid nodev data=ordered

    BOOT分割區其實包含了Linux核心與RAM Disk,服用支援EXT4的核心套件,比如LeeDrOiD Ace GB KERNEL就會自動掛載為EXT4嗎?答案是不會!因為LeeDrOiD Ace GB KERNEL單獨套件並不會置換RAM Disk中的script內容,只是單純地換核心而已。比如原本GRI40-2有做記憶體提早回收的設定,此設定即設在RAM Disk中的script,所以服用了LeeDrOiD Ace GB KERNEL套件後,也不會更動記憶體提早回收的設定。

    要修改這部分,一種方法是服用LeeDrOiD Ace GB KERNEL之後,用nandroid backup將boot分割區取出來,交給dsixda's HTC Android Kitchen修改,另一種偷懶方式就是直接取LeeDrOiD發行的ROM,直接取其boot.img來使用,但這樣就失去記憶體提早回收的設定(可再使用dsixda's HTC Android Kitchen進行修改加回)。
     

  3. system、data、cache分割區皆格式化為EXT4
    ROM的zip檔中,/META-INF/com/google/android目錄下的updater-script的內容會有以下兩個指令
    format("ext3", "EMMC", "/dev/block/mmcblk0p25");
    format("ext3", "EMMC", "/dev/block/mmcblk0p27");

    mmcblk0p25為SYSTEM分割區,mmcblk0p27為CACHE分割區,所以我們需要將上面這兩個指令改為以下,再放回ROM的zip檔裡。
    format("ext4", "EMMC", "/dev/block/mmcblk0p25");
    format("ext4", "EMMC", "/dev/block/mmcblk0p27");

    但updater-script的內容沒有格式化mmcblk0p26這個DATA分割區,因為執行了格式化DATA分割區,使用者的手機資料就會被清除了,也就是Wipe Data(恢復原廠設定)。因此要服用前面提供的Format_Data_to_EXT4.zip,內部只含一道指令「format("ext4", "EMMC", "/dev/block/mmcblk0p26");」,可以將DATA分割區格式化為EXT4。

如何將EXT3的ROM修改為EXT4版

看完以上的說明,這裡以GRI40-2特調ROM為範例,這裡整理一個簡單步驟,指導進階讀者如何將它轉為純正EXT4的ROM。

  1. 將ROM中的boot.img替換掉
  2. 修改ROM的zip檔中的/META-INF/com/google/android/updater-script,將所有ext3字眼改為ex4
  3. 進入ClockworkMod Recovery,先服用Format_Data_to_EXT4.zip,再服用讀者自行調整過的ROM檔,重開機即可完成。

給進階讀者練習發揮的空間:所有分割區皆使用EXT3格式但以EXT4的方式掛載(只做上述步驟的1),與全部分割區皆使用EXT4格式並以EXT4的方式掛載(做上述步驟的1、2、3),比較兩者性能差異。有心得請不吝於回報!

分類:Desire HD, Incredible S, 系統強化 | 16 則回應
引用網址:https://gfans.bryan.tw/2011/06/08/1947/trackback

本文章目前有 16 則回應

  1. 阿弟弟 說道:

    讚!布大的這篇教學把網路上多篇熱烈討論的ext4刷rom的猜測全部解答。看過之後就不需去疑惑到底是否有刷成功為ext4格式rom了。

  2. steven 說道:

    布大請教一下
    如果我要將現在是EXT4的系統 使用K大的ROM
    要還原為原廠系統
    是可以直接用您手動格式化DATA分割區的方法
    Format_Data_to_EXT3.zip 直接刷完之後
    再還原之前的原廠系統備份嗎?
    ClockworkMod Recovery版本差異 有差嗎?
    現在是ClockWorkMod 3.x.x.x版
    需要先還原ClockWorkMod 2.5.1.3再去刷回原廠ROM嗎?

    • 小布仔 說道:

      之前的原廠系統備份如果確認是EXT3狀態下的備份
      沒錯,還原前先服用Format_Data_to_EXT3.zip
      再執行restore就回來了

      我可以確認用2.5.1.3還原沒問題
      3.x.x.x不確定>"<

      • 小宇 說道:

        布大! 不好意思
        我現在ClockworkMod是3.0.2.6
        還原EXT4的ROM 都會陷入無限重開機的輪迴裡

        請問有辦法把ClockworkMod弄成3.2.0.0嗎?
        我要還原EXT4的ROM

        感謝!

  3. 柚爸 說道:

    之前機器達人的文章裡有這麼一句話:

    機器達人所有產出皆以ClockworkMod Recovery 2.5.1.3與2.5.1.2版做測試,請勿追求新版。

    那這篇新的文章是否宣告了之後機器達人會開始用新版的 ClockworkMod Recovery 了呢?

  4. Glen 說道:

    很期待布大的新ROM!

    但目前我遇到一些小問題,我移除了SENSE之後又凍結和移除了一些程式,

    但我不知道我是動到不該動的城市還是怎樣...

    我自動同步的圖示會一直跳出來而且不會自己消失,就算我關掉自動同步也是一樣,

    雖然可以自己近設定裡取消,但總是很麻煩,

    可以大概幫我抓一下原因嗎?感謝~

    • 阿弟弟 說道:

      如果照你的描述應該沒人幫的了你,因為東西是你自已移除的你自已最知道動到什麼。
      建議你先重刷ROM吧~如果只是凍結的話就把他都解凍看看還會不會。殺了那些或凍結幫助並沒有很大。
      以上是個人見解。

  5. Q1O 說道:

    將ROM中的boot.img替換掉 這一句我不太懂是要替換什麼@@?

  6. QQ 說道:

    # cat /proc/filesystems
    cat /proc/filesystems
    nodev sysfs
    nodev rootfs
    nodev bdev
    nodev proc
    nodev cgroup
    nodev tmpfs
    nodev debugfs
    nodev sockfs
    nodev pipefs
    nodev anon_inodefs
    nodev devpts
    ext3
    ext2
    ext4
    nodev ramfs
    vfat
    nodev cifs
    nodev fuse
    fuseblk
    nodev fusectl
    之前有依照別人的方式 改過 這樣到底是有沒有 改成ext4呢@@

  7. Kevin 說道:

    請教 布大,

    如何 檢查 DHD手機 系統 已經 是 "純正EXT4" 了?

    感激不盡!!!

  8. eric 說道:

    請教一下
    為什麼我刷完,重開機進入後,卻不能打電話,背景也顯示不出來,其他的都正常

  9. 法蘭奇 說道:

    Hello 布大,本人是香港月刊的編輯,閣下此篇文章確實有趣易懂又實用,故很渴望能獲轉載,方便的話,可經電郵再初實作詳談嗎?謝謝。

  10. 新手 說道:

    # cat /proc/filesys
    cat /proc/filesyste
    nodev sysfs
    nodev rootfs
    nodev bdev
    nodev proc
    nodev cgroup
    nodev tmpfs
    nodev debugfs
    nodev sockfs
    nodev pipefs
    nodev anon_inodef
    nodev devpts
    ext3
    ext2
    ext4
    nodev ramfs
    vfat
    nodev fuse
    fuseblk
    nodev fusectl
    nodev cifs
    #

    請問達人~這樣有成功刷入EXT4嗎??

回應

暱稱:

信箱:

網站:

驗證碼: