Munal OS — операционная система, которая нарушает все правила

21 Jun, 2025

Репозиторий давно не обновлялся

Последнее обновление было 1 год назад.

810
🔱 22
👥 1

Что если собрать ОС, сознательно отказавшись от классических концепций вроде виртуальной памяти, прерываний и даже загрузчика? Именно такую задачу поставил перед собой разработчик Askannz, создавая Munal OS — экспериментальную систему на Rust с неожиданными архитектурными решениями.

Зачем нужна ещё одна ОС?

Munal OS — это не конкурент Linux или Windows, а скорее исследовательский проект. Его цель — проверить, какие компоненты ОС действительно необходимы в современных условиях, а от каких можно отказаться благодаря новым технологиям вроде WebAssembly.

Интересно, что система начиналась как учебный проект по системному программированию, но постепенно превратилась в полноценную ОС с графическим интерфейсом, сетевым стеком и набором приложений.

Скриншот Munal OS

Ключевые особенности

  1. Графический интерфейс в HD — система поддерживает мышь, клавиатуру и разрешение до 1080p
  2. WASM-песочница — все приложения выполняются в изолированных WebAssembly-контейнерах
  3. Сетевой стек — есть поддержка TCP/IP и даже простой веб-браузер
  4. Кастомизируемый UI — собственная библиотека виджетов с гибкой системой стилей
  5. Встроенные приложения — текстовый редактор, терминал Python и другие

Архитектурные решения, которые вас удивят

Munal OS сознательно отказывается от многих традиционных компонентов ОС:

Реклама
  • Нет загрузчика — система компилируется в единый EFI-файл
  • Нет виртуальной памяти — используется физическое адресное пространство
  • Нет прерываний — всё работает на основе опроса устройств (polling)
  • Нет многозадачности — один глобальный цикл событий

Безопасность обеспечивается за счёт WebAssembly — приложения выполняются в песочнице и не имеют прямого доступа к системным ресурсам.

Демонстрация интерфейса

Технические детали

Драйверы

Вместо работы с реальным железом Munal OS использует VirtIO — стандарт виртуальных устройств для QEMU. Реализованы драйверы для:

  • Клавиатуры
  • Мыши
  • Сети
  • Графики

Цикл событий

Вся система работает в одном глобальном цикле, который последовательно:

  1. Опрашивает устройства ввода
  2. Отрисовывает интерфейс
  3. Выполняет шаг каждого приложения
  4. Обновляет экран

Такой подход упрощает отладку, но требует от приложений явного возврата управления.

Приложения

Все программы компилируются в WASM и выполняются через движок wasmi. Система предоставляет API для:

  • Работы с вводом
  • Сетевых операций
  • Вывода графики

Есть частичная поддержка WASI для совместимости с существующими инструментами.

Пример приложений

Практическое применение

Хотя Munal OS пока не готова для повседневного использования, она представляет интерес для:

  • Исследователей ОС — как пример альтернативного дизайна
  • Разработчиков на Rust — для изучения системного программирования
  • Энтузиастов WebAssembly — демонстрирует необычное применение технологии

Как попробовать

Для запуска потребуется:

  1. Установить Rust Nightly
  2. Добавить целевые платформы:
rustup target add --toolchain nightly-2025-06-01-x86_64-unknown-linux-gnu wasm32-wasip1
rustup component add rust-src --toolchain nightly-2025-06-01-x86_64-unknown-linux-gnu
  1. Запустить скрипт:
./run.sh

Система работает в QEMU и пока не поддерживает реальное железо.

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

Особенно интересно будет:

  • Разработчикам ОС — для вдохновения
  • Rust-программистам — как пример сложного проекта
  • Всем, кто интересуется нетривиальными архитектурными решениями

Проект активно развивается и открыт для контрибьюторов. Если вы давно хотели попробовать силы в системном программировании — возможно, это ваш шанс!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.