Toaruos является «полной» операционной системой для X86-64 ПК и экспериментальной поддержки ARMV8.
В то время как многие независимые, хобби и исследования стремятся экспериментировать с новыми проектами, Toaruos предназначен как образовательный ресурс, обеспечивая репрезентативный микрокосм функциональности, обнаруженный в основных операционных системах настольных компьютеров.
ОС включает в себя ядро, загрузчик, динамический компоновщик общего объекта, Стандартную библиотеку C, собственную композиционную систему оконного окна, динамический язык программирования, компилируемый байт-кодом, редактор расширенного кода и десятки других утилит и примеров приложений.
В этом репозитории включено все необходимые зависимости времени выполнения, и весь необходимый исходный код, составляющий примерно 100 тыс. Линий (в первую очередь) C, за исключением Куроко, который живет отдельно.
Демонстрация пользовательского интерфейса Toaruos и некоторых приложений.
Я работаю над Toaruos уже более десяти лет, и мои цели изменились за эти годы.
Когда я впервые запустил проект в декабре 2010 года, моя цель состояла в том, чтобы «учиться, делая» - изучая Unix -подобные системы, создавая его с нуля. Я был участником Compiz, одного из первых широко используемых менеджеров по уходу по композитированию для X11, несколько лет назад, и несколько естественно, что Toaruos получил графический интерфейс, построенный на аналогичных концепциях на раннем этапе.
Для своего первоначального выпуска 1.0 в 2015 году Toaruos не была «полностью с нуля» ОС, которой он стал с тех пор. Newlib предоставил LIBC, а графический интерфейс был построен на Каире, Либпнге и Фритипе. В середине 2018 года я запустил новый проект по замене этих сторонних компонентов, который в конечном итоге был завершен и объединен, чтобы стать Toaruos 1.6.
В рамках проекта Toaruos также привлекло немало разработчиков ОС для начинающих, которые пытались использовать его в качестве ссылки. Ядро Тоаруоса, однако, было источником личного смущения для меня, и в апреле 2021 года, после долгого перерыва, я начал работать над новым. Результатом была Мисака: новое 64-разрядное ядро с поддержкой SMP. Мисака была объединена в мае и начала серию бета -релизов 1.99, ведущих к Toaruos 2.0.
dlopen .В настоящее время действуют следующие проекты:
Общие пользователи в надежде создать TOARUO из источника, рекомендуется расколоть репозиторий на GitHub и использовать трубопровод GitHub CI.
Для тех, кто хочет построить локально на подходящем настроенном хосте Linux с Docker, доступен контейнер для сборки. Репозиторий TOARUOS следует использовать в качестве крепления привязки AT /root/misaka и util/build-in-docker.sh можно запускать в этом контейнере для завершения процесса компиляции:
git clone https://github.com/klange/toaruos
cd toaruos
git submodule update --init kuroko
docker pull toaruos/build-tools:1.99.x
docker run -v `pwd`:/root/misaka -w /root/misaka -e LANG=C.UTF-8 -t toaruos/build-tools:1.99.x util/build-in-docker.sh
После такого строительства вы можете запустить различные целевые показатели коммунальных услуг ( make run и т. Д.). Попробуйте make shell , чтобы запустить оболочку Toaruos, используя последовательный порт с QEMU.
Makefile использует инструмент Kuroko, auto-dep.krk , для создания дополнительных make-файлов для приложений и библиотек пользовательского пространства, автоматически разрешая зависимости, основанные на директивах #include .
В неопределенном порядке библиотека C, ядро, библиотеки пользователя и приложения созданы, объединенные в сжатый архив для использования в качестве рамдиска, а затем упакованы в изображение файловой системы ISO9660.
base/usr/include , а также графические ресурсы для композитора и декоратора окон.Корневая файловая система настроена следующим образом:
bin : первые приложения.cdrom : точка MONTE для компакт -диска, если доступно.dev : каталог виртуальных устройств, сгенерированный ядром.net : сетевые интерфейсные устройства.pex : Hub Packet Exchange, перечисляет доступные услуги IPC.pts : Pty Secondary, конечные точки для TTYS.etc .: Файлы конфигурации, сценарии запуска.home : Пользовательские каталоги.lib : Первопартийные библиотекиkuroko : модули Куроко.mod : модули загруженного ядра.proc : виртуальные файлы, которые представляют состояние ядра.1 , и т. Д.: Виртуальные файлы с информацией о состоянии для отдельных процессов.src : исходные файлы, см. Раздел «Mayout Project» выше.tmp : монтируется в виде чтения/записи TMPF обычно.usr : пользовательские ресурсыbin : сторонние приложения, обычно пустые до тех пор, пока не будут установлены пакеты.include : файлы заголовков, в том числе потенциально из сторонних пакетов.lib : сторонние библиотеки. Должен иметь libgcc_s.so по умолчанию.share : различные ресурсы.bim : Синтаксис выделение и темы для текстового редактора.cursor : копчатые спрайты курсора.fonts : файлы шрифтов Truetype. Живые компакт -диски с Deja Vu Sans.games : сбрасывание оснований для файлов ресурсов, связанных с игрой, таких как Doom Wads.help : файлы документации для приложения Browser.icons : значки PNG, разделенные на дальнейшие каталоги по размеру.ttk : ресурсы SpriteSheet для декоратора окон и библиотеки виджетов.wallpapers : обои JPEG.var : Файлы времени выполнения, включая манифест диспетчера пакетов, файлы PID, некоторые файлы блокировки и т. Д. Лучший опыт конечного пользователя с Toaruos будет иметь в любой из этих виртуальных машин, так как Toaruos поддерживает их автоматический размер дисплея и абсолютное расположение мыши.
Установите новую виртуальную машину для «другого» 64-битного гостя, поставьте его как минимум 1GIB ОЗУ, прикрепите изображение CD, удалите или игнорируйте любые жесткие диски и выберите intel Gigabit NIC. Также рекомендуются два или более процессоров.
Тоарус работает в VirtualBox.
Toaruos, работающие в VMware Workstation Player.
По умолчанию загрузчик передаст флаг драйверу устройства VirtualBox, чтобы отключить «бесшовную» поддержку, поскольку реализация имеет накладные расходы на производительность. Чтобы включить бесшовный режим, используйте меню Bootloader, чтобы проверить опцию «VirtualBox Seamless» перед загрузкой. В меню также есть варианты отключения автоматического размера гостей, если вы испытываете проблемы с этой функцией.
Большая часть развития Toaruos происходит в QEMU, поскольку она обеспечивает наибольшую гибкость в оборудовании и лучшем опыте отладки. Рекомендуемая командная строка QEMU в хосте Ubuntu 20.04:
qemu-system-x86_64 -enable-kvm -m 1G -device AC97 -cdrom image.iso -smp 2
Замените -enable-kvm с -accel hvm или -accel haxm в зависимости от необходимости на хост -платформах без KVM, или удалите его, чтобы попробовать под эмуляцией программного обеспечения Qemu.
Обратите внимание, что параметры командной строки QEMU не являются стабильными, и эти флаги могут создавать предупреждения в новых версиях.
Опция -M q35 заменит эмуляцию чипсета PIIX более новой, которая имеет побочный эффект переключения контроллера IDE для SATA One. Это может привести к более быстрому времени загрузки за счет того, что Toaruos не смогут читать свой собственный компакт -диск во время выполнения, пока я не доберусь до завершения своего драйвера AHCI.
Toaruos был успешно протестирован на реальном оборудовании. Если нативные погрузчики BIOS или EFI не функционируют, попробуйте загрузить с помощью Grub. Toaruos соответствует спецификациям «Multiboot» и «Multiboot 2», чтобы они могли быть загружены с командами multiboot или multiboot2 следующим образом:
multiboot2 /path/to/misaka-kernel root=/dev/ram0 migrate vid=auto start=live-session
module2 /path/to/ramdisk.igz
set gfxpayload=keep
Туарус, начиная с USB -палочки на ThinkPad T410.
Все первые части Toaruos предоставляются в соответствии с условиями Лицензии Университета Иллинойса / NCSA, которая является разрешающей лицензией в стиле BSD. Если не указано иное, это исходная и единственная лицензия для всех файлов в этом репозитории - только потому, что файл не имеет заголовка авторских прав, не означает, что он не находится под этой лицензией. Toaruos предназначен для образовательной ссылки, и я призываю использование моего кода, но, пожалуйста, убедитесь, что вы следите за требованиями лицензии. Вы можете перераспределить код в соответствии с лицензией NCSA, а также внести изменения в код и сублицензируйте его в соответствии с другими условиями (например, GPL или лицензией на собственность), но вы всегда должны включать уведомление об авторском праве, указанное в лицензии, а также предоставить полный текст лицензии (это только пара абзацев) доступным для конечных пользователей.
В то время как большая часть Toaruos полностью написана мной, обязательно включите других авторов, таких как актуальные, например, с аудио -подсистемой Майка или струнными функциями Дейла.
Некоторые компоненты Toaruos, такие как Kuroko или BIM, имеют разные, но совместимые термины.
Toaruos регулярно отражается на нескольких сайтах хостинга GIT.
#toaruos на Libera ( irc.libera.chat )
Отдельные приложения и библиотеки могут быть построены путем установки build-essential MetaPackage из репозитория, который будет тянуть gcc и binutils . Источники доступны в каталоге /src на живом компакт-диске в аналогичном расположении этого репозитория, а также доступен утилита auto-dep.krk .
Для строительства рамдисов, окончательных ядер или изображений CD некоторые компоненты в настоящее время недоступны. В частности, сценарий сборки Ramdisks все еще записан на Python и зависит от его модуля tarfile и поддержки zlib . Ранее, с способным компилятором, Toaruos 1.x смог создать собственное ядро, пользовательские пространства, библиотеки и загрузчик, и превратить их в рабочее изображение ISO CD через сценарий Python, который выполнял аналогичную функцию с MakeFile.
Toaruos в настоящее время не способен создавать большую часть своих портов, из -за отсутствия надлежащей оболочки Posix и внедрения. Это возможные цели проекта.
Нет, совсем нет. В Linux нет кода из Linux в туарусе, и не использовались источники Linux в качестве эталонного материала.
Toaruos является совершенно независимым проектом, и весь код в этом репозитории, который является всей кодовой базой операционной системы, включая ее ядро, загрузчики, библиотеки и приложения, является оригинальной, написанной мной и несколькими участниками в течение десяти лет. Полная история источника, возвращаясь к тому, когда Toaruos была не чем иным, как «Hello World», можно отслеживать через этот репозиторий GIT.
Toaruos завершается в том смысле, что он охватывает весь спектр функциональности для ОС: это не «просто ядро» или «просто пользовательское пространство».
Toaruos не завершен в том смысле, что «сделано».
Хотя я стремлюсь поддерживать интерфейсы POSIX достаточно хорошо, чтобы программное обеспечение было перенесено, строгая реализация стандарта не является основной целью ОС, и полное соответствие может быть даже нежелательным.
Toaruos - это личный проект, а не общественный проект. Взносы в форме кода должны обсуждаться заранее. Порты и другие работы за пределами репо, однако, являются отличным способом помочь.
Вы также можете помочь, участвуя в Куроко, что является частью того, почему он хранится как отдельный репозиторий.