首先去內核的官網下載官方內核,比如:https://www.kernel.org/pub/linux/kernel/v2.6/。下載壓縮文件,*.tar.bz2。
解壓到/usr/src目錄下
# tar -Jxvf linux-2.6.30.3.tar.bz2 -C /usr/src/
此時會在/usr/src下新建一個目錄,./linux-2.6.30.3進入該目錄,用ls -al查看文件如下圖所示:
使用命令:make mrproper,清除下數據
然後開始挑選內核功能:在該目錄下,運行命令,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.
***
這說明有個包沒有安裝
而且很奇怪的是,我用apt-get install ncursesdevel,提示安裝失敗
對此,進行baidu,發現解決方案,http://blog.csdn.net/yao_qinwei/article/details/8805101
Ubuntu軟件管理器服務端有作修改過,軟件名不對
sudo apt-get install libncurses5-dev
利用這條命令即可安裝成功。
接著命令:make menucofig
進入安裝界面
在這裡具體的參數要根據自身電腦的硬件來設定,可參考鳥哥的linux私房菜中的配置
配置好保存後退出。
然後就是進行內核的編譯和安裝了。
編譯內核有以下幾個命令:
make bzImage 編譯經過壓縮的內核(默認)
make modules 編譯內核模塊
由於常見的/boot下面的內核文件都是經過壓縮過的內核文件,因此常見的就是這兩者命令
輸入編譯內核命令之後,就是漫長的等待
在這期間可能會出現一些問題,比如
drivers/net/igbvf/igbvf.h:128:15: 錯誤: 重復的成員‘page’
make[4]: *** [drivers/net/igbvf/ethtool.o] 錯誤 1
make[3]: *** [drivers/net/igbvf] 錯誤 2
make[2]: *** [drivers/net] 錯誤 2
make[1]: *** [drivers] 錯誤 2
make[1]:正在離開目錄 `/usr/src/linux-2.6.32.2'
make: *** [debian/stamp/build/kernel] 錯誤 2
這些錯誤存在的原因是因為,gcc的版本和內核所需的gcc版本不同,導致編譯過程有很多語法問題。
解決方法是,用vim 修改 drivers/net/igbvf/igbvf.h文件,128行代碼為:struct page *page;再往上看,第123行,也有struct page *page這行代碼,這個結構定義在內部的一個結構體中。就是他的名字與128行的重復了,而4.6.3的編譯器對不支持這種方式的定義,我們修改128行的代碼為struct page
*pagep;保存退出;
如何查看內核編譯成功
進入內核源碼的目錄,查看有沒有bzImage文件
內核編譯成功後就是開始編譯內核模塊:
命令:sudo make modules
也是經過漫長的等待編譯成功
內核模塊編譯好之後,開始進行模塊的安裝
命令:sudo make modules_install
安裝成功後,如何查看:
在/lib/modules命令下新建了內核的模塊,代表模塊安裝成功,接下來就是安裝內核了
安裝內核命令:make install
安裝成功,能夠看到:
在/boot目錄下,可以看到內核vmlinux-3.2.2c
這就代表安裝成功了。
接下來就是重啟,在啟動菜單能夠看到對應的內核項了。