compile a kernel on ubuntu way

使用 Ubuntu/MacOS 一段時間了,逐漸習慣把系統管理雜事丟給 OS 去處理,專注於自己的工作開發,也比較不盲目追求 kernel 的版本更新。

近來使用 LTP 時遇到自行編譯 Ubuntu kernel 的需求,總手動編譯、複製檔案與修改 grub.cfg。猜想 Ubuntu 應該有更方便的工具用來包 kernel.deb 檔,求助 google 大神後看到 kernel-package 這個套件,以及相關的 scripts。

科技果然來自人性,重複煩雜的工作就應該丟給電腦去自動化處理。

操作大致參考 How to compile a kernel on Ubuntu 10.04

簡單紀錄如下:

install necessary packages for building kernel image
sudo apt-get install fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev

get kernel source tree
download from kernel.org
tar jxvf kernel-x.x.x.tar.bz2
cd kernel-x.x.x
or
sudo apt-get install linux-source
tar jxvf /usr/src/linux-source-x.x.x.tar.bz2
cd linux-source-x.x.x

start with the same .config ad the currently running kernel
make oldconfig
make menuconfig
or
cp -vi /boot/config-'uname -r' .config
make menuconfig

packing debain kernel package using kernel-package
sudo fakeroot make-kpkg clean
sudo fakeroot make-kpkg --initrd --append-to-version=-ltp kernel-image kernel-headers
--initrd create a image package suitable for initrd

install customized kernel
cd ..
sudo dpkg -i linux-image-x.x.x-ltp.deb
sudo dpkg -i linux-headers-x.x.x-ltp.deb

generate initrd to your kernel image
find the forder name to your kernel modules
ls /lib/modules
sudo update-initramfs -c -k x.x.x-ltp

add the initrdfs image to the grub.cfg
sudo update-grub

now, just reboot!
your new kernel should automatically load.
uname -r


下篇來寫寫 Linux Test Project 的簡單心得