Linux

我可以在根 fs 掛載的 RO 上進行低級更改嗎?

  • November 21, 2012

這個問題相關:有一個必須以只讀方式安裝的根文件系統(說它完全損壞了),我可以重新格式化分區或dd在它上面的舊備份映像(然後重新啟動)嗎?

我猜文件系統在掛載時不會喜歡那些根本性的變化(即使是只讀的)。

或者,作為一個類似的問題:除了互動式執行 fsck(即使用其他工具對分區數據執行永久更改)之外,是否還有其他可能性來修復壞根 fs?

好吧,除了互動式執行之外,您可以嘗試fsck -y像我在另一個問題中的回答一樣:-P

如果您想dd在 rootfs 上創建映像,最好的辦法是在安裝 rootfs 之前從您的 initramfs 執行此操作。

可以通過引導到該 rootfs 的系統來執行此操作,但這是 Unix 為您提供繩索的事情之一(循環已經很好地為您捆綁)。文件系統根本不喜歡它(“嘿,我希望那裡有一個 inode,這是什麼垃圾?!”)。確保它是真正只讀的,例如,沒有日誌重播。

如果您避免文件系統訪問,您可能會僥倖逃脫。這意味著您的源圖像不能在 rootfs 上。那將是一個非常糟糕的主意。

執行 dd 後,shutdown -r now將無法正常工作(也沒有很多其他內容,包括lsand cat)。相反,我建議您使用看門狗(甚至是軟狗)來強制重置,或者使用/proc/sysrq-triggerecho通常是內置的 shell,因此您應該仍然可以執行echo.

我不確定您在做什麼,但聽起來您可能正在建構某種設備。您應該考慮保留只讀 rootfs,並使用覆蓋(聯合掛載、aufs 等)進行更改,類似於 livecd 的工作方式。或者,或者,擁有一個僅用於備份或恢復的 rootfs(類似於有多少 Android 手機可以工作)。

引用自:https://unix.stackexchange.com/questions/56230