戴文的Linux內核專題:01 介紹
譯者按:
本文作者戴文.科利爾.約翰遜(Devyn Collier Johnson)今年才19歲,但是他在Linux內核、人工智慧、編程語言方面擁有豐富的經驗,本文是其在linux.org上連載的一系列關於內核的文章。文章寫的深入淺出,本站不揣淺陋,由LCTT成員geekpi進行了系列翻譯,以分享給廣大Linux愛好者。
在1991年,一個叫林納斯·本納第克特·托瓦茲的芬蘭學生製作了一個現在非常流行的操作系統的內核。他於1991年9月發布了Linux 0.01,並且於1992年以GPL許可證的方式授權了該內核。GNU通用許可證(GPL)允許人們使用、擁有、修改,以及合法和免費的分發源代碼。這使得內核變得非常流行,因為任何人都可以免費地下載。現在任何人都可以生成他們自己的內核,這有助於人們學習如何獲取、編輯、配置、編譯並安裝Linux內核。
內核是操作系統的核心。操作系統是一系列的管理硬體並允許用戶在電腦上運行應用的程序。內核控制著硬體和應用。應用並不直接和硬體打交道,而是首先和內核交互。總之,軟體運行在內核上,而內核操作著硬體。沒有內核,電腦就是一個沒用的物件。
用戶製作他們自己的內核有各種各樣的原因。許多用戶也許想要一個只包含他們需要的代碼的系統內核。比如說我的內核包含了火線設備驅動,但是我的電腦缺乏這些埠。當系統啟動時,時間和內存就會浪費在那些我系統上並沒有安裝的設備上。如果我想要簡化我的內核,我會製作自己不包含火線驅動的內核。至於另外一個理由,某個用戶可能擁有一台有特殊硬體的設備,但是最新的Ubuntu版本中的內核缺乏所需的驅動。這個用戶可以下載最新的內核(比當前Ununtu的Linux內核要新),並製作他們自己的有相應驅動的內核。不管怎樣,這兩個原因是用戶想要製作自己的Linux內核的普遍原因。
在下載內核前,我們應該討論一些重要的術語和事實。Linux內核是一個宏內核,這意味著整個操作系統都運行在內核預留的內存里。說的更清楚一些,內核是放在內存里的。內核所使用的空間是內核預留的。只有內核可以使用預留的內核空間。內核擁有這些內存空間,直到系統關閉。與內核空間相對應的還是用戶空間。用戶空間是內存上用戶程序擁有的空間。比如瀏覽器、電子遊戲、文字處理器、媒體播放器、壁紙、主題等都是放在內存里的用戶空間。當一個程序關閉的時候,任何程序都可以使用新釋放的空間。在內核空間,一旦內存被佔用,則沒有任何其他程序可以使用這塊空間。
Linux內核也是一個搶佔式多任務內核。這意味該內核可以暫停一些任務來保證任何應用都有機會來使用CPU。舉個例子,如果一個應用正在運行但是正在等待一些數據,內核會把這個應用暫停並允許其他的程序使用新釋放的CPU資源,直到數據到來。否則的話,系統就會浪費資源給那些正在等待數據或者其他程序執行的的任務。內核將會強製程序去等待或者停止使用CPU。沒有內核的允許,應用程序不能脫離暫停或者使用CPU。
Linux內核使得設備作為文件顯示在/dev文件夾下。舉個例子,USB埠位於/dev/bus/usb。硬碟分區則位於/dev/disk/分區。因為這個特性,許多人說:「在Linux上,一切皆文件」。(不過這些設備文件不能被直接使用,——譯者補充)舉個例子,如果一個用戶想要訪問在存儲卡上的數據,他們是不能通過設備文件訪問到這些數據的。(譯註:此處原文是「If a user wanted to access data on their memory card, for example, they cannot access the data through these device files.」,但根據上下文,此處語境不對,所以做了相應補充。據「食夢-」的提示,原文也有人對此提出了質疑,作者做了如下解釋:http://www.linux.org/threads/%EF%BB%BFthe-linux-kernel-introduction.4203/#post-12623)
Linux內核是可移植的。可移植性是Linux流行的一個最重要的原因。可移植性使得內核可以工作在各種處理器和系統上。一些內核支持的處理器的型號包括:Alpha、AMD、ARM、C6X、Intel、x86、Microblaze、MIPS、PowerPC、SPARC、UltraSPARC等,這還不是全部的列表。
在引導文件夾(/boot),用戶會看到諸如「vmlinux」或者「vmlinuz」的文件。這兩者都是已編譯的Linux內核。以「z」結尾的是已壓縮的。「vm」代表虛擬內存。在SPARC處理器的系統上,用戶可以看見一個zImage文件。一小部分用戶可以發現一個bzImage文件,這也是一個已壓縮的Linux內核。無論用戶有哪個文件,這些引導文件都是不能更改的,除非用戶知道他們正在做什麼。否則系統會變成無法引導,也就是說系統啟動不了了。
內核源代碼就是程序編碼。有了源代碼,程序員可以修改內核並能觀察到內核是如何工作的。
下載內核:
現在我們想更多地了解了內核,就要下載內核源代碼了。進入kernel.org並點擊那個巨大的下載按鈕。下載完成後,解壓下載的文件。
對於本文,我使用的源代碼是Linux kernel 3.9.4.這個文章系列的所有指導對於所有的內核版本是相同的(或者非常相似的)
via: http://www.linux.org/threads/%EF%BB%BFthe-linux-kernel-introduction.4203/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive