dd製作bootable disc

用了下別人的軟件,亦想過自己實現。

dd 永远滴神!!

dd是disk dump的缩写,也有人称之为disk destroyer(调侃23333)。相比起来我更喜欢后者,因为dd确实太强大了
以至于有些安全部门在销毁硬盘数据的时候都在用这玩意儿。

那么如何用dd来做bootable disc呢?

这里假设我们想要装ubuntu-19.10系统的iso到U盘上 首先

确保你的iso文件是可引导的

具体操作:

$ file ubuntu-19.10-desktop-amd64.iso
ubuntu-19.10-desktop-amd64.iso: DOS/MBR boot sector; partition 2 : ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 4073124, 7936 sectors

如果没有显示DOS/MBR bootsector等信息的话就说明这个iso不是hybrid iso,也就是无法直接烧写到U盘中并进行引导
这时候可以用isohybrid等工具使之变成可以直接引导的hybrid iso(如上方的ubuntu-19.10-desktop-amd64.iso就是一个hybrid iso)

查看u盘的路径(?我也不知道叫啥好)

$ df -h

然后会显示/dev/sdc1,/dev/sdc2等类似于/dev/sdXn之类的东西
其中sdc的c用于表示硬盘序号,你本机的硬盘可以是,而1表示这是1号partition(分区)

卸载sdc的已挂载分区

我直接偷懒了

$ sudo umount /dev/sdc*

表示卸载所有的已经挂载的分区 这里如果不umount的话dd会提示device busy错误

格式化U盘(也就是重构文件系统)

$ sudo mkfs.vfat -I /dev/sdc

-I表示强制把原本已有的文件系统override成fat

最重要的一步!dd写iso

$ sudo dd if=/path/to/ubuntu-19.10-desktop-amd64.iso of=/dev/sdc status=progress && sync

写入的过程会点久,泡杯茶叹下世界慢慢等一下吧23333
这里的sync很重要,一开始就是没有写这个 && sync导致写少了东西到U盘上从而引导失败
系统会将很快地将数据先写到读写速度相对高速的内核缓冲区(cache)中,然后相对拖拉一点的U盘慢悠悠从这个cache中读数据
但有时候kernel还没有把cache中的数据完全写进U盘里面,这时候就需要sync来flush掉这个cache

等sync完毕之后eject弹出就好了