如何使用预定义用户和自动安装/配置来定制分发

我正在为生产级别的Ubuntu定制工作。下面是设置环境的说明:
我有一些Ubuntu机器(准确地说是12台),运行着我自己为这个业务开发的软件。它直接启动到X界面,自动登录,然后立即打开我的软件GUI。
我希望有一个自定义的Ubuntu安装镜像(用于USB驱动器等),其中包含预定义的用户、可变主机名和我已经在这些机器上进行的一些定制。
那么,什么是创建这种定制发行版的最佳工具(基于我的定制需求,易于部署/定制/创建)?
我的问题是,我必须使安装过程更加简单。因为硬盘克隆过程对我来说太浪费时间了。而且由于不同的硬件,我需要匹配大约三个不同的硬盘克隆。
我希望在这个定制中实现以下目标:
  • 预定义的用户名以自动登录
  • 预定义的会话自定义(OpenBox的$HOME自定义,.ssh,.compton等...)
  • 自动登录后立即运行软件
  • 自动安装预定义的软件包(通过apt-get,但无需互联网)
  • 可变的主机名(sales00、sales01、sales02等等...)
  • 一组自定义的系统调用/程序权限(例如在/bin/date上设置chmod 4755)
  • 为新用户定制的/etc/skel(以防万一)
  • 禁用自动更新
  • 全新的网络适配器配置(今天我有一个混乱的网络适配器,如eth49、eth88等)。我希望它们都有相同的编号
  • 网络适配器预定义静态IP:我有三个网络适配器:一个适配器对所有机器都有固定的IP(尽管是相同的1.1.1.1 IP),第二个和第三个网络适配器通过我的软件进行配置。因此,我希望有一个自定义安装程序,可以自动为该网络适配器配置1.1.1.1 IP

所以,再次问一下,最好的Ubuntu自定义发行版创建者(工作室?)是什么?

P.S.:我曾经尝试过PinGuyBuilder,但它默认更改了权限自定义(例如在/bin/date上的chmod 4755),并且有一些限制,比如预定义的用户名/主机名。 最好的祝福。
1个回答

什么是最好的Ubuntu定制发行版创建工具(工作室?)?
所有这些工具都缺少您列出的一些(如果不是大部分)功能。
我会亲自做这个(手动)。做法是下载一个ISO文件,使用该ISO文件创建一个“chrooted”环境,进行修改,将ISO刻录到DVD上并从中引导。我在AU主题中找到了一些有用的信息:
- [如何自定义Ubuntu Live CD?](link1) - [如何创建自定义的Ubuntu服务器ISO?](link2)
第二个方法非常通用(适用于不同版本),因为它没有桌面环境,您可以在服务器上自己添加。
以下是您的列表和评论,但没有提供每个项目的实际操作方法。这部分就交给您了;-)
(注:kickstart文件是红帽的自动安装程序功能。Ubuntu对其支持有限,但可以作为入门工具使用。)
  • 预定义的用户名以便自动登录

    • 这可以通过kickstart文件完成,对于个人安装程序/ISO来说,更改这个是很正常的。所以大多数人都会有这个,但也可以手动完成。
  • 预定义的会话定制(OpenBox的$HOME定制,.ssh,.compton等)

    • 我怀疑这些工具包中没有一个能够做到这一点。但是可以使用手动方法将软件包添加到您自己的安装中,以便您还可以创建配置文件。问题在于,您可能需要从源代码重新编译,因为默认配置不可读。
    • 如果可能的话,一个更简单的方法是将您自己机器上的配置文件放入/etc/skel/,并在安装后将其移动到正确的位置。

  • 自动登录后立即运行软件

    • 配置"启动应用程序"。您只需要编辑一个文本文件。
  • 自动安装预定义的软件包(通过apt-get,但无需互联网)

    • 可以通过kickstart文件完成。或者手动方式:当您创建自己的ISO时,您可以使用"apt-get"将文件添加到DVD中,或者通过将机器上的存档缓存复制到ISO中。
  • 可变的主机名(sales00,sales01,sales02等)

    • 如果您已经设置了这样的主机,只需将该文件复制到ISO即可。
    • 设置系统调用/程序的自定义权限集(例如在/bin/date上设置chmod 4755)
    • 呃;-)您可以在ISO上对文件进行chmod。当然,您也可以将自己的后安装脚本文件添加到ISO中。
  • 新用户的自定义/etc/skel(以防万一)

    • 使用手动方法很容易,因为那是设置用户的方法。该目录用于创建用户的主目录和像".bashrc"这样的文件,其中包含在/etc/skel中设置的选项/参数/等。
  • 禁用自动更新

    • 这是一个设置...所以不会超过对"gsettings"进行编辑。顺便说一句:应该已经设置为"off",所以我怀疑您需要做任何操作。
  • 全新的网络适配器配置(今天我的每台机器上都有混乱的网络适配器,如eth49、eth88等)。我希望它们都有相同的编号

    • 对于这个我不太确定。我认为这些东西是在启动时创建的(?!),所以怀疑您无法提前设置它们。但如果在安装过程中可以配置,您将能够添加/编辑所需的文件(/etc/network/interfaces或dhcclient)
  • 网络适配器预定义静态IP:我有三个网络适配器:一个适配器为所有机器设置了固定IP(尽管是相同的1.1.1.1 IP),第二个和第三个网络适配器通过我的软件进行配置。因此,我希望有一个自定义安装程序,可以自动配置该网络适配器的1.1.1.1 IP

    • 您可以像正常安装一样在ISO上设置这个。
    </

你的答案非常丰富!我真的很感激! 那么,用这种方式我可以生成一个唯一的自定义ISO,在任何机器上安装(即使是具有不同硬件的机器)? 我的意思是...我无法理解如何在其他机器上设置静态IP地址1.1.1.1会在不同的MAC地址/网络适配器上传播。机器主机名也是如此...我手动配置它们为salesXX,但我无法理解如何在安装过程中进行传播和自动增加。 - meetnick
可以的。ISO基本上是一个普通的系统(它具有与普通系统类似的目录设置,但在chroot环境中,并带有一些额外功能),所以你可以设置ISO使用静态IP,在安装过程中将你编辑的文件移动到系统所需的位置。不过这并不简单 ;) - Rinzwind
安装过程没有使用kickstart方法进行自动化。它只能使用preseed方法,这在提供完整的自动化命令方面更加复杂和“有限”。 - meetnick