Проект Kerla развива Linux-съвместимо ядро на езика Rust

В рамките на проекта Kerla се разработва ядро на операционната система, написано на езика Rust. Новото ядро е изцяло насочено към осигуряване на съвместимост с ядрото на Linux на ниво ABI, което позволява стартиране в среда на базата на Kerla на немодифицирани изпълними файлове, събрани за Linux. Кодът се разпространява под лицензите Apache 2.0 и MIT. Проектът се развива от японския разработчик Сейя Нута (Seiya Nuta), известен със създаването на микроядерната операционна система Resea, написана на езика C.

На текущия етап на развитие 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.

Проект Kerla развива Linux-съвместимо ядро на езика Rust

На базата на Docker е подготвена система за компилация, която позволява формирането на собствени зареждащи initramfs с ядрото Kerla. Отделно се развива софтуерна среда, подобна на fish, наречена nsh, и GUI стек Kazari на базата на протокола Wayland.

Проект Kerla развива Linux-съвместимо ядро на езика Rust

Използването на езика Rust в проекта позволява да се намали броят на грешките в кода благодарение на прилагането на методи за безопасно програмиране и повишаване на ефективността при откриването на проблеми с паметта. Безопасната работа с паметта в Rust се осигурява по време на компилация чрез проверка на референциите, проследяване на притежанието на обекти и управление на времето на живот на обектите (областите на видимост), както и чрез оценка на правилността на достъпа до паметта по време на изпълнение на кода. Освен това Rust предлага средства за защита от препълвания на цели числа, изисква задължителна инициализация на стойности на променливи преди употреба, прилага концепцията за неизменяемост (immutable) на референциите и променливите по подразбиране, предлага силна статична типизация за минимизиране на логическите грешки и улеснява обработката на входни значения чрез средства за съпоставяне с образец.

За разработка на ниско ниво компоненти, като ядрото на ОС, Rust предоставя поддръжка за raw указатели, опаковане на структури, inline вставки на асемблер и вграждане на файлове с асемблер. За работа без зависимост от стандартната библиотека има отделни crate пакети за извършване на операции със строки, вектори и битови флагове. Сред предимствата се отбелязват вградените инструменти за оценка на качеството на кода (linter, rust-analyzer) и създаване на unit тестове, които могат да се изпълняват не само на реално оборудване, но и в QEMU.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster