安装HFS +驱动器的问题


12

我在安装某些hfsplus驱动器时遇到问题。我只需要将它们挂载为只读。(不选择禁用日记)我进行了大量研究,发现由于内核版本从2.6.37更改为2.6.38,因此开始出现了问题。

在bugs.launchpad.net上查看此链接。

因此,我使用2.6.37及更低版本的Linux内核进行了测试,并且可以正常工作。

上面的版本(包括我的版本3.2.0-54-generic(ubuntu 12.04))在安装hfsplus映像和磁盘时无法正常工作。所以我需要来自ubuntu 9的2.6.31-14-generic这样的工作版本的hfsplus模块。

在这种情况下,我将这些命令用于HFS + DD映像。但是我使用其他hfsplus物理驱动器和其他映像来执行此操作。它们都适用于内核2.6.37及更低版本,但不适用于较新版本:

sudo losetup -d /dev/loop0
sudo losetup /dev/loop0 -o $((512*409640)) /folder/iMac_21.dd

sudo mount -t hfsplus /dev/loop0 /mnt/hfs
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error

dmesg | tail
[84980.380254] hfs: invalid secondary volume header

我必须将此信息添加到“证明”,即问题在内核2.6.38之后。看看这个。那是Paragon的NTFS和HFS +驱动程序。

"What's new in Paragon NTFS & HFS+ for Linux 8.5:
Support for modern Linux Kernels (up to 2.6.38);"
paragon-software.com/home/ntfs-linux-per/features.html

为了解决这个问题,我刚刚将其复制/lib/modules/2.6.27/kernel/fs/hfsplus.ko到当前的3.2.0-54通用内核中。但这没有用。如何将工作中的hfsplus部分放入当前的3.2.0-54-通用内核ubuntu 12.04 linux中?或者如何修复内核以使其像2.6.37一样工作?

我看到的最好的提示就是这个

Answers:


18

这个问题有点老了,但是我在尝试在相同情况下挂载HFS +分区时遇到了它,并找到了解决方案。我不太确定它与内核版本有什么关系,我的版本是3.13(3.13.7-1 x86_64,Debian)。

简短答案

提供分区的大小及其偏移量。

长答案

首先从Parted中获取分区信息,以字节为单位;您需要“开始”和“尺寸”数字。这是Parted会话的示例(您可以猜到,我的硬盘映像是/mnt/macbook.dd):

$ /sbin/parted /mnt/macbook.dd
WARNING: You are not superuser.  Watch out for permissions.
GNU Parted 2.3
Using /mnt/macbook.dd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit
Unit?  [compact]? b
(parted) p
Model:  (file)
Disk /mnt/macbook.dd: 160041885696B
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start       End            Size           File system  Name                  Flags
 1      20480B      209735679B     209715200B     fat32        EFI system partition  boot
 2      209735680B  159907647487B  159697911808B  hfs+         Customer

如果尝试通过仅提供偏移量(开始)来挂载分区,则会收到与您相同的错误:

# mount -v -t hfsplus -o ro,loop,offset=209735680 /mnt/macbook.dd /media/mac
mount: enabling autoclear loopdev flag
mount: going to use the loop device /dev/loop0
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
# dmesg | tail -n2
[117791.463123] hfsplus: invalid secondary volume header
[117791.463132] hfsplus: unable to find HFS+ superblock

顺便说一句,您不需要使用Lostup,mount会自动为您完成。现在,如果我添加分区的大小(sizelimit),则可以正常工作:

# mount -v -t hfsplus -o ro,loop,offset=209735680,sizelimit=159697911808 /mnt/macbook.dd /media/mac
mount: enabling autoclear loopdev flag
mount: going to use the loop device /dev/loop0
/mnt/macbook.dd on /media/mac type hfsplus (ro,offset=209735680,sizelimit=159697911808)

4
您的解决方案为我处理了“无效的二级卷标头”消息,但仍然存在“无法找到HFS +超级块”错误:(
krumpelstiltskin

1
即使我同时指定了offset和sizelimit,在dmesg中仍然会出现两个错误
wkarl 2015年

不清楚偏移量应该是什么-对我来说,Number我的设备的偏移量是1,offset=1并且offset=0都失败了
MichaelChirico

16

对于在寻找相同错误消息时遇到此问题的任何其他人,请注意,此错误还有另一个可能的原因。

如果该分区实际上是HFS +分区,则mcy提供的答案应该有效,但从OSX Yosemite开始,Mac的默认分区类型是“ Core Storage”,用于处理逻辑卷。这意味着您实际要挂载的是“ Core Storage”分区内的逻辑卷(使用HFS +文件系统)。

要查看分区是否为“ Apple Core Storage”类型,可以使用gdiskAF05是“ Apple Core Storage” af00的代码,而是“ Apple HFS / HFS +”的代码。

如果您的磁盘使用“ Apple Core Storage”,则可以使用此答案中提供的指南进行安装。


1
谢谢!这正是我所面临的问题。链接解决方案效果很好。
Michael Ambrose
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.