kernel 2.6.30 編譯問題

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

版主: mufa

kernel 2.6.30 編譯問題

文章gigigi » 週二 7月 21, 2009 12:11 am

代碼: 選擇全部
第一步 安裝必要的工具


首先要安裝必要的包。
包有:libncurses5-dev(menuconfig需要的)和essential
sudo apt-get install build-essential kernel-package
sudo apt-get install make
sudo apt-get install gcc
另外,查看系統是否有這樣的兩個命令
mkinitramfs mkisofs
這兩個工具在編譯內核時用來生成 *.img文件的。如果沒有就需安裝。

第二步 下載內核

到www.kernel.org下載新內核到/usr/src
我下載的是linux-2.6.24.tar.gz(原來的內核是2.6.20-15-generic)

第三步 編譯前的準備

察看當前內核的版本
helight@helight-desktop:/$ uname -a

Linux helight-desktop 2.6.20-15-generic #1 SMP Mon Aug 25 17:32:09 UTC 2008 i686 GNU/Linux

helight@helight-desktop:/$

 

建議最好下載比當前已安裝版本高的內核

解壓linux-2.6.24.tar.gz到linux-2.6.24
cd /usr/src

sudo tar zxvf linux-2.6.24.tar

cd linux-2.6.24/


第四步 開始編譯

cd /usr/src/linux-2.6.24 //以下所有的工作都在/usr/src/linux-2.6.24下完成
sudo make menuconfig  //用menuconfig的話還需要Ncurses,或者用
sudo make xconfig


sudo make menuconfig  //一般是用menuconfig

 

配置完以後保存(系統中保存的一份內核配置文件是在/usr/src/linux-2.6.24下名為.config,你也可以自己在別的地方另存一份)
也可以cp原來在/boot目錄下的config-2.6.xx 到當前目錄下,在make menuconfig是使用這個配置文件。
sudo make dep    //也許系統會提示現在不必要進行make dep,那就下一步 2.6.24的我編譯就沒有使用過。
sudo make clean //清除舊數據 ,新解壓的內核源碼就不需要這一步了

sudo make –j2 可以分兩個線程來進行編譯工作,不過我用make –j4 卻發現系統有9個make進程在工作。所以這個參數未必起作用。
sudo make bzImage //編譯內核,將保存到/usr/src/linux-2.6.24/arch/i386/boot/下
sudo make modules //編譯模塊
sudo make modules_install //安裝模塊
sudo mkinitramfs -o /boot/initrd-2.6.24.img 2.6.24

此時可能提示找不到這樣的一個文件夾「/lib/firmware/2.6.24」,你需要手工創建一個這樣的文件夾。

sudo mkdir /lib/firmware/2.6.24
sudo make install //安裝內核

安裝完後/boot下將增加以下幾個文件(用ls -l *24*查看)

helight@helight-desktop:/boot$ ls -l *24*

-rw-r–r– 1 root root    85203 2008-03-14 22:24 config-2.6.24

-rw-r–r– 1 root root    85203 2008-03-14 20:23 config-2.6.24.old

-rw-r–r– 1 root root 37968871 2008-03-15 08:31 initrd-2.6.24.img

-rw-r–r– 1 root root  4014080 2008-03-14 22:24 initrd.img-2.6.24

-rw-r–r– 1 root root   932315 2008-03-14 22:24 System.map-2.6.24

-rw-r–r– 1 root root   932315 2008-03-14 20:23 System.map-2.6.24.old

-rw-r–r– 1 root root  1858864 2008-03-14 22:24 vmlinuz-2.6.24

-rw-r–r– 1 root root  1858864 2008-03-14 20:23 vmlinuz-2.6.24.old

helight@helight-desktop:/boot$

給/boot/grub/menu.lst中添加一個新的啟動項,如我的menu.lst增加了如下一段文字

title            Ubuntu, kernel 2.6.24

