问题的简短摘要版本 为什么当我尝试将 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
/dev/disk2s1“Apple_partition_scheme” - 如果我理解 OSX 的设备命名正确的话,这是第一个 CD 轨道。从与父设备的大小差异以及这一点来看,我认为这是 CD 减去数据错误校正。
/dev/disk2s1s1“Apple_partition_map”——从大小来看,这个像是一个分区表,或者文件表
/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。