Linux
live dd 在已安裝的只讀根分區上
我正在嘗試為基於 Linux 的嵌入式系統構想一種韌體更新機制,而無需額外的 initrd/initramfs/whatever。在具有隻讀安裝根的正在執行的系統中,我使用 dd 複製新的根映像(位於輔助數據分區上)。
問題是有一半的時候我的根文件系統已經損壞。我不明白為什麼會發生這種情況,因為我知道分區是只讀的並且我在重新啟動之前進行了同步(我通過將“b”寫入 /proc/sysrq-trigger 來重新啟動)。有人請賜教。
您正在覆蓋已安裝的文件系統。一旦文件系統驅動程序試圖從中讀取任何內容,您一定會遇到麻煩。
您需要確保在編寫新韌體後,沒有其他任何東西必須讀取或寫入該分區。
人們通常似乎為了規避這個問題正在做的是使用引導載入程序來刷新新韌體。它通常完全駐留在 RAM 中,因此不需要訪問您的分區。
編輯:另一種方法是在您的第二個分區上安裝另一個最小系統,其唯一目的是將映像文件快閃記憶體到第一個分區。當更新到期時,您只需將映像複製到正確的位置,更新引導載入程序(從第二個分區引導)並重新啟動。寫入映像後,重置引導載入程序並再次重新啟動。