Крошечная 32-разрядная операционная система x86 PC, основанная на монолитном ядре с некоторыми Unix-подобными функциями, написанными в подмножестве C ++.
Обратите внимание: эта мета-документация все еще находится в стадии разработки :-)
Крошечная операционная система настольных компьютеров с UNIX-подобными функциями, которая написана в подмножестве C ++, понятно для студентов первого года TI в Hogeschool Utrecht, так что ее можно использовать в образовательном контексте.
Там, где это возможно, производительность и особенности приносятся в жертву, чтобы уменьшить сложность и увеличить читаемость. Это должно помочь программному обеспечению быть более понятным для использования в образовательном контексте. Тем не менее, должны быть реализованы важные предметы из OS-Courses в Hogeschool Utrecht.
Несмотря на то, что он должен хорошо загружаться на реальном оборудовании, Rikaios разрабатывается с учетом эмулятора или виртуальной машины - поддерживаемое оборудование намеренно ограничено ради простоты.
Обязательный отказ от ответственности: ОС может растопить вашу материнскую плату и съесть вашу домашнюю мышь при запуске на реальном оборудовании, без гарантий, Yada Yada, пожалуйста, прочитайте отказ от ответственности в файле лицензии, прежде чем запустить это на вашем семейном компьютере.
Смотрите ./aux каталог. Не ожидайте ничего роскошного - в настоящее время это все серийные терминальные захваты!
ОС с его текущим набором функций была разработана примерно в течение примерно 6-месячного периода с февраля по июль 2019 года.
Rikaios еще не заменитель Linux ;-)
Есть некоторые функции, которые нуждаются в работе или в настоящее время работают (см. Также раздел «Содействие»):
grep -ERn 'TODO|FIXME|XXX' src/kernel/src src/kernel/include src/user/Обратите внимание, что цель Rikaios состоит в том, чтобы оставаться небольшим: например, сетевой стек или драйвер USB, вероятно, не будет рассматриваться для реализации.
Вам нужно, чтобы это программное обеспечение было установлено (на хосте Linux-ish) для создания и запуска Rikaios:
Номера версий должны быть недавними, особенно для Clang, LLVM и LLD. Представлен Arch Linux Dockerfile (благодаря @peikos), которая включает в себя совместимые версии вышеуказанных зависимостей.
Вы можете использовать GCC вместо Clang/LLVM, если вы этого хотите, при условии, что у вас есть GCC Cross-Toolchain для I686-ELF. См. src/kernel/Makefile для получения подробной информации о том, как переключить наборы инструментов.
| Каталог | Описание |
|---|---|
/src/boot | Загрузчик (Bootsector и Stage2) |
/src/boot/utils | Установщик загрузчика |
/src/kernel | Код ядра |
/src/kernel/include | Заголовки ядра подвергались воздействию пользователя |
/src/kernel/include/os-std | Стандартная библиотека ОС (математика, контейнеры и т. Д.) |
/src/user | Пользовательское программное обеспечение |
/src/user/libsys | Системная библиотека пользователя C ++ |
/src/disk | (FAT32) файловая система, доступная для ОС |
| Makefile | Описание |
/src/Makefile | Строит все, создает загрузочные диски и запускает эмуляторы |
/src/boot/Makefile | Builds Bootloader и установщик |
/src/kernel/Makefile | Строит ядро |
/src/user/Makefile | Строит пользовательскую пользу |
Каждый макияж выше включает в себя (если доступно) Makefile.local File в одном и том же каталоге. Это позволяет переопределить любые исполняемые имена и пути инструмента, а также добавить дополнительные цели.
Не забудьте пройти -j 4 (или выше), чтобы повысить производительность сборки в многоядерных системах.
Это создает ядро и загрузчик и создает загрузочный диск, который работает с виртуализатором / эмулятором QEMU. Последовательное соединение с ОС открывается в терминале, из которого вы запускаете команду Make.
сделать диск и сделать запуск
В настоящее время у Shell OS Shell и TTY не обладают сложные возможности редактирования линий и поддержку истории командной строки. Для удобства вы можете обернуть QEMU с rlwrap , чтобы использовать средства для редактирования линий на стороне хоста (настоятельно рекомендуется):
сделать диск && rlwrap -a Make Run
Чтобы запустить в VirtualBox, сделайте следующее:
vdi :сделать VDI
Затем:
disk.vdi в качестве диска IDEТеперь вы сможете запустить виртуальную машину через VirtualBox.
Обратите внимание, что серийный ввод -вывод может быть трудно добраться до работы. Версия текущей ОС не взаимодействует с экраном и клавиатурой/мышами по умолчанию.
После того, как вы запустите систему, вы должны увидеть подсказку в серийном терминале (если у вас подключил монитор, также может появиться экраны брызги). Вы можете взаимодействовать с ОС, используя серийный терминал. Чтобы начать, попробуйте команду help .
Ряд коммунальных программ предоставляется на диске. Посмотреть установленные программы, набрав ls bin (при условии, что вы все еще находитесь в каталоге /disk0p1 ). Все программы ELF в /disk0p1/bin могут быть выполнены в качестве команд, не набирая полный путь (подумайте о нем как о неявном каталоге $PATH ). Аналогичным образом, любые файлы ELF в рабочем каталоге, такие как forth.elf , могут быть запущены, просто набрав их имя.
Чтобы увидеть, как работают утилиты, или добавить свой собственный, см. Файл README в каталоге src/user этого репозитория.
Нажатие ESC на клавиатуре (в окне видео, а не в серийном терминале) позволит оболочке ядра, встроенной утилите отладки. Это может использоваться для печати различных статистических данных и информации о запуске процессов и памяти (см. Команду help когда в Kshell).
Вы можете отлаживать ядро с Qemu или Bochs:
См Makefile.local
Сделать диск и сделать отладь
См Makefile.local
сделать диск и сделать боч
Ld.lld: ошибка: невозможно найти библиотеку -lclang_rt.builtins -i386
locate clang_rt.builtins )kernel/Makefile.local , с содержимым: LD_BUILTIN_DIR += /the/directory/containing/the/clang/lib Я понимаю, что общедоступная документация в настоящее время ограничена, поэтому, пожалуйста, не стесняйтесь открыть проблему или отправить мне электронное письмо.
Пожалуйста, откройте проблему GitHub / Gitlab, чтобы мы могли убедиться, что никаких усилий не дублировано :-)
Процесс для этого должен быть формализован в ближайшие недели - есть некоторые открытые проблемы / функции, над которыми можно определенно работать, с различной степенью сложности / размера. Скоро документирую это ™.
Этот проект лицензирован по лицензии Apache 2.0. Пожалуйста, смотрите ./license для получения дополнительной информации.
Эта операционная система была записана с нуля, за исключением следующего исключения: