Skip to content

Instantly share code, notes, and snippets.

@SpidFightFR
Forked from cjyar/mbr-to-gpt-uefi.md
Last active May 4, 2024 08:59
Show Gist options
  • Save SpidFightFR/e59f8be530b382acf87779c7634ccd9b to your computer and use it in GitHub Desktop.
Save SpidFightFR/e59f8be530b382acf87779c7634ccd9b to your computer and use it in GitHub Desktop.
Convertir table MBR vers une table GPT-BIOS sur linux.

Attention:

Cette manipulation va activement modifier votre table de partition de disque dur, vos données risques d'être perdues.

Moi, SpidFightFR, ne suis pas responsable si jamais vous perdez vos données dans le processus.

Faites cela à vos risques et périls.

Je vous conseille de faire la manip une première fois sur une VM.

Dictionnaire des raccourcis

  • [Enter] = Faire "Touche entrée" sans entrer de valeur.

Etapes de préparation:

Boot la machine sur un live iso

Perso je me base sur mon iso custom de voidlinux, dont je posterai (ou pas) le fichier dans le thread discord.

Cet iso contient gdisk - AKA gpt-fdisk, utilitaire qui nous sera utile par la suite.

Rien ne vous empêche de vous baser sur un iso d'une autre distrib (même ubuntu).

Identifier les partitions

lsblk

Ma table MBR est une installation debian classique:

/dev/sda1 - 9G - Partition root, montée sur / - contient tout le systeme.

/dev/sda5 - 900M - Partition swap (échange RAM) - pas montée (logique) - Ça on touche pas, c'est important.

Monter la partition root puis identifier l'espace consommé/libre

mount /dev/sda1 /mnt; df -h

Là il va falloir prendre note de la taille occupée et de l'espace libre.

Je veux gagner 1G pour la partition boot.

De ce que j'ai vu avec df -h, j'ai utilisé que 2G d'espace sur /dev/sda1.

Là je fais les tests sur une VM, mais vous vous doutez bien qu'avec un disque réel de centaines de gigas, vous serez en mesure de grater plus de place.

Démonter la partition root

umount /mnt/

On va préparer la partition pour le changement de taille

e2fsck -f /dev/sda1

On change la taille de la partition

Bien donc au vu de nos observations, on peut juger que réduire la taille de la partition pour la rendre à 5G de taille est raisonnable pour l'instant. C'est ce que nous allons faire. Mais si le cas change pour vous, alors il faudra prendre en compte cette façon de penser:

taille_occupée < taille_temporaire < taille_partition_moins_taille_partition_boot

Donc pour mon cas: 2G<5G<8G -> on peut donc procéder à la manip.

resize2fs /dev/sda1 5G

Modification table de partitions

Overture de Gdisk

C'est ici qu'on rentre dans le dur. Faites attention.

Une erreur est vite arrivée.

gdisk /dev/sda

Dans gdisk, tant que vous n'avez pas validé la commande w, votre disqu n'est pas touché.

On va à la fois réduire notre partition root puis créer notre partition boot

p Va vous montrer votre table actuelle. pour moi, la partition 1 c'est la partition root - 5 c'est le swap.

NOTEZ BIEN LE SECTEUR DE DÉMARRAGE DE LA PARTITION!!!!!!

d On va supprimer la partition root

1 Mon numéro de partition root

n On va recréer une partition root.

1 Même numéro, normalement,.

2048 On nous demande le secteur d'entrée de la partition. mettez le même secteur que l'ancienne partition qu'on a supprimé.

8G On nous demande le secteur de fin. Comme dit avant, je veux gagner 1G, donc on peut mettre direct la taille réduite de la partition root.

8300 On nous demande ici le Type de partition. 8300, c'est "Linux filesystem". [Enter].

n On crée désormais notre partition boot (ça change à partir d'ici pour efi et BIOS, pour les UEFI, arrêtez vous avant cette ligne et passez à l'autre partie sur EFI en bas du tuto.)

2 Partition n+1 de la root, pour moi 2. [Enter].

[Enter] [Enter] On définis le secteur de démarrage et de fin de la partition sur le vide qu'on vient de créer (1G).

ef02 pour créer une partition de type "BIOS GPT".

On écrit la nouvelle table de partition & on convertit la table MBR vers GPT.

w

Attention, après avoir fait y on ne pourra pas revenir en arrière.

Ré-agrandir la partition root.

