Problemas com a montagem de unidades HFS +

7

Eu tenho um problema ao montar algumas unidades hfsplus. Eu só preciso deles montados somente para leitura. (desabilitar o journal não é uma opção) Eu fiz muita pesquisa e descobri que devido a mudanças da versão do kernel 2.6.37 para 2.6.38 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 menor e funcionou bem como deveria.

As versões acima, incluindo a minha versão, que é 3.2.0-54-genérica (Ubuntu 12.04), não funcionam bem com a montagem de imagens e discos hfsplus. Então eu preciso do módulo hfsplus de uma versão de trabalho como o 2.6.31-14-genérico do ubuntu 9.

Eu uso esses comandos neste caso com uma imagem HFS + DD. Mas eu fiz isso com outras unidades físicas do hfsplus e outras imagens. Todos eles trabalham com o kernel 2.6.37 e inferiores, mas não com 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 esta informação para "provar" que o problema é depois do kernel 2.6.38. Veja isso. Esse é um driver NTFS und 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, acabei de copiar /lib/modules/2.6.27/kernel/fs/hfsplus.ko para meu kernel atual 3.2.0-54-generic. Mas isso não funcionou. Como faço para que a parte do hfsplus funcione no meu kernel atual do Ubuntu 3.2.0-54-genérico 12.04 linux? Ou como consertar meu kernel para funcionar como em 2.6.37?

A melhor dica que eu vi foi este .

    
por Krayt 11.10.2013 / 20:03

2 respostas

14

Esta questão é um pouco antiga, mas eu a deparei ao tentar montar uma partição HFS + nas mesmas circunstâncias e encontrei a solução. Não tenho certeza de como isso está relacionado à versão do kernel, o meu é 3.13 (3.13.7-1 x86_64, Debian).

Resposta curta

Forneça o tamanho da partição, bem como seu deslocamento.

Resposta longa

Primeiro, obtenha as informações da partição do Parted, em bytes; você precisa dos números Start e Size. Aqui está um exemplo de sessão Parted (como você pode imaginar, minha imagem no 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 (start), 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 o losetup, o mount faz isso para você automaticamente. Agora, se eu adicionar o tamanho da partição (sizelimit), ele 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)
    
por 21.04.2014 / 18:49
10

Para qualquer um que se deparar com esta questão enquanto procura a mesma mensagem de erro, note que existe outra causa possível para este erro.

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

Para ver 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 em esta resposta para montá-lo.

    
por 03.08.2016 / 16:53