Hurd

Premieres impressions d'un systeme d'exploitation surdoue


par Jak' Zimm'

Ouvrez n'importe quelle revue informatique a orientation (soi-disant) professionelle et comptez le nombre d'occurences du mot "revolutionnaire". Combien de fois n'avez-vous pas eu le sentiment qu'ils se moquent de vous? Triste, non? Rassurez-vous, cela ne veut pas dire que le reel progres, les idees geniales et la passion appartiennent au passe. Et pour vous prouver que le fait de ne pas faire couler beaucoup d'encre (pour l'instant!) ne sinifie pas que l'on n'existe pas, laissez moi vous parler du GNU Hurd, un nouveau systeme d'exploitation developpe par l'equipe de Richard Stallman et dont il fut dit qu'il represente la premiere vraie evolution en matiere d'OS depuis 1972 (laissons aux experts le soin d'en debattre). Je ne vous cache pas que ce projet m'interesse beaucoup et comme je suis en train de m'amuser avec une pre-version, je vais tenter de vous exposer a quoi ca ressemble.


1. Introduction

2. Presentation du Hurd et de son micronoyau

3. Delire total (meilleur titre possible pour ce paragraphe qui traite du systeme de fichiers)

4. Le Net est a vous

5. Les serveurs exec

6. Et la securite?

7. Le changement dans la continuite

8. Quel avenir pour le Hurd?

9. Linux killer?


1. Introduction

Le Hurd, appele egalement Gnu OS, est l'aboutissement du celebre Gnu Project, auquel on doit deja beaucoup de logiciels reputes, dont le fantastique compilateur C. C'est la derniere brique de l'edifice, destinee a accueillir l'ensemble de ces programmes et fournir un environnement complet. Personne n'a omis de remarquer que puisqu'il y a deja Linux et FreeBSD, le "free software" (qui N'EST PAS DU TOUT la meme chose que le freeware!) est une realite et developper un troisieme systeme revient a perdre du temps et des moyens pour rien. Erreur! Monsieur Stallman est habite par l'obsession de faire mieux que ce qui existe deja, et c'est pourquoi ses developpeurs sont en train de mettre au monde un systeme entierement nouveau, ultramoderne, apres plusieurs annees de recherches, de developpement... et de retard. Ceux qui savent de quoi il retourne comprennent mon embarras pour decrire ce qu'est le Hurd. Je peux tout au plus vous dire ce qu'il n'est pas. Il ne s'agit en aucun cas d'un clone de quoi que ce soit, en particulier, ce n'est pas un enieme Unix, contrairement aux Linux et autres FreeBSD. Il n'utilise pas le principe du microkernel+serveur unique, comme Nextstep ou MK Linux. Mais le Hurd n'est pas non plus un multiserveur habituel, au sens de Minix ou WinNT: son architecture originale le place resolument a part.


2. Presentation du Hurd et de son micronoyau

Concretement donc, le Hurd est un systeme d'exploitation multi- serveur base sur le micronoyau Mach-4. Certains (comme Fred par exemple) regrettent que ses developpeurs n'aient pas cree leur propre micronoyau, mais rien ne l'aurait justifie: le Mach est gratuit, oriente objet (c'est a la mode, alors...), ses sources sont librement distribuables, il n'y a aucune restriction d'utilisation et sur le plan technologique, cette derniere version est proche de la perfection. Le mot d'ordre est "souplesse". L'objectif est simple: tout ce qui est concevable doit pouvoir etre fait sous Hurd. Le systeme est concu de maniere tres modulaire et de telle sorte que chaque composante du systeme puisse etre modifiee ou echangee comme une brique de Lego. Lorsqu'un utilisateur n'est pas satisfait des services offerts par un serveur, il est libre d'utiliser pour ses besoins un autre serveur, sans que la securite et la liberte des autres utilisateurs ne soient perturbees. La ou les systemes habituels accumulent patches, redirections et surcouches empilees les unes sur les autres, trainees comme des boulets aux pieds au fil des versions, le Hurd est un ensemble harmonieux, modulable et extensible a l'infini. En gros, c'est l'Emacs des systemes d'exploitation. Grace a son micronoyau, Hurd est une veritable systeme multi- plateformes. Portable autant que le Mach et GCC, il peut etre implante sur a peu pres toutes les machines existantes, du micro au gros mainframe. Ce n'est donc pas un systeme specifique au PC ou a une autre machine, au contraire, il rend compatibles des machines aussi differentes que peuvent l'etre une BeBox et un Cray. Il va de soi que le systeme est multiprocesseur, multitache, multi- thread et multi-utilisateur. "Multi-tout", comme disent certains. Il tourne en 64 bits (pas sur PC, bien sur!) et est parfaitement a l'aise dans un environ- nement distribue (comprenez par la que chaque composante du systeme peut etre implantee sur une unite centrale differente). Le clustering est bien sur son affaire: il est capable de reunir toutes les ressources de toutes les machines d'un reseau, comme s'il ne s'agissait que d'un seul gros ordinateur. Lorsqu'un nouveau thread demarre, on lui attribue un processeur de l'UC (ou eventuellement du cluster) de maniere transparente. Ainsi, les performances globales de l'ensemble sont toujours maximales. Il est toutefois evident que les besoins en ressources d'un tel systeme sont bien plus elevees que celles de Linux par exemple et sur une machine peu puissante, comme un PC, sa vivacite est sensiblement inferieure a celle de Linux ou de FreeBSD (tout en restant honorable). C'est partiel- lement compense par le fait que son code est reentrant (le systeme peut servir plusieurs requetes simultanement et de maniere asynchrone, contrai- rement a l'Unix classique ou le noyau ne peut fournir qu'un seul service a la fois en suspandant l'ensemble des processus), mais il ne faut pas se faire d'illusions: un ou des processeurs RISC, beaucoup de memoire vive et des disques SCSI rapides sont de rigueur.