root            (hd0,0)

kernel          /boot/vmlinuz-2.6.24root=UUID=d7e2cf74-ebf5-4c78-ac2c-9f85a9809eae ro

initrd          /boot/initrd-2.6.24.img


從新啟動即可。



我照上面步驟去編譯但出現重開出現下面圖片錯誤訊息

http://vega.cs.tku.edu.tw/~u92510889/2345.jpg

是不是 /boot/grub/menu.lst 有問題 ?



代碼: 選擇全部
title       Debian GNU/Linux, kernel 2.
6.30
root        (hd0,0)
kernel      /boot/vmlinuz-2.6.30 root=/dev/sda1 ro quiet
initrd      /boot/initrd.img-2.6.30




謝謝[/code]
gigigi
 

文章訪客 » 週二 7月 21, 2009 6:19 am

Did you do `make modules_install`?
訪客
 

文章wsun013 » 週二 7月 21, 2009 8:13 am

debian 有 make-kpkg , 試試看
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭

文章proms » 週二 7月 21, 2009 11:36 am

看起來像是以下兩個指令沒執行成功.

sudo make modules //編譯模塊
sudo make modules_install //安裝模塊
proms
 

文章訪客 » 週二 7月 21, 2009 3:20 pm

代碼: 選擇全部

[code]
1.安裝 kernel-package 及 libncurses5-dev , libncurses5 ,build-essential

2.到 www.kernel.org 下載 kernel sources

3.解壓縮 kernel﹐然後把 kernelSourcesTemp-version(解壓縮後的 kernel 目錄) 放到 /usr/src 裡﹐然後 cd /usr/src

4.sudo ln -s kernelSourcesTemp-version(上一步解壓縮出來的 kernel 目錄) linux //這一步是習慣﹐如果省略此步驟會如何...嗯 我也不清楚﹐我沒試過

5.cd linux(進入 softlink 後的目錄﹐或kernelSourcesTemp-version)

6.sudo make-kpkg clean ; sudo cp /boot/config-version-686 ./.config (先清理﹐後 copy﹐ copy 原來 debian 的設定檔﹐這樣就不用編得很辛苦﹐只要微調選項就好了)

7.sudo make menuconfig (嗯﹐開始微調吧~)

8.sudo(或是這裡用 fakeroot 也行) make-kpkg -rev ArchType(版好隨你喜好﹐我會改成 Athlon.1) --initrd kernel_image(編譯 kernel) modules_image(編譯額外的模組例如 nvidia﹐通常還會有模組自己的 source 目錄,如果你不需要的話﹐ modules_image 參數可以不用加進來)

9.等程序跑完﹐會在同一個目錄下發現 kernel.deb﹐最後在 dpkg -i kernel.deb 就好了

附上我的 kernel 版號︰
username@hostname:~$ uname -a
Linux hostname 2.6.30.1 #1 PREEMPT Sat Jul 4 00:32:55 CST 2009 i686 GNU/Linux
username@hostname:~$


[/code]


我看上面編譯過程好像比一般簡單
有兩個問題想請問



不過如果增加了新的module,可以直接 make menuconfig && make moduels && make modules_install,不需要全部重新來過

make menuconfig
make moduels 
make modules_install

不需要全部重新來過

1 . 如果用make-kpkg 指令可以只編譯 moduels  & modules_install嗎?


2. 下面參數是什麼作用
make-kpkg -rev  ArchType(版好隨你喜好﹐我會改成 Athlon.1)  --initrd kernel_image  modules_image

ArchType
--initrd kernel_image  modules_image





訪客
 

文章路燈甲 » 週二 7月 21, 2009 9:58 pm

2.6.30 不是已經有現成的 xxxx.deb 了嗎!還要自己 compile ?
http://debian.nctu.edu.tw/debian/pool/main/l/linux-2.6/
路燈甲
 


回到 debian misc

誰在線上

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