Le Fdisk de Linux

Il existe une version Linux de fdisk bien plus complète que la version fournie par Micro$oft.
Elle voit bien d'autres types de partitions que les seules partitions Linux.
Ce programme est disponible dans toutes les distributions de Linux.

Lister les partitions:

Par exemple, fdisk /dev/hda -l, affiche le contenu du disque dur maître sur le premier connecteur IDE.
En voici le résultat sur un poste:

[root@pc17 root]# fdisk /dev/hda -l
Disque /dev/hda : 255 têtes, 63 secteurs, 1240 cylindres
Unités = cylindres sur 16065 * 512 octets
Périphérique Amorce Début Fin Blocs Id Système
/dev/hda1 * 1 638 5124703+ b Win95 FAT32
/dev/hda2 639 1240 4835565 85 Linux étendu
/dev/hda5 639 956 2554303+ 83 Linux
/dev/hda6 957 994 305203+ 82 Echange Linux
/dev/hda7 995 1240 1975963+ 83 Linux
[root@pc17 root]#

Attention à la "casse", Linux fait la distinction entre majuscules et minuscules contrairement à Window$.
fdisk et FDISK ou FdiSk,... désignent des fichiers différent (seul fdisk correspond au programme de partitionnement).

fdisk, les commandes disponibles:

Pour accéder au menu et manipuler les partitions du disque dur maître sur le premier connecteur IDE, on tape fdisk /dev/hda
A l'invite Commande (m pour aide) :, taper m, nous affichera les commandes disponibles:

[root@pc17 root]# fdisk /dev/hda

The number of cylinders for this disk is set to 1240.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Commande (m pour aide) : m
Action de commande
a   (Dés)active un indicateur Bootable
b   Edite le libellé de disque bsd
c   (Dés)active l'indicateur de compatibilité DOS
d   Supprime une partition
l   Répertorie les types de partition connus
m   Affiche ce menu
n   Ajoute une nouvelle partition
o   Crée une nouvelle table de partition DOS vide
p   Affiche la table de partition
q   Quitte le programme sans enregistrer les modifications
s   Crée un nouveau libellé de disque Sun vide
t   Change l'ID système d'une partition
u   Change l'unité d'affichage/saisie
v   Vérifie la table de partition
w   Ecrit la table sur le disque et quitte le programme
x   Fonctions supplémentaires (experts seulement)

Commande (m pour aide) :

Pour lancer fdisk sur un autre disque dur, il faudra taper fdisk /dev/hdb, fdisk /dev/hdc, fdisk /dev/hdd selon la position du disque (maitre/esclave sur le premier/deuxième connecteur IDE).

Lister les partitions:

Affichons les partitions actuellement disponibles:

Commande (m pour aide) : p
Disque /dev/hda : 255 têtes, 63 secteurs, 1240 cylindres
Unités = cylindres sur 16065 * 512 octets
Périphérique Amorce Début Fin Blocs Id Système
/dev/hda1 * 1 638 5124703+ b Win95 FAT32
/dev/hda2 639 1240 4835565 85 Linux étendu
/dev/hda5 639 956 2554303+ 83 Linux
/dev/hda6 957 994 305203+ 82 Echange Linux
/dev/hda7 995 1240 1975963+ 83 Linux
Commande (m pour aide) :

Nous observons ici la présence d'une partition Window$ en FAT32 (désignée par /dev/hda1).

Par ailleurs, une partition primaire Linux /dev/hda2 contient les partitions étendues /dev/hda5 (le système Linux monté en /), le SWAP (mémoire virtuelle pour reprendre la terminologie Window$) en /dev/hda6 et la partition de données personnelles en /dev/hda7 et montée en /home.

Remarque: Les points de montage (racine / et dossier personnels /home) sont donnés ici pour info mais n'apparaissent pas via fdisk.

Supprimer des partitions:

Si nous souhaitons supprimer une partition, à l'invite Commande (m pour aide) :, tapons d et validons:

Commande (m pour aide) : d
Numéro de partitions (1-7): 1

Commande (m pour aide) :

Le numéro de la partition à supprimer est demandé.
Il est judicieux de repérer la partition à supprimer avant de se lancer.
Ici, j'ai supprimé la première partition (/dev/hda1) et validé avec ENTREE.

L'invite de commande nous est à nouveau proposée.

Attention: La suppression n'est pas encore réalisée:
Elle ne le sera que lorsque nous aurons commandé d'écrire la table de partition (commande w).

Remarque: Il est possible d'interrompre le programme par CTRL+C ou tout bêtement par la commande q.

Afficher les partitions:

