PXELinux 和压缩内核/映像

PXELinux 和压缩内核/映像

是否可以使用 PXELinux 的压缩 initrd 来启动压缩内核?

首先,介绍一下背景:

我们为无盘 OpenCL 计算节点创建了一个自定义 Linux 发行版。我们希望这些节点从网络获取其操作系统。我们的发行版由一个内核(duh)和一个大型 initrd 组成,后者加载到 RAM 中,所有内容都从那里执行。

我们选择在 initrd 上运行一切有两个原因:

  • NFS 无法提供文件系统的额外内容
  • 从 RAM 快速访问文件。
  • 不需要持久存储,数据和配置通过 SOAP 服务动态提取。

现在我们的 initrd 大小约为 450M。在我们的网络速度下,加载单个客户端大约需要两到三分钟。压缩会加快下载速度吗?如果会,应该使用哪种?PXELinux 是否支持 LZMA,还是我们需要坚持使用 bzip2 或 gzip?

由于加载时间需要 2-3 分钟,通过同一网络链接启动 15 个节点需要花费相当多的时间。出于经济原因,我们决定不使用硬盘或 CD/DVD 驱动器(最便宜的硬盘 @ 30 欧元乘以 15 可以节省很多钱 ;-) )

因此,我们的问题是:此设置有哪些压缩选项?我们该怎么做?

感谢您的时间!

伊凡·詹森斯

答案1

你是如何制作 initrd 的?据我所知,大多数系统在最后一步都会对其进行压缩:

> file /boot/initrd-2.6.37.1-1.2-desktop
/boot/initrd-2.6.37.1-1.2-desktop: gzip compressed data, [...]

内核需要支持压缩:

> cat /boot/config-2.6.37.1-1.2-desktop |grep CONFIG_RD_
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_RD_LZO=y

但是 450MB RAM 磁盘意味着内存会减少 450MB - 并且如果没有 HDD 就没有交换空间。

您应该认真研究一下网络文件系统,它不仅仅包括 NFS: 酶联免疫吸附试验可以从 iSCSI、AoE 甚至 HTTP 加载。

答案2

您是否考虑过实现 casper 和 squashfs。这样,您可以将 initrd 保持在最小大小,大约 25 MB,并单独发送 squashfs。Squashfs 支持 lzma 压缩,如果您查看 parted magic 处理它的方式,有时他们会将 squashfs 放在 initrd 中……但是过去我玩过 pxelinux,您可以将其作为单独的文件发送,casper 脚本仍然会找到它。

答案3

1)典型的Linux内核是压缩的,它的initrd也是一样,请检查您的构建链。

2)你的数据表明你不需要 squashfs

3) pxelinux 不关心您的内核/initrd 压缩方法(如果有)。

相关内容