使用 dd 创建的 Linux Live USB 驱动器损坏分区表和可靠性问题

使用 dd 创建的 Linux Live USB 驱动器损坏分区表和可靠性问题

.iso我正在尝试从 isohybrid ( ) 映像创建 Linux Live USB 驱动器。

为了完成这项任务,我过去采取了以下步骤:

  1. 使用以下命令安全擦除闪存驱动器:

    sudo dd bs=4M if=/dev/zero of=/dev/sdx

  2. msdos使用以下方法在闪存驱动器上创建分区表gparted

  3. 创建一个新分区(/dev/sdx1),该分区的大小与闪存驱动器的整个大小相同,并带有fat32文件系统(用于跨平台兼容性)与气缸对齐gparted

  4. 使用以下bootable命令在新创建的分区上设置标志(/dev/sdx1gparted

  5. 检查新创建分区上的文件系统(/dev/sdx1),以确保所有磁盘格式化操作均已正确执行,使用gparted

  6. .iso使用以下命令将图像写入闪存驱动器:

    sudo dd bs=4M if=<distro>.iso of=/dev/sdx

然而,完成最后一步后,当我再次使用 gparted 检查磁盘时,它报告说闪存驱动器上的所有空间都未分配,并且磁盘上没有分区表.iso。我怀疑这可能与我使用命令将文件写入闪存驱动器时主引导记录 (MBR) 被覆盖或损坏有关dd

.iso当我安装闪存驱动器时,似乎已从 中正确提取了中包含的所有文件.iso,有时我能够启动实时 USB。但是,在启动过程中以及尝试使用实时 USB 在硬盘驱动器上安装发行版时,我遇到了各种可靠性问题。就像我之前提到的,我怀疑这可能与分区表损坏以及在将.iso写入闪存驱动器后无法正确检测到 fat32 文件系统有关,这可能导致启动和安装时出现一些磁盘读写问题。

有没有办法可以防止这些可靠性问题的发生和分区表被破坏,同时仍然只使用gparteddd

答案1

一旦运行dd bs=4M if=something.iso of=/dev/sdx,使用 gparted 创建的所有内容(即分区表)将被覆盖dd

gparted 显示磁盘未分配且没有分区表,这很正常。至少,到目前为止,我创建的所有 Debian USB 记忆棒的 gparted 都是这样显示的。

测试 dd 是否成功的更好方法是尝试挂载磁盘上的第一个分区并查看内容是否看起来正常(=看起来与 iso 中的内容相似)。

mkdir a b
mount /dev/sdx1 a
mount file.iso b
# see if the a and b directories seem to contain the same files

另外,您可能希望使用cp something.iso /dev/sdx而不是dd。 它更容易输入,而且(甚至更有效)。

编辑:我看到您确实装载了磁盘,并且文件也在那里。您遇到的可靠性问题可能是由于 USB 驱动器损坏造成的。尝试另一个,看看问题是否仍然存在。

有关 ISO 和文件系统的更多信息。

.iso 是光盘映像。它是从头到尾读取 CD/DVD/等后得到的一长串 1 和 0。

cat /dev/cdrom > myfile.iso

如果您将 .iso 直接写入 USB 驱动器,操作系统会将该驱动器视为 CD/DVD。

现在,让我们看看如果对 USB 进行分区、在分区上创建文件系统并将 .iso 作为普通文件复制到那里,会发生什么。

mount /dev/sdx1 folder
cp file.iso folder/

我们将读取 U 盘的内容

cat /dev/sdx > mysecondfile

现在:

  • myfile.iso是包含安装程序文件、引导加载程序等的光盘映像
  • mysecondfile是包含单个文件的光盘映像myfile.iso

这就是为什么您应该将 iso 直接写入记忆棒而不是将其存储为文件的原因。

相关内容