在 Linux 中安装具有读/写权限的 HFSPlus 磁盘

在 Linux 中安装具有读/写权限的 HFSPlus 磁盘

我意识到这个问题本质上类似于这个问题,但我希望特别引起人们对其中一条评论中另一个问题的关注这个问题的答案

我拆下了旧 MacbookPro 的硬盘,并尝试将其安装到我的 Elementary OS 盒子上,它会自动将其安装为只读。我想获得对此驱动器的读写访问权限。

按照上面链接的答案中给出的步骤,运行后

sudo mount -t hfsplus -o remount,force,rw /dev/sdc2 /media/myharddrive

我明白了

mount: warning: /media/myharddrive seems to be mounted read-only.

该问题的评论中已经提到了这一点,但尚未引起足够的重视以奖励回答。怎么还是只读的?这不是force保证吗?

以下内容可能相关,也可能不相关:

我也sudo fsck.hfsplus -f /dev/sdc2跟着跑了答案中链接的博客文章并在不想执行日志系统检查-f后添加了标志。这一直运行良好,直到fsck

** /dev/sdc2 ** Checking HFS Plus volume. ** Checking Extents Overflow file. ** Checking Catalog file. ** Checking multi-linked files. Orphaned indirect node iNode28863935 ** Checking Catalog hierarchy. ** Checking Extended Attributes file. ** Checking volume bitmap. ** Checking volume information. ** Repairing volume. ** Rechecking volume. ** Checking HFS Plus volume. ** Checking Extents Overflow file. ** Checking Catalog file. ** Checking multi-linked files. ** Checking Catalog hierarchy. ** Checking Extended Attributes file. ** Checking volume bitmap. ** Checking volume information. ** The volume myharddrive was repaired successfully. *** glibc detected *** fsck.hfsplus: munmap_chunk(): invalid pointer: 0x00000000022f9e30 ***

随后是回溯和内存映射。该fsck调用似乎对我的驱动器没有影响,既没有好处也没有坏处。

关于如何获取我的驱动器的读写访问权限的任何指示,无需启动 OSX,将不胜感激。

编辑 Michael Kjörling 的评论和回答解决了我访问数据的基本问题。但是,上面粗体显示的问题尚未得到解决,因此我编辑了该问题以强调此问题,并将该问题留给未来的用户。

答案1

正如我们在评论中发现的那样,这里可能存在两个问题:

  1. 您正尝试以普通用户身份运行复制。这可能会导致读取源文件失败,因为您没有读取它们的权限。sudo只需像挂载一样运行复制即可轻松纠正此问题。
  2. cp: omitting directory Documents/尝试通过 运行复制时,您会得到sudo。 这根本不是权限问题,只需告诉cp包含子目录即可解决。

将这两者放在一起,您应该能够使用类似命令复制文件sudo cp -av /media/myharddrive /somewhere/else,其中 /somewhere/else 存在并且可写。

-v参数并非必需,但经过半小时或一小时的等待,您可能会喜欢在复制过程中列出文件。请注意,如果您有大量小文件,屏幕刷新可能会降低复制的吞吐量;在这种情况下,只需最小化窗口并偶尔检查一下即可。

-a告诉 cp 以“存档”模式运行,尽可能多地保留正在复制的文件,包括子目录。或者您可以使用-r告诉它仅保留目录结构。

使用此功能,您应该能够将文件复制到更合适的位置,在那里您可以更自由地使用它们,而不受 HFS+ 文件系统支持的只读限制的限制。

答案2

我认为您的问题基本上是如何在不使用 OSX 的情况下关闭日志功能。

这需要对磁盘头进行二进制编辑(黑客攻击),结果日志占用的磁盘空间可能会丢失。

这里有两个相当相似的 C 程序,它们声称可以做到这一点:

我不能保证这些程序不会破坏磁盘,所以我建议您在磁盘的备份映像上尝试一下。

这篇文章可能有用: 我如何装载磁盘映像?

答案3

我经常遇到同样的问题,到目前为止我学到的是:成功进行 fsck 至关重要。由于这在您的机器上不起作用,我认为这应该是您的修复方法:

  • 您安装了哪个版本的 hfsprogs / fsck.hfsplus?
  • 在我的机器上(运行 Debian)我从源代码安装(使用来自不同来源的下载)

    wget "http"://"gentoo.osuosl.org/distfiles/diskdev_cmds-332.14.tar.gz"

    wget "http"://"gentoo.osuosl.org/distfiles/diskdev_cmds-332.14_p1.patch.bz2"

    tar xzf 磁盘设备_cmds-332.14.tar.gz

    bunzip2 -c diskdev_cmds-332.14_p1.patch.bz2 | 补丁 -p0

    cd 磁盘设备_cmds-332.14

    制作-f Makefile.lnx

    cp fsck_hfs.tproj/fsck_hfs /sbin/fsck.hfsplus

    cp newfs_hfs.tproj/newfs_hfs /sbin/mkfs.hfsplus

    ln -s /sbin/fsck.hfsplus /sbin/fsck.hfs

    ln -s /sbin/mkfs.hfsplus /sbin/mkfs.hfs

这样,fsck 现在就可以一直使用我的 hfs+ 磁盘了。

答案4

