GNU Hurd - GNU Hurd

GNU Hurd
Hurd-logo.svg
Capture d'écran debian-HURD 2019-02-05 17-41-41.png
Développeur Projet GNU
Thomas Bushnell
Roland McGrath
Marcus Brinkmann
Neal Walfield
Samuel Thibault
Écrit en Assemblage , C
Famille d'OS Unix-like
État de fonctionnement Courant
Modèle source Logiciel gratuit
Première version 1990 ; il y a 31 ans ( 1990 )
Dernière version 0.9 / 7 juillet 2019 ; il y a 2 ans ( 2019-07-07 )
Plateformes IA-32 , i686
Type de noyau Micronoyau multiserveur
Licence GPL-2.0 ou version ultérieure
Site officiel www .gnu .org / logiciel / hurd /

GNU Hurd est le micronoyau multiserveur écrit dans le cadre de GNU . Il est en cours de développement depuis 1990 par le projet GNU de la Free Software Foundation , conçu pour remplacer le noyau Unix , et publié en tant que logiciel libre sous la licence publique générale GNU . Lorsque le noyau Linux s'est avéré être une solution viable, le développement de GNU Hurd s'est ralenti, alternant parfois entre stase et activité et intérêt renouvelés.

La conception du Hurd consiste en un ensemble de protocoles et de processus serveur (ou démons , dans la terminologie Unix ) qui s'exécutent sur le micronoyau GNU Mach . Le Hurd vise à surpasser le noyau Unix en termes de fonctionnalité, de sécurité et de stabilité, tout en restant largement compatible avec lui. Le projet GNU a choisi le micronoyau multiserveur pour le système d'exploitation, en raison des avantages perçus par rapport à l' architecture traditionnelle du noyau monolithique Unix , un point de vue qui avait été préconisé par certains développeurs dans les années 1980.

En décembre 1991, l'architecte principal du Hurd a décrit le nom comme un acronyme mutuellement récursif :

Il est temps d'expliquer le sens de " Hurd ". « Hurd » signifie « Hird of Unix-Replacing Daemons ». Et puis, « Hird » signifie « Hurd of Interfaces Representing Depth ». Nous avons ici, à ma connaissance, le premier logiciel à être nommé par une paire d'acronymes mutuellement récursifs.

Comme hurd et hird sont des homophones du mot anglais herd , le nom complet GNU Hurd est également un jeu sur les mots herd of gnus , reflétant le fonctionnement du noyau.

Le logo s'appelle les boîtes Hurd et il reflète également l'architecture. Le logo est un graphique où les nœuds représentent les serveurs du noyau Hurd et les bords dirigés sont des messages IPC .

Historique du développement

Richard Stallman a fondé le projet GNU en septembre 1983 dans le but de créer un système d'exploitation GNU libre . Initialement, les composants nécessaires au développement du noyau ont été écrits : éditeurs , shell , compilateur , débogueur etc. En 1989, la GNU GPL a vu le jour et le seul composant majeur manquant était le noyau.

Le développement sur le Hurd a commencé en 1990 après une tentative de noyau abandonnée en 1986, basée sur le système d'exploitation de recherche TRIX développé par le professeur Steve Ward et son groupe au Laboratoire d'informatique du MIT (LCS). Selon Thomas Bushnell , l'architecte initial du Hurd, leur premier plan était d'adapter le noyau 4.4BSD- Lite et, avec le recul, "Il est maintenant parfaitement évident pour moi que cela aurait réussi à merveille et que le monde serait un endroit très différent aujourd'hui." En 1987, Richard Stallman a proposé d'utiliser le micronoyau Mach développé par Richard Rashid à l'Université Carnegie Mellon . Les travaux à ce sujet ont été retardés de trois ans en raison de l'incertitude quant à savoir si CMU publierait le code Mach sous une licence appropriée.

Avec la sortie du noyau Linux en 1991, le principal utilisateur des composants de l' espace utilisateur de GNU est rapidement devenu des systèmes d'exploitation basés sur le noyau Linux ( distributions Linux ), ce qui a incité à l'apparition du terme GNU/Linux .

Le développement du Hurd s'est fait lentement. Malgré une annonce optimiste de Stallman en 2002 prédisant une sortie de GNU/Hurd plus tard cette année-là, le Hurd n'est toujours pas considéré comme adapté aux environnements de production. Le développement en général n'a pas répondu aux attentes, et il y a encore un nombre important de bugs et de fonctionnalités manquantes. Cela a abouti à un produit plus pauvre que beaucoup (y compris Stallman) ne l'avaient prévu. En 2010, après vingt ans de développement, Stallman a déclaré qu'il n'était "pas très optimiste quant au GNU Hurd. Il fait des progrès, mais pour être vraiment supérieur, il faudrait résoudre beaucoup de problèmes profonds", mais a ajouté que "le terminer n'est pas crucial" pour le système GNU car un noyau libre existait déjà ( Linux ), et terminer Hurd ne résoudrait pas le principal problème restant pour un système d'exploitation libre : la prise en charge des périphériques.

