Serveur d'impression

GNU Hurd – Wikipedia – Bien choisir son serveur d impression

Le 2 mai 2019 - 16 minutes de lecture

Noyau de système d'exploitation conçu pour remplacer Unix

GNU Hurd est le micro-noyau multiserveur écrit dans le cadre de GNU. Il est développé depuis 1990 par le projet GNU de la Free Software Foundation, conçu pour remplacer le noyau Unix,[3] et publié en tant que logiciel libre sous la licence publique générale GNU. Bien que le noyau Linux se soit rapidement révélé être une solution plus viable, le développement de GNU Hurd s'est poursuivi, bien que lentement.[4]

GNU Hurd consiste en un ensemble de protocoles et de processus serveur (ou démons, dans la terminologie Unix) exécutés sur le micro-noyau GNU Mach.[3] Hurd a pour objectif de surpasser le noyau Unix en termes de fonctionnalité, de sécurité et de stabilité, tout en restant largement compatible avec celui-ci. Le projet GNU a choisi le micro-noyau multiserveur[5] pour le système d'exploitation, en raison des avantages perçus par rapport à l'architecture de noyau monolithique Unix traditionnelle,[6] un point de vue prôné par certains développeurs dans les années 1980.[4]

[[[[modifier]

En décembre 1991, l'architecte principal du Hurd décrivit ce nom comme un acronyme mutuellement récursif:[7]

C'est l'heure [to] expliquer le sens de "Hurd". "Hurd" signifie "Hird of Unix-Remplacement de Démons". Et, alors, "Hird" signifie "Hurd of Interfaces Représenting Depth". Nous avons ici, à ma connaissance, le premier logiciel à être nommé par deux acronymes mutuellement récursifs.

Comme les deux hurd et le tiers sont des homophones du mot anglais troupeau, le nom complet GNU Hurd est aussi un jeu de mots troupeau de gnous, reflétant le fonctionnement du noyau.[8] Le logo s'appelle le Boîtes Hurd et cela reflète aussi 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.[7]

Histoire du développement[[[[modifier]

Richard Stallman a fondé le projet GNU en septembre 1983 dans le but de créer un système d'exploitation GNU gratuit. Initialement, les composants nécessaires au développement du noyau ont été écrits: éditeurs, shell, compilateur et tous les autres. En 1989, la GNU GPL est entrée en vigueur et le seul composant majeur manquant était le noyau.[9][10]

Le développement sur le Hurd a débuté en 1990 après une tentative de noyau abandonnée en 1986, basée sur le système d’exploitation de recherche TRIX mis au point par le professeur Steve Ward et son groupe au Laboratory for Computer Science (LCS) du MIT.[11] Selon Thomas Bushnell, l’architecte initial de Hurd, leur projet initial é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".[12] En 1987, Richard Stallman a proposé d'utiliser le micro-noyau de Mach développé à l'Université Carnegie Mellon. Les travaux dans ce domaine ont été retardés de trois ans en raison de l’incertitude quant à la publication par la CMU du code Mach sous une licence appropriée.[11]

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

Le développement du Hurd a progressé lentement. Malgré l’annonce optimiste faite par Stallman en 2002, qui permettrait de publier GNU / Hurd plus tard dans l’année,[13] 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 reste encore un nombre important de bugs et de fonctionnalités manquantes.[14] Cela a abouti à un produit plus pauvre que beaucoup (y compris Stallman) avaient prévu.[15] En 2010, après vingt ans de développement, Stallman a déclaré qu'il n'était "pas très optimiste à propos de GNU Hurd. Il fait quelques 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 avec Hurd ne résoudrait pas le principal problème qui restait pour un système d’exploitation libre: le support de périphérique.[16]

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 PC IBM.

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

Le 20 août 2015, dans le Google Summer of Code, il a été annoncé que GNU Guix avait été porté sur GNU Hurd.[18]

Architecture[[[[modifier]

Structure générale des systèmes d’exploitation monolithiques, à micro-noyaux et à noyaux hybrides, respectivement.

Contrairement à la plupart des noyaux de type Unix, le Hurd utilise une architecture client-serveur, reposant sur un micro-noyau chargé de fournir les services de base du noyau – coordination de l’accès au matériel: le processeur (par la gestion et la planification des processus), la RAM (via gestion de la mémoire) et divers 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 micro-noyau permet de construire tous les pilotes de périphérique en tant que serveurs fonctionnant dans l’espace utilisateur. Aujourd'hui, la plupart des pilotes de ce type sont toujours contenus dans l'espace du noyau GNU Mach.[19]

Selon les développeurs Hurd, le principal avantage de la conception basée sur un micro-noyau est sa capacité à é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 tout le système. . Hurd fournit un concept de traducteurs, un cadre de modules utilisé pour étendre une fonctionnalité de système de fichiers.[20]

Dès le début, le Hurd a été développé pour utiliser GNU Mach comme micro-noyau. Cette décision technique a été 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.[21] OSF / 1, Lites et MkLinux sont d’autres systèmes de type Unix fonctionnant sur le micro-noyau de Mach. macOS et NeXTSTEP utilisent des noyaux hybrides basés sur Mach.

Autres microkernels[[[[modifier]

À partir de 2004, divers efforts ont été déployés pour porter le Hurd sur des micro-noyaux plus modernes. Le micro-noyau L4 était le choix initial en 2004, mais les progrès ont été stoppés. Néanmoins, en 2005, Neal Walfield, développeur de Hurd, a terminé le cadre initial de gestion de la mémoire pour le port L4 / Hurd, et Marcus Brinkmann a porté les éléments essentiels de la glibc; à savoir, faire fonctionner le code de démarrage du processus, permettant l'exécution de programmes, permettant ainsi aux premiers programmes utilisateur (ceux qui sont triviaux, comme le programme hello world) en C de s'exécuter.

Depuis 2005, Brinkmann et Walfield ont commencé leurs recherches sur Coyotos en tant que nouveau noyau pour HURD.[23] En 2006, Brinkmann a rencontré Jonathan Shapiro (un des principaux architectes du système d’exploitation Coyotos) afin d’aider et de discuter de l’utilisation du noyau Coyotos pour GNU / Hurd. Dans une discussion ultérieure, les développeurs de HURD ont compris que les coyotos (ainsi que d’autres noyaux similaires) ne conviennent pas à HURD.[24]

En 2007, les développeurs Hurd, Neal Walfield et Marcus Brinkmann, ont formulé une critique de l’architecture Hurd, dite "la critique",[25] et une proposition sur la manière de concevoir un futur système, connue sous le nom de "document de synthèse".[26] En 2008, Neal Walfield a commencé à travailler sur le micro-noyau de Viengoos en tant que noyau natif moderne pour HURD. À partir de 2009, le développement de Viengoos est suspendu car Walfield manque de temps pour travailler dessus.[27]

Entre-temps, d’autres ont continué à travailler sur la variante Mach de Hurd.[28]

Extensions Unix[[[[modifier]

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

Sous Unix, chaque programme en cours d'exécution a un ID utilisateur associé, qui correspond normalement à l'utilisateur qui a démarré le processus. Cet identifiant dicte en grande partie les actions autorisées pour le programme. Aucun processus extérieur ne peut changer l'ID utilisateur d'un programme en cours d'exécution. Un processus Hurd, en revanche, se déroule sous un ensemble d’identifiants d’utilisateur pouvant contenir plusieurs identifiants, un ou aucun. Un processus suffisamment privilégié peut ajouter et supprimer des identifiants à un autre processus. Par exemple, un serveur de mots de passe distribuera les 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é traducteur pour un seul fichier ou une hiérarchie de répertoires complète. Chaque accès au fichier traduit, ou aux fichiers sous une hiérarchie dans le second cas, est en fait géré par le programme. Par exemple, un traducteur de fichiers peut simplement rediriger des opérations de lecture et d'écriture vers un autre fichier, par exemple un lien symbolique Unix. L'effet d'Unix montage est réalisé en configurant un traducteur de système de fichiers (en utilisant 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 ceux tels que UnionFS, qui permet à un utilisateur d'unifier plusieurs annuaires en un seul; Ainsi, la liste du répertoire unifié révèle le contenu de tous les répertoires.

Hurd nécessite un chargeur d’initialisation compatible tel qu’un amorçage multiple, tel que GRUB.

Architecture des serveurs[[[[modifier]

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

Serveurs de base[[[[modifier]

  • auth (serveur d'authentification): reçoit les demandes et les mots de passe des programmes et leur attribue un identifiant qui modifie les privilèges du programme.
  • crash (serveur crash): gère toutes les erreurs fatales.
  • eieio (serveur de traduction): TODO (voir Ordinateur acheté de la ferme)
  • exec (serveur d'exécution): convertit une image exécutable (actuellement, les fichiers ELF et a.out sont pris en charge) en une image exécutable en mémoire.
  • fifo (Traducteur FIFO): Implémente les pipes nommées.
  • new-fifo (nouveau serveur FIFO): un autre serveur pour les canaux nommés.
  • firmlink (le traducteur firmlink): Implémente firmlinks – "à mi-chemin entre un lien symbolique et un lien dur".[30]
  • fwd (serveur de transfert): transmet les demandes à d'autres serveurs, utilisées par les serveurs fifo et symlink.
  • hostmux (serveur multiplexeur hôte)
  • Ifsock (serveur pour l'interface de sockets): Aide avec les adresses de socket de domaine UNIX.
  • init (init server): amorçage et configuration de base du système.
  • la magie (serveur magique): Indique qu'une recherche de nom doit être résolue en interne par un processus lorsque le résultat implique l'état du processus.
  • nul (serveur null): Implémente / dev / null et / dev / zero.
  • pfinet (serveur pfinet): Implémente la famille de protocoles PF_INET.
  • pflocal (pflocal server): Implémente les sockets de domaine UNIX.
  • proc (serveur de processus): attribue des PID et gère les actions au niveau du processus.
  • lien symbolique (traducteur de liens symboliques): Implémente des liens symboliques pour les systèmes de fichiers qui ne les prennent pas en charge.
  • terme (serveur de terminal): un terminal POSIX.
  • usermux (serveur multiplexeur utilisateur): Invoque des traducteurs spécifiques à l'utilisateur.

Serveurs de système de fichiers[[[[modifier]

ext2fs
Le traducteur de système de fichiers ext2. Il reçoit des blocs de disque du micro-noyau et donne des fichiers et des répertoires aux applications.
isofs
Le traducteur pour le système de fichiers ISO 9660. Traduit des 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 protocole de transfert de fichier.
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 du système de fichiers. Le serveur de stockage fonctionnera comme une couche d'habillage, similaire à la couche de blocs de Linux. L'équivalent de VFS de Linux est obtenu par les bibliothèques libdiskfs et libpager.

Ordinateur acheté la ferme[[[[modifier]

"Ordinateur acheté la ferme" est le message affiché lorsqu'une erreur se produit lors de l'utilisation de certaines commandes. Selon la FAQ GNU Hurd:[31]

C'est le message d'erreur pour EIEIO. Ce code d'erreur est utilisé pour diverses conditions d'erreur "sans espoir". Vous le rencontrerez probablement lorsqu'un traducteur tombe en panne alors que vous essayiez d'utiliser un fichier qu'il sert.

Vous pouvez donc le considérer comme un équivalent de "l'écran bleu de la mort" ou "Oups" … sauf que ce n'est qu'une erreur! Cela n'enlève pas tout votre système, mais seulement les opérations en cours.

Distributions GNU sous Hurd[[[[modifier]

Les distributions GNU basées sur Hurd incluent:

Voir également[[[[modifier]

Références[[[[modifier]

  1. ^ "2016-12-18-releases". GNU Hurd. Récupéré 2016-12-18.
  2. ^ "COPIE – hurd / hurd.git – Hurd". Git.savannah.gnu.org. Récupéré 25 février 2019.
  3. ^ une b "Qu'est-ce que le GNU Hurd?". GNOU. Récupéré 2010-03-04.
  4. ^ une b Tozzi, Christopher (2015-04-20). "30 ans plus tard, HURD Lives: GNU met à jour le noyau Unix Open Source". Thevarguy.com. Récupéré 2017-04-17.
  5. ^ "Qu'est-ce qu'un microkernel multiserveur?". Gnu.org. 2013-04-13. Récupéré 2015-08-11.
  6. ^ "avantages". GNOU. Récupéré 2011-12-07.
  7. ^ une b Vervloesem, Koen (7 juillet 2010). "The Hurd: la quête de GNU pour le noyau parfait". LWN.net. Récupéré 5 octobre 2012.
  8. ^ "GNU Hurd: Origine du Nom". GNOU. Récupéré 2010-03-04.
  9. ^ Hillesley, Richard (30 juin 2010). "GNU HURD: Des visions altérées et une promesse perdue". Récupéré 1er octobre, 2012.
  10. ^ "Linux et le projet GNU". GNOU. 2010-01-26. Récupéré 2010-03-04.
  11. ^ une b "L'histoire de GNU Hurd, 'comment ça a commencé'". GNOU. Récupéré 2006-08-27.
  12. ^ Salus, Peter. "Le démon, le GNU et le pingouin". Récupéré 2006-08-08.
  13. ^ Ribeiro, John (2002-03-11). "Le logiciel libre voit GNU lâche de Linux". PC World. Récupéré 2012-10-05.
  14. ^ "Statut". GNOU. Récupéré 2010-03-04.
  15. ^ Stallman, Richard (2006-03-09). "Le mouvement du logiciel libre et l'avenir de la liberté" (ogg). Fondation du logiciel libre. Zagreb. Résumé Lay. C’est ainsi que les gens pensaient que c’était le moyen le plus propre de concevoir des noyaux en 1990. Eh bien, il a fallu de nombreuses années pour que ce noyau fonctionne, et il ne fonctionne toujours pas bien. Il semblerait que cette conception pose des problèmes fondamentaux dont personne ne s’est rendu compte en 1990.
  16. ^ Stallman, Richard (2010-07-29). "RMS AMA". Reddit. Récupéré 2011-12-07.
  17. ^ "La Free Software Foundation change les priorités – SD Times". SD Times. 2017-01-17. Récupéré 2017-04-17.
  18. ^ Ragkousis, Manolis (20 août 2015). "[GSoC update] Porter Guix dans GNU / Hurd "(liste de diffusion). Guix-devel. Récupéré 20 août 2015.
  19. ^ Kousoulos, Constantine (2007-03-21). "Re: Les pilotes de périphériques dans Mach?". bug-hurd (Liste de diffusion).
  20. ^ Doeppner, Thomas W. (20 décembre 2010). Systèmes d'exploitation en profondeur: Conception et programmation. John Wiley & Sons. p. 160. ISBN 978-0-471-68723-8. Récupéré 29 novembre 2012.
  21. ^ Stallman, Richard (2000-10-12). "À la défense de Red Hat". Linux aujourd'hui. Récupéré 2011-12-07. Je prends l'entière responsabilité de la décision technique de développer le noyau GNU basé sur Mach, une décision qui semble être responsable de la lenteur du développement. Je pensais qu'utiliser Mach accélérerait le travail en nous épargnant une grande partie du travail, mais je me suis trompé.
  22. ^ Bachmann, Tom (2006-07-07). "Re: seL4, L4.sec et désordre de coyotos". l4-hurd (Liste de diffusion).
  23. ^ "Porter le Hurd sur un autre micro-noyau". GNU Hurd. Fondation du logiciel libre. Récupéré 2017-05-06.
  24. ^ Walfield, Neal H .; Brinkmann, Marcus (juillet 2007). "Une critique du système d'exploitation multi-serveur GNU Hurd" (PDF). GNOU. Récupéré 2011-12-07.
  25. ^ Walfield, Neal H .; Brinkmann, Marcus (2007-01-04). "Amélioration de la convivialité via la décomposition de l'accès et le raffinement de la politique" (PDF). GNOU. Récupéré 2011-12-07.
  26. ^ "viengoos". GNOU. Récupéré 2010-03-04.
  27. ^ "Qu'est-il arrivé aux micro-noyaux L4 / Coyotos / viengoos?". GNOU. Récupéré 2011-01-07.
  28. ^ "Description préliminaire de l'interface utilisateur GNU / Hurd". Debian. 1996-10-10. Récupéré 2010-03-04.
  29. ^ "GNU / Hurd – Documentation". Debian. 1996-10-10. Récupéré 2012-07-12.
  30. ^ "EIEIO: 'L'ordinateur a acheté la ferme' … Euh, quoi?!". Debian. Récupéré 2 février 2019.
  31. ^ "GNU Hurd / hurd / running / distrib". Gnu.org. 2015-05-03. Récupéré 2017-09-21.
  32. ^ "GNU Hurd / hurd / course / live cd". Gnu.org. 2013-04-09. Récupéré 2017-09-21.
  33. ^ "Système GNU / Hurd basé sur Nix". Gnu.org. 2012-03-21. Récupéré 2012-07-12.

Liens externes[[[[modifier]


Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.