3. Delire total (meilleur titre possible pour ce paragraphe qui traite du systeme de fichiers)

La gestion de l'arborescence sous Hurd est assez spectaculaire. La base en sont les "translators" (Mister Allgood dirait les "traducteurs"). - C'est quoi, un translator? Je l'aurai parie, tiens... Un translator est un serveur ayant pour fonction de gerer la lecture et l'ecriture du fichier auquel il est associe. Ca a l'air anodin; en realite, c'est la clef d'immenses pouvoirs. Je ne plaisante pas. L'interet de la chose est le fait que la notion de "fichier" est completement dissociee de celle de "donnees stockees sur le disque". Chaque noeud ou feuille de l'arborescence peut en effet representer... n'importe quoi! Un "vrai" fichier, un serveur, le sous-marin nucleaire de votre grand-mere, ce que vous voudrez! L'exemple le plus bateau que l'on puisse trouver (et qui est toujours cite en premier lieu) sont les fichiers .tgz. Attachez a un tel fichier le translator approprie, et votre archive se comporte comme un repertoire! Vous pouvez aller dedans, copier, effacer et deplacer des fichiers... Oui, je sais, Machintruc Utilities fait ca sous WinDOS depuis la nuit des temps. Mais ici, l'archive n'est pas AFFICHEE comme un repertoire, l'archive EST un repertoire et les logiciels n'y voient que du feu. Vous pouvez par exemple compiler le programme que vous venez de telecharger sans que GCC se doute le moins du monde que le source est gunzipe et detare au vol! Grace aux translators, un fichier peut etre la materialisation du port de communication d'une tache. Le dialogue avec celle-ci se resume alors a lire et ecrire dans ce fichier, sans qu'on ait a s'occuper de la lourde gestion de l'IPC. Du coup, le client-serveur est d'une trivialite deconcertante! En fait, le systeme laisse a celui qui implemente un translator une liberte totale. Supposons par exemple que vous voulez charger une image de PhotoCD dans un programme qui ne connait que le format XPM. Si vous etes deja en train de copier l'image sur le dur et vous avez l'intention de passer la demi-heure qui suit a la convertir en JPEG, puis en TGA, puis en GIF, puis en TIFF, puis en BMP et enfin en XPM, vous n'avez rien compris! Il suffit d'avoir un translator effectuant la conversion et le tour est joue. Tout est possible! On peut imaginer un translator dialoguant avec un SGBD. Votre arborescence est alors la representation d'une base de donnees plutot qu'un vulgaire filesystem (to be or not to be...) Et, j'insiste, tout ceci est totalement transparent. Ca marche sans qu'il y ait a recompiler ou configurer quoi que ce soit (si ce n'est le translator). Le plus fou dans cette histoire, c'est que jongler avec les translators n'est pas un privilege du root. Au contraire, a moins que ca ne lui soit explicitement interdit, chaque utilisateur et chaque processus peut attacher un translator a un noeud de l'arborescence simplement avec la commande settrans (Set Translator). Et bien sur, chacun est libre d'ecrire de nouveaux translators. Vous voyez que les possibilites qui en decoulent sont absolument infinies.


