我正在开发一些软件,我想在各种 Linux 发行版上测试一下,这样我就能确定这些软件在这些发行版上是否能运行。该软件通过 USB 和蓝牙与硬件设备交互,因此我更愿意在真实硬件上使用它,而不是在虚拟机上。
一种方法当然是下载我感兴趣的发行版,然后将它们刻录到 CD/DVD 上,或者将文件复制到 USB 密钥上,我过去使用过这两种方法,效果都很好。我手边的 USB 记忆棒只有 512 MB,虽然我可以根据需要将操作系统安装程序随机播放到它们上,但我担心我会开始复制文件,分心,然后稍后再回来安装操作系统。我真的很想启动它然后忘掉它。(诚然,我希望必须输入用户帐户、主机名、时区等)。
对于我来说,通过 LAN 进行 PXE 启动是有意义的。
我见过的大多数关于如何执行此操作的说明都要求您设置自己的 DHCP 服务器,并将其用于代替分配 DHCP 地址的设备,或将其放在自己的微型 LAN 上。我想让现有的 DHCP 服务器保持运行*,还希望安装的计算机能够从互联网获取更新**。我按照一些使用 dnsmasq 的说明执行此操作,但遇到了困难。(我现在没有确切的步骤,这可能完全走错了路。如果这是一条好路,我很乐意提供更多详细信息。)进一步观察后,我发现有很多可能性,从 Red Hat 的 kickstart 到 gPXE。
我应该指出,我并没有真正对机器进行映像处理——我只是想将不同的发行版从光盘中取出后放到上面,而不是以针对企业桌面进行调整的方式。(作为 Mac 管理员,我经常设置黄金母版,制作硬盘的磁盘映像,然后通过网络将其复制出来,或者使用基本操作系统映像并向其中添加软件包。我在这里寻找的更像是使安装程序在 LAN 上可用,而不是完整的驱动器映像)。
我还想补充一点,我并不反对使用启动介质(USB、DVD)来告诉计算机,“这是服务器。询问它有哪些操作系统的安装程序”。同样,能够同时运行两台或三台计算机也是一个优点(是的,规模很小,但 n > 1),这也是我认为通过网络执行此操作是一大优点的另一个原因。
是否有人对我如何快速轻松地将不同的 Linux 发行版部署到测试机器上提出建议,以便一旦设置完成,我就可以启动机器进行安装,稍后再回来测试软件?(它并不严格必须通过网络进行,但在一次性设置完成后,这对我来说肯定是最简单的方法)。
* 我实际上是在家庭网络上进行测试,我的有线调制解调器/wifi 基站会分发 DHCP 地址。我知道我可以关闭此功能并让其他计算机执行此操作,但我并没有全天候在家运行盒子,而且只是为了 DHCP 而这样做似乎很愚蠢。
** 这使得使用较小的独立网络变得更加棘手,除非我将两个网络桥接起来,而且,由于一台机器没有两个 NICS,这听起来比我希望付出的努力要多。确实,我可以在单独的网络上安装操作系统,然后将其移动到可以实时访问互联网的网络上,但这与启动它然后忘记它相反。
答案1
正如您所提到的,PXE 是我非常幸运地使用过的,可以完成您所说的事情。您遇到的麻烦是您不想更改 DHCP 服务器...这意味着系统上的现有 PXE 将无法工作,因为它将期望 DHCP 服务器为其提供“下一个服务器”和“文件名”属性(PXE 客户端使用这些属性进行引导)。
因此,您需要做的是获取 gPXE 或 iPXE(gPXE 的替代品),并对其进行自定义以包含“下一个服务器”和“文件名”属性,然后将其刻录到 USB 或 CD 并从中启动。这样您就可以提供这些属性,而无需让 DHCP 服务器分发它们。这在以下位置有记录嵌入式脚本的 iPXE 网页。
然后您需要设置 TFTP 或 HTTP 服务器(gPXE/iPXE 将支持 HTTP,普通 PXE 往往仅支持 TFTP)。该服务器分发启动和安装所需的文件。我喜欢把所有花哨的东西都用菜单文件链接起来。 Linux Journal 似乎有一篇关于 PXE 菜单的好文章,第 2 页谈论的是菜单。我为每个发行版类别(Fedora、CentOS、Ubuntu)以及一些实用程序(memtest)设置了菜单,然后这些菜单有版本选择(Hardy、Lucid、32 位、64 位),然后这些菜单有“安装”和“救援”或“服务器”与“桌面”的选择。
这在此处输入链接描述Boot.FedoraProject.org 服务器可能很有用,您可以首先将您的 iPXE 指向它,或者使用它的说明来了解它,然后拉下您需要的内容并添加其他发行版。
如果您确实想要自动化安装,那么您可以选择一个菜单项,然后让它从那里接管,您需要使用“预播”(基于 Debian)或 kickstart(基于 Fedora),您可以在其中告诉安装程序要做什么,包括格式化光盘(危险 :-)、包、配置等......
PXE 实际上并不难,它让很多这类事情变得所以很简单。我已经运行 PXE 服务器近 10 年了,而且我很少刻录媒体。此外,从大型网络服务器进行网络拉取比从 CD 或 DVD 安装要快得多。CentOS 安装需要 3 分钟并不罕见。
答案2
就像其他人建议的那样,使用 PXE + DHCP 具有巨大的优势
但是,要实现完全“无人干预”的 PXE+DHCP 部署,需要执行许多手动步骤。您需要编写一些脚本、进行一些管道粘贴,才能达到您想要的效果。
您无需自己动手搭建解决方案,而是可以使用现有的 PXE/DHCP 自动化工具。因为如果您自己搭建解决方案,您将无法利用开源工具提供的新功能。
喜欢皮匠负责管理一些手动任务,如 DHCP 记录添加、TFTP 配置、kickstart 模板等。
另一个用于相同目的的绝佳工具是领班。它对同样的问题有不同的方法,并且与 Puppet 深度集成(Puppet 与 Foreman 的使用不是强制性的,但有帮助。)你需要领班代理组件为您处理 DHCP/TFTP。这里这是 Foreman 配置虚拟机的屏幕截图,但同样适用于物理主机。另一个安装指南。
一切准备就绪后,使用 Cobbler 或 Foreman 安装服务器就变成了一项非常简单的任务。它们有 API,因此您可以编写脚本来完成剩下的一些手动任务。
完成所有这些设置可能需要一些时间,但一旦完成,您就可以集中精力完成主要任务了。
答案3
我听说过皮匠。
其目标是尽可能地实现安装自动化,与 pxeboot 紧密集成,并为 PXE 使用完成一些配置 TFTP、DHCP 等的繁重工作。
在完成基本使用设置后,它还有一个非常酷的cobbler import
命令直接从 CD/DVD 中提取发行版并准备使用。
答案4
为什么不改用虚拟机呢?它比 DHCP 服务器和重新映像服务器更方便。即使您采用 pxe 路线,与虚拟化相比也需要付出更多努力。我建议您评估您的需求,并在可行的情况下考虑 VM 方法。
Virtualbox 可免费使用。