创建可引导的.iso文件的dd命令无法启动。

我对Linux还不熟悉。我不确定自己做错了什么,但是当我使用dd命令尝试制作可启动/可安装的USB驱动器时,它无法从任何计算机引导。如果我使用Windows上的rufus工具来处理相同的.iso文件,它可以在任何计算机上引导。除了一台计算机使用UEFI外,其他所有计算机都使用BIOS。此外,我没有在任何计算机上进行双重引导。我已经尝试了8种不同的方法来使用dd完成这个任务。
  • dd if=~/Desktop/xubuntu16.04 of=/dev/sdb

  • dd if=~/Desktop/xubuntu16.04 of=/dev/sdb1

  • dd if=~/Desktop/xubuntu16.04 of=/dev/sdb bs=4M

  • dd if=~/Desktop/xubuntu16.04 of=/dev/sdb1 bs=4M

  • dd if=/dev/cdrom of=/dev/sdb

  • dd if=/dev/cdrom of=/dev/sdb1

  • dd if=/dev/cdrom of=/dev/sdb bs=4M

  • dd if=/dev/cdrom of=/dev/sdb1 bs=4m


/桌面/xubuntu16.04 是什么类型的文件? - Organic Marble
你有检查过ISO文件的校验和吗?当你启动时,会收到什么错误信息? - Panther
所有目前支持的.ISO文件都可以通过dd成功地复制到可启动媒体上,你的问题很可能是一个损坏的ISO文件。请参考这个链接 - Elder Geek
这是我从http://xubuntu.org/getxubuntu/#lts下载的一个.iso文件。我在Xubuntu中使用Transmission下载了种子文件。@OrganicMarble - tulleydr
我不知道“检查ISO的校验和”是什么意思,但我会进行一些研究并尝试一下。其他系统只是显示没有可引导的媒体。@bodhi.zazen - tulleydr
这是校验和的输出。根据我的研究,看起来它通过了。 dustin@dustin:/Downloads$ md5sum xubuntu-16.04.2-desktop-i386.iso 8fa567c74340743727f7d5d51f8e49bd xubuntu-16.04.2-desktop-i386.iso dustin@dustin:/Downloads$ @bodhi.zazen - tulleydr
先卸载您的 USB 驱动器,然后使用 dd。 - user72056
2个回答

将iso文件克隆到USB闪存驱动器

像你描述的那样使用dd是一种克隆方法,这是一种简单可靠的方法,适用于所有当前的Ubuntu家族iso文件,以创建USB启动驱动器,并且64位系统可以在BIOS和UEFI模式下工作。

您需要提升权限,可以通过使用sudo来运行。我认为以下命令可以实现您想要的功能

sudo dd if=~/Desktop/xubuntu16.04 of=/dev/sdx bs=4096

在这里,x是目标驱动器的设备字母。获取正确的目标驱动器字母非常重要,否则可能会覆盖存储了家庭照片和其他非常重要文件的驱动器。dd是一个非常强大但也非常危险的工具,因为它会按你的指示执行,不会提问,而且一个小的输入错误就足以销毁你的家庭照片。

应该没有分区号,所以使用/dev/sdx(而不是/dev/sdx1),因为你想要从ISO文件克隆到整个驱动器,并指向驱动器的开头位置(而不是分区)。根据我的经验,在许多计算机上使用块大小为4096字节的写入速度很快。

更安全的克隆工具

我建议你使用一个帮助你识别和选择目标驱动器的工具,并带有最后一个检查点,让你确保将写入到正确的驱动器中。

  • 'mkusb'是一种在所有当前的Ubuntu版本中都能工作的工具。它给dd套上了一个安全带。请看这个链接

    help.ubuntu.com/community/mkusb

  • 在Ubuntu 16.04 LTS和更新版本中,Ubuntu的'启动盘创建器'也是一个可靠的克隆工具,可以用来制作带有Ubuntu的USB引导驱动器。(早期版本的Ubuntu '启动盘创建器'存在缺陷。)

  • 另一个选择是'Disks'(即gnome-disks)。

我使用了你的命令sudo dd if=~/Desktop/xubuntu16.04 of=/dev/sdx bs=4096,并且使用了sdx而不是sdx1来创建可启动的USB媒体。我不知道是sudo还是bs=4096起了作用,但无论是哪一个,都非常好用。谢谢你!@sudodus - tulleydr
欢迎 @tulleydr。很高兴它对你有用 :-) 我认为sudo是关键,让它起作用了。 - sudodus
@tulleydr @sudodus 我之前遇到了类似的问题,但我已经在使用sudo了,所以我对扇区大小进行了一些研究,结果发现4096可能非常重要:“分区表(包括MBR和GPT)使用物理扇区大小来计算它们的地址。因此,改变物理扇区大小会使分区表无效。”引用自链接。因此,错误的扇区大小会导致启动失败... - sdjuan
如果您想知道正确的块大小,fdisk -l imagefilename 将显示它。 - sdjuan
1@sdjuan,使用dd命令时的块大小bs影响着dd管理的数据块,但是在它和磁盘的物理扇区大小之间至少存在一个软件层(由fdiskparted显示)。所以ddbs对写入速度有影响,但对磁盘的物理扇区大小没有影响(如果我理解正确,结果应该是一样的)。-- 但是从具有512字节物理扇区的驱动器克隆到具有4096字节物理扇区的驱动器是一个不好的主意。结果可能能够工作,但不是以最佳方式。 - sudodus
1我当然注意到了写入速度。在我的系统上,4096字节的块大小花费了15分钟来处理10G的镜像,而512字节的块大小则需要50分钟。 - sdjuan

所以ISO镜像可能有些能用,有些不能用。光盘和USB驱动器具有不同的引导特性。它们的引导方式不同,并且引导加载程序位于不同的位置。
Rufus和其他ISO写入工具都意识到了这一点并进行了相应的补偿。正如您从测试案例中可以看到的那样,仅仅将字节逐个写入媒体并不总是有效,因为低级别的原始写入没有进行必要的调整,而在光驱和USB驱动器上情况并不相同。