Jailhouse un hipervisor de particionamiento estático que apuesta por el rendimiento
Jailhouse es un hipervisor de particionamiento basado en Linux (se ha desarrollado como un proyecto de software libre GPLv2). Es capaz de ejecutar aplicaciones completas o sistemas operativos (adaptados) además de Linux. Para este propósito, configura las características de virtualización de CPU y dispositivos de la plataforma de hardware de manera que ninguno de estos dominios, llamados “cells”, puedan interferir entre sí de una manera inaceptable.
Esto significa que Jailhouse no emula recursos que no tienes. Simplemente divide el hardware en compartimentos aislados llamados “cells” que están totalmente dedicados a los programas de software invitados llamados “inmates”.
Sobre Jailhouse
Jailhouse está optimizado para la simplicidad en lugar de la riqueza de características. A diferencia de los hipervisores basados en Linux con todas las funciones como KVM o Xen, Jailhouse no admite el sobre compromiso de recursos como CPU, RAM o dispositivos. No realiza ninguna programación y solo virtualiza esos recursos en software, que son esenciales para una plataforma y no se pueden particionar en hardware.
Una vez que se activa Jailhouse, se ejecuta completamente, es decir, toma el control total sobre el hardware y no necesita soporte externo.
El hipervisor se implementa como un módulo para el kernel de Linux y proporciona virtualización a nivel de kernel. Los componentes invitados ya están incluidos en el núcleo principal de Linux.
Para controlar el aislamiento, se utilizan mecanismos de virtualización de hardware proporcionados por las CPU modernas. Las características distintivas de Jailhouse son su implementación liviana y su orientación hacia la vinculación de máquinas virtuales a una CPU fija, área de RAM y dispositivos de hardware. Este enfoque permite la operación de varios entornos virtuales independientes en un servidor multiprocesador físico, cada uno de los cuales está asignado a su propio núcleo de procesador.
Con un enlace estrecho con la CPU, la sobrecarga de la operación del hipervisor se minimiza y su implementación se simplifica enormemente, ya que no es necesario realizar un planificador de asignación de recursos complejo: la asignación de un núcleo de CPU separado garantiza que no se realicen otras tareas en esta CPU.
La ventaja de este enfoque es la capacidad de proporcionar acceso garantizado a los recursos y un rendimiento predecible, lo que hace de Jailhouse una solución adecuada para crear tareas realizadas en tiempo real. La desventaja es la escalabilidad limitada, que se basa en la cantidad de núcleos de CPU.
Sobre la nueva versión de Jailhouse 0.12
Actualmente, Jailhouse se encuentra en su version 0.12 y en ella se destaca el soporte para la Raspberry Pi 4 Modelo B y Texas Instruments J721E-EVM.
Ademas de que el dispositivo ivshmem utilizado para organizar la interacción entre las cells, se ha rediseñado y que también este puede implementar el transporte para VIRTIO.
Se implementó la capacidad de deshabilitar la creación de páginas grandes de memoria (página enorme) para bloquear la vulnerabilidad CVE-2018-12207 en los procesadores Intel, lo que permite que un atacante sin privilegios inicie una denegación de servicio, lo que lleva al congelamiento del sistema en el estado “Error de verificación de máquina”.
Para sistemas con procesadores ARM64, se admiten SMMUv3 (Unidad de administración de memoria del sistema) y TI PVU (Unidad de virtualización periférica). Para entornos aislados que se ejecutan en la parte superior del equipo, se ha agregado soporte PCI.
En los sistemas x86 es posible habilitar el modo CR4.UMIP (Prevención de instrucciones en modo de usuario) proporcionado por los procesadores Intel, que permite prohibir la ejecución de ciertas instrucciones en el espacio del usuario, como SGDT, SLDT, SIDT, SMSW y STR, que se pueden usar en ataques dirigido a aumentar los privilegios en el sistema.
Obtener Jailhouse
Jailhouse admite la operación en sistemas x86_64 con extensiones VMX + EPT o SVM + NPT (AMD-V), así como en procesadores ARMv7 y ARMv8 / ARM64 con extensiones de virtualización.
Aun que por aparte se está desarrollando un generador de imágenes que se basa en paquetes Debian para dispositivos compatibles.
Puedes encontrar las instrucciones de compilación e instalación, así como demás información en el siguiente enlace.