Мы в Selectel любим изучать разные операционные системы. Сейчас в наше поле зрения попала Redox OS, которая считается альтернативой Linux/BSD системам. Она написана на языке Rust. По словам разработчиков, теперь ОС более безопасная и производительная, чем раньше. Надавно они представили новый релиз. Подробности под катом!
Что это за ОС?
Впервые о ней мы писали еще в 2020 году, тогда вышла версия 0.6. Недавно был релиз релиз 0.9.0. Операционная система многозадачна, она обеспечивает частичную совместимость с POSIX-стандартом.
Источник.
Особенность ОС в том, что она развивается полностью в соответствии с философией Unix. Ряд идей авторы позаимствовали из SeL4, Minix и Plan 9. Одна из основных «фишек» — использование концепции микроядра, при которой обеспечивается только взаимодействие между процессами и управлением ресурсами. Остальная функциональность вынесена в библиотеки, которые могут использоваться как ядром, так и пользовательскими приложениями. Все драйверы выполняются в пространстве пользователя в изолированных sandbox-окружениях. Для совместимости с существующими приложениями предусмотрена POSIX-прослойка, которая дает возможность запускать многие программы без портирования.
Кроме того, разработчики использовали для своей ОС принцип «все есть URL». Так, для записи в лог может использоваться URL
log://
, для взаимодействия между процессами — bus://
, для сетевого взаимодействия — tcp://
и т. п. А модули, которые могут быть реализованы в форме драйверов, расширений ядра и пользовательских приложений, могут регистрировать свои обработчики URL. Пример: написание модуля обращения к портам ввода/вывода и привязать его к URL port_io://
, после чего можно использовать его для доступа к 60 порту через открытие URL port_io://60
. Благодаря тому, что микроядро и все компоненты написаны на ассемблере и Rust, разработчикам удалось снизить вероятность возникновения багов и уязвимостей. Подавляющее большинство системных компонентов в Redox OS изолировали от ядра. Те же драйверы функционируют в пространстве пользователя. А это позволяет снизить общее количество возможных уязвимых мест системы.
Ну хорошо, а что изменилось?
Разработчики утверждают, что сейчас значительно улучшены производительность и стабильность таких компонентов системы, как вызовы и переключение контекста. А еще оптимизированы механизмы управления виртуальной и физической памятью, повышена скорость работы файловой системы и загрузчика UEFI.
Кроме того, удалось упростить процесс портирования софта с Linux/BSD систем. Например, разработчики решили перейти на обычный для Unix формат файловых путей вместо URI, который применялся ранее. Также расширены возможности инструментария для сборки софта. А еще авторы проекта продолжают улучшать реализацию стандартной библиотеки C Redox, почти на 100% написанной на Rust.
Кроме того, удалось улучшить поддержку архитектуру ARM64, что крайне важно для практически любой операционной системой. Сейчас Redox OS частично совместима с одноплатником Raspberry Pi 3B+. Также разработчики приняли решение добавить драйверы VirtIO. Они улучшают производительность ОС в виртуальных машинах.
Если говорить о софте, то уже давно удалось портировать такие модули, как Apache HTTP Server (веб-сервер), RustPython (интерпретатор Python, написанный на Rust), Lua (интерпретатор языка Lua), Perl 5 (интерпретатор языка Perl), текстовые редакторы GNU Nano и Helix, инструменты из графического Linux-окружения COSMIC: файловый менеджер, эмулятор терминала и текстовый редактор.
Сейчас готовы образы с демонстрационной сборкой операционной системы. Образ «весит» полтора гигайбайта, в него входит окружение Orbital, DOSBox (эмулятор DOS), несколько вариантов культовой игры Doom (оригинальная условно-бесплатная версия и FreeDOM), OpenGL-игры Neverball и Neverputt, Sodium — vi-подобный текстовый редактор, rodioplay — аудиоплеер с поддержкой форматов WAV/FLAC и другое ПО.
Операционная система работает на базе 64-битных процессоров Intel, AMD (x86_64, AMD64), с ограничениями — на 32-битных процессорах (i686), начиная с Pentium II, и 64-разрядных CPU ARM (Aarch64). Если есть желание ознакомиться с QEMU и VirtualBox — добро пожаловать, они совместимы с Redox.
К сожалению, не все так и хорошо, есть проблемы. Например, в этой операционной системе проблемы с работой беспроводных модулей связи от Atheros. Этот недостаток компенсируется тем, что тот же Ethernet от Intel рабочий. Плюс без проблем работают графические чипы как от Intel, так и от AMD.
В том, что ОС не так быстро меняется, как хотелось бы, вины команды нет. Она состоит из более чем 40 человек. Во главе с момента запуска проекта стоит Джереми Соллер (Jeremy Soller). Первый релиз Redox OS состоялся в апреле 2015 г. Сейчас руководство проекта ускоренными темпами пытается решить существующие проблемы с добавлением нужных этой ОС функций и возможностей.
Если вам удалось поработать с этой операционной системой, расскажите в комментариях, как она вам. Способна заменить ОС, к которой вы привыкли?
Комментарии (23)
40kTons
14.09.2024 11:30+1Кроме того, разработчики использовали для своей ОС принцип «все есть URL».
Кроме того, удалось упростить процесс портирования софта с Linux/BSD систем. Например, разработчики решили перейти на обычный для Unix формат файловых путей вместо URI, который применялся ранее.
Не понял. Так они перешли на "всё есть URL" или нет?
middleence
14.09.2024 11:30+1во всё есть url походу потом даст немало неожиданостей и port_io:// создаёт свои приколы
bogolt
14.09.2024 11:30+7Благодаря тому, что микроядро и все компоненты написаны на ассемблере и Rust, разработчикам удалось снизить вероятность возникновения багов и уязвимостей.
Ну про раст понятно, но ассемблер то каким боком к защите от уязвимостей ?
NeoCode
14.09.2024 11:30+1Достойный проект. На таких проектах кстати отлично проверяется и пригодность самого языка (Rust), и возможно за счет обратной связи вносить какие-то улучшения в язык.
Только вот непонятно как прикручивать образ для виртуальной машины к virtualbox'у. Нагуглил что можно сконвертировать в vdi командой
VBoxManage convertfromraw --format VDI [filename].img [filename].vdi
но в результате все равно получается что-то не то. Лучше бы сделали стандартный формат ova.
beduin01
14.09.2024 11:30+2Я удивлен что из сотен полекта ОСдева 99% пытались сделать десктопную ОС. И никто не попытался сделать серверный ОС.
Казалось бы это проще в десятки раз и рынок для этого огромный, но до того что людям сервер нужен додумались только единицы. Как понимаю создатели Редокс как раз серверный вариант еще подготовили.
yokotoka
14.09.2024 11:30+2Вот тоже об этом подумал
Десктоп со слабой совместимостью даже с линуксовым софтом нафиг не нужен, как и в целом десктопный Линукс, судя по статистике. А тут речь идёт о проценте от этого маленького процента
Я у них сегодня в чате спросил что там с докером, ответили что зачем-то есть несовместимый ограниченный аналог, а о портировании докера пока что только ресерчат. Хотя, по идее, первым делом надо бы вместо всякой GUIни... А с другой стороны с GUIнёй легче наглядно показывать массам...
Похоже что NIH-синдром и плохое понимание потребностей потенциального конечного пользователя не обошли и их стороной и это уменьшает шансы на успех. Но, надеюсь, всё же получится дотянуть до вменяемого состояния. Это интересный проект
arteast
14.09.2024 11:30Почему-то?! Docker - это сугубо линуксовое решение. На платформах, отличающихся от Linux, оно не портируется, а костылится через запуск виртуалки с линуксом. "Несовместимый ограниченный аналог" contain - это скорее аналог jail в bsd или неймспейсов в линуксе. Это один из компонентов, на которых можно, по идее, построить что-то типа докера.
crackcraft
14.09.2024 11:30+3Ни разу не проще. На десктопе можно написать драйвера какого-нибудь встроенного интел видео и звука, которые есть в каждой второй машине. И уже заработает.
Для серверной версии надо сходу поддерживать зоопарк железячных рейдов, экзотических сетевух и прочего непотребства. Без доступа к железу при разработке особо не разгуляешься.
emusic
14.09.2024 11:30+1На мой взгляд, ядро ОС было бы правильнее писать на разумном подмножестве C++. К сожалению, в понимании большинства современных программистов, C++ уже не мыслится, как минимум, без исключений и STL, а с ними эффективность ядра недалеко уйдет от Rust, если вообще уйдет.
seyko2
14.09.2024 11:30+1Почему то специалисты по разным ОС при обзоре Redox (отслеживаем,, изучаем прогресс) предпочитают не упоминать про OS Genode. То ли дело Redox, Rust. А OS Genode? Какая такая OS Genode? Тоже микроядерная? Куча взаимозаменяемых микроядер? Идеи L4, Plan9 тоже? Прослойка стандартного API? Давно уже развивается? Впервые слышим.
AndreyDmitriev
14.09.2024 11:30Cosmic Desktop, что на Расте написан также используется в Pop_OS. В релиз он пока не вышел, но попробовать альфу уже можно - https://system76.com/cosmic. Для меня Pop_OS! - основной домашний Линукс, и на ней вполне можно работать (мне комфортно). Cosmic десктоп, я ,правда пока не пробовал.
arteast
14.09.2024 11:30Более того, у них один и тот же основной разработчик, так что такое переиспользование неудивительно. Удивительно, что system76 решило платить деньги за написание с нуля yet another DE, но факт остается фактом.
AndreyDmitriev
14.09.2024 11:30Вероятно у них есть свой интерес поднять продажи своих ноутов, куда они это хозяйство устанавливают. Я, кстати, почему пользуюсь Pop_OS - в основном из-за беспроблемности. И я так понимаю, что определённая дисциплина разработки таки оказывает положительное влияние. В каждом Линуксе, что я пробовал что-то да не работало - либо WiFi, либо траблы с док станцией, либо NVidia, либо что.то ещё. Это решаемо всё, но вы знаете как это с линуксом. У меня старенький Dell с NVidia, а у system76 есть дистр с вшитым драйвером, и там всё заработало сразу и из коробки, да и система приятная. Кстати, ноуты по слухам тоже неплохие - мой знакомый купил, был доволен как слон.
arteast
До замены "настоящих" ОС Redox пока очень далеко. Она делается с прицелом на "полноценность", т.е. это не игрушечная поделка, но пока о какой-либо продуктовости говорить смешно. Это не MVP, а PoC.
На текущий момент она даже не поддерживает selfhosting, т.е. собрать Redox из-под Redox нельзя (и даже просто бинарь, запускаемый на Redox, емнип нельзя из-под Redox собрать, а надо из-под линукса). Поддержка железа в довольно плачевном состоянии (usb хабы не поддерживаются, точпады не поддерживаются, видео через svga/uefi на старте настраивается и в процессе работы разрешение экрана не сменить, аудио - ac97 или intel hda, несколько моделей сетевых карт и все, bluetooth нет, wifi нет). Нет поддержки динамической линковки...
40 человек в команде - это звучит гордо, но как и в любом OpenSource проекте это число ничего не значит. Фактически есть 2-3 человека, которые весьма активно работают над проектом и кучка интересующихся, которые иногда что-то поделывают (справедливости ради, это что-то может быть и непростым - прямо сейчас один такой интересующийся взялся пилить поддержку usb хабов и вроде как это довольно шустро продвигается). Проект получает донаты, поэтому часть более сложных вещей делаются на платной основе (RSoc, типа GSoC но только R - так, например, была сделана упомянутая в статье поддержка virtio).
Хочется надеяться, что проект станет популярнее и положительная обратная связь (популярность -> разработчики -> популярность) заставит его развиваться активнее.
powerman
"Настоящих" OS полно - начиная с кучки *BSD и заканчивая чуть менее "настоящим" но тоже вполне себе Plan9. Без какой-то критичной фишки шансы новой ОС попасть в "прод" (на реальные сервера или десктопы юзеров) находятся очень близко к нулю. Причём это должна быть не внутренняя фишка (микроядро/rust/etc. - таких фишек выше крыши в Plan9 и это явно не сработало), а что-то реально полезное юзерам (полезного в теории тоже хватало в Plan9, но практика важность этих фич для юзеров не подтвердила). Есть ли такие фишки в Redox? Если нет, то единственный реальный шанс для новой ОС - целиться на конкретный рынок встраиваемых устройств/одноплатников/роутеров/etc. (туда, где решение о её использовании будет принимать довольно узкий круг лиц).
yokotoka
По идее, этими фишками могут стать "неубиваемость" (за счёт микроядра и крайне малой вероятности крешей, как в условном qnx) и "невзламываемость" (за счёт модели работы rust с памятью и почти полного отсутствия связанного с этим проблем с переполнениями и всем подобным), но вряд ли одних этих фишек достаточно
Возможно им имело бы смысл запускать ядро линукса в дочернем процессе и обеспечить совместимость со всем софтом и потихоньку переписывать и пересаживать народ на свои безопасные версии api, но не уверен что такой интероп достижим и ядру линукса понравится быть под надзором строгого "взрослого" без спецэффектов )
powerman
Неубиваемость "продать" будет сложно - линух вполне стабилен. Может не по критериям софта для космоса и атомных станций, но для всего остального его качества достаточно и никто не пойдёт на неудобства связанные с новой ОС чтобы это качество ещё дополнительно повысить если разницу всё-равно заметить проблематично.
Невзламываемость - это уже интересно. Но для этого мало самой ОС, тут нужно весь софт на расте переписать - и в это уже мне не верится от слова совсем. И даже надежды на то, что невзламываемость защитит от уязвимостей относящихся именно к ядру ОС (вроде получения рута) на 100% - нет. Потому что ещё бывают логические ошибки (от которых раст не спасает) и хардварные уязвимости (которые и без рута дадут украсть секреты из соседнего процесса).
MinimumLaw
В пору писать статю о том, что переполнение буфера - далеко не единственная причина взломов. Да, она на сегодняшний день самая популярная (и популярна она, безусловно, далеко не просто так). Но это отнюдь не говорит о том, что она единственная, устранив которую мы закроем все вопросы со взломом.
Плюс пока очень мало статей, который реально смотрят что там на выходе Rust получается в ассемблерном коде. Но те, которые есть, тонко намекаю что и с переполнениями там не все хорошо и даже эта киллер-фича не спасет от человека с дебаггером или умеющего написать лоадер.
По сути - я рад за сообщество Rust и желаю проекту развития и процветания. Идеи заложены очень красивые. Потенциал огромный.
intellito
>"невзламываемость"
не будет никакой невзламываемости. дыры и дырищи ПОСТОЯННО вылязат в ПО на высокоуровневых языках. всякие руби, java (с log4j просто эпично было) и всё такое.
а вот то что редокс ужасно тормозной уже видно и это show stopper