如果你有任何方法在 Mac 中启动环境可以通过正确禁用日志功能来解决此问题。环境,而不是实际的 macOS,换句话说;如果磁盘不再在 Mac 上但 Mac 启动了,请将磁盘放入外部外壳中(或重新安装它)并从 Internet Recovery 启动:R在启动 Intel Mac 期间和之后按住。

如果你的机器比较新,我很抱歉给你这么低分,但是你在目睹了 Apple 的发展路径之后,仍然继续从 Apple 购买,这在某种程度上是你自己造成的。

使用磁盘工具或diskutil(可以从上面的菜单之一访问终端),给磁盘一些 TLC,然后禁用日志记录。禁用日志记录应该在文件菜单磁盘工具并且它可能被隐藏,按显示它。

或者在终端中,diskutil list找到你的磁盘 体积,然后确保该卷已卸载:

  • diskutil unmountDisk disk1s7或者整个磁盘被卸载
  • diskutil unmountDisk disk1或者
  • diskutil unmountDisk /dev/disk1但未被弹出;
  • diskutil eject <any-of-the-above>否则您必须重新连接。并且,摆脱日志记录:
  • diskutil disableJournal disk1s7或者
  • diskutil disableJournal force disk1s7 …当然,还会用到你的数据。

如果你决定使用新的文件系统,请使用NTFS如果你使用 Windows,否则使用ext4。现在大多数操作系统都支持 ZFS,出于某种原因 APFS 也是如此,Btrfs 也很好用,但在 上处理问题更容易ext4,而且与 ZFS 和 Btrfs 不同,它是可移植的,而其他那些需要导入池和额外支持,并且元数据错误可能会导致整个系统崩溃。

或者,您应该在此环境中拥有对磁盘的完全访问权限。而且您似乎可以顺利使用 CLI,而不会出现重大问题,因此,无论如何,如果您是我,我会为计划 A 准备一个备份,即 — 使用另一个机箱上的第二个磁盘 — 从第一个磁盘复制文件,然后再尝试修改第一个磁盘。

在安装程序或恢复模式或任何其他非标准 macOS 形式启动时,请注意文件系统的结构,我已经有一段时间没有在恢复模式下启动了,但我相信这是/指实时环境的文件系统,而你的实际磁盘将处于/Volumes/<your-volume-name>

如果您的 Mac 无法启动或不再存在,您可以借一台!我不知道为什么没有人建议这样做。

最后努力情况

如果您没有磁盘或网络共享来移动数据该怎么办?

如果尝试,这很可能会从 GUI 失败:一次进行一项修改,应用,要非常有耐心。

您可以将磁盘分区创建一个 HFS 卷,无需日志记录,创建一个连接磁盘组 (JBOD)并将尽可能多的数据移入其中,这将再次释放原始卷分区上的另一个块,并使用新卷扩展 JBOD。重复此操作,直到完成。始终在每个卷中留出一点余地,*200-400MB 应该足够安全。您可能无法重新增加卷,但 JBOD 的规则很少。

或者由于这在 Linux 中可能无法识别,所以我从未在 Linux 上测试过,忘记 JBOD,只需从该卷中取出数据,即使它现在被剥离成 30 个卷,它也应该为您提供一些回旋余地来规划下一步。

也许你事后使用 Linux 进行 JBOD 操作 - ext4 可以直接转换为 Btrfs,而 Btrfs 比现有的任何东西都更灵活,这一点它比 ZFS 更胜一筹。也许最后一次迁移(hfsext4)?这很冒险,但至少是另一种选择——如果你继续使用 macOS,你就不会有那么多选择(好主意;我仍然使用 macOS、Mojave,但我完全准备好在我的 Mac 死机时放弃它)。

将磁盘工具与“精细磁盘”结合使用

如果磁盘实用程序无法识别某些东西,则可能表明您的磁盘已损坏或出现其他问题。如果您一次执行太多操作,可能会损坏磁盘本身。当您看到饼状图来对磁盘进行分区时,添加分区设置名称、调整大小都是单独的操作,其中许多操作都会导致磁盘实用程序失败,我猜是因为磁盘可能响应速度不够快,要么将其解释为坏磁盘,要么变得不耐烦可以这么说nad 制造了一些愚蠢的东西,最终导致了一个坏磁盘。

在做任何事之前,你还需要做另一件可能挽救生命的事情,事后看来我应该早点提到这一点:终端运行gpt show -l /dev/disk1gpt show /dev/disk1并将这些表格复制到文本文件,然后将其放入闪存驱动器或拍摄屏幕照片,IDK。将其直接放入文件中:gpt show -l /dev/disk1 > gpt-tables.txt ; gpt show /dev/disk1 >> gpt-tables.txt并将文件移出机器。

如果磁盘实用程序出现问题,它将允许您重新创建分区表。紧急启动没有手册页,因此使用方法如下(gpt)。

一次添加一个分区,如果添加时分区大小不符合要求,则仅更改大小,更改文件系统,单击下拉菜单以显示隐藏的分区。不要更改新卷的名称,您可以在创建它们后执行此操作,这可能会导致整个过程失败。第一次错误之后,从那以后都是问题,有时它会在重新启动后恢复,但最好不要强求。 的质量控制在 High Sierra/Mojave 附近,在 CEO 过渡期间就失败了。你的 Mac 是典型的漂亮愚蠢的金发女郎,不会成长为 *Elle Woods^,不……她很笨。

相关内容