Разработчики проекта Xen о реализации возможности использования Xen Hypervisor на платах Raspberry Pi 4. Адаптации Xen для работы на прошлых вариантах плат Raspberry Pi мешало применение нестандартного контроллера прерываний, не имеющего поддержки виртуализации. В Raspberry Pi 4 был применён обычный контроллер прерываний GIC-400, поддерживаемый в Xen, и разработчики рассчитывали, что проблем с запуском Xen не будет. Но на деле, всё оказалось не так, как предполагалось, и для обеспечения работы Xen на Raspberry Pi 4 пришлось вносить заметные изменения в код для работы с памятью.
Первые варианты плат Raspberry Pi 4 ограничивали доступ только к адресному пространству первого гигабайта памяти, чего было недостаточно для Dom0. Необходимые изменения были внесены в выпуск Xen 4.14, но сразу всплыла другая проблема — в подсистеме Xen для преобразования виртуальных адресов в физические использовался вызов virt_to_phys, который не срабатывал для всех виртуальных адресов и попытки преобразования некоторых виртуальных адресов завершались ошибкой. Для решения данной проблемы пришлось добавлять другую функцию преобразования адресов.
На этом проблемы не закончились и всплыла особенность в работе DMA — во всех ранее поддерживаемых в Xen платформах (x86, ARM и ARM64) адреса DMA и физические адреса всегда совпадали, но в Raspberry Pi 4 они отличались. Найти решение для данной проблемы оказалось сложнее всего и потребовало разработки патчей для ядра Linux, выполняющих преобразование между физическими адресами и адресами DMA.
Подготовленные исправления вошли в состав ядра Linux 5.9 и теперь Xen признан готовым для организации виртуализации на платах Raspberry Pi 4. В том числе на Raspberry Pi 4 теперь можно использовать (Edge Virtualization Engine), движок для создания и запуска cloud-native приложений, использующий Xen, и для построения инфраструктуры виртуализации на портативных устройствах.
Дополнительно можно отметить устранение в Xen. Уязвимости ,
и
потенциально позволяют из гостевой системы получить привилегии хост-окружения. Проблемы
, ,
,
,
,
и
ограничиваются совершением отказа в обслуживании.
Источник: opennet.ru
