在不同分区上使用第二次 init/systemd 启动

在不同分区上使用第二次 init/systemd 启动

我们有以下设置:

  • 内核从中启动的只读系统分区。 (Debian 杰西)
  • 具有可作为守护进程启动的附加软件的读写分区。
  • r/w 分区上的一个简单的自定义启动脚本用于启动守护进程。该脚本作为 r/o 分区上 systemd 的最后一个服务启动。

如何利用现代 init 变体(systemd/init/initng/...)(独立于 r/o systemd)启动 r/w 分区上的内容?

答案1

您可以使用覆盖挂载透明地对两组启动脚本执行操作,但需要注意的是,RW 分区上指定的服务会影响 RO 分区上的服务。

在此描述中,为了具体起见,假设您正在使用systemd,RO 分区是根分区,RW 分区安装在/rw并包含两个目录 systemdwork。您可以按如下方式进行覆盖安装:

mount -t overlay -o lowerdir=/etc/systemd,upperdir=/rw/systemd,workdir=/rw/work overlay /etc/systemd

这可以在以下位置指定/etc/fstab

# Previous fstab entries to ensure /rw is mounted
overlay /etc/systemd overlay lowerdir=/etc/systemd,upperdir=/rw/systemd,workdir=/rw/work 0 0

通过此条fstab目,两个目录将在启动时合并,并且将显示systemd(以及其他所有内容)作为一组启动脚本。尝试写入/etc/systemd将被重定向到 RW 分区。

此方法并非特定于systemd.它泛化到任何作用于某个目录内容的 init 系统。

相关内容