[分享]Debian Linux的核心處理

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

[分享]Debian Linux的核心處理

文章阿信 » 週一 7月 14, 2003 4:17 pm

前言:此篇不算是一個news,只是對Debian對kernel的處理整理,文章理的步驟大家都很清楚了,所以改以介紹觀念為主,另外一方面,也是請大家幫忙Debug內容

** Using APT
經過前面的apt指令介紹,應該對Debian安裝軟體的方式有所了解了,而本章節是要介紹如果透過apt來生及系統的kernel。

筆者的PC是P4的機器,所以要升級的套件名稱是kernel-image-2.4.20-686,然後請開一個terminal,執行

apt-get install kernel-image-2.4.20-686
圖檔
可以看到圖中有詢問到是否要停止安裝,這是因為Debian official package tree所附的kernel-image是有使用initrd.img,所以在update kernel-image的時候會有此警告,要避免此訊息可以在/etc/kernel-img.conf中加入:
do_initrd = Yes

grub的使用者請修改/boot/grub/menu.lst

title Debian GNU/Linux, kernel 2.4.20-686
root (hd0,1)
kernel /vmlinuz-2.4.20-686 root=/dev/hda7 ro
initrd /initrd.img-2.4.20-686 savedefault
boot

然後請重跑:grub-install /dev/hda

重開機之後,選用新的kernel,這樣就算是完整的使用APT升級Kernel的方法了。

** Building Kernel
編譯核心!!!

這個動作對於新手是相當害怕且興奮的事情,害怕的是因為在Kernel選單中有太多東西不認識了,且不清楚該怎麼選擇才是正確的,在這一節中,我們不詳細解釋Kernel選單中的意思,重點擺在如何利用Debian中的技巧來快速編譯自己的核心。

首先,先確定好系統已經安裝好下列的package。

1. libncurses5-dev
2. kernel-package
3. kernel-source-2.4.20
4. 目前所使用的kernel的config檔案,位置放在/boot/下面,檔名以config-xx.xx.xx

然後切換到/usr/src下,會發現有一個kernel-source-2.4.20.tar.bz2,注意:此檔案已經是Debian patch過後的,跟http://www.kernel.org/所放的kernel-source並不一樣,請先注意此點,會在後面做解釋。

接下來,跟著筆者所寫的指令完成kernel building的動作。

1. tar -jxf kernel-source-2.4.20.tar.bz2
2. cd kernel-source-2.4.20
3. make-kpkg clean
4. make-kpkg --revision 2.4.20.custom-1 --append-to-version -custom --config menuconfig
5. make-kpkg binary-arch


步驟一:當然是解開kernel-source的壓縮檔摟。
步驟二:切換到以解開的kernel-source目錄下。
步驟三:make-kpkg是Debian自己實作的tool,主要是用來簡化編譯kernel的步驟,執行make-kpkg clean相當於make distclean(請參照 kernel source 中的 Makefile)的動作。
步驟四:在這個指令中,會發現筆者使用了兩個參數,--revision,--append-to-version,後面又加入了一些奇怪的數字,這到底是什麼意思呢,讓筆者好好的解釋一下吧。

--revision這個參數會影響到此deb的Version。
這樣講似乎有點模糊,可以先看一下kernel-image-2.4.20-686的例子。

dpkg -l kernel-image-2.4.20-686

||/ Name Version Description
+++-=================================-=================================-=======================================================
ii kernel-image-2.4.20-686 2.4.20-5 Linux kernel image 2.4.20 on PPro/Celeron/PII/PIII/PIV.

在這個例子中,Version對應的就是-revision所產生的編號,-append-to-version會在安裝好核心的時候驗證,繼續往下看。

步驟五:binary-arch會產生kernel-image.deb和kernel-headers.deb,並用dpkg -i來安裝編譯好的kernel。

再來驗證一次剛剛的地方。
dpkg -l kernel-image-2.4.20*

||/ Name Version Description
+++-=================================-=================================-=======================================================
ii kernel-image-2.4.20-custom 2.4.20.custom-1 Linux kernel image 2.4.20 on PPro/Celeron/PII/PIII/PIV.

可以看出變化嗎?以上就是在Debian上自行編譯kernel的方法,很簡單吧。^_^...

** Patching Kernel

Patch Kernel!! 為什麼要patch kernel呢?用好好的還需要更換嗎?
是的,使用正常的核心基本上是不建議更換,除非是臭蟲修正或是新的功能要求為主。

以下筆者以2.4.20的kernel且加入preempt和low latency的功能來實現patch的步驟。

Package:

1. kernel-source-2.4.20
2. kernel-patch-2.4-preempt
3. kernel-patch-lowlatency-2.4

以上這些package皆可以用apt-get install安裝。 ok,萬事具備,請跟著筆者的動作一步一步完成patch kernel的動作。

