Projekt Kerla razvija jezgru kompatibilnu s Linuxom na jeziku Rust

Projekt Kerla razvija jezgru operativnog sustava napisanu na jeziku Rust. Nova je jezgra inicijalno usmjerena na pružanje kompatibilnosti s jezgrom Linuxa na ABI razini, što će omogućiti nemodificiranim izvršnim datotekama kompajliranim za Linux da se izvode u okruženju temeljenom na Kerli. Kod se distribuira pod licencama Apache 2.0 i MIT. Projekt razvija japanski programer Seiya Nuta, poznat po stvaranju mikrojezgrenog operativnog sustava Resea, napisanog u C jeziku.

U svojoj trenutnoj fazi razvoja, Kerla može raditi samo na x86_64 sustavima i implementira osnovne sistemske pozive kao što su write, stat, mmap, pipe i poll, podržava signale, neimenovane cijevi i kontekstne prekidače. Pozivi kao što su fork, wait4 i execve dostupni su za kontrolu procesa. Postoji podrška za tty i pseudo-terminale (pty). Trenutno podržani datotečni sustavi su initramfs (koristi se za montiranje korijenskog datotečnog sustava), tmpfs i devfs. Osiguran je mrežni stog s podrškom za TCP i UDP utičnice, implementiran na temelju biblioteke smoltcp.

Programer je pripremio boot okruženje koje radi u QEMU ili u Firecracker virtualnom stroju s virtio-net driverom, na koji se već možete spojiti putem SSH-a. musl se koristi kao sistemska biblioteka, a BusyBox se koristi kao korisni programi.

Projekt Kerla razvija jezgru kompatibilnu s Linuxom na jeziku Rust

Pripremljen je sustav izgradnje temeljen na Dockeru koji vam omogućuje stvaranje vlastitih initramfova za pokretanje s kernelom Kerla. Zasebno se razvijaju nsh softverska ljuska slična ribi i Kazari GUI stack temeljen na Wayland protokolu.

Projekt Kerla razvija jezgru kompatibilnu s Linuxom na jeziku Rust

Korištenje jezika Rust u projektu omogućuje vam smanjenje broja pogrešaka u kodu korištenjem sigurnih tehnika programiranja i povećanjem učinkovitosti prepoznavanja problema pri radu s memorijom. Rust osigurava sigurnost memorije tijekom kompajliranja putem provjere referenci, vlasništva nad objektom i praćenja životnog vijeka objekta (opsezi) te procjenom ispravnosti pristupa memoriji tijekom izvođenja. Osim toga, Rust pruža zaštitu od prekoračenja cjelobrojnih brojeva, zahtijeva da se vrijednosti varijable inicijaliziraju prije upotrebe, nameće koncept nepromjenjivih referenci i varijabli prema zadanim postavkama, nudi snažno statično tipkanje za smanjenje logičkih pogrešaka i pojednostavljuje rukovanje ulaznim vrijednostima zahvaljujući usklađivanju uzoraka..

Za razvoj komponenti niske razine, kao što je jezgra OS-a, Rust pruža podršku za neobrađene pokazivače, strukturno pakiranje, inline umetke asemblera i ugradnju asemblerskih datoteka. Za rad bez vezivanja za standardnu ​​biblioteku, postoje zasebni paketi sanduka za izvođenje operacija s nizovima, vektorima i bit flagovima. Još jedna prednost su ugrađeni alati za procjenu kvalitete koda (linter, rust-analyzer) i stvaranje jediničnih testova koji se mogu izvoditi ne samo na stvarnom hardveru, već iu QEMU.

Izvor: opennet.ru

Dodajte komentar