![對基於 BBB 的定制板的根分區進行 fsck](https://rvso.com/image/1510185/%E5%B0%8D%E5%9F%BA%E6%96%BC%20BBB%20%E7%9A%84%E5%AE%9A%E5%88%B6%E6%9D%BF%E7%9A%84%E6%A0%B9%E5%88%86%E5%8D%80%E9%80%B2%E8%A1%8C%20fsck.png)
我們有基於 BeagleBone Black 的客製化嵌入式 Linux 板。它有 Linux-3.12、256MB RAM 和 4GB eMMC,ext4
上面有檔案系統。
有時我們會遇到檔案系統錯誤(罕見但並非不可能)。因此,我們要檢查檔案系統錯誤並在啟動時修復它。
顯然我們不希望 fsck 或任何其他實用程式破壞檔案系統上的任何資料。
我們有基於 busybox 的SysVinit
所以/forcefsck
不起作用:( 然後我使用/etc/fstab
(將第 5 個字段設置為 1),然後fsck -p
從rcS
腳本運行。
此組合適用於rootfs
分割區以外的分割區。我對此有幾個問題。
- 無論如何可以在分區
fsck
上運行嗎rootfs
? - 會
fsck -p
不會破壞分區上的資料? - 有沒有更好的方法來處理這種情況,我的意思是任何可以檢查並糾正檔案系統錯誤的服務?
答案1
基於 SysVinit 的桌面 Linux 發行版的正常方法是在啟動過程中偵測到根檔案系統上的錯誤時要求輸入 root 密碼。然後您可以使用它fsck
在根檔案系統上運行。我不知道你的嵌入式發行版是否這樣做,但絕對可以這樣配置。
如果啟動期間沒有偵測到錯誤,另一個選擇是以 root 身分登錄,停止所有不必要的操作,以唯讀方式重新掛載根檔案系統,然後對其執行 fsck。
這是關於區塊儲存的根檔案系統,而不是根檔案系統。 Rootfs 是一個最小的基於 ram 的檔案系統,在啟動期間使用,而且它不會被損壞(除非您的啟動核心映像已損壞,或您的 RAM 損壞)。
原則上fsck -p
僅進行“安全”修復,但如果您確實想確保不會發生任何問題,請手動運行它,以便系統會提示您執行每個操作。如果由於某種原因根檔案系統上有有價值的資料(不應該發生,但也許你會發生),請先使用 進行備份dd
。