Kerla projekat razvija Linux kompatibilan kernel u Rustu

Projekat Kerla razvija kernel operativnog sistema napisan u Rustu. Novo jezgro je dizajnirano od temelja da bude kompatibilno sa Linux kernelom na ABI nivou, što će omogućiti nemodifikovanim izvršnim fajlovima napravljenim za Linux da rade u okruženju baziranom na Kerla. Kod se distribuira pod licencama Apache 2.0 i MIT. Projekat razvija japanski programer Seiya Nuta, poznat po kreiranju Resea mikrokernel operativnog sistema napisanog na C.

U trenutnoj fazi razvoja, Kerla može raditi samo na x86_64 sistemima i implementira osnovne sistemske pozive kao što su write, stat, mmap, pipe i poll, podržava signale, neimenovane cijevi i prebacivanje konteksta. Za upravljanje procesima, omogućeni su pozivi kao što su fork, wait4 i execve. Postoji podrška za tty i pseudo-terminale (pty). Od sistema datoteka, initramfs (koji se koristi za montiranje korijenskog FS-a), tmpfs i devfs su još uvijek podržani. Mrežni stog je obezbeđen sa podrškom za TCP i UDP utičnice, implementirane na bazi smoltcp biblioteke.

Programer je pripremio okruženje za pokretanje koje radi u QEMU ili u virtuelnoj mašini Firecracker sa virtio-net drajverom, na koji se već možete povezati preko SSH-a. Musl se koristi kao sistemska biblioteka, a BusyBox se koristi kao korisnički uslužni programi.

Kerla projekat razvija Linux kompatibilan kernel u Rustu

Zasnovano na Dockeru, pripremljen je build sistem koji vam omogućava da kreirate sopstvene boot initramfs sa Kerla jezgrom. Nsh školjka nalik ribi i Kazari GUI stack baziran na Wayland protokolu se razvijaju odvojeno.

Kerla projekat razvija Linux kompatibilan kernel u Rustu

Korištenje Rust jezika u projektu smanjuje broj grešaka u kodu primjenom bezbednih tehnika kodiranja i poboljšanjem efikasnosti identifikacije problema pri radu sa memorijom. Sigurnost memorije je obezbeđena u Rustu u vreme kompajliranja kroz proveru referenci, praćenje vlasništva nad objektom i životnog veka objekta (opsega), kao i kroz procenu ispravnosti pristupa memoriji tokom izvršavanja koda. Osim toga, Rust pruža zaštitu od prekoračenja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, primjenjuje koncept nepromjenjivih referenci i varijabli prema zadanim postavkama, nudi snažno statičko kucanje kako bi se minimizirale logičke greške i pojednostavljuje obradu ulaznih vrijednosti putem mogućnosti podudaranja uzoraka .

Za razvoj komponenti niskog nivoa, kao što je OS kernel, Rust pruža podršku za neobrađene pokazivače, pakovanje strukture, inline umetke asemblera i umetanje asemblerskih datoteka. Za rad bez vezivanja za standardnu ​​biblioteku, postoje odvojeni paketi za izvođenje operacija nad stringovima, vektorima i bitnim zastavicama. Među prednostima, tu su i ugrađeni alati za procjenu kvaliteta koda (linter, rust-analyzer) i kreiranje jediničnih testova koji se mogu izvoditi ne samo na stvarnom hardveru, već iu QEMU.

izvor: opennet.ru

Dodajte komentar