Genode

Un article de Wikipédia, l'encyclopédie libre.

Genode
Logo
Le système de bureau Sculpt basé sur Genode.
Le système de bureau Sculpt basé sur Genode.

Langues Anglais
Type de noyau Micronoyau (NOVA[1], Genode micronúcleo[2], SeL4, Linux, Fiasco OC, Fiasco, OkL4, Pistachio)
État du projet En développement constant
Dépôt github.com/genodelabs/genodeVoir et modifier les données sur Wikidata
Plates-formes x86, x86-64[3], ARM, RISC-V[4]
Entreprise /
Développeur
Genode Labs, et al.
Licence AGPLv3
États des sources Logiciel libre
Open source
Écrit en C++ et autres
Première version 8.11 ()
Dernière version stable 19.02 (28/02/2019)
Site web genode.org

Genode[5],[6],[7] est un framework d'OS (architecture et ensemble de mécanismes généraux de système d'exploitation, ou "boite à outils") libre et gratuit. Il consiste en une couche d'abstraction pour micro-noyau et une collection de composants (services) en espace utilisateur. Il est notable que ce framework est l'un des seuls dans le monde libre et gratuit à ne pas être dérivé d'un système d'exploitation propriétaire tel qu'Unix. La ligne directrice de conception est qu'il est essentiel de réduire autant que possible le nombre de lignes de code exécutées en mode noyau, ou en mode utilisateur d'importance critique (les deux constituant la TCB, Trusted Computing Base, code source auquel on doit faire confiance) dans un système d'exploitation orienté sécurité.

Genode peut être utilisé comme base pour créer un système d'exploitation avec environnement de bureau[8],[9] ou pour un système d'exploitation de tablette[10], ou pour un moniteur de machine virtuelle pour un système d'exploitation hôte. Le framework Genode a déjà été utilisé comme composant de confiance dans des systèmes de virtualisation sécurisée pour x86[11] et ARM[12].

La petite taille du code source de Genode en fait une alternative flexible comparée aux systèmes d'exploitation plus complexes dérivés d'Unix. Pour cette raison, ce framework a été utilisé comme base pour des travaux de recherche dans des domaines tels que la virtualisation[13], la communication inter-processus[14], l'isolation de pile IP[15],[16], les systèmes de surveillance[17] et le développement logiciel[18],[19].

Historique[modifier | modifier le code]

Genode trouve ses origines dans l' "Architecture de système d'exploitation Bastei"[20], un rapport de recherche à l'Université technique de Dresde. Cette thèse se focalisait sur la faisabilité technique d'un système d'exploitation séparé en composants (services) et doté d'un modèle de sécurité basé sur les capabilities. Elle était motivée en partie par les travaux de recherche sur le micronoyau L4[21] menés durant cette période. À la suite du succès rencontré en implémentant un prototype, les auteurs de la thèse fondèrent la compagnie Genode Labs, Bastei devenant alors le Genode OS framework.

Versions[modifier | modifier le code]

Le projet est développé publiquement suivant le modèle open source sous la licence GNU Affero General Public License, avec une entité commerciale proposant des licences alternatives. Les versions se succèdent à intervalle de trois mois pour effectuer des changements dans l'ABI, les APIs, et mettre à jour la documentation. Le code source du framework est disponible, ainsi que (depuis la version 18.02) un système d'exploitation généraliste basé sur Genode, baptisé Sculpt avec déploiement de fichier binaire.

Fonctionnalités de l'architecture[modifier | modifier le code]

Genode s'appuie sur la philosophie générale des micronoyaux - plus le code source est simple et de taille réduite, plus il est facile de vérifier qu'il est correct et digne de confiance. Genode étend cette philosophie à l'espace utilisateur en assemblant des applications complexes à partir de composants de petite taille. Chaque composant existe dans une hiérarchie stricte de relations parent-enfant. Tout composant jouant le rôle de parent peut appliquer des politiques d'accès aux ressources et aux mécanismes de communication (IPC) de ses enfants. Ce système d'organisation hiérarchique entraîne un partitionnement intuitif et une réduction graduelle des privilèges, les sous-systèmes spécialisés étant inféodés aux systèmes plus généraux, ce qui permet de réduire le risque de confused deputy problem endémique dans les systèmes centralisés ou à super-utilisateur.

Le framework est conçu pour tourner sur un micronoyau; mais la plupart des micronoyaux ont un ensemble de fonctionnalités en commun, et les noyaux hybrides implémentent un super-ensemble de ce socle commun. Le fait d'abstraire ces fonctionnalités permet à Genode de faire office d'espace utilisateur pour toute une variété de micronoyaux L4[22],[23] ainsi que pour Linux.

Critiques[modifier | modifier le code]

C++[modifier | modifier le code]

Genode est souvent critiqué pour le choix de C++ comme langage d'implémentation (un choix partagé par d'autres systèmes d'exploitation y compris BeOS, Fuchsia, Ghost, Haiku, IncludeOS, OSv, Palm OS, ReactOS, Syllable, et tous les moteurs de navigateur web majeurs). Les critiques affirment en général que le C++ est un mauvais choix pour les librairies système et les APIs à cause de sa complexité intrinsèque et de la difficulté à vérifier l'exactitude de l'implémentation. Bien que Genode fasse usage de l'héritage multiple et des templates dans ses librairies système, l'usage de la librairie C++ standard y est banni, et les fonctionnalités du C++ qui requièrent un état global implicite, tel que le TLS et l'allocateur global, sont désactivées dans le runtime. Le C++ ne permet pas l'analyse statique en profondeur, mais le projet Genode met en œuvre et publie des tests unitaires fournissant une analyse empirique.