1. tar -jxf kernel-source-2.4.20.tar.bz2
2. cd kernel-source-2.4.20
3. make-kpkg clean
4. make-kpkg --revision 2.4.20.custom-2 --add-patches=lowlatency,preempt --config menuconfig
5. make-kpkg binary-arch

看到這裡,是否覺得被筆者騙了呢?...:-)

patch的步驟只差在第四步中的--add-patches而已,後面所填的是所要修正的patch name,可以在/usr/src/kernel-patch/all/apply中的目錄找到,想要增加patch的file請用','分開,接下來就跟前一節手動編譯核心的動作一樣了。

** 我還是不懂-revision的意思,能告訴我好處在那嗎?
-revision的作用最主要是要建立此kernel的版本數字,比如-revision 2.4.20,這表示編譯好的deb檔案,它在dpkg的資料庫中的version是2.4.20。

舉個例子來說,Debian的package tree中有2.4.20-1,2.4.20-2的kernel-image,以上兩者皆為2.4.20的版本,而後面用-(dash)連結的數字表示此2.4.20的第幾個release。

也就是說原本2.4.20的kernel image釋出之後,該維護者會利用-revision 2.4.20-1,這樣的方式來編譯新的kernel,往後如果維護者要釋出修正版,就可以改成-revision 2.4.20-2,最大的好處在於可以簡易的用apt的方式直接升級到下一個release。

最重要的一點,使用 APT 升級 kernel 之後,切記一定要馬上重新開機載入修正好的 kernel,以免系統出現當機的現象

以上三節介紹了在Debian上安裝,編譯,修訂核心的辦法,很炫吧,使用Debian就是如此神奇與方便呢。
最後由 阿信 於 週四 1月 08, 2004 7:19 pm 編輯,總共編輯了 3 次。
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

re:[分享]Debian Linux的核心處理

文章moto » 週一 7月 14, 2003 5:47 pm

讚...非常精采的介紹....水喔... :finger1:
歡迎你來到MOTO學園一起討論Debian相關問題。
在post問題前可先別忘記了以下的步驟:
1:翻一下/usr/share/doc/中是否已經有解答了?
2:閱讀一下無痛起步是否已經提到了?
3:找一下google予以解答?
4:善用學園中的"搜尋"功能,往往答案就在裡面窩。
頭像
moto
摩托學園站長
摩托學園站長
 
文章: 2808
註冊時間: 週二 9月 03, 2002 3:37 am
來自: 台北

re:[分享]Debian Linux的核心處理

文章ronychen » 週一 7月 14, 2003 6:25 pm

Excellent tutorial
--
補充一下: 有要作 initrd.img的話, 下參數 --initrd
--
用make-kpkg 的好處是,他會把 .config<version> , vmlinuz<version>
等copy到 /boot 去.而且簡化了make xconfig, make dep, make clean, make modules,make modules_install 的步驟.
Beer is proof that God loves us and wants us to be happy. -- Benjamin Franklin
ronychen
可愛的小學生
可愛的小學生
 
文章: 13
註冊時間: 週三 1月 01, 2003 3:04 pm
來自: 中和

re:[分享]Debian Linux的核心處理

文章阿信 » 週一 7月 14, 2003 8:01 pm

:shock: :shock: :shock: ...糟糕,感謝ronychen兄提醒...

小弟真的忘記了,--initrd還要另外設定mkinitrd.conf的細項...竟然給忘記了,真是該打屁股。

沒關係,至少我把觀念講清楚了...還算有一點點苦勞... :-D
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

re:[分享]Debian Linux的核心處理

文章~傲天~ » 週日 8月 17, 2003 7:51 pm

小弟根據阿信大大的方法, 已經成功 patch 了 preempt 及 lowlatency 入自己的 kernel. Thanks ~~!! :finger1:

但想問問阿信大大, 如何可以確認運作中的 kernel 已經有 lowlatency 這個 function 呢 ??
;-)
~傲天~
可愛的小學生
可愛的小學生
 
文章: 16
註冊時間: 週日 9月 15, 2002 11:46 pm
來自: 悠閒小行星

re:[分享]Debian Linux的核心處理

文章阿信 » 週日 8月 17, 2003 9:06 pm

~傲天~ 寫:小弟根據阿信大大的方法, 已經成功 patch 了 preempt 及 lowlatency 入自己的 kernel. Thanks ~~!! :finger1:

但想問問阿信大大, 如何可以確認運作中的 kernel 已經有 lowlatency 這個 function 呢 ??
;-)


lowlatency通常是enable in kernel裡面,如果是編譯成modulek話到可以在/proc/中找到lowlatency的地方(實際檔名是什麼我已經忘記了...:-P ) ,還請傲天兄找一下呢。

如果是編譯成kernel的話,應該就已經正常enable lowlatency了,只是...

小弟覺得lowlatency效能改變不高... :-) ,kernel-2.6比較快... :mygod:
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

