我创建了一个 Ubuntu Server ISO,其中包含一组我想在安装过程中安装的自定义软件包。我还有一个预置和 kickstart 文件在运行。这花了我一段时间,但得益于以下几点,它终于可以正常工作了:如何创建定制的 Ubuntu 服务器 ISO?
现在我需要做以下事情:
- 设置一些防火墙规则
- 编写一些配置文件
- 放下钥匙
- 更改系统名称
- 最终创建一个自定义 shell
这对我来说需要消化很多东西,我花了很长时间才明白我应该用哪种工具或流程的哪个部分来完成上述工作。我思考任何与放置文件有关的事情都可以使用自定义 deb 包完成,并像我的其他包一样安装。然而,我不知道设置主机名、设置防火墙规则以及最终创建自定义 shell/接口来限制非 root 用户能力的最佳位置。笔记:在此阶段,所有操作都只能通过光盘进行...无需互联网访问。
我已阅读过此页面,并且我相信我可以编写几乎任何我需要的脚本,但只能在整个系统启动之前:https://help.ubuntu.com/community/InstallCDCustomization。此处的目的是获取服务器设置并确保从 Chef 接收其最终定制。
基本上,我只需要知道从哪里开始,并可以使用指向示例的指针。有人能帮助我吗?
答案1
我在这里听从了 shvahabi 的建议我怎样才能让“rc.local”在启动时运行?。基本上,我在 ubuntu 机器上启用并使用 rc.local。Rc.local 通常不在 debian 上使用。它与 Windows 的注册表运行键非常相似。最终,我将把我的第一个启动配置脚本和自定义 rc.local 文件放在一个自定义 deb 包中,该包在安装时将文件放在机器上(自定义 deb 位于 ISO 本身上)。然后,在每次启动时,rc.local 都会运行我的脚本,我可以进行检查,以便它仅在第一次启动时运行。
重要的提示:编辑并使用“/etc/rc.local”放置一行来运行您的脚本...而不是“/etc/init.d/rc.local”。第二个实际上是由另一个包控制的,并且不会让您在安装期间从自定义 deb 文件安装它的自定义版本。无论如何,init.d 版本的唯一目的是调用“/etc/rc.local”版本。
我没有使用 systemd 或 upstart,因为您需要先输入命令来启动服务。这需要解放双手。但是,我相信所有这些命令所做的就是创建链接文件,但我不想弄清楚将它们放在哪里。自定义 deb 包中的两个文件最简单。