云服务器 Linux 手动 DD 安装第三方 Linux 发行版:原理与实战

云厂商提供的 Linux 服务器,发行版本总是比较有限,好在我们可以使用 dd 的方式:在"救援模式"上,手动安装第三方 Linux 发行版;亦或者挂载云硬盘作为启动盘,装载 Linux 的 ISO 镜像对系统盘进行安装。

比如: 在腾讯云的轻量应用服务器上安装最新版本的 Kali Linux。

思路拆解

首先,我们安装系统,比如 Kali Linux、Ubuntu、Debian 等等。需要对系统的分区进行调整,但是在系统活跃时候,是无法对关键分区进行操作的。

所以,我们安装系统可以在系统还没启动的 Grub 上进行操作,也可以进入救援模式。两个模式下都可以对系统盘进行分区、格式化、挂载等,进而可以手动安装第三方 Linux 发行版。

进一步思考,在面对一个未挂载的系统磁盘,我们如何安装第三方 Linux 发行版呢?主要有两种方式:

  • 救援模式直接 dd 安装云优化的 Linux 发行版。
  • 挂载云硬盘并制作为启动盘,Grub 引导启动到云硬盘对系统盘安装。

第一种,救援模式可操作的磁盘有限(一般内存大小就是救援模式的磁盘大小),所以最好安装云优化的 Linux 发行版,或者挂载云硬盘,作为中继盘。

第二种,大部分的 Linux 发行版本都有 ISO 镜像,可以提前在可以操作的系统上,dd 云硬盘为启动盘,之后在目标服务器的Grub引导下,装载 Linux 的 ISO 镜像对系统盘进行安装。

flowchart LR A[Linux dd Linux] --> B{目标系统是否为
云优化版本?} %% ========== 分支结构 ========== B -->|是| 方式1 B -->|否| 方式2 subgraph 方式1[云优化安装方案] direction TB C{救援模式
可用?} C -->|是| D[直接DD写入
云优化镜像] C -->|否| E[通过netboot
建立救援环境] --> D D -->|自动完成| H[[系统配置]] end subgraph 方式2[ISO标准安装] direction TB F[挂载云硬盘] -->|有空云盘| G[DD全盘写入ISO镜像] F[挂载云硬盘] -->|无空云盘| G1[下载ISO镜像] G1 -->|获取云盘UUID| G2[提取内核地址写入GRUB] G -->|重启进入grub| I[boot 启动盘] G2 -->|重启进入grub| I I --> H end H --> END([安装完成]) %% ========== 样式优化 ========== classDef root fill:#e3f2fd,stroke:#1565c0,stroke-width:2px; classDef decision fill:#ffecb3,stroke:#ffa000,stroke-dasharray: 3 3; classDef cloud fill:#e8f5e9,stroke:#43a047; classDef iso fill:#fff3e0,stroke:#fb8c00; classDef action fill:#f3e5f5,stroke:#8e24aa; classDef MULT fill:#e0f7fa,stroke:#00acc1,stroke-width:3px,stroke-dasharray: 5 5; class A root; class B decision; class 方式1 cloud; class 方式2 iso; class C,D,E,F,G,G1,G2,I decision; class H action; class END MULT; %% ========== 连接线优化 ========== linkStyle 0,1 stroke:#616161,stroke-width:2px; linkStyle 2,3,4,5,6,7 stroke:#42a5f5,stroke-width:2px; linkStyle 8,9 stroke:#66bb6a,stroke-width:3px;

救援模式

救援模式(Rescue Mode)是 Linux 系统中的一种特殊模式,用于在系统出现故障时进行紧急修复或维护。救援模式通常用于修复系统文件损坏、驱动程序问题、分区损坏等问题。

其实换一个说法大家就更清晰了,救援模式就是 Windows 的 Windows PE(Windows Preinstallation Environment),可以让你在系统崩溃或者需要重装系统时,进入一个可以修复系统文件、驱动程序、分区等问题的环境。

一些云厂商的 Linux 服务器,就会提供救援模式,比如腾讯云的轻量应用服务器(Lighthouse)和云服务器(CVM):

进入后可以挂载服务器原系统分区,进行修复。

如果你的服务器没有救援模式,但是同样是使用 Grub 引导。那么你可以使用我的脚本:

安装一个 netboot 版本的 Alpine:

bash 复制代码
bash -c "$(wget -qO- https://cnb.cool/Mintimate/tool-forge/bootflow/-/git/raw/main/boot2rescue.sh)"

重启后,Grub 下选择Alpine Linux Minimal,即可进入救援模式。

云优化镜像

很多 Linux 发行版本,有提供云优化镜像,比如 Kali Linux、Ubuntu、Debian 等等。这些镜像,一般都会对系统进行一些优化,比如:禁用 swap、禁用透明大页、禁用透明磁盘加密等。格式多为qcow2、vmdk或raw,可直接上传至云平台使用

当然,为了下载方便,通常进行了归档压缩,所以下载的一般是 tar.xz 或者 tar.gz。

比如 Kali Linux 的云优化镜像,可以在 Kali 官网下载

我们在救援模式,使用 dd 命令 配合 wget 即可安装:

bash 复制代码
# 下载 Kali 云优化镜像
wget https://kali.download/cloud-images/kali-2025.1c/kali-linux-2025.1c-cloud-genericcloud-amd64.tar.xz
# dd 安装(dev/vda 是系统盘的挂载点)
tar -xJOf kali-linux-2025.1c-cloud-genericcloud-amd64.tar.xz | dd of=/dev/vda

因为是全盘 dd 覆写,所以比较耗时:

重启即可进入 Kali Linux 系统,记得后续开启 SSH 等服务。

