dd写入u盘前必须卸载所有分区,否则缓存导致镜像损坏;of应指定设备节点(如/dev/sdb)而非分区,配合bs=4m、oflag=sync和status=progress提升可靠性;写完须运行sync并验证分区结构与启动文件。

dd命令写入U盘前必须卸载设备
不卸载就执行dd,Linux会缓存写入、甚至报Resource busy错误,最终镜像损坏无法启动。用lsblk确认U盘设备名(如/dev/sdb),再逐一分区卸载:
sudo umount /dev/sdb1<br>sudo umount /dev/sdb2如果提示“not mounted”,说明已卸载;若提示“target is busy”,可加
-l强制(sudo umount -l /dev/sdb1),但更稳妥的是直接卸载整个设备节点(/dev/sdb本身不能挂载,所以只需卸载其分区)。
dd命令参数顺序和bs值直接影响成功率
if=(输入文件)必须是ISO镜像的绝对路径,of=(输出设备)必须是U盘设备节点(如/dev/sdb),不是分区(/dev/sdb1)。写错of可能覆写硬盘主引导区。常用可靠写法:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
sudo dd if=/path/to/ubuntu-22.04-desktop-amd64.iso of=/dev/sdb bs=4M status=progress oflag=sync
bs=4M比默认512字节快得多,oflag=sync确保每次写入都落盘,避免断电丢数据;status=progress显示实时进度。别用conv=fsync——它只在最后同步一次,不如oflag=sync保险。
写入完成后必须同步并验证设备节点是否真实对应U盘
dd返回shell不等于写完——内核可能还在刷缓存。务必运行sudo sync,等光标重新出现再拔U盘。之后用lsblk或sudo fdisk -l /dev/sdb检查:正常启动盘会有至少一个FAT32分区(含EFI/或isolinux/目录),且容量与ISO大小接近。常见误判点:/dev/sdb在插拔后可能变成/dev/sdc,尤其多磁盘环境;dd不会自动重命名设备,全靠你人工确认。
UEFI启动失败大概率是镜像或BIOS设置问题,不是dd写错了
很多用户写入后进BIOS能看到U盘但无法启动,第一反应是dd失败,其实更可能是:
- 下载的ISO本身不支持UEFI(如某些老版CentOS 7 minimal镜像无
EFI/BOOT/bootx64.efi) - 主板Secure Boot开启,而镜像未签名(Ubuntu 22.04+默认支持,CentOS Stream 9可以,但Rocky 8.8不行)
- BIOS里启动模式设成了Legacy而非UEFI,或没把U盘移到启动顺序第一位
file -s /dev/sdb1看是否识别为FAT filesystem,并手动mount /dev/sdb1 /mnt && ls /mnt/EFI/BOOT/确认存在启动文件。










