Die Entwickler des Xen-Projekts arbeiten an der Implementierung der Nutzung des Xen Hypervisors auf Raspberry Pi 4-Platinen. Die Anpassung von Xen für frühere Versionen der Raspberry Pi-Platinen wurde durch den Einsatz eines nicht standardmäßigen Interrupt-Controllers, der keine Virtualisierung unterstützte, erschwert. Auf Raspberry Pi 4 kam ein herkömmlicher GIC-400-Interrupt-Controller zum Einsatz, der von Xen unterstützt wird, und die Entwickler erwarteten, dass es keine Probleme beim Start von Xen geben würde. In der Praxis stellte sich jedoch heraus, dass alles anders war als erwartet, und um Xen auf Raspberry Pi 4 zum Laufen zu bringen, mussten bedeutende Änderungen am Code für den Umgang mit dem Speicher vorgenommen werden.
Die ersten Versionen der Raspberry Pi 4-Platinen beschränkten den Zugriff nur auf den Adressbereich von einem Gigabyte Speicher, was für Dom0 nicht ausreichte. Die erforderlichen Änderungen wurden in die Veröffentlichung von Xen 4.14 aufgenommen, jedoch tauchte sofort ein weiteres Problem auf — in der Xen-Subsystem zur Umwandlung virtueller Adressen in physische wurde der Aufruf virt_to_phys verwendet, der nicht für alle virtuellen Adressen funktionierte und Versuche, einige virtuelle Adressen umzuwandeln, endeten mit einem Fehler. Um dieses Problem zu lösen, musste eine andere Adressumwandlungsfunktion hinzugefügt werden.
Doch damit endeten die Probleme nicht, denn es trat eine Besonderheit in der DMA-Implementierung auf: In allen zuvor unterstützten Plattformen in Xen (x86, ARM und ARM64) stimmten die DMA-Adressen und die physischen Adressen immer überein, aber beim Raspberry Pi 4 war das nicht der Fall. Eine Lösung für dieses Problem zu finden, stellte sich als äußerst schwierig heraus und erforderte die Entwicklung von Patches für den Linux-Kernel, die eine Umwandlung zwischen physischen Adressen und DMA-Adressen durchführen.
Die vorbereiteten Korrekturen sind nun Teil des Linux-Kernels 5.9 und Xen wird jetzt als bereit angesehen, um Virtualisierung auf Raspberry Pi 4-Platinen zu ermöglichen. Insbesondere kann nun auf dem Raspberry Pi 4 verwendet werden: (Edge Virtualization Engine), eine Engine zur Erstellung und Ausführung cloud-nativer Anwendungen, die Xen verwendet, und zum Aufbau von Virtualisierungsinfrastrukturen auf tragbaren Geräten.
Zusätzlich ist anzumerken, dass in Xen behoben wurden. Die Sicherheitsanfälligkeiten ,
und
erlauben es potenziell, Privilegien des Host-Systems aus dem Gastsystem zu erlangen. Die Probleme
, ,
,
,
,
und
beschränken sich auf die Durchführung von Denial-of-Service-Angriffen.
Quelle: opennet.ru