Affichons maintenant les partitions présentes sur le disque /dev/hda à l'aide de la commande p (suivie de ENTREE):

Commande (m pour aide) : p
Disque /dev/hda : 255 têtes, 63 secteurs, 1240 cylindres
Unités = cylindres sur 16065 * 512 octets
Périphérique Amorce Début Fin Blocs Id Système
/dev/hda2 639 1240 4835565 85 Linux étendu
/dev/hda5 639 956 2554303+ 83 Linux
/dev/hda6 957 994 305203+ 82 Echange Linux
/dev/hda7 995 1240 1975963+ 83 Linux
Commande (m pour aide) :

La liste des partitions est affichée.

On n'y trouve pas de partition /dev/hda1 pour la simple et bonne raison que c'est celle que nous avons supprimée à l'étape précédente.

Créer une partition:

Pour créer maintenant une partition, tapons n:

 Commande (m pour aide) : n
Action de commande l Logique (5 ou plus)
p Partition primaire (1-4)
p
Numéro de partitions (1-4): 1
Premier cylindre (1-1240, 1 par défaut) : 1
Dernier cylindre ou +size ou +sizeM ou +sizeK (1-638, 638 par défaut) : +1000M

Commande (m pour aide) :

Il nous est demandé si cette nouvelle partition doit être Logique (l) ou Primaire (p).

J'ai répondu primaire p et le numéro de la partition à créer m'a été demandé:
Pour une partition primaire, c'est entre 1 et 4, sachant que /dev/hda2 est déjà prise (voir ci-dessus), j'ai le choix entre 1, 3 et 4.
J'ai choisi 1.
Le premier cylindre que j'ai choisi est 1.
Pour le dernier cylindre, j'ai préféré créer une partition de 1000Mo en tapant 1000M.

Comme je n'ai pas utilisé toute la place disponible, je vais pouvoir créer une deuxième partition.
Mais commençons par afficher où nous en sommes:

Commande (m pour aide) : p

Disque /dev/hda : 255 têtes, 63 secteurs, 1240 cylindres
Unités = cylindres sur 16065 * 512 octets

Périphérique Amorce    Début       Fin    Blocs   Id  Système
/dev/hda1                  1       128   1028128+  83  Linux
/dev/hda2                639      1067   3445942+  85  Linux étendu
/dev/hda5                639       688    401593+  82  Echange Linux
/dev/hda6                689       981   2353491   83  Linux
/dev/hda7                982      1240   2080386   83  Linux

Commande (m pour aide) :

On notera que la nouvelle partition /dev/hda1 créée est par défaut de type Linux.

Créons une autre partition dans la place laissée libre entre les secteurs 128 et 639:

Commande (m pour aide) : n
Action de commande
   l   Logique (5 ou plus)
   p   Partition primaire (1-4)
p
Numéro de partitions (1-4): 3
Premier cylindre (129-1240, 129 par défaut) : 129
Dernier cylindre ou +size ou +sizeM ou +sizeK (129-638, 638 par défaut) : 638

Commande (m pour aide) :
Cette nouvelle partition occupe toute la place restante.
J'en ai fait une partition primaire (il ne me restait donc plus que /dev/hda3 et /dev/hda4).

Affichons la nouvelle situation:
Commande (m pour aide) : p

Disque /dev/hda : 255 têtes, 63 secteurs, 1240 cylindres
Unités = cylindres sur 16065 * 512 octets

Périphérique Amorce    Début       Fin    Blocs   Id  Système
/dev/hda1             1       128   1028128+  83  Linux
/dev/hda2           639      1067   3445942+  85  Linux étendu
/dev/hda3           129       638   4096575   83  Linux
/dev/hda5           639       688    401593+  82  Echange Linux
/dev/hda6           689       981   2353491   83  Linux
/dev/hda7           982      1240   2080386   83  Linux

Les entrées de la table de partitions ne suivent pas l'ordre du disque.

Commande (m pour aide) :
On remarque que l'ordre des partitions sur le disque serait plutôt:
/dev/hda1             1       128   1028128+  83  Linux
/dev/hda3           129       638   4096575   83  Linux
/dev/hda2 639 1067 3445942+ 85 Linux étendu
où la partition primaire étendue /dev/hda2 contient les partitions logiques /dev/hda5, /dev/hda6 et /dev/hda7.

Pour changer le type d'une partition:

Pour changer le type d'une partition (par exemple pour passer de Linux/ext2 (qui est le système de fichier Linux standard) à FAT32), nous tapons t.
Le numéro de la partition nous est demandé, puis le code hexadécimal du type de partition souhaité.
Fort heureusement et cela nous est rappelé, taper L permet d'afficher la liste des types disponibles.

