Задать вопрос
@mddbs

С чего начать чтобы написать полностью свой гипервизор с 0?

Никогда не писал гипервизоры и вот хочу начать изучать данное направление но так как в интернете информации об этом очень мало решил обратится сюда за помощью.
Посоветуйте с чего начать что почитать и тд
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
TrueBers
@TrueBers
Гуглю за еду
Сначала нужно понять, какая архитектура процессора интересует.
Для Intel, AMD, ARM, RISK-V будут разные технологии использоваться.
Допустим у тебя Интел. Качаешь Intel Software Developer Manual. Это такой талмуд на 5 тысяч страниц. Там можно найти всю информацию по инструкциям процессора, настройкам, режимам, прерываниям, разметке памяти и т. п.

Дальше, необходимо решить, какой тип гипервизора нужен.
Есть грубо 2 вида: первый и второй.
Первый это когда гипервизор является программой, которая не рассчитывает ни на кого, кроме как на само железо.
И второй, который пользуется средствами запущенной ОС. Просит у неё память, использует её планировщик, её модель памяти, прерывания, и т.д.
В первом случае гипервизор может являться, например, драйвером для UEFI или голого железа.
Во втором случае -- драйвером ОС, который загружает сама операционная система.

В ответе с примерами про VirtualBox и xen видно, что автор ответа никогда не сталкивался с разработкой гипервизоров, но решил ответить ради ответа и кучи мусорных совковых слов из ГОСТов. Изучать гипервизоры на их примере, всё равно что ковыряться в коде ядра Линукса, чтобы понять как работают ОС. Пары-тройки лет должно хватить.

Проще всего взять один из сотен готовых учебных микро-гипервизоров и ковырять их, пописывая свой параллельно, по мере того, как приходит понимание.
Советую начать с разработки bare-metal гипервизора на основе UEFI-драйвера. Там минимальные функции уже идут в прошивке из коробки, такие как выделение памяти, настройка реального режима процессора, страничной адресации, и т. п. Остаётся только написать сам код гипервизора и можно будет загружать существующую установленную ОС прямо в своём гипервизоре.

Ассемблер нужен по минимуму. Там строк 50 от силы на нём наберётся. Его нужно читать, понимать, да. Знать тонкости работы процессора, интерпретировать состояние регистров правильно и ещё много чего. Но писать на нём не нужно почти ничего.

Погугли. Миллион же уже курсов, статей, репозиториев.
Один из первых был Hypervisor-From-Scratch, он до сих пор поддерживается.
7 days to virtualization тоже один из первых курсов статей.
SimpleVisor один из первых репозиториев открытых с минимальным гипервизором в качестве драйвера под винду которая виртуализирует сама себя.
Orange Slice неплохой минималистичный гипервизор, автор его разрабатывал на стриме на твитче или ютубе, не помню уже.
Из awesome списков есть https://github.com/husseinmuhaisen/Hypervisor и https://github.com/Wenzel/awesome-virtualization
Инфы просто тонны на эту тему в последнее время. На гитхабе игрушечных гипервизоров несколько десятков если не сотен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
С изучения архитектуры, принципов работы и ассемблера процессора для которого вы хотите написать гипервизор, а так же всей его платформы. Аналогично и для той платформы, в рамках которой вы его хотите его написать. Ну и дальше всё стандартно, как при разработке любого ПО:
  1. Формулируете вашу задачу в виде какого-то текстового/графического описания
  2. Формулируете ТЗ с конкретными требованиями, ограничениями и всем прочим
  3. На основе ТЗ разрабатываете ЧТЗ (Частное ТЗ) со всеми полными деталями, описаниями всех действий, событий, взаимодействий и прочее
  4. Используя ЧТЗ подготавливаете проект - архитектура, инструменты, системы, подсистемы и прочее с полным описанием, декомпозированными элементами вниз до самых простых и прочее
  5. Берём проект и по шагам его реализовываем
  6. Profit

В качестве примера реализации смотрите в исходники и документацию virtualbox или xen.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы