9

У меня проблема с монтированием некоторых дисков 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?

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

2 ответа2

15

Этот вопрос устарел, но я столкнулся с ним при попытке смонтировать раздел 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)
12

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .