Problemi con il montaggio di unità HFS +


12

Ho un problema con il montaggio di alcune unità hfsplus. Ho solo bisogno che vengano montati di sola lettura. (disabilitare il journal non è un'opzione) Ho fatto molte ricerche e ho scoperto che a causa di cambiamenti dalla versione 2.6.37 del kernel alla 2.6.38 il problema è iniziato.

Dai un'occhiata a questo link su bugs.launchpad.net .

Quindi l'ho provato con il kernel Linux versione 2.6.37 e precedenti e ha funzionato bene come dovrebbe.

Le versioni precedenti, inclusa la mia versione 3.2.0-54-generica (ubuntu 12.04), non hanno funzionato bene con il montaggio di immagini e dischi hfsplus. Quindi ho bisogno del modulo hfsplus da una versione funzionante come 2.6.31-14-generico di Ubuntu 9.

Uso questi comandi in questo caso con un'immagine HFS + DD. Ma l'ho fatto con altre unità fisiche hfsplus e altre immagini. Funzionano tutti con il kernel 2.6.37 e precedenti ma non con le versioni più recenti:

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

Devo aggiungere queste informazioni a "prova" che il problema è dopo il kernel 2.6.38. Dai un'occhiata a questo. Questo è un driver NTFS e HFS + di 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

Per risolvere il problema ho appena copiato il /lib/modules/2.6.27/kernel/fs/hfsplus.komio attuale kernel 3.2.0-54-generico. Ma quello non ha funzionato. Come posso ottenere la parte hfsplus funzionante nel mio attuale kernel Ubuntu 12.04 3.2.0-54-generico? O come riparare il mio kernel in modo che funzioni esattamente come in 2.6.37?

Il miglior suggerimento che ho visto è stato questo .

Risposte:


18

Questa domanda è un po 'vecchia, ma mi sono imbattuto durante il tentativo di montare una partizione HFS + nelle stesse circostanze e ho trovato la soluzione. Non sono sicuro di come sia correlato alla versione del kernel, il mio è 3.13 (3.13.7-1 x86_64, Debian).

Risposta breve

Fornire la dimensione della partizione e il suo offset.

Risposta lunga

Prima ottenere le informazioni sulla partizione da Parted, in byte; hai bisogno dei numeri Start e Size. Ecco un esempio di Parted session (come puoi immaginare, la mia immagine del disco rigido è /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

Se provo a montare la partizione fornendo solo l'offset (inizio), ottengo lo stesso errore di te:

# 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

A proposito, non è necessario utilizzare losetup, mount lo fa automaticamente per te. Ora se aggiungo le dimensioni della partizione (sizelimit), funziona perfettamente:

# 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
la mia soluzione si occupa del messaggio "intestazione di volume secondario non valido" per me, ma l'errore "impossibile trovare HFS + superblock" persiste :(
krumpelstiltskin

1
Ottengo ancora entrambi gli errori in dmesg anche se ho specificato offset e sizelimit
wkarl,

non è chiaro quale dovrebbe essere l'offset - per me, il Numbermio dispositivo è 1, offset=1ed offset=0entrambi falliscono
MichaelChirico

16

Per chiunque altro si imbattesse in questa domanda mentre cercava lo stesso messaggio di errore, si noti che esiste un'altra possibile causa per questo errore.

Mentre la risposta fornita da mcy dovrebbe funzionare se la partizione è in realtà una partizione HFS +, a partire da OSX Yosemite il tipo di partizione predefinito per un Mac è "Core Storage", che viene utilizzato per gestire i volumi logici. Ciò significa che ciò che si desidera effettivamente montare è un volume logico (utilizzando HFS + filesytem) all'interno della partizione "Core Storage".

Per vedere se la tua partizione è di tipo "Apple Core Storage" puoi usare gdisk: AF05è il codice per "Apple Core Storage", mentre af00è il codice per "Apple HFS / HFS +".

Se il tuo disco utilizza "Apple Core Storage", puoi utilizzare la guida fornita in questa risposta per montarlo.


1
Grazie! Questo era esattamente il problema che stavo affrontando. La soluzione collegata funziona bene.
Michael Ambrose,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.