4. Le Net est a vous

Eh oui, il y a encore beaucoup plus fort. Tenez vous bien: les trans- lators ont permis aux concepteurs de Hurd d'implanter le "ftp transparent". Et ca, ladies and gentlemen, ca ne signifie ni plus ni moins que votre machine et Internet n'en font qu'un! Les noeuds du reseau apparaissent comme des sous-repertoires dans votre arborescence et vous pouvez naviguer dedans, comme si le monde entier etait sur un disque dur. Bien entendu, il n'est pas question ici de protocoles proprietaires ou d'applications developpees specifiquement pour - c'est gere par le systeme, de maniere naturelle et transparente. Vous savez creer un lien sur un fichier? Vous pouvez creer de la meme maniere un lien sur le serveur du Centre National de Mycologie Appliquee du Djibouti. Cela donne veritablement une dimension nouvelle au "networking" (que celui qui trouve un terme francais me fasse savoir) et la concurrence n'a qu'a bien se tenir! En plus d'apporter une puissance vertigineuse, c'est une aubaine pour les utilisateurs non informaticiens. Jusqu'a present, il fallait savoir se ser- vir de plein d'utilitaires et d'environnements, aussi bien sous Unix que sur PC et Mac. Sous Hurd, l'utilisateur peut gerer ABSOLUMENT TOUT (fichiers, mail, news, telechargement, communication...) d'une maniere uniforme. Prenez un bureau iconique sous X11 comme celui de Motif et vous obtenez le premier systeme reellement naturel pour le novice. Et, au risque de me repeter, j'insiste lourdement: ce n'est pas une question d'affichage ou de shell permettant de "faire comme si", c'est REEL. A l'heure ou on parle d'Intranet et du Network Computer comme etant la voie de l'avenir, c'est un serieux avantage sur la concurrence.


5. Les serveurs exec

Une autre point important du Hurd est la maniere d'executer les programmes. Sous un systeme classique, il n'y a rien a dire la dessus: l'OS reserve de la memoire, charge le fichier et les .so, les reloge si necessaire et c'est parti. Sous Hurd, c'est different. L'execution d'un programme sous Hurd est commandee non pas par un, mais par tout un ensemble de serveurs: les serveurs exec. Leur role est de "comprendre" l'executable et faire le necessaire pour qu'il puisse tourner. Vous me voyez venir: grace a cette technique, il est possible d'utiliser n'importe quel format d'executables, faire tourner des programmes compiles pour d'autres OS voire pour une autre machine (a condition d'avoir un serveur d'emulation de CPU)... Vous vous rendez compte de l'ouverture que cela represente? Sur PC par exemple, des serveurs permettant de faire tourner des programmes Linux, FreeBSD, Solaris, SCO, iBCS et ms-dos sont en developpement. Et rien ne s'oppose (du moins du point de vue technique) a ce qu'il y en ait aussi pour OS/2 et NT! La encore, chaque utilisateur peut faire ce qu'il veut. Hurd est un systeme capable de s'adapter entierement aux bons plaisirs de chacun, plutot que d'obliger ses utilisateurs a accepter les siens (sans commentaire... je ne veux pas avoir un proces sur le dos! [Vanne a 2F... Au fait, vous savez comment va s'appeler le processeur developpe par HP et Intel, successeur du PA-8000? Le PA-8086! Ca, c'est de Romain Dolbeau]).


