netboot.xyz 网络装系统教程:不用 U 盘装 Linux

不想再带 U 盘装系统?小编讲 netboot.xyz 的 Docker 部署、DHCP 设置和 PXE 启动步骤,并对比更适合 Windows 的 iVentoy。

经常装系统、重置系统的朋友,手边大概都有一根装满各种发行版的启动 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,不用解压和搭文件共享。