Добро пожаловать в ... э -э -э -э -э -э -э?
Это ОС x86_64, написанная полностью с нуля (без зависимостей), сделанная вами по -настоящему.
Этот проект был написан без помощи GitHub CodeStealer, ChatGpthief Openai или других подобных прогнозирующих алгоритмов, исходящих контент.
TLDR: средняя и частичная катастрофа! Веселье!
_old имеет функциональное ядро, которое использует великие библиотеки из Фил-Оппа и нескольких других. Код не очень хорошо задокументирован, но он не слишком сложный, поэтому он должен быть довольно читаемым. Он был создан для потрясающего форума по разработке ОС в моей школе.
Все остальное-это мое переписывание без зависимости WIP. Прямо сейчас он имеет только загрузчик BIOS, который может ввести 64-битный режим. Следующим шагом является реализация анализатора эльфа, затем эльфийский погрузчик, а затем загрузить ядро (которое будет просто файлом эльфа).
Новая версия BS очень хорошо документирована, включая ресурсы для дальнейших исследований. Часть моей цели - сделать этот отличный демонстрационный код для будущих программистов для ссылки и учиться.
Каждая папка имеет Readme и, надеюсь, самооценка, но вот грубая таблица для этого репо:
boot : Все ящики в загрузчике BS 'Bootloader.kernel : ядро BS (в настоящее время пустое до тех пор, пока не будет записан эльфийский погрузчик).lib : Помощные библиотеки, используемые BS. Это имеет инструменты сборки, Frieren (погрузчик эльфа WIP) и общая библиотека (которая скоро будет разделена на несколько ящиков). Эти ящики имеют свои собственные библиотеки, потому что они используются несколькими ящиками в BS (например, загрузчик загружает эльф, но окончательная операционная система также сможет).qemu : ящик, который превращает BS в последний диск и запускает его в Qemu. Для старой, более функциональной версии BS с зависимостями запустите cargo r в папке _old .
В новой версии используется моя индивидуальная система сборки, Bargo, поэтому вам нужно сначала установить (не бойтесь - Bargo имеет только 1 зависимость, анализатор Toml без зависимости, и он должен компилировать за считанные секунды). Bargo - это своего рода обертка вокруг груза, поэтому вы можете использовать его почти точно так же - bargo b для строительства, bargo r для запуска, -r для режима выпуска и т. Д.
Если вам интересно, почему BS использует Bargo вместо груза, то это потому, что в грузе нет всех функций, которые мне нужны. Мне нужны сценарии пост-сборки и возможность использовать build-std для нескольких целей, поскольку загрузчик имеет другую цель, чем ядро и ОС. Я пытался часами, но не мог придумать здравомыслящий способ реализовать это в ванильном грузе.
Обе версии работают в QEMU, поэтому убедитесь, что это установлено первым. Если вы хотите построить и запустить его вручную, команда используется под капюшоном, по сути, сводится к этому: cargo b; qemu-system-x86_64 -drive format=raw,file=target/bs.bin,index=0 . Для старой версии вы захотите загрузить файл _old/disk.bin вместо target/bs.bin .