Informatique

Navigation rapide

Nouveautés ➪

  1. Grands Étasuniens
  2. Neverwinter Nights

Bloc-notes ➪

Calendrier ➪

Premières impressions d’un système d’exploitation surdoué

Ouvrez n’importe quelle revue informatique à orientation (soi-disant) professionelle et comptez le nombre d’occurences du mot « révolutionnaire ». 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 réel progrès, les idées géniales et la passion appartiennent au passé. Et pour vous prouver que ne pas faire couler beaucoup d’encre (pour l’instant !) ne signifie pas que l’on n’existe pas, laissez moi vous parler du GNU HURD, un nouveau système d’exploitation développé par l’équipe de Richard Stallman et dont il fut dit qu’il représente la première vraie évolution en matière 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 à quoi ça ressemble.

  1. Introduction
  2. Présentation du HURD et de son micronoyau
  3. Délire total (meilleur titre possible pour ce paragraphe qui traite du système de fichiers)
  4. Le Net est à vous
  5. Les serveurs exec
  6. Et la sécurité ?
  7. Le changement dans la continuité
  8. Quel avenir pour le HURD ?
  9. Linux killer ?

Introduction

Le HURD, appelé également GNU OS, est l’aboutissement du célèbre GNU Project, auquel on doit déjà beaucoup de logiciels réputés, dont le fantastique compilateur C. C’est la dernière brique de l’édifice, destinée à accueillir l’ensemble de ces programmes et fournir un environnement complet.

Personne n’a omis de remarquer que puisqu’il y a déjà Linux et FreeBSD, le free software (qui n’est pas du tout la même chose que le freeware !) est une réalité et développer un troisième système revient à perdre du temps et des moyens pour rien. Erreur ! Monsieur Stallman est habité par l’obsession de faire mieux que ce qui existe déjà, et c’est pourquoi ses développeurs sont en train de mettre au monde un système entièrement nouveau, ultramoderne, après plusieurs années de recherches, de développement… et de retard.

Ceux qui savent de quoi il retourne comprennent mon embarras pour décrire 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 énième 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 résolument à part.

Présentation du HURD et de son micronoyau

Concrètement donc, le HURD est un système d’exploitation multi-serveur basé sur le micronoyau Mach-4. Certains (comme Fred par exemple) regrettent que ses développeurs n’aient pas créé leur propre micronoyau, mais rien ne l’aurait justifié : le Mach est gratuit, orienté objet (c’est à la mode, alors…), ses sources sont librement distribuables, il n’y a aucune restriction d’utilisation et sur le plan technologique, cette dernière version est proche de la perfection.

Le mot d’ordre est « souplesse ». L’objectif est simple : tout ce qui est concevable doit pouvoir être fait sous HURD. Le système est concu de manière très modulaire et de telle sorte que chaque composante du système puisse être modifiée ou échangée 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 sécurité et la liberté des autres utilisateurs ne soient perturbée. Là où les systèmes habituels accumulent patches, redirections et surcouches empilées les unes sur les autres, trainées comme des boulets aux pieds au fil des versions, le HURD est un ensemble harmonieux, modulable et extensible à l’infini. En gros, c’est l’Emacs des systèmes d’exploitation.

Grâce à son micronoyau, HURD est un véritable système multi-plateformes. Portable autant que le Mach et GCC, il peut être implanté sur à peu près toutes les machines existantes, du micro au gros mainframe. Ce n’est donc pas un système spécifique au PC ou à une autre machine, au contraire, il rend compatibles des machines aussi différentes que peuvent l’être une BeBox et un Cray. Il va de soi que le système est multiprocesseur, multitâche, multi-thread et multi-utilisateur. « Multi-tout », comme disent certains. Il tourne en 64 bits (pas sur PC, bien sûr !) et est parfaitement à l’aise dans un environnement distribué (comprenez par là que chaque composante du système peut être implantée sur une unité centrale différente). Le clustering est bien sûr son affaire : il est capable de réunir toutes les ressources de toutes les machines d’un réseau, comme s’il ne s’agissait que d’un seul gros ordinateur.