Commande (m pour aide) : t
Numéro de partitions (1-7): 1
Code hexadécimal (tapez L pour afficher une liste des codes) : L
 0  Vide            1c  Win95 FAT32 cac 65  Novell Netware  bb  Boot Wizard hid
 1  FAT12           1e  Win95 FAT16 cac 70  DiskSecure Mult c1  DRDOS/sec (FAT-
 2  root XENIX      24  NEC DOS         75  PC/IX           c4  DRDOS/sec (FAT-
 3  util XENIX      39  Plan 9          80  Old Minix       c6  DRDOS/sec (FAT-
 4  FAT16 <32M      3c  Reprise Partiti 81  Minix / ancien  c7  Syrinx
 5  Etendue         40  Venix 80286     82  Echange Linux   da  Non-FS data
 6  FAT16           41  Amorce PPC PReP 83  Linux           db  CP/M / CTOS / .
 7  HPFS/NTFS       42  SFS             84  Lecteur C: cach de  Dell Utility
 8  AIX             4d  QNX4.x          85  Linux étendu    df  BootIt
 9  AIX amorçable   4e  QNX4.x 2ème par 86  Ensemble de vol e1  Accès DOS
 a  Gestionnaire d' 4f  QNX4.x 3ème par 87  Ensemble de vol e3  R/O DOS
 b  Win95 FAT32     50  OnTrack DM      8e  Linux LVM       e4  SpeedStor
 c  Win95 FAT32 (LB 51  OnTrack DM6 Aux 93  Amoeba          eb  BeOS fs
 e  Win95 FAT16 (LB 52  CP/M            94  Amoeba BBT      ee  EFI GPT
 f  Win95 Etdue (LB 53  OnTrack DM6 Aux 9f  BSD/OS          ef  EFI (FAT-12/16/
10  OPUS            54  OnTrackDM6      a0  Hibernation Thi f0  Linux/PA-RISC b
11  FAT12 caché     55  EZ-Drive        a5  FreeBSD         f1  SpeedStor
12  Diagnostics Com 56  Golden Bow      a6  OpenBSD         f4  SpeedStor
14  FAT16 caché <32 5c  Priam Edisk     a7  NeXTSTEP        f2  DOS secondaire
16  FAT16 caché     61  SpeedStor       a9  NetBSD          fd  Détection auto
17  HPFS/NTFS caché 63  GNU HURD ou Sys b7  BSDI fs         fe  LANstep
18  AST SmartSleep  64  Novell Netware  b8  Swap BSDI       ff  BBT
1b  Win95 FAT32 cac
Code hexadécimal (tapez L pour afficher une liste des codes) :

Passer à FAT32 nécessitera le code b.

Commande (m pour aide) : t
Numéro de partitions (1-7): 1
Code hexadécimal (tapez L pour afficher une liste des codes) : b
Le type de système de la partition 1 a été remplacé par b (Win95 FAT32).

Commande (m pour aide) : t
Numéro de partitions (1-7): 3
Code hexadécimal (tapez L pour afficher une liste des codes) : b
Le type de système de la partition 3 a été remplacé par b (Win95 FAT32).

Commande (m pour aide) : p

Disque /dev/hda : 255 têtes, 63 secteurs, 1240 cylindres
Unités = cylindres sur 16065 * 512 octets

Périphérique Amorce    Début       Fin    Blocs   Id  Système
/dev/hda1             1       128   1028128+   b  Win95 FAT32
/dev/hda2           639      1067   3445942+  85  Linux étendu
/dev/hda3           129       638   4096575    b  Win95 FAT32
/dev/hda5           639       688    401593+  82  Echange Linux
/dev/hda6           689       981   2353491   83  Linux
/dev/hda7           982      1240   2080386   83  Linux

Les entrées de la table de partitions ne suivent pas l'ordre du disque.

Commande (m pour aide) :
Je vous laisse observer les changements.

Pour valider les changements:

Pour rendre les changements effectifs, il faut écrire la nouvelle table de partition avec w.
Si vous quittez avec q sans écrire les changements, vous n'aurez rien changé à votre table de partition.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
    hda:    hda1    hda2
    hda:    hda1    hda2
Syncing disks.

Remarque importante: Lors de la procédure d'écriture, fdisk fait relire la table de partition au sytème si bien qu'il n'est pas nécessaire de redémarrer (il est fréquent que des opérations qui nécessitent un redémarrage sous Window$ n'en nécessitent pas sous Linux).