Le Hurd
Un article de HurdFr_Wiki.
Si le nom du Hurd est relativement connu dans le milieu des logiciels libres, peu de gens savent vraiment ce dont il s’agit. Commençons d’abord par expliquer ce que le Hurd n’est pas. Le Hurd n’est pas un système d’exploitation. Le Hurd n’est pas non plus un noyau. Pour comprendre ce qu’est le Hurd, il est nécessaire d’expliquer un peu plus en détail ces deux notions.
Sommaire |
Système d’exploitation
Un système d’exploitation a deux objectifs principaux :
- permettre aux applications d’utiliser le matériel en utilisant une couche d’abstraction.
- répartir les différentes ressources disponibles (temps CPU, mémoire, périphériques) entre les applications.
Micronoyau, noyau monolithique
Traditionnellement, une grande partie du système d’exploitation est implémentée dans le noyau. Une telle conception est dite monolithique. Le noyau est un logiciel comme les autres, sauf qu’il a beaucoup plus de permissions au niveau du matériel (mode kernel), et que sans lui, les autres applications ne peuvent plus fonctionner. Par conséquent, un «bug» dans le noyau nécessite en général un redémarrage du système.
Pour éviter cela, une autre approche est donc de limiter le noyau, de ne lui confier que ce qui est strictement nécessaire, et de déplacer la majorité des autres fonctionnalités (par exemple, gestion des systèmes de fichier) à l’extérieur. Ainsi, un «bug» du système de fichier ne provoquera pas une erreur dans le noyau, et les conséquences seront donc moins graves.
Un ensemble de serveurs
Une approche du développement d’un système d’exploitation à micronoyau est de déplacer toutes les fonctionnalités qui se trouvaient dans le noyau vers un serveur unique. Ainsi, on a moins de choses dans le noyau, mais il y a encore des inconvénients : par exemple un «bug» dans la gestion des systèmes de fichiers pourrait entraîner des conséquences pour la gestion de la mémoire, et ce n’est pas souhaitable.
Une autre approche est de déplacer les fonctionnalités se trouvant dans le serveur unique vers de multiples serveurs. Ainsi, un «bug» dans le système de fichiers ext2fs n’entraînera pas de bug dans la gestion de la mémoire, ni même pour un autre système de fichiers. Cette approche a aussi un inconvénient : toutes les communications qui étaient à l’intérieur du serveur unique et pouvaient se faire par simple appels de fonctions, sont maintenant des communications entre différents processus, qui sont plus coûteuses en temps.
Le Hurd est un ensemble de serveurs tournant au-dessus d’un micronoyau : Mach.
Traducteur, translator
La particularité du Hurd, c’est qu’un serveur, nommé «traducteur» (translator en anglais) est associé à un nœud du système de fichiers. Par exemple, un traducteur ext2fs sera associé à ’/’ pour monter une partition. Un autre traducteur ext2fs sera probablement associé à ’/home’ pour monter une autre partition pour les répertoires utilisateurs. Lorsqu’un programme voudra accéder à ’/home/neryelle/TODO’, il y aura d’abord un appel au traducteur associé à ’/’. Comme il ne trouvera pas le fichier, il demandera au traducteur associé à ’/home’ d’accéder à ’neryelle/TODO’.
Dans ce cas, l’utilisation d’un traducteur ressemble au montage d’une partition, mais un traducteur peut aussi être utilisé sur un seul fichier (par exemple, le traducteur «fortune» permet d’obtenir une phrase aléatoire lorsqu’on accède à un fichier sur lequel ce traducteur a été associé, ce qui peut être utile pour utiliser une signature aléatoire dans un client mail ne permettant que d’insérer un fichier en signature). De plus, un traducteur peut être activé par un utilisateur (il ne nécessite pas de droits root) et peut utiliser n’importe quelle bibliothèque (il existe par exemple un traducteur ftpfs, qui permet de «monter» un serveur ftp sur son disque dur). L’utilisation et le développement de traducteurs sont donc simplifiés.
GNU/Hurd ? Le Hurd ?
Le Hurd est l’ensemble des serveurs (traducteurs), tournant autour du micronoyau (GnuMach). Le Hurd est un projet GNU ; le terme «le GNU Hurd» est donc parfois utilisé pour renforcer cet appartenance, de la même manière que les termes «GNU Emacs» ou «GNU Bash» sont parfois utilisés pour parler d’Emacs et de Bash.
L’ensemble GnuMach et le Hurd permet de remplacer un noyau monolithique (par exemple Linux). Il ne fournit cependant pas de système d’exploitation complet, car il manque des bibliothèques (libc notamment), des applications, etc. L’ensemble du système s’appelle tout simplement GNU, ou GNU/Hurd lorsque l’on veut le différencier par rapport à GNU/Linux. La plupart des applications tournant sous GNU/Linux tournent (ou peuvent tourner) sous GNU/Hurd. Debian GNU/Hurd est une distribution GNU/Hurd, et s’utilise de façon très similaire à Debian GNU/Linux.
Pourquoi le Hurd ?
Un certain nombre de personnes se demandent l’intérêt de développer le Hurd lorsqu’il y a déjà une alternative qui fonctionne et qui est libre : Linux. D’ailleurs, pendant un moment, le projet du Hurd a plus ou moins été abandonné : Linux existait, fonctionnait, et il y avait d’autres priorités dans le projet GNU, par exemple tous les logiciels user-friendly.
Pourtant, le Hurd a redémarré. Pourquoi ? La réponse est simple : le Hurd (ou, plus exactement, le Hurd plus un micronoyau) est différent de Linux. Le Hurd permet de faire des choses que Linux ne permet pas. La conception du Hurd est très différente de celle de Linux. Il ne s’agit donc pas simplement d’une réimplémentation pour le plaisir.
Statut actuel
Le Hurd n’est pas fini. Il est plus ou moins utilisable pour l’instant, mais est lent et instable. Un certain nombre de problèmes viennent du micronoyau Mach, et il y a actuellement un effort de portage du Hurd vers L4, qui est un micronoyau beaucoup plus petit et un peu plus rapide. Il est possible, avec Debian GNU/Hurd, de voir à quoi ressemble le système, mais il n’est pas encore prêt pour une utilisation de tous les jours ou en production.
Toute personne désirant participer au projet, que ce soit par le développement, la traduction ou la documentation est évidemment la bienvenue :-)

