群晖作为TFTP服务器提供IPXE启动

群晖作为TFTP服务器提供IPXE启动

准备工作

  1. 硬件方面:确保群晖 NAS 设备已正确连接网络且能正常运行,同时准备好需要通过 IPXE 启动的客户端设备,保证其网络连接正常且支持网络启动功能。

  1. 软件方面:需要提前准备好IPXE相关镜像文件,例如 netboot.xyz

搭建 TFTP 服务器

  1. 登录群晖 DSM 系统,打开 “套件中心”。

  1. 在套件中心搜索栏中输入 “DHCP Server”,找到并安装该套件。

  1. 安装完成后,打开 “DHCP Server” 应用。在 “PXE” 选项中,启用PXE并设置 TFTP 服务器的根目录同时设置启动加载器为前面下载的netboot.xyz镜像,建议选择一个专门的共享文件夹用于存放 IPXE 相关文件,例如新建一个名为 “ipxe_boot” 的共享文件夹,并设置好读写权限。

配置 IPXE 相关文件

  1. 将下载好的netboot.xyz 镜像文件上传至刚才设置的 TFTP 服务器根目录(即 “ipxe_boot” 共享文件夹)。

  1. (可选) 创建一个启动脚本文件,例如命名为 “ipxe_menu.ipxe”,同样上传至 TFTP 服务器根目录。在 “ipxe_menu.ipxe” 文件中,可以编写启动菜单内容,示例如下:

#!ipxe
:start

menu iPXE Boot Menu

item --gap -- "Choose an option:"

item localboot Boot from local disk

item memdisk Memdisk

item chain Chainload from another server

item --gap -- "Operating Systems:"

item ubuntu Ubuntu Installer

choose --default localboot --timeout 30000 selected && goto ${selected}

:localboot

localboot

:memdisk

kernel memdisk iso raw

initrd <path_to_iso_image>

boot

:chain

chain http://<other_server_ip>/boot.ipxe

:ubuntu

kernel http://<ubuntu_server_ip>/install/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz root=/dev/ram rw

initrd http://<ubuntu_server_ip>/install/netboot/ubuntu-installer/amd64/initrd.gz

boot

上述脚本中,localboot 表示从本地磁盘启动,memdisk 用于加载 ISO 镜像,chain 可从其他服务器加载启动,ubuntu 示例了从指定服务器获取 Ubuntu 安装镜像启动。请根据实际情况修改 <path_to_iso_image>、<other_server_ip>、<ubuntu_server_ip> 等参数。

客户端设置

  1. 启动需要通过 IPXE 启动的客户端设备,在开机过程中,根据屏幕提示按下对应的按键(常见为 F12、F8 等)进入启动设备选择菜单。

  1. 选择从网络启动(通常显示为 “Network Boot”“PXE Boot” 等类似字样)。

  1. 客户端会向网络中的 TFTP 服务器发送请求,获取 undionly.kpxe 文件并启动。之后会加载 “ipxe_menu.ipxe” 中的启动菜单,用户可根据需求选择相应的启动选项。

常见问题及解决方法

  1. 客户端无法获取启动文件:检查群晖 TFTP 服务器的网络设置,确保防火墙没有阻止 TFTP 相关端口(UDP 69)的通信。同时,确认客户端与群晖处于同一网络网段,且网络连接正常。

  1. 启动菜单显示异常:仔细检查 “ipxe_menu.ipxe” 文件的语法是否正确,特别是涉及路径、参数等内容。另外,确认相关镜像文件是否已正确上传至指定位置且权限设置无误。