Lfch-Et si on parlait du Hurd

De Lea Linux
Aller à la navigation Aller à la recherche


Qu'est-ce que le Hurd ?

par Julien

Note : Cet article a été publié initialement le lundi 2 décembre 2002 sur LinuxFrench à l'adresse suivante : http://www.linuxfrench.net/article.php3?id_article=1091. Aucune modification n'a été apportée.

Le Hurd, pour « Hird of Unix-Replacing Daemons », est un ensemble de programmes qui, s'ils fonctionnent au-dessus d'un micronoyau adapté, fournissent un système d'exploitation libre compatible avec Unix et la norme POSIX (si vous êtes l'auteur d'un logiciel qui est compatible POSIX, son portage vers le Hurd ne devrait se résumer qu'à la correction de quelques imperfections, comme l'utilisation de la constante MAXPATHLEN), tout en introduisant des nouveautés intéressantes.

Qu'est-ce que le Hurd ?

Le Hurd, pour "Hird of Unix-Replacing Daemons", est un ensemble de programmes qui, s'ils fonctionnent au-dessus d'un micronoyau adapté, fournissent un système d'exploitation libre compatible avec Unix et la norme POSIX (si vous êtes l'auteur d'un logiciel qui est compatible POSIX, son portage vers le Hurd ne devrait se résumer qu'à la correction de quelques imperfections, comme l'utilisation de la constante MAXPATHLEN), tout en introduisant des nouveautés intéressantes.

Son développement s'inscrit dans le cadre de celui du projet GNU. En effet, GNU est un système d'exploitation libre complet, dont le Hurd et le micronoyau sous-jacent sont les seules pièces manquantes.

Bien que le développement du Hurd ait débuté avant que la première version de Linux soit annoncée (le développement du Hurd a débuté en 1990, la première annonce officielle de la disponibilité de Linux date de 1991), il n'a pas progressé aussi rapidement que ce dernier. C'est pour cela que Linux est aujourd'hui le noyau utilisé par le système d'exploitation GNU. Cependant ce n'est, aux yeux des développeurs du système d'exploitation GNU, qu'une solution temporaire.

Pourquoi le Hurd est un projet intéressant ?

Étant partie intégrante du projet GNU, le Hurd a pour but de garantir la liberté de l'utilisateur du système. Si le code source d'un programme est libre, comme par exemple celui du noyau Linux, comment peut-il ne pas garantir la liberté totale de l'utilisateur ?

Le code source du noyau Linux est énorme : l'arborescence des sources constitue 167 Méga Octets de données. Il comporte environ trois millions de lignes de code. Même si la majeure partie de ce code concerne les pilotes de périphériques, et que la partie centrale de Linux est de taille modeste (environ 400 Kilo-octets), il est extrèmement difficile de pouvoir modifier correctement le code.

Il est nécessaire de passer de longues heures à se familiariser avec le fonctionnement du programme, le style de codage et les structures de données utilisées. Plus le développement du noyau Linux avance, plus cette activité est réservée à une petite poignée de programmeurs qui est parvenue à trouver son chemin dans le dédale de son code source. Ici c'est la liberté de modification qui, à cause de la difficulté de la compréhension du code source, est malmenée par l'état actuel du noyau Linux.

De plus, étant donné que beaucoup de services fournis par un système GNU/Linux tournent en mode privilégié, et qu'il n'est pas possible d'utiliser deux programmes différents qui tournent en mode noyau et qui fournissent le même service, deux utilisateurs qui partagent l'utilisation du même systême ne peuvent véritablement choisir quel programme utiliser pour accéder à tel service.

Par exemple, il est possible avec le Hurd de choisir la méthode de swapping utilisée pour une application donnée. Ainsi, un développeur d'applications confidentielles peut protéger les données écrites sur le disque lors de l'écriture de la mémoire virtuelle sur les péripheriques de stockage, pendant que les autres développeurs qui utilisent le même ordinateur utilisent le pager par défaut. Les possibilités apportées par l'utilisation du Hurd fournissent donc davantage de liberté d'utilisation que l'utilisation d'un noyau Linux.

Ensuite, les choix de conception apportent des avantages concrets.

Les translators en sont un exemple flagrant. Un translator est un programme qui s'interface entre le système de fichiers et les applications. Un translator est associé à une entrée de l'arborescence du système de fichiers et lorsque l'application accède à cette entrée, c'est le translator qui se charge de renvoyer les données. Ainsi, il est possible de programmer un client ftp transparent : l'utilisateur monte un serveur ftp en un point de l'arborescence du système de fichiers, et navigue à l'aide des outils classiques (cd, ls, cat, etc.).

