如何进行快速、可重复的 Linux 安装

尚无读者喜欢这篇文章。
Two different business organization charts

Opensource.com

我最近的一些文章是关于 Linux 哲学及其对我这样的系统管理员日常活动的影响。Linux 哲学的 基本原则之一是使用软件杠杆,而该原则的一个重要推论是自动化一切。

大量安装

我一直拥有多台计算机(最多一次 14 或 15 台),并且随着 VMware 和 VirtualBox 的出现,我使用类似数量的虚拟机进行测试。我还为客户系统安装 Linux。因此,我经常安装 Linux,有时一天安装多次。这就产生了对快速、可重复安装的需求。

例如,我有一套最喜欢的配置,用于像 Midnight Commander 这样的程序。我还有一些喜欢的字体,它们不是大多数默认安装的一部分。我可以每次安装时都使用 YUM 手动安装每个字体,并手动更改 Midnight Commander 的配置,但这会花费大量时间,而且变得乏味和无聊。

当我手动完成所有这些操作时,我会忘记事情。我开始列出待办事项清单,但这仍然很耗时。因此,多年来,我开发了一个流程,确保安装快速、可靠地完成,并且我不会忘记安装或配置任何内容。

我首先进行一个非常基本的安装。我按照我想要的方式配置磁盘分区和逻辑卷,并且(可能)安装 KDE 桌面。我不会浏览整个可用软件包或组列表,并试图记住我要安装哪些软件包才能在我的计算机上获得我想要的正确工具。

编写重复性任务的脚本

多年来,我开发了一个最初相当简单的 Bash 脚本,我运行该脚本来配置和安装我需要的其他 RPM 软件包。

随着时间的推移,这个简单的脚本演变成允许我根据它们是桌面、服务器还是教室系统来定制标准安装。我添加了选项,使我能够选择一个或多个可用的桌面环境进行安装。我创建了各种需要安装的配置文件,并确定最好的方法是创建一个 RPM 软件包,其中包含这些文件,其中一些文件是我多年来创建的用于执行各种其他重复性任务以及我的安装后脚本的更多脚本。

我还扩展了我的脚本,以便在 CentOS 上实现与 Fedora 相同的功能。RPM 软件包本身就是一种自动化形式,因为它使我无需记住要安装哪些文件以及在哪里安装。RPM 软件包现在安装大约二十几个文件,而我改进了大约 10 年的安装后脚本已达到 1,300 多行代码和 800 多行注释。

即使使用 RPM 和安装后脚本,完成将我安装的许多计算机中的每一台都达到我的标准所需的所有工作也可能需要一个多小时。我当然不怀念手动输入所有这些指令并等待每个指令完成再输入下一个指令的日子。

从理想变为必需

一切都进行得很顺利。尽管我可以手动完成所有这些工作,但使用我的自动化工具要容易得多。Fedora 21 在几个月前问世,而我多年来创建的自动化工具现在已成为必需品。

对于那些不熟悉 Fedora 21 的人来说,此版本的安装发生了巨大变化。现在有三个独立的安装 ISO 镜像:桌面版、服务器版和云版。我使用过桌面版和服务器版 ISO 进行安装,但我非常不喜欢它们。我认为新的安装对于绝大多数 Fedora 用户来说非常受限。

没有简单的安装镜像。桌面版 ISO 是一个 live 镜像。除了 live 镜像 ISO 中的软件包外,在安装过程中没有任何安装软件包的选项。没有。如果我想安装 KDE 或任何其他桌面而不是 GNOME(我确实想),我必须下载 KDE spin 或在初始安装后安装它。我无法从主要安装介质 Live 镜像中执行此操作。

我甚至无法选择安装 LibreOffice。在安装过程中无法执行此操作。我必须在初始安装后安装它和许多其他东西。我认为这对许多潜在的 Linux 用户,尤其是新手来说,是一个巨大的绊脚石。

幸运的是,我的安装后 RPM 和脚本允许我轻松地做到这一点。是的,我不得不对我的脚本进行一些调整——就像我对每个新版本所做的那样——以适应版本之间的一些变化。

我对遵循 Linux 哲学的爱好为我带来了极好的回报。因为我花时间自动化一切,所以我个人因 Fedora Linux 处理安装方式的重大变化而受到的干扰很小。

这就是我通过自动化安装所获得的好处

  • 我在每次安装时都节省了时间。
  • 安装是一致的。
  • 当引入发行版安装的重大更改时,几乎没有或只有极小的中断。

当然,还有其他方法可以自动化 Linux 安装和配置,并且有许多工具可以应用于该任务,例如 Kickstart、Puppet、Satellite Server 等。我广泛使用过 Kickstart,但我的脚本在我当前的环境中运行良好,并且满足我的需求——这就是 Linux 的游戏规则。

 

警告: 本文描述的 Bash 程序始终在不断完善中,可能包含错误。 此脚本将对您的系统进行一些更改,例如禁用 SELinux,这可能会使您的系统更容易受到入侵。 它可能无法按预期或描述的方式工作,您应该仅在本文的上下文中将其用作学习工具,而不是在生产环境中使用, 除非您已对其进行了彻底测试并根据自己的需求和环境对其进行了必要的修改

David Both
David Both 是一位开源软件和 GNU/Linux 倡导者、培训师、作家和演讲者。他自 1996 年以来一直从事 Linux 和开源软件工作,自 1969 年以来一直从事计算机工作。他是“系统管理员 Linux 哲学”的坚定支持者和传播者。

8 条评论

dd if=/dev/sda of=- | tee >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd)

David,文章写得不错。我以前也遇到过同样的问题。我建议您制作自己的自定义 livecd,其中包含您想要的所有内容。我以前用过 uck,它救了我好几次。这是一篇您可能会喜欢的文章。

http://community.linuxmint.com/tutorial/view/1784

UCK: apt-get install uck

谢谢。

是的,我做过自己的 spins,这绝对是另一种自动化安装的方法。由于我的脚本中有许多选项,我要么需要大量的 spins,要么需要两到三个 spins,并且仍然需要一个安装后脚本。我选择专门使用脚本,它确实很好地满足了我的需求。

回复 ,作者为 Giovanni Caligaris

啊哈!我也是这么做的。我有一个配置文件,其中包含大量“#”,如果机器应该具有我可能使用的某些功能,则取消注释。我执行不带任何 GUI 的裸 Debian 安装,挂载包含我的本地镜像(通过 apt-mirror)的外部硬盘驱动器,编辑我的配置文件,运行我的脚本,然后在半小时后回来。

使用 PXE 和基础操作系统系统,然后结合脚本、ssh-copy-id 和 “Ansible”,解决了我们在安装具有不同自定义设置的不同机器时维护大量脚本的许多问题。

扩展 RPM 的使用,它们可以用于各种用途,例如配置管理(配置文件)和元软件包以引入其他软件包(在 spec 文件的 Requires 字段中列出它们)。然后设置一个 repo,kickstart 可以直接使用它,并在系统启动时安装软件包。可以制作许多专门的软件包,以便系统首次启动时就已配置好所需的配置。无需在使用 Puppet 等第三方系统事后强制操作系统。这样,rpm -V 也可以在本地用于验证配置的合理性。任何手动更改过的系统都可以使用原始软件包重新部署,以将系统重置为正常状态。考虑一下。

我经常使用 Puppet,我只安装一个最小的操作系统,安装 Puppet,剩下的配置和软件包安装就完成了。最大的好处是它在任何地方都是一样的!

我想知道您为什么不使用 Remastersys 或 System Back?

Creative Commons License本作品采用 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.