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 是最优解。
二、整体流程
用来看 dd 日志] C --> D[执行 bash reinstall.sh ubuntu 22.04] D --> E[脚本下载新系统镜像 + 注入] E --> F[显示新系统的用户名/密码/端口] F --> G[重启进入新系统安装阶段] G --> H{看进度} H -->|方式 1| H1[SSH 新端口连接 看日志] H -->|方式 2| H2[浏览器访问 http://IP:7777] H -->|方式 3| H3[厂商 VNC 控制台] H --> I[10-30 分钟后安装完成 自动重启] I --> J[新系统 SSH 可登录]
三、操作步骤
3.1 下载脚本
# 国外网络curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh \ || wget -O reinstall.sh https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh
# 国内网络(cnb 镜像)curl -O https://cnb.cool/bin456789/reinstall/-/git/raw/main/reinstall.sh \ || wget -O reinstall.sh https://cnb.cool/bin456789/reinstall/-/git/raw/main/reinstall.sh3.2 开放日志端口(强烈推荐)
# ufwufw allow 7777
# 或 iptablesiptables -A INPUT -p tcp --dport 7777 -j ACCEPT⚠️ 端口 7777 必须没有其它服务占用,否则日志页面会被原服务接管。
3.3 执行 dd
# 重装为 Ubuntu 22.04bash reinstall.sh ubuntu 22.04 --web-port 7777
# 其它常用示例bash reinstall.sh debian 12 --web-port 7777bash reinstall.sh alpine --web-port 7777bash reinstall.sh nixos --web-port 7777bash reinstall.sh windows-11 --web-port 7777bash reinstall.sh arch --web-port 7777执行过程中会让你输入新系统的密码,建议用强密码(16 位以上,带特殊字符)。
3.4 看最后的总结信息
脚本执行完会输出一段总结,这段信息务必截图保存或复制到记事本:
新系统: Ubuntu 22.04用户名: root密码: <你刚输入的>SSH 端口: 22IP: <你的 VPS IP>查看日志: http://<IP>:7777🪤 没记下来 = 重新 dd。新系统的端口、密码可能和你原系统不同,没记下来连不上只能再来一遍。
3.5 触发重启(脚本自动)
脚本会自动 reboot。重启之后原系统就消失了,进入 dd 安装阶段。
四、查看 dd 进度的 3 种方式
dd 过程中至少要等 1 分钟才能看到日志(前 1 分钟在初始化)。
方式 1:SSH 看日志
端口和密码用 dd 之后的(不是原系统的):
ssh root@<VPS_IP># 输入新密码# 进入后能看到 reinstall 的进度方式 2:浏览器看日志
直接访问:
http://<VPS_IP>:7777页面会显示 reinstall 实时日志。这是最省事的方式。
方式 3:厂商 VNC / Serial Console
阿里云、腾讯云、AWS 等都提供 Web VNC 或 Serial Console,能看到 dd 阶段的真实终端输出。卡住不动时,这是唯一能”看到机器在干什么”的方式。
五、dd 后的验证
dd 完成后机器会自动 reboot 到新系统。给它至少 5 分钟(首次启动可能慢),然后:
# 用新端口 + 新密码 sshssh root@<VPS_IP># 或者改了端口ssh -p <新端口> root@<VPS_IP>
# 确认系统cat /etc/os-releaseuname -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、初始化、激活流程)
连接:
# Windows 用自带 RDPmstsc# 输入: <VPS_IP>
# Mac / Linux 用 Microsoft Remote Desktop / FreeRDP💡 内存 < 1G 的 VPS 不建议跑 Windows,会卡到怀疑人生。
八、备份镜像 / 还原
reinstall 脚本支持 dd 任意镜像文件,可以用来:
# dd 自定义镜像(先把镜像放到一个 HTTP 可访问的地方)bash 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 玩家的核心技能之一,跑通一次之后你会发现:商家给你什么系统已经不重要了——你想跑什么就跑什么。