Le projet Debian , entre autres, a travaillé sur le projet Hurd pour produire des distributions binaires de systèmes d'exploitation GNU basés sur Hurd pour les systèmes compatibles IBM PC .

Après des années de stagnation, le développement a repris en 2015 et 2016, avec quatre sorties au cours de ces deux années.

Le 20 août 2015, lors du Google Summer of Code , il a été annoncé que GNU Guix avait été porté sur GNU Hurd.

Architecture

Structure générale des systèmes d'exploitation monolithiques, micronoyaux et hybrides, respectivement.

Contrairement à la plupart des noyaux de type Unix , le Hurd utilise une architecture serveur-client , construite sur un micro - noyau qui est chargé de fournir les services de noyau les plus élémentaires - en coordonnant l'accès au matériel : le processeur (via la gestion des processus et la planification ), la RAM (via gestion de la mémoire ) et d'autres périphériques d'entrée/sortie (via la planification des E/S ) pour le son, les graphiques, le stockage de masse, etc. En théorie, la conception du micronoyau permettrait à tous les pilotes de périphérique d'être construits en tant que serveurs fonctionnant dans l'espace utilisateur , mais aujourd'hui, la plupart des pilotes de ce type sont encore contenus dans l' espace noyau GNU Mach .

Selon les développeurs de Hurd, le principal avantage de la conception basée sur le micronoyau est la possibilité d'étendre le système : développer un nouveau module ne nécessiterait pas une connaissance approfondie du reste du noyau, et un bogue dans un module ne ferait pas planter l'ensemble du système. . Hurd propose un concept de traducteurs , un cadre de modules utilisé pour étendre les fonctionnalités d'un système de fichiers.

Dès le début, le Hurd a été développé pour utiliser GNU Mach comme micronoyau. Il s'agissait d'une décision technique prise par Richard Stallman , qui pensait que cela accélérerait le travail en en économisant une grande partie. Il a admis qu'il s'était trompé à ce sujet. D'autres systèmes de type Unix fonctionnant sur le micronoyau Mach incluent OSF/1 , Lites et MkLinux . macOS et NeXTSTEP utilisent des noyaux hybrides basés sur Mach.

Autres micronoyaux

À partir de 2004, divers efforts ont été lancés pour porter le Hurd sur des micronoyaux plus modernes. Le micronoyau L4 était le choix initial en 2004, mais les progrès se sont ralentis. Néanmoins, en 2005, le développeur de Hurd, Neal Walfield, a terminé le cadre initial de gestion de la mémoire pour le portage L4/Hurd, et Marcus Brinkmann a porté des parties essentielles de la glibc ; à savoir, faire fonctionner le code de démarrage du processus, permettre aux programmes de s'exécuter, permettant ainsi aux premiers programmes utilisateur (triviaux tels que le programme hello world ) en C de s'exécuter.

Depuis 2005, Brinkmann et Walfield ont commencé à rechercher Coyotos comme nouveau noyau pour HURD. En 2006, Brinkmann a rencontré Jonathan Shapiro (un architecte principal du système d'exploitation Coyotos) pour aider et discuter de l'utilisation du noyau Coyotos pour GNU/Hurd. Au cours d'une discussion plus approfondie, les développeurs de HURD ont réalisé que Coyotos (ainsi que d'autres noyaux similaires) ne sont pas adaptés pour HURD.

En 2007, les développeurs du Hurd, Neal Walfield et Marcus Brinkmann, ont fait une critique de l'architecture du Hurd, connue sous le nom de « la critique », et une proposition sur la façon dont un futur système pourrait être conçu, connue sous le nom de « l'exposé de position ». En 2008, Neal Walfield a commencé à travailler sur le micronoyau Viengoos en tant que noyau natif moderne pour HURD. À partir de 2009, le développement sur Viengoos est interrompu en raison du manque de temps de Walfield pour y travailler.

En attendant, d'autres ont continué à travailler sur la variante Mach de Hurd.

Extensions Unix

Un certain nombre de concepts Unix traditionnels sont remplacés ou étendus dans le Hurd.

Sous Unix, chaque programme en cours d'exécution a un identifiant d'utilisateur associé , qui correspond normalement à l'utilisateur qui a démarré le processus . Cet identifiant dicte en grande partie les actions autorisées au programme. Aucun processus extérieur ne peut modifier l'ID utilisateur d'un programme en cours d'exécution. Un processus Hurd, en revanche, s'exécute sous un ensemble d'identifiants utilisateur, qui peuvent contenir plusieurs identifiants, un ou aucun. Un processus suffisamment privilégié peut ajouter et supprimer des identifiants à un autre processus. Par exemple, il existe un serveur de mots de passe qui distribuera des identifiants en échange d'un mot de passe de connexion correct.

