在 Arch Linux 上安装 HFS+ 分区

在 Arch Linux 上安装 HFS+ 分区

我在 Arch Linux 上安装 hfs+ 分区时遇到了一些问题。

当我运行时sudo mount -t hfsplus /dev/sda2 /mnt/mac出现此错误:

mount: wrong fs type, bad option, bad superblock on /dev/sda2,
   missing codepage or helper program, or other error

   In some cases useful info is found in syslog - try
   dmesg | tail or so.

跑步dmesg | tail可得:

[ 6645.183965] cfg80211: Calling CRDA to update world regulatory domain
[ 6648.331525] cfg80211: Calling CRDA to update world regulatory domain
[ 6651.479107] cfg80211: Calling CRDA to update world regulatory domain
[ 6654.626663] cfg80211: Calling CRDA to update world regulatory domain
[ 6657.774207] cfg80211: Calling CRDA to update world regulatory domain
[ 6660.889864] cfg80211: Calling CRDA to update world regulatory domain
[ 6664.007521] cfg80211: Exceeded CRDA call max attempts. Not calling CRDA
[ 6857.870580] perf interrupt took too long (2503 > 2495), lowering kernel.perf_event_max_sample_rate to 50100
[11199.621246] hfsplus: invalid secondary volume header
[11199.621251] hfsplus: unable to find HFS+ superblock

有没有办法挂载这个分区?

编辑

使用sudo mount -t hfsplus -o ro,loop,offset=409640,sizelimit=879631488 /dev/sda2 /mnt/mac摆脱hfsplus: invalid secondary volume headerdmesg | tail

答案1

很可能是因为 HFS 卷未挂载,所以 HFS 分区被包装在 CoreStorage 卷中(自 OS X 10.10 以来为默认设置)。您可以使用以下输出来验证是否是这种情况fdisk -lfdisk 输出

HFS+ 使用两个卷标头,一个 1024 插入设备,另一个从设备末端开始的次级 1024。根据规范,安装分区时,次级标头应正好位于分区末尾的 1024 字节处,但由于 CoreStorage 包装了 HFS 卷,情况不再如此,因此它会中止。您可以传递-o sizelimit=Nmount以手动指定 HFS 卷大小并修复此问题,但如何获取的魔法值N

testdisk实用程序可以扫描分区,提示 HFS 分区的真正结束位置。要小心——在 testdisk 中选择错误的选项可能会损坏您的分区表!

  1. 使用 启动 TestDisk testdisk /dev/sdX,然后OK选择驱动器
  2. 选择IntelMBR 或EFI GPTGPT 格式的驱动器
  3. Analyse然后Quick Search
  4. 片刻之后,它会打印出找到的分区: 测试磁盘结果

    所指示的分区看起来非常接近(但略小)之前报告的实际分区大小 623463232 个扇区fdisk -l

    由于 TestDisk 输出使用扇区,我们需要将其乘以驱动器的逻辑扇区大小(通常为 512 或 4096 字节)以获得 HFS 卷大小(以字节为单位)。这是我们在安装 HFS 卷时N将使用的值。-o sizelimit=N

    如果你不知道驱动器的逻辑扇区大小,请检查第二个的输出 第一的fdisk -l下面显示的行上报告的数字:查找磁盘的逻辑扇区大小

  5. q几次退出程序

  6. 挂载磁盘:mount /dev/sdXn -t hfsplus -o ro,sizelimit=N

答案2

另一个选择是,如果您有 OS X 计算机,则删除 CoreStorage。如果您正在使用解密,这也会删除解密,并且您必须等到解密完成(插入电源并启动 OS X,甚至恢复)。

您需要启动到您未想到的磁盘,最好是互联网恢复(如果可用,重启时按 command-option-r)。打开终端并执行以下操作:

diskutil cs list

输出应显示您的 CoreStorage 卷和所有内容,其中一个是其可恢复状态。如果它显示是,那么您就可以继续。接下来您将运行:

diskutil cs revert /dev/ diskXsY

(其中 X 是磁盘号,Y 是分​​区号)。

之后,您可以使用相同的“diskutil cs list”命令检查其状态。如果它未加密,它应该已经恢复为标准 GPT 分区布局,您可以尝试在 Arch 中再次安装它。它应该仍被记录,这将使其保持只读状态,如果您想切换,您可以在磁盘实用程序中执行此操作。

如果它是加密的,该过程将需要一段时间,但“diskutil cs list”将以百分比形式显示进度。

我自己在 Arch 上安装非 CoreStorage HFS+ 驱动器和分区时没有遇到任何问题。我最终移动了数据,重新分区为 ext4,然后将数据移回它们。

相关内容