- GNU Hurd
-
Hurd
Le Hurd est un ensemble de programmes et de bibliothèques servant de base au système d'exploitation GNU. Commencé vers 1990, il s'agit d'un logiciel libre soumis à la licence GNU GPL.
Le but recherché est de remplacer les fonctionnalités d'un noyau de type UNIX, tout en maintenant une large compatibilité avec ceux-ci. Il respecte autant que possible les spécifications POSIX, tout en évitant les restrictions d'action arbitrairement imposées à l'utilisateur.
Le nom « Hurd » est un double acronyme récursif, « Hurd » signifiant « Hird of Unix-Replacing Daemons », et « Hird » « Hurd of Interfaces Representing Depth ».
Sommaire
Architecture à micro-noyau
Contrairement aux noyaux UNIX classiques, essentiellement monolithiques, le Hurd se fonde sur un micro-noyau, qui fournit uniquement les fonctions de base (accès basique au matériel et à la mémoire, gestion des tâches et de la communication entre celles-ci). Il se compose d'une série de services (appelés serveurs), fournissant des fonctions et des abstractions de plus haut niveau (système de fichiers, processus Unix, gestion des permissions, console, pilotes évolués...). Cette conception est donc plus modulaire et plus facile à faire évoluer dynamiquement. Cependant, ces serveurs indépendants doivent fréquemment communiquer, ce qui affecte les performances du système.
Actuellement, le micro-noyau utilisé est GNU Mach, une implémentation Mach mais les efforts sont dirigés vers le portage du Hurd sur le micronoyau L4.
Il existe d'autres systèmes de type UNIX utilisant Mach, tels OSF/1, NeXTSTEP, Lites (voir (en) lites) et MkLinux. Ils ont en commun une architecture basée sur le modèle serveur : le noyau monolithique du système UNIX traditionnel est ainsi remplacé par deux composants distincts, le micro-noyau et un serveur monolithique qui fournit la compatibilité Unix (BSD le plus souvent, sauf évidemment pour MkLinux). Mac OS X utilise également Mach comme base de son noyau monolithique xnu.
Spécificités du Hurd
Le Hurd se compose donc d'un ensemble de serveurs fonctionnant en interaction. Au lieu d'un seul programme imposant incluant absolument tout, de la gestion du synchronisme jusqu'au réseau, chacun de ses composants est géré par un serveur indépendant. Chaque serveur fournit un certain nombre de services, sous formes d'appels (RPC). Ces appels sont organisés en interfaces. Ces interfaces sont définies indépendamment des serveurs fournis par le Hurd : elles sont censées être stables (elles n'ont changé qu'une seule fois depuis 1999) et documentées.
Cela rend en principe le développement du Hurd plus facile. Pour remplacer un composant, il suffit de créer un serveur implantant ces mêmes interfaces. On peut aussi remplacer et/ou modifier les composants non essentiels (la majorité) sans arrêter le système. De plus, si l'un des composants plante, il ne doit pas entraîner l'ensemble du système.
Dans le développement initial de Mach, cette idée d'un ensemble de serveurs interagissant était considérée comme un des buts principaux concernant le design, mais le Hurd est apparu comme étant le premier système basé sur Mach, fonctionnant de cette manière. Quoi qu'il en soit, il est apparu que le groupe développant Mach était bien trop occupé à travailler sur Mach pour réfléchir au système d'exploitation dans sa globalité.
Un certain nombre de concepts ayant cours sur UNIX sont implémentés ou étendus dans le Hurd.
En particulier, il fait sienne la maxime Unixienne « tout est fichier » et l'étend pour répondre à une problématique courante des systèmes multi-serveurs : l'identification des serveurs et le contrôle d'accès à ceux-ci. En effet, deux serveurs, pour communiquer entre eux, doivent pouvoir se contacter. Sur Internet, ce sont les adresses IP et le DNS qui remplissent ce rôle. Dans le monde CORBA, ce sont les IOR. MachOS proposait un service de nommage qui permet de contacter un serveur par son nom. Cependant, ce système ajoute un élément critique au système (le serveur de noms) et ne règle pas la question du contrôle d'accès. Le Hurd prend le parti d'utiliser le système de fichiers comme système de nommage : à chaque fichier, il associe un programme. Ces programmes sont des serveurs ordinaires qui implantent une interface particulière : celle des accès fichiers (lecture, écriture, changement des droits et de propriétaire, etc.) : ils sont appelés traducteurs (translator). Tous les serveurs du Hurd sont des traducteurs, exceptés auth et proc (pour lesquels toute tâche créée dispose automatiquement d'un moyen de communiquer avec ces serveurs). Les systèmes de fichiers sont un exemple de traducteur : ils sont associés à tous les fichiers fournis par ce système de fichiers. Ce qui correspond au montage sous UNIX est le lancement d'un traducteur de fichier sous GNU/Hurd. La nature des traducteurs (programmes ordinaires) rend plus aisé la conception de services spécifiques comme le traducteur ftpfs permet à l'utilisateur de naviguer sur un site FTP distant comme dans une arborescence locale, ou mirrorfs, qui permet à l'utilisateur de monter plusieurs systèmes de fichiers les uns sur les autres.
Sous Unix, chacun des programmes a un identifiant associé, user id ou ID, qui correspond normalement à celui de l'utilisateur qui l'a lancé. Cet ID dicte les actions permises par ce programme. Aucun processus externe ne peut changer l'ID d'un programme en mémoire, et aucun processus ne peut (normalement) obtenir un privilège qu'il n'a pas au démarrage. Sous GNU/Hurd, un processus tourne sous un ensemble d'identifiants, cet ensemble pouvant être nul (aucun ID associé) ou contenant plusieurs ID. Un processus ayant suffisamment de privilèges peut ajouter ou retirer des ID à un autre processus. Par exemple, il existe un serveur password qui retourne un ID lorsque le login est validé.
L'aspect le plus intéressant du Hurd réside dans la capacité qu'a l'utilisateur de lancer son propre système de services. Tout utilisateur peut attacher n'importe quel traducteur à un système de fichiers pour son usage personnel : un utilisateur peut même remplacer des serveurs systèmes, comme le serveur d'authentification, par celui de son choix. Tout cela peut se faire sans affecter les autres utilisateurs, grâce à des privilèges bien définis. En fait, il est même possible, toujours pour le simple utilisateur, de re-lancer un système GNU/Hurd, qui sera alors un sous-Hurd (un Hurd dans le Hurd).
Distributions
Richard Stallman, fondateur du projet GNU, avait annoncé qu'il espérait la sortie d'une version officielle de GNU OS (également appelée GNU/Hurd) avant la fin de l'année 2002 (déclaration qui avait beaucoup surpris les développeurs !). Il n'existe qu'une distribution basée sur le Hurd, encore au stade de développement, mais qu'il est possible d'utiliser pour certaines tâches non critiques : Debian GNU/Hurd. Un LiveCD basé sur Debian GNU/Hurd également, réalisé par Ben Asselstine avec l'aide d'Alfred Szmidt. Ce LiveCD fournit un système de base suffisant pour découvrir et démontrer les fonctionnalités de GNU/Hurd.
Ces distributions utilisent toutes un chargeur de démarrage (bootloader) qui puisse gérer la spécification multiboot, comme GRUB, ce qui est requis pour utiliser le Hurd.
Compte-tenu de la disponibilité d'autres noyaux de système d'exploitation qui permettent une utilisation de l'ensemble des outils GNU, le développement est lent. Ce noyau souffre encore d'importantes limitations liées au support matériel. Il n'existe ainsi aucun support pour les cartes son.
Voir aussi
Articles connexes
Liens externes
- (en) Site officiel
- (fr) Debian GNU/Hurd
- (en) GNU Mach
- (en) L4-Hurd
- (en) Wiki du projet Hurd
- (fr) HurdFR
- (fr) HurdFR - Documentation
- (fr) Wiki d'HurdFR
- (fr) Interview de Marcus Brinkmann
- Portail des logiciels libres
- Portail de l’informatique
Catégories : Acronyme | Noyau informatique | Logiciel du projet GNU
Wikimedia Foundation. 2010.