为什么“dd”并不总是能够创建可启动 USB?

为什么“dd”并不总是能够创建可启动 USB?

更新了 TL;DR 问题:

我有两台机器 A 和 B;两台机器都可以从 USB 启动。当我在dd机器 A 上创建一个记忆棒时,该记忆棒既不会启动机器 A,也不会启动机器 B,也不会启动任何其他可启动机器。当我从完全相同的 iso完全相同的 U 盘在机器 B 上使用完全一样 dd-命令,该棒正在启动机器 A、机器 B 和任何其他可启动机器。使“dd-stick”真正可启动的秘密成分是什么?

(TL;DR 到此结束。)


首先:我完全了解这个问题及其答案:为什么‘dd’不能用于创建可启动 USB?- 然而,接受的答案(以及其他答案)中指出的问题不是我遇到的问题。

附加免责声明:该答案:https://superuser.com/a/1141527/180563不是回答这个问题。它假设在不同的系统上使用具有不同配置的不同 ISO。正如我在评论中指出的那样,这是不是情况就是这样。在我的测试中,唯一不同的是制作 Boot-Stick 的机器;其余的,即 ISO 和应该启动的机器是相同。请不要赞成该答案,因为它没有解决所提出的问题,因此错误的答案

我知道混淆正确的设备是一个常见问题dd,而且用户经常将第一个分区与整个设备混淆。

但那是不是我的问题!我以正确的方式使用了命令,即我没有复制到第一个分区,而是复制到设备,例如:

dd if=linux.iso of=/dev/disk3 bs=1m

1m是正确的,因为我使用的是 bsd-dd,它使用小写m而不是大写M,所以请不要对此发表评论。1M对于我的版本来说甚至不是一个有效的参数dd

/dev/disk3是棒的设备文件,而不是其某个分区的设备文件。

现在,尽管我按照文档做了所有事情,甚至按照我认识的其他人做的方式(成功了),但我的记忆棒无法启动。所以我的问题和另一个问题一样:使dd-copied 记忆棒可启动的秘密成分是什么?

更新:我使用的 iso 文件可以在其他人的电脑上使用。更新 2:这是我所说的 iso 文件:http://cdimage.ubuntu.com/kubuntu/releases/16.10/release/kubuntu-16.10-desktop-amd64.iso一位朋友能够用 dd 创建可启动棒,但我却不能。

答案1

通常秘诀是同质杂化..iso文件确实光盘映像 – 它们包含 ISO 9660 文件系统(因此得名),通常带有 El Torito 扩展,使其可启动。然而,这与常规的磁盘启动(无论是内部还是 USB)。

(对于 BIOS 系统,常规磁盘应该在其第 0 扇区(MBR 的一部分)中包含引导代码。虽然 CD 启动过程试图仿真从某种程度上来说,它的初始引导代码仍然存储在其他地方。

许多 Linux 发行版使用 isohybrid 来组合各种不同的启动映像,甚至不同的文件系统(BIOS、El Torito 和 UEFI;ISO 9660我使用了一个非常小的程序来将一个图像压缩成一个FAT文件,但这个图像仍然可以正常工作。

但如果你的形象没有如果以此方式构建,那么它将只有 CD 引导代码,而不是“磁盘”引导代码。

或者图片可能是混合的,但它可能只支持 BIOS,而您的系统需要 UEFI,反之亦然。或者您可能尝试在非 x86 上启动它。

相关内容