Pull to refresh
Selectel
IT-инфраструктура для бизнеса

ОС ToaruOS, написанная с нуля, взрослеет: на что способна экспериментальная операционная система год спустя

Reading time3 min
Views22K

Чуть меньше года назад мы опубликовали статью об операционной системе ToaruOS, которая выросла из студенческого проекта. Несмотря на то, что команда этого проекта не очень большая, система продолжает развиваться, и сейчас ее действительно можно назвать «взрослой». Разработчики выпустили версию 2.1, добавив новые возможности.

Сама система уже далеко не студенческий проект, а полноценная ОС с гибридной модульной архитектурой, в которой сочетаются как средства для использования загружаемых модулей, так и монолитная основа. При этом разработчики обеспечили поддержку большинства популярных устройств. Ну а о подробностях поговорим под катом.

Что это за система такая?


В целом, как система уже не студенческая, так и ее разработчики не студенты (они ими были, но с момента выпуска первой версии прошло 11 лет). Сам проект стартовал в 2010 году в Иллинойском университете. Разработчик — К. Ланге, который в то время решил заняться изучением возможностей композитных интерфейсов. Для этого он не стал использовать сторонние разработки, а создал свой собственный «велосипед», то есть написал прототип операционной системы с внедренными идеями.

Работу оценили коллеги, стали интересоваться ей и коллеги разработчика. Постепенно из небольшого проекта операционная система превратилась во вполне серьезную разработку с комьюнити, которое объединяет сейчас специалистов из разных стран. Это уже далеко не только коллеги разработчика, но и другие независимые программисты. Поэтому Ланге принял решение преобразовать исследовательскую работу в полноценную ОС, с которой может работать обычный пользователь.

Как и говорилось выше, система поддерживает большое количество популярных драйверов устройств, включая драйверы диска (PATA и ATAPI), ФС EXT2 и ISO9660, framebuffer, клавиатуры, мыши, сетевых карт (AMD PCnet FAST, Realtek RTL8139 и Intel PRO/1000), звуковых чипов (Intel AC'97), а также дополнений VirtualBox для гостевых систем. При этом ядро способно на многое. Например, оно поддерживает Unix-потоки, TTY, виртуальную ФС, псевдо-ФС /proc, многопоточность, IPC, ramdisk, ptrace, разделяемую память, многозадачность и другие типовые возможности.

Кроме всего прочего, ОС может похвастаться композитным оконным менеджером. Она поддерживает динамически связываемые исполняемые файлы в формате ELF, многозадачность, графический стек, плюс поддерживает Python 3 и GCC. Файловая система здесь — ext2, а загрузчик поддерживает как BIOS, так и EFI.


Разработчики выпустили и несколько нативных приложений, включая редактор кода Bim (он похож на Vi), файловый менеджер, эмулятор терминала, графическая панель с поддержкой виджетов, пакетный менеджер. Кроме того, команда проекта выпустила и библиотеки для поддержки изображений (PNG, JPEG) и TrueType-шрифтов. Занимались создатели системы и портированием софта, включая Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, Super Nintendo emulator, Bochs и т.п.

Конечно, систему не могли оставить без сетевых функций. По словам разработчиков, новая операционная система предоставляет возможность использовать API сокеты в стиле BSD-систем и поддерживает сетевые интерфейсы, включая loopback.

Новое, старое, модифицированное



Речь идет о расширении возможностей ОС, а также о добавлении новых функций. Например, в версии ToaruOS 2.1 добавлено и модифицировано вот что:

• Появилась поддержка архитектуры AArch64 (ARMv8), в том числе с экспериментальной возможностью использования ToaruOS на плате Raspberry Pi 400 и в эмуляторе QEMU. К сожалению, пока что это лишь тестовая поддержка, так что возможны проблемы при работе.
• Оптимизирована обработка и передача сигналов процессам в пространстве юзера. Так, появились вызовы sigaction, sigprocmask, sigwait и sigsuspend.
• Кроме того, разработчики оптимизировали управление памятью в пространстве пользователя, включая добавление системного вызова munmap.
• Отрисовка терминала тоже улучшена, плюс команда проекта добавила кэш глифов для шрифтов True Type.
• Значительно улучшен сетевой стек. Так, например, в ifconfig появилась поддержка установки адресов IPv4 и настроек маршрутизации. Обеспечена работа сокетов ICMP. Добавлена поддержка функции recvfrom для сокетов UDP и ICMP.
• Загрузчик теперь поддерживает работу с USB-клавиатурами.
• Появилась утилита grep с поддержкой регулярных выражений.

Софт разрабатывается при помощи предложенного командой языка программирования, который, в целом, можно назвать сокращенным вариантом Python. Его особенность в том, что в нем явно определяются переменные, плюс сам язык отличается компактной реализацией. Язык может использоваться и вне операционной системы ToaruOS. Работать с ним можно в таких ОС, как Linux, macOS, Windows. В браузерах с поддержкой WebAssembly он тоже запускается.

Язык называется Kuroko, его синтаксис похож на синтаксис Python, он поддерживает компиляцию и интерпретацию байткода.

Код же самого проекта написан на языке C, он распространятся под лицензией BSD. Если есть желание протестировать ОС, то вот live-образ, он весит всего 14,4 МБ. Ну а тестировать можно в QEMU, VMware или VirtualBox. Ну и вот Github с наработками команды.
Tags:
Hubs:
Total votes 59: ↑55 and ↓4+51
Comments19

Articles

Information

Website
selectel.ru
Registered
Founded
Employees
501–1,000 employees
Location
Россия
Representative
Влад Ефименко