Випуск операційної системи Redox OS 0.6, написаній на мові Rust

Випуск операційної системи Redox OS 0.6, написаній на мові Rust

Після півтора роки розробки опублікований випуск операційної системи Redox 0.6, розробленій з використанням мови Rust та концепції мікроядра. Напрацювання проекту поширюються під вільною ліцензією MIT. Для тестування Redox OS запропоновані готові образи завантаження (61 МБ). На відміну від минулих випусків, гілка 0.6 розглядається як придатна для експериментів на реальному обладнанні, а не тільки в QEMU чи VirtualBox.

З нововведень, доданих у випуску Redox 0.6, можна відзначити:

  • Повністю переписана система управління пам'яттю ядра (rmm, kernel memory manager). У новій реалізації вдалося позбутися від витоків пам'яті, які створювали проблеми при використанні старого менеджера пам'яті. Крім того, підвищена стабільність підтримки багатоядерних систем.
  • До складу включені багато проектів, розроблених студентами в рамках ініціативи RSoC (Redox OS Summer of Code), включаючи розробки, пов'язані з підтримкою io_uring, ptrace, strace, gdb, дисковими розділами і веденням логів.
  • Значно дороблена розвивається проектом стандартна Сі-бібліотека Relibc, здатна працювати не тільки в Redox, але і в дистрибутивах на базі ядра Linux.
  • Доданий власний пакетний менеджер pkgar і пов'язаний з ним формат пакетів, що розвивається з урахуванням специфіки Redox OS. Пакетним менеджером надається верифікація джерела за цифровим підписом, контроль цілісності, можливість повторюваної збірки, автоматичні оновлення, передача тільки змінених даних, незалежність від каталогу установки. На відміну від інших форматів, pkgar включає тільки метадані, необхідні для отримання пакету.
  • Скрипти cookbook, що включають інструкції по збірці різних компонентів Redox OS, переведені на нову систему збирання, написану на мові Rust. У новій системі збирання замість Shell-сценаріїв для опису логіки збірки запропоновані файли в форматі Toml.
  • Багато часу при підготовці нової версії було витрачено на боротьбу зі змінами в нічних збірках Rust, пов'язаними з переробкою макросу Asm, що порушують сумісність.

Нагадаємо, що операційна система розвивається відповідно до філософії Unix і запозичує деякі ідеї з SeL4, Minix і Plan 9. Redox використовує концепцію мікроядра, при якому на рівні ядра забезпечується тільки взаємодія між процесами і управління ресурсами, а решта всієї функціональності винесена в бібліотеки, які можуть використовуватися як ядром, так і користувацькими додатками. Всі драйвери виконуються в просторі користувача в ізольованих sandbox-середовищах. Для сумісності з існуючими додатками надається спеціальний POSIX-прошарок, що дозволяє запускати багато програм без портування.

В системі застосовується принцип "все є URL". Наприклад, для запису в лог може використовуватися URL "log://", для взаємодії між процесами "bus://", для мережевої взаємодії "tcp://" і т.п. Модулі, які можуть бути реалізовані у формі драйверів, розширень ядра та користувацьких додатків, можуть реєструвати свої обробники URL, наприклад, можна написати модуль звернення до портів введення/виводу і прив'язати його до URL "port_io://", після чого можна використовувати його для доступу до 60 порту через відкриття URL "port_io://60". Напрацювання проекту поширюються під вільною ліцензією MIT.

Користувацьке оточення в Redox побудоване на базі власної графічної оболонки Orbital (не плутати з іншою оболонкою Orbital, що використовує Qt і Wayland) та тулкіта OrbTk, що надає API, схожий на Flutter, React і Redux. Як web-браузера застосовується Netsurf. Проектом також розвивається власний пакетний менеджер, набір стандартних утиліт (binutils, coreutils, netutils, extrautils), командна оболонка ion, стандартна Сі-бібліотека relibc, vim-подібний текстовий редактор sodium, мережевий стек і файлова система TFS, що розвивається на основі ідей ZFS (модульний варіант ZFS мовою Rust). Конфігурація задається мовою Toml.