用Rust重寫Linux內核,這可能嗎?

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"衆所周知,Linux 是 C 語言的代言人。但是,時代變了,Rust正在興起並贏得越來越多人的支持,它開始逐漸扮演 Linux 系統語言的角色。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在 2020 年 Linux Plumbers 峯會上,開發人員認真考慮過將 Rust 語言用於 Linux 內聯代碼的想法。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前,已經有很多 Linux 中的 Rust 內容被推向市場。比如,AWS在2020年發佈了 Bottlerocket,這是一種專爲運行容器而打造的基於 Linux 的開源操作系統,其中包含大量的 Rust 代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另一個例子則與Sylvestre Ledru有關。他白天的身份是Mozilla 的主管,而晚上卻是Debian Linux 開發人員。 Ledru已經使用 LLVM 編譯器基礎架構及其 Clang C 語言前端和工具鏈基礎架構,將一個 Rust 版本的 Coreutils 移植到了 Linux 中。據瞭解,Coreutils 是 GNU Shell 核心實用程序。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基於這些內容,他已經啓動了 Linux 並運行了一些最受歡迎的 Debian 軟件包。雖然 Ledru 承認這一平臺還沒有準備好投入生產,但經過很多繁重的工作後,它現在已經可以使用了。總有一天,它會發展到替代 GNU Coreutils 的地步。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"挺進Linux世界,Rust機會在哪?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Rust 之所以受歡迎,是因爲開發人員用 Rust 更容易編寫出安全的軟件。一直以來,安全性深深困擾着微軟和谷歌等公司。此前,微軟的研究人員稱,該公司每年修復的漏洞中有 70% 與內存安全有關。谷歌的調查也發現,Chrome 代碼庫中所有嚴重的安全漏洞,70% 是內存管理的安全漏洞。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些安全問題正好可以使用Rust 來解決。AWS 產品經理 Samartha Chandrashekar 表示,“Rust有助於確保線程安全,並防止與內存相關的錯誤,例如可能導致安全漏洞的緩衝區溢出“。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據悉,2019 年 Linux 安全峯會揭示,大約三分之二的 Linux 內核漏洞來自內存安全問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從理論上講,Rust 可以使用本質上更安全的應用程序接口(API)完全避免這些漏洞。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那麼,關於 Linux 中的 Rust 地位,Linux 開發人員 Nelson Elhage 總結道:Linux Rust 的支持者並不是“提議將 Linux 內核用 Rust 重寫;他們只是努力想做到讓新的代碼可以用 Rust 來編寫。Rust 支持的三個潛在關注點包括利用內核中的現有 API、架構支持”,以及處理 Rust 和 C 之間的應用程序二進制接口(ABI)兼容性。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Linux之父:驅動程序可能率先 Rust 化"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當然,Rust 能否替代 C 語言,主宰Linux 世界?Linux 之父 Linus 和 Linux 穩定內核的維護者 Greg Kroah-Hartman 或許最有發言權。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Linus 一直在“等待與觀察”。他說:“我對這個項目很感興趣,但我認爲它是由非常熱衷於 Rust 的人們推動的,並且我想看看它在實踐中的效果究竟如何。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“從個人來說,”他表示,“絕不會‘推動’Linux 中的 Rust 運動,但考慮到 Rust 所承諾的優勢和它能夠避免的一些安全隱患,我願意接受它,但我也知道有時諾言不會兌現。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Linus 認爲,Rust 的首要目標似乎是驅動程序,這是因爲在那裏,你可以找到許多不同的可行目標,並且內核的這些部分相當小巧且獨立。對某些人來說,這可能沒那麼有趣,但它是非常明顯的目標。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在他看來,首先考慮驅動程序的另一個原因是“任何對驅動程序的初期嘗試都發生在架構層面。很多驅動程序只關聯了少數幾個目標架構,因此 Rust 代碼在某些架構上不被支持的問題在這裏並不算什麼大事。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Linux 穩定內核的維護者 Greg Kroah-Hartman 認同 Linus 的說法,“驅動程序可能是這類嘗試的首選領域,因爲它們是內核源代碼依賴樹的'末端枝葉'。它們依賴於核心內核功能,但沒有任何內容依賴它們”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Linus 知道有些人完全不喜歡用戶空間中有 Rust 的存在。“人們在抱怨用戶空間中的'Rust 化'對未來的內核來說並不是什麼好跡象,但究竟如何,我們可以拭目以待。內核與用戶空間項目是不一樣的——內核在某些方面更難處理(我們使用了很多非常奇怪的頭文件,這些文件推動了可以稱爲“C”的邊界),但是在其他許多方面又更容易(主要因爲內核是完全自包含的,因此最終二進制文件不依賴其他項目”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“一切都歸結爲如何將用 C 編寫的內核核心結構和長期規則之間的交互映射到 Rust 結構和長期規則中,以讓 Rust 編寫的驅動程序能夠正確使用它們。想要將所有這些組織起來的開發人員將需要大量的用心努力,我祝他們好運。”Greg Kroah-Hartman 補充說。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"寫在最後:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"儘管幾乎可以肯定,Linux 從 C 移植到 Rust 中這樣的事情不會很快發生,但是將基於 Rust 的用戶空間程序、驅動程序以及最後,將基於 Rust 的 Linux 內核引入 Linux 操作系統的前景引發了很多興趣和實際行動。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章