U 盘已经是目前主流的系统安装方式,所以各种制作 USB 启动盘的软件也很多。如果你和我一样使用的是 Linux 或是 macOS 这种「类 Unix」操作系统,其实不太需要使用专门的 USB 启动盘制作软件,一个 dd
命令就能搞定。
在 Linux 系统使用 dd 命令
比如我要制作一个 Debian 系统的 USB 启动 U 盘,只需要先下载好 iso 格式的镜像文件,然后插入 U 盘,再通过下面的命令就可以制作好启动 U 盘了。
dd if=~/Downloads/debian-11.3.0-amd64-netinst.iso of=/dev/sdb
命令参数很简单。if
指定了系统镜像文件地址,of
指定了 U 盘位置。在 Linux 系统上,可以通过 fdisk -l
命令来获取到 U 盘的地址。执行命令前请仔细核对 U 盘地址,如果输错了地址会导致一些不可逆的数据损失。
除了 if
和 of
这两个必要的参数外,dd
命令另外一个有用的选项是 bs
。通过它可以手动指定操作数据块的大小。取值通常为 4K
或 1M
这种在计算机上衡量数据大小的单位。使用合适的数据块大小可以提升 dd
命令的执行效率,不过这没有一个通用的最优值。简单来说,这个参数在不同的系统和硬件上,最优取值是不一样的。如果在意 dd
命令的执行效率,可能需要自己通过 time
前缀命令来记录使用不同取值后的执行时间,然后挑选出一个最优取值。我个人不太在意快慢,所以通常会使用 1M
。加上这个参数后的 U 盘启动盘命令如下:
dd if=~/Downloads/debian-11.3.0-amd64-netinst.iso of=/dev/sdb bs=1M
dd
命令默认是静默执行的,如果想要知道执行过程中的进度信息,可以使用 status
选项:
dd if=~/Downloads/debian-11.3.0-amd64-netinst.iso of=/dev/sdb bs=1M status=progress
在 macOS 系统使用 dd 命令
macOS 基于 BSD 系统,和 Linux 系统同属于「类 Unix」系统。在 macOS 系统中也可以使用 dd
命令,不过在使用方式上存在一些细微区别。
首先是在获取 U 盘路径上需要使用 diskutil
命令:
diskutil list
在使用 dd
命令写入映像文件前,还需要先用 diskutil
命令取消 U 盘的挂载,否则会出现 Resource busy 的错误:
diskutil unmountDisk /dev/disk2
/dev/disk2
为 U 盘路径,请替换为自己实际的 U 盘路径。
然后才可以使用 dd
命令。不过要注意在 macOS 上不支持 status
进度参数。另外 bs
参数的单位需要小写。比如上面在 Linux 系统中使用的 bs=1M
就要替换为 bs=1m
。
最后
如果想要更深入的了解一下 dd
命令,可以参阅下面这篇文章:
dd
命令的使用格式和选项,以及更多用例。