我正在尝试提出一种 bash 脚本化方法来替换正在运行的 PC 上的根文件系统。该系统使用带有 ext4 rootfs 和交换分区的 MBR 分区磁盘,不幸的是它不使用 LVM / BTRFS 或任何类似的有用的东西。它使用 grub / kernel & initrd / systemd 运行最小的 Debian 发行版。
没有对所讨论的 PC 进行物理访问 - 它正在运行一些自助服务终端软件,可以使用专有工具将包含二进制文件和更新 shell 脚本的 tarball 推送到 PC。我的计划是使用这个更新系统来尝试替换rootfs。
我的想法基本上可以归结为以下几点:
将 initrd 替换为自定义版本,该版本不会将 switch_root 切换到真正的 rootfs 而是替换它(可能使用 dd 写入新映像),然后重新启动到新系统
(不知何故!)从实时系统 switch_root 到某种临时文件系统,然后执行上述 dd 并重新启动
如上所述,但是将 init 进程设置为一个新的临时 fs 并执行上述操作或类似操作...
我不熟悉pivot_root 和switch_root 功能,并且目前正在玩-我确定以前已经这样做过,但我已经搜索过但没有找到解决方案!