Kerla 專案正在開發一個用 Rust 語言編寫的作業系統核心。 新核心最初專注於在 ABI 層級提供與 Linux 核心的兼容性,這將允許為 Linux 編譯的未修改的可執行檔在基於 Kerla 的環境中運行。 該程式碼根據 Apache 2.0 和 MIT 許可證分發。 該項目由日本開發商 Seiya Nuta 開發,他因創建用 C 語言編寫的微內核作業系統 Resea 而聞名。
在目前的開發階段,Kerla 只能運行在 x86_64 系統上,並實現 write、stat、mmap、pipe 和 poll 等基本系統調用,支援訊號、無名管道和上下文切換。 提供諸如 fork、wait4 和 execve 之類的呼叫來控制進程。 支援 tty 和偽終端 (pty)。 目前支援的檔案系統有initramfs(用於掛載根檔案系統)、tmpfs 和devfs。 提供了支援 TCP 和 UDP 套接字的網路堆疊,基於 smoltcp 庫實作。
開發人員已經準備好了一個在 QEMU 或帶有 virtio-net 驅動程式的 Firecracker 虛擬機器中運行的引導環境,您已經可以透過 SSH 連接到該環境。 musl 用作系統庫,BusyBox 用作使用者實用程式。
基於 Docker 的建置系統已準備就緒,讓您可以使用 Kerla 核心建立自己的啟動 initramfs。 另外,類似fish的nsh軟體shell和基於Wayland協定的Kazari GUI堆疊正在開發中。
在專案中使用 Rust 語言可以讓您透過使用安全程式設計技術來減少程式碼中的錯誤數量,並提高在使用記憶體時識別問題的效率。 Rust 透過引用檢查、物件所有權和物件生命週期追蹤(範圍)以及在執行時間評估記憶體存取的正確性來強制編譯時的記憶體安全。 此外,Rust 還提供針對整數溢位的保護,要求變數值在使用前進行初始化,預設強制執行不可變引用和變數的概念,提供強大的靜態類型以最大程度地減少邏輯錯誤,並簡化輸入值的處理感謝模式匹配..
對於低階元件(例如作業系統核心)的開發,Rust 提供了對原始指標、結構打包、彙編器內聯插入和彙編器檔案嵌入的支援。 為了在不依賴標準函式庫的情況下工作,有單獨的 crate 套件用於使用字串、向量和位元標誌執行操作。 另一個優點是用於評估程式碼品質(linter、rust-analyzer)和創建單元測試的內建工具,這些工具不僅可以在真實硬體上運行,還可以在 QEMU 中運行。
來源: opennet.ru