Задать вопрос
Ответы пользователя по тегу Драйверы
  • С чего начать чтобы написать полностью свой гипервизор с 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 комментария