Lorsqu’un nouveau thread démarre, on lui attribue un processeur de l’UC (ou éventuellement du cluster) de manière transparente. Ainsi, les performances globales de l’ensemble sont toujours maximales. Il est toutefois évident que les besoins en ressources d’un tel système sont bien plus élevées que celles de Linux par exemple et sur une machine peu puissante, comme un PC, sa vivacité est sensiblement inférieure à celle de Linux ou de FreeBSD (tout en restant honorable). C’est partiellement compensé par le fait que son code est réentrant (le système peut servir plusieurs requêtes simultanement et de manière asynchrone, contrairement à l’Unix classique où le noyau ne peut fournir qu’un seul service à la fois en suspendant l’ensemble des processus), mais il ne faut pas se faire d’illusion : un ou des processeurs RISC, beaucoup de mémoire vive et des disques SCSI rapides sont de rigueur.

Délire total

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 parié, tiens… Un translator est un serveur ayant pour fonction de gérer la lecture et l’écriture du fichier auquel il est associé. Ça a l’air anodin ; en réalité, c’est la clef d’immenses pouvoirs. Je ne plaisante pas. L’intérêt de la chose est que la notion de fichier est complètement dissociee de celle de « données stockées sur le disque ». Chaque nœud ou feuille de l’arborescence peut en effet représenter… n’importe quoi ! Un « vrai »  fichier, un serveur, le sous-marin nucléaire de votre grand-mère, ce que vous voudrez !

L’exemple le plus bateau que l’on puisse trouver (et qui est toujours cité en premier lieu) sont les fichiers .tgz. Attachez à un tel fichier le translator approprié, et votre archive se comporte comme un répertoire ! Vous pouvez aller dedans, copier, effacer et déplacer des fichiers… Oui, je sais, Machintruc Utilities fait ça sous WinDOS depuis la nuit des temps. Mais ici, l’archive n’est pas affichée comme un répertoire, l’archive est un répertoire et les logiciels n’y voient que du feu. Vous pouvez par exemple compiler le programme que vous venez de télécharger sans que GCC se doute le moins du monde que le source est gunzipé et détaré au vol !

Grâce aux translators, un fichier peut être la matérialisation du port de communication d’une tâche. Le dialogue avec celle-ci se résume alors à lire et écrire dans ce fichier, sans qu’on ait à s’occuper de la lourde gestion de l’IPC. Du coup, le client-serveur est d’une trivialité déconcertante ! En fait, le système laisse à celui qui implémente un translator une liberté totale. Supposons par exemple que vous voulez charger une image de PhotoCD dans un programme qui ne connaît que le format XPM. Si vous êtes déjà en train de copier l’image sur le dur et vous avez l’intention de passer la demi-heure qui suit à 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 joué. Tout est possible !

On peut imaginer un translator dialoguant avec un SGBD. Votre arborescence est alors la représentation d’une base de données plutôt qu’un vulgaire filesystem (to be or not to be…) Et, j’insiste, tout ceci est totalement transparent. ça marche sans qu’il y ait à 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 privilège du root. Au contraire, à moins que ça ne lui soit explicitement interdit, chaque utilisateur et chaque processus peut attacher un translator à un nœud de l’arborescence simplement avec la commandé settrans (Set Translator). Et bien sûr, chacun est libre d’écrire de nouveaux translators. Vous voyez que les possibilités qui en découlent sont absolument infinies.

Le Net est à vous

Eh oui, il y a encore beaucoup plus fort. Tenez vous bien : les translators ont permis aux concepteurs de HURD d’implanter le « ftp transparent ». Et ça, ladies and gentlemen, ça ne signifie ni plus ni moins que votre machine et Internet n’en font qu’un ! Les nœuds du réseau apparaissent comme des sous-répertoires dans votre arborescence et vous pouvez naviguer dedans, comme si le monde entier était sur un disque dur.

Bien entendu, il n’est pas question ici de protocoles proprietaires ou d’applications développées spécifiquement pour – c’est géré par le système, de manière naturelle et transparente. Vous savez créer un lien sur un fichier ? Vous pouvez créer de la même manière un lien sur le serveur du Centre National de Mycologie Appliquée de Djibouti. Cela donne véritablement 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’à présent, il fallait savoir se servir de plein d’utilitaires et d’environnements, aussi bien sous Unix que sur PC et Mac. Sous HURD, l’utilisateur peut gérer absolument tout (fichiers, mail, news, téléchargement, communication…) d’une manière uniforme. Prenez un bureau iconique sous X11 comme celui de Motif et vous obtenez le premier système réellement naturel pour le novice. Et, au risque de me répéter, j’insiste lourdement : ce n’est pas une question d’affichage ou de shell permettant de « faire comme si », c’est réel. À l’heure où on parle d’Intranet et du Network Computer comme étant la voie de l’avenir, c’est un sérieux avantage sur la concurrence.

Les serveurs exec

Une autre point important du HURD est la manière d’exécuter les programmes. Sous un système classique, il n’y a rien à dire là-dessus : l’OS réserve de la mémoire, charge le fichier et les .so, les reloge si nécessaire et c’est parti. Sous HURD, c’est différent. L’exécution d’un programme sous HURD est commandée non pas par un, mais par tout un ensemble de serveurs : les serveurs exec. Leur rôle est de « comprendre »  l’exécutable et faire le nécessaire pour qu’il puisse tourner.

Vous me voyez venir : grâce à cette technique, il est possible d’utiliser n’importe quel format d’exécutables, faire tourner des programmes compiles pour d’autres OS voire pour une autre machine (à condition d’avoir un serveur d’emulation de CPU)… Vous vous rendez compte de l’ouverture que cela représente ? Sur PC par exemple, des serveurs permettant de faire tourner des programmes Linux, FreeBSD, Solaris, SCO, iBCS et MS-DOS sont en développement. Et rien ne s’oppose (du moins du point de vue technique) à ce qu’il y en ait aussi pour OS/2 et NT ! Là encore, chaque utilisateur peut faire ce qu’il veut. HURD est un système capable de s’adapter entièrement aux bons plaisirs de chacun, plutôt que d’obliger ses utilisateurs à accepter les siens (sans commentaire… je ne veux pas avoir un procès sur le dos !).

Et la sécurité ?

Après ce qui vient d’être dit, certains pouraient être tentés de penser qu’un système pareil ne peut être qu’un immonde sac de nœuds, où des bouts de code interagissent de manière totalement anarchique. Qu’ils se rassurent, le HURD est un OS sûr. Et même très sûr. Au centre du système d’exploitation, le micronoyau Mach4 satisfait les critères de la classe TCSEC B3 (*). Je rappelle que dans la seule catégorie supérieure, la classe A, les exigeances sont identiques, sauf qu’on demande en plus une démonstration formelle de la validité des dispositifs de sécurité. Autant dire que les processus, threads, zones mémoire et les drivers de bas niveau sont gérés avec une rigueur sans faille.

À l’étage supérieur se trouve le serveur d’authentification qui supervise le fonctionnement général du système et veille à ce que les droits et restrictions d’accès aux objets soient scrupuleusement respectés. Chaque requête doit être explicitement autorisée par ce serveur. Le contrôle des permissions est ainsi concentré dans un unique module, ce qui rend l’ensemble du système beaucoup moins vulnérable. (Remarque : il est évident qu’aucun utilisateur ne peut décider d’utiliser un serveur d’authentification personnel sous prétexte que celui installe sur le système ne lui convient pas !).

Ajoutez à cela la grande stabilité de l’ensemble (si un serveur est attaqué ou plante à la suite d’un bug, il suffit la plupart du temps de le relancer pour que le système retrouve sa santé, sans avoir besoin de rebooter) et vous avez un OS très fiable, sans trou de sécurité.

Le changement dans la continuité

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 volonté de lancer une campagne publicitaire pour son bébé : le GNU ne peut avoir du succès que s’il préserve les investissements antérieurs des utilisateurs.

C’est pourquoi tout est prévu pour faire du HURD une plante aussi peu exotique que possible. Aussi, les bibliothèques du système intègrent entre autres une API 100 % compatible POSIX 2 (**) (GNU est toujours soucieux de respecter les dernières normes en vigueur). Les logiciels POSIX purs peuvent donc être portés sous HURD moyennant une simple recompilation. De même, 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 système sont identiques (c’est évident, ce sont ceux de GNU !) et bien sûr 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 systèmes de fichiers standard sont d’ores et déjà présents.