En ce qui concerne le système de fichiers , un programme approprié peut être désigné comme traducteur pour un seul fichier ou toute une hiérarchie de répertoires. Chaque accès au fichier traduit, ou aux fichiers inférieurs à une hiérarchie dans le second cas, est en fait géré par le programme. Par exemple, un traducteur de fichiers peut simplement rediriger les opérations de lecture et d'écriture vers un autre fichier, comme un lien symbolique Unix . L'effet du montage Unix est obtenu en configurant un traducteur de système de fichiers (à l'aide de la commande "settrans"). Les traducteurs peuvent également être utilisés pour fournir des services à l'utilisateur. Par exemple, le traducteur ftpfs permet à un utilisateur d'encapsuler des sites FTP distants dans un répertoire. Ensuite, des outils standard tels que ls , cp et rm peuvent être utilisés pour manipuler des fichiers sur le système distant. Des traducteurs encore plus puissants sont tels que UnionFS , qui permet à un utilisateur d'unifier plusieurs répertoires en un seul ; ainsi lister le répertoire unifié révèle le contenu de tous les répertoires.

Le Hurd nécessite un chargeur de démarrage compatible multiboot , tel que GRUB .

Architecture des serveurs

Selon la documentation Debian, il existe 24 serveurs (18 serveurs principaux et 6 serveurs de système de fichiers) nommés comme suit :

Serveurs principaux

  • auth ( serveur d'authentification ) : Reçoit les demandes et les mots de passe des programmes et leur donne un ID, qui modifie les privilèges du programme.
  • crash ( crash server) : Gère toutes les erreurs fatales.
  • eieio (serveur de traduction) : TODO (voir Ordinateur acheté la ferme )
  • exec (serveur d'exécution) : traduit une image exécutable (actuellement ELF et a.out sont pris en charge) en une image exécutable en mémoire.
  • fifo ( traducteur FIFO ) : implémente les canaux nommés.
  • new-fifo (nouveau serveur FIFO) : un serveur alternatif pour les canaux nommés.
  • firmlink (le traducteur firmlink) : Implémente firmlinks ‒ "à mi-chemin entre un lien symbolique et un lien dur ".
  • fwd (forward server): Transfère les requêtes vers d'autres serveurs, utilisé par les serveurs fifo et symlink.
  • hostmux (serveur multiplexeur hôte)
  • ifsock (serveur pour interface de sockets) : aide avec les adresses de socket de domaine UNIX.
  • init ( init server) : démarrage et configuration de base du système.
  • magic ( magic server) : signale qu'une recherche de nom doit être résolue en interne par un processus lorsque le résultat implique l'état du processus.
  • null (serveur null) : implémente /dev/null et /dev/zero.
  • pfinet (serveur pfinet) : implémente la famille de protocoles PF_INET.
  • pflocal (serveur pflocal) : implémente les sockets de domaine UNIX .
  • proc (serveur de processus) : attribue des PID et gère les actions au niveau du processus.
  • symlink ( traducteur de liens symboliques ) : implémente des liens symboliques pour les systèmes de fichiers qui ne les prennent pas en charge.
  • term (terminal server) : Un terminal POSIX .
  • usermux (serveur multiplexeur utilisateur) : appelle des traducteurs spécifiques à l'utilisateur.

Serveurs de système de fichiers

ext2fs
Le traducteur de système de fichiers ext2 . Il reçoit des blocs de disque du micronoyau et fournit des fichiers et des répertoires aux applications.
isofs
Le traducteur pour le système de fichiers ISO 9660 . Traduit les blocs d'un CD ou d'un DVD en fichiers et répertoires pour les applications.
nfs
Voir Système de fichiers réseau .
ufs
Traducteur pour le système de fichiers BSD du même nom, UFS .
ftpfs
Traducteur de système de fichiers de protocole de transfert de fichiers.
magasin
Le traducteur de stockage.

Les serveurs implémentent collectivement l' API POSIX , chaque serveur implémentant une partie de l'interface. Par exemple, les différents serveurs de système de fichiers implémentent chacun les appels de système de fichiers. Le serveur de stockage fonctionnera comme une couche d'encapsulation, similaire à la couche de blocs de Linux. L'équivalent de VFS de Linux est réalisé par les bibliothèques libdiskfs et libpager.

Distributions GNU exécutant Hurd

Debian GNU/Hurd avec Xfce4 et le navigateur Web Midori

Les distributions GNU basées sur Hurd incluent :

Voir également

Les références

Liens externes