Étant donné que la plupart des services fournis par le système tournent en espace utilisateur, ce dernier est théoriquement plus stable. Par exemple, il est possible de relancer la pile TCP/IP lorsque celle-ci se termine accidentellement.

Pour la même raison, les erreurs de programmation se transforment moins facilement en faille de sécurité potentielle grave. Par exemple, le serveur d'authentification est un des seuls programmes à tourner en mode privilégié, et son code est assez succinct pour permettre un audit efficace.

Historique et état actuel du Hurd

Le projet GNU, dont le but est le développement d'un système d'exploitation libre et complet, a débuté en 1983. Le noyau de ce futur système d'exploitation devait donc être écrit. En 1986, le projet GNU décide d'utiliser le noyau TRIX, développé au MIT. Ils doivent alors apporter une série de changements à TRIX.

Ils décident donc qu'utiliser un noyau fonctionnel serait plus productif et commencent à négocier avec le responsable du projet Mach en 1987. Ces négociations n'aboutissent pas rapidement, et pendant ce temps le projet GNU étudie d'autres choix possibles : continuer à utiliser TRIX ou utiliser Sprite, un projet BSD. En 1990, le projet GNU ne travaille plus au développement du noyau car ils espèrent pouvoir se baser sur le projet Mach, et que les négociations ne sont pas terminées.

À ce moment là, le Hurd n'existe pas, un système d'exploitation basé sur un micronoyau et dont les services sont implémentés par de multiples serveurs (la "Horde") a juste été évoqué. C'est en 1991 que Thomas Buschnell fonde le Hurd. Il démarre pour la première fois en 1994. En 1997, la version 0.2 du Hurd est publiée, et la distribution Debian/Hurd est créée l'année suivante.

En 2002, cette distribution s'étend sur 4 CDs, et environ 2500 paquetages Debian/Gnu/Linux ont été portés pour être utilisés avec Debian/Hurd. La même année, les serveurs du Hurd commencent à migrer vers le micronoyau L4, plus moderne que Mach. Le support des threads POSIX est également un ajout majeur.

La nature du Hurd rend son histoire difficile à suivre. En effet, il ne faut pas oublier que ce n'est qu'un ensemble de programmes tournant en espace utilisateur (comme le shell, le compilateur ou un éditeur de texte). Le développement du micronoyau associé est donc relativement indépendant si les interfaces entre les serveurs et ce dernier sont correctement spécifiées.

La version actuelle de Debian/Hurd utilise le micronoyau GNU/Mach. Avec le début du support du micronoyau L4, qui laisse percevoir de nouvelles possibilités, les efforts du développement semblent être dispersés. Il faut en effet garantir le fonctionnement des serveurs du Hurd au-dessus de Mach (corriger les bugs, repousser certaines limites comme la taille des partitions) mais aussi poursuivre le support de L4. Il existe même deux versions du noyau Mach : GNU/Mach et OSKit/Mach.

La principale différence entre les deux est le nombre et la qualité de leurs pilotes de périphériques. OSKit/Mach propose une liste de pilotes équivalente à celle disponible avec la version 2.2.12 du noyau Linux, alors que GNU/Mach ne propose que l'équivalent du noyau Linux 2.0.36. Concrètement, cela se traduit par un ralentissement du développement du système. En effet, de nombreux efforts sont gelés car les développeurs ne veulent pas recommencer la même chose à chaque fois que le micronoyau sur lequel est basé Hurd change.

Certains bugs dans la Xlib ne sont pas corrigés car XFree86 va être encore une fois porté pour OSKit/Mach, et qu'il ne sert donc à rien de les corriger pour la version qui tourne sous GNU/Mach.

De la même façon, il est difficile de se documenter. Le problème principal est le manque d'auteurs de documents. Pire encore, de nombreux documents disponibles semblent obsolètes.

C'est dans ce contexte flou, et malgré l'âge du projet ainsi que ses idées novatrices qu'une des premières conférences sur le Hurd a eu lieu en France. C'est avec plaisir que j'ai pu y assister, voici un mince compte rendu.


Compte rendu de la présentation

La présentation était assurée par certains membres de l'association Hurd-fr et d'Epx.

Hurd-fr est une association dont le but est, je cite : « d'assembler des développeurs afin de contribuer au Hurd en fournissant du code, de la documentation, etc ». À long terme, l'association espère organiser "des réunions, conférences et d'autres choses que fait un HUG (Hurd User Group/Groupe d'Utilisateurs du Hurd)". Pour obtenir plus d'informations sur l'association, veuillez consulter :

http://www.hurdfr.org/

Epx est une association « visant à promouvoir le noyau Linux et les logiciels libres au sein d'EPITA, EPITECH et à l'extérieur ». Ils agissent par « la vente à prix modeste des distributions Linux librement redistribuables, par l'installation à la demande de Linux et par des formations à Linux et aux logiciels libres ». Pour plus d'informations à propos de l'association Epx, veuillez consulter :

