A Kerla projekt egy Linux-kompatibilis rendszermagot fejleszt Rustban

A Kerla projekt egy Rust nyelven írt operációs rendszer kernelt fejleszt. Az új kernel kezdetben a Linux kernellel való ABI szintű kompatibilitásra irányul, ami lehetővé teszi, hogy a Linuxra épített módosítatlan binárisok Kerla-alapú környezetben futhassanak. A kódot Apache 2.0 és MIT licencek alatt terjesztik. A projektet a japán Seiya Nuta fejlesztő fejleszti, aki a C nyelven írt Resea mikrokernel operációs rendszer létrehozásáról ismert.

A fejlesztés jelenlegi szakaszában a Kerla csak x86_64 rendszereken tud futni, és olyan alapvető rendszerhívásokat valósít meg, mint az írás, stat, mmap, pipe és poll, támogatja a jeleket, a névtelen csöveket és a kontextuskapcsolókat. A folyamatkezeléshez olyan hívások állnak rendelkezésre, mint a fork, a wait4 és az execve. Támogatja a tty-t és a pszeudo-terminálokat (pty). A fájlrendszerek közül az initramfs (a gyökér FS csatlakoztatására használt), a tmpfs és a devfs továbbra is támogatott. A smoltcp könyvtár alapján megvalósított TCP és UDP socketeket támogató hálózati verem biztosított.

A fejlesztő elkészített egy QEMU-ban vagy a Firecracker virtuális gépen futó rendszerindító környezetet a virtio-net driverrel, amelyhez már SSH-n keresztül lehet csatlakozni. A Musl rendszerkönyvtárként, a BusyBox pedig felhasználói segédprogramként használatos.

A Kerla projekt egy Linux-kompatibilis rendszermagot fejleszt Rustban

A Docker alapján elkészítettek egy olyan összeállítási rendszert, amely lehetővé teszi saját indító initramfs létrehozását a Kerla maggal. A fish-szerű nsh shell és a Wayland protokollon alapuló Kazari GUI verem külön fejlesztés alatt áll.

A Kerla projekt egy Linux-kompatibilis rendszermagot fejleszt Rustban

A Rust nyelv használata egy projektben csökkenti a kódban előforduló hibák számát azáltal, hogy biztonságos kódolási technikákat alkalmaz, és javítja a problémák azonosításának hatékonyságát a memóriával való munka során. A memóriabiztos kezelés a Rustban a fordítási időben elérhető a referenciaellenőrzés, az objektum tulajdonjogának és az objektum élettartamának (hatókörének) nyomon követésével, valamint a kódvégrehajtás során a memória-hozzáférés helyességének értékelésével. Ezenkívül a Rust védelmet nyújt az egész számok túlcsordulása ellen, megköveteli a változó értékek kötelező inicializálását használat előtt, alapértelmezés szerint alkalmazza a megváltoztathatatlan (változhatatlan) hivatkozások és változók koncepcióját, erős statikus gépelést kínál a logikai hibák minimalizálása érdekében, egyszerűsíti a bemeneti értékek feldolgozását minta illesztési lehetőség.

Alacsony szintű összetevők, például az operációs rendszer kernelének fejlesztéséhez a Rust támogatja a nyers mutatókat, a struktúracsomagolást, az assembler soron belüli beillesztéseket és az assembler fájl beillesztését. A szabványos könyvtárhoz való kötődés nélkül való működéshez külön ládacsomagok állnak rendelkezésre a karakterláncokon, vektorokon és bitjelzőkön végzett műveletek végrehajtásához. Az előnyök között megtalálhatók a kódminőség felmérésére szolgáló beépített eszközök (linter, rozsda-analizátor) és olyan egységtesztek is, amelyek nem csak valódi hardveren, hanem QEMU-ban is futtathatók.

Forrás: opennet.ru

Hozzászólás