Genode[5][6][7]​ es un entorno de sistema operativo libre y de código abierto que está compuesto por una capa de abstracción micronúcleo y una colección de componentes de espacio de usuario. El proyecto destaca por ser uno de los pocos sistemas operativos de código abierto que no está inspirado en un sistema comercial como, por ejemplo, Unix. La filosofía tras el diseño se centra principalmente en que una base pequeña de computación fiable es esencial en un sistema operativo orientado a la seguridad.

Genode

El sistema desktop Sculpt basado en Genode
Información general
Tipo de programa software libre
Desarrollador Genode Labs, et al.
Modelo de desarrollo Código abierto
Licencia AGPLv3
Estado actual En desarrollo, versión estable
Información técnica
Programado en C++ y otros
Núcleo NOVA,[1]​ Genode micronúcleo,[2]SeL4, Linux, Fiasco OC, Fiasco, OkL4, Pistachio
Tipo de núcleo Micronúcleo
Plataformas admitidas x86, x86-64,[3]ARM, RISC-V[4]
Versiones
Última versión estable 19.08 (info) ( 28 de agosto de 2019 (5 años, 3 meses y 14 días))
Enlaces

Genode se puede usar como base para sistemas operativos de escritorios[8][9]​ o de tabletas[10]​ o como monitor de máquinas virtuales para sistemas operativos invitados. El entorno se ha utilizado como componente fiable de sistemas de virtualización seguros para las arquitecturas x86[11]​ y ARM.[12]

Dado el escaso tamaño de su base de código, Genode es una alternativa flexible a otros sistemas operativos más complejos basados en Unix. Es por esto que el entorno se ha utilizado como sistema básico para la investigación en ámbitos tales como la virtualización,[13]​ la comunicación entre procesos,[14]​ el aislamiento de la pila IP,[15]​ la monitorización[16]​ y el desarrollo de software.[17][18]

Historia

editar

Originalmente, Genode fue desarrollado en la Universidad Técnica de Dresde en el marco de un informe de investigación sobre la arquitectura de sistemas operativos llamado "Bastei".[19]​ El informe se centraba en determinar la aplicabilidad de un sistema operativo basado en componentes utilizando una seguridad basada en lo que denominamos “capabilities”. El informe fue motivado en parte por los conocimientos adquiridos en las investigaciones que se llevaron a cabo simultáneamente sobre los microhipervisores L4.[20]​ Debido al éxito de un prototipo anterior, los autores del informe fundaron la compañía Genode Labs con el objetivo de desarrollar Bastei bajo el nombre Genode OS Framework.

Versiones

editar

El proyecto se desarrolla como código abierto bajo los términos de la licencia pública general de Affero, pudiendo la entidad comercial ofrecer licencias alternativas. Se lanzan nuevas versiones cada tres meses para cambios en la ABI del sistema y las API y como documentación del progreso. El entorno está disponible en forma de código fuente y a partir de la versión 18.02 se proporciona también un derivado de propósito general llamado Sculpt con despliegue de archivos binarios.

Características de arquitectura

editar

Genode se basa en la filosofía general de micronúcleos – cuanto más pequeño y simple el código, más fácil se puede verificar su fiabilidad y corrección. Genode está extendiendo esta filosofía al espacio de usuario mediante la composición de aplicaciones complejas a partir de componentes de pequeño tamaño. Cada componente existe en una jerarquía estricta de relaciones de tipo "padre-hijo". Cualquier componente que actúe como padre puede aplicar políticas de recursos y de comunicación entre componentes a sus hijos. Este diseño jerárquico proporciona una compartimentación intuitiva y una deescalada de privilegios porque los subsistemas especializados están anidados dentro de subsistemas más genéricos, mitigando el problema conocido como “confused deputy problema” que es endémico en sistemas con políticas centralizadas o con superusuario.

Crítica

editar

A menudo se ha criticado a Genode por su elección de C++ como lenguaje de implementación (otros sistemas operativos que usan C++ son BeOS, Fuchsia, Ghost,[21]Haiku, IncludeOS,[22]OSv, Palm OS, ReactOS, Syllable, y los principales motores de navegación). Estas críticas con frecuencia afirman que C++ es una elección desacertada para la implementación de bibliotecas y API del sistema a causa de la complejidad inherente de C++ y a la dificultad que plantea el análisis del código para su correcto funcionamiento. Mientras que Genode utiliza herencia múltiple y plantillas en su biblioteca del sistema, no se permite el uso de la biblioteca estándar de C++ y las características que se basan en el estado global implícito, tales como el almacenamiento de hilo local y el asignador global han sido eliminadas del entorno del lenguaje. No es posible llevar a cabo un análisis estático completo de C++, sin embargo, el proyecto Genode publica tests de unidad para realizar análisis empíricos.

