我可以在 systemd-sysv-generator 运行之前安装驱动器吗?

我可以在 systemd-sysv-generator 运行之前安装驱动器吗?

我正在将基于 sysv 的系统升级到 systemd (CentOS 6 -> 7),并且我想依赖systemd-sysv-generator运行一些在 /etc/init.d 下仍具有脚本的服务。

问题是,/etc/init.d 下的某些文件实际上是辅助分区上文件的软链接。

运行时,这个分区似乎尚未挂载systemd-sysv-generator,我在日志中看到的只是一堆来自生成器脚本的“没有这样的文件或目录”错误。Systemd 文档说,生成器运行“启动初期",并且 /etc/fstab 的处理发生得更晚。

我认为我需要做的是以某种方式使 initramfs 或内核挂载辅助驱动器,但我不知道这是否可能。的回应这些问题并不是很令人鼓舞,而且似乎表明这至少是一种非正统的方法。

另一种选择可能是在安装驱动器后重新运行发电机,但我不知道该怎么做,也不知道是否会“太晚”,可以这么说,并且服务将被创建但不会开始了。

我应该怎么办?

编辑:为了使其更具体,假设我的根分区位于/dev/sda1,并且我有一个辅助分区/dev/sda2,通常安装为/secondary/etc/init.d/myservice是到 的符号链接/secondary/myservice。这曾经工作得很好,但由于上述原因在 systemd 下停止工作。

答案1

我会花时间继续systemd为您的遗留服务一次性创建正确的“.service”文件。这将从整体上简化您的系统,解决您的启动顺序问题并消除稍后的 sysV->systemd 转换。

如果您的旧服务由第三方提供,您可能会发现他们已经发布了systemd较新版本的 .service 文件,您可以轻松地适应您正在运行的旧版本。


另一种选择是简单地将初始化脚本从第二个分区复制到引导分区。向文件添加注释,以提醒未来的管理员在进行更改时将其复制到第二个位置。

答案2

强制 systemd 在执行任何操作之前安装一些分区

usr如果你像对待你的[辅助文件系统]一样,即将它挂载到 initramfs 中,它就会起作用。显然这需要 initramfs 来设置网络。 initramfs 转换相当于守护进程重新加载,但您不会在新的时刻引入其中之一。dracut对挂载附加文件系统有特定的支持。 ...我特别建议使用 fstab 中的挂载选项x-initrd.mount来标记挂载,因为 systemd 在这种情况下也应用了一些特殊处理。

相关内容