Cloner ses partitions Linux sur un Mac
Sommaire
Pré requis
Pour suivre cet article, il faut connaître un minimum de principes sur les disques dur, dont:
- La table de partition, principalement sur un Mac.
- La différence entre /dev/DEVICE et son point de montage.
- La table de partition, principalement sur un Mac.
- La différence entre /dev/DEVICE et son point de montage.
Introduction
Pourquoi devrions-nous avoir besoin de cloner ses partitions ou son disque dur sur un Macintosh? Simplement pour pouvoir changer de disque dur en gardant ses données et surtout un système identique et bootable.
Dans mon cas, il s'agit du remplacement du disque dur de mon iBook sous Gentoo Linux. Le disque d'origine (60 Go / 4200 tour /minutes) est remplacé par un 80 Go à 5400 tours / minutes. Je souhaitait principalement le remplacer pour la vitesse, et j'en profite pour ajouter 20 Go.
Dans cet article, j'utilise donc comme disque source le disque de mon iBook. Le disque cible a été monté provisoirement dans un boîtier pour disque dur externe USB 2. Ce genre de boîtiers sont disponibles dans les magasins informatiques (le moins cher en janvier 2006 coûte aux allentours de 20 francs suisses, soit environ 14 Euros). Cette opération est bien sûr possible avec un dique connecté en IDE, SATA, SCSI et, je pense, en FireWire (pour autant que mac-fdisk puisse y accéder et y écrire).
Mise en garde
Dans cet article, nous utilisons des outils en ligne de commande comme mac-fdisk, dd ou autres. Des mauvaises manipulations ou des erreurs de syntaxe avec ses outils peuvent avoir des effet imprévus comme la perte de données stockées sur vos disques durs. Sauvegardez donc toutes vos données avant de suivre cet article. L'auteur ne pourra pas être tenu pour responsable de la perte de données!
Table de partitions
Il existe des solutions pour cloner à l'identique tout un disque dur sur un autre, comme dd. La commande suivante le fait:
dd if=/dev/SOURCE of=/dev/CIBLECependant, comme mon disque cible est plus grand que le disque source, cette méthode n'est pas utilisable. Tout simplement parce qu'il copiera à l'dentique la table de partition et il sera impossible d'en créer de nouvelle. Je perderais donc 20 Go!
L'autre solution consiste à réécrire la table de partition à l'identique. Grâce à l'outil mac-fdisk, ce n'est pas si difficile.
Pour installer cet utilitaire, sous Gentoo, il suffit de l'"emerger". En root dans un terminal, tapez:
emerge sys-fs/mac-fdiskPour cette première opération, vous pouvez démarrer votre Macintosh sous Linux comme d'habitude. Connectez le disque du cible comme bon vous semble.
Pour moi, et dans la suite de cet article, le disque source, celui de l'iBook, est /dev/hda. Le disque cible, celui en USB, est /dev/sda.
Pour réecrire la table de parition, il faut connaître celle du disque source, en tapant la commande suivante (adaptez à votre configuration):
L'option -l ne fait que lire la table de partition, l'affiche, et quitte le programme.
mac-fdisk -rl /dev/hdaL'option -r indique à mac-fdisk qu'il doit accéder au disque en read-only (il ne peut pas y écrire).
L'option -l ne fait que lire la table de partition, l'affiche, et quitte le programme.
Voici le résultat de cette commande sur mon iBook:
/dev/hda
# type name length base ( size ) system
/dev/hda1 Apple_partition_map Apple 63 @ 1 ( 31.5k) Partition map
/dev/hda2 Apple_Bootstrap bootstrap 1600 @ 64 (800.0k) NewWorld bootblock
/dev/hda3 Apple_UNIX_SVR2 boot 204800 @ 1664 (100.0M) Linux native
/dev/hda4 Apple_UNIX_SVR2 swap 2048000 @ 206464 (1000.0M) Linux swap
/dev/hda5 Apple_UNIX_SVR2 root 31457280 @ 2254464 ( 15.0G) Linux native
/dev/hda6 Apple_UNIX_SVR2 home 31457280 @ 33711744 ( 15.0G) Linux native
/dev/hda7 Apple_UNIX_SVR2 Media 31457280 @ 65169024 ( 15.0G) Linux native
/dev/hda8 Apple_HFS MacOSX 20583936 @ 96626304 ( 9.8G) HFS
Block size=512, Number of Blocks=117210240
DeviceType=0x0, DeviceId=0x0
On voit donc que le disque contient 8 partitions. Les deux premières sont particulières. La première n'est utilisée que par l'ordinateur pour y stocker la table de partition. La deuxième contient les informations nécessairesà yaboot pour démarrer la machine.
Je vais donc copier presque à l'identique cette table de partition sur mon disque cible. Les 6 premières partitions seront exactement identiques. Les deux dernières seront redimensionnées.
Voici comment procéder pour écrire la table de partition de votre disque cible. Lancez mac-fdisk sur le disque cible (adaptez à votre configuration):
mac-fdisk /dev/sdaCette commande vous propose quelques choix pour modifier votre table de partition. Tapez "p" et Enter pour être sûr qu'il s'agit de votre disque cible. Une fois certain, tapez "i" et Enter. Ceci va initialiser la table de partition (la remettre é zéro).
Le logiciel a déjà crée une partition dite "Apple_partition_map". Il nous faut encore créer une partition dite "Apple_Bootstrap", indispensable à yaboot. Pour ceci, tapez "b" et Enter.
Voilà les deux premières partitions prêtes. Il nous reste celles qui contiennent les données. Chez moi, la première (/dev/hda3), est /boot. On peut voir que sa taille est de 204800 blocs. Nous allons donc créer une partition de 204800 blocs, en faisant ainsi:
Tapez "c" et Enter. Mac-fdisk vous demande le premier bloc. Nous allons lui demander de commencer au premier bloc disponible, soit le premier de la troisième partition en tapant "3p" et Enter. Il nous demande ensuite la longeur en blocs (ou en Kb, Mb ou Gb, mais ce sont les blocs qui nous intéressent). La longeur est donc de 204800 blocs, on tape "204800" et Enter. Il nous demande enfin le nom de la partition, je tape le même nom que celui d'origine, soit "boot" et Enter. Voici à quoi ressemble la suite d'instruction:
c First block: 3p Lenght (in blocks, kB (k), MB (M) or GB (G)): 204800 Name of partition: bootIl suffit alors de taper "p" et Enter pour admirer notre travail ;-) Il faut répeter l'opération pour toutes les partitions que l'on souhaite "cloner". Pour moi, voici la suite de commandes:
c First block: 4p Lenght (in blocks, kB (k), MB (M) or GB (G)): 2048000 Name of partition: swap c First block: 5p Lenght (in blocks, kB (k), MB (M) or GB (G)): 31457280 Name of partition: root c First block: 6p Lenght (in blocks, kB (k), MB (M) or GB (G)): 31457280 Name of partition: homeEnsuite, pour les deux autres partitions, je les redimensionnes à mon goût. Voic les deux commandes:
c First block: 7p Lenght (in blocks, kB (k), MB (M) or GB (G)): 30 G Name of partition: media c First block: 8p Lenght (in blocks, kB (k), MB (M) or GB (G)): 8p Name of partition: MacOSXVous aurez noté que pour ma dernière partition, j'ai utilisé comme taille "8p". Ceci indique à mac-fdisk que je souhaite utiliser tout l'espace libre disponible pour cette partition.
Une fois ceci effectué, mon nouveau disque dur est correctement partitionné. Nous pouvons donc commencer à copier les données.
Données
Pour un clone le plus fidèle possible des données, le mieux est d'utiliser la copie bloc à bloc quand c'est possible. Pour moi, c'est possible sur toutes les partitions sauf les deux dernières, car elles n'ont plus la même taille.
Pour une copie bloc à bloc, rebootez d'abord votre mac sur le Live CD Gentoo (disponible sur la page de téléchargement de Gentoo).
Les outils nécessaires sont disponibles sur le CD Minimal, donc inutile de télécharger le CD complet ;-)
Bootez donc sur le Live CD et vérifiez que vos disques sont correctement montés avec la commande:
mac-fdisk -rl.
Une fois que c'est bon, nous allons commencer le clone ! Pour ce qui est de la première partition, il ne faut pas y toucher, car certaines informations sont propres au disque dur, comme le nombre et la taille des partitions. Par contre, la deuxième, le bootstrap, peut lui être copié, comme ceci (adaptez à votre configuration):
dd if=/dev/hda2 of=/dev/sda2Voilà le bootstrap copié. Nous allons faire la même chose pour la partition 3, /boot:
dd if=/dev/hda3 of=/dev/sda3Vous remarquerez qu'il est inutile de formatter la partition avant, dd copiant TOUS les blocs, même ceux qui ne contiennent pas de données.
Pour la partition de swap, qui ne contient normalement pas de données une fois l'ordinateur éteint, vous pouvez simplement la formater: (remarquez que vous pouvez également utiliser dd, mais ce sera plus lent).
mkswap /dev/sda4Pour les partitions root et home, j'utilise également dd, ainsi:
dd if=/dev/hda5 of=/dev/sda5
dd if=/dev/hda6 of=/dev/sda6Voilà pour la copie complète. Le disque cible devrait maintenant être ne mesure de démarrer sur le Mac, les autres partitions ne contenant aucune données critiques au boot.
Pour la partition media, je vais simplement effectuer un formattage, un montage et une copie en mode archive, voici comment ça se passe:
Déja, formater la partition sur le disque cible:
mkfs.ext3 /dev/sda7Cette commande formate en ext3, mais vous pouvez aussi bien utiliser un autre système de fichiers...
Ensuite, créer les points de montage:
mkdir /mnt/media_source mkdir /mnt/media_cibleLe montage s'effectue ainsi:
mount /dev/hda7 /mnt/media_source mount /dev/sda7 /mnt/media_cibleEnsuite, un simple cp en mode archive (-a) suffit à copier le plus fidèlement possible le contenu de la partition:
cp -a /mnt/media_source/* /mnt/media_cible/C'est pas plus compliqué ;-)
Pour le clone de la partition Mac OS X, le plus simple est d'utiliser le Disk Utility du disque d'installation de Mac OS X et de créer une image ou une copie. Réferrez-vous à la documentation Apple pour plus de détails.
Le backup avec dd
Il est également possible d'utiliser l'utilitaire dd comme un logiciel de création d'images "stadard" (comme les produits commerciaux Ghost ou TrueImage). Pour créer une image d'une partition dans un fichier, il suffit d'utiliser la commande suivante:
dd if=/dev/PARTITION of=/dossier/backup.bin
Si votre partition devait être restaurée par la suite, il vous suffit donc de taper la commande inverse:
dd if=/dossier/backup.bin of=/dev/PARTITION
Si vous souhaitez ne récupérer que quelques fichiers de l'image, il est possible de la monter presque comme un périphérique de bloc standard grâce à la commande suivante (le point de montage /mnt/backup doit exister, vous pouvez également en choisir un autre):
mount -o loop,ro /dossier/backup.bin /mnt/backup
Vous pourrez ensuite parcourir et récupérer les fichiers souhaités.
Note 1: J'utilise l'option "ro" pour "read-only", je n'ai pas essayé d'effectuer des modifications dans le fichier de backup. Vous pouvez essayer de le faire en risquant de corrompre l'image!
Note 2: Les images crées par dd ne sont pas compressées, et contiennent tous les blocs de la partition sauvegardée. Pour faire simple, cela veut dire que le fichier résultant d'un backup d'une partition aura la même taille que la partition elle-même. Une partition de 40 Go générera donc un fichier de la même taille!
Ressources
Bien évidemment, il existe bien plus de solutions sous Linux que celles utilisées ici pour cloner une partition. Des outils dédiés à la création d'images disques sont disponibles, comme partimage.
Tar peut également s'avérer très puissant pour ce genre d'opérations.
Vous trouverez également ici une procédure adaptable à beaucoup de situations, qui permet d'effectuer un "Gentoo stage 4", pour une réinstallation rapide de votre système.