Problemy z montażem dysków HFS +

12

Mam problem z montażem niektórych napędów hfsplus. Potrzebuję tylko zamontowanych tylko do odczytu. (wyłączenie dziennika nie jest opcją) Przeprowadziłem wiele badań i odkryłem, że ze względu na zmiany z wersji jądra 2.6.37 na 2.6.38 problem zaczął się.

Spójrz na ten link na stronie bugs.launchpad.net .

Przetestowałem to z jądrem Linuksa w wersji 2.6.37 i nowszej i działało dobrze tak, jak powinno.

Powyższe wersje, w tym moja wersja 3.2.0-54-generic (ubuntu 12.04), nie działały poprawnie z mocowaniem obrazów i dysków hfsplus. Potrzebuję więc modułu hfsplus z działającej wersji, takiej jak 2.6.31-14-generic z Ubuntu 9.

Używam tych poleceń w tym przypadku z obrazem HFS + DD. Ale zrobiłem to z innymi dyskami fizycznymi hfsplus i innymi obrazami. Wszystkie działają z jądrem 2.6.37 i niższymi, ale nie z nowszymi wersjami:

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

Muszę dodać tę informację do „dowodu”, że problem występuje po jądrze 2.6.38. Zerknij na to. To jest sterownik NTFS i HFS + od 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

Aby rozwiązać problem, właśnie skopiowałem /lib/modules/2.6.27/kernel/fs/hfsplus.kodo mojego obecnego jądra 3.2.0-54. Ale to nie zadziałało. Jak mogę włączyć działającą część programu hfsplus do mojego obecnego jądra Ubuntu 12.04 w wersji 3.2.0-54? Lub jak naprawić moje jądro, aby działało tak jak w 2.6.37?

Najlepszą wskazówką, jaką widziałem, była ta .

Krayt
źródło

Odpowiedzi:

18

To pytanie jest trochę stare, ale natknąłem się na niego podczas próby zamontowania partycji HFS + w tych samych okolicznościach i znalazłem rozwiązanie. Nie jestem do końca pewien, jak to się ma do wersji jądra, moja to 3.13 (3.13.7-1 x86_64, Debian).

Krótka odpowiedź

Podaj rozmiar partycji oraz jej przesunięcie.

Długa odpowiedź

Najpierw pobierz informacje o partycji z Parted, w bajtach; potrzebujesz numerów Start i Size. Oto przykład sesji Parted (jak można się domyślić, moim obrazem dysku twardego jest /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

Jeśli spróbuję zamontować partycję, podając tylko przesunięcie (start), otrzymuję ten sam błąd, co Ty:

# 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

Nawiasem mówiąc, nie musisz korzystać z losetup, mount robi to za Ciebie automatycznie. Teraz, jeśli dodam rozmiar partycji (sizelimit), działa idealnie:

# 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)
mcy
źródło
4
twoje rozwiązanie zajmuje się komunikatem „nieprawidłowy nagłówek woluminu dodatkowego”, ale błąd „niemożność znalezienia superbloku HFS +” nadal występuje :(
krumpelstiltskin
1
Wciąż się zarówno błędy w dmesg chociaż określony zarówno offset i sizelimit
wkarl
nie jest jasne, jakie powinno być przesunięcie - dla mnie Numberurządzenie wynosi 1, offset=1a offset=0oba kończą się niepowodzeniem
MichaelChirico
16

Jeśli ktoś natknie się na to pytanie, szukając tego samego komunikatu o błędzie, zauważ, że istnieje inna możliwa przyczyna tego błędu.

Chociaż odpowiedź dostarczona przez mcy powinna działać, jeśli partycja jest w rzeczywistości partycją HFS +, począwszy od OSX Yosemite domyślnym typem partycji dla komputerów Mac jest „Core Storage”, który jest używany do obsługi woluminów logicznych. Oznacza to, że tak naprawdę chcesz zamontować wolumin logiczny (przy użyciu systemu plików HFS +) wewnątrz partycji „Core Storage”.

Aby sprawdzić, czy twoja partycja jest typu „Apple Core Storage”, możesz użyć gdisk: AF05to kod dla „Apple Core Storage”, podczas gdy af00jest to kod dla „Apple HFS / HFS +”.

Jeśli Twój dysk korzysta z „Apple Core Storage”, możesz go zainstalować, korzystając z przewodnika zawartego w tej odpowiedzi .

lgpasquale
źródło
1
Dziękuję Ci! To był dokładnie problem, z którym miałem do czynienia. Połączone rozwiązanie działa dobrze.
Michael Ambrose