====== Convertir un disque système Debian de MBR vers GPT pour BIOS ====== ===== Introduction ===== ==== Cas d'utilisation ==== Sur ordi BIOS (exclusivement), on souhaite convertir le disque MBR contenant le système et des données en GPT : * sans perte de données, * en étant capable de booter, en conservant Grub comme bootloader. ==== Sources ==== * [[https://www.rodsbooks.com/gdisk/booting.html|La référence]], à lire depuis le début ou aller directement à la section "Booting from GPT on BIOS-Based Computers" * [[https://www.rodsbooks.com/gdisk/bios.html|Legacy BIOS Issues with GPT]], ou comment gérer les facéties de certaines cartes-mères * [[https://en.wikipedia.org/wiki/GUID_Partition_Table|GUID Partition Table (GPT)]] expliqué sur Wikipedia * [[https://upload.wikimedia.org/wikipedia/commons/0/07/GUID_Partition_Table_Scheme.svg|un schéma utile à garder sous la main]] * [[https://www.rodsbooks.com/gdisk/advice.html#alignment|Partitioning Advice]], utile si on prévoit de faire évoluer le disque pour booter en UEFI. * [[https://askubuntu.com/questions/944936/grub-wont-boot-after-converting-mbr-partition-table-to-gpt|Pourquoi il est logique qu'un disque système fraîchement converti de MBR vers GPT ne boote pas]] * [[https://forums.archlinux.fr/viewtopic.php?p=155521&sid=d1ba36b4e7cb8712d96867cb667c1c4c#p155521|Mise au point sur la différence en partition bios-grub et partition EFI]] * [[https://blog.getreu.net/projects/legacy-to-uefi-boot/|Switch Debian from legacy to UEFI boot mode]] va plus loin puisqu'on y apprend comment passer d'un boot MBR à un boot UEFI (non traité dans cette fiche). Le tuto explique également comment chrooter le système cible (ce que j'ai évité d'avoir à faire). ===== Marche à suivre ===== - convertir le disque de MBR à GPT - créer une partition pour permettre à Grub de booter à travers le bios sur un disque GPT - réinstaller Grub sur le disque ===== Procédure ===== - Boot depuis un Système live sur support mobile ([[https://mxlinux.org/|Linux MX]]-21.1_ahs_x64) - Convertir la partition du disque système # gdisk /dev/sda // remplacer "sda" par le disque concerné dans votre cas ; lsblk pour y voir plus clair r // pour accéder au sous-menu de réparation f // pour lancer la conversion w // pour enregistrer les résultats sur le disque - Créer la partition de bios-grub((Également appelée "bios boot partition".)) * Il suffit que le disque dispose de 1Mo non alloué. Ce n'est pas mon cas :-( Si vous disposez de cet espace libre, sautez l'étape "rétrécir la partition". - Rétrécir une partition * Le disque étant plein, il faut rétrécir une partition. Je jeté mon dévolu sur une partition //ext4// parfaitement gérée par //Gparted//. Ça simplifie considérablement les choses. - Lancer //Gparted// et utiliser son interface graphique - Pour rétrécir la partition (par la droite) de 1 MiB. //Gparted// se charge du rétrécissement du système de fichier et élimine les risques d'arrondis. - Créer la nouvelle partition dans l'espace libéré, __sans la formater__ * si vous n'avez pas eu besoin de rétrécir une partition, lancer //Gparted// - créer une nouvelle partition de 1 MiB dans l'espace libre - Écrire les modifications sur le disque et quitter //Gparted// - Typer la nouvelle partition en //bios-grub// - Lancer //gdisk// # gdisk /dev/sda // remplacer "sda" par le disque concerné dans votre cas p // pour avoir la liste et les numéros des partitions t // pour changer le type de la partition // le numéro de la partition ef02 // le fameux code correspondant au type bios-grub w // pour écrire les modifications sur le disque - rebooter sur le Système Live puis dans le menu qui se présente : - Basculer vers le chargeur d'amorçage de Grub > Boot Rescue Menus > Grub Menus * Grub cherche les menus grub disponibles et trouve le menu d'amorçage du système sur disque - Press Enter to continue * Grub propose une liste de menus trouvé - sélectionner le menu du disque système (qui sera souvent le seul) * On sélectionne ses choix de chargement habituels et on se connecte - Il reste à réinstaller le Grub - # grub-install /dev/sda // pas de numéro de partition ! * Grub reconnaît la structure GPT du disque et trouve sa partition dédiée (boot-grub) lui permettant d'implanter le composant nécessaire à un boot BIOS sur le disque système GPT - redémarrer le système pour s'assurer que tout fonctionne comme souhaité ===== Caractéristiques simplificatrices ===== La procédure employée bénéficie de plusieurs caractéristiques de la situation traitée : * on ne se préoccupe pas d'UEFI : on veut simplement booter sur un disque GPT depuis le BIOS * le système live utilisé est parfaitement pourvu en utilitaires de gestion de disque dans des versions traitant correctement la structure GPT, appliquant les règles d'alignement actuelles((1 MiB, soit 2048 secteurs de 512 octets ou enocre 512 blocs de 4048 octets, soit 4 KiB.)) et propose un menu permettant de booter sur un système non bootable * en travaillant sur un partition ext4, avec un version récente de Gparted, le rétrécissement et la création de partition sont aisées * le système traité n'utilise pas LVM (moins de pression de compatibilité et de risques de bugs sur les utilitaires)((même si lvreduce traite très bien le rétrécissement simultané d'un volume et du système de fichiers ext4 qu'il contient)) ==== Cela se traduit par ==== * Une conversion de la structure MBR en GPT sans risque et en une seulement commande gdisk * Pas de calculs d’apothicaire ni de sueurs froides lors du rétrécissement de la partition * Pas besoin de chrooter le système du disque pour réinstaller Grub ===== S'il faut quand même chrooter ===== En tentant d'appliquer cette procédure sur un autre ordi, je me suis trouvée dans l'obligation de chrooter le système principal que je voulais manipuler depuis le Système live. Sources : * [[https://debian-facile.org/doc:systeme:chroot|chroot]] (fr) (debian-facile.org) * [[https://wiki.debian.org/fr/Chroot|Chroot]] (fr) (debian.org), automatisation partielle et compléments * [[https://www.debian-fr.xyz/viewtopic.php?t=1920|CHROOT > GRUB : "WARNING: Device /dev/sda not initialized in udev database..." ]] Je me limite à indiquer les commandes, les explications sont dans les sources. En tant que superutilisatrice, depuis le Système live((On un système de secours présent sur la machine.)) : lsblk --fs // histoire de chrooter le bon système mkdir /mnt/plouf mount /dev/ /mnt/plouf mount --bind /dev/ /mnt/plouf/dev mount --bind /sys/ /mnt/plouf/sys mount -t proc /proc /mnt/plouf/proc mount --bind /run /mnt/plouf/run chroot /mnt/plouf /bin/bash mount -a Pour sortir : //exit//