使用'dd'命令创建可启动USB记忆棒


11

为什么可以通过dd命令将某些版本的Ubuntu的ISO映像放在USB记忆棒上并成功启动,而其他版本则不能?而且看起来它也依赖于特定的USB记忆棒。我尝试使用标准Ubuntu:

$ sudo dd if=./ubuntu.iso of=/dev/sdd bs=8129

它的工作原理就像魅力,我的意思是:引导并安装或运行实时Ubuntu。但是,当我使用以相同方式准备的另一个USB记忆棒时,它无法启动,并且找不到操作系统 BIOS错误。

当我尝试Ubuntu GNOME时,无论我使用哪个USB记忆棒,它都不会以与上一个示例相同的错误启动。

我知道,Ubuntu 中有启动磁盘创建器应用程序,但是我确信,它只是简单dd命令的GUI外观,而且我总是可以使用dd来创建可启动的USB记忆棒,至少对于Linux而言。我错了吗?


我个人使用Unetbootin,从来没有遇到过问题。
蒂姆(Tim)

Answers:


5

如果您运行启动磁盘创建器,您会注意到它执行三(四)件事:

  1. 格式化驱动器
  2. 将数据从ISO复制到驱动器
  3. (如果选择了,则添加一个额外的Casper 1文件以保持持久性。dd不会给您带来持久性。)
  4. 安装引导程序

它不是用于的GUI dd(存在用于的GUI dd,但SDC不是其中之一)。您可以认为它等效于Arch LinuxGentoo的手动方法。目前,您应该能够使用大多数(相当流行的)发行版的安装ISO创建可引导USB。大约三四年前,当我看着Arch时,情况并非如此。直到2010年,所有Arch ISO都获得了此功能(您可以在其中直接将其写入USB驱动器)-从2008年到2010年,他们拥有特殊的USB映像。

此外,如果dd直接驱动器,则该驱动器实际上是只读的,直到您对其进行格式化或以某种方式使用剩余空间。即使无法从实时环境轻松访问内容,仍可以将SCD创建的磁盘用作USB驱动器。因此,如果dd将1GB ISO转换为8或16GB USB驱动器,则除非采取了额外的步骤,否则您实际上将放弃剩余空间。


1通常,大多数实时映像都将SquashFS文件用作分区。SquashFS是只读的,因此为了持久化,将casper-rw在中创建一个文件/casper。我不确定的起源casper。据我了解,当使用该boot=casper选项启动时,内核将casper文件覆盖(如果不存在则创建一个)在squashfs之上,从而获得写功能。casper不必是文件,也可以是分区


什么是“棺材文件”?请解释。

@MikołajBartnicki我不太确定自己,但我已经更新了答案。
穆鲁

卡斯珀是个鬼(大家都知道)。就像您说的那样,它在ro文件系统上覆盖了一些文件夹。从启用了持久性的正在运行的实时映像中检查文件系统,会显示一些目录“ upper”和“ lower”,这些目录同时存在于只读和写入系统中,但在运行的系统中显示为一个,有点类似于在已经存在的系统上进行装载现有文件夹
oneindelijk

2

首先尝试:

su -c 'mkfs.vfat /dev/sdc -I'

要使用dd命令从iso文件创建可启动的USB磁盘,磁盘不能具有/ dev / sdc1之类的分区(来自磁盘/ dev / sdc的四个可能的主分区之一)。您无法将iso文件的块克隆到主分区,因为dvd或cd光盘也没有。这就是为什么您必须在磁盘/ dev / sdc上而不是在分区主分区上完全创建文件系统的原因。

此外,通过键入dd命令,您犯了一些错误。

尝试这个:

su -c 'dd if=/home/user/debian.iso of=/dev/sdc bs=4M;sync;eject /dev/sdc'

如果没有mkfs.vfat,那么您的命令将不正确。如果您也安装了引导加载程序并使分区处于活动状态,则可能是这样。其他USB驱动器无法正常工作,可能是因为您的USB端口可以与另一个USB端口共享,或者您没有电源来运行实时USB操作系统,可能是硬盘驱动器和其他需要比平时更大功率的USB磁盘。超过此类设备的平均功耗(例如,带有SATA适配器的USB硬盘盒)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.