6. Et la securite?

Apres ce qui vient d'etre dit, certains pouraient etre tentes de penser qu'un systeme pareil ne peut etre qu'un immonde sac de noeuds, ou des bouts de code interagissent de maniere totalement anarchique. Qu'ils se rassurent, le Hurd est un OS sur. Et meme tres sur. Au centre du systeme d'exploitation, le micronoyau Mach4 satisfait les criteres de la classe TCSEC B3 (*). Je rappelle que dans la seule categorie superieure, la classe A, les exigeances sont identiques, sauf qu'on demande en plus une demonstration formelle de la validite des dispositifs de securite. Autant dire que les processus, threads, zones memoire et les drivers de bas niveau sont geres avec une rigueur sans faille. A l'etage superieur se trouve le serveur d'authentification qui super- vise le fonctionnement general du systeme et veille a ce que les droits et res- trictions d'acces aux objets soient scrupuleusement respectes. Chaque requete doit etre explicitement autorisee par ce serveur. Le controle des permissions est ainsi concentre dans un unique module, ce qui rend l'ensemble du systeme beaucoup moins vulnerable. (Remarque: il est evident qu'aucun utilisateur ne peut decider d'utiliser un serveur d'authentification personnel sous pretexte que celui installe sur le systeme ne lui convient pas!) Ajoutez a cela la grande stabilite de l'ensemble (si un serveur est at- taque ou plante a la suite d'un bug, il suffit la plupart du temps de le relan- cer pour que le systeme retrouve sa sante, sans avoir besoin de rebooter) et vous avez un OS tres fiable, sans trous de securite.


7. Le changement dans la continuite

Chacun sait qu'en informatique, le marketing est plus fort que la technologie, mais la Free Software Foundation n'a pas les moyens et surtout la volonte de lancer une campagne publicitaire pour son bebe: le GNU ne peut avoir du succes que s'il preserve les investissements anterieurs des utilisateurs. C'est pourquoi tout est prevu pour faire du Hurd une plante aussi peu exotique que possible. Aussi, les bibliotheques du systeme integrent entre autres une API 100% compatible POSIX 2 (**) (GNU est toujours soucieux de respecter les dernieres normes en vigueur). Les logiciels POSIX pur peuvent donc etre portes sous Hurd moyennant une simple recompilation. De meme, Hurd est un OS pur, en aucun cas un environnement utilisateur comme MacOS ou Win95. On retrouve donc logiquement l'interface d'Unix: les shells et les commandes du systeme sont identiques (c'est evident, ce sont ceux de GNU!) et bien sur X11 et donc Motif et demain Gnustep sont au rendez-vous. L'arborescence est Unix-like, avec une racine unique (heureusement!) et des translators pour les systemes de fichiers standard sont d'ores et deja presents. Bref, au premier apercu, on a l'impression de se retrouver sous Unix comme si rien n'etait et les reflexes acquis sont toujours valables. Cela dit, Gnu is Not Unix et inevitablement, on finit par se rendre compte que le Hurd est bel et bien different. Ce n'est pas forcement un incon- venient, mais c'est un facteur dont il faudra tenir compte. L'arborescence n'est pas organisee de la meme maniere et au debut, on a du mal pour s'y repe- rer. L'administration du systeme n'a evidemment rien a avoir avec celle d'Unix, ce qui implique un temps d'adaptation certain. La quasi-totalite des logiciels phares du monde Unix utilise en plus du POSIX des appels systeme BSD dans le meilleur des cas, proprietaires sinon, leur portage sous Hurd necessitera donc un travail plus important que la stricte recompilation du cas ideal theorique. Et surtout, des choses developpees pour Hurd seront difficilement (voire pas du tout) recuperables ailleurs.


8. Quel avenir pour le Hurd?

Il est bien sur trop tot pour faire des pronostics qui aient un sens. (en supposant qu'il soit possible en informatique de faire des pronostics autres qu'aberrants et errones... vous y croyez, vous?) Le nouveau systeme peut avoir l'effet d'un cyclone sur le marche des stations de travail et serveurs; il peut tout aussi bien n'etre a jamais qu'une curiosite du milieu academique. Lorsqu'une version finale sera prete, le GNU Project prendra aussitot un aspect different en devenant une plate forme logicielle nouvelle. Il se peut que des firmes saisissent l'occasion et proposent des solutions a base de GNU defiant toute concurrence a la fois sur le plan de la puissance et sur celui du prix. On en voit d'ailleurs deja quelques unes (Cygnus, Delorie...) Le milieu scientifique et universitaire est naturellement le terrain de predilection de Hurd. Ces institutions ont typiquement un budget serre et en meme temps des exigeances tres elevees: des centaines ou milliers d'uti- lisateurs, un materiel qu'il faut exploiter au maximum, des bases de donnees gigantesques et un trafic massif sur Internet. GNU peut etre une excel- lente solution pour cette classe d'utilisateurs. Linux est deja bien implante dans le milieu des associations, clubs et autres organismes ne voulant pas etre a la merci d'une firme "pompe a fric" quelconque. Par exemple, certains hopitaux utilisent Linux pour gerer une base de donnees de leurs patients. En offrant davantage d'ouverture et de securite, Hurd ne manquera pas de les interesser. Etant donne sa politique de distribution, aucune promotion ne sera faite pour Hurd, ce qui laisse un gros point d'interrogation sur sa percee dans le secteur industriel. Comme Linux, il ne pourra compter que sur ses qualites et sur l'enthousiasme qu'elles sauront eveiller chez les passionnes pour se frayer son chemin. Cela dit, il est tout de meme mieux loti que ne l'etait Linux a ses debuts. La renomee de GNU n'est plus a faire et tous les "Unix Wizards" voient en ces trois lettres le synonyme de logiciels de grande qualite. GCC est aujourd'hui certainement le compilateur le plus utilise sur les stations de travail, Emacs est depuis longtemps un element incontournable pour qui veut commercialiser un systeme Unix et sur de nombreux sites, les utilitaires systeme GNU ont extermine leurs homologues d'origine. Avec ses nombreuses qualites, Hurd a tout pour seduire.


9. Linux killer?

On voit parfois des gens s'inquieter pour Linux et certains vont meme jusqu'a l'enterrer, disant que le Hurd va le balayer sur son passage. Disons le clairement: il n'y a aucun souci a se faire quant a l'avenir de Linux. Bien au contraire, il est en train de conquerir de nombreuses plate-formes et a toutes les chances de devenir l'Unix le plus utilise qui soit. D'ail- leurs, les peres de Hurd le disent eux-memes: la concurrence va se jouer entre le Free Software et les logiciels commerciaux, pas au sein du Free Software. Non, decidement, Linux n'a pas fini de nous faire rever!


(*) TCSEC: Trusted Compuper System Evaluation Criteria (dit egalement Livre orange) Standard permettant de classifier les systemes informatiques selon le degre de protection qu'ils offrent. Sans rentrer dans les details, disons qu'il existe sept classes: D (aucune protection), C1, C2, B1, B2, B3 et A (garantie maximale et preuve formelle). Les systemes d'exploitation pour micro sont bien entendu D tandis que Windows NT et la plupart des Unix sont certifies C2. Je ne sais pas si Linux a ete evalue selon ces criteres mais il ne serait probablement que C1, la securite n'etant pas une priorite pour lui.

(**) POSIX: Portable Operating System Interface (et X comme Unix) Specification d'API normalisee qui fait office de standard universel. Defini a l'origine comme etant l'intersection des API SystemV et BSD, le POSIX est devenu LA refernece, y compris pour des systemes aussi elogines d'Unix comme Be OS ou Gershwin.


Retour