细节

细节

细节

我有一个由大约 20 台相同的戴尔 PC 和 40 台 Raspberry PI 3b+ 单元组成的网络,这些单元被捐赠给了一所学校,我目前在那里做一些公益工作。RPI 单元供孩子们浏览私人内联网(学习实用程序、教育游戏等),而 PC 供年龄较大的孩子使用(安装了不同的应用程序)。所有这些机器都通过以太网连接到网络,并且位于同一子网。

由于学校没有太多的预算,而且我可以自愿奉献时间(但我不会自愿奉献现金,因为我没有能力捐赠 20 个新的 SSD 和 40 张 SD 卡),所以我计划通过 PXE 启动所有这些设备,因为它们实际上不需要持久存储。


问题)

  1. 是否有可能在启动时运行某种预执行环境(即最小的 Linux 实例),该环境仅查询硬件以确定它是 PC 还是 Raspberry PI,然后启动/“链接”(即就像那些旧的“Ultimate Boot CD”图像一样)另一个启动映像(即自动检测硬件,然后继续启动不同的操作系统映像)。这将允许我为所有 60x 台计算机创建一对 PXE 映像。
  2. 有没有关于定制 Ubuntu/Debian/Raspian PXE 镜像的指南/教程?我需要:
    • 添加apt-get默认 Live USB/CD 映像中未包含的附加包。
    • apt-get删除不需要的现有默认包(以减少操作系统的大小,特别是对于 RAM 很少的 Raspberry PI)。
    • 部署一些自定义静态文件(即中的一些配置文件和udev规则/etc、中的一些附加证书/usr/local/share/ca-certificates),并在系统启动完成后运行一次性脚本(即sudo update-ca-certficates设置自定义壁纸、启动浏览器并运行一些其他工具)。

迄今的工作

  1. 我还没有找到太多关于自动检测硬件类型并动态向客户端机器提供特定 PXE 启动映像的信息。除了一些文章只是推荐“使用 IPXE”,我找不到太多帮助。它看起来像一个强大的工具,但我无法从文档中确定它是否可以启动一个 Linux 实例,运行自定义脚本来确定硬件类型,然后加载单独的启动映像。
  2. StackOverflow 上关于此主题的大部分文章都涉及配置 PXE 服务器并让客户端连接到该服务器。我可以这样做,但我的主要目标是编辑部署的启动映像(即apt现有的软件包、根据需要添加/删除它们、添加额外的静态文件/etc、以及在操作系统启动后运行自定义脚本)。我发现了一个令人印象深刻的工具,但遗憾的是,它似乎自 Ubuntu 9.x 系列以来就已停产。

答案1

  • 我希望 Raspberry PI 3b+ 具有相同的网络接口模型,因此 MAC 具有相同的生产者 ID。

    1. 将 DHCP 服务器设置为基于 MAC 部分匹配的子网。保留 PC 子网为默认/后备。请参阅man dhcp.conf服务器isc-dhcp
    2. 在 TFTP 服务器中为 PC+其他/子网和 RP/子网设置单独的 PXE 配置。在每个配置中放置一个启动菜单,以便最终用户可以在未获得正确配置时强制执行。请参阅Ubuntu Server VM 中的 PXE 启动服务器安装步骤

    这些捐赠的 PC 可能需要在 DHCP 或 TFTP 服务器内设置例外。

  • iPXE 适用于不支持 PXE 的旧网络接口。gPXE 支持除 TFTP 之外的其他协议,以实现更快的文件传输,如 NFS、HTTP 等

  • 对于启动后运行某些脚本,请检查如何创建完全无人值守的 Ubuntu 安装?用于 kickstart 和 preseed。(Puppet 可能有点过头了)

相关内容