XML[modifier | modifier le code]

Les composants Genode consomment et publient leur état via du XML sérialisé, à l'opposé du modèle "texte simple" des dérivatifs d'UNIX. XML est souvent critiqué pour ses fonctionnalités complexes, sa représentation inefficiente, et la relative difficulté d'édition à la main des documents XML. Le projet Genode fait usage du XML dans virtuellement tous ses composants car le XML est facile à parser et à générer par les programmes, tout en gardant la possibilité d'être lu et édité à la main. Le dialecte utilisé par Genode est un sous-ensemble simple du XML complet, mais les utilisateurs novices mentionnent souvent l’édition du XML comme fastidieuse et prompte à commettre des erreurs. Comme aucune fonctionnalité spécifique au XML n'est utilisée, le langage de configuration de Genode pourrait éventuellement être remplacé par des langages plus simples tels que JSON, mais aucun plan de migration n'est annoncé pour l'instant.

Espaces de nommage[modifier | modifier le code]

Genode est dénué de tout espace de nommage global en tant que tel, il n'y a ni système de fichier ni registre ni processus ni connexion IPC qui soient partagés au niveau global. Cela le place en opposition des systèmes tels que UNIX qui incluent un système de fichier omniprésent et permettant aux taches super utilisateur d'influer sur tout processus de façon arbitraire. Déclarer de façon explicite les permissions et le routage des composants peut sembler laborieux comparé à UNIX. D'un autre coté, la compartimentalisation de l'administration permet aux sous-systèmes d'être gérés sur la même machine par des administrateurs qui ne se font pas confiance sans pour autant utiliser la virtualisation, qui est la méthode d'isolation habituelle.

Sculpt[modifier | modifier le code]

Le projet Genode publie un système d'exploitation pour ordinateur personnel baptisé "Sculpt" qui cible les ordinateurs portables contemporains[24]. Sculpt est système de base de taille réduite offrant une détection et configuration automatique des périphériques, des interfaces de contrôle graphiques, et une interface pour le gestionnaire de paquets de Genode. Ce système n'offre pas un environnement de bureau complet, mais nécessite de déployer une ou des machines virtuelles hébergeant des systèmes d'exploitation traditionnels pour obtenir un bureau complet. Sculpt se distingue du framework Genode par son large usage de reconfiguration dynamique grâce à des composants de contrôle privilégiés, au lieu de systèmes spécialisés avec des politiques statiques.

Voir aussi[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. « NOVA OS Virtualization Architecture »
  2. Martin Stein, « A kernel in a library, FOSDEM 2017 »
  3. Michael Larabel, « Genode Is Developing A GPU Multiplexer For Intel Graphics Hardware », sur Phoronix
  4. « Genode OS adds RISC-V support »
  5. « Introduction of the Genode OS Framework », sur archive.fosdem.org/2012
  6. « L4 Based Operating Systems », sur L4hq.org
  7. Michael Larabel, « Redox OS, MINIX, Hurd & Genode Had Their Time At FOSDEM Too », sur Phoronix
  8. Hans-Joachim Baader, « Genode 2018.2 mit Sculpt OS », sur pro-linux.de
  9. Michael Larabel, « Sculpt Aims To Be A General-Purpose OS Built Atop Genode »
  10. Alexander Tarasikov, « Porting Genode to commercial hardware », sur allsoftwaresucks.blogspot.com,
  11. « Muen - An x86/64 Separation Kernel for High Assurance »
  12. John Williams, « Inspecting data from the safety of your trusted execution environment »
  13. « Embassies: Radically Refactoring the Web », USENIX
  14. Martin Wegner, Sönke Holthusen, « Contract Specification and language », sur ccc-project.org,
  15. Mohammad Hamad, « The Secure Communication Module of CCC », sur ccc-project.org,
  16. Mohammad Hamad, « A communication framework for distributed access control in microkernel-based systems »
  17. B.PRUTHIVIRAJ, G.S.MADHUSUTHUN, S.VIJAYASARATHY, K.CHAKRAPANI, « A MICROKERNEL BASED SECURE OPERATING SYSTEM USING GENODE FRAMEWORK », sur jatit.org
  18. Ludwig Hähne, « Empirical Comparison of SCons and GNU Make »
  19. Millo-Sánchez, Reinier & Paz Rodríguez, Waldo & Fajardo-Moya, Alexis, « Genode OS Framework, un framework para el desarrollo de sistemas embebidos », sur ResearchGate
  20. « TU Dresden technical report TUD-FI06-07 »
  21. « NOVA Microhypervisor »
  22. « L4 Based Operating Systems », sur L4hq.org
  23. « SeL4 Community Projects », sur sel4.systems
  24. « Release notes 18.02 »

Liens externes[modifier | modifier le code]

Site officiel[modifier | modifier le code]

Projets de recherche[modifier | modifier le code]