部分镜像有预装云初始化工具(如cloud-init),会自动安装云厂商的全家桶。

云硬盘ISO

如果想安装桌面版本 Linux 发行版本镜像 ,或者镜像比较大,那么就需要挂载云硬盘作为启动盘,先把 ISO 镜像写入云硬盘作为启动盘; 通过 Grub 引导启动云硬盘,对系统盘进行安装。

或者也可以在救援模式下,使用 dd 命令二次把镜像写入系统盘;亦或者有挂载好的云硬盘,不想新购,可以直接下载并挂载 ISO 到 Grub ,之后对系统盘进行安装。

graph LR A[挂载云硬盘作为启动盘] --> B[下载目标系统ISO] B --> C{选择安装方式?} C -->|方案1: GRUB引导| D[修改GRUB菜单] D --> E[从GRUB启动ISO] E --> F[安装系统到目标盘] C -->|方案2: DD写入| G[dd if=ISO of=/dev/云硬盘] G --> H[dd if=/dev/云硬盘 of=/dev/系统盘] H --> F F --> I[完成系统重装] %% 样式定义 style A fill:#4b8bf5,stroke:#333,color:white style B fill:#4b8bf5,stroke:#333,color:white style C fill:#ff9800,stroke:#333,stroke-width:3px style D fill:#8bc34a,stroke:#333 style E fill:#8bc34a,stroke:#333 style G fill:#ff5722,stroke:#ff9800,color:#424242 style H fill:#ff5722,stroke:#333,color:#424242 style F fill:#607d8b,stroke:#333,color:white style I fill:#4caf50,stroke:#333,color:white classDef decision fill:#e8f5e9,stroke:#ff9800 class C decision classDef grub fill:#e8f5e9,stroke:#8bc34a class D,E grub classDef dd fill:#ffebee,stroke:#ff5722 class G,H dd linkStyle 0,1,2,3,4,5 stroke:#666,stroke-width:2px linkStyle 2,5 stroke-dasharray: 0

依旧以腾讯云的轻量应用服务器安装 Kali Linux 为例,不同的是这次我们安装的是桌面版 Kali Linux(4G+ 镜像)演示 Grub 引导启动盘来安装。

首先,购买一块轻量云硬盘,不用挂载,只需要绑定即可:

之后关联挂载到轻量应用服务器上(不需要进行初始化):

在服务器上下载 Kali 的 ISO 文件并使用 dd 命令,直接写入云硬盘:

bash 复制代码
# 下载 Kali 的 ISO 文件
wget https://cdimage.kali.org/kali-2025.1c/kali-linux-2025.1c-installer-amd64.iso
# 使用(云硬盘的挂载点)/dev/vdb 作为写入目标
dd if=kali-linux-2025.1c-installer-amd64.iso of=/dev/vdb bs=4M status=progress
# 修改 Grub 引导等待时间为 120s
sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=120/' /etc/default/grub
# 重新生成 Grub 引导
update-grub
# 强制重启,确保可以进入 Grub 引导
reboot -f

在 120s 内进入控制台的 VNC(相当于串口,如果 120s 过了,进入系统了,就重新 reboot -f),在 Grub 引导出现的时候:

c,然后输出:

bash 复制代码
# 设置根设备为第二块硬盘的第一个分区
set root=(hd1)
# 加载该分区的引导扇区
chainloader +1
# 重启
boot

最后,按提示安装系统即可:

最后的效果:

注意,后续你还需要做:

  1. 开启 SSH 服务,默认是关闭的。
  2. 设置允许密码登录和 SSH 默认启动。

END

好啦,感谢阅读,如果觉得不错,欢迎点赞、评论、转发。如果有什么问题,欢迎在评论区留言。

其实,还有很多优秀的第三方工具,比如: reinstall可以在 Linux 上 dd 为 Windows 或者 Windows 上 dd 为 Linux,原理就是新建救援模式。不过脚本比较复杂。

我认为,Linux dd Linux,使用救援模式或者 Grub 引导云硬盘就足够了,安全可靠,知道自己每一步在做什么。个人更推荐救援模式直接安装云优化版本镜像,更轻量,更适合云服务器"体质"

哈哈,我也有做一下好玩的尝试,比如用本文的方法,在腾讯云的轻量应用服务器上安装 Kali 到数据盘,并开机默认引导到数据盘。相当于直接把 Kali Linux 安装到数据盘,而不是安装到系统盘。

你又是如何安装 Linux 的呢?欢迎留言分享。如果你觉得本篇教程对你有帮助,欢迎加入我们的开发者交流群: 812198734 ,一起交流学习,共同进步。

相关推荐
地衣君1 小时前
RISC-V 开发板 + Ubuntu 23.04 部署 open_vins 过程
linux·ubuntu·risc-v
5:002 小时前
云备份项目
linux·开发语言·c++
码农101号2 小时前
Linux中shell编程表达式和数组讲解
linux·运维·服务器
powerfulzyh2 小时前
非Root用户启动SSH服务经验小结
运维·ssh
云道轩2 小时前
升级centos 7.9内核到 5.4.x
linux·运维·centos
是小满满满满吗2 小时前
传输层:udp与tcp协议
linux·服务器·网络
爱学习的小道长3 小时前
Ubuntu Cursor升级成v1.0
linux·运维·ubuntu
EelBarb3 小时前
seafile:ubuntu搭建社区版seafile12.0
linux·运维·ubuntu
Xam_d_LM3 小时前
【Latex】Windows/Ubuntu 绘制 eps 矢量图通用方法(drawio),支持插入 Latex 数学公式
linux·ubuntu·科研·矢量图·drawio
402 Payment Required3 小时前
serv00 ssh登录保活脚本-邮件通知版
运维·chrome·ssh