Recherche de site Web

Comment manipuler les tables de partition gpt avec gdisk et sgdisk sous Linux


GPT est l’acronyme de GUID Partition Table : c’est le nouveau standard pour les périphériques de stockage : il fait partie des spécifications du firmware UEFI et est le successeur du MBR, dont il surmonte plusieurs limitations. MBR, par exemple, autorise un maximum de 4 partitions primaires (GPT en prend en charge jusqu’à 128), et ne fonctionne qu’avec des disques d’une taille maximale de 2 To. Sur Linux, il existe plusieurs outils que nous pouvons utiliser pour créer et manipuler des tables de partition GPT. Dans ce tutoriel, nous nous concentrons sur l’utilisation des utilitaires gdisk et sgdisk.

Dans ce tutoriel, vous allez apprendre :

  • Comment lister la table de partition d’un périphérique avec gdisk
  • Comment créer une table de partition GPT
  • Comment créer une nouvelle partition
  • Comment supprimer une partition
  • Comment redimensionner une partition
  • Comment travailler de manière non interactive avec sgdisk

Configuration logicielle requise et conventions utilisées

Gdisk contre sgdisk

Dans ce tutoriel, nous allons utiliser deux outils différents : gdisk et sgdisk. Ils nous permettent d’effectuer les mêmes opérations, avec une grande différence : le premier fonctionne de manière interactive, fournit des invites de confirmation et une interface basée sur des questions. Les modifications que nous effectuons avec lui ne sont écrites sur le disque que lorsque nous utilisons la commande dédiée, afin de minimiser les erreurs.

Ce dernier, en revanche, fonctionne de manière non interactive : il est destiné à être utilisé à l’intérieur des scripts shell, ou plus généralement directement à partir de la ligne de commande. Les commandes Sgdisk sont appliquées immédiatement, elles doivent donc être utilisées avec beaucoup de prudence. Dans la première partie de ce tutoriel, nous nous concentrons sur la façon d’effectuer les opérations de base avec gdisk, dans la seconde, nous voyons comment effectuer les mêmes opérations avec sgdisk.

Liste de la table de partition d’un périphérique

Pour commencer à utiliser gdisk, tout ce que nous avons à faire est d’invoquer le programme en passant le chemin de l’appareil que nous voulons manipuler en argument. Pour lister la table de partition d’un périphérique, nous appelons le programme avec l’option -l :

sudo gdisk -l /dev/sdc

Voici ce que la commande ci-dessus renvoie sur un appareil qui n’est pas du tout initialisé :

GPT fdisk (gdisk) version 1.0.8

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries in memory.
Disk /dev/sdc: 15122432 sectors, 7.2 GiB
Model: SD/MMC/MS PRO
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 32A31D98-1500-4FE5-836A-69F289D048A7
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 15122398
Partitions will be aligned on 2048-sector boundaries
Total free space is 15122365 sectors (7.2 GiB)

Création d’une nouvelle table de partition GPT

L’appareil avec lequel nous travaillons, comme nous l’avons vu, est complètement vide ; Il ne contient aucune table de partition. Pour créer une nouvelle table de partition GPT sur celle-ci, nous la passons en argument lors de l’appel de gdisk, sans fournir d’options :

sudo gdisk /dev/sdc

Dès que nous lançons la commande ci-dessus, nous serons invités à entrer une commande :

Command (? for help):

Pour créer une nouvelle table de partition GPT, nous devons utiliser la commande o (nous tapons o et appuyons sur Entrée). Nous serons avertis que l’action détruira toutes les partitions existantes sur le disque, et nous serons invités à confirmer notre choix :

Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y

Comme nous l’avons déjà dit, lors de l’utilisation de gdisk, les modifications que nous apportons au disque ne sont pas immédiatement écrites : il s’agit d’une mesure de sécurité. Pour les rendre efficaces, nous devons utiliser la commande w :

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.

Nous serons invités à fournir une dernière confirmation. Une fois que nous l’aurons fourni, les modifications entreront en vigueur et (espérons-le) nous serons informés du succès de l’opération.

Création d’une nouvelle partition

Nous avons initialisé notre appareil, maintenant nous pouvons commencer à créer des partitions ; Voyons comment faire. Pour créer une nouvelle partition, nous devons utiliser la commande n. Nous serons invités à répondre à une série de questions. Comme réponse pour chacun d’entre eux, nous pouvons fournir une valeur ou simplement appuyer sur Entrée pour accepter celle par défaut, display
entre parenthèses.

