为什么 dd 会更改外部磁盘上的文件系统?

为什么 dd 会更改外部磁盘上的文件系统?

我从上网本中取出一块 250 GB SATA 磁盘,用 dd 将其填充为零,然后通过 USB 适配器将其连接到我的笔记本电脑。 fdisk 正确检测到它:

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x475fa272

   Device Boot      Start         End      Blocks   Id  System

我创建了一个主分区并使用以下命令创建了 ext4 文件系统:

mkfs.ext4 /dev/sdb1

现在 fidsk 显示:

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
81 heads, 63 sectors/track, 95707 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x475fa272

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   488397167   244197560   83  Linux

好吧,到目前为止还没有什么意外。接下来,我想使用以下命令提取 Ubuntu ISO 映像:

dd if=~/ubuntu-12.10-desktop-i386.iso of=/dev/sdb

令我惊讶的是,文件系统更改为“隐藏 HPFS/NTFS”:

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
19 heads, 24 sectors/track, 1071046 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x475fa272

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *          64     1542743      771340   17  Hidden HPFS/NTFS

使用 dd 将 ISO 映像提取到外部驱动器并保留当前文件系统的正确方法是什么?

答案1

您写入磁盘 ( /dev/sdb),而不是写入您创建的文件系统 ( /dev/sdb1)。

由于 ISO 映像已经包含文件系统(您不需要),因此您可以简单地安装 ISO(使用选项-o loop)并将数据复制到/dev/sdb1.这样文件系统就被保留了。

答案2

这不是目的dd,也不是dd运作方式。如果您想要 ISO 的内容,则可以环回挂载它并复制各个文件。

然而,您似乎想要将 Ubuntu 安装程序的内容复制到您可能想要从中启动的硬盘上。再说一次,事情不是这样的。

光盘 (CD/DVD) 使用带有适用于 UNIX 和 El Torito 的 Rock Ridge 扩展的 ISO 9660 文件系统进行引导。

固定磁盘 (HDD/SSD/FDD) 不适用于 ISO 9660 文件系统,并且无法从 El Torito 映像启动。您不能仅仅复制 Live CD 内容并期望它能够工作。你实际上需要安装乌班图。

如果您要安装的计算机没有光驱,请使用USB安装程序

答案3

我假设你的笔记本电脑有一个 CDROM 驱动器。如果是这样,您可以在笔记本电脑中安装上网本的驱动器(而不是通过 USB 连接),然后在其上安装 Ubuntu。之后将其放回您的上网本中。

不确定 Ubuntu 安装对实际硬件的依赖程度,因此您可能需要在驱动器返回上网本后进行一些调整,以适应上网本而不是笔记本电脑。

相关内容