用於編寫安全核心驅動程式的框架 Linux 在 Rust 中

Josh Triplett,在英特爾工作,也是監督 Crates.io 開發的委員會成員,在開源技術高峰會上發表講話 引進 一個工作小組,旨在使 Rust 語言在系統程式設計領域與 C 語言平起平坐。

在正在建立的工作小組中,Rust 開發人員將與英特爾的工程師一起準備規範,定義需要在 Rust 中實現的系統程式設計功能。 系統程式設計通常需要低階操作,例如執行特權處理器指令和取得有關處理器狀態的詳細資訊。 在已經為 Rust 開發的類似功能中,值得注意的是對未命名結構、聯合、組合語言插入(「asm!」巨集)和 BFLOAT16 浮點數格式的支援。

Josh 認為系統程式設計的未來屬於 Rust,而現代現實中的 C 語言正在奪取過去幾年被彙編佔據的位置。 鏽
不僅使開發人員擺脫了 C 語言中由於低階記憶體工作而產生的固有問題,而且還提供了在現代程式設計範例開發中使用它的機會。

期間 討論 表演
是喬許建議把它添加到核心中的。 Linux 使用 Rust 語言開發驅動程式的能力將使您能夠以最小的努力創建更安全、更高品質的驅動程序,避免諸如釋放後訪問、空指標解引用和緩衝區溢位等問題。

Greg Kroah-Hartman,穩定內核分支的維護者 LinuxGreg表示,如果Rust驅動程式開發框架相比C語言具有真正的優勢,例如能夠為核心API提供安全的封裝,他願意將其添加到核心中。此外,Greg認為該框架只是一個可選功能,預設為停用狀態,以避免將Rust作為核心建置依賴項。

事實證明,已有多個團隊朝著這個方向努力。 例如,「Fish in a Barrel」公司的開發人員 準備好了 用於編寫核心可載入模組的工具 Linux 在 Rust 語言中,使用一組覆蓋核心介面和結構的抽象層來增強安全性。這些層是基於現有的內核頭文件,使用實用程式自動生成的。 賓根。 Clang 用於建構層。 除了中間層之外,組裝的模組還使用 staticlib 套件。

平行線 發展 另一個專案則專注於為嵌入式系統和物聯網設備開發驅動程序,該專案也使用bindgen根據核心頭檔產生層。 該框架允許您在不更改核心的情況下提高驅動程式安全性 - 建議使用更安全的 Rust 語言在編譯階段阻止問題,而不是在核心中為驅動程式建立額外的隔離等級。 假設設備製造商可能需要這樣的方法,即在沒有進行適當審核的情況下匆忙開發專有驅動程式。

尚未實現所有預期功能,但該框架已經非常適合工作,並用於為 Raspberry Pi 9512 板中提供的 LAN3 USB 乙太網路控制器編寫工作驅動程式。現有的 smsc95xx 驅動程式由C語言。 值得注意的是,在 Rust 中開發驅動程式時,模組大小和運行時元件的開銷是微不足道的,這使得該框架可以用於資源有限的設備。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster