ext4檔案系統能否通過修改superblock塊使該檔案系統取消寫保護?

時間 2021-06-05 09:08:45

1樓:醉臥沙場

雖然我不是乙個Android開發人員,但是根據你並不算具體的描述我覺得你提到的system.img檔案可能並不是乙個完整有效的系統映象檔案,可能是經過壓縮之類的。

ext4本身並沒有什麼on-disk的write-protected開關位。導致唯讀掛載的可能性很多,比如ext4模組發現你的所謂的ext4檔案系統並不能被完好支援就會嘗試唯讀掛載。所以比起你提出的修改ext4的superblock的問題,我覺得你的研究方向可能有問題,你最好檢視Android方面的文件,了解一下它的system.

img是怎麼做出來的,如果經過了特殊處理,那怎麼「反處理」可以正常掛載。我覺得這才是你應該首先考慮的方向。

建議Google "Android ext4 system.img write-protected"入手

再補充:經過和做過安卓開發的朋友的一點溝通,了解到原來谷歌對其ext4 system.img映象做了檔案系統層面的Dedupelication(去重)。

這是我沒想到的,因為即使從當前最新的ext4原始碼來看,ext4也沒有支援dedupe這個特性。經過一番了解,原來這是google的「個人行為」,google將on-disk的ext4資料進行去重操作,使得本身不支援這一「特性」(雙引號的特性)的ext4執行時程式不能正常識別和操作(特別是寫操作)這樣的ext4檔案系統。然後google將這樣的ext4打上RO_COMPAT的標記,乾脆讓其唯讀(即使不打這個標記,當前的ext4模組也不知道怎麼寫,一寫就容易出錯)。

這就是新故事的大概了,以前是有什麼sparse img和raw img的轉換,現在好像已經變成新的模樣了。我不知道是不是aosp的官方文件沒提這方面的改動,總之我也是抱著一顆好奇心初次了解這個事情。system.

img本身確實沒有必要讀寫掛載,所以google才「有恃無恐」的這樣做,這樣做也能稍微縮小system.img占用的空間。如果你真的需要讀寫掛載那就從build階段入手看看能不能避開去重的那步。

或者用overlay的手段在上面鋪一層可讀寫層,比如:

我先將system.img以唯讀方式掛載在/mnt/scratch/lower上:

# mount -oloop,ro system.img /mnt/scratch/lower

然後我通過overlayfs把system.img的掛載點和乙個可以讀寫的掛載點關聯到到一起後掛載到/mnt/test上:

# mount -t overlay -o lowerdir=/mnt/scratch/lower -o upperdir=/mnt/scratch/upper -o workdir=/mnt/scratch/work /mnt/scratch /mnt/test

現在我們就可以通過/mnt/test的overlayfs進行讀寫了:

# mount -l

/root/system.img on /mnt/scratch/lower type ext4 (ro,relatime,seclabel)

/mnt/scratch on /mnt/test type overlay (rw,relatime,seclabel,lowerdir=/mnt/scratch/lower,upperdir=/mnt/scratch/upper,workdir=/mnt/scratch/work)

# ls /mnt/test

# echo this is a test > /mnt/test/file

# cat /mnt/test/file

this is a test

# rm -f /mnt/test/file

當然這些寫操作實際上並不真實發生在system.img上的唯讀檔案系統上。

以上,就到這裡吧。

Linux的ext4檔案系統,為什麼inode裡只有12個指向資料塊的直接指標?

錢子晨 早期設計的時候應該有一些統計學分析在裡面的,例如有這樣乙個實驗資料 對乙個包含約150000個檔案的系統進行了度量。其中30 多的檔案大小在節以下,80 的檔案占用10 000 位元組或者更少的空間。假定塊的大小為節,只要使用12個直接指標便能引用大小為節及以下的檔案,可訪問總計節的塊。若塊...

非 NTFS 的日誌式檔案系統上,比如Ext4,能實現類似 Everything 這個軟體的利用日誌進行快速搜尋的功能麼?

逸凌 NTFS的USN Journal 和通常的Journaling Filesystem的Journaling的是兩回事,通常意義上的Journaling是用來保證檔案完整的,在檔案被真正寫到磁碟上之前是被放進journal裡,檔案寫完之後這個記錄就被刪掉 標記為完成 了,如果系統down掉,重啟...

如何在 Windows 下訪問 ext4 格式的硬碟?

Target 試了所有回答中提到的軟體,win10只有ext2fsd能用 版本0.69 但是有時能用,有時又不能用 識別為ext3然後打不開 換個電腦可以,再換個電腦又不行了 lll 替windows內測 申請 windows insider,然後谷歌 wsl2 mount linux drive ...