Kerla: новое ядро, написанное на Rust и совместимое с Linux ABI

Недавно была опубликована информация о проекте Kerla. Kerla разрабатывается как ядро ​​операционной системы, написанное на Rust. Код распространяется под лицензиями Apache 2.0 и MIT. Проект разрабатывает японский разработчик Сейя Нута, известный созданием микроядерной операционной системы Resea, написанной на C.

Новая версия ядра изначально призвана обеспечить совместимость с ядром Linux на уровне ABI, позволяя запускать неизмененные бинарные файлы, созданные для Linux, в среде на основе Kerla.

О Керале

Kerla — это монолитное ядро ​​операционной системы, разработанное с нуля на Rust. На текущем этапе разработки Kerla может работать только на системах x86_64 и реализует базовые системные вызовы, такие как write, stat, mmap, pipe и poll. Она поддерживает сигналы, безымянные каналы и переключение контекста. Для управления процессами используются вызовы fork, wait4 и execve. Поддерживаются tty и псевдотерминалы (pty). Файловые системы initramfs (используемая для монтирования корневой файловой системы), tmpfs и devfs по-прежнему поддерживаются.

Также предоставляется сетевой стек с поддержкой TCP и UDP сокетов, основанный на библиотеке smoltcp. Разработчик подготовил среду загрузки, работающую в виртуальных машинах QEMU или Firecracker с использованием драйвера virtio-net, к которому уже можно подключиться через SSH . В качестве системной библиотеки используется Musl, а в качестве пользовательской утилиты — BusyBox . Подготовлена ​​система сборки на основе Docker, позволяющая создавать собственные загрузочные initramfs с использованием ядра Kerla.

Пока что было предоставлено мало подробностей о его новом ядре, но больше всего внимания к функциям Kerla привлекает тот факт, что оно написано на Rust. Так есть ли преимущества у написания его на Rust перед другими языками или существующим кодом? Многие ответили утвердительно на этот вопрос, подчеркнув преимущества языка, обеспечивающие безопасность памяти.

Это также учитывается при оценке точности доступа к памяти во время выполнения. Кроме того , Mozilla считает, что Rust обеспечивает защиту от переполнения целых чисел , требует обязательной инициализации значений переменных перед использованием, по умолчанию использует концепцию ссылок и неизменяемых переменных, предлагает строгую статическую типизацию для минимизации логических ошибок и упрощает обработку входных данных с помощью сопоставления с образцом.

Среди преимуществ следует отметить встроенные инструменты для оценки качества кода и создания модульных тестов, которые можно запускать не только на реальном оборудовании, но и в QEMU. По сути, Mozilla считает Rust более простым в отладке, поскольку компилятор будет отклонять ошибки. Однако тесты выявили и некоторые недостатки Rust.

«Как и в случае с C ++, почти невозможно написать идиоматический Rust без использования шаблонов, поэтому он имеет раздутые двоичные файлы и медленное время компиляции. Все эти проверки во время компиляции также имеют свою цену. Кроме того, если вы что-то переписываете, вы теряете старую зрелую кодовую базу, и вы не можете создать кодовую базу аналогичного качества за разумный промежуток времени; гораздо лучше расширить, чем переписать программу на Rust. Лучше расширить программу, чем переписывать ее на Rust », - говорит инженер-программист.

По словам создателя, именно поэтому разработчики Linux, в частности сам Линус Торвальдс, отвергли идею переписывания всего ядра на Rust.

«Поработайте над созданием безопасных ссылок, затем напишите дополнительный код на Rust, и вы все равно сможете наслаждаться этим зрелым кодом. (Это то, что делает Linux, есть попытки добавить возможность писать модуль ядра на Rust) », - добавил он. Разработчики Linux изучали возможности написания определенных новых модулей ядра с использованием языка Rust около трех лет. Это привело к созданию проекта «Rust для Linux».

Наконец, если вас интересует более подробная информация, вы можете найти ее по следующей ссылке.


Добавить в качестве предпочтительного источника в Google