La première chose que nous devons décider est le numéro qui doit être utilisé pour la partition, dans la plage de 1 à 128. Ici, nous voulons généralement utiliser la valeur par défaut, qui est progressive.

Comme deuxième chose, nous devons décider à quel secteur du disque la partition doit commencer. Pour la première partition, le secteur de départ par défaut est 2048. La valeur par défaut est celle que nous voulons utiliser pour ce paramètre dans la grande majorité des cas.

La prochaine chose que nous devons décider est de savoir dans quel secteur la partition doit se terminer : c’est, comme vous pouvez l’imaginer, qui détermine la taille de la partition. Au lieu de spécifier un secteur, nous pouvons fournir directement la taille de la partition, avec un entier suivi de l’un des suffixes disponibles : K, M, G, T, P. Pour créer une partition de 500 Mo, par exemple, nous devons entrer +500M comme valeur.

Enfin, nous serons invités à décider quel code HEX utiliser pour la partition. Ici, la valeur par défaut est 8300 (système de fichiers Linux). Pour obtenir la liste de tous les codes disponibles, il suffit d’entrer la commande L, puis d’appuyer à nouveau sur <entrée> :

0700 Microsoft basic data                0701 Microsoft Storage Replica
0702 ArcaOS Type 1                       0c01 Microsoft reserved
2700 Windows RE                          3000 ONIE boot
3001 ONIE config                         3900 Plan 9
4100 PowerPC PReP boot                   4200 Windows LDM data
4201 Windows LDM metadata                4202 Windows Storage Spaces
7501 IBM GPFS                            7f00 ChromeOS kernel
7f01 ChromeOS root                       7f02 ChromeOS reserved
8200 Linux swap                          8300 Linux filesystem
8301 Linux reserved                      8302 Linux /home
8303 Linux x86 root (/)                  8304 Linux x86-64 root (/)
8305 Linux ARM64 root (/)                8306 Linux /srv
8307 Linux ARM32 root (/)                8308 Linux dm-crypt
8309 Linux LUKS                          830a Linux IA-64 root (/)
830b Linux x86 root verity               830c Linux x86-64 root verity
830d Linux ARM32 root verity             830e Linux ARM64 root verity
830f Linux IA-64 root verity             8310 Linux /var
8311 Linux /var/tmp                      8312 Linux user's home
8313 Linux x86 /usr                      8314 Linux x86-64 /usr
8315 Linux ARM32 /usr                    8316 Linux ARM64 /usr
8317 Linux IA-64 /usr                    8318 Linux x86 /usr verity
Press the <Enter> key to see more codes, q to quit:

Les codes ne s’affichent pas tous en même temps. Pour faire défiler la liste, nous devons continuer à appuyer sur <entrée>. Dans notre exemple, nous venons de confirmer le code HEX par défaut pour la partition :

Command (? for help): n
Partition number (1-128, default 1):
First sector (34-15122398, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-15122398, default = 15122398) or {+-}size{KMGTP}:+500M
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

À ce stade, les modifications n’existent qu’en mémoire ; Nous entrons w pour les écrire sur le disque.

Suppression d’une partition

Pour supprimer une partition existante à l’aide de gdisk, nous devons utiliser la commande 'd'. Une fois que nous l’aurons entré, il nous sera demandé de fournir le numéro de la partition que nous voulons supprimer. Pour les besoins de cet exemple, nous supprimons la deuxième partition de notre appareil :

Command (? for help): d
Partition number (1-2): 2

Pour écrire les modifications sur le disque, comme nous le savons déjà, nous entrons la commande w.

Redimensionnement d’une partition

Le redimensionnement d’une partition est toujours une opération dangereuse qui doit être effectuée avec soin, et éventuellement après la création d’une sauvegarde. Effectuer une telle opération avec gdisk est quelque peu contre-intuitif car le processus implique la suppression de la partition actuelle (en mémoire uniquement), et sa recréation avec le même secteur de départ et le nouveau secteur de taille/fin.

Agrandissement d’une partition/d’un système de fichiers

Supposons que nous souhaitions étendre la deuxième partition que nous avons créée dans ce tutoriel, afin qu’elle utilise tout l’espace disponible sur le disque. Voici comment nous procéderions. Nous demandons d’abord des informations sur la partition que nous sommes sur le point de manipuler à l’aide de la commande i :

