Montage d'une partition HFS+
Linux est parfaitement capable de gérer, en lecture et en écriture, une partition HFS+ (MacOS). Le montage d'une telle partition nécessite diverses opérations sans grande complexité, sauf dans quelques cas pathologiques.
Montage de la partition
Module noyau nécessaire
Le module noyau se nomme hfsplus. Lors de la configuration d'un noyau, il est accessible par
File Systems -->
Miscellaneous filesystems -->
Apple Macintosh file system support
Apple Extended HFS file system support
Le premier module (Apple Macintosh file system support) correspond aux systèmes de fichiers HFS, qui ne sont pratiquement plus utilisés. Ce module permet de lire, mais pas d'écrire, sur un tel système de fichiers. Le second module (Apple Extended HFS file system support) est celui qui nous intéresse pour HFS+.
Le module peut être inclus dans le noyau ou compilé en tant que module chargeable.
Commande de montage
Dans le cas qui nous intéresse, nous avons fait une copie du disque dur sous la forme d'un fichier (format brut, copie réalisée à l'aide de dd ou similaire; voir par exemple l'article sur rEFIND). Il convient donc de passer par losetup pour transformer virtuellement ce fichier en un descripteur de périphérique (/dev/loopX).
En théorie, mount accepte les principaux paramètres de losetup, et tout peut être exécuté en une seule commande. Dans la pratique, nous avons souvent rencontré des situations où mount ne prenait pas correctement en compte certains paramètres de losetup. Il suffit alors de décomposer la commande en deux temps, d'abord losetup, puis mount.
Nous commençons par déterminer l'organisation du support et des partitions, à l'aide de fdisk, parted ou, ici, mmls :
$ mmls disque-128G.dd
GUID Partition Table (EFI)
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Description
00: Meta 0000000000 0000000000 0000000001 Safety Table
01: ----- 0000000000 0000000039 0000000040 Unallocated
02: Meta 0000000001 0000000001 0000000001 GPT Header
03: Meta 0000000002 0000000033 0000000032 Partition Table
04: 00 0000000040 0000409639 0000409600 EFI System Partition
05: 01 0000409640 0235708599 0235298960 Customer
06: 02 0235708600 0236978135 0001269536 Recovery HD
07: ----- 0236978136 0236978175 0000000040 Unallocated
La partition qui nous intéresse porte ici le nom Customer. Elle commence au bloc 409640 et se termine au bloc 235708599, pour une taille totale de 235298960 blocs. La commande normale de montage est donc
$ mount -o ro,loop,offset=$((512*409640)), sizelimit=$((512*235298960)) disque-128G.dd point-de-montage
Les options transmises à mount sont :
- ro : montage en lecture uniquement
- loop : passer par losetup (montage d'un système de fichier présent dans un fichier)
- offset : déplacement (en octets) pour atteindre le début de la partition
- sizelimit : taille (en octets) de la partition. Ce paramètre est indispensable pour HFS+, du fait de la présence d'un second superbloc en fin de partition
Si tout se passe correctement, la partition demandée est montée et peut être examinée. En cas de difficulté, la première chose à faire est de séparer losetup et mount :
$ losetup --read-only -f --offset=$((512*409640)) --sizelimit=$((512*235298960)) disque-128G.dd
$ losetup -a
/dev/loop0: [64780]:145096713 (disque-128G.dd), offset 209735680, sizelimit 120473067520
$ mount -o ro /dev/loop0 point-de-montage
Dans la plupart des cas, la partition est montée correctement.
- Précédent
- Suivant >>