在 Linux 下安装混合 ISO (ISO 9660/HFS+)

在 Linux 下安装混合 ISO (ISO 9660/HFS+)

我正在尝试将混合 .dmg 文件中的 HFS+ 分区挂载到本地文件夹。

我在其中发现了一个 HFS+ 超级块(按照这里)并尝试将其与/dev/loop0关联,然后挂载:

losetup -o MY_HFS_SUPERBLOC_OFFSET /dev/loop0 image.dmg
mount -t hfsplus /dev/loop0 /mnt/cdrom/

但是,当我运行上面列表中的最后一个命令时,收到以下消息:

mount:错误的 fs 类型、错误的选项、/dev/loop0 上的错误超级块、缺少代码页或辅助程序或其他错误在某些情况下,在 syslog 中发现有用的信息 - 尝试 dmesg | tail 等

消息 |尾巴:

[12130.800828] hfs:无法加载目录文件

我确信我指定了正确的 MY_HFS_SUPERBLOC_OFFSET,我遵循了这一点技术说明来自 Apple 关于 HFS+ 分区的结构,并在 .dmg 文件末尾找到了匹配的卷头副本。

我该如何安装该图像?

欢迎提出所有建议!

答案1

愚蠢的回答,但如果你尝试这样做,会发生什么:

mount -t hfsplus image.dmg /mnt/cdrom

答案2

不确定这是否会有很大帮助,但根据 HFS 驱动程序的来源,它似乎很难找到该技术说明中详细介绍了 b-tree。不幸的是,我没有这样的文件可以进行实验。

372 HFSPLUS_SB(sb).cat_tree = hfs_btree_open(sb,HFSPLUS_CAT_CNID);

373 如果(!HFSPLUS_SB(sb)。cat_tree){

374 printk(KERN_ERR "hfs: 无法加载目录文件\n");

375 转到清理;

376 }

不幸的是,我根据此内容找到的每个链接都在谈论使用 Linux 活动磁盘来 fsck 损坏的 HFS 分区,而不是安装 dmg 映像。

答案3

我将 DMG 解压为普通磁盘映像后,仍然遇到类似问题。结果发现,问题出在我的 DMG 是混合 (FAT+HFS) 映像,HFS 驱动程序无法正确识别。

请查看以下链接了解操作方法[http://www.64lines.com/mounting-hfs-plus]

答案4

Mac OS/Apple 的 DMG 文件格式是一种压缩文件格式。根据您引用的文章,您似乎在压缩文件中意外找到了正确的签名序列,并将分区起始偏移量向后移动了 1024 个字节。

您可以在 Windows 和 Linux 下使用 p7zip 解压缩文件 dmg(我还没有在 Linux 下尝试过)或者使用 dmg2iso 或其他实用程序将其转换为未压缩的 iso。

希望,这有帮助...

此致...

相关内容