內核kernel是操作系統的最底層,也就是和硬件打交道的關鍵,因為它包含了驅動主機各項硬件的檢測程序和驅動模塊。
內核通常被放置在/boot/vmlinuz中,但是一台主機而已擁有多個內核文件。
內核模塊(kernel module)
如果電腦的硬件更新了,而內核比較舊,肯定無法支持,是否要拿一個新的內核呢?
因此,linux提出了模塊化的設計,將一些不常用的驅動程序獨立出內核,編譯成模塊,當內核要用到時調用即可,如此可以在不改動內核的前提下,只要編譯出適當的內核模塊並加載它,那麼linux就可以使用這個硬件了,linux的內核模塊放在,/lib/module/$(uname-r)/kernel/當中。
為何要編譯內核:
除了BIOS之外,內核是操作系統中最早被加載到內存的,但並不是要將所有內核支持的東西都編譯到我的內核中,這樣很多其實我們不需要的功能模塊也放在裡面,使得內核變得臃腫。
要記住,內核編譯的重點在於你要你的linux做什麼,這樣才能讓linux運行更為順暢。這也就是為什麼要編譯內核
linux內核特色:可以隨時隨人的喜好而變動,版本改動次數太頻繁。
一般用戶不需要在安裝好linux後立即編譯內核。幾乎每個linux distribution都將內核編譯得相當適合普通用戶使用了。
內核編譯的目的:
1.新功能的需求
2.原內核太過臃腫
3.其他需求(如嵌入式系統 embedded system)
內核源代碼的取得方式:
1.原本distribution提供的內核源代碼文件
2.取得最新的穩定版內核源代碼:www.kernel.org
3.保留原本設置,利用patch(補丁)升級內核源代碼:如果只是想在原本的內核下面加入某些特殊功能,而該功能已經針對內核源代碼推出patch補丁,可以根據上面網站下載補丁,而要注意的是補丁通常都是僅針對前一版的,因此如果要跨級升級,每一級的補丁都要下,然後依次安裝。
http://write.blog.csdn.net/postedit
tar.xz 是完整的內核包
pgp 是.tar.sign後綴的文件,用於校驗類似於MD5(指紋校驗)
patch 是補丁包
內核編譯的前處理:
保持干淨的源代碼 make mrproper:如果是第一次編譯,不清楚下載的源代碼當中有沒有保留目標文件(.o)等,可以通過make mrproper命令來清除,需要注意的是這個操作會將以前進行過的內核功能選擇文件也刪除掉。因此只有第一次執行內核編輯前才進行這個操作,其他時間,可以采用make clean刪除前一次編譯過程的殘留數據。make clean 刪除大多數的編譯生成文件, 但是會保留內核的配置文件.config。
開始挑選內核功能:make xxconfig,在/boot下面存在一個名為config-xxx的文件,就是內核功能列表文件。如何創建該文件,常見方法有
make menuconfig:最常見的,是文字模式下可以顯示圖形界面的方式,不需要啟動x window能夠挑選內核功能菜單
make oldconfig:使用已存在的./.config文件內容,只將新版本內核內的新功能列出
make xconfig:通過以Qt為圖形界面基礎功能的圖形化界面顯示,需要x window的支持,例如KDE
make gconfig:GNOME
make config:最古老的方法