Monkos-это экспериментальная 64-битная операционная система для процессоров Intel и AMD. Это смесь C и языка сборки и находится в стадии разработки. В настоящее время он состоит из загрузчика Bios, виртуальной консольной системы, системы обработки прерываний, диспетчера памяти на страницах, распределения кучи, нескольких простых драйверов устройств и примитивной интерактивной оболочки. Загрузчик предназначен для запуска операционной системы с CDROM.
В настоящее время ОС строит под Linux с использованием кросс-компилятора. Существует два способа его создания: (1) Установка всех необходимых инструментов в вашей системе и запуска make , или (2), используя готовый контейнер Docker, который содержит все инструменты сборки, которые вам нужны.
Чтобы построить с помощью инструментов, установленных в вашей локальной системе, вам нужно будет установить следующее программное обеспечение:
Большинство из этих инструментов доступны от стандартных менеджеров пакетов Linux. Кросс-компилятор, однако, нет. Чтобы построить кросс-компилятор, проконсультируйтесь с инструкциями на этой странице. Обязательно следуйте LIBGCC без инструкций с красной зоной.
После того, как вы установили все инструменты и убедились, что перекрестный компилятор находится на вашем пути, запустите make .
$ make Это приводит к загрузочному файлу CDROM ISO с именем monk.iso в вашем подкаталоге.
Поскольку это может быть немного хлопот для создания и установки кросс-компилятора, был подготовлен контейнер Docker, что позволяет вам самостоятельно строить кросс-компилятор. Чтобы запустить сборку на основе Docker, убедитесь, что в вашей системе установлена недавняя версия Docker, добавьте себя в группу пользователей Docker вашей системы, а затем введите следующее:
$ make docker Это стягивает контейнер Docker ( brett/monkos-build ), если у вас его еще нет, запустите сборку внутри контейнера и генерируйте файл ISO (и все другие промежуточные выходные файлы) в вашей подкаталории сборки. Он ведет себя почти точно так же, как если бы вы make используя кросс-компилятор, установленный локально в вашей системе.
Есть несколько способов запустить Monkos, как только у вас есть файл ISO. Первый и самый трудоемкий способ-это сжечь его на компакт-диске или DVD-рим, используя вашу любимую утилиту сжигания. Это единственный способ проверить Monkos в системе с обнаженным металлом.
В качестве альтернативы, вы можете запустить операционную систему, используя программное обеспечение для виртуальных машин, как VMware или VirtualBox.
Или вы можете запустить операционную систему в эмуляторе на основе Linux, таком как Qemu или Bochs. Monkos Makefile делает эту альтернативу особенно простым, предоставляя простое правило сборки для запуска ОС в QEMU:
$ make testВы также можете использовать Makefile, чтобы начать сеанс отладки отладки ядра под QEMU и GDB. Во -первых, запустить Qemu в режиме отладки:
$ make debugЗатем запустите сеанс отладчика GDB, подключив GDB к конечной точке отладчика QEMU:
$ gdb
(gdb) set arch i386:x86-64
(gdb) symbol-file build/monk.sys
(gdb) target remote localhost:8864
(gdb) layout src
Запустить make docs для создания красиво отформатированной документации для Monkos. Для этого вам понадобится Doxygen, установленная в вашей системе.
$ make docs Документы доксигена появятся в подкаталоге docs/monk . Чтобы просмотреть их, запустите их в своем браузере (в данном случае Firefox):
$ firefox docs/monk/index.htmlЧтобы создать кодовые теги для получения удобного поиска символов в вашем редакторе, используйте Makefile, чтобы запустить утилиту изобилия:
$ make tags Это создает файл .tags в вашем каталоге Monkos.
Чтобы очистить все промежуточные файлы, используйте чистую сборку:
$ make cleanЧтобы очистить все сгенерированные файлы зависимостей, используйте сборку CleanDeps:
$ make cleandepsПожалуйста, проконсультируйтесь с документацией в форматированной доксигене, которая является частью набора документации Monkos.
Это некоторые из ресурсов, на которые я полагался в своей попытке лучше понять многочисленные и различные аспекты разработки загрузчика и ОС:
Использование этого исходного кода регулируется лицензией в стиле BSD, которую можно найти в файле лицензии.