Kerla 專案的最新資訊已發布。 Kerla 是一個用 Rust 編寫的作業系統內核,其程式碼以 Apache 2.0 和 MIT 許可證發布。該專案由日本開發者 Seiya Nuta 開發,他曾創建過用 C 語言編寫的 Resea 微內核作業系統。
新核心最初的目標是在 ABI 層級上確保與 Linux 核心的兼容性,從而允許為 Linux 創建的未修改二進位檔案在基於 Kerla 的環境中運行。
關於喀拉邦
Kerla 是一個完全用 Rust 語言編寫的單體作業系統核心。在目前的開發階段,Kerla僅支援 x86_64 系統,並實現了諸如 write、stat、mmap、pipe 和 poll 等基本系統呼叫。它支援信號、匿名管道和上下文切換。 fork、wait4 和 execve 等呼叫用於控制進程。 Kerla 支援 tty 和偽終端 (pty)。 initramfs(用於掛載根檔案系統)、tmpfs 和 devfs 檔案系統仍受支援。
該軟體包還提供了一個基於 smoltcp 庫、支援 TCP 和 UDP 套接字的網路協定棧。開發者已準備好一個啟動環境,該環境使用 virtio-net 驅動程序,可在 QEMU 或 Firecracker 虛擬機中運行,並且您已可透過 SSH 連接到該虛擬機。 Musl 用作系統庫,BusyBox 用作使用者實用程式。此外,還提供了一個基於 Docker 的建置系統,可讓您使用 Kerla 核心建立自己的啟動 initramfs。
到目前為止,關於其新內核的細節還很少,但 Kerla 的特性最受關注的是它是用 Rust 編寫的。 那麼用 Rust 編寫它比其他語言或現有代碼有什麼優勢嗎? 許多人對這個問題的回答是肯定的,強調語言提供的內存安全優勢。
它也用於評估運行時記憶體存取的準確性。此外,Mozilla 認為 Rust 提供了防止整數溢出的保護,要求在使用前強制初始化變數值,預設採用引用和不可變變數的概念,提供強靜態類型以最大限度地減少邏輯錯誤,並透過模式匹配簡化輸入處理。
優勢之一是整合了程式碼品質評估和單元測試創建工具,這些工具不僅可以在真實硬體上運行,還可以在 QEMU 模擬器上運行。 Mozilla 認為 Rust 更容易偵錯,因為編譯器會拒絕錯誤。然而,測試也指出了 Rust 的一些缺點。
“與 C++ 一樣,不使用模板編寫慣用的 Rust 幾乎是不可能的,因此它具有臃腫的二進製文件和緩慢的編譯時間。 所有這些編譯時檢查也是有代價的。 此外,如果你重寫了一些東西,你就會失去舊的成熟代碼庫,而且你無法在合理的時間內生成類似質量的代碼庫; 在 Rust 中擴展而不是重寫程序要好得多。 最好是擴展程序而不是用 Rust 重寫它,”一位軟件工程師說。
據其創建者稱,這就是 Linux 開發人員,特別是 Linus Torvalds 本人,並拒絕用 Rust 重寫整個核心的想法的原因。
“做一些工作來創建安全鏈接,然後用 Rust 編寫額外的代碼,你仍然可以享受那些成熟的代碼。 (這就是 Linux 所做的,正在努力添加在 Rust 中編寫內核模塊的能力),”他補充道。 大約三年來,Linux 開發人員一直在探索使用 Rust 語言編寫某些新內核模塊的可能性。 這催生了»Rust for Linux« 項目。