Montage d'une partition HFS + sur Arch Linux


22

J'ai des problèmes avec le montage d'une partition hfs + sur Arch Linux.

Lorsque je cours, sudo mount -t hfsplus /dev/sda2 /mnt/macj'obtiens cette erreur:

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.

La course à pied dmesg | taildonne:

[ 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-t-il un moyen de monter cette partition?

MODIFIER :

Utilisation de sudo mount -t hfsplus -o ro,loop,offset=409640,sizelimit=879631488 /dev/sda2 /mnt/macse débarrasser de hfsplus: invalid secondary volume headerdansdmesg | tail

Réponses:


36

Il est probable que le volume HFS ne monte pas car la partition HFS est enveloppée dans un volume CoreStorage (la valeur par défaut depuis OS X 10.10). Vous pouvez vérifier si c'est le cas avec la sortie de fdisk -l: sortie fdisk

HFS + utilise deux en-têtes de volume, un 1024 dans le périphérique et le 1024 secondaire à la fin du périphérique . Selon la spécification, lors du montage d'une partition, l'en-tête secondaire devrait être exactement à 1024 octets de la fin de la partition, mais avec CoreStorage encapsulant le volume HFS qui n'est plus le cas, il abandonne. Vous pouvez passer -o sizelimit=Nà mountpour spécifier manuellement la taille du volume HFS et résoudre ce problème, mais comment obtenir la valeur magique pour N?

L' testdiskutilitaire peut rechercher des partitions, indiquant où se termine réellement la partition HFS. Méfiez-vous - la sélection des mauvaises options dans testdisk peut endommager votre table de partition!

  1. Lancez TestDisk avec testdisk /dev/sdX, puis OKsélectionnez le lecteur
  2. Sélectionnez Intelpour MBR ou EFI GPTpour les disques au format GPT
  3. Appuyez sur AnalysepuisQuick Search
  4. Après quelques instants, il devrait imprimer les partitions trouvées: résultats de testdisk

    La partition indiquée semble terriblement proche (mais légèrement plus petite) que la taille réelle de la partition des secteurs 623463232 rapportée fdisk -lprécédemment.

    Étant donné que la sortie TestDisk utilise des secteurs, nous devons le multiplier par la taille du secteur logique du lecteur (généralement 512 ou 4096 octets) pour obtenir la taille du volume HFS en octets. C'est la valeur que Nnous utiliserons pour le -o sizelimit=Nmontage du volume HFS.

    Si vous ne connaissez pas la taille du secteur logique de votre lecteur, vérifiez la sortie du deuxième premier numéro signalé par fdisk -lsur la ligne ci-dessous:trouver la taille de secteur logique de votre disque

  5. Appuyez qplusieurs fois pour quitter le programme

  6. Montez le disque: mount /dev/sdXn -t hfsplus -o ro,sizelimit=N

3
De l'utilisateur edmonde : Cette recette a très bien fonctionné pour moi, mais j'ai dû l'ajuster en utilisant la taille du secteur logique (le premier des deux nombres, dans mon cas 512 contre 4096) par opposition à la taille du secteur physique pour calculer la taille totale du volume. Je ne sais pas pourquoi mais cela a très bien fonctionné.
fixer1234

Cela a résolu mon problème. D'autres ressources ont suggéré d'utiliser un offsetparamètre, qui ne fonctionnait pas lorsqu'il était combiné avec cela, mais l'utilisation uniquement sizelimit définie sur le nombre d'octets (octets * secteurs) fonctionnait comme un charme, même pour les partitions non CoreStorage
cdeszaq

Ça ne marche pas pour moi. Je reçois mount failed: Unknown error -1et rien dedans dmesg. hfsplusest définitivement chargé.
Dan

+1 corrigé en utilisant la taille de secteur logique
Jake

1
Cette solution fonctionnait bien pour moi jusqu'à ce qu'une mise à jour sur OSX arrête ce fonctionnement. Quelqu'un d'autre a eu ce problème? Aucun conseil?
Vik

2

Une autre option consiste à se débarrasser de CoreStorage si une machine OS X est à votre disposition. Cela vous débarrasserait également du déchiffrement si vous l'utilisez et vous devriez attendre que le déchiffrement soit terminé (branché sur l'alimentation et démarré sous OS X, même la récupération).

Vous devrez démarrer sur un disque qui n'est pas celui en tête, de préférence la récupération Internet (si disponible, commande-option-r au redémarrage). Ouvrez le terminal et faites:

diskutil cs list

La sortie doit montrer vos volumes CoreStorage et tout, l'un d'eux est son état réversible. S'il indique Oui, vous serez en bonne forme pour continuer. Ensuite, vous exécutez:

diskutil cs revert /dev/ diskXsY

(Où X est le numéro de disque et Y est le numéro de partition).

Vous pouvez ensuite vérifier son état avec la même commande "diskutil cs list". S'il n'a pas été chiffré, il devrait déjà être de retour à une disposition de partition GPT standard et vous pouvez essayer de le monter à nouveau dans Arch. Il doit toujours être journalisé, ce qui le gardera en lecture seule, si vous souhaitez activer / désactiver cette fonction dans l'Utilitaire de disque.

S'il a été chiffré, le processus prendra un certain temps, mais la «liste diskutil cs» vous montrera la progression en pourcentage.

Je n'ai eu aucun problème à monter moi-même des disques et des partitions non CoreStorage HFS + sur Arch. J'ai finalement déplacé les données, réparti en ext4 et déplacé les données vers elles.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.