這次是在Ubuntu 7.04的環境Compile 2.6.22.9的Kernel。在Ubuntu的環境下Compile Linux kernel是件輕鬆的事,要做的事很少喔。
在Compile kernel前要先確定的就是有個gcc可以用啦,如果不確定就用apt-get build-dep gcc再安裝一次gcc吧,安裝完隨便寫個Hello Wrold測試一下就行啦。
先確認一下/bin/sh是link到/bin/bash,Ubuntu預設是link到/bin/dash,還是用bash比較習慣。
接下來要安裝Cimpile kernel時需要用的一些tool,我們需要kernel-package、libncurses5-dev、fakeroot、wget、bzip2。
抓一版Kernel來用,連上http://www.kernel.org找到最新的Kernel版本是2.6.22.9,所以就抓這版來用吧。在/usr/src目錄下用wget抓Linux kernel soruce code。
解壓縮Linux kernel,Create一個linux的soft link到linux-2.6.22.9。並切換到/usr/src/linux目錄。
先把舊的.config copy來用吧,至少確定是可以work的Kernel設定,而且可以以舊的設定為基礎再去修改自己需要的Kernel功能,不用一切從頭來。
執行cp /boot/config-`uname -r' ./.config就會把目前用的Kernel的.config copy到現在目錄下囉。
make menuconfig。
這時就可以選"Load an Alternate Configuration File"啦。
把剛剛的.config load進來吧,之後再去修改自己想要的Kernel設定。
設定好Kernel就可以存檔離開啦。
執行make-kpkg clean。
執行fakeroot make-kpkg --initrd kernel_image kernel_headers。接下來就是漫長的等待啦,Build kernel是要花不少時間的,可以泡茶啦。
Build完Kernel後切換到/usr/src目錄,會看到多了"linux-image-2.6.22.9_2.6.22.9-10.00.Custom_i386.deb"和"linux-headers-2.6.22.9_2.6.22.9-10.00.Custom_i386.deb"這兩個檔案。
執行dpkg -i linux-image-2.6.22.9_2.6.22.9-10.00.Custom_i386.deb。
執行dpkg -i linux-headers-2.6.22.9_2.6.22.9-10.00.Custom_i386.deb。
檢查一下開機選單/boot/grub/menu.lst。
太棒啦,開機選單也是自動建好的,什麼都不用改囉。可以重開機測試一下了。
開機後按[Esc]進入開機選單,果然看到了2.6.22.9版的Kernel呢。
開完機再用uname -r確認一下。太棒啦,現在run的是2.6.22.9的Kernel喔。