版本
linus樹
Linux內核最初創始人--Linus Torvalds管理一個Linus樹,linus樹也稱為主線(mainline)。一般指的upstream,“上游”,也指這個linus樹或者各種開發樹。
linus樹是以2.6.x這樣的三個數字來表示。比如Linux 2.6.18-164.el5xen 的linus樹中的內核版本就是2.6.18
stable樹
這個是針對某個具體的內核版本進行bug修復,使其更加穩定的樹。這個樹的版本號是在linus樹的版本號后加一個數字。比如Linux 2.6.18-164.el5xen 的linus樹中的內核版本就是2.6.18,stable版本是164。
發布版內核
基於linus樹或者stable樹添加特有擴展和bug修改,以滿足一些特定的用戶的需求而發行的一些版本就叫做發行版。比如Fedora,Ubuntu,Centos等。
獲取上游內核可以從http://www.kernel.org獲取
如何對內核進行編譯
1 獲取源代碼
2 設置
3 編譯
4 根據發布版生成相應的源碼包
5 安裝內核印象和模塊
比如ubuntu發布版必要的源碼包是:
libncurses5-dev 基於控制台(文字界面)設置時需要
qt3-dev-tools 基於窗口(圖形界面)設置時需要
g++ 基於窗口(圖形界面)設置時需要
kernel-package
fakeroot
dpkg-dev
具體步驟
1 獲取源碼:
apt-get install linux-source
cp /usr/src/linux-source-XXXX.tar.bz2 /home/yejianfeng/
cd /home/yejianfeng
tar xjf linux-source-XXXX.tar.bz2
2 設置
cd /home/yejianfeng/linux-source-XXXX
make menuconfig
exit -- 保存修改
(退出可以看到根目錄下有個.config文件就是配置)
3 編譯
make
11.18 --
4 安裝內核
make modules_install
make install
遇到問題:
第二步 make menuconfig的時候出現錯誤:
** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
解決方法:
http://ubuntuforums.org/showthread.php?t=1097968
apt-get install libncurses5-dev
內核模塊
Linux內核是單內核(monolithic kernel),也就是所有的內核功能都集成在一個內核空間內。但是內核具有模塊功能,可以將各個功能做成模塊添加到內核空間中去。
內核模塊是可以動態添加到Linux內核空間的,文件擴展名為ko