1. 为什么我最终选择了 iVentoy 做批量装机机房上架新机器最烦的从来不是硬件安装而是装系统。十几台甚至几十台机器一台一台插U盘、选启动项、点下一步一天下来人直接废掉。我最早用的是传统 PXE 方案配 DHCP、TFTP、HTTP 服务再手写 pxelinux.cfg光是让不同型号的网卡都能拿到正确的启动文件就折腾了整整两天。后来换成 Windows Deployment Services又卡在驱动注入和 UEFI 兼容性上。直到用上 iVentoy我才真正体会到什么叫一根网线批量装系统。iVentoy 是 Ventoy 的作者做的网络启动版本核心思路非常直接把 ISO 镜像丢到一个目录里启动 iVentoy 服务客户端通过网络启动后会自动列出所有可用的镜像选一个就能装。它同时支持 BIOS 和 UEFI支持 x86_64 和 ARM64支持 Windows、Linux、VMware ESXi 等常见系统的 ISO 直接启动不需要你手动解包、不需要改配置文件、不需要为每个镜像单独写启动菜单。对于经常要给服务器批量装系统的运维来说这东西基本就是增强版 PXE 服务器一键部署的最优解。这篇文章我打算把自己从零部署 iVentoy 的完整过程写清楚包括网络环境怎么规划、服务端怎么配置、客户端怎么引导、批量装机怎么自动化以及我踩过的那些坑。不管你是第一次接触 PXE 网络启动还是已经用过传统方案想换更省事的工具应该都能直接抄作业。2. 部署前的网络环境规划与准备工作2.1 理解 PXE 网络启动的基本链路在动手之前有必要把 PXE 的整个链路讲清楚不然出了问题你根本不知道从哪查。PXE 全称 Preboot Execution Environment简单说就是网卡自带的一个小系统它在操作系统启动之前就能通过网络从服务器下载启动文件。整个流程大致是这样的客户端开机网卡发出 DHCP 请求同时带上 PXE 相关的扩展字段。DHCP 服务器回应除了分配 IP还要告诉客户端启动文件在哪台服务器上、叫什么名字。客户端根据 DHCP 给的信息通过 TFTP 或 HTTP 去下载启动文件。启动文件运行后再去服务器拉取完整的镜像或内核。传统方案里第 2 步和第 3 步需要你自己搭 DHCP、TFTP、HTTP 三个服务还要保证它们之间的配置对得上。iVentoy 把这些全部打包进了一个程序里你只需要运行它它自己会处理 DHCP 代理、TFTP 传输和 HTTP 分发。这就是它比传统方案省事的地方。注意iVentoy 默认会启动自己的 DHCP 服务。如果你的网络里已经有一台 DHCP 服务器在跑两者会冲突必须做额外配置。这一点后面会详细讲。2.2 硬件与网络环境的最低要求iVentoy 对服务端的要求其实很低我实测下来一台普通的办公机就能扛住十几台客户端同时装机。下面是我建议的配置项目最低要求推荐配置说明CPU双核四核及以上并发装机时 CPU 主要消耗在 HTTP 分发内存2GB4GB 及以上镜像缓存会占用一部分内存硬盘20GB根据镜像数量定一个 Windows ISO 约 5GBLinux 约 1-4GB网卡千兆千兆及以上百兆网卡装 Windows 会非常慢网络独立交换机独立交换机避免和办公网络混在一起网络方面我强烈建议单独拉一个交换机把服务端和所有待装机的客户端接在这个交换机上形成一个独立的二层网络。原因有两个一是 iVentoy 的 DHCP 不会污染你现有的办公网络二是千兆交换机下装机速度能跑满装一个 Windows Server 大概十几分钟。2.3 网线与水晶头的那些细节热词里出现了网线制作网线水晶头定义说明很多人是自己压网线的。这里我多说两句因为装机过程中网络不稳定十有八九是网线的问题。现在千兆网络必须用超五类Cat5e以上的网线而且八根线全部要接通。很多人压线只压了 1、2、3、6 四根百兆能用千兆直接掉到百兆甚至不通。T568B 的线序是橙白、橙、绿白、蓝、蓝白、绿、棕白、棕。两头都用 T568B 就是直通线服务端到交换机、客户端到交换机都用直通线。压好之后一定要用测线仪测一遍八灯依次亮起才算合格。我遇到过一根线七灯亮一灯不亮装机装到一半客户端掉线排查了半天才发现是水晶头没压紧。这种问题在批量装机时特别致命因为你会以为是服务端配置有问题。实操心得批量装机前把所有要用的网线全部测一遍别省这几分钟。装机过程中掉线重来浪费的时间是测线时间的几十倍。3. iVentoy 服务端的下载与核心配置3.1 下载与目录结构说明iVentoy 官方提供 Windows 和 Linux 两个版本。Windows 版直接下载压缩包解压就能用Linux 版是一个可执行文件加一个目录。我两种都用过Windows 版适合临时用Linux 版适合长期跑在服务器上。解压后的目录结构大致是这样iventoy/ ├── iventoy # Linux 主程序 / Windows 下是 iventoy.exe ├── iso/ # 放 ISO 镜像的目录 ├── lib/ # 依赖库 ├── data/ # 运行时数据 └── log/ # 日志目录你只需要把要装的 ISO 全部丢进iso/目录iVentoy 启动时会自动扫描并生成启动菜单。这一点比传统 PXE 强太多传统方案每加一个镜像都要改配置文件iVentoy 是即放即用。3.2 启动参数与关键配置项Linux 下启动命令很简单sudo ./iventoy.sh startWindows 下直接双击iventoy.exe会弹出一个图形界面。但真正要配置的东西在图形界面或者配置文件里。下面是我认为最关键的几个配置项网络模式选择。iVentoy 有两种网络模式一种是外部 DHCP 模式也就是网络里已经有 DHCP 服务器iVentoy 只负责 TFTP 和 HTTP另一种是iVentoy DHCP 模式iVentoy 自己当 DHCP 服务器。独立网络环境下用后者最省事直接选 iVentoy DHCP 模式即可。DHCP 地址池。默认是192.168.1.100到192.168.1.200如果你的网络不是这个网段要改成和服务端同网段的地址。比如服务端是10.0.0.1地址池就设成10.0.0.100到10.0.0.200。HTTP 端口。默认 16000一般不用改。但如果你的服务端上跑了别的 Web 服务占用了端口就要换一个。启动模式。iVentoy 支持 BIOS、UEFI、以及两者同时支持。建议选Both这样不管客户端是老机器还是新机器都能启动。配置改完之后点启动按钮服务端就开始工作了。日志里会显示 DHCP、TFTP、HTTP 三个服务的启动状态三个都显示 OK 才算正常。3.3 镜像目录的组织技巧iVentoy 支持子目录这一点很实用。我一般这样组织iso/ ├── windows/ │ ├── Win11_23H2.iso │ ├── WinServer2022.iso │ └── Win10_22H2.iso ├── linux/ │ ├── ubuntu-22.04.iso │ ├── centos-7.iso │ └── debian-12.iso └── tools/ └── memtest86.iso客户端启动后菜单会按目录层级展示找起来很清楚。如果你镜像特别多还可以用 iVentoy 的镜像过滤功能只显示匹配特定关键字的镜像。注意ISO 文件名不要用中文和特殊字符虽然 iVentoy 支持但某些客户端在 UEFI 模式下加载中文路径会出问题。我吃过这个亏后来全部改成英文加数字。4. 客户端网络启动与批量装机实操4.1 客户端 BIOS 设置要点客户端要能从网络启动需要在 BIOS 里做几件事开启网卡的 PXE 启动选项。一般在 Boot 菜单里把Network Boot或PXE Boot调到启动顺序第一位。关闭 Secure Boot。虽然 iVentoy 支持 Secure Boot但某些老网卡的 PXE 固件和 Secure Boot 配合有问题关掉最稳。确认启动模式。UEFI 机器选 UEFI PXE老机器选 Legacy PXE。如果 BIOS 里同时有UEFI和Legacy两个网络启动项选 UEFI 那个。不同品牌的服务器进入 PXE 的快捷键不一样我整理了一个常用对照表品牌快捷键备注DellF12选择一次性启动菜单HPF9启动菜单LenovoF12启动菜单华硕主板F8启动菜单技嘉主板F12启动菜单微星主板F11启动菜单4.2 从网络启动到选择镜像的完整过程客户端设置好之后开机应该能看到网卡在搜索 DHCP然后出现 iVentoy 的启动菜单。菜单里会列出iso/目录下所有的镜像用方向键选择回车确认。这里有个细节iVentoy 的菜单支持两种模式一种是直接启动 ISO另一种是注入自动安装脚本。前者就是普通的启动安装程序需要你手动点下一步后者可以配合应答文件实现全自动安装。批量装机肯定要用后者。选择镜像后iVentoy 会通过 HTTP 把镜像传输到客户端内存里然后启动。Windows ISO 大概 5GB千兆网络下传输时间约 1 分钟加上安装过程一台机器从启动到装完大概 15 到 20 分钟。如果你同时装 10 台总时间不会变成 200 分钟因为传输是并行的瓶颈在服务端的网卡和硬盘读取速度。4.3 批量装机的并发控制与性能调优iVentoy 默认没有限制并发数但服务端的网卡带宽是有限的。千兆网卡理论带宽 125MB/s如果同时给 10 台客户端传输每台只能分到 12.5MB/s传输时间会拉长到 7 分钟左右。所以并发数不是越多越好。我的经验是千兆网络下同时装 5 到 8 台比较合适。如果服务端是万兆网卡可以同时装 20 台以上。另外把 ISO 放在 SSD 上比放在机械硬盘上快很多因为多客户端并发读取时机械硬盘的随机读取会成为瓶颈。如果你要装的机器特别多可以考虑用 iVentoy 的多网卡功能服务端插多张网卡每张网卡接一个交换机分担流量。这个功能在专业版里支持免费版单网卡也够用。实操心得装机前先把所有 ISO 在服务端本地读一遍让文件进入系统缓存。这样客户端来拉的时候直接从内存读速度会快很多。Linux 下可以用cat *.iso /dev/null预热。5. 自动应答文件与全自动装机配置5.1 Windows 自动安装应答文件手动点下一步装一台机器还行装十台就是折磨。Windows 的自动安装靠的是autounattend.xml应答文件。iVentoy 支持在启动时自动注入这个文件。制作应答文件可以用 Windows ADK 里的 Windows System Image Manager也可以直接手写。核心要配置的几项磁盘分区方案自动清空磁盘、创建分区语言和时区产品密钥可选也可以装完再激活计算机名可以用随机名或从 DHCP 获取管理员密码首次登录后要执行的脚本把autounattend.xml放在 ISO 根目录或者放在 iVentoy 的data/目录下启动时选择注入应答文件即可。这样客户端启动后全自动完成安装中间不需要任何人工干预。5.2 Linux 自动安装配置Linux 这边Ubuntu 用 autoinstallCentOS 用 kickstart。以 Ubuntu 22.04 为例你需要准备一个user-data文件#cloud-config autoinstall: version: 1 identity: hostname: ubuntu-server username: admin password: $6$rounds4096$... storage: layout: name: direct packages: - openssh-server - vim这个文件放在 ISO 的nocloud目录下或者通过 iVentoy 的注入功能传入。Ubuntu 22.04 的服务器版安装程序会自动读取这个配置实现无人值守安装。CentOS 的 kickstart 文件类似核心是配置分区、网络、软件包和用户。iVentoy 支持把 kickstart 文件通过 HTTP 提供给客户端你只需要在启动参数里加上inst.kshttp://服务端IP:16000/ks.cfg即可。5.3 装机后的初始化脚本系统装完只是第一步后面还有一堆事情改主机名、配 IP、装监控 agent、加入域或集群。这些可以写成一个初始化脚本在应答文件里配置首次登录自动执行。我一般会准备一个post-install.sh放在服务端的 HTTP 目录下客户端装完后用 curl 拉下来执行。脚本内容大致包括#!/bin/bash # 设置主机名 hostnamectl set-hostname $(cat /etc/hostname) # 配置静态 IP # 安装常用工具 apt install -y vim curl wget htop # 安装监控 agent # 配置时间同步 timedatectl set-ntp true这样一套流程下来从裸机到可用状态全程不需要人工介入。我最多的一次同时装了 12 台坐在旁边喝咖啡半小时后全部装完。6. 常见故障排查与避坑经验6.1 客户端拿不到 IP 或启动失败这是最常见的问题排查思路按顺序来现象可能原因排查方法客户端一直显示 DHCP...DHCP 没响应检查服务端 DHCP 是否启动网线是否通拿到 IP 但无法下载启动文件TFTP/HTTP 不通检查防火墙确认 69 和 16000 端口开放启动文件下载后黑屏启动模式不匹配UEFI 机器选了 Legacy 启动或反之菜单出现但选镜像后报错ISO 损坏校验 ISO 的 MD5重新下载我遇到最多的是防火墙问题。Linux 服务端上如果开了 firewalld 或 ufw默认会挡掉 TFTP 和 HTTP 端口。临时关闭防火墙测试sudo systemctl stop firewalld # 或者 sudo ufw disable确认是防火墙问题后再按需开放端口而不是一直关着。6.2 iVentoy 服务端崩溃或重启热词里有iventoy 总是重启无法设置崩溃了说明不少人遇到了稳定性问题。我总结下来主要有几个原因一是端口冲突。iVentoy 默认用 16000 端口如果这个端口被别的程序占了服务启动会失败。用netstat -tlnp | grep 16000查一下有冲突就改端口。二是权限问题。Linux 下 iVentoy 需要 root 权限才能操作网络接口和绑定 69 端口。如果你用普通用户启动DHCP 和 TFTP 会起不来。一定要用sudo。三是网卡选择错误。服务端有多张网卡时iVentoy 可能绑到了错误的网卡上。在配置界面里明确指定要用的网卡别用自动。四是 ISO 目录里有损坏的文件。iVentoy 启动时会扫描所有 ISO如果某个文件损坏或格式不对可能导致扫描过程崩溃。把可疑的 ISO 移出去再试。6.3 装机速度慢的优化思路装机慢通常不是 iVentoy 的问题而是网络或存储的问题。按这个顺序排查确认客户端和服务端都是千兆连接。看交换机的指示灯千兆是绿色百兆是橙色。如果客户端显示百兆换网线或换交换机端口。确认 ISO 存放在 SSD 上。机械硬盘并发读取时磁头来回寻道速度会掉得很厉害。减少并发数。同时装的机器越多每台分到的带宽越少。关闭服务端上其他占带宽的程序。比如正在跑备份、正在同步文件都会抢带宽。避坑技巧如果你的交换机支持链路聚合把服务端的两张网卡做 bond带宽翻倍并发装机能力直接提升一倍。这个在批量装机场景下效果非常明显。6.4 特殊场景只有一根网线怎么连服务器管理口热词里有人问只有一条网线怎么通过本地电脑连服务器管理口。这个场景和 iVentoy 相关因为很多人是在管理口上做网络启动的。服务器一般有独立的 IPMI 管理口用一根网线把笔记本和管理口直连笔记本设一个同网段的静态 IP就能通过浏览器访问管理界面然后在管理界面里挂载 ISO 或配置 PXE 启动。具体操作笔记本网卡设成192.168.1.100/24服务器管理口默认通常是192.168.1.1或192.168.0.1浏览器访问这个地址登录后就能看到远程控制台。在远程控制台里可以挂载本地 ISO也可以配置从网络启动。这样你不需要跑到机房坐在工位上就能给服务器装系统。7. 进阶玩法与扩展思路7.1 在虚拟化环境中部署 iVentoy如果你没有物理机做测试完全可以在 VMware 或 Proxmox 里跑 iVentoy。虚拟机装一个 Linux把 iVentoy 跑起来然后创建几个测试虚拟机网卡设成和 iVentoy 同一个虚拟网络就能模拟批量装机。这个方式特别适合学习和验证配置不用担心搞坏物理机。在 Proxmox 里创建一个 Linux 虚拟机网卡桥接到vmbr0然后在这个虚拟机上跑 iVentoy。再创建几个待装机的虚拟机网卡也桥接到vmbr0启动时选网络启动就能看到 iVentoy 的菜单。整个过程不需要任何物理网线和交换机。7.2 结合自动化运维工具做集群部署iVentoy 解决的是装系统这一步装完之后的事情可以交给 Ansible、SaltStack 这类工具。我的做法是iVentoy 装完系统后初始化脚本自动把机器的主机名和 IP 注册到 Ansible 的 inventory 里然后 Ansible 统一推送配置、安装软件、部署服务。这样从裸机到集群就绪全程自动化。如果你要部署的是 Kubernetes 集群也可以用类似思路iVentoy 装好基础系统初始化脚本安装 containerd、kubelet、kubeadm然后由一个 master 节点执行kubeadm join把其他节点拉进来。整个过程可以做到无人值守。7.3 镜像更新与版本管理ISO 镜像会不断更新Ubuntu 每半年一个新版本Windows 每年一个大版本。建议在服务端上建一个版本管理目录保留最近两三个版本旧的及时清理避免磁盘占满。我一般用日期加版本号命名比如ubuntu-22.04.3-20240115.iso这样一眼就能看出是哪个版本、什么时候下载的。iVentoy 的菜单会按文件名排序最新的版本放在最前面选起来也方便。另外下载完 ISO 后一定要校验哈希值。Ubuntu 和 CentOS 官网都提供 SHA256Windows 可以用微软官网的哈希工具。校验通过再放进iso/目录避免装机装到一半发现镜像损坏。8. 我个人的一些实操体会iVentoy 这个工具我从早期版本用到现在最大的感受就是省心。传统 PXE 方案你要懂 DHCP、TFTP、HTTP、pxelinux、grub还要为每个镜像单独配置门槛不低。iVentoy 把这些全部封装了你只需要放 ISO、点启动剩下的它自己搞定。对于不是专门做网络启动的运维来说这个工具能省下大量时间。但它也不是万能的。如果你的网络环境特别复杂比如有多个 VLAN、有现有的 DHCP 服务器不能动、有安全策略限制那还是需要花时间做适配。另外iVentoy 的免费版和专业版在功能上有差异批量装机场景下免费版基本够用但如果需要多网卡、更细的权限控制可以考虑专业版。最后分享一个小技巧装机前把服务端的系统时间校准一下。我遇到过因为服务端时间不对导致 Windows 客户端装完后系统时间错乱域认证失败。用timedatectl或chrony同步一下时间几秒钟的事能避免很多莫名其妙的认证问题。这个细节很少有人提但实际运维中确实会碰到。
