GNU fdisk
# GNU fdisk

GNU fdisk est un logiciel libre de partitionnement maintenu par le projet GNU. Il supporte le partitionnement GPT et MBR.

## Historique

Basé sur la bibliothèque logicielle libparted, fdisk vise à l'implémentation de divers outils de partitionnement Unix. Elle implémente pour cela deux options de partitionnement, fdisk et cfdisk. Le projet prévoyait l'implémentation future d'autres options comme sfdisk, mac-fdisk d'Apple et FreeBSD fdisk. Toutes ces implémentations avaient un mode compatibilité et un mode GNU offrant des fonctionnalités supplémentaires.

Le code source a été entièrement réécrit pour la sortie d'une version alpha en octobre 2011 permettant, comme GNU parted, l'implémentation d'interfaces graphiques. Mais contrairement à parted, ces interfaces graphiques peuvent s'implémenter avec Guile; fdisk intègre en effet un interpréteur du langage Scheme (grâce à la bibliothèque « libguile »), ce qui lui permet l'export de symboles (en) pour la gestion des partitions et du stockage d'information.

## Composantes techniques

Le cœur du projet est écrit en langage C et se compose de cinq bibliothèques logicielles et d'un exécutable en ligne de commande :

* libgnufdisk-common, une bibliothèque générique;
* libgnufdisk-debug, une bibliothèque pour la gestion des messages d'alerte ou d'information;
* libgnufdisk-exception, une autre pour gérer les exceptions;
* libgnufdisk-device, une autre fournissant une interface commune aux unités de stockage et la gestion de modules externes;
* libgnufdisk-devicemanager, une autre pour gérer les unités de stockage, les erreurs, et communiquer avec l'interface utilisateur;
* libgnufdisk-userinterface, bibliothèque contenant un interpréteur Scheme et transmettant des requêtes aux implémentations de la précédente bibliothèque.

La gestion des opérations inhérentes au partitionnement se trouve dans des modules séparés. Chaque module se charge dynamiquement lorsqu'une table de partitions est créée.

Le projet dispose d'une interface en ligne de commande (commande gnufdisk).

