Kerla: isang bagong kernel na nakasulat sa Rust at tugma sa Linux ABI

Kamakailan lamang ay inilabas ang impormasyon tungkol sa proyektong Kerla. Ang Kerla ay binubuo bilang isang operating system kernel na nakasulat sa Rust. Ang code ay ipinamamahagi sa ilalim ng mga lisensyang Apache 2.0 at MIT. Ang proyekto ay binubuo ng Japanese developer na Seiya Nuta, na kilala sa paglikha ng Resea microkernel operating system, na nakasulat sa C.

Ang bagong kernel ay unang naglalayong tiyakin ang pagiging tugma sa Linux kernel sa antas ng ABI, na nagpapahintulot sa mga hindi nabagong binary na nilikha para sa Linux na tumakbo sa isang kapaligirang nakabase sa Kerla.

Tungkol kay Keral

Ang Kerla ay isang monolitikong operating system kernel na binuo mula sa simula sa Rust. Sa kasalukuyang yugto ng pag-unlad nito, ang Kerla ay maaari lamang tumakbo sa mga x86_64 system at nagpapatupad ng mga pangunahing system call tulad ng write, stat, mmap, pipe, at poll. Sinusuportahan nito ang mga signal, unnamed pipe, at context switch. Ang mga tawag tulad ng fork, wait4, at execve ay ginagamit upang kontrolin ang mga proseso. May suporta para sa tty at pseudo-terminals (pty). Ang initramfs (ginagamit upang i-mount ang root filesystem), tmpfs, at devfs filesystem ay sinusuportahan pa rin.

Mayroon ding network stack na sumusuporta sa mga TCP at UDP socket, batay sa smoltcp library. Naghanda ang developer ng boot environment na gumagana sa QEMU o Firecracker VMs gamit ang virtio-net driver, na maaari mo nang ikonekta sa pamamagitan ng SSH . Ginagamit ang Musl bilang system library, at ang BusyBox bilang user utility . Isang Docker-based build system ang inihanda na nagbibigay-daan sa iyong lumikha ng sarili mong boot initramfs gamit ang Kerla kernel.

Sa ngayon, kakaunti ang mga detalyeng naibigay tungkol sa bagong kernel nito, ngunit ang higit na nakakakuha ng pansin sa mga tampok ng Kerla ay ang katotohanang nakasulat ito sa Rust. Kaya't ang pagsulat nito sa Rust ay may anumang mga pakinabang sa iba pang mga wika o sa umiiral na code? Marami ang sumagot ng oo sa tanong na ito, na nagbibigay-diin sa mga benepisyo sa seguridad ng memorya na ibinibigay ng wika.

Ibinibigay din ito kapag sinusuri ang katumpakan ng mga pag-access sa memorya habang tumatakbo. Bukod pa rito , naniniwala ang Mozilla na ang Rust ay nag-aalok ng proteksyon laban sa mga overflow ng integer , nangangailangan ng mandatoryong pagsisimula ng mga halaga ng variable bago gamitin, ginagamit ang konsepto ng mga sanggunian at mga hindi nababagong variable bilang default, nag-aalok ng malakas na static typing upang mabawasan ang mga lohikal na error, at pinapasimple ang pagproseso ng input sa pamamagitan ng pagtutugma ng pattern.

Kabilang sa mga bentahe, aming itinatampok ang mga pinagsamang tool para sa pagsusuri ng kalidad ng code at paglikha ng mga unit test na maaaring patakbuhin hindi lamang sa totoong hardware kundi pati na rin sa QEMU. Sa esensya, itinuturing ng Mozilla na mas madaling i-debug ang Rust, dahil tatanggihan ng compiler ang mga error. Gayunpaman, itinuro ng mga pagsubok ang ilang mga disbentaha ng Rust.

"Tulad ng C ++, halos imposibleng magsulat ng idiomatic na Rust nang hindi gumagamit ng mga template, kaya't ito ay namamaga ng mga binary at mabagal na oras ng pag-compile. Lahat ng compile-time check na ito ay may halaga din. Gayundin, kung muling isusulat mo ang isang bagay, mawawala ang lumang mature na codebase, at walang paraan na makakagawa ka ng codebase na may katulad na kalidad sa isang makatwirang tagal ng panahon; mas mainam na palawigin, sa halip na muling isulat, ang programa sa Rust. Mas mainam na pahabain ang programa sa halip na muling isulat ito sa Rust, ”sabi ng isang software engineer.

Ayon sa lumikha nito, ito ang dahilan kung bakit tinanggihan ng mga developer ng Linux, lalo na si Linus Torvalds mismo, ang ideya ng muling pagsusulat ng buong kernel sa Rust.

"Gumawa ng ilang trabaho upang lumikha ng mga secure na link, pagkatapos ay isulat ang karagdagang code sa Rust at masisiyahan ka pa rin sa mature na code na iyon. (Iyan ang ginagawa ng Linux, may mga pagsisikap na magdagdag ng kakayahang magsulat ng isang kernel module sa Rust), ”dagdag niya. Sinusuri ng mga developer ng Linux ang mga posibilidad ng pagsulat ng ilang bagong kernel module gamit ang Rust na wika sa loob ng halos tatlong taon. Nagbunga ito ng proyektong "Rust for Linux".

Panghuli, kung interesado kang matuto nang higit pa, makikita mo ang mga detalye sa sumusunod na link.


Idagdag bilang ginustong mapagkukunan sa Google