Чуть меньше года назад мы опубликовали статью об операционной системе 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 с наработками команды.

Комментарии (11)


  1. gnomeby
    29.10.2022 05:21
    +34

    Итоги:

    • Персональный проект, а не комьюнити проект, т.е. взрослеть ОС может бесконечно.

    • Не видно киллер фич. Ну кроме компактности, но это естественная фича для любой молодой ОС.

    • Нет проблемы, которую решает ОС по сравнению с аналогами.

    • Не понятна причина переизобретения CPython.

    Короче такую бы мощь (время автора проекта) да в мирное русло (контрибьют в мейнстрим проекты), цены бы ему не было.

    Но если есть возможность так вот играться более 10 лет, могу только позавидовать, тоже так хочу.


    1. Drayden
      29.10.2022 10:49
      +22

      Контрибьют в мейнстрим проекты хорошо смотрится в резюме, и многих радует. Но кому-то хочется творить своё и выделяться. В Линуксе сколько контрибьюторов? А вся слава у Торвальдса. И весь "Just For Fun". И жесткая диктатура...

      Кому-то хочется изобретать свой велосипед в попытке самому совершить нечто прорывное. Почему бы и нет?

      Ведь иначе бы и Линукс не появился - Торвальдс же "просто перевелосипедил" Юникс (Миникс)


      1. speshuric
        31.10.2022 18:06

        В Линуксе сколько контрибьюторов? А вся слава у Торвальдса.

        С другой стороны, если искать программиста на C/C++/Rust, то строчка с хешами коммитов в ядро Linux скорее всего весьма прибавит очков кандидату.


        1. Drayden
          31.10.2022 18:30

          Да, я с этого комментарий начал, если что вдруг :)


    1. Fell-x27
      29.10.2022 11:22
      +7

      Короче такую бы мощь (время автора проекта) да в мирное русло (контрибьют в мейнстрим проекты), цены бы ему не было.

      Всему свое время. Такие петпроекты - это запредельно крутой и сложно добываемый опыт. А там захочет - будет контрибутить в менстримы. А, может, что-то запилит эдакое, что потом в менстримы привнесет от себя как что-то новое прям.

      Не всем по кайфу лишь пилить патчи к сторонним проектам.


  1. LevOrdabesov
    29.10.2022 11:33
    +5

    Этот интерпретатор представляет собой сборщик мусора

    Это ошибка, или я чего-то не знаю?..


    1. iCpu
      31.10.2022 09:56
      +1

      Это ошибка, или я чего-то не знаю?..

      Унижающий интерпретатор Куроко: "И программист ты посредственный, и язык используешь убогий, и код твой годится только на утилизацию".


  1. maeris
    29.10.2022 11:50
    +38

    Этот интерпретатор представляет собой сборщик мусора, он поддерживает многопоточность без применения глобальной блокировки.

    "Явление шизофазии заключается в том, что предложения построены правильно, но содержание их становится совершенно бессмысленным."


  1. yatanai
    31.10.2022 00:24

    Плохо понимаю смысл пилить ОС с типовыми решениями и архитектура и которые уже 100500раз все видели.

    Я всё жду пока кто-нибудь не захочет делать "приколы", типо - запилить ОС/приложения как суперклассы на С++ с виртуальными методами.

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

    И статью в стиле - какой же бред я делал но было интересно, под катом подводные


    1. AndreyHenneberg
      31.10.2022 17:07

      Я всё жду пока кто-нибудь не захочет делать "приколы", типо - запилить
      ОС/приложения как суперклассы на С++ с виртуальными методами.

      Кажется, Вы только что изобрели SmallTalk, которым на в ТГУ мучили в году так в 1995, а изобрели его чуть ли не 1970-х. Только там не было C++, потому что это была интегрированная среда -- сам сам язык и что-то вроде ОС в одном флаконе.


  1. potan
    31.10.2022 17:37

    А есть у нее какие-нибудь необычные фичи, отличающие ее от сдугих современных ОС?