替換正在運行的 Linux 根檔案系統

替換正在運行的 Linux 根檔案系統

我正在嘗試提出一種可編寫 bash 腳本的方法來替換正在運行的 PC 上的根檔案系統。該系統使用帶有 ext4 rootfs 和交換分割區的 MBR 分割磁碟,不幸的是它不使用 LVM / BTRFS 或類似的任何有用的東西。它使用 grub / kernel 和 initrd / systemd 運行一個最小的 Debian 發行版。

無法對有問題的 PC 進行實體存取 - 它正在運行一些資訊亭軟體,透過該軟體可以使用專有工具將包含二進位檔案和更新 shell 腳本的 tarball 推送到 PC。我的計劃是使用這個更新系統來嘗試替換rootfs。

我的想法基本上可以歸結為以下幾點:

  • 將 initrd 替換為自訂版本,該版本不會 switch_root 到真正的 rootfs,而是取代它(可能使用 dd 寫入新映像),然後重新啟動到新系統

  • (不知何故!)將 root 從即時系統切換到某種臨時檔案系統,然後執行上述 dd 並重新啟動

  • 如上所述,但pivot_root將init進程轉移到新的臨時檔案系統並執行上述操作,或類似的操作...

我不熟悉pivot_root和switch_root功能,目前正在玩 - 我確信這之前已經完成過,但我已經搜索過但沒有找到解決方案!

答案1

這個堆疊交換答案。接受的答案指出這個連結,它解釋瞭如何使用pivot_root建立臨時記憶體根檔案系統,它使您能夠更改、調整大小、替換或以任何其他方式弄亂您的根檔案系統,而無需重新啟動。

相關內容