resize2fs /dev/sda1

Cette action va aggrandir la partition root sur toute sa taille disponnible (passer de 5G à 8G dans notre cas).

Fin de la manipulation

Re-Monter la partition root

mount -t ext4 /dev/sda1 /mnt

Monter les partitions /dev, /proc, /sys (utile pour la suite)

for i in /dev /dev/pts /proc /sys ; do mount -B $i /mnt/$i ; done

Chroot dans notre partition root

chroot /mnt

Ré-installer grub sur le disque principal.

grub-install /dev/sda; exit

On démonte notre partition root proprement

umount -R /mnt/

-R permet de démonter aussi nos partitions /dev, /proc, /sys.

Reboot pour voir si tout va bien.

Partie EFI

On va reprendre ici à partir de l'étape 1.2.10 (création de la partition boot)

Donc on va presser sur n pour créer la partition efi.

puis on fait [ENTER] [ENTER] [ENTER] pour valider le numéro de la partition ainsi que les secteurs de début et fin (rappel, c'est automatiquement fixé entre le root et le swap)

Enfin pour le type on doit mettre ef00 (EFI System partition)

w Pour Valider.

On va ensuite ré-élargir la parition root pour qu'elle prenne toute sa place

resize2fs /dev/sda1

On monte la partition root

mount /dev/sda1 /mnt

On monte ensuite les partitions système (utile pour le chroot)

for i in /dev /dev/pts /proc /sys ; do mount -B $i /mnt/$i ; done

Par confort on va ensuite chroot dans notre partition root pour retrouver notre système.

chroot /mnt

On a créé la partition EFI (qu'on va référer comme ESP en court). Mais il faut désormais créer son système de fichier (fat32)

mkfs -t vfat -v /dev/sda2 (Vérifiez bien avec votre parition à vous, pour moi c'est sda, pour vous ça peut changer)

On va créer le point de montage de l'ESP, il se situe dans /boot/efi.

mkdir /boot/efi

Ce dernier contiendra les composantes essentielles du système EFI, pour notre carte mère.

On va ensuite prendre note de l'UUID de notre ESP

blkid /dev/sda2 (encore, modifiez si besoin avec votre ESP)

on va prendre la série de chiffre entre guillemets après UUID=

Cette UUID est l'identifiant unique de votre ESP. On va s'en servir pour monter l'ESP dans le fstab.

Edition de /etc/fstab

# cp /etc/fstab /root/fstab.bak (petite backup du fstab, on ne sait jamais)

# vim /etc/fstab

À la suite de ce fichier, nous allons ajouter la ligne concernant notre ESP

UUID="XXXX-YYYY" /boot/efi vfat defaults 0 2

Il faut remplacer XXXX-YYYY par l'UUID de votre ESP.

Ce qu'il faut retenir de cette manip (pour les débutants) c'est qu'ici, nous spécifions que l'ESP est de type fat32 et doit être monté sur /boot/efi.

On va monter l'ESP pour sa finalisation.

mount /boot/efi

On va installer le packet grub-efi pour ajouter le support efi à grub (note: le nom peut changer en fonction de votre distro).

apt install grub-efi

Une fois tout celà fait, on va installer grub (le mettre à jour) sur notre disque, ce qui va écrire les données dans notre ESP.

grub-install --target=x86_64-efi /dev/sda

update-grub

On quitte le chroot

exit jusqu'à revenir sur le live-usb.

On démonte toutes les partitions prorprement.

for i in /dev /dev/pts /proc /sys ; do umount -r /mnt/$i ; done

umount /mnt/boot/efi

umount /mnt

Reboot.

Dans votre bios, désactivez le support LEGACY mode (aussi appelé CSM chez Asus), pour éviter tout conflit.

Et voilà votre PC Boot en EFI !

Normalement si vous êtes sous debian, DPKG va noter grub-pc-bin comme désinstallable, il s'agit du paquet qui permettait l'installation de grub sur BIOS. Vous pouvez le dégager.

# apt autoremove ou # apt remove grub-pc-bin

Si jamais il est écrit "no bootable device" (Notemment chez HP) mettez dans le boot order un mode custom, puis dans le chemin sélectionnez -> EFI -> Votre_distro -> grubx64.efi. ça devrait ressembler à \EFI\votredistro\grubx64.efi chez HP, de mémoire.

Il faut, une fois le pc booté, ré-exécuter grub-install.

grub-install

Resources:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment