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

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    С изучения архитектуры, принципов работы и ассемблера процессора для которого вы хотите написать гипервизор, а так же всей его платформы. Аналогично и для той платформы, в рамках которой вы его хотите его написать. Ну и дальше всё стандартно, как при разработке любого ПО:
    1. Формулируете вашу задачу в виде какого-то текстового/графического описания
    2. Формулируете ТЗ с конкретными требованиями, ограничениями и всем прочим
    3. На основе ТЗ разрабатываете ЧТЗ (Частное ТЗ) со всеми полными деталями, описаниями всех действий, событий, взаимодействий и прочее
    4. Используя ЧТЗ подготавливаете проект - архитектура, инструменты, системы, подсистемы и прочее с полным описанием, декомпозированными элементами вниз до самых простых и прочее
    5. Берём проект и по шагам его реализовываем
    6. Profit

    В качестве примера реализации смотрите в исходники и документацию virtualbox или xen.
    Ответ написан
    Комментировать
  • С чего начать чтобы написать полностью свой гипервизор с 0?

    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
    Инфы просто тонны на эту тему в последнее время. На гитхабе игрушечных гипервизоров несколько десятков если не сотен.
    Ответ написан
    2 комментария