Montando partição HFS + no Arch Linux

22

Estou tendo alguns problemas com a montagem de uma partição hfs + no Arch Linux.

Quando executo sudo mount -t hfsplus /dev/sda2 /mnt/mac, recebo este erro:

mount: wrong fs type, bad option, bad superblock on /dev/sda2,
   missing codepage or helper program, or other error

   In some cases useful info is found in syslog - try
   dmesg | tail or so.

A corrida dmesg | tailoferece:

[ 6645.183965] cfg80211: Calling CRDA to update world regulatory domain
[ 6648.331525] cfg80211: Calling CRDA to update world regulatory domain
[ 6651.479107] cfg80211: Calling CRDA to update world regulatory domain
[ 6654.626663] cfg80211: Calling CRDA to update world regulatory domain
[ 6657.774207] cfg80211: Calling CRDA to update world regulatory domain
[ 6660.889864] cfg80211: Calling CRDA to update world regulatory domain
[ 6664.007521] cfg80211: Exceeded CRDA call max attempts. Not calling CRDA
[ 6857.870580] perf interrupt took too long (2503 > 2495), lowering kernel.perf_event_max_sample_rate to 50100
[11199.621246] hfsplus: invalid secondary volume header
[11199.621251] hfsplus: unable to find HFS+ superblock

Existe uma maneira de montar esta partição?

EDIT :

Usando sudo mount -t hfsplus -o ro,loop,offset=409640,sizelimit=879631488 /dev/sda2 /mnt/macse livrar de hfsplus: invalid secondary volume headeremdmesg | tail

ZuluDeltaNiner
fonte

Respostas:

36

É provável que o volume HFS não esteja montando porque a partição HFS está agrupada em um volume CoreStorage (o padrão desde o OS X 10.10). Você pode verificar se esse é o caso da saída de fdisk -l: saída fdisk

O HFS + usa dois cabeçalhos de volume, um 1024 no dispositivo e o 1024 secundário no final do dispositivo . De acordo com as especificações, ao montar uma partição, espera-se que o cabeçalho secundário seja exatamente 1024 bytes a partir do final da partição, mas com o CoreStorage agrupando o volume HFS, esse não é mais o caso; Você pode passar -o sizelimit=Npara mountespecificar manualmente o tamanho do volume HFS e corrigir isso, mas como obter o valor mágico N?

O testdiskutilitário pode procurar partições, indicando onde a partição HFS realmente termina. Cuidado: selecionar as opções erradas no testdisk pode danificar sua tabela de partições!

  1. Inicie o TestDisk com testdisk /dev/sdXe, em seguida, OKselecione a unidade
  2. Selecione Intelpara EFI GPTunidades formatadas em MBR ou GPT
  3. Pressione Analysee depoisQuick Search
  4. Após alguns instantes, deve-se imprimir as partições encontradas: resultados do testdisk

    A partição indicada parece muito próxima (mas ligeiramente menor) do que o tamanho real da partição de 623463232 setores relatados fdisk -lanteriormente.

    Como a saída TestDisk usa setores, precisamos multiplicá-la pelo tamanho do setor lógico da unidade (geralmente 512 ou 4096 bytes) para obter o tamanho do volume HFS em bytes. Esse é o valor Nque usaremos -o sizelimit=Nao montar o volume HFS.

    Se você não souber o tamanho do setor lógico da sua unidade, verifique a saída do segundo primeiro número relatado por fdisk -lna linha mostrada abaixo:localizando o tamanho do setor lógico do seu disco

  5. Pressione qvárias vezes para sair do programa

  6. Monte o disco: mount /dev/sdXn -t hfsplus -o ro,sizelimit=N
Stewart Adam
fonte
3
Do usuário edmonde : Esta receita funcionou muito bem para mim, mas tive que ajustá-la usando o tamanho do setor lógico (o primeiro de dois números, no meu caso, 512 versus 4096), em oposição ao tamanho do setor físico para calcular o tamanho total do volume. Não sei por que, mas funcionou muito bem.
fixer1234
Isso corrigiu meu problema. Outros recursos sugeriu o uso de um offsetparâmetro, que não funcionou quando combinado com este, mas usando única sizelimit definida como o número de bytes (bytes setores *) funcionou como um encanto, mesmo para as partições não-CoreStorage
cdeszaq
Isso não funciona para mim. Eu recebo mount failed: Unknown error -1e nada dmesg. hfsplusestá definitivamente carregado.
Dan
+1 corrigido usando o tamanho do setor lógico
Jake
1
Esta solução estava funcionando bem para mim até depois de uma atualização no OSX que parou de funcionar. Alguém mais teve esse problema? Algum conselho?
Vik
2

Outra opção é se livrar do CoreStorage se uma máquina OS X estiver disponível para você. Isso também eliminaria a descriptografia se você a estivesse usando e teria que esperar até que a descriptografia fosse concluída (conectada à energia e inicializada no OS X, até mesmo recuperação).

Você precisaria inicializar em um disco que não é o que você pensa, de preferência recuperação na Internet (se disponível, command-option-r na reinicialização). Abra o terminal e faça um:

diskutil cs list

A saída deve mostrar seus volumes CoreStorage e todos, um deles é o status Revertible. Se indicar Sim, você estará em boa forma para prosseguir. Em seguida, você executaria:

diskutil cs revert /dev/ diskXsY

(Onde X é o número do disco e Y é o número da partição).

Você pode verificar seu status posteriormente com o mesmo comando "diskutil cs list". Se não foi criptografado, já deve estar de volta a um layout de partição GPT padrão e você pode tentar montá-lo novamente no Arch. Ele ainda deve ser registrado no diário, o que o manterá somente leitura, se você quiser alternar para fazê-lo no Disk Utility.

Se ele foi criptografado, o processo levará um tempo, mas "diskutil cs list" mostrará o progresso como uma porcentagem.

Não tive problemas ao montar unidades e partições não CoreStorage HFS + no Arch. Acabei movendo os dados, reparticionando como ext4 e movendo os dados de volta para eles.

Cory T
fonte