La Kerla projekto evoluigas Linuks-kongruan kernon en Rust

La Kerla projekto disvolvas operaciuman kernon skribitan en Rust. La nova kerno estas komence orientita por disponigi kongruecon kun la Linukso-kerno ĉe la ABI-nivelo, kio permesos al nemodifitaj binaroj konstruitaj por Linukso funkcii en Kerla-bazita medio. La kodo estas distribuita sub la Apache 2.0 kaj MIT-licencoj. La projekto estas evoluigita de japana programisto Seiya Nuta, konata pro kreado de la Resea mikrokerna operaciumo skribita en C.

En la nuna etapo de evoluo, Kerla nur povas funkcii per x86_64-sistemoj kaj efektivigas bazajn sistemajn vokojn kiel skribon, stat, mmap, pipon kaj balotenketon, subtenas signalojn, nenomitajn pipojn kaj kuntekstŝaltilojn. Por proceza administrado, alvokoj kiel fork, wait4 kaj execve estas provizitaj. Estas subteno por tty kaj pseŭdo-terminaloj (pty). El la dosiersistemoj, initramfs (uzata por munti la radikon FS), tmpfs kaj devfs daŭre estas subtenataj. Reta stako estas provizita per subteno por TCP kaj UDP-ingoj, efektivigitaj surbaze de la smoltcp-biblioteko.

La programisto preparis starteblan medion, kiu funkcias en QEMU aŭ en la virtuala maŝino Firecracker kun la virtio-reta ŝoforo, al kiu vi jam povas konekti per SSH. Musl estas uzata kiel sistembiblioteko, kaj BusyBox estas uzata kiel uzantservaĵoj.

La Kerla projekto evoluigas Linuks-kongruan kernon en Rust

Surbaze de Docker, konstrusistemo estis preparita, kiu ebligas al vi krei viajn proprajn lanĉajn initramfs kun la Kerla-kerno. La fiŝ-simila nsh-ŝelo kaj la Kazari GUI-stako bazita sur la Wayland-protokolo estas evoluigitaj aparte.

La Kerla projekto evoluigas Linuks-kongruan kernon en Rust

Uzi la Rust-lingvon en projekto reduktas la nombron da cimoj en la kodo aplikante sekurajn kodigajn teknikojn kaj plibonigante la efikecon de identigado de problemoj kiam oni laboras kun memoro. Memorsekureco estas disponigita en Rust ĉe kompiltempo per referenckontrolado, konservante trakon de objektoposedo kaj objektvivdaŭro (amplekso), same kiel tra taksado de la ĝusteco de memoraliro dum kodekzekuto. Krome, Rust provizas protekton kontraŭ entjeraj superfluoj, postulas devigan inicialigon de variaj valoroj antaŭ uzo, aplikas la koncepton de neŝanĝeblaj referencoj kaj variabloj defaŭlte, ofertas fortan senmovan tajpadon por minimumigi logikan erarojn kaj simpligas enigvaloran prilaboradon per ŝablonoj kongruaj instalaĵoj. . .

Por la evoluo de malaltnivelaj komponentoj, kiel ekzemple la OS-kerno, Rust disponigas subtenon por krudaj montriloj, strukturpakado, asemblej enlinienigaĵoj, kaj asemblerdosiero enliniing. Por labori sen esti ligita al la norma biblioteko, ekzistas apartaj kestaj pakaĵoj por fari operaciojn sur ŝnuroj, vektoroj kaj bitaj flagoj. Inter la avantaĝoj, ekzistas ankaŭ enkonstruitaj iloj por taksi kodkvaliton (linter, rust-analizilo) kaj krei unutestojn kiuj povas esti rulitaj ne nur sur reala aparataro, sed ankaŭ en QEMU.

fonto: opennet.ru

Aldoni komenton