Проблемы с монтированием дисков HFS +


12

У меня проблема с подключением некоторых дисков hfsplus. Мне просто нужно, чтобы они были установлены только для чтения. (отключение журнала не вариант) Я провел много исследований и обнаружил, что из-за изменений с версии ядра 2.6.37 до 2.6.38 проблема началась.

Посмотрите эту ссылку на bugs.launchpad.net .

Поэтому я протестировал его с ядром Linux версии 2.6.37 и ниже, и он работал нормально, как и должно.

Версии выше, включая мою версию, которая является 3.2.0-54-generic (ubuntu 12.04), не работали нормально с монтированием образов hfsplus и дисков. Поэтому мне нужен модуль hfsplus из рабочей версии, такой как 2.6.31-14-generic из ubuntu 9.

В этом случае я использую эти команды с образом 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. Посмотри на это! Это драйверы NTFS и HFS + от Paragon.

"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?

Лучший совет, который я видел, был этот .

Ответы:


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

Кстати, вам не нужно использовать losttup, 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
Все еще получаю обе ошибки в dmesg, хотя я указал и смещение, и sizelimit
wkarl

Не ясно , что смещение должно быть - для меня, Numberмоего устройства 1, а offset=1и offset=0как провал
MichaelChirico

16

Для всех, кто сталкивается с этим вопросом при поиске того же сообщения об ошибке, обратите внимание, что существует другая возможная причина этой ошибки.

Хотя ответ, предоставленный mcy, должен работать, если раздел на самом деле является разделом HFS +, начиная с OSX Yosemite, тип раздела по умолчанию для Mac - «Базовое хранилище», которое используется для обработки логических томов. Это означает, что на самом деле вы хотите смонтировать логический том (используя HFS + filesytem) внутри раздела «Core Storage».

Чтобы узнать, относится ли ваш раздел к типу «Apple Core Storage», вы можете использовать gdisk: AF05код «Apple Core Storage», а af00код «Apple HFS / HFS +».

Если ваш диск использует «Apple Core Storage», вы можете использовать руководство, приведенное в этом ответе, для его монтирования.


1
Спасибо! Это была именно та проблема, с которой я столкнулся. Связанное решение работает хорошо.
Майкл Амброуз
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.