Systemd 与 rc.local 用于安装后启动脚本? (完全解放双手)

Systemd 与 rc.local 用于安装后启动脚本? (完全解放双手)

我有一个自定义的 Ubuntu Server ISO,它通过 preseed 和 kickstart 文件回答安装问题。它还会安装我在实际安装过程中放置​​在 ISO 上的附加 .debs。这一切都很好。

现在我需要一种方法让脚本在第一次启动时运行以满足配置需求。安装后脚本似乎不起作用(在 kickstart 文件中)。我只能使用 systemd 或 rc.local 文件(至少我认为这些是我唯一的选择......)。

哪一个最容易启动一个已经存在于 ISO 上的脚本,而无需双手敲击键盘? Systemd 似乎需要我先启用该服务,这是不可接受的(同样,没有手放在键盘上)。我倾向于 rc.local 但这篇文章说不要使用它:“/etc/rc.local 的目的和典型用法”。

我应该忽略这个警告吗?想知道是否还有更简单的方法。

答案1

我在这里遵循了 shvahabi 的建议https://askubuntu.com/questions/9853/how-can-i-make-rc-local-run-on-startup。基本上,我在 ubuntu 机器上启用并使用 rc.local。 rc.local 通常在 debian 上不使用。它与 Windows 的注册表运行键非常相似。最终,我将拥有第一个启动配置脚本和自定义 deb 包中的自定义 rc.local 文件,该文件在安装时将文件放在盒子上(自定义 deb 存在于 ISO 本身上)。然后,在每次启动时,rc.local 将运行我的脚本,我可以进行检查,以便它仅在第一次启动时运行。

重要的提示:编辑并使用“/etc/rc.local”放置一行来运行脚本...而不是“/etc/init.d/rc.local”。第二个实际上由另一个包控制,并且不会让您在安装过程中从自定义 deb 文件安装它的自定义版本。 init.d 版本的唯一目的是无论如何调用“/etc/rc.local”。

我没有使用 systemd 或 upstart,因为您需要先输入命令来启动服务。这需要解放双手。然而,我相信所有这些命令所做的都是创建链接文件,但我不想弄清楚将它们放在哪里。自定义 deb 包中的两个文件是最简单的。

相关内容