为什么“Disk Utility.app”无法识别我用“dd”复制的磁盘?

为什么“Disk Utility.app”无法识别我用“dd”复制的磁盘?

问题的简短摘要版本 为什么当我尝试将 ISO CD 映像复制到 USB 闪存设备时,会出现很多奇怪的行为?

问题的原始版本,包含所有详细信息— 下面的操作会自找麻烦:在 /dev/disk1 中有一个 USB 闪存驱动器,在 /dev/disk2 中有一个 CD-ROM,如下所示(在 Mac Os 10.4 上):

cas cas$ diskutil 列表
# 删除不相关的输出
/dev/disk1
   #: 类型名称 大小 标识符
   0:FDisk_partition_scheme *3.7 GB 磁盘1
   1:Apple_HFS usr-kodp 614.4 MB disk1s1
   2:Apple_UFS glowline 1.8 GB disk1s2
   3:DOS_FAT_32 VAR-KODP 1.2 GB 磁盘1s3
/dev/disk2
   #: 类型名称 大小 标识符
   0:CD_partition_scheme *557.1 MB 磁盘2
   1:Apple_partition_scheme 485.1 MB 磁盘2s1
   2:Apple_partition_map 1024.0 B 磁盘2s1s1
   3:Apple_HFS KoDP 479.5 MB 磁盘2s1s2

尝试用 CDROM disk2s1 的三个分区来破坏闪存驱动器的分区 disk1s1:

cas cas$ dd if=/dev/disk2s1 of=/dev/disk1s1 bs=1024 count=496742

生成的分区将无法挂载,并且磁盘工具无法修复它:

验证并修复磁盘“disk1s1”
检查 HFS 卷。
B 树节点大小无效
音量检查失败。

现在 diskutil 告诉我:

/dev/disk1
   #: 类型名称 大小 标识符
   0:FDisk_partition_scheme *3.7 GB 磁盘1
   1:Apple_HFS usr-kodp 614.4 MB disk1s1
   2:Apple_UFS glowline 1.8 GB disk1s2
   3:DOS_FAT_32 VAR-KODP 1.2 GB 磁盘1s3

这是什么意思?几乎可以肯定,因为我的破坏意味着 disk1 的根分区图告诉它 disk1s1 仍然是 Apple_HFS,即使它的内容是 Apple_partition_scheme 文件系统,但如果这是问题所在,磁盘实用程序难道不应该能够推断出 disk1s1 的类型吗?为什么 diskutil 告诉我:

cas cas$ diskutil mount /dev/disk1s1
卷 /dev/disk1s1 已挂载

...但实际上并没有挂载文件系统?

答案1

这是有根据的猜测;我不知道 OSX 或磁盘工具好吧,但我确实了解一般的文件系统和块设备,所以我认为我知道发生了什么。不过,其中很多内容可能不准确;它被设为 CW,以便 OSX 文件系统专家可以根据需要纠正这个问题。


我不认为这张 CD 实际上有 3 个分区供你复制。磁盘工具列表显示您是 /dev/disk2,它是单个子设备,并且该子设备有自己的 2 个子设备:

  • /dev/disk2“CD_partition_scheme”——这是“物理”CD

    1. /dev/disk2s1“Apple_partition_scheme” - 如果我理解 OSX 的设备命名正确的话,这是第一个 CD 轨道。从与父设备的大小差异以及这一点来看,我认为这是 CD 减去数据错误校正。

      1. /dev/disk2s1s1“Apple_partition_map”——从大小来看,这个像是一个分区表,或者文件表

      2. /dev/disk2s1s2“Apple_HFS”——这是实际的文件系统

因此,您复制到 USB 分区上的不是三个分区;而是 CD 的按顺序内容,减去错误校正数据。 您的 USB 分区现在应该包含相当于 CD 的 ISO 映像。

这可能是它无法安装的原因。我不熟悉高级磁盘工具选项,但如果我在具有标准 ISO9660 数据 CD 的 Linux 系统上做过类似的事情,我会使用它来尝试安装 USB 分区:

mount -t iso9660 /dev/myusbdevice /mnt/path

... 和或许可以。但根据您的问题,您似乎正在尝试访问该 USB 分区作为文件系统,并且考虑到你的命令及以上内容,它不是一个文件系统—— 这是一个 CD 映像。


那么回答你的问题:

“无效的 B 树节点大小”是什么意思? 它的意思是磁盘工具无法识别有效的文件系统/dev/disk1s1。 你的命令复制了您要求它复制的内容,但您要求它复制的内容不是文件系统。当您对其运行“验证和修复”操作时,验证失败,因为它需要文件系统,但它正在获取 CD 分区图。

如果你想复制文件系统,你可能想要复制/dev/disk2s1s2并不是/dev/disk2s1

相关内容