Los componentes de Genode utilizan y publican estados como datos estructurados serializados en XML, en contraste con los modelos de texto plano de los derivados de Unix. XML es criticado por sus características complejas, ineficaz representación y la relativa dificultad que plantea la edición manual de documentos XML. El entorno Genode usa XML de modo efectivo en todos sus componentes porque el programa genera e interpreta fácilmente XML, siendo también posible entenderlo y editarlo manualmente. El dialecto que utiliza Genode es un subconjunto simple del lenguaje XML, no obstante, algunos nuevos usuarios con frecuencia advierten de que la edición de XML resulta tediosa y proclive al error. Puesto que Genode no se basa en ninguna característica en especial de XML, el lenguaje de marcado de datos de Genode se podría sustituir por otros más simples tales como JSON o sexps. No obstante, no se han anunciado aun planes de migración.

Espacio de nombres local

editar

Genode no tiene ningún espacio de nombres global. No existe ningún sistema de archivos global ni registros de procesos o terminales de comunicación entre procesos. Esto contrasta con sistemas como UNIX que presentan un sistema de ficheros ubicuo y permite que un contexto de superusuario maneje arbitrariamente cualquier proceso dentro del sistema. Declarar explícitamente los permisos y las rutas de los componentes puede parecer que requiere más trabajo en comparación con UNIX. No obstante, la compartimentación de la administración permite que los subsistemas puedan ser gestionados por administradores mutuamente no confiables en la misma máquina sin recurrir a la virtualización, método común de aislamiento.

Sculpt

editar

El proyecto Genode publica un sistema operativo desktop llamado Sculpt, pensado para el usuario de laptops actual.[23]​ Sculpt es un sistema de base pequeña con detección y configuración automática de dispositivo, algunas GUI de control y una interfaz para el gestor del paquete Genode. El sistema no contiene un entorno desktop completo, sino que requiere que los usuarios implementen máquinas virtuales que alojen sistemas operativos tradicionales para conseguir un desktop con características completas. Sculpt se distingue del sistema operativo Genode en que depende en gran medida en la reconfiguración dinámica mediante componentes privilegiados de control, en contraste con los sistemas especializados que tienen políticas estáticas.

Véase también

editar

Referencias

editar
  1. «NOVA OS Virtualization Architecture». 
  2. Stein, Martin. «A kernel in a library, FOSDEM 2017». 
  3. Larabel, Michael. «Genode Is Developing A GPU Multiplexer For Intel Graphics Hardware». Phoronix. 
  4. «Genode OS adds RISC-V support». 
  5. «Introduction of the Genode OS Framework». archive.fosdem.org/2012. 
  6. «L4 Based Operating Systems». L4hq.org. Archivado desde el original el 14 de junio de 2018. Consultado el 25 de febrero de 2019. 
  7. Larabel, Michael. «Redox OS, MINIX, Hurd & Genode Had Their Time At FOSDEM Too». Phoronix. 
  8. Baader, Hans-Joachim. «Genode 2018.2 mit Sculpt OS». pro-linux.de. 
  9. Larabel, Michael. «Sculpt Aims To Be A General-Purpose OS Built Atop Genode». 
  10. Tarasikov, Alexander (11 de mayo de 2013). «Porting Genode to commercial hardware». allsoftwaresucks.blogspot.com. 
  11. «Muen - An x86/64 Separation Kernel for High Assurance». 
  12. Williams, John. «Inspecting data from the safety of your trusted execution environment». 
  13. «Embassies: Radically Refactoring the Web». USENIX. 
  14. Martin Wegner, Sönke Holthusen (11 de diciembre de 2014). «Contract Specification and language». ccc-project.org. Archivado desde el original el 27 de marzo de 2019. Consultado el 25 de febrero de 2019. 
  15. Hammad, Mohammad (6 de enero de 2016). «The Secure Communication Module of CCC». ccc-project.org. Archivado desde el original el 23 de enero de 2019. Consultado el 25 de febrero de 2019. 
  16. B.PRUTHIVIRAJ, G.S.MADHUSUTHUN, S.VIJAYASARATHY, K.CHAKRAPANI. «A MICROKERNEL BASED SECURE OPERATING SYSTEM USING GENODE FRAMEWORK». jatit.org. 
  17. Hähne, Ludwig. «Empirical Comparison of SCons and GNU Make». 
  18. Millo-Sánchez, Reinier & Paz Rodríguez, Waldo & Fajardo-Moya, Alexis. «Genode OS Framework, un framework para el desarrollo de sistemas embebidos». ResearchGate. 
  19. «TU Dresden technical report TUD-FI06-07». 
  20. «NOVA Microhypervisor». 
  21. «Ghost, a hobby operating system for the Intel x86 platform». 
  22. «IncludeOS, an operating system written as a library». 
  23. «Sculpt, an open-source general-purpose OS».