Kerla:用 Rust 編寫並與 Linux ABI 兼容的新內核

最近發布了有關 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 之類的調用可用於控制進程。 支持 tty 和偽終端 (pty)。 在 initramfs 文件系統(用於掛載 root FS)中,仍然支持 tmpfs 和 devfs。

還提供了支持 TCP 和 UDP 套接字的網絡堆棧, 基於 smoltcp 庫。 開發者準備了一個在 QEMU 或 Firecracker VM 中使用驅動程序 virtio-net 的啟動環境,您已經可以通過 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« 項目。

最後,如果您有興趣了解更多信息,可以查閱詳細信息。 在下面的鏈接中。


本文內容遵循我們的原則 編輯倫理。 要報告錯誤,請單擊 這裡.

成為第一個發表評論

發表您的評論

您的電子郵件地址將不會被發表。

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。