Die Firma Siemens die Veröffentlichung des freien Hypervisors . Der Hypervisor unterstützt den Betrieb auf x86_64-Systemen mit VMX+EPT oder SVM+NPT (AMD-V) Erweiterungen sowie auf ARMv7 und ARMv8/ARM64 Prozessoren mit Virtualisierungsfunktionen. Darüber hinaus existiert ein Image-Generator für den Jailhouse-Hypervisor, der auf Debian-Paketen für unterstützte Geräte basiert. Der Code des Projekts steht unter der GPLv2-Lizenz.
wurde als Modul für den Linux-Kernel implementiert und ermöglicht die Virtualisierung auf Kernel-Ebene. Komponenten für die Gastsysteme sind bereits im Hauptkern von Linux enthalten. Zur Verwaltung der Isolation werden die von modernen CPUs bereitgestellten Hardware-Virtualisierungsmechanismen verwendet. Zu den besonderen Merkmalen von Jailhouse gehören die leichtgewichtige Implementierung und die Ausrichtung auf die Bindung von virtuellen Maschinen an eine feste CPU, bestimmte RAM-Bereiche und Hardware-Geräte. Dieser Ansatz ermöglicht es, auf einem physischen Mehrkernserver mehrere unabhängige virtuelle Umgebungen zu betreiben, von denen jede einem eigenen Prozessorkern zugeordnet ist.
Bei einer strikten Zuordnung zu CPU werden die Overhead-Kosten durch den Hypervisor auf ein Minimum reduziert, und die Implementierung wird erheblich vereinfacht, da kein komplexer Ressourcenverteilungsscheduler erforderlich ist. Die Zuweisung eines einzelnen CPU-Kerns garantiert, dass auf diesem CPU keine anderen Aufgaben ausgeführt werden. Der Vorteil dieses Ansatzes liegt in der Möglichkeit, garantierten Zugriff auf Ressourcen und vorhersehbare Leistung zu gewährleisten, was Jailhouse zu einer geeigneten Lösung für die Erstellung von Echtzeitanwendungen macht. Ein Nachteil ist die begrenzte Skalierbarkeit, die von der Anzahl der CPU-Kerne abhängt.
In der Terminologie von Jailhouse werden die virtuellen Umgebungen als "Kammern" (cell, im Kontext von Jailhouse) bezeichnet. Innerhalb der Kammer verhält sich das System wie ein Einzelprozessorserver, der eine Leistung zeigt, die zur Leistung eines dedizierten CPU-Kerns. In der Umgebung können beliebige Betriebssysteme sowie abgespeckte Umgebungen für die Ausführung einer Anwendung oder speziell vorbereitete Einzelanwendungen, die zur Lösung von Echtzeitanforderungen entwickelt wurden, betrieben werden. Die Konfiguration erfolgt in , die die für die Umgebung zugewiesenen CPUs, Speicherbereiche und Ein-/Ausgabepunkte festlegen.

In der neuen Version
- Unterstützung für die Plattformen Raspberry Pi 4 Model B und Texas Instruments J721E-EVM hinzugefügt;
- das ivshmem-Gerät, das für die Interaktion zwischen Zellen verwendet wird. Über dem neuen ivshmem kann ein Transport für VIRTIO implementiert werden;
- Die Möglichkeit zur Deaktivierung der Erstellung von großen Speicherseiten (hugepage) zur Verhinderung der Schwachstelle in Intel-Prozessoren, die einem unprivilegierten Angreifer ermöglicht, einen Denial-of-Service auszulösen, der das System in den Zustand „Machine Check Error“ versetzt;
- Für Systeme mit ARM64-Prozessoren wurde die Unterstützung für SMMUv3 (System Memory Management Unit) und TI PVU (Peripheral Virtualization Unit) implementiert. Für isolierte Umgebungen, die auf Hardware (bare-metal) ausgeführt werden, wurde die Unterstützung für PCI hinzugefügt;
- Auf x86-Systemen wurde die Möglichkeit implementiert, den von Intel-Prozessoren bereitgestellten CR4.UMIP (User-Mode Instruction Prevention)-Modus zu aktivieren. Dieser Modus erlaubt es, die Ausführung bestimmter Anweisungen im Benutzermodus zu verbieten, wie SGDT, SLDT, SIDT, SMSW und STR, die in Angriffen zur Erhöhung der Privilegien im System verwendet werden können.
Quelle: opennet.ru
