1、下載原始碼
uname -a 查看核心版本為Linux Ubuntu 2.6.32-24-generic。如果只想編譯現有版本的核心,可以下載2.6.32版本的;如果想升級核心版本,可以下載更新的版本。
Linux源碼的官方網址www.kernel.org,下載2.6.32版本核心原始碼(linux-2.6.32.tar.bz2),下載目錄任意,如/home/gengjia/Download。
2、解壓縮
cd /home/gengjia/Download (定位到下載的目錄)
tar zxvf linux-2.6.32.tar.bz2 (解壓縮,產生一個linux-2.6.32-29目錄)
cp linux-2.6.32-29 /usr/src/linux-2.6.32-29 (將核心檔案目錄拷貝到系統核心路徑下/usr/src/)
3、使用原來核心版本的.config檔案
cp /usr/src/linux-2.6.32-24-generic/.config usr/src/linux-2.6.32-29 (原來核心版本第一步已經查看過)
4、配置、編譯、安裝
cd /usr/src/linux-2.6.32-29
sudo su (切換成root許可權)
make mrproper (清除以前曾經編譯過的舊檔案,如果你是第一次編譯,可不執行;如果是修改核心之後編譯,不要執行!不然重新編譯一次核心花太多時間。)
make menuconfig
在核心選項主菜單的最後兩項:
load a kernel configuration...
save a kernel configuration...
先選第一項load ....,意思是,利用當前的核心配置詳單來設定將要編譯的核心,然後選save這一項儲存,最後退出配置介面。
make
make modules_install
make install
5、產生initrd
update-initramfs -k 2.6.32-29 -c
注意 :此處若使用mkinitramfs 則會在重啟後報如下錯誤:
FATAL: Could not load /lib/modules/.../modules.dep
6、更新grub啟動菜單
update-grub
也可以自己修改開機檔案
vim /boot/grub/grub.cfg
我的grub.cfg添加如下:
menuentry '(QoS)Ubuntu,Linux 2.6.32-29' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,9)'
search --no-floppy --fs-uuid --set 501d3a42-1d52-4438-99bf-e679da605867
linux /vmlinuz-2.6.32-29 root=UUID=33883099-83a5-49f3-9c12-ee6a4d90da9e ro quiet splash
initrd /initrd.img-2.6.32-29
}
#以下是原2.6.32核心啟動項
menuentry 'Ubuntu,Linux 2.6.32-24-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,9)'
search --no-floppy --fs-uuid --set 501d3a42-1d52-4438-99bf-e679da605867
linux /vmlinuz-2.6.32-24-generic root=UUID=33883099-83a5-49f3-9c12-ee6a4d90da9e ro quiet splash
initrd /initrd.img-2.6.32-24-generic
}
到此,核心編譯完成。重啟機器看看是不是有一個新的啟動項。編譯核心需要耐心,第一次編譯很可能出現各種錯誤,但是不要灰心,慢慢來,一定可以成功的!