树莓派可配置为pxe服务器实现网络启动:一、安装配置dhcp服务并启用pxe选项;二、部署tftp服务器并放置pxelinux.0等引导文件;三、配置http或nfs提供系统镜像;四、禁用ipv6提升兼容性;五、设置静态ip并确认ipv4转发关闭。

如果您希望让多台计算机通过网络启动操作系统,而无需为每台设备单独安装系统,可以将树莓派配置为PXE(Preboot Execution Environment)服务器。以下是实现此目标的具体步骤:
一、安装并配置DHCP服务
DHCP服务用于为客户端分配IP地址,并告知其PXE启动所需的TFTP服务器地址和启动文件名。树莓派需运行一个DHCP服务器,且必须支持PXE扩展选项(option 66 和 option 67)。
1、更新系统软件包:sudo apt update && sudo apt upgrade -y
2、安装isc-dhcp-server:sudo apt install isc-dhcp-server -y
3、备份原始配置文件:sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
4、编辑DHCP主配置文件:sudo nano /etc/dhcp/dhcpd.conf
5、在文件中添加以下PXE专用配置段(替换eth0为您的实际网卡名,如usb0或wlan0):subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option domain-name-servers 192.168.1.1; option tftp-server-name "192.168.1.1"; filename "pxelinux.0"; }
6、指定监听接口:sudo nano /etc/default/isc-dhcp-server,将INTERFACESv4行修改为:INTERFACESv4="eth0"
7、重启DHCP服务:sudo systemctl restart isc-dhcp-server
二、部署TFTP服务器并放置启动文件
TFTP(Trivial File Transfer Protocol)用于向PXE客户端快速传输引导程序和内核文件。树莓派需运行TFTP服务,并将syslinux的pxelinux.0、内核镜像及initrd置于指定目录。
1、安装tftpd-hpa服务:sudo apt install tftpd-hpa -y
2、创建TFTP根目录并设置权限:sudo mkdir -p /var/lib/tftpboot && sudo chmod -R 777 /var/lib/tftpboot
3、下载并解压syslinux工具集:wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz && tar -xzf syslinux-6.03.tar.gz
4、复制pxelinux引导文件:sudo cp syslinux-6.03/bios/core/pxelinux.0 /var/lib/tftpboot/
5、创建pxelinux.cfg目录:sudo mkdir /var/lib/tftpboot/pxelinux.cfg
6、生成默认启动菜单配置:sudo nano /var/lib/tftpboot/pxelinux.cfg/default,写入标准菜单项(例如加载Debian installer)
7、重启TFTP服务:sudo systemctl restart tftpd-hpa
三、配置HTTP或NFS服务提供完整系统镜像
PXE引导后,客户端通常需从HTTP或NFS服务器加载Linux内核、initrd及根文件系统。树莓派可选用任一协议,但HTTP更轻量、兼容性更好;NFS则适合长期挂载完整发行版。
1、安装Apache2作为HTTP服务:sudo apt install apache2 -y
2、将ISO内容提取至Web目录:sudo mkdir -p /var/www/html/debian-installer
3、挂载Debian网络安装ISO并拷贝文件:sudo mount -o loop debian-12.5.0-amd64-netinst.iso /mnt && sudo cp -r /mnt/* /var/www/html/debian-installer/
4、设置内核与initrd路径:在pxelinux.cfg/default中指定kernel http://192.168.1.1/debian-installer/install.amd/vmlinuz与initrd http://192.168.1.1/debian-installer/install.amd/initrd.gz
5、若改用NFS,安装nfs-kernel-server:sudo apt install nfs-kernel-server -y
6、导出NFS共享目录:echo "/var/www/html/debian-installer *(ro,sync,no_subtree_check)" | sudo tee -a /etc/exports
7、应用NFS配置:sudo exportfs -ra && sudo systemctl restart nfs-kernel-server
四、禁用IPv6以避免PXE协商失败
部分旧式网卡固件在启用IPv6时会干扰DHCPv4+PXE流程,导致客户端获取IP后无法连接TFTP服务器。在树莓派上临时或永久禁用IPv6可提升兼容性。
1、临时禁用IPv6:echo 1 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6
2、永久禁用:编辑sysctl配置文件:sudo nano /etc/sysctl.conf
3、在文件末尾追加三行:net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
4、加载新内核参数:sudo sysctl -p
5、验证状态:cat /proc/sys/net/ipv6/conf/all/disable_ipv6,输出应为1
五、调整树莓派网络接口为静态IP并启用IP转发
树莓派需作为局域网内的稳定服务节点,其自身IP不可变动;同时若需跨子网中继或桥接流量,须开启IPv4转发功能。本方案默认采用同一子网直连方式,但仍建议配置静态IP并确认转发关闭(除非另有路由需求)。
1、编辑DHCP客户端配置:sudo nano /etc/dhcpcd.conf
2、在文件末尾添加(根据实际网络调整):interface eth0 static ip_address=192.168.1.1/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1
3、重启网络服务:sudo systemctl restart dhcpcd
4、检查当前IP:ip -4 addr show eth0 | grep "inet "
5、确认IPv4转发处于关闭状态(PXE无需开启):cat /proc/sys/net/ipv4/ip_forward,输出应为0
6、若误启用,立即关闭:echo 0 | sudo tee /proc/sys/net/ipv4/ip_forward










