CloneDeploy:开源终端镜像批量部署工具,服务端可部署在 Windows / Linux;客户端依靠 PXE+iPXE 引导,基于 WinPE / 定制 Linux live 环境完成磁盘镜像捕获、部署、多播分发,对标 FOG‑Project、Clonezilla DRBLGitHub。GitHub:cdadmin/clonedeploy,后端 C#,Web 管理界面,数据库 SQLite
CloneDeploy 拆解|底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界|自动化流水线
CloneDeploy:开源终端镜像批量部署工具,服务端可部署在 Windows / Linux;客户端依靠 PXE+iPXE 引导,基于 WinPE / 定制 Linux live 环境完成磁盘镜像捕获、部署、多播分发,对标 FOG‑Project、Clonezilla DRBLGitHub。GitHub:
cdadmin/clonedeploy,后端 C#,Web 管理界面,数据库 SQLite/MSSQL。
一、底层原理
CloneDeploy 不是独立完整 PXE 栈,是任务调度 + 元数据管理平台,复用底层标准网络引导与镜像工具链。
- 管理平面:ASP.NET Web 后端,维护主机 (MAC)、镜像、任务、站点分组、部署配置;数据库存储全部元数据,不存储镜像二进制数据,镜像存放于文件共享目录。
- 引导平面:依赖 DHCP 下发 PXE 选项,iPXE 下载引导环境(WinPE 或定制 Linux Live);客户端启动后连接 CloneDeploy API 拉取部署任务。
- 镜像层:支持块级别镜像(disk/partition);镜像捕获 / 还原实际调用底层工具:
ntfsclone、partclone、dd;Windows 场景依赖 WinPE+ImageX/DISM。 - 传输层:支持单播 HTTP、SMB,Multicast 多播批量分发,多台终端并行写入镜像,降低服务器带宽压力。
- 客户端工作模式:终端 PXE 启动 → 加载轻量 Live 环境 → 访问 API 获取任务指令 → 从共享存储拉取镜像 → 磁盘写入 → 执行后置脚本(计算机名、SID 处理、驱动注入)→ 重启本地硬盘启动。
关键点:CloneDeploy 本身不实现 TFTP、DHCP、SMB/NFS,仅做业务调度;这些网络服务由系统底层组件提供。
二、依赖文件
🔹Windows 服务端(IIS 部署)
| 文件 | 路径 | 作用 |
|---|---|---|
| CloneDeploy Web 站点文件 | C:\inetpub\wwwroot\clonedeploy |
ASP.NET Web 管理界面、API 接口、JS/CSS 静态资源 |
| CloneDeploy‑Services.exe | 服务程序,Windows 服务 | 后台任务调度、多播服务、客户端通信、任务状态上报 |
| CloneDeploy.db | 默认 SQLite 数据库 | 主机、镜像、任务、配置元数据库;可切换 MSSQL |
| boot files(iPXE、pxeboot.0、ipxe.efi) | TFTP 根目录 | PXE 引导二进制文件,BIOS/UEFI 双模式 |
| WinPE boot.wim | 镜像仓库目录 | Windows 客户端 PE 引导环境 |
| clone‑live 内核、initrd | TFTP 目录 | Linux live 客户端内核与内存盘 |
| 镜像仓库目录(SMB 共享) | 自定义路径 | 存放 partclone 镜像分片、配置脚本,数据库只存元数据指针 |
🔹Linux 服务端
CloneDeploy‑Servicesmono 运行;Nginx/Apache 承载 Web;TFTP、dnsmasq、samba/nfs 为系统包。- 依赖 mono 运行时,将.NET 程序运行于 Linux。
🔹客户端侧(PXE 引导后)
- iPXE 固件;WinPE (boot.wim) / Linux live (vmlinuz+initrd);partclone/ntfsclone 工具集;wget/curl;多播接收客户端。
三、依赖关系
1. 系统服务依赖
- DHCP:强制依赖。下发 IP、Option66 (next‑server)、Option67 (引导文件名);可内置 dnsmasq,也可使用现有局域网 DHCP(域控制器 DHCP)。
- TFTP 服务:强制依赖。传输 iPXE、内核、initrd 小文件;不负责传输大镜像。
- Web 服务 (IIS/Nginx/Apache):WebUI + REST API,客户端 live 环境通过 HTTP 获取任务。
- SMB / HTTP / NFS:镜像二进制数据传输;Windows 服务端优先 SMB;Linux 端 NFS/SMB 均可。
- Multicast 多播服务:CloneDeploy‑Services 内置多播服务;交换机需要开启多播支持(IGMP Snooping)。
2. 软件栈依赖
- Windows:
.NET Framework,IIS,SQLite,可选 MSSQL; - Linux:
mono‑complete,dnsmasq,tftp‑hpa,samba,nginx; - 数据库:SQLite 默认,生产环境推荐 MSSQL。
3. 逻辑依赖链
BIOS/UEFI(PXE ROM) → DHCP → TFTP(iPXE) → WebAPI(CloneDeploy) → 获取任务 → SMB/HTTP拉取镜像 → partclone写入磁盘 → 后置脚本 → 本地硬盘启动
四、配套链
- 固件层:BIOS/UEFI,网卡 PXE ROM;关闭 SecureBoot 会提升兼容性;UEFI 需要
ipxe.efi,BIOS 需要undionly.kpxe。 - 网络层:千兆网络;交换机支持 IGMP;防火墙放行端口:UDP 67/68 (DHCP),69 (TFTP);TCP80 (Web);SMB 445;多播 UDP 端口。
- 镜像制作配套
- Windows 参考机:
sysprep /generalize系统通用化,清除 SID,卸载冲突驱动; - Linux 参考机:清理 udev 网卡规则,重置主机名;
- Windows 参考机:
- 存储配套:高速存储存放镜像库;镜像目录必须开放 SMB 读写权限;
- 后置工具链:脚本引擎,支持 PowerShell/Bash,部署完成自动修改主机名、注入驱动、加入域、执行自定义任务;
- 运维配套:Web 管理页面;API 可二次开发;任务日志;主机资产清单。
五、边界(限制、坑点)
- 网络边界
- 跨 VLAN 部署复杂:DHCP 中继需要正确转发 Option66/67;跨网段多播很难生效,多播部署仅限同一广播域;跨 VLAN 只能单播。
- TFTP 协议本身低速,大文件不能走 TFTP,仅用于引导小文件。
- 镜像边界
- 块级别镜像,源磁盘与目标磁盘大小需要匹配;不支持自动弹性调整分区(依赖 partclone 能力)。
- Windows 镜像捕获依赖 WinPE 环境;UEFI/GPT、MBR BIOS 镜像不能混用。
- 数据库与存储边界
- SQLite 不适合大规模机房(>200 台终端并发),会锁库,需要切换 MSSQL。
- 数据库只存元数据,镜像文件独立存放;手动删除镜像文件,数据库记录不会自动清理,产生僵尸记录。
- 多播边界
- 一台终端故障,会拖慢整个多播组;一台掉线,整组任务失败。
- 老旧交换机 IGMP Snooping 配置错误,会造成广播风暴。
- 系统边界
- Windows 服务端需要 IIS 完整权限;Linux 端完全依赖 mono,mono 版本问题会引发兼容性 bug。
- SecureBoot 开启环境,iPXE 引导会失败;部分新硬件缺少 WinPE 驱动,客户端无法识别网卡磁盘。
- 功能边界
- 无内置 DHCP 完整服务,现有企业 DHCP 环境需要手动修改作用域选项;
- 没有内置 PXE 代理,不能像 Windows WDS 完整接管;
- 无增量镜像,每次部署全量块拷贝。
六、自动化流水线(完整端到端流程)
阶段 1:服务端初始化
- Windows/Linux 安装 CloneDeploy,配置 IIS/Nginx,安装 TFTP/SMB/DHCP (dnsmasq)。
- 配置 TFTP 根目录,上传 iPXE 引导文件;配置 SMB 镜像仓库目录。
- 初始化数据库,Web 后台配置站点、子网、多播参数。
阶段 2:制作基准镜像
- 准备参考主机,安装系统、软件,执行系统通用化(Windows sysprep,Linux 清理硬件规则)。
- 参考机 PXE 网络启动进入 CloneDeploy Live 环境。
- 执行捕获镜像任务:partclone 读取磁盘,分片镜像写入 SMB 镜像仓库;元数据写入数据库。
阶段 3:批量部署任务(自动化)
- Web/API 录入目标主机(MAC 地址),绑定镜像,配置主机名、域加入、后置脚本。
- 终端开机 PXE 启动:
- DHCP 分配 IP,下发 next‑server、引导文件名;
- TFTP 下载 iPXE;iPXE 访问 CloneDeploy WebAPI 拉取任务;
- 下载 WinPE/Linux Live 内核;
- Live 环境启动,再次调用 API 确认部署任务;
- 多播 / 单播拉取镜像分片,partclone 写入本地磁盘;
- 部署完成执行后置脚本:修改主机名、注入驱动、加入 AD 域;
- 修改本地硬盘引导,终端重启,从本地硬盘启动。
阶段 4:任务状态闭环
- 客户端持续上报状态到 Web API;
- Web 界面展示进度、成功 / 失败日志;
- API 可对接运维平台,读取任务结果,实现完全自动化。
阶段 5:运维流水线
- 镜像版本管理;主机资产自动登记;批量任务调度;日志导出;API 二次开发。
七、同类对标简表
| 方案 | 架构特点 |
|---|---|
| CloneDeploy | C#.NET,Web 管理;支持 Win/Linux 服务端;multicast 多播;依赖 partclone/dism;适合中小机房 |
| FOG‑Project | PHP+Linux;生态成熟;大规模教育机房常用 |
| Clonezilla‑DRBL | 纯命令行,无 Web 界面,适合高级运维 |
| Microsoft WDS | Windows 原生,依赖 AD、DHCP,wim 镜像,企业域环境 |
CloneDeploy 是一款基于 Linux 的开源系统部署解决方案,但也支持在 Windows 环境下安装和使用。以下是在 Windows 环境下安装 CloneDeploy 的步骤:
-
准备环境:在安装 CloneDeploy 前,需要先在 Windows 操作系统中安装好 Apache、PHP 和 MySQL 服务。推荐使用 XAMPP 或 WAMP 等集成开发环境来搭建环境。
-
下载 CloneDeploy 安装文件:用户可以从 CloneDeploy 官网或 GitHub 仓库下载最新的安装文件。安装文件主要包括 CloneDeploy 服务器和客户端软件。
-
安装 CloneDeploy 服务器:将下载好的 CloneDeploy 安装文件解压缩到指定目录下,然后按照官方安装指南的要求修改配置文件,并在 Apache 服务器中配置虚拟主机。配置完成后,运行安装脚本,即可自动完成安装过程。
-
配置 CloneDeploy 服务器:安装完成后,需要对 CloneDeploy 服务器进行配置。用户可以通过 Web 界面设置 DHCP、TFTP、PXE、HTTP 和 Samba 等网络服务,以及创建镜像和分发任务。
-
创建镜像和分发任务:在配置完成后,用户可以根据需要创建新的分发任务,并将操作系统镜像上传到服务器。可以使用 CloneDeploy 提供的工具将现有的系统转换为镜像文件,并保存到服务器上。
-
安装客户端软件:要使用 CloneDeploy 进行系统安装,需要在目标计算机上安装相应的客户端软件。CloneDeploy 支持多种客户端操作系统和硬件平台,用户可以根据需要选择合适的客户端软件。
总的来说,CloneDeploy 是一款功能强大、易于使用的系统部署解决方案。在按照上述步骤完成安装和配置后,用户可以方便地进行系统安装、还原和克隆等操作。
以下是 CloneDeploy 的使用操作步骤:
-
创建客户端启动介质:在使用 CloneDeploy 进行系统部署前,需要先为目标计算机创建一个启动介质。用户可以使用 CloneDeploy 提供的工具来创建启动介质,也可以使用其他制作启动盘的工具。
-
启动目标计算机:将创建好的启动介质插入目标计算机,并在开机时选择从该介质启动。启动后,系统会自动进入 CloneDeploy 客户端。
-
选择分发任务:在客户端界面上,用户可以看到已经创建好的分发任务列表。选择需要部署的系统和对应的任务,然后点击“开始”按钮。
-
系统部署:在确认开始部署后,系统会自动下载和安装对应的镜像文件,并进行系统部署过程。
-
完成部署:在部署完成后,系统会自动重启目标计算机,并自动进入新安装的系统。此时,用户需要按照提示设置系统相关信息,如用户名、密码等。
除了系统部署外,CloneDeploy 还支持对现有系统的备份、还原和克隆等操作。用户可以在 Web 界面上创建相应的任务,并在客户端上进行操作。总的来说,CloneDeploy 是一款功能强大、易于使用的系统部署解决方案。

浙公网安备 33010602011771号