Linux 用 dd 命令制作启动U盘
总是有些人问Linux系统里制作启动U盘需要用什么软件,虽然确实是有很多很好的软件,但其实绝大多数系统都已经集成了dd,如果只是偶尔制作几块U盘自用的话,完全不需要专门另外下载什么软件来完成。几个命令就可以搞定。
⚠️ 警告:dd
命令具有强制写入的能力,操作错误可能会导致数据丢失,特别是写错了磁盘设备号(如 /dev/sda 而不是 /dev/sdb)!使用前务必小心。
✅制作启动 U 盘步骤
1. 插入 U 盘
插入 U 盘后,在终端运行以下命令查看设备名称:
lsblk
你会看到类似以下输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 50G 0 part /
├─sda2 8:2 0 50G 0 part /home
sdb 8:16 1 16G 0 disk
└─sdb1 8:17 1 16G 0 part /run/media/user/USB
假设你的 U 盘是 /dev/sdb(注意不是 /dev/sdb1,我们要写入整个设备)。
你可以从容量的大小,设备的分区和路径,注意仔细分辨,不要自毙。
2. 卸载 U 盘(如果已挂载)
umount /dev/sdb*
3. 使用 dd 写入 ISO 镜像
sudo dd if=path/to/your.iso of=/dev/sdX bs=4M status=progress oflag=sync
替换其中:
path/to/your.iso 是你的 ISO 文件路径。
/dev/sdX 是你的 U 盘设备,比如 /dev/sdb。
例子:
sudo dd if=~/Downloads/rockylinux.iso of=/dev/sdb bs=4M status=progress oflag=sync
4. 等待完成
过程会花几分钟,完成后不会有明显提示,等 dd 执行完毕,返回命令提示符即可。
你可以用 sync 命令确保缓冲区写入完成:
sync
5. 安全移除 U 盘
sudo eject /dev/sdb
✅ 小贴士
ISO 文件路径可以用 Tab 键补全。
bs=4M 表示每次读取写入 4MB,性能更好。
status=progress 能显示写入进度(较新版本的 dd 才支持)。
oflag=sync 保证每块写入数据同步到磁盘,增加稳定性。
✅ 显示进度的方法
sudo dd if=你的镜像.iso of=/dev/sdX bs=4M status=progress oflag=sync
参数说明:
status=progress:显示当前写入了多少字节(这是关键!)
bs=4M:每次读写 4MB,加快速度
oflag=sync:写入时同步,增加稳定性,避免缓存未写入完成
📌 示例命令:
sudo dd if=~/Downloads/Rocky-9.3-x86_64-dvd.iso of=/dev/sdb bs=4M status=progress oflag=sync
输出示例(你会看到这种实时显示):
104857600 bytes (105 MB, 100 MiB) copied, 5.23137 s, 20.0 MB/s
会不断更新直到写入完成。
如果你的系统是老版本 dd,不支持 status=progress?
可以用组合命令让它显示进度:
sudo dd if=你的镜像.iso of=/dev/sdX bs=4M oflag=sync & pid=$!; while kill -USR1 $pid 2>/dev/null; do sleep 1; done
这条命令会每秒显示进度。
这样就可以了,你只需要一点时间,静待系统给出完成指令后反馈的统计信息就好。