- 代碼: 選擇全部
第一步 安裝必要的工具
首先要安裝必要的包。
包有:libncurses5-dev(menuconfig需要的)和essential
sudo apt-get install build-essential kernel-package
sudo apt-get install make
sudo apt-get install gcc
另外,查看系統是否有這樣的兩個命令
mkinitramfs mkisofs
這兩個工具在編譯內核時用來生成 *.img文件的。如果沒有就需安裝。
第二步 下載內核
到www.kernel.org下載新內核到/usr/src
我下載的是linux-2.6.24.tar.gz(原來的內核是2.6.20-15-generic)
第三步 編譯前的準備
察看當前內核的版本
helight@helight-desktop:/$ uname -a
Linux helight-desktop 2.6.20-15-generic #1 SMP Mon Aug 25 17:32:09 UTC 2008 i686 GNU/Linux
helight@helight-desktop:/$
建議最好下載比當前已安裝版本高的內核
解壓linux-2.6.24.tar.gz到linux-2.6.24
cd /usr/src
sudo tar zxvf linux-2.6.24.tar
cd linux-2.6.24/
第四步 開始編譯
cd /usr/src/linux-2.6.24 //以下所有的工作都在/usr/src/linux-2.6.24下完成
sudo make menuconfig //用menuconfig的話還需要Ncurses,或者用
sudo make xconfig
sudo make menuconfig //一般是用menuconfig
配置完以後保存(系統中保存的一份內核配置文件是在/usr/src/linux-2.6.24下名為.config,你也可以自己在別的地方另存一份)
也可以cp原來在/boot目錄下的config-2.6.xx 到當前目錄下,在make menuconfig是使用這個配置文件。
sudo make dep //也許系統會提示現在不必要進行make dep,那就下一步 2.6.24的我編譯就沒有使用過。
sudo make clean //清除舊數據 ,新解壓的內核源碼就不需要這一步了
sudo make –j2 可以分兩個線程來進行編譯工作,不過我用make –j4 卻發現系統有9個make進程在工作。所以這個參數未必起作用。
sudo make bzImage //編譯內核,將保存到/usr/src/linux-2.6.24/arch/i386/boot/下
sudo make modules //編譯模塊
sudo make modules_install //安裝模塊
sudo mkinitramfs -o /boot/initrd-2.6.24.img 2.6.24
此時可能提示找不到這樣的一個文件夾「/lib/firmware/2.6.24」,你需要手工創建一個這樣的文件夾。
sudo mkdir /lib/firmware/2.6.24
sudo make install //安裝內核
安裝完後/boot下將增加以下幾個文件(用ls -l *24*查看)
helight@helight-desktop:/boot$ ls -l *24*
-rw-r–r– 1 root root 85203 2008-03-14 22:24 config-2.6.24
-rw-r–r– 1 root root 85203 2008-03-14 20:23 config-2.6.24.old
-rw-r–r– 1 root root 37968871 2008-03-15 08:31 initrd-2.6.24.img
-rw-r–r– 1 root root 4014080 2008-03-14 22:24 initrd.img-2.6.24
-rw-r–r– 1 root root 932315 2008-03-14 22:24 System.map-2.6.24
-rw-r–r– 1 root root 932315 2008-03-14 20:23 System.map-2.6.24.old
-rw-r–r– 1 root root 1858864 2008-03-14 22:24 vmlinuz-2.6.24
-rw-r–r– 1 root root 1858864 2008-03-14 20:23 vmlinuz-2.6.24.old
helight@helight-desktop:/boot$
給/boot/grub/menu.lst中添加一個新的啟動項,如我的menu.lst增加了如下一段文字
title Ubuntu, kernel 2.6.24
root (hd0,0)
kernel /boot/vmlinuz-2.6.24root=UUID=d7e2cf74-ebf5-4c78-ac2c-9f85a9809eae ro
initrd /boot/initrd-2.6.24.img
從新啟動即可。
我照上面步驟去編譯但出現重開出現下面圖片錯誤訊息
http://vega.cs.tku.edu.tw/~u92510889/2345.jpg
是不是 /boot/grub/menu.lst 有問題 ?
- 代碼: 選擇全部
title Debian GNU/Linux, kernel 2.
6.30
root (hd0,0)
kernel /boot/vmlinuz-2.6.30 root=/dev/sda1 ro quiet
initrd /boot/initrd.img-2.6.30
謝謝[/code]