Bref, au premier apercu, on a l’impression de se retrouver sous Unix comme si rien n’était et les reflexes acquis sont toujours valables. Cela dit, GNU is Not Unix et inévitablement, on finit par se rendre compte que le HURD est bel et bien différent. Ce n’est pas forcément un inconvénient, mais c’est un facteur dont il faudra tenir compte. L’arborescence n’est pas organisée de la même manière et au début, on a du mal pour s’y repérer. L’administration du système n’a évidemment rien à voir avec celle d’Unix, ce qui implique un temps d’adaptation certain. La quasi-totalité des logiciels phares du monde Unix utilise en plus du POSIX des appels système BSD dans le meilleur des cas, propriétaires sinon, leur portage sous HURD nécessitera donc un travail plus important que la stricte recompilation du cas idéal théorique. Et surtout, des choses développées pour HURD seront difficilement (voire pas du tout) récupérables ailleurs.

Quel avenir pour le HURD ?

Il est bien sûr trop tôt pour faire des pronostics qui aient un sens (en supposant qu’il soit possible en informatique de faire des pronostics autres qu’aberrants et erronés… vous y croyez, vous ?) Le nouveau système peut avoir l’effet d’un cyclone sur le marché des stations de travail et serveurs ; il peut tout aussi bien n’être à jamais qu’une curiosité du milieu académique.

Lorsqu’une version finale sera prête, le GNU Project prendra aussitôt un aspect différent en devenant une plate-forme logicielle nouvelle.

Étant donné sa politique de distribution, aucune promotion ne sera faite pour HURD, ce qui laisse un gros point d’interrogation sur sa percée dans le secteur industriel. Comme Linux, il ne pourra compter que sur ses qualités et sur l’enthousiasme qu’elles sauront éveiller chez les passionnés pour se frayer son chemin.

Cela dit, il est tout de même mieux loti que ne l’était Linux à ses debuts. La renomée de GNU n’est plus à faire et tous les « Unix Wizards »  voient en ces trois lettres le synonyme de logiciels de grande qualité. GCC est aujourd’hui certainement le compilateur le plus utilisé sur les stations de travail, Emacs est depuis longtemps un élément incontournable pour qui veut commercialiser un système Unix et sur de nombreux sites, les utilitaires système GNU ont exterminé leurs homologues d’origine. Avec ses nombreuses qualités, HURD a tout pour séduire.

Linux killer ?

On voit parfois des gens s’inquiéter pour Linux et certains vont même jusqu’à l’enterrer, disant que le HURD va le balayer sur son passage. Disons le clairement : il n’y a aucun souci à se faire quant à l’avenir de Linux. Bien au contraire, il est en train de conquérir de nombreuses plate-formes et a toutes les chances de devenir l’Unix le plus utilisé qui soit. D’ailleurs, les pères de HURD le disent eux-mêmes : la concurrence va se jouer entre le Free Software et les logiciels commerciaux, pas au sein du Free Software. Non, décidément, Linux n’a pas fini de nous faire rêver !

Jak’ Zimm’ (vernie_m, étudiant à l’EPITA)


TCSEC
Trusted Compuper System Evaluation Criteria (dit également Livre orange). Standard permettant de classifier les systèmes informatiques selon le degré de protection qu’ils offrent. Sans rentrer dans les détails, disons qu’il existe sept classes : D (aucune protection), C1, C2, B1, B2, B3 et A (garantie maximale et preuve formelle). Les systèmes d’exploitation pour micro sont bien entendu D tandis que Windows NT et la plupart des Unix sont certifiés C2. Je ne sais pas si Linux a été évalué selon ces critères mais il ne serait probablement que C1, la sécurité n’etant pas une priorité pour lui.
POSIX
Portable Operating System Interface (et X comme Unix) Specification d’API normalisée qui fait office de standard universel. Défini à l’origine comme étant l’intersection des API SystemV et BSD, le POSIX est devenu la réference, y compris pour des systèmes aussi éloignés d’Unix comme Be OS ou Gershwin.

Contact • Mise à jour : 15-oct-04 Optimisé pour tous les navigateursXHTML 1.1 & CSS 2 valides