Programiści projektu Xen ogłosili wdrożenie możliwości korzystania z Xen Hypervisor na płytkach Raspberry Pi 4. Dostosowanie Xen do działania na wcześniejszych wersjach płytek Raspberry Pi utrudniało zastosowanie niestandardowego kontrolera przerwań, który nie miał wsparcia dla wirtualizacji. Na Raspberry Pi 4 zastosowano standardowy kontroler przerwań GIC-400, który jest wspierany w Xen, a programiści liczyli, że nie będzie problemów z uruchomieniem Xen. Jednak w rzeczywistości okazało się, że sytuacja jest bardziej skomplikowana i aby zapewnić działanie Xen na Raspberry Pi 4, konieczne było wprowadzenie znaczących zmian w kodzie zarządzającym pamięcią.
Początkowe wersje płytek Raspberry Pi 4 ograniczały dostęp tylko do przestrzeni adresowej pierwszego gigabajta pamięci, co było niewystarczające dla Dom0. Wymagane zmiany zostały wprowadzone w wydaniu Xen 4.14, ale natychmiast pojawił się inny problem – w podsystemie Xen do konwersji adresów wirtualnych na fizyczne używano wywołania virt_to_phys, które nie działało dla wszystkich adresów wirtualnych, a próby konwersji niektórych adresów wirtualnych kończyły się błędem. Aby rozwiązać ten problem, konieczne było dodanie innej funkcji konwersji adresów.
Na tym problemy się nie kończyły, a pojawiła się specyfika działania DMA – we wszystkich wcześniej wspieranych w Xen platformach (x86, ARM i ARM64) adresy DMA i fizyczne zawsze były zgodne, ale w Raspberry Pi 4 różniły się. Znalezienie rozwiązania dla tego problemu okazało się najtrudniejsze i wymagało opracowania poprawek do jądra Linux, które realizowały konwersję między adresami fizycznymi a adresami DMA.
Przygotowane poprawki weszły w skład jądra Linux 5.9 i teraz Xen jest uznawany za gotowy do wirtualizacji na płytkach Raspberry Pi 4. W tym również na Raspberry Pi 4 można teraz używać (Edge Virtualization Engine), silnik do tworzenia i uruchamiania aplikacji cloud-native, wykorzystujący Xen, i do budowy infrastruktury wirtualizacji na urządzeniach przenośnych.
Dodatkowo warto zaznaczyć eliminację w Xen. Luki ,
i
potencjalnie umożliwiają systemowi gościa uzyskanie uprawnień środowiska hosta. Problemy
, ,
,
,
,
i
ograniczają się do realizacji ataków typu denial of service.
Źródło: opennet.ru
