Convertir une table de partition GPT en MBR
Rédigé par Alexandre le 2014-10-01
A jouer les apprentis sorcier, parfois, on fait des bêtises... En effet, il y a quelques mois maintenant, j'ai préparé un modèle de machine virtuelle sous Debian Wheezy pour le boulot. Souhaitant bénéficier d'une grande souplesse, je mets en place une table de partition GPT sur laquelle je crée une partition de swap et une racine.
Plus tard, après avoir déployé moult machines virtuelles, un collègue redimmensionne la partition racine d'un serveur pendant mes vacances ; c'est le drame. Impossible de redémarrer le serveur, grub est cassé ! Mon collègue trouve une parade en ajoutant un drapeau sur la partition de swap, ce qui la rend maintenant indisponible.
A mon retour de vacances, je me penche sur une vraie solution : installer grub sur une table de partition GPT. La gueule enfarinée, j'essaie sur une autre machine, dans le même cas, de redimmensionner et de réinstaller grub. Evidemment, ça ne fonctionne pas. Quelques pages de documentation plus tard, je finis par me dire que le plus simple est peut-être de changer le format de la table de partition.
Pour procéder à la conversion directement depuis le système du serveur, j'utilise SuperGrubDisk pour démarrer sur mon système.
Une fois sur le système, il nous faut un outil de gestion des partitions qui gère les tables GPT, gdisk
:
sudo apt-get install gdisk
Maintenant, utiliser gdisk
pour convertir la table de partition GPT en MBR :
sudo gdisk /dev/sda
Les commandes à passer sont en gras :
GPT fdisk (gdisk) version 0.8.5
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sda: 10485760 sectors, 5.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F75FA640-062F-45C1-B0B3-5253150951C0
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 10485726
Partitions will be aligned on 2048-sector boundaries
Total free space is 223165 sectors (109.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 499711 243.0 MiB 8200
2 499712 10264575 4.7 GiB 0700
Command (? for help): r
Recovery/transformation command (? for help): g
MBR command (? for help): w
Converted 2 partitions. Finalize and exit? (Y/N): <strong>y</strong>
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
Avant de redémarrer, il est préférable de réinstaller grub (valider simplement les champs, ne rien modifier) :
sudo dpkg-reconfigure grub-pc && reboot
Une fois redémarrée, il faut impérativement changer le type du système de fichiers de la partition racine :
sudo fdisk /dev/sda
Les commandes sont en gras :
Commande (m pour l'aide): p
Disque /dev/sda : 5368 Mo, 5368709120 octets
166 têtes, 62 secteurs/piste, 1018 cylindres, total 10485760 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00000000
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 2048 499711 248832 82 partition d'échange Linux / Solaris
/dev/sda2 499712 10264575 4882432 7 HPFS/NTFS/exFAT
Commande (m pour l'aide): t
Numéro de partition (1-4): 2
Code Hexa (taper L pour lister les codes): 83
Type système de partition modifié de 2 à 83 (Linux)
Commande (m pour l'aide): w
La table de partitions a été altérée.
Appel de ioctl() pour relire la table de partitions.
Attention : la table de partitions n'a pas pu être relue : erreur 16 : Périphérique ou ressource occupé.
Le noyau continue à utiliser l'ancienne table. La nouvelle sera utilisée
lors du prochain démarrage ou après avoir exécuté partprobe(8) ou kpartx(8).
Synchronisation des disques.
Dans certains cas, la partition de swap ne suit pas, il faut donc la recréer et changer son UUID dans /etc/fstab
. Je ne détaille pas cette partie qui peut être réalisée via SysRescueCD et/ou gparted
.
Moralité de l'histoire, il vaut mieux avoir un disque système en MBR et, au besoin, des disques additionnels en GPT.