Problemas na montagem de unidades HFS +

12

Estou com um problema ao montar algumas unidades hfsplus. Eu só preciso deles montados somente leitura. (desabilitar o diário não é uma opção) Pesquisei bastante e descobri que, devido às alterações da versão 2.6.37 para 2.6.38 do kernel, o problema foi iniciado.

Dê uma olhada neste link em bugs.launchpad.net .

Então eu testei com o kernel Linux versão 2.6.37 e inferior e funcionou bem como deveria.

As versões acima, incluindo minha versão 3.2.0-54-genérica (ubuntu 12.04), não funcionaram bem na montagem de imagens e discos hfsplus. Então, eu preciso do módulo hfsplus de uma versão funcional como 2.6.31-14-generic do ubuntu 9.

Eu uso esses comandos neste caso com uma imagem HFS + DD. Mas fiz isso com outras unidades físicas hfsplus e outras imagens. Todos eles funcionam com o kernel 2.6.37 e inferior, mas não com as versões mais recentes:

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

Eu tenho que adicionar essas informações para "provar" que o problema está após o kernel 2.6.38. Veja isso. Esse é um driver NTFS e HFS + da 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

Para corrigir o problema, apenas copiei /lib/modules/2.6.27/kernel/fs/hfsplus.kopara o meu kernel atual 3.2.0-54-genérico. Mas isso não funcionou. Como faço para obter a parte hfsplus de trabalho no meu atual kernel 3.2.0-54-genérico ubuntu 12.04 linux? Ou como consertar meu kernel para funcionar como no 2.6.37?

A melhor dica que vi foi essa .

Krayt
fonte

Respostas:

18

Essa pergunta é um pouco antiga, mas me deparei com ela enquanto tentava montar uma partição HFS + nas mesmas circunstâncias e encontrei a solução. Não tenho muita certeza de como isso está relacionado à versão do kernel, a minha é a 3.13 (3.13.7-1 x86_64, Debian).

Resposta curta

Forneça o tamanho da partição e seu deslocamento.

Resposta longa

Primeiro obtenha as informações da partição de Parted, em bytes; você precisa dos números de início e tamanho. Aqui está um exemplo de sessão Parted (como você pode imaginar, minha imagem do disco rígido é /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 eu tentar montar a partição fornecendo apenas o deslocamento (início), recebo o mesmo erro que você:

# 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 propósito, você não precisa usar losetup, o mount faz isso automaticamente. Agora, se eu adicionar o tamanho da partição (sizelimit), funcionará perfeitamente:

# 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
fonte
4
sua solução cuida da mensagem "cabeçalho de volume secundário inválido" para mim, mas o erro "não é possível encontrar o superbloco HFS +" persiste :(
krumpelstiltskin
11
Ainda recebendo ambos os erros em dmesg mesmo que eu especificado tanto offset e sizelimit
wkarl
não claro o que a compensação deve ser - para mim, o Numbermeu dispositivo é 1, e offset=1e offset=0ambos falham
MichaelChirico
16

Para qualquer pessoa que se depare com essa pergunta enquanto procura a mesma mensagem de erro, observe que há outra causa possível para esse erro.

Embora a resposta fornecida pelo mcy funcione se a partição for realmente uma partição HFS +, a partir do OSX Yosemite, o tipo de partição padrão para um Mac é "Core Storage", usado para lidar com volumes lógicos. Isso significa que o que você realmente deseja montar é um volume lógico (usando o sistema de arquivos HFS +) dentro da partição "Core Storage".

Para verificar se sua partição é do tipo "Apple Core Storage", você pode usar gdisk: AF05é o código para "Apple Core Storage", enquanto af00é o código para "Apple HFS / HFS +".

Se o seu disco usa "Apple Core Storage", você pode usar o guia fornecido nesta resposta para montá-lo.

lgpasquale
fonte
11
Obrigado! Esse era exatamente o problema que eu estava enfrentando. Solução vinculada funciona bem.
Michael Ambrose