ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

netboot.xyz 网络启动快速上手:Legacy BIOS、UEFI、ARM64 一次搞定

netboot.xyz 网络启动快速上手:Legacy BIOS、UEFI、ARM64 一次搞定

netboot.xyz 网络启动快速上手:Legacy BIOS、UEFI、ARM64 一次搞定

【免费下载链接】netboot.xyzYour favorite operating systems in one place. A network-based bootable operating system installer based on iPXE.项目地址: https://gitcode.com/gh_mirrors/ne/netboot.xyz

netboot.xyz 是基于 PXE(预启动执行环境,让设备开机就能直接从网络下载文件)的开源网络启动工具:一套启动文件部署到服务器,设备发出 DHCP 请求后自动识别自身架构,加载对应启动器并进入操作系统菜单。

设备是怎么被"认出"的:架构检测链路

设备开机发出 DHCP 请求时,这个请求里就带着自身架构的基本信息,这是整个 PXE 网络启动流程的起点。

netboot.xyz 服务端从请求中识别出设备属于哪种架构,随即挑选匹配的启动镜像发过去。你不需要手动告诉它该给谁什么,架构检测是自动完成的。

启动器加载成功后,设备进入 netboot.xyz 的系统菜单。整条链路是:DHCP 请求 → 服务端识别架构 → 挑选启动镜像 → 加载系统菜单,四步走完。

按硬件对号入座:四类设备各拿哪个文件

启动文件分成四大族,本质是一套多架构启动方案。先确认你手里的硬件属于哪类,再取文件。

BIOS 老设备做网络启动该拿哪个文件

十年前的老机器只有 BIOS,该拿哪个文件?按场景对号入座:

  • netboot.xyz.kpxe:标准 DHCP 启动镜像,内置 iPXE(网络启动引导程序)网卡驱动,多数老 PC 直接用
  • netboot.xyz-undionly.kpxe:网卡不认它时换这个,专为网卡兼容性问题设计
  • netboot.xyz.dsk:虚拟软盘镜像,适配 DRAC/iLO、VMware 这类带远程控制台的环境
  • netboot.xyz.lkrn:给 GRUB 或 EXTLINUX 做链式引导时用

这一族的生成逻辑见 generate_disks_legacy.yml。

UEFI 服务器网络启动该用哪个文件

较新的机器普遍是 UEFI(取代传统 BIOS 的固件启动方式):

  • netboot.xyz.efi:标准 DHCP 启动,先试这个
  • netboot.xyz-snp.efi:走 Simple Network Protocol(UEFI 提供的底层网络访问接口),会尝试启动所有网络设备,默认启动失败时换它
  • netboot.xyz-snponly.efi:只从链式调用的设备启动,相对更安全的版本,适合有 Secure Boot 限制的场景

细节参考 generate_disks_efi.yml。

ARM64 平台做 ARM 网络启动的三个文件形态

ARM64(64 位 ARM 处理器,常见于 ARM 服务器和开发板)与 UEFI 一一对应:

  • netboot.xyz-arm64.efi:标准 DHCP 启动
  • netboot.xyz-arm64-snp.efi:SNP 版本,尝试启动所有网络设备
  • netboot.xyz-arm64-snponly.efi:只从链式设备启动

构建逻辑在 generate_disks_arm.yml。

树莓派 4 网络启动拿哪两个文件

树莓派 4 比较特殊,没有传统 PXE 固件,所以单独处理:

  • netboot.xyz-rpi4-sdcard.img:USB/SD 卡镜像,写入后即可让 Pi 走网络启动
  • netboot.xyz-rpi4-snp.efi:Pi 4 专用的 EFI 启动文件

生成过程见 generate_disks_rpi.yml。

你的硬件该拿哪个文件
老 PC / 传统服务器(BIOS)netboot.xyz.kpxe
BIOS 设备网卡不被识别netboot.xyz-undionly.kpxe
DRAC/iLO、VMwarenetboot.xyz.dsk
新服务器 / UEFI 电脑netboot.xyz.efi
UEFI 设备启动失败netboot.xyz-snp.efi
Secure Boot 限制环境netboot.xyz-snponly.efi
ARM64 服务器 / 开发板netboot.xyz-arm64.efi
树莓派 4netboot.xyz-rpi4-sdcard.img

两条命令构建自己的 netboot.xyz 服务

上面的文件都由 Ansible 自动构建,你不用手动编译 iPXE。

方式一,本机 Ansible 构建,产物默认落在/var/www/html:

ansible-playbook site.yml

方式二,用 Docker 构建,环境不用装任何依赖,产物在 buildout 文件夹里:

docker build -t localbuild --platform=linux/amd64 -f Dockerfile . docker run --rm -it --platform=linux/amd64 -v $(pwd):/buildout localbuild

三个常见卡点与自查

网卡不认,PXE 直接卡住。多半是启动镜像内置的网卡驱动没覆盖到这块网卡。换用netboot.xyz-undionly.kpxe,它只保留通用的 UNDI 驱动,在不少老网卡上更稳定。

开了 Secure Boot 的设备点不动。Secure Boot 是固件层面的签名校验,只允许带合法签名的程序运行,没签名的启动文件会被拦下。这种情况改用-snponly.efi版本,让它只从链式设备启动,绕开固件直接执行不受信镜像。

启动慢或者不稳定。依次检查三件事:局域网里有没有本地镜像源,全走公网延迟必然高;DHCP 选项是否指对,服务器地址和启动文件名配错,设备根本找不到文件;需要更严格的安全时上 HTTPS,但这要求自定义编译 iPXE 并注入证书,按需再折腾。

另外建议定期更新启动器以适配新硬件,并在不同虚拟化平台和网络环境里做一轮兼容性验证。

适用场景与下一步

传统数据中心里新旧机器混用、云环境要按需起 PXE、树莓派和 ARM 板组成的边缘节点,一套文件都能覆盖。现在就动手:挑 Docker 那条命令构建出自己的启动文件,再把一台设备的 DHCP 指向它,菜单就会出现在屏幕上。

【免费下载链接】netboot.xyzYour favorite operating systems in one place. A network-based bootable operating system installer based on iPXE.项目地址: https://gitcode.com/gh_mirrors/ne/netboot.xyz

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进