http://www.epx.epita.fr/

Nous pouvions compter, au début de la conférence, un peu plus de cinqante personnes. La présentation s'est décomposée en trois étapes : - la présentation du Hurd ; - une série de questions réponses ; - une démonstration d'installation, configuration et utilisation du Hurd.

La présentation (réalisée avec MagicPoint) est disponible ici :

http://kilobug.free.fr/hurd/pres-fr/

Elle est assez complète, débute avec l'historique du projet, les notions de base sur les systèmes d'exploitation et aborde rapidement les aspects techniques fondamentaux du Hurd (translators, RPCs, IPC, pagination). Bien que le contenu de la présentation soit très spécialisé et technique par moment, la conférence était accessible à tous : de nombreuses explications ont été fournies tout au long de la présentation pour donner à chacun les moyens de comprendre celle-ci.

Les limitations du micronoyau utilisé actuellement ont ensuite été abordées et le micronoyau L4 a donc été présenté. La présentation s'est terminée sur l'avenir du Hurd, et comment il est possible de l'influencer.

L'assistance jusque là très attentive a alors pu profiter de la présence de spécialistes du projet pour en savoir plus. Des utilisateurs avancés du système GNU/Linux ont introduit un débat intéressant : pourquoi fournir des efforts au développement d'un projet comme le Hurd qui, en apparence, fournira les mêmes fonctionnalités qu'un système GNU/Linux alors que ce dernier existe déjà et a besoin de développeurs ? La capacité des développeurs du Hurd à produire un système opérationnel a également été mise en doute.

Les réponses apportées, et les échanges qui suivirent furent riches en informations car les argumentaires étaient autant techniques que philosophiques. De nombreuses questions pratiques (est-ce que tel logiciel fonctionne ? est-ce que ce matériel est supporté par le Hurd, et comment ? comment puis-je contribuer au Hurd ?) ont bénéficié de l'expérience des intervenants qui ont pu répondre de manière précise et concrète.

Le moment attendu par un grand nombre des personnes présentes arrivait enfin : la démonstration.

Une distribution Debian/Hurd a été installée sur un PC. Le public pouvait suivre toutes les manipulations nécessaires à sa réussite grâce à un vidéo projecteur. Je pense qu'une majorité des personnes qui n'avaient jamais installé ce système ont été surpris par la rapidité de l'installation, et sa convivialité. En effet, une bonne partie du système d'installation est le même que pour la Debian sid.

Une fois l'installation terminée, une connexion au réseau local ainsi que XFree86 ont été mis en place.

Nous avons donc découvert un système opérationnel, avec lequel on peut utiliser WindowMaker, surfer sur le Web et utiliser Web Get par exemple. Nous avons également pu connaître concrètement les limites du système : la lecture d'une vidéo au format DivX était très lente (à part si la sortie ASCII était choisie), emacs n'était pas utilisable sous XWindow, et quelques "Kernel Panic" sont apparus.

L'utilisation du système a démontré la puissance du concept des translators, et nous avons pu analyser le code source d'un de ces programmes en profitant des commentaires de développeurs du Hurd.

Des distributions Debian/Hurd étaient mises en vente au profit de l'association Hurd-fr, et les discussions passionnées se sont terminées dans la nuit.

Perspectives d'évolution

Cet événement a démontré que le Hurd est un projet novateur, intéressant et utilisable. Lorsqu'on demande aux membres de l'association Hurd-fr ce qu'il manque le plus au projet actuellement, ils répondent sans hésiter : des testeurs. Comme je l'ai dit plus haut, il peut être difficile de se retrouver dans la jungle des micronoyaux et des versions du système, mais le jeu en vaut probablement la chandelle.

Malgré son instabilité et ses caractéristiques qui font pâle figure face à d'autres noyaux libres, le Hurd propose des idées novatrices et leurs applications sont à la fois utiles et plaisantes. De plus les perspectives, notamment avec le choix de l'utilisation de L4 comme micronoyau, sont réjouissantes.

Ce qui m'a sûrement le plus surpris lors de cette conférence est l'attitude pessimiste de certaines personnes. Dire que le Hurd "ne marchera jamais" n'apporte sûrement rien au projet, alors que le tester et en rendre compte aux développeurs le fera, et en plus je suis sûr que vous aimerez ca !

Seulement dix personnes environ contribuent activement au projet, et toute forme de contribution (écriture de documentation, suggestions, test, programmation par exemple) est la bienvenue, n'hésitez pas !




@ Retour à la rubrique Coups de becs

(c) 2002 Julien Delange