Kerla-projekti kehittää Linux-yhteensopivan ytimen Rustissa

Kerla-projektissa kehitetään rust-kielellä kirjoitettua käyttöjärjestelmän ydintä. Uusi ydin on alusta asti suunniteltu yhteensopivaksi Linux-ytimen kanssa ABI-tasolla, mikä mahdollistaa Linuxille rakennettujen muokkaamattomien suoritettavien tiedostojen ajamisen Kerla-pohjaisessa ympäristössä. Koodia jaetaan Apache 2.0- ja MIT-lisenssien alla. Projektia kehittää japanilainen kehittäjä Seiya Nuta, joka tunnetaan C-kielellä kirjoitetun Resea-mikroytimen käyttöjärjestelmän luomisesta.

Nykyisessä kehitysvaiheessa Kerla voi toimia vain x86_64-järjestelmissä ja toteuttaa perusjärjestelmäkutsuja, kuten kirjoitus, stat, mmap, pipe ja poll, tukee signaaleja, nimeämättömiä putkia ja kontekstikytkimiä. Prosessinhallintaa varten tarjotaan kutsuja, kuten fork, wait4 ja execve. Tukea on tty ja pseudo-päätteet (pty). Tiedostojärjestelmistä initramfs (käytetään liittämään juuri FS), tmpfs ja devfs ovat edelleen tuettuja. Smoltcp-kirjaston pohjalta toteutettu verkkopino, joka tukee TCP- ja UDP-socketteja.

Kehittäjä on valmistellut QEMU:ssa tai Firecracker-virtuaalikoneessa virtio-net-ajurilla toimivan käynnistysympäristön, johon voi jo muodostaa yhteyden SSH:n kautta. Muslia käytetään järjestelmäkirjastona ja BusyBoxia käyttäjäapuohjelmina.

Kerla-projekti kehittää Linux-yhteensopivan ytimen Rustissa

Dockerin pohjalta on valmisteltu rakennusjärjestelmä, jonka avulla voit luoda omia käynnistysinitramfs-tiedostoja Kerla-ytimellä. Kalamainen nsh-kuori ja Wayland-protokollaan perustuva Kazari GUI-pino kehitetään erikseen.

Kerla-projekti kehittää Linux-yhteensopivan ytimen Rustissa

Rust-kielen käyttö projektissa vähentää koodin virheiden määrää käyttämällä turvallisia koodaustekniikoita ja tehostaa ongelmien tunnistamista muistin kanssa työskennellessä. Muistiturvallinen käsittely on tarjolla Rustissa käännöshetkellä referenssitarkistuksen avulla, objektin omistajuuden ja objektin eliniän (laajuus) seuraamisen sekä muistin käytön oikeellisuuden arvioinnin avulla koodin suorittamisen aikana. Lisäksi Rust tarjoaa suojan kokonaislukujen ylivuodoilta, vaatii muuttujien arvojen pakollisen alustamisen ennen käyttöä, käyttää muuttumattomien (muuttumattomien) viitteiden ja muuttujien käsitettä oletuksena, tarjoaa vahvan staattisen kirjoittamisen loogisten virheiden minimoimiseksi, yksinkertaistaa syötearvojen käsittelyä kuvioiden sovitusmahdollisuus..

Matalan tason komponenttien, kuten käyttöjärjestelmän ytimen, kehittämiseen Rust tukee raakaosoittimia, rakenteen pakkaamista, assembler-inline-inserttejä ja assembler-tiedoston upottamista. Toimiakseen ilman sidottua vakiokirjastoon on olemassa erilliset laatikkopaketit merkkijonojen, vektorien ja bittilippujen toimintojen suorittamiseen. Etujen joukossa on myös sisäänrakennetut työkalut koodin laadun arvioimiseen (linteri, ruoste-analysaattori) ja yksikkötestien luomiseen, joita voidaan suorittaa paitsi todellisella laitteistolla myös QEMU:ssa.

Lähde: opennet.ru

Lisää kommentti