В мире информационных технологий много всего интересного — как среди аппаратного обеспечения, то есть «железа», так и программного. Одна из таких интересных вещей — Unix-подобная операционная система ToaruOS 2.0. Она началась едва ли не со студенческой курсовой работы, но постепенно превратилась во вполне серьезный проект, коммьюнити которого быстро расширяется.
Ну а поскольку на днях появилась уже версия 2.0, то о ней стоит поговорить, поскольку проект явно не собирается затухать, а развивается. Краткая история ОС и список ее возможностей, включая новую версию — под катом.
Как все начиналось
Систему сложно назвать новой, ей уже больше десяти лет — проект стартовал в 2010 году в Иллинойском университете. Разработчик — К. Ланге, который в то время решил заняться изучением возможностей композитных интерфейсов. Для этого он не стал использовать сторонние разработки, а создал свой собственный «велосипед», то есть написал прототип операционной системы с внедренными идеями.
Работу оценили коллеги, стали интересоваться ей и коллеги разработчика. Постепенно из небольшого проекта операционная система превратилась во вполне серьезную разработку с комьюнити, которое объединяет сейчас специалистов из разных стран. Это уже далеко не только коллеги разработчика, но и другие независимые программисты. Поэтому Ланге принял решение преобразовать исследовательскую работу в полноценную ОС, с которой может работать обычный пользователь.
Конечно, операционной системой для домохозяек ToaruOS 2.0 вряд ли станет, но более-менее продвинутые пользователи в ней разберутся без проблем.
Структура системы
В 2020 году ОС состояла из таких компонентов, как:
- Ядра, которое получило название Toaru Kernel.
- Оконного композитора Yutani, который управляет оконными буферами, раскладкой и маршрутизацией ввода.
- Текстового редактора Bim, который представляет собой портированный Vim с ограниченным количеством возможностей, но подсветкой синтаксиса.
- Эмулятора терминала с простым и понятным названием Terminal.
- Компонента ld.so (dynamic linker/loader), который управляет динамически подключенными бинарниками ELF.
- Оболочки Esh, поддерживающей работу с конвейерами, переменными, направлениями и т.п.
- Менеджера пакета MSK.
Отдельно стоит поговорить о ядре, поскольку оно использует гибридную модульную архитектуру, сочетает монолитную основу и средства для использования загружаемых модулей. В виде таких модулей оформлено большинство драйверов устройств. Правда, их пока что немного — поддержка «железа» имеет базовый уровень. Разработаны драйверы диска (PATA и ATAPI), ФС EXT2 и ISO9660, framebuffer, клавиатуры, мыши, сетевых карт (AMD PCnet FAST, Realtek RTL8139 и Intel PRO/1000), звуковых чипов (Intel AC'97), а также дополнений VirtualBox для гостевых систем.
Ядро поддерживает также Unix-потоки, TTY, виртуальную ФС, псевдо-ФС /proc, многопоточность, IPC, ramdisk, ptrace, разделяемую память, многозадачность и т.п.
С самого начала своего существования система проектировалась как многозадачная. Она может выполнять Python 3 и GCC.
Код системы написан на языке программирования Си и распространяется под лицензией BSD. Оценить в работе систему можно при помощи live-образа, размер которого всего 14,4 МБ. Его можно тестировать в QEMU, VMware или VirtualBox. Вот ссылка на образ.
Что еще?
В качестве файловой системы разработчики используют ext2, здесь они не стали придумывать что-то свое. Загрузчик системы почти всеядный, он поддерживает BIOS и EFI.
Конечно, систему не могли оставить без сетевых функций. По словам разработчиков, новая операционная система предоставляет возможность использовать API сокеты в стиле BSD-систем и поддерживает сетевые интерфейсы, включая loopback.
Как команда разработчиков, так и представители комьюнити уже портировали Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, эмулятор Super Nintendo, Bochs и другое программное обеспечение, как распространенное, так и не очень.
О редакторе кода уже говорилось выше. Стоит добавить также то, что он используется для разработки нативных приложений операционной системы, включая файловый менеджер, эмулятор терминала, графическую панель с поддержкой виджетов, пакетный менеджер (о нем тоже говорилось выше) и разные библиотеки для поддержки как распространенных форматов изображений, так и TrueType-шрифтов.
Интересно, что для разработки программ создатели операционной системы предложили собственный язык программирования. Его можно назвать с определенными допущениями сокращенным вариантом Python. В нем явно определяются переменные, плюс сам язык отличается компактной реализацией. Язык может использоваться и вне операционной системы ToaruOS. Работать с ним можно в таких ОС, как Linux, macOS, Windows. В браузерах с поддержкой WebAssembly он тоже запускается.
Что там «выросло» в новой версии?
Поскольку версия уже 2.0, можно ожидать, что разработчики очень сильно обновили систему, добавив целый ряд новых функций. Так, собственно, и получилось — ОС вполне можно использовать для решения многих задач. Конечно, пока сам не попробуешь, сложно сказать, насколько система удобна, но команда говорит о глубокой проработке своей операционной системы.
Среди новых функций и возможностей стоит выделить:
- Доработку загрузчика BIOS, который теперь поддерживает больше аппаратных конфигураций. Кроме того, переработан и загрузчик EFI. Специалисты добавили возможность редактирования командной строки ядра.
- Довольно сильно расширены возможности графической библиотеки, включая добавление афинных преобразований.
- Оптимизирована работа оконного фреймворка.
- Доработано ядро, благодаря чему удалось добавить необходимые пользователю утилиты, включая top, strace, dbg, ping и cpuwidget.
- Добавлены виджеты, в которых теперь появилась поддержка загружаемых библиотек, динамической раскладки элементов и всплывающих окон.
С полным списком обновлений и оптимизаций можно ознакомиться по этой ссылке. А вот Github с наработками команды. Ну а в качестве задела на будущее, точнее выхода версии 2.1, разработчики анонсировали добавление устройств AHCI, xHCI, USB HID. Еще через время будет реализована поддержка архитектуры AArch64.
В целом, видно, что система развивается. Над ней активно работает все более активно расширяющееся комьюнити. Возможно, в ближайшем будущем операционка и займет какую-то свою нишу, хотя для этого должно пройти еще какое-то время, ведь и «взрослой» ОС ее еще сложно назвать. Ну а для любой ниши, хоть корпоративной, хоть чисто пользовательской, должна быть поддержка тысяч устройств, удобный установщик и стабильная работа. Получится ли у команды реализовать все это? Вероятно, об этом мы узнаем уже в следующем, 2022 году.