【Linux 基础知识系列:第二百一十八篇】使用 dd 命令制作启动盘与镜像
一、简介:为什么必须学会 dd?
-
启动盘是 Linux 生命线:系统崩溃、新机器装系统、现场救援,都靠 U 盘启动。
-
磁盘镜像是运维刚需:批量装机、取证备份、云主机快照,底层全是
dd在干活。 -
dd 几乎无处不在:再小的嵌入式系统、再大的云机房,都自带
dd,无需网络。
学会 dd,等于拥有“磁盘克隆相机”——一键拍照,一键还原。
二、核心概念:4 个参数走天下
| 概念 | 含义 | 入门口诀 |
|---|---|---|
if= |
input file 源 | 读谁 |
of= |
output file 目标 | 写谁 |
bs= |
block size 一次读写多少字节 | 越大越快,通常 4M |
status=progress |
实时显示百分比 | 必加,防呆等 |
记住“if 读 of 写 bs 块 progress 看”,就不会再写反磁盘!
三、环境准备:3 分钟搭好实验台
-
系统:任意 Linux(Ubuntu 20.04+ / CentOS 8+ / Debian 11+)
-
U 盘:≥8 GB,数据会全清,请提前备份
-
镜像:
-
Ubuntu 22.04 桌面版
ubuntu-22.04-desktop-amd64.iso -
或其他发行版 ISO 均可,下文以 Ubuntu 为例
-
-
权限:需要
sudo读写底层设备
四、命令与示例:从“制作启动盘”到“备份整盘”
每条命令都可直接复制,建议边读边敲,加深印象。
4.1 查找 U 盘设备号(防写反!)
# 方法 1:看容量最直观
lsblk -dp | grep -E 'disk.*8G|disk.*16G|disk.*32G'
# 方法 2:实时监听插入
sudo watch -n 1 'dmesg | tail -20'
典型输出:
/dev/sdb 14.9G
记住 /dev/sdb,下文全程用 ${USB} 代指,请替换成你自己的。
4.2 制作 Linux 启动盘(5 分钟完成)
# 设置变量,避免敲错
ISO=~/Downloads/ubuntu-22.04-desktop-amd64.iso
USB=/dev/sdb # 一定确认无误!
# 1. 卸载已挂载分区(重要)
sudo umount ${USB}?* 2>/dev/null || true
# 2. 正式写入
sudo dd if=$ISO of=$USB bs=4M status=progress oflag=sync
说明:
-
bs=4M一次性 4 MB,速度比默认 512 字节快 10 倍 -
oflag=sync确保写完再返回,防止 U 盘缓存造假
耗时:约 3~5 分钟(USB3.0 下 15 MB/s ≈ 200 s)
完成后,你就得到一只可启动的 Ubuntu 安装盘,可用于:
-
给裸机装系统
-
现场救援
chroot修复 grub -
启动 Live 环境拷数据
4.3 创建整盘镜像(系统热备份)
# 把系统盘 /dev/nvme0n1 备份到外部硬盘
sudo dd if=/dev/nvme0n1 of=/mnt/backups/nvme0n1.img \
bs=4M status=progress oflag=direct
场景:
-
云主机无法快照,用
dd做离线全备 -
工控设备无还原卡,定期镜像回滚
提示:目标磁盘需 ≥ 源盘容量,否则写满报错。
4.4 仅备份 MBR(512 字节,分区表+引导代码)
# 备份
sudo dd if=/dev/sda of=mbr.bak bs=512 count=1
# 恢复(误删分区表时救命)
sudo dd if=mbr.bak of=/dev/sda bs=512 count=1
场景:
-
双系统误装 Windows,分区表被改,用此前 512 字节瞬间复活。
4.5 增量压缩:让镜像小 70%
# 边读边压缩
sudo dd if=/dev/sdb bs=4M | gzip > sdb.img.gz
# 还原
gunzip -c sdb.img.gz | sudo dd of=/dev/sdb bs=4M
优点:空块自动压缩,500 GB 盘 → 80 GB 镜像。
4.6 制作 Windows 启动盘(同样适用)
# 官方 Win10 ISO 同样能用 dd
ISO=Win10_22H2_Chinese.iso
USB=/dev/sdb
sudo dd if=$ISO of=$USB bs=4M status=progress
注意:Windows ISO 已包含 UEFI 引导,dd 完即可 UEFI 启动安装。
五、常见问题与解答(FAQ)
| 问题 | 现象 | 解决 |
|---|---|---|
dd: writing to '/dev/sdb': No space left on device |
目标盘容量 < ISO | 换更大 U 盘;ISO 别选 DVD 版 |
| 写反盘符,系统盘被覆盖 | 电脑立刻卡死 | 无急救可能,写前必须 lsblk 确认 |
| 进度条不动 | 误以为卡住 | 加 status=progress,或另开终端 sudo kill -USR1 $(pgrep dd) |
| U 盘不能启动 | BIOS 无 UEFI 选项 | 进入 BIOS 关闭 Secure Boot,开启 Legacy/UEFI 双启动 |
| 速度只有 2 MB/s | 落在 USB2.0 口 | 换蓝色/USB3.0 口,再 lsusb -t 确认速率 |
六、实践建议与最佳实践
-
写前快照:用
lsblk -fp拍照保存,防止手滑。 -
统一变量:脚本里用
${USB}替代手动敲盘符,降低失误。 -
校验镜像(重要):
# 生成 md5 md5sum ubuntu.iso > ubuntu.iso.md5 # 写入后校验 U 盘 sudo dd if=${USB} bs=4M count=$(($(stat -c%s ubuntu.iso)/4M)) | md5sum -c ubuntu.iso.md5 -
制作后只读挂载检查
sudo mkdir /mnt/usb sudo mount ${USB}1 /mnt/usb ls /mnt/usb # 能看到 EFI、boot 目录即成功 sudo umount /mnt/usb -
定期备份 MBR
把mbr.bak纳入 Git,系统升级前自动提交,回滚秒级完成。 -
云主机无物理盘
用dd把/dev/vda导到对象存储,配合 cron 每月一次全量镜像。
七、总结:一张脑图带走全部要点
dd 磁盘操作
├─ 制作启动盘:ISO → U 盘 (bs=4M status=progress)
├─ 整盘镜像:/dev/sda → .img(可选 gzip)
├─ MBR 备份:前 512 字节
├─ 校验:md5sum / 只读挂载
└─ 提速:USB3.0 + bs=4M + oflag=sync
掌握 dd,你就拥有了:
-
随身系统工厂:任何 ISO 都能 5 分钟变启动盘
-
灾难恢复时光机:整盘镜像一键回到昨天
-
底层急救瑞士军刀:MBR、分区表、引导扇区随意存取
立刻打开终端,找一块空 U 盘,复制本文命令敲一遍——你的第一张 Linux 启动盘,马上诞生!
更多推荐




所有评论(0)