经常装系统、重置系统的朋友,手边大概都有一根装满各种发行版的启动 U 盘。可要是能通过局域网直接试用、安装 Linux,连 U 盘都不用带,是不是更省事?小编给您介绍的就是 netboot.xyz:它用 PXE/iPXE 让电脑通过网络启动,替代 U 盘。简单讲,PXE 就是”电脑开机时从网络上拿启动文件”的一种方式。
netboot.xyz 是什么?
一个能替代 U 盘的开源网络启动服务
netboot.xyz 是开源的网络启动服务,可以通过网络启动并安装或运行各类受支持的系统。您只要在一台服务器上部署好,局域网里的任何电脑就能访问,随便试各种 Linux 发行版,不用再随身带救援或恢复 U 盘。
默认的启动菜单里,有 Debian、Elementary OS、Arch、Zorin 等发行版的安装器和 Live 系统,也有 CloneZilla、SystemRescue、Ultimate Boot CD 等工具。选一个菜单项,电脑就会通过网络拉取所需文件并直接启动。它还提供 3000 端口的网页界面,用来管理启动菜单,也可以把文件放到服务器本地,加快启动速度。更多信息可以看 netboot.xyz 官网。
部署 netboot.xyz
一个 Docker 容器加两个文件夹就够了
先准备一台装好 Docker 的电脑,任何一台 Linux 机器,甚至旧笔记本都行,只要保持开机并连着网络。然后新建目录:
mkdir netboot_xyz
cd netboot_xyz
mkdir assets config 接着在该文件夹里新建 docker-compose.yml,填入 LinuxServer.io 提供的配置:
services:
netbootxyz:
image: lscr.io/linuxserver/netbootxyz:latest
container_name: netbootxyz
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./config:/config
- ./assets:/assets
ports:
- 3000:3000
- 69:69/udp
- 8080:80
restart: unless-stopped 运行 docker compose up -d 启动容器。其中 69 端口负责 TFTP(提供启动文件的协议),3000 端口是网页界面,8080 端口通过 HTTP 提供本地资源。
如果服务器是 Windows,请用管理员身份打开 PowerShell,运行下面命令放行防火墙端口:
New-NetFirewallRule -DisplayName "netbootxyz TFTP" -Direction Inbound -Protocol UDP -LocalPort 69 -Action Allow
New-NetFirewallRule -DisplayName "netbootxyz Web" -Direction Inbound -Protocol TCP -LocalPort 3000,8080 -Action Allow 网页界面
浏览器打开 http://您的服务器IP:3000,就能自定义启动菜单、下载额外启动资源、管理本地镜像。想启动更快,可以把发行版文件下载到 assets 文件夹,这样每次从服务器本地读,不必每次都去互联网拉。
配置 DHCP,让电脑知道去哪里启动
告诉路由器启动服务器在哪
要让 PXE 启动生效,需要在路由器的 DHCP 服务里告诉客户机:TFTP 服务器在哪、该请求哪个文件。两个关键设置是 Next Server(运行 netboot.xyz 的机器 IP)和 Boot File Name(传统 BIOS 用 netboot.xyz.kpxe,UEFI 用 netboot.xyz.efi)。
麻烦在于,多数家用路由器不允许修改 DHCP 启动选项。支持的(如 OPNsense、pfSense)可以直接在 DHCP 服务设置里配置;不支持的,可以在现有路由器旁边跑一个 DHCP 代理:Linux 用 dnsmasq,Windows 用 Tiny PXE Server。代理 DHCP 不会替代路由器的 DHCP,只响应 PXE 启动请求,不影响普通上网。
如果您本来就在用 Docker 跑自建服务,可以在现有环境里再加一个 dnsmasq 容器,关键配置是让它匹配 PXE 请求并指向 netboot.xyz 服务器上的启动文件。Tiny PXE Server 则是原生安装程序,直接绑定到真实网卡。
从 netboot.xyz 启动
局域网里任何一台有线电脑都能用
服务器跑起来、DHCP 配好后,让任何一台接网线的电脑开机,在启动时按 F12、F11 或 Del(因机型而异)进入启动菜单,选 PXE 或 Network Boot,它就会从您的 netboot.xyz 服务器拉启动文件。随后会看到 netboot.xyz 菜单,列出所有可用的发行版和工具,选一个,安装器或 Live 环境就会直接通过网络加载。
要注意两点:PXE 只能用有线以太网,Wi-Fi 不支持;还需要在 BIOS 里关闭 Secure Boot,因为 netboot.xyz 的 iPXE 程序没有微软签名。启动速度取决于网络,千兆局域网下大约和 USB 2.0 U 盘差不多,比不上快速的 USB 3.0,但测试发行版、跑恢复工具时,不用带物理介质的方便足以弥补。
装 Windows,有更好的替代品
iVentoy 让网络启动 Windows 简单很多
技术上,用 netboot.xyz 也能启动 Windows,但很麻烦:要搭 WinPE 环境、单独解压并托管 Windows 安装文件,还要配置 SMB 共享让安装器访问。能做,但环节太多。
小编更推荐 iVentoy,它来自知名多系统 U 盘工具 Ventoy 的作者,是一个能直接通过网络启动 ISO 文件的 PXE 服务器。把 Windows ISO、Linux ISO 或 WinPE 镜像放进 iso 文件夹,启动服务,再让局域网里任何机器 PXE 启动即可,同时支持 BIOS 和 UEFI,几分钟就能搭好。对 Windows 来说,它无需解压文件、也不用另设文件共享;而 Linux 方面,netboot.xyz 菜单丰富、Live 系统多,仍是小编的首选。
网络启动没有看上去那么复杂
乍一看,网络启动比带 U 盘麻烦太多:要装 Docker、配 DHCP、TFTP 和启动文件名。但一旦设置完,它就能自己运转:容器开机自启、DHCP 设置不用再动,局域网里每台机器都能用上一整库系统和恢复工具。
它也不完美:netboot.xyz 不一定能在发行版发布当天就提供最新版,需要等它上线,或者自己写菜单配置;另外只能走有线,没有网口的笔记本得借助 USB 转网口,这点有点讽刺,毕竟初衷是不带 USB。但总的来说,它帮我省去了随身带满各种系统和工具的 U 盘的麻烦。
常见问题(FAQ)
netboot.xyz 要装在哪里?
装在局域网里一台保持开机、装有 Docker 的机器上,旧笔记本也行。
Wi-Fi 能用 PXE 启动吗?
不能,PXE 只支持有线以太网。
路由器不能改 DHCP 选项怎么办?
可以额外跑 DHCP 代理:Linux 用 dnsmasq,Windows 用 Tiny PXE Server。
为什么启动不了?
先检查是否关闭了 Secure Boot,再确认引导文件名(BIOS 用 kpxe,UEFI 用 efi)设置正确。
想网络装 Windows,选哪个?
推荐 iVentoy,它可直接启动 ISO,不用解压和搭文件共享。