如何開始更改 Linux 原始碼來製作客製化作業系統?

如何開始更改 Linux 原始碼來製作客製化作業系統?

我聽說我們可以透過更改原始碼來自訂Linux(例如Ubuntu),並且可以創建全新的作業系統。我從www.kernel.org網站下載了linux核心的源碼。但透過看到它,我無法理解任何東西,有這麼多的目錄,文件中的文件(因為我認為會有一個大程式)。我想將其作為大學專案來完成,我還想透過對 Linux 進行必要的更改來為 Linux 做出貢獻。但在一些網站上問這個問題後,他們說Linux原始碼非常龐大。你可以試試minix。現在我很困惑。

請給我建議,詳細說明我應該如何開始這個旅程(更改原始程式碼以自訂 Linux)和必要的步驟,以及一些初學者程度的書籍。

答案1

歡迎來到 unix.stackexchange.com!

你的問題沒有簡單的答案,而且遠的比我優秀的人寫過關於 Linux 核心和一般作業系統主題的整本書。

關於專案範圍:編寫作業系統不是一項簡單的任務!即使是像 Minix 這樣刻意最小化的作業系統也是一件相當複雜的事情!為了讓您對 Linux 有一個了解,請考慮一下您迄今為止編寫的 C 程式。平均大學課程最多只有幾千行 C 語言。我認為我最後一年的專案大約有 30-35,000 行 C++ 程式碼。 Linux 核心大約有 13,000,000 行 C 程式碼。

為什麼全部都在單獨的文件中?出於後勤和實際原因,大型專案儲存在單獨的文件中。只需考慮將 13,000,000 行檔案載入到編輯器中即可!在處理像 Linux 這樣的大型專案之前,您絕對應該磨練您的 C 技能,直到「為什麼有多個檔案」問題能夠得到答案。您還應該能夠讀取C代碼,而不僅僅是寫出來。 (比一開始看起來更難)

你絕對應該非常精通 C。自己的解決問題的風格)。

獲得 C fu 後,請確保您了解作業系統。這將幫助您理解程式碼。並非所有 Linux 都是必需的。內核本身相當小!這是什麼腫脹:

  • 適用於各種設備的數千個硬體驅動程式。
  • 各種設備類別的抽象層,以簡化 API 和驅動程式編寫。例如,我們有檔案系統的 VFS、輸入裝置的事件層等等。
  • 數量驚人的條件編譯程式碼和文件,適合運行 Linux 的各種架構(並非每台 Linux 機器都是 Intel PC,有些是難以置信與您的預期不同)。核心必須處理這些差異,這意味著更多的程式碼。

您會立即發現的一個問題是,這些組件不太容易拔出、更換和重新插回在一起。有許多相互關係。簡而言之,更改核心的位元是很棘手的。

人們向您推薦 Minix 的原因很簡單:它是一個完整的作業系統,但不會受到像 Linux 這樣複雜的系統需求的負擔。程式碼雖小,但仍提供完整的功能。畢竟,Linux 的第一個版本是受到 Minix 的啟發。

當然,Minix 如今的硬體支援較少。所以呢?這是一個福音!現代電腦的虛擬化效果非常好。利用這一點來發揮你的優勢:運行 Minix 的 VM 非常輕,它會讓開發變得很麻煩。

如果您的專案是建立一個作業系統,那麼您可能比從研究 Minix 開始更糟糕。您可能還想購買並閱讀 Minix 配套的書,'安德魯·塔南鮑姆的現代作業系統'。

您還應該設定目標並定義條款恰恰。如果您自己對作業系統的定義是 Microsoft 的(具有 GUI 和完整軟體套件的作業系統),那麼您可能會面臨一個非常漫長的專案!畢竟,自 20 世紀 60 年代以來,數十萬人付出了努力,才使我們取得了現在的成就。

最後,請記住計算機科學家的戰鬥口號:'永遠不要重新發明輪子!」(當然,我們在學習時喜歡破例。並且為了好玩:))

答案2

查看Linux 從頭開始專案.顧名思義,它包含構建您自己的 Linux 發行版所需的所有詳細信息

答案3

我認為你需要定義的第一件事是「你希望為作業系統帶來哪些改變」。除非你做出這樣的決定,否則你將一事無成。學習沒有「一條道路」。

此外,我認為你應該更好地定義作業系統的含義。 Ubuntu 原始碼的很大一部分(主要部分)位於 Linux 之外。 Linux只是核心,(有時稱為作業系統,尤其是在學術界,因此造成混亂),因此它具有“簡單的”工作:

  • 管理資源。
  • 與硬體通訊。

任何其他變更都會在不同層級上發生,無論是核心使用者區實用程式(通常稱為實用程式)、GUI、發行版的基本應用程式等。

但是,如果您仍然打算學習如何破解內核,那麼您可能應該從這個問題,本網站得票最高的問題;)

答案4

這可能有點離題,但如果您希望了解 Linux 核心並開始開發它,您應該真正研究一下核心新手。這個網站可以讓您深入了解內核機制(就像 Alexios 所做的那樣),而且還可以讓您選擇一個小任務來處理(成為所謂的內核看門人)。這是一個很好的學習方式,我強烈推薦它!

相關內容