Linux
如果正在使用交換映像,我可以重新安裝為只讀嗎?
當我在玩我的 Android 手機(CyanogenMod 10.1 核心 3.0.78)時,我發現了這個:
- 中的一個腳本
/etc/init.d/99system.swap.sh
- 它將 /system 重新掛載為 rw,並在
/system/swap/swap.img
手機啟動後,我可以通過查看
/proc/swaps
. 但是/system
安裝為 ro。我試圖在另一部手機上手動做同樣的事情。但是當我嘗試重新掛載
/system
為ro時,我收到錯誤消息,說有資源正在使用中。如果我交換swap.img
文件中的圖像,我可以立即重新掛載/system
為ro。我錯了,將其重新安裝為rw後,我無法將其重新安裝
/system
為ro。lsof顯示大量程序正在使用./system
正如手冊頁所述,理論上應該是可能的
swapon
:
[...] the swap file implementation in the kernel expecting to be able to write to the file directly, without the assistance of the file system [...]
所以當你有一個交換文件時,核心喜歡把它當作一個分區來對待,即它確定交換文件在磁碟上的物理位置,然後直接使用那個區域,就像它使用一個分區區域一樣。這是使交換到文件的速度與交換到正常分區一樣快的技巧。
此時文件系統已脫離循環,將文件系統本身設為只讀應該沒問題。您是否真的被允許這樣做是另一回事。我自己沒有測試過,特別是 Android 可能與正常 Linux 環境不同。