re:[分享]Debian Linux的核心處理

文章209088970 » 週日 8月 17, 2003 10:37 pm

阿信 寫:
~傲天~ 寫:小弟根據阿信大大的方法, 已經成功 patch 了 preempt 及 lowlatency 入自己的 kernel. Thanks ~~!! :finger1:

但想問問阿信大大, 如何可以確認運作中的 kernel 已經有 lowlatency 這個 function 呢 ??
;-)


lowlatency通常是enable in kernel裡面,如果是編譯成modulek話到可以在/proc/中找到lowlatency的地方(實際檔名是什麼我已經忘記了...:-P ) ,還請傲天兄找一下呢。

如果是編譯成kernel的話,應該就已經正常enable lowlatency了,只是...

小弟覺得lowlatency效能改變不高... :-) ,kernel-2.6比較快... :mygod:


小弟已經期待好久kernel2.6+reiser4了
.
圖檔
圖檔
頭像
209088970
活潑的高中生
活潑的高中生
 
文章: 352
註冊時間: 週日 5月 11, 2003 9:04 am

re:[分享]Debian Linux的核心處理

文章BBNS » 週日 8月 17, 2003 11:42 pm

要怎麼從reiserFS升到reiserFS4呀??
BBNS
懵懂的國中生
懵懂的國中生
 
文章: 156
註冊時間: 週六 2月 22, 2003 3:18 pm

re:[分享]Debian Linux的核心處理

文章209088970 » 週日 8月 17, 2003 11:46 pm

BBNS 寫:要怎麼從reiserFS升到reiserFS4呀??

重新格式化硬碟
並且換新核心(要支援reiser4的)
.
圖檔
圖檔
頭像
209088970
活潑的高中生
活潑的高中生
 
文章: 352
註冊時間: 週日 5月 11, 2003 9:04 am

re:[分享]Debian Linux的核心處理

文章BBNS » 週日 8月 17, 2003 11:48 pm

不 ~_~
裡面有news server耶 ... 偶要怎麼備份
---
沒有像ext2升到ext3的快速方法麼 :crying:
BBNS
懵懂的國中生
懵懂的國中生
 
文章: 156
註冊時間: 週六 2月 22, 2003 3:18 pm

re:[分享]Debian Linux的核心處理

文章阿信 » 週日 8月 17, 2003 11:49 pm

kernel-2.6之外,還要reiserfsprog也要是ver 4才可以

其實不用急...差異應該不會有double的感覺.... :-)
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

re:[分享]Debian Linux的核心處理

文章carlos » 週一 8月 18, 2003 3:04 am

why reiser4 at this stage???

I still remembered the famous unstability of reiserfs3 in its early age.
Soooooo many servers crashed on that. And totally unrecoverable. :(
頭像
carlos
活潑的高中生
活潑的高中生
 
文章: 307
註冊時間: 週五 4月 04, 2003 7:02 pm
來自: NZ

re:[分享]Debian Linux的核心處理

文章阿信 » 週一 8月 18, 2003 12:18 pm

BBNS 寫:不 ~_~
裡面有news server耶 ... 偶要怎麼備份
---
沒有像ext2升到ext3的快速方法麼 :crying:


cp吧... :-(
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

re:[分享]Debian Linux的核心處理

文章阿信 » 週一 8月 18, 2003 12:20 pm

carlos 寫:why reiser4 at this stage???

I still remembered the famous unstability of reiserfs3 in its early age.
Soooooo many servers crashed on that. And totally unrecoverable. :(


Me too...

以前reiserfs在弟的機器上也crash掉,痛過一次之後就有點不敢在用了...

reiserfs 4不知道穩定度夠不夠高,ACL是否還需要重新patch?
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

Re: [分享]Debian Linux的核心處理

文章yagiza » 週四 9月 04, 2003 2:20 am

阿信 寫:
舉個例子來說,Debian的package tree中有2.4.20-1,2.4.20-2的kernel-image,以上兩者皆為2.4.20的版本,而後面用-(dash)連結的數字表示此2.4.20的第幾個release。

也就是說原本2.4.20的kernel image釋出之後,該維護者會利用--revision 2.4.20-1,這樣的方式來編譯新的kernel,往後如果維護者要釋出修正版,就可以改成--revision 2.4.20-2,最大的好處在於可以簡易的用apt的方式直接升級到下一個release。


對了..不好意思問一下

我現在比較常用的是2.4.18-bf2.4
如果我用kernel-source-2.4.18
編出來的核心,或是modules..都是for 2.4.18
有沒有辦法for 2.4.18-bf2.4呢???

不然自己編出來的modules在insmod都有問題 :ooops:
yagiza
可愛的小學生
可愛的小學生
 
文章: 60
註冊時間: 週四 8月 07, 2003 11:40 pm

下一頁

回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:Google [Bot] 和 1 位訪客