
只需要維護一個分支!
支持Windows 直接調試!
- 需要安裝Rust 環境和Windows Qemu
- 當然Linux 也支持,其實就是跨平台
本項目目標是實現一個存在於單獨倉庫、單獨分支的完整操作系統教程。
“一個操作系統教程”定義為由一系列章節組成的,用於學習操作系統的文本和代碼資料。用戶可按照自然的順序閱讀這些章節,逐步了解操作系統的發展史和原理性的技術細節。因此,在本文的後續部分,將用戶稱為學生,將使用過程稱為學習。
我假設學生在學習本教程前對Rust 語言有充分的了解,因為我希望在編寫時盡量使用Rust 帶來的方便,不必受受眾的掣肘。
我希望,學生在學習本教程時可以專注於Rust 和操作系統本身。因此,教程不要求用戶精通操作git, git clone只是獲取教程的手段之一,與下載zip 或從他人處拷貝沒有本質區別(當然,版本管理總是有益的);並且會盡量跨平台,為此,可能需要在構建系統中增加一些平台相關的操作。
本教程並不期望在章節設置或教學內容上有所創新,也不是為了實驗任何新的內核技術,rCore-Tutorial-v3 足夠優秀。本項目僅關注教程的構建過程和學生的學習體驗(換句話說,如果為了這兩點,修改章節設置和教學內容也可以接受)。在此基礎之上,我希望盡量使用Rust 的機制減少“構造一個操作系統”的代碼量,以及使得庫構建規範化、可遷移。
rCore-Tutorial-v3 的教材部分別出心裁地為每一章取了一種古生物的名字,將操作系統的發展史和動物的演化史聯繫起來,為常常枯燥的教材帶來了新奇的趣味。隨著每個章節,學生可以了解到一個現代內核,是如何從蒙昧年代一步步發展來的。
閱讀教材會帶來快樂——收穫知識、進步的快樂;閱讀歷史也會帶來快樂——帶入那些天才人物、風雲故事的快樂。然而,一旦將教材與一部真正的史書相比,就會發現我們似乎缺了什麼。從古至今、由簡至繁——這是一部編年史。編年史直白、清晰,利於建立概念,然而卻不利於理解一個複雜的人物。對於操作系統來說,就是不利於理解一個真正的現代內核子系統的細節。子系統的功能常常限於相關其他子系統尚不存在而無法完整介紹;而增加一個子系統時,又需要修改以前的子系統來適應新部件的功能。複雜的系統,要么不得不多次修改,要么只能放在後面的章節,這導致教程書可以是極好的入門,但卻無法常讀常新。
幸好,歷史已經告訴我們另外的選擇。編年史是歷史研究的重要工具,但堪稱“史家之絕唱”的還是紀傳體。每次將視角聚焦到一個重要的人物,將他的經歷作為線索,往往使歷史更豐滿。或許我們需要另一部紀傳體作品,通過無序的介紹內核的各個子模塊,為離開了蹣跚學步的內核研究者帶來一部更有效的工具書。這樣一本工具書,必然天然需要模塊化——模塊就是章節本身。
本項目仍然聚焦一個更好的Tutorial。但其模塊化的經驗有助於另外的作品。如果有這樣一個項目,可以稱為rCore-Manual,它是一本手冊,供操作系統研究者隨時翻閱。正如rCore-Tutorial 不需要介紹原始的rCore,它們是rCore 的精神續作。
本項目不是、也無意成為相關工作的典範。如果你:
因此,本項目使用WTFPL 開源,如果你不喜歡,可以改名字或在你的分叉裡直接刪除它,這都是它本身支持的。
另外,本項目具有實驗性。這意味著它隨時可能發生設計變更、破壞性重構、移動、廢棄或刪除。
cargo qemu --ch <n>
在qemu 運行第n章的操作系統。
可選參數:
--lab只對ch1 有效,執行ch1-lab--features <features>只對ch3 有效,傳入features=coop