我正在嘗試提出一種可編寫 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功能,目前正在玩 - 我確信這之前已經完成過,但我已經搜索過但沒有找到解決方案!