Proyek Kerla sedang mengembangkan kernel yang kompatibel dengan Linux dalam bahasa Rust

Proyek Kerla sedang mengembangkan kernel sistem operasi yang ditulis dalam bahasa Rust. Kernel baru awalnya difokuskan untuk menyediakan kompatibilitas dengan kernel Linux di tingkat ABI, yang memungkinkan file executable yang tidak dimodifikasi yang dikompilasi untuk Linux dapat dijalankan di lingkungan berbasis Kerla. Kode ini didistribusikan di bawah lisensi Apache 2.0 dan MIT. Proyek ini dikembangkan oleh pengembang Jepang Seiya Nuta, yang dikenal karena menciptakan sistem operasi mikrokernel Resea, yang ditulis dalam bahasa C.

Pada tahap pengembangan saat ini, Kerla hanya dapat berjalan pada sistem x86_64 dan mengimplementasikan panggilan sistem dasar seperti write, stat, mmap, pipe dan poll, sinyal pendukung, pipa tanpa nama, dan sakelar konteks. Panggilan seperti fork, wait4, dan execve disediakan untuk mengontrol proses. Ada dukungan untuk tty dan pseudo-terminal (pty). Sistem file yang didukung saat ini adalah initramfs (digunakan untuk memasang sistem file root), tmpfs dan devfs. Tumpukan jaringan dengan dukungan untuk soket TCP dan UDP disediakan, diimplementasikan berdasarkan perpustakaan smoltcp.

Pengembang telah menyiapkan lingkungan boot yang berjalan di QEMU atau di mesin virtual Firecracker dengan driver virtio-net, yang sudah dapat Anda sambungkan melalui SSH. musl digunakan sebagai perpustakaan sistem, dan BusyBox digunakan sebagai utilitas pengguna.

Proyek Kerla sedang mengembangkan kernel yang kompatibel dengan Linux dalam bahasa Rust

Sistem build berbasis Docker telah disiapkan yang memungkinkan Anda membuat initramf boot Anda sendiri dengan kernel Kerla. Secara terpisah, shell perangkat lunak nsh yang mirip dengan fish dan tumpukan GUI Kazari berdasarkan protokol Wayland sedang dikembangkan.

Proyek Kerla sedang mengembangkan kernel yang kompatibel dengan Linux dalam bahasa Rust

Penggunaan bahasa Rust dalam sebuah proyek memungkinkan Anda mengurangi jumlah kesalahan dalam kode dengan menggunakan teknik pemrograman yang aman dan meningkatkan efisiensi dalam mengidentifikasi masalah saat bekerja dengan memori. Rust menegakkan keamanan memori pada waktu kompilasi melalui pemeriksaan referensi, kepemilikan objek, dan pelacakan seumur hidup objek (cakupan), dan dengan mengevaluasi kebenaran akses memori saat runtime. Rust juga memberikan perlindungan terhadap integer overflow, memerlukan inisialisasi nilai variabel sebelum digunakan, menerapkan konsep referensi dan variabel yang tidak dapat diubah secara default, menawarkan pengetikan statis yang kuat untuk meminimalkan kesalahan logika, dan menyederhanakan penanganan nilai input dengan pola cocok. .

Untuk pengembangan komponen tingkat rendah, seperti kernel OS, Rust menyediakan dukungan untuk pointer mentah, pengepakan struktur, sisipan inline assembler, dan penyematan file assembler. Untuk bekerja tanpa terikat dengan perpustakaan standar, terdapat paket peti terpisah untuk melakukan operasi dengan string, vektor, dan flag bit. Keuntungan lainnya adalah alat bawaan untuk menilai kualitas kode (linter, penganalisis karat) dan membuat pengujian unit yang dapat dijalankan tidak hanya pada perangkat keras nyata, tetapi juga di QEMU.

Sumber: opennet.ru

Tambah komentar