kernel2.6.14-rc1-mm1編譯筆記(for debian package deb)

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

版主: mufa

kernel2.6.14-rc1-mm1編譯筆記(for debian package deb)

文章dbtsai » 週三 9月 21, 2005 10:31 pm

1. 安裝編譯相關軟體
code: apt-get build-dep linux-image-xxx
其中xxx可以從apt-catch search linux-image查到,隨便選一個就好了。



2. Download the kernel.

linux-stable stable kernel (from kernel.org)
linux-stable-mm stable -mm patch to the stable kernel (from kernel.org)
linux-stable-prepatch prepatch for the stable kernel (from kernel.org)
linux-stable-snapshot snapshot for the stable kernel (from kernel.org)

code: rsync -avz rsync.ppckernel.org::linux-stable-mm2 ./
或可以自己到www.kernel.org去抓,不過我是喜歡用rsync比較方便。



3. Set up the env-variable.

cflags:
code: export CFLAGS_KERNEL="-mcpu=7450 -O2 -pipe -fno-strict-aliasing -maltivec -mabi=altivec -mpowerpc-gfxopt"

code: export CXXFLAGS_KERNEL="${CFLAGS_KERNEL}"

(可以參考 http://gentoo-wiki.com/Safe_Cflags )
如此可以針對機器最佳化。在此的cflags是針對PowerPC G4,請不要使用,可以到
網站上查詢你的機器。


gcc:
code: export MAKEFLAGS="CC=gcc-3.4"
(因為gcc-4編kernel時,有些裝置會編不起來,所以建議強迫指定用gcc-3.4
當然有些人可以用gcc-4來編是因為他沒有用到相關裝置。)



4. Copy .config from /boot
從boot中拷最新的config檔當範例,然在再修改。



5.
code: make menuconfig
選你要的裝置與modules.
可以參考lsmod, more /proc/cpuinfo等等。



6. 開始編譯
code: make-kpkg clean
code: make-kpkg --initrd --revision=2.6.14-mm2-1 --append-to-version=ibookg4 kernel_image kernel_headers

其中append-to-version是你kernel的特殊套件名稱,你可以自己取啦,避免和
系統的不一樣,那樣同版次的modules才能共存。
而revision是指改版地幾次,如此在同一版次的kernel可以在從新編譯而dpkg系統會認為
是新的,如此升級才會順利唷。
而initrd可有可無,不過若不要的話,你要將fs modules編到kernel裡,而主流是要的。

7. 經過漫長的的等待,在上一個目錄就會生成兩個deb檔,
分別是


code: dpkg -i xxx.deb
code: dpkg -i xxx.deb

好了reboot,享受新的kernel吧。如果有問題,檢查一下lilo, GRUB, yaboot有沒有設對吧!
對了,以上2~6步驟要在root或者在fakeroot下執行唷。而最後當然是要root啦。

蔡東邦 Dung-Bang Tsai
dbtsai@gmail.com

2005/09/21 NCKU, Physics

轉載請把作者附上去吧,並且不要改動文章。
以免有人遇到問題不知道找誰負責^_^
並且歡迎轉寄唷,只要對你學習有幫助的話。
有何建議與錯誤也請E-mail給我唷。我會虛心接受指教的。
dbtsai
可愛的小學生
可愛的小學生
 
文章: 13
註冊時間: 週六 7月 09, 2005 9:44 pm

文章Nephom » 週四 9月 22, 2005 3:00 pm

請問前輩

關於您的

6. 開始編譯
code: make-kpkg clean
code: make-kpkg --initrd --revision=2.6.14-mm2-1 --append-to-version=ibookg4 kernel_image kernel_headers

這一個部分
我的Debian找不到make-kpkg這東西怎麼辦@@

我是剛從Mandrake跳槽的到Debian的新手XD[/img]
Nephom
可愛的小學生
可愛的小學生
 
文章: 6
註冊時間: 週一 9月 19, 2005 8:53 pm

文章訪客 » 週四 9月 22, 2005 11:36 pm

請問一下
1.
make-kpkg --initrd --revision=2.6.14-mm2-1 --append-to-version=ibookg4 kernel_image
假如沒加--initrd有差嗎??
2.
那有的網路,有說下面這些,這又為什麼??
cd /boot/
mkinitrd -o /boot/initrd.img-2.6.8.1 2.6.8.1
3.
Set up the env-variable
我的是turion64沒有看到,那我不設,有差嗎??
4.
我是新手,我之前編3次,都沒error,可是reboot,都開機開到一半就停住了,好灰心,是.config,沒設好嗎??我是用舊的config(安裝debian時的),我只用vi加CONFIG_SND_DEBUG=用gcc-3.4 用gcc-3.4 y,請問可以用vi來改.config嗎??
5.還是像你說的要用gcc-3.4去編,因為gcc-4編kernel時,有些裝置會編不起來,是指編時會初現ERROR,而中斷嗎??(我沒出現中斷)

你回答我這些疑問嗎,3Q!!
訪客
 

文章訪客 » 週四 9月 22, 2005 11:51 pm

1. 有加自動會在安裝kernel-image.deb 時(或編譯時)產生 initrd.img-2.6.8.1 這種東東,所以如果原來有用到就加吧,不然每次裝完 kernel-image.deb 都要手動執行mkinitrd -o /boot/initrd.img-2.6.8.1 2.6.8.1
訪客
 

文章mythfish » 週一 10月 24, 2005 8:56 am

有没人在debian-amd64平台下编译过2.6.12版的内核,我编译时是出错,先是processor.h里面的一个定义错误,后来修改过来,再编译出现:
arch/x86_64/kernel/entry.S: Assembler messages:
arch/x86_64/kernel/entry.S:81: Error: Macro with this name was already defined
arch/x86_64/kernel/entry.S:100: Error: Macro with this name was already defined
make[1]: *** [arch/x86_64/kernel/entry.o] 错误 1
make: *** [arch/x86_64/kernel] 错误 2

有那位大哥有出现过同样的问题吗?
是怎么回事?
mythfish
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週六 10月 22, 2005 2:30 am


回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客