Операционная система Redox 0.6, написанная на Rust: что нового в выпуске?


    Спустя полтора года разработки авторы операционной системы Redox 0.6, написанной с использованием языка Rust, опубликовали новый выпуск. Новинку можно протестировать — для этого в сеть выложены загрузочные образы. Их объем составляет 61 МБ. Свежая версия может тестироваться уже на обычном «железе», а не в QEMU и VirtualBox.

    Операционная система распространяется под свободной лицензией MIT. Что нового в версии 0.6?

    • Практически с нуля переписана система управления памятью ядра. Речи идет об rmm, kernel memory manager. Разработчикам удалось избавиться от утечек памяти, создававших проблемы при использовании старого менеджера памяти. Также повышена стабильность поддержки многоядерных систем.
    • В состав операционной системы включено несколько проектов, которые разработали студенты в рамках инициативы RSoC (Redox OS Summer of Code), включая разработки, связанные с поддержкой io_uring, ptrace, strace, gdb, дисковыми разделами и ведением логов.
    • Авторам проекта удалось доработать стандартную Си-библиотеку Relibc, которая способна работать не только в Redox, но и в дистрибутивах на базе ядра Linux.
    • Сейчас добавлен и собственный пакетный менеджер pkgar со связанным с ним форматом пакетов. Пакетный менеджер предоставляет верификацию источника по цифровой подписи. Также есть контроль целостности, возможность повторяемой сборки, автоматические обновления, передача изменившихся данных и независимость от каталога установки. В отличие от других форматов pkgar включает лишь метаданные, которые необходимы для извлечения пакета.
    • Еще одно обновление заключается в переводе скриптов cookbook на новую сборочную систему, которая написана на языке Rust. В ней вместо Shell-сценариев для описания логики сборки предложены файлы в формате Tomt.
    • Большое количество времени ушло на борьбу с нарушениями совместимости, которые связаны с переработкой макроса Asm.

    Что касается особенностей этой операционной системы, то она развивается полностью в соответствии с философией Unix. Ряд идей авторы позаимствовали из SeL4, Minix и Plan 9. Одна из основных «фишек» — использование концепции микроядра, при которой обеспечивается только взаимодействие между процессами и управлением ресурсами. Остальная функциональность вынесена в библиотеки, которые могут использоваться как ядром, так и пользовательскими приложениями. Все драйверы выполняются в пространстве пользователя в изолированных sandbox-окружениях. Для совместимости с существующими приложениями предусмотрена POSIX-прослойка, которая дает возможность запускать многие программы без портирования.

    Кроме того, разработчики использовали для своей ОС принцип «все есть URL». Так, для записи в лог может использоваться URL «log://», для взаимодействия между процессами — «bus://», для сетевого взаимодействия — «tcp://» и т.п. Что касается модулей, которые могут быть реализованы в форме драйверов, расширений ядра и пользовательских приложений, могут регистрировать свои обработчики URL. Пример: написание модуля обращения к портам ввода/вывода и привязать его к URL «port_io://», после чего можно использовать его для доступа к 60 порту через открытие URL «port_io://60».

    Пользовательское окружение основывается на собственной графической оболочке OrbTk, предоставляющего API, похожий на Flutter, React и Redux. Браузер — Netsurf. В ходе развития проекта разработчики предусмотрели собственный пакетный менеджер, набор стандартных утилит (binutils, coreutils, netutils, extrautils), командная оболочка ion, стандартная Си-библиотека relibc, vim-подобный текстовый редактор sodium, сетевой стек и файловая система TFS, развиваемая на основе идей ZFS (модульный вариант ZFS на языке Rust). Конфигурация задаётся на языке Toml.

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

    Comments 30

      0

      Было бы очень интересно если бы ОС составила конкуренцию Google Fuchsia. Только как я понимаю Google от Posix решила отказаться тк новый идеи на старом фундаменте не построишь, а тут без Posix все придется писать с нуля, а на это ресурсов нет

        +2
        Google от Posix решила отказаться тк новый идеи на старом фундаменте не построишь

        И что за новые идеи, например?

        +1

        Уже было на опеннете

          +2

          И не первый раз такое.

          –39

          да пофиг какая операционка, она должна четко и качественно выполнять задачи для которых предназначена.
          С софтом тоже самое.
          Для кого/чего эта ОС?
          Для просто удовольствия "мы сделали еще одну оюОС"? Да, круто, серьезно. Ребята запилили свою ОС. Практическая польза? Около нуля.

            +41
            Для кого/чего этот комментарий?
            Для просто удовольствия «я написал ещё один комментарий»? Да, круто, серьезно. Парень запилил свой комментарий. Практическая польза? Около нуля.
              –17

              да потому, что ОС это не penis canina. И если создаеются, то с какой-то целью и направлением. Это языки программирования можно от нехрен делать клепать пачками. А тут ОС.

                +15

                Исследовать академический вопрос целесообразности существования borrowck и lifetimes при реализации абстракций ядра. Сойдёт?


                А минусуют вас за пренебрежительное обесценивание чужой работы.

                  –10

                  я чужую работу, оценил, и даже написал об этом. Я просто задал вопросы. У сообщества не нашлось полноценных ответов и меня слили.

                    +9

                    Вы оценили чужую работу. Но ваша оценка (а, точнее, форма, в которой эта оценка была выражена) окружающими воспринимается как обесценивание (и в целом, является примером токсичного комментария). Если вам кажется иначе — поздравляю, у вас самоиммунитет.

                      +4

                      https://doc.redox-os.org/book/ch01-03-our-goals.html
                      https://doc.redox-os.org/book/ch01-05-why-redox.html


                      У сообщества не нашлось ответов? Ответы есть у авторов. Их можно найти на их сайте пройдя по первым же ссылкам документации.

                      –1
                      Исследовать академический вопрос целесообразности существования borrowck и lifetimes при реализации абстракций ядра. Сойдёт?
                      И наверное, это исчерпывающее объяснение =)
                  +4

                  Линукс тоже начинался как хобби…
                  На самом деле у таких проектов действительно (по крайней мере) в начале нет конечной точки. Но то, что ты получаешь при работе над проектом — опыт, знания, коллег — это бесценно и может помочь в будущей карьере, даже если сам изначально проект не взлетит

                    +6
                    Как это нет пользы? Кто-то же должен знать, как пишутся ОС. Торвальдс умрет, кто его заменит?
                      –6

                      ну слили карму в ноль, после этого коммента в минус уйду похоже. А сарказма с моей стороны не было. Для чего ОС? Работа ради работы и саморазвития? Так бы и написали. Да и похоже комментить не смогу теперь. Кто минусил, напишите, почему обиделись.

                        +3
                        если вы не понимаете, то задавайте вопрос не в таком агрессивном стиле
                        читается так что вы думаете что очень даже понимаете и задаёте риторические вопросы, которыми распекают нелепых идиотов
                        но обратная связь показывает кто здесь кто
                        0

                        Для тех, кто не читает ветку, слово "круто" без сарказма написано. А минусаторы так и не написали причину, я бы адекватно принял, если бы было обоснование

                          0

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

                            0
                            Да, круто, серьезно. Ребята запилили свою ОС. Практическая польза? Около нуля.

                            Да вроде нет сарказма. "Работа серьезная, но бестолковая" — я такой смысл прочитал.

                        0
                        на малинке будет работать?
                          0
                          Есть несколько попыток портировать на aarch64, но, как я понимаю — они заброшены.
                          +10
                          Практически с нуля переписана система управления памятью ядра. Речи идет об rmm, kernel memory manager. Разработчикам удалось избавиться от утечек памяти, создававшие проблемы при использовании старого менеджера памяти. Также повышена и стабильность поддержки многоядерных систем.

                          Иронично)))

                            +4

                            Если все же попробовать отбросить иронию и прокомментировать серьезно, то утечки памяти не с точки зрения Rust не являются нарушением доступа к памяти. Доступ к неинициализированной памяти, use after free, double free, несинхронизированный доступ — да. Утечки и дедлоки — нет.

                              –2

                              Утечки как бы тоже являются… у каждого обьекта строго определен owner и когда он выходит из области видимости то обьект автоматически освобождает ресурсы. Соответственно при написании тривиального кода утечка не может возникнуть. Скорее всего утечки были связаны с какими нибудь механизмами использующими unsafe либо как вариант с отсутствием или неправильной реализацией трейта Drop

                                +3

                                Вообще-то, std::mem:forget — это safe функция


                                Но даже если забыть про неё, утечка без проблем делается в циклических структурах данных. Rc<Cell<Self>> и вот она.

                                  0

                                  Box::leak тоже сейф функция. Понятно что никто не мешает сделать утечку памяти если очень хочется… Но в таком случае это довольно явно происходит и такое сложно сделать непреднамеренно. Вот пример про циклические структуры согласен это больше похоже на случай где можно непреднамеренно допустить утечку памяти. Но вцелом должна быть очень веская причина использовать именно такие структуры и как правило это признак плохого проектирования (из моего опыта)

                              +2

                              Как я понял (исходя из https://gitlab.redox-os.org/redox-os/redox/-/issues/855), там не было "старого менеджера", память выделенная в прерывании просто не освобождалась. Т.к. ядро пилит (опять же, как я понял из репозитория) один человек, вполне нормально для хобби проекта.

                              +1
                              Очень круто! Надо будет стянуть исходники и покурить. Интересно им кодманки не нужны, а то в рабочее время пишу на .net, но Rust нравится, и в качестве подтягивания знания, что-нибудь с удовольствием поделал бы, но уровень конечно около джуниорский в языке
                                0
                                Очень интересно про «типа Flutter» на Rust, похоже там какой-то декларативный UI

                                Only users with full accounts can post comments. Log in, please.