- Hurd
-
Hurd Le Live CD de HurdDéveloppeurs Thomas Bushnell
Roland McGrath
Marcus Brinkmann
Neal WalfieldDernière version L1 (19 octobre 2009) [+/-] Écrit en Assembleur, C Environnement GNU Type Système à micro-noyaux Licence Licence publique générale GNU Site web www.gnu.org/software/hurd modifier 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.[réf. nécessaire]
Le micro-noyau utilisé est GNU Mach, une implémentation Mach. 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.
Choix d’un micro-noyau
Depuis 2004, des efforts ont été réalisés pour exécuter le portage de Hurd sur une nouvelle génération de micro-noyau, le L4, mais la progression a été très lente, par manque de temps et de développeurs. Toutefois, durant 2005, le développeur principal de Hurd, Neal Walfield, termine la structure du gestionnaire de mémoire pour ce portage, et Marcus Brinkmann a porté pour sa part l’essentiel de la librairie du langage C (glibc), le code de démarrage des processus, permet aux applications de fonctionner, notamment le célèbre programme hello world. Pendant ce temps, beaucoup de développeurs investissent du temps pour étudier le micro-noyau expérimental Coyotos issu du projet EROS de l’Université Johns-Hopkins[1],[2].
En 2006, Marcus Brinkmann et d’autres se sont associés avec Jonathan Shapiro, un architecte de poids du Coyotos, pour discuter de sa possible utilisation avec GNU/Hurd. Ces discussion se sont poursuivies en 2007, lentement. Puis en 2008, Neal Walfield a débuté un travail sur la base du micro-noyau Viengoos comme une alternative[3],[4]. En 2009, Jonathan Shapiro a annoncé que le travail collaboratif avait cessé. En 2011, le développement de Viengoos est en pause par manque de temps de la part de Neal Walfield.
En parallèle, un groupe de développeurs continue le portage sur le micro-noyau de départ, une version de Mach[5].
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 implémentent 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ée 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)[réf. souhaitée]. Il n'existait au départ qu'une distribution basée sur le Hurd, au stade de développement, mais qu'il était possible d'utiliser pour certaines tâches non critiques : Debian GNU/Hurd. Celle-ci existe toujours.
Depuis, quelques rares distributions ont vu le jour:
- superunprivileged.org propose un LiveCD basé sur Debian GNU/Hurd, réalisé par Ben Asselstine avec l'aide d'Alfred Szmidt. Ce LiveCD (datant de 2005) fournit un système de base suffisant pour découvrir et démontrer les fonctionnalités de GNU/Hurd.
- Début 2010, des membres de la communauté Archlinux ont lancé une distribution GNU/Hurd, basée sur ArchLinux, sous le nom de Arch 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.
Notes et références
Voir aussi
Articles connexes
Liens externes
- (en) Site officiel
- (en) GNU Mach
- (en) L4-Hurd
- (en) Wiki du projet Hurd
- (fr) Debian GNU/Hurd
- (fr) HurdFR
- (fr) HurdFR - Documentation
- (fr) Wiki d'HurdFR
- (fr) Interview de Marcus Brinkmann
Wikimedia Foundation. 2010.