自己手動編譯 kernel 是一件需要很小心謹慎的動作!請千萬記得先保留一份可正常開機的 kenel ,以備不時之需 ( 通常都會用到.. )
debian 真是太棒了,連 patch kernel 都這麼貼心,底下我以加入 ck patch 為例子來介紹如何利用 debian 的工具輕鬆的 patch kernel!
ps.全程請以 root 身份執行
找尋您想要的 kernel source :
- 代碼: 選擇全部
root@debian[~]$ apt-cache search kernel-source
freeswan - IPSEC utilities for FreeSWan
kernel-patch-2.2-lids - LIDS Kernel Patch
kernel-patch-2.4-lids - LIDS Kernel Patch
kernel-source-2.2.20 - Linux kernel source for version 2.2.20
kernel-source-2.2.22 - Linux kernel source for version 2.2.22
kernel-source-2.4.10 - Linux kernel source for version 2.4.10
kernel-source-2.4.16 - Linux kernel source for version 2.4.16
kernel-source-2.4.17 - Linux kernel source for version 2.4.17
kernel-source-2.4.17-ia64 - Linux kernel source for version 2.4.17 on IA-64
kernel-source-2.4.18 - Linux kernel source for version 2.4.18
kernel-source-2.4.18-hppa - Linux kernel source for version 2.4.18 on HPPA
kernel-source-2.4.19 - Linux kernel source for version 2.4.19
kernel-source-2.4.19-hppa - Linux kernel source for version 2.4.19 on HPPA
kernel-source-2.4.19-ia64 - Linux kernel source for version 2.4.19 on IA-64
kernel-source-2.4.20 - Linux kernel source for version 2.4.20 with Debian patches
lidstools-2.2 - LIDS Admintool
lidstools-2.4 - LIDS Admintool
以 linux kernel 2.4.20 為例:
- 代碼: 選擇全部
root@debian[~]$ apt-get install kernel-source-2.4.20
這時候 debian 會下載 kernel source 到系統的:
- 代碼: 選擇全部
/usr/src/kernel-source-2.4.20.tar.bz2
解開 kernel source :
- 代碼: 選擇全部
root@debian[/usr/src]$ tar jxvf kernel-source-2.4.20.tar.bz2
搜尋 ck patch 的 package name:
- 代碼: 選擇全部
root@debian[/usr/src]$ apt-cache search kernel | grep patch | grep ck
dh-kpatches - Debhelper script to help packaging kernel patches
kernel-patch-2.2.20-ide - Andre Hedrick's IDE patch.
kernel-patch-ck - Con Kolivas' patch to improve system responsiveness
kernel-patch-irc - IRC connection tracking and NAT
kernel-patch-scripts - Scripts to help dealing with packaged kernel patches
kernel-patch-speakup - A screen review package for the Linux kernel
安裝 ck patch :
- 代碼: 選擇全部
root@debian[/usr/src]$ apt-get install kernel-patch-ck
進入 kernel source 位置:
- 代碼: 選擇全部
root@debian[/usr/src]$ cd /usr/src/kernel-source-2.4.20
root@debian[/usr/src/kernel-source-2.4.20]$
運用 debian 指令 make-kpkg,先清除一下,確保是最乾淨的開始:
- 代碼: 選擇全部
root@debian[/usr/src/kernel-source-2.4.20]$ make-kpkg clean
指定您新編 kernel 名稱,以 foo 為例、指定 kernel 選項選擇方式,這裡我們以最好用的 menuconfig 為例,指定所要加入的 patch ,我們以 『 ck 、,aa,preempt,read_latency,tune,varhz』 為例:
- 代碼: 選擇全部
root@debian[/usr/src/kernel-source-2.4.20]$ make-kpkg --added-patches=ck,aa,preempt,read_latency,tune,varhz --revision foo.1 --config=menuconfig
這時候 make-kpkg 開始自動幫助您完成 patch ( 如果有 patch 間有衝突, debian 會想辦法解決,真神奇! ),如果 patch 過程都 Okay 的話會出現 menuconfig 的畫面,kernel 的選項就完全 依照個人機器而定 ,要讓 ck patch 生效記得把如下面幾張圖片反藍處所示選項加入:
<img src="http://chuany.net/albums/album09/abc.sized.png">
<img src="http://chuany.net/albums/album09/abd.sized.png">
<img src="http://chuany.net/albums/album09/abe.sized.png">
<img src="http://chuany.net/albums/album09/abf.sized.png">
其他選項就依照您自己的需求嚕,選好了之後就離開並存檔選項。
編譯好 kernel 之後,下底下參數製作 kernel-image 和kernel-header 的 deb 檔:
- 代碼: 選擇全部
root@debian[/usr/src/kernel-source-2.4.20]$ make-kpkg binary-arch
如果還想編譯出含 source 和 doc 的 deb ,可下底下參數:
- 代碼: 選擇全部
root@debian[/usr/src/kernel-source-2.4.20]$ make-kpkg
binary
完成後您就可以在 /usr/src/ 發現幾個 deb 檔案囉:
- 代碼: 選擇全部
root@debian[/usr/src/kernel-source-2.4.20]$ ls /usr/src/*.deb
/usr/src/kernel-headers-2.4.20_foo.1_i386.deb
/usr/src/kernel-image-2.4.20_foo.1_i386.deb
安裝新的 kernel image 檔:
- 代碼: 選擇全部
root@debian[/usr/src/kernel-source-2.4.20]$ dpkg -i /usr/src/kernel-image-2.4.20_foo.1_i386.deb
安裝好了以後就重新開機測試看看囉..
注意事項:
如果發現無法開機,或是不正常狀況可以重複底下步驟,重新選擇 kernel 選項:
root@debian[/usr/src/kernel-source-2.4.20]$ make-kpkg clean;make-kpkg --revision foo.1 --config=menuconfig;make-kpkg binary-arch
報告完畢!下台一鞠躬..