Вопрос или проблема
У меня есть x86 машина, на которой я запускаю QEMU для симуляции некоторой ARM-архитектуры. Далее я установил Ubuntu ОС (для ARM-архитектуры) поверх QEMU, и она успешно загрузилась.
Теперь моя цель – установить некоторый гипервизор поверх Ubuntu ОС, чтобы я мог запускать несколько ARM-основанных виртуальных машин (гостевых ОС) поверх неё.
Какой гипервизор (основанный на ARM) я должен попробовать установить поверх Ubuntu?
В интернете говорят, что мы не можем запустить ARM-основанный гипервизор поверх x86 платформы, даже если мы используем QEMU для симуляции ARM платформы. Причина заключается в том, что “QEMU, при запуске на x86 хосте, использует TCG (Tiny Code Generator) для эмуляции ARM инструкций. TCG не поддерживает эмуляцию ARM-расширений виртуализации, которые необходимы для запуска гипервизора на ARM госте.”
Не уверен, пробовал ли кто-нибудь уже это сделать. Любые предложения приветствуются.
.
Ответ или решение
Во введенной ситуации рассматривается задача установки гипервизора на ARM-платформе, эмулируемой на x86 машине с использованием QEMU. Давайте подробно разберем теоретическую, практическую и прикладную стороны этого вопроса.
Теория
1. Основы виртуализации и эмуляции:
Виртуализация и эмуляция – два различных подхода к запуску множества операционных систем на одной физической машине. Виртуализация обычно предполагает использование гипервизора для распределения аппаратных ресурсов, а эмуляция использует программное обеспечение для имитации работы определенной архитектуры на другой архитектуре.
2. QEMU и TCG:
QEMU — это мощный эмулятор, который поддерживает множество архитектур, включая ARM. На x86-хосте QEMU использует TCG (Tiny Code Generator) для эмуляции ARM-инструкций. Однако, этот подход имеет ограничения: TCG не поддерживает расширения виртуализации ARM, такие как Virtualization Extensions, которые необходимы для работы гипервизора на гостевой ARM-системе.
3. Расширения виртуализации ARM:
Расширения ARM Virtualization обеспечивают поддержку гипервизорного уровня в архитектуре ARM, включая механизм для выполнения гипервизоров и улучшенное управление памятью с помощью второго уровня таблиц страниц. Эти расширения критически важны для работы гипервизоров, таких как KVM для ARM. Тем не менее, на эмуляции через TCG они становятся недоступны, что делает невозможной установку большинства ARM-гипервизоров в полностью эмулируемой среде.
Пример
Пример возможного решения: LXD
Вместо установки гипервизора для полной виртуализации можно рассмотреть использование LXD на Ubuntu в ARM-госте. LXD — это контейнерный гипервизор для системного уровня виртуализации, который может работать поверх традиционной операционной системы. Контейнеры используют срез системы (namespace) ядра Linux, что позволяет им стать легковесной альтернативой традиционной виртуализации для некоторых сценариев использования.
Применение
Шаги и рекомендации:
-
Исследование совместимых гипервизоров: Поскольку установка такого гипервизора как Xen или KVM для ARM невозможна из-за отсутствия поддержки виртуализационных расширений, вам следует рассмотреть возможные альтернативные решения, включая контейнеризацию.
-
Использование контейнеров LXD: Установите LXD на ARM гостевой системе. Это позволит запускать изолированные окружения и работать с рядом уникальных сервисов без необходимости полной виртуализации.
-
Ограничения и недостатки контейнерного подхода: Контейнеры обеспечивают только уровень изоляции без защиты от неполадок в ядре хоста. Если ваша задача требует полной изоляции или специфических возможностей гипервизора, стоит рассмотреть другие альтернативы.
-
Вывод и долгосрочные рекомендации: В вашем случае наиболее подходящим подходом будет пересмотр архитектурного решения. Если бизнес-задача требует критически важных гипервизорных функций для ARM, может имеет смысл рассмотреть подобранное аппаратное обеспечение с поддержкой ARM-архитектуры на уровне физического слоя.
В заключении, установка полного гипервизора на QEMU-эмуляции ARM является неподходящим решением из-за технических ограничений. Однако, при использовании таких технологий как контейнеризация LXD можно адаптировать существующую платформу для выполнения многих необходимых задач, уйдя от полных ограничений виртуализации.