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版的三大要件
- 核心支援EXT4檔案格式,查看的方法為開機狀態使用adb shell執行「cat /proc/filesystems」指令來查看是否有ext4字眼,HTC原廠核心並不支援EXT4,因此需使用第三方的核心。
- 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=orderedEXT3版的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=orderedBOOT分割區其實包含了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進行修改加回)。
- 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。
- 將ROM中的boot.img替換掉
- 修改ROM的zip檔中的/META-INF/com/google/android/updater-script,將所有ext3字眼改為ex4
- 進入ClockworkMod Recovery,先服用Format_Data_to_EXT4.zip,再服用讀者自行調整過的ROM檔,重開機即可完成。
給進階讀者練習發揮的空間:所有分割區皆使用EXT3格式但以EXT4的方式掛載(只做上述步驟的1),與全部分割區皆使用EXT4格式並以EXT4的方式掛載(做上述步驟的1、2、3),比較兩者性能差異。有心得請不吝於回報!
引用網址:https://gfans.bryan.tw/2011/06/08/1947/trackback
讚!布大的這篇教學把網路上多篇熱烈討論的ext4刷rom的猜測全部解答。看過之後就不需去疑惑到底是否有刷成功為ext4格式rom了。
布大請教一下
如果我要將現在是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
感謝!
之前機器達人的文章裡有這麼一句話:
機器達人所有產出皆以ClockworkMod Recovery 2.5.1.3與2.5.1.2版做測試,請勿追求新版。
那這篇新的文章是否宣告了之後機器達人會開始用新版的 ClockworkMod Recovery 了呢?
如果可以更新成ClockworkMod Recovery 其實也不錯啊
很期待布大下一個作品 想用來實驗看看一些不一樣的東西
很期待布大的新ROM!
但目前我遇到一些小問題,我移除了SENSE之後又凍結和移除了一些程式,
但我不知道我是動到不該動的城市還是怎樣...
我自動同步的圖示會一直跳出來而且不會自己消失,就算我關掉自動同步也是一樣,
雖然可以自己近設定裡取消,但總是很麻煩,
可以大概幫我抓一下原因嗎?感謝~
如果照你的描述應該沒人幫的了你,因為東西是你自已移除的你自已最知道動到什麼。
建議你先重刷ROM吧~如果只是凍結的話就把他都解凍看看還會不會。殺了那些或凍結幫助並沒有很大。
以上是個人見解。
將ROM中的boot.img替換掉 這一句我不太懂是要替換什麼@@?
# 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呢@@
代表這個核心有支援EXT4格式
請教 布大,
如何 檢查 DHD手機 系統 已經 是 "純正EXT4" 了?
感激不盡!!!
在命令提示字元中 輸入
cd c:\android-sdk-windows\tools
adb shell
mount | grep ext
即可確認系統是不是已經變EXT4
請教一下
為什麼我刷完,重開機進入後,卻不能打電話,背景也顯示不出來,其他的都正常
Hello 布大,本人是香港月刊的編輯,閣下此篇文章確實有趣易懂又實用,故很渴望能獲轉載,方便的話,可經電郵再初實作詳談嗎?謝謝。
# 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嗎??