Command (? for help): i
Partition number (1-2): 2
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: D6FF2779-6F14-4E3E-876C-83E38F3A3FD7
First sector: 1026048 (at 501.0 MiB)
Last sector: 3123199 (at 1.5 GiB)
Partition size: 2097152 sectors (1024.0 MiB)
Attribute flags: 0000000000000000
Partition name: 'Linux filesystem'

Étant donné que nous devons supprimer la partition dans le cadre de l’opération de redimensionnement, nous voulons garder ses informations actuelles à portée de main. Une chose que nous pouvons vouloir faire est d’appliquer le GUID unique de la partition actuelle à celui qui vient d’être créé (par défaut, un GUID aléatoire est généré). Comme nous le savons déjà, pour supprimer la partition, nous devons utiliser la commande d :

Command (? for help): d
Partition number (1-2): 2

À ce stade, nous recréons la partition avec la commande n, en utilisant le même numéro de partition et le même point de départ (dans ce cas, celui par défaut), et nous fournissons la nouvelle taille. Étant donné que dans ce cas, nous voulons utiliser tout l’espace disponible, nous utiliserons également la valeur par défaut suggérée par l’application :

Command (? for help): n
Partition number (2-128, default 2): 2
First sector (34-15122398, default = 1026048) or {+-}size{KMGTP}:
Last sector (1026048-15122398, default = 15122398) or {+-}size{KMGTP}:
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

Pour changer le GUID unique de la nouvelle partition et utiliser la précédente, nous devons entrer dans le menu « opérations avancées » de gdisk, en utilisant la commande x (remarquez comment l’invite change)

Command (? for help): x

Expert command (? for help):

La commande experte que nous voulons utiliser est c. Une fois que nous l’aurons entré, il nous sera demandé de fournir le numéro de partition et le nouveau GUID de celle-ci. Dans ce cas, nous entrons celui qui a été utilisé pour l'"ancienne » partition :

Expert command (? for help): c
Partition number (1-2): 2
Enter the partition's new unique GUID ('R' to randomize): D6FF2779-6F14-4E3E-876C-83E38F3A3FD7
New GUID is D6FF2779-6F14-4E3E-876C-83E38F3A3FD7

À ce stade, nous pouvons enregistrer les modifications sur le disque avec la commande w (si pour une raison quelconque nous voulons quitter le menu « expert » et revenir au menu principal, nous pouvons utiliser m à la place) :

Expert command (? for help): w

Nous avons maintenant une partition beaucoup plus grande qu’auparavant, mais s’il y a un système de fichiers dessus, il devrait toujours être agrandi pour couvrir tout l’espace disponible. La commande utilisée pour effectuer l’opération varie en fonction du type de système de fichiers.

Supposons que nous ayons un système de fichiers ext4 sur la partition, nous exécuterions d’abord une vérification à l’aide de la commande e2fsck avec l’option -f (afin de forcer la vérification même si le système de fichiers semble propre), puis procéderions au redimensionnement proprement dit en utilisant resize2fs, qui, lorsqu’il est invoqué sans aucune option, étend le système de fichiers à tout l’espace de partition disponible :

sudo e2fsck -f /dev/sdc2 && sudo resize2fs /dev/sdc2

Réduire une partition

Pour réduire une partition, nous devons effectuer les étapes ci-dessus dans l’ordre inverse : nous réduisons d’abord le système de fichiers (s’il y en a) à une taille légèrement inférieure à la nouvelle taille que nous utiliserons pour la partition, ou à la taille minimale possible (c’est ce que nous faisons dans l’exemple ci-dessous, avec l’option -M), puis nous réduisons le
partition, et enfin nous agrandissons à nouveau le système de fichiers, afin qu’il utilise tout l’espace disponible.

Supposons que nous voulions réduire la deuxième partition du disque à 2 Gio, nous exécuterions :

sudo e2fsck -f /dev/sdc2 && sudo resize2fs -M /dev/sdc2

À ce stade, nous pouvons lancer gdisk et effectuer les mêmes étapes que dans l’exemple précédent, cette fois en fournissant un secteur de fin ou une taille de partition plus petite que la taille actuelle. Une fois les modifications enregistrées et écrites sur le disque, nous agrandissons le système de fichiers afin qu’il couvre tout l’espace disponible :

