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

Нещодавно була оприлюднена інформація про проект Kerla, який розробляється як ядро ​​операційної системи, написане мовою Rust. Код поширюється під ліцензіями Apache 2.0 і MIT. Проект розробляє японський розробник Seiya Nuta, відомий створенням мікроядра операційної системи Resea, написаної мовою C.

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

Про Керал

Kerla — це монолітне ядро ​​операційної системи створений з нуля в Rust. На сучасному етапі розвитку Керла можна запускати лише в системах з архітектурою x86_64 і реалізує основні системні виклики, такі як write, stat, mmap, pipe та poll, підтримує сигнали, безіменні канали та перемикачі контексту. Такі виклики, як fork, wait4 і execve, надають для керування процесами. Є підтримка tty і псевдотерміналів (pty). Серед файлових систем initramfs (що використовуються для монтування кореневої FS) все ще підтримуються tmpfs і devfs.

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

Наразі мало подробиць про його нове ядро, але найбільше уваги привертає той факт, що воно написано на Rust. Тож чи має його написання на Rust якісь переваги перед іншими мовами чи перед існуючим кодом? Багато хто відповів ствердно на це запитання, підкреслюючи переваги безпеки пам’яті, які дає мова.

Він також надається при оцінці точності звернення до пам'яті під час виконання. Що ще, Mozilla вважає, що Rust забезпечує захист від переповнення цілих чисел, вимагає обов’язкової ініціалізації значень змінних перед використанням, приймає концепцію посилань і незмінних змінних за замовчуванням, пропонує сильну статичну типізацію для мінімізації логічних помилок і спрощує обробку введення за допомогою зіставлення шаблонів.

Серед переваг виділяємо інтегровані інструменти для оцінки якості коду і створення модульних тестів, які можна запускати не тільки на реальному обладнанні, а й на QEMU. В основному, Mozilla вважає Rust легше налагоджувати, оскільки компілятор відхиляє помилки. Однак бухти вказали на деякі недоліки Rust.

«Як і у C++, майже неможливо написати ідіоматичний Rust без використання шаблонів, тому він має роздуті двійкові файли та повільний час компіляції. Усі ці перевірки під час компіляції також коштують. Крім того, якщо ви щось перепишете, ви втратите стару зрілу кодову базу, і ви не зможете створити кодову базу подібної якості за розумний проміжок часу; набагато краще розширити, а не переписувати програму на Rust. Краще розширити програму, а не переписати її на Rust», – каже інженер-програміст.

За словами його творця, саме з цієї причини розробники Linux, зокрема сам Лінус Торвальдс, вони відкинули ідею переписування всього ядра на Rust.

«Попрацюйте, щоб створити безпечні посилання, а потім напишіть додатковий код на Rust, і ви все ще зможете насолоджуватися цим зрілим кодом. (Це робить Linux, є спроби додати можливість написання модуля ядра в Rust) », – додав він. Розробники Linux вивчають можливості написання деяких нових модулів ядра на мові Rust близько трьох років. Це дало початок проекту «Rust for Linux».

Нарешті, якщо вам цікаво дізнатись більше про це, ви можете проконсультуватися з деталями У наступному посиланні.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.