夜雨聆风学习资料网

ARTICLE · 1159520

用飞牛搭一套多台电脑同时网络装系统的方案:三天,30个坑,U盘退休了

用飞牛搭一套多台电脑同时网络装系统的方案:三天,30个坑,U盘退休了

店里天天跟系统打交道,重装系统更是家常便饭。以前靠啥?U 盘、PE 启动盘,一抽屉全是。借来借去、插来插去,盘丢了、毒串了,烦得要命。我一直想要个"网络装机":客户机开机按 F12,从局域网直接启动 PE,鼠标一点就把系统装了——谁还找 U 盘?手头正好有台飞牛 fnOS 服务器(i5-4590 / 16G),说干就干。结果这一干,就是三天,踩了三十多个坑。今天把实的干货复盘一遍,省得你再走一遍弯路。

一、方案就一句话

飞牛上跑 iVentoy(Docker 版),它负责 PXE 网启、下发 PE;系统镜像放在飞牛的 SMB 共享里,PE 启动后自动把共享盘挂成本地 Y: 盘,直接开装。

整条链路长这样:

客户机(PXE 网启)    │  DHCP代理 + TFTP + HTTP(iVentoy 提供,不碰路由器 DHCP)    ▼ iVentoy 服务端(飞牛 Docker,整 ISO 当虚拟光盘)    │  PE 启动后,内置脚本自动执行:    ▼ net use Y: \\192.168.3.250\AnonyShare   ← 飞牛 SMB 只读共享    └── Y:\系统镜像\ = Win10/11/7/XP 五个 WIM(实体在飞牛硬盘)

关键认知:Y: 盘是网络映射,不是 PE 自带文件。装系统时镜像走网线实时传(千兆≈110MB/s,5GB 约 1 分钟)。飞牛关机,网启自然也用不了——所以没额外风险。

二、三轮大战,一个比一个狠

以为部署完就完事?太天真。

第一轮:花屏。冰封 PE 网启后满屏条纹色块。根因是 iVentoy 图形菜单底层是 GRUB2 framebuffer,PE 启动后显卡驱动重新初始化,两边对不上——官方都认这个经典 bug。解法就一条:换一个显示初始化保守的 PE。

第二轮:更狠的"本源问题"。我把 GHO/WIM 扔进 iVentoy 的 iso 目录,结果 PE 里 ghost/CGI 死活选不到。一查才懂:iso 目录只给启动菜单用,PE 启动后内部根本看不到它。要拿文件,得走 SMB 共享或官方 VTOYMNT 挂载。

第三轮:自动挂载——这条最磨人。我想让 PE 进系统自动看到镜像,不用手动敲命令。先试官方"文件注入+自动运行"机制,逐个 API 探活,实锤死锁:注入只改内存不落盘,容器一重启就丢。再试 VTOYMNT 自动注入,实机测 62 次全空——因为我的 PE 走整 ISO 虚拟光盘模式,官方根本不往里注文件。两条"官方正道"都证伪,最后只能改 PE 本体:在 boot.wim 里焊一个开机自动挂载飞牛共享的脚本(vtoyauto.cmd),配置写进 ISO,iVentoy 重启不丢。2026-10-11 晚客户机实测成功,端到端打通。

三、最贵的一课:把桌面搞没了

这里面最贵的一课,是改 PE 把桌面搞没了。给某个 PE 打完补丁,客户机进不了桌面。查了一整晚才定位:微软官方行为——winpeshl.ini 一旦存在就完全接管启动链,执行完不启动任何桌面;而那个 PE 的命根子在 Pecmd.ini(UTF-16LE 编码),挂载命令必须追加到文件末尾,且 UTF-16 行尾必须是四字节 \x0d\x00\x0a\x00,少一个字节就变乱码把最后两行粘一起。这种坑,不亲手踩、不做字节级核对,永远不知道。

四、三十个坑里,最要命的三条

DHCP 模式服务假活SMB force user

① DHCP 必须设 ProxyNet。默认 Internal 会跟路由器抢 IP 分配,轻则网启失败,重则全屋断网。已持久化进配置,重启自动恢复。

② iVentoy 会"假活"。docker restart 有概率初始化失败:端口还在监听,但 API 全返回 failed,客户机连进度条都没有。救活只能 compose down && up -d 彻底重建。所以每次重启后必做"双 API 验证"。

③ 飞牛 SMB 的 force user 别指不存在的用户。指了就报"找不到用户",配置看着对连不上。必须用真实存在的用户,再 smbcontrol 重载。

五、现在的日常

✅ 飞牛上 19 个镜像整整齐齐,客户机网启自动看到 5 个系统 WIM,千兆下传 5GB 约 1 分钟。加新镜像就拖文件进共享、刷新列表,十秒钟的事。

每次重启必跑的健康检查(两个 API 都返回正常数据才算真活):

curl -s -X POST http://127.0.0.1:26000/iventoy/json \   -d '{"method":"get_img_list"}' | head -c 300 curl -s -X POST http://127.0.0.1:26000/iventoy/json \   -d '{"method":"get_config_all"}' | head -c 300

这套我是真在店里跑通的,不是纸上谈兵。想自己搞一套、或懒得折腾让我帮配的,加我微信或到店聊。

整理自《iVentoy 网络装机 · 部署与调试实战全记录》(2026-10-09 ~ 10-11)| 飞牛 fnOS + iVentoy 1.0.44 + Docker 实测

相关学习资料