sudo e2fsck -f /dev/sdc2 && sudo resize2fs /dev/sdc2

Exécution d’opérations de manière non interactive avec sgdisk

Comme nous l’avons déjà dit, alors que gdisk est un programme interactif, sgdisk est un utilitaire en ligne de commande qui peut être utilisé pour effectuer des opérations de manière non interactive. Voyons comment effectuer les mêmes opérations que nous avons effectuées dans les exemples précédents, directement avec sgdisk.

Création d’une table de partition GPT

Pour créer une table de partition GPT avec sgdisk, tout ce que nous avons à faire est d’exécuter la commande suivante :

sudo sgdisk -o /dev/sdc

Lorsqu’il est invoqué avec l’option -o (ou --clear), sgdisk efface toute table de partition existante sur le périphérique donné et crée une nouvelle table de partition GPT. Encore une fois, puisque le programme est destiné à être utilisé à partir de scripts, aucun avertissement ne sera émis et aucune confirmation ne sera demandée, il doit donc être utilisé avec précaution.

Création d’une partition

Pour créer une nouvelle partition, nous appelons sgdisk avec l’option -n (abréviation de --new) et fournissons le numéro de partition, le début et la fin de la partition avec la syntaxe suivante :

partition_number:partition_start:partition_end

Pour créer une partition avec le numéro 2 qui utilise le premier secteur de démarrage disponible, avec une taille de 1Gio (1024 MiB), nous écririons donc :

2::+1G

Si nous voulons que la partition couvre tout l’espace disponible sur le disque, nous utiliserons plutôt 0 comme valeur de fin de partition :

2::0

Si nous voulons utiliser un code HEX spécifique pour la partition, nous devons utiliser l’option -t (abréviation de --typecode) avec la syntaxe suivante :

partition_number:hexcode

La commande complète pour créer la partition et lui attribuer explicitement le code hexadécimal 8300 serait donc :

sudo sgdisk --new 2::+1G --typecode 2:8300 /dev/sdc

Suppression d’une partition

Pour supprimer une partition du disque directement depuis la ligne de commande, sans aucune interaction, nous devons utiliser sgdisk avec l’option -d (--delete), et fournir le numéro de partition comme argument d’option. Pour supprimer la partition numéro 2, il faut écrire :

sudo sgdisk --delete 2 /dev/sdc

Redimensionnement d’une partition

Le processus de redimensionnement d’une partition avec sgdisk est le même que celui que nous avons utilisé de manière interactive avec gdisk, mais il est effectué sur une seule ligne, par exemple, pour agrandir la deuxième partition du disque afin qu’elle couvre tout l’espace disponible, nous exécuterions :

sudo sgdisk \
  -d 2 \
  -n 2:0:0 \
  -u 2:D6FF2779-6F14-4E3E-876C-83E38F3A3FD7 \
  /dev/sdc

Dans l’exemple ci-dessus, l’option -d, comme nous le savons, est utilisée pour supprimer la partition, -n est utilisée pour en créer une nouvelle avec le même numéro et la valeur par défaut pour les secteurs de début et de fin (0, signifie « utiliser la valeur par défaut »).

Enfin, l’option -u est l’abréviation de --partition-guid : nous l’avons utilisée pour attribuer à la nouvelle partition le même GUID que la partition supprimée.

Pour demander des informations sur une partition spécifique, nous pouvons utiliser l’option -i et fournir le numéro de partition. Par exemple:

sudo sgdisk -i 2 /dev/sdc

Conclusions

Dans ce tutoriel, nous avons appris à utiliser les utilitaires gdisk et sgdisk afin de manipuler les tables de partition GPT. Nous avons vu que le premier est un programme destiné à être utilisé de manière interactive, et fournit des invites de confirmation et d’autres mesures de sécurité, tandis que le second est destiné à être utilisé directement à partir de la ligne de commande ou à l’intérieur des scripts shell, et les modifications que nous avons apportées avec celui-ci sont immédiatement effectives. Nous avons vu comment créer de nouvelles tables de partitions et comment créer, supprimer et redimensionner des partitions avec les deux outils. La manipulation des cloisons est une activité dangereuse et doit être effectuée avec soin. Pour plus d’informations sur les outils mentionnés, veuillez consulter leurs manuels respectifs.

Articles connexes: