dd 系统全流程:把任何 VPS 重装成 Debian / Ubuntu / Windows / NixOS
很多 VPS 商家给的系统选项有限,或者你想要 NixOS / Alpine / 自定义镜像,商家根本不提供。dd 系统就是解决这个问题的——直接把整个磁盘”覆盖”成你想要的系统镜像,不依赖商家的安装流程。
社区里最好用的方案是 bin456789/reinstall 这个脚本,几乎支持所有主流系统、所有主流架构,国内 dd 速度也很快。
一、dd 系统能做什么#
reinstall.sh 脚本提供 4 个核心功能:
| 功能 | 用途 |
|---|---|
| 一键重装到 Linux / Windows | 把当前系统换成 Ubuntu / Debian / Arch / NixOS / Windows / 飞牛 fnOS 等 |
| 一键 DD 镜像 | 直接覆盖一个 .img / .gz / .xz 镜像,常用于还原备份 |
| 一键启动 Alpine Live | 临时进入内存里的 Alpine(不修改硬盘) |
| 一键启动 netboot.xyz | 网络启动菜单,VNC 里手动选择各种系统 |
💡 使用场景定位:脚本主要为 VPS 设计。如果你有独立服务器 + IPMI + U 盘,原生安装比 dd 稳;只有 VPS 时 dd 是最优解。
二、整体流程#
三、操作步骤#
3.1 下载脚本#
1# 国外网络2curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh \3 || wget -O reinstall.sh https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh4
5# 国内网络(cnb 镜像)6curl -O https://cnb.cool/bin456789/reinstall/-/git/raw/main/reinstall.sh \7 || wget -O reinstall.sh https://cnb.cool/bin456789/reinstall/-/git/raw/main/reinstall.sh3.2 开放日志端口(强烈推荐)#
1# ufw2ufw allow 77773
4# 或 iptables5iptables -A INPUT -p tcp --dport 7777 -j ACCEPT⚠️ 端口 7777 必须没有其它服务占用,否则日志页面会被原服务接管。
3.3 执行 dd#
1# 重装为 Ubuntu 22.042bash reinstall.sh ubuntu 22.04 --web-port 77773
4# 其它常用示例5bash reinstall.sh debian 12 --web-port 77776bash reinstall.sh alpine --web-port 77777bash reinstall.sh nixos --web-port 77778bash reinstall.sh windows-11 --web-port 77779bash reinstall.sh arch --web-port 7777执行过程中会让你输入新系统的密码,建议用强密码(16 位以上,带特殊字符)。
3.4 看最后的总结信息#
脚本执行完会输出一段总结,这段信息务必截图保存或复制到记事本:
1新系统: Ubuntu 22.042用户名: root3密码: <你刚输入的>4SSH 端口: 225IP: <你的 VPS IP>6查看日志: http://<IP>:7777🪤 没记下来 = 重新 dd。新系统的端口、密码可能和你原系统不同,没记下来连不上只能再来一遍。
3.5 触发重启(脚本自动)#
脚本会自动 reboot。重启之后原系统就消失了,进入 dd 安装阶段。
四、查看 dd 进度的 3 种方式#
dd 过程中至少要等 1 分钟才能看到日志(前 1 分钟在初始化)。
方式 1:SSH 看日志#
端口和密码用 dd 之后的(不是原系统的):
1ssh root@<VPS_IP>2# 输入新密码3# 进入后能看到 reinstall 的进度方式 2:浏览器看日志#
直接访问:
1http://<VPS_IP>:7777页面会显示 reinstall 实时日志。这是最省事的方式。
方式 3:厂商 VNC / Serial Console#
阿里云、腾讯云、AWS 等都提供 Web VNC 或 Serial Console,能看到 dd 阶段的真实终端输出。卡住不动时,这是唯一能”看到机器在干什么”的方式。
五、dd 后的验证#
dd 完成后机器会自动 reboot 到新系统。给它至少 5 分钟(首次启动可能慢),然后:
1# 用新端口 + 新密码 ssh2ssh root@<VPS_IP>3# 或者改了端口4ssh -p <新端口> root@<VPS_IP>5
6# 确认系统7cat /etc/os-release8uname -r接下来就是新系统的标准配置——SSH 密钥、ufw、fail2ban、BBR,参考 VPS 基础配置那篇。
六、踩坑清单#
6.1 dd 后连不上#
按这个顺序排查:
| 检查 | 命令 / 动作 |
|---|---|
| IP 没变? | 在厂商面板确认 |
| 端口对不对? | dd 默认 22;如果原系统是 64400,新系统不会继承 |
| 密码对不对? | 用你 dd 时输入的,不是原系统的 |
| 等够 5 分钟没? | 首次启动慢 |
| 防火墙挡了? | 厂商有「安全组」概念的(阿里/腾讯/AWS),去面板看入站规则 |
实在不行,用厂商 VNC 进去。
6.2 阿里云 / 腾讯云轻量服务器 dd 后被挂起#
部分云厂商的轻量实例有系统盘校验机制,dd 之后可能直接被判定为”系统损坏”挂起。dd 之前先看看自己 VPS 的 review / 帖子有没有人成功 dd 过。
6.3 dd 失败回不去原系统#
⚠️ dd 是一个不可逆操作。脚本失败后原系统也回不去了,只能:
- 用厂商面板”重装系统”功能回滚到原镜像
- 或者再次 dd 到你想要的系统
所以 dd 前必须先备份重要数据!
6.4 网卡名 / 磁盘名变了#
dd 后网卡可能从 eth0 变成 ens18 / enp0s3 等。如果你之前的服务里硬编码了网卡名(比如自建 BBR、流量监控),都要更新。
6.5 内核版本和模块#
某些云厂商的 VPS 用了定制内核,dd 后用社区内核可能缺驱动(比如 virtio 模块)。一般 reinstall 脚本会处理,但极端情况下可能导致网卡不工作——这时只能 VNC 进去手动装内核模块。
七、Windows VPS 特殊事项#
dd 成 Windows 后:
- 默认 RDP 端口 3389(不是 22)
- 默认管理员账户 Administrator
- 密码就是你 dd 时输入的
- 首次启动需要 5-15 分钟(要跑 sysprep、初始化、激活流程)
连接:
1# Windows 用自带 RDP2mstsc3# 输入: <VPS_IP>4
5# Mac / Linux 用 Microsoft Remote Desktop / FreeRDP💡 内存 < 1G 的 VPS 不建议跑 Windows,会卡到怀疑人生。
八、备份镜像 / 还原#
reinstall 脚本支持 dd 任意镜像文件,可以用来:
1# dd 自定义镜像(先把镜像放到一个 HTTP 可访问的地方)2bash reinstall.sh dd --img https://example.com/your.img.gz这个能力 + 一个自己的对象存储 = 个人 VPS 镜像备份/恢复链路。
九、几条实用经验#
- dd 前先把 SSH 公钥、订阅链接、配置文件这些重要数据备份到本地或对象存储。
- 务必开
--web-port,浏览器看日志比 SSH 香太多。 - 第一次 dd 选择熟悉的系统(Ubuntu/Debian),不要拿 NixOS / Arch 这种学习曲线陡的练手。
- 小内存 VPS(< 512M)dd 时容易爆内存,可以加 swap 后再 dd。
- 国内 VPS dd 国外镜像 优先用国内 cnb 镜像源拉脚本,能省不少时间。
dd 是 VPS 玩家的核心技能之一,跑通一次之后你会发现:商家给你什么系统已经不重要了——你想跑什么就跑什么。