Projek Kerla membangunkan kernel yang serasi dengan Linux dalam Rust

Projek Kerla sedang membangunkan kernel sistem pengendalian yang ditulis dalam Rust. Kernel baharu pada mulanya berorientasikan untuk menyediakan keserasian dengan kernel Linux pada peringkat ABI, yang akan membolehkan binari tidak diubah suai dibina untuk Linux berjalan dalam persekitaran berasaskan Kerla. Kod itu diedarkan di bawah lesen Apache 2.0 dan MIT. Projek ini sedang dibangunkan oleh pemaju Jepun Seiya Nuta, yang terkenal kerana mencipta sistem pengendalian mikrokernel Resea yang ditulis dalam C.

Pada peringkat pembangunan semasa, Kerla hanya boleh dijalankan pada sistem x86_64 dan melaksanakan panggilan sistem asas seperti tulis, statistik, mmap, paip dan tinjauan pendapat, menyokong isyarat, paip tidak dinamakan dan suis konteks. Untuk pengurusan proses, panggilan seperti fork, wait4, dan execve disediakan. Terdapat sokongan untuk tty dan pseudo-terminal (pty). Daripada sistem fail, initramfs (digunakan untuk memasang FS akar), tmpfs dan devfs masih disokong. Timbunan rangkaian disediakan dengan sokongan untuk soket TCP dan UDP, dilaksanakan berdasarkan perpustakaan smoltcp.

Pembangun telah menyediakan persekitaran boleh boot yang berjalan dalam QEMU atau dalam mesin maya Firecracker dengan pemacu virtio-net, yang anda sudah boleh sambungkan melalui SSH. Musl digunakan sebagai perpustakaan sistem, dan BusyBox digunakan sebagai utiliti pengguna.

Projek Kerla membangunkan kernel yang serasi dengan Linux dalam Rust

Berdasarkan Docker, sistem binaan telah disediakan yang membolehkan anda mencipta initramf boot anda sendiri dengan teras Kerla. Cangkang nsh seperti ikan dan tindanan GUI Kazari berdasarkan protokol Wayland sedang dibangunkan secara berasingan.

Projek Kerla membangunkan kernel yang serasi dengan Linux dalam Rust

Menggunakan bahasa Rust dalam projek mengurangkan bilangan ralat dalam kod dengan menggunakan teknik pengekodan selamat dan meningkatkan kecekapan mengenal pasti masalah apabila bekerja dengan memori. Pengendalian selamat memori disediakan dalam Rust pada masa penyusunan melalui semakan rujukan, menjejaki pemilikan objek dan jangka hayat objek (skop), serta melalui penilaian ketepatan akses memori semasa pelaksanaan kod. Di samping itu, Rust menyediakan perlindungan terhadap limpahan integer, memerlukan permulaan mandatori nilai pembolehubah sebelum digunakan, menggunakan konsep rujukan dan pembolehubah tidak berubah (tidak berubah) secara lalai, menawarkan penaipan statik yang kuat untuk meminimumkan ralat logik, memudahkan pemprosesan nilai input terima kasih kepada kemudahan padanan corak. .

Untuk pembangunan komponen peringkat rendah, seperti kernel OS, Rust menyediakan sokongan untuk penunjuk mentah, pembungkusan struktur, sisipan sebaris pemasang dan sebaris fail pemasang. Untuk bekerja tanpa terikat dengan perpustakaan standard, terdapat pakej peti yang berasingan untuk melaksanakan operasi pada rentetan, vektor dan bendera bit. Antara kelebihannya, terdapat juga alat terbina dalam untuk menilai kualiti kod (linter, penganalisis karat) dan mencipta ujian unit yang boleh dijalankan bukan sahaja pada perkakasan sebenar, tetapi juga dalam QEMU.

Sumber: opennet.ru

Tambah komen