+ -
当前位置:首页 → 问答吧 → 摩托学园---编译内核

摩托学园---编译内核

时间:2003-09-01

来源:互联网

首先,先確定好系統已經安裝好下列的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?K不一樣,請先注意此點,會在後面做解釋。

接下?恚P者所寫的指令完成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,主要是用?砗喕幾gkernel的步驟,執行make-kpkg clean相當於make mrproer的動作。
步驟四:在這個指令中,會發現筆者使用了兩個參數,--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,?K用dpkg -i?戆惭b編譯好的kernel。

再?眚炞C一次剛剛的地方。
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的方法,很簡單吧。^_^...
原址:http://moto.debian.org.tw/viewtopic.php?t=1760

我用他的方法,前面都没有出错.到了第5步
make-kpkg binary-arch
就出错了.
可惜错误信息我都没有给记下来.
而在没有做make-kpkg binary-arch的时候,而把前面的第4步改成
make-kpkg --append-to-version=custom1 kernel_image还是可以生成kernel-image-***.deb文件的.而且安装也很正常.所以建议大家多多常识.

做成deb包的好处就是以后方便点.

作者: hoby   发布时间: 2003-09-01

希望大家也用他的方法试试看.看结果是不是有错误好吗?

作者: hoby   发布时间: 2003-09-01

你试试把你的3-5步合为一步:
3) make-kpkg kernel_image

这步完成后:
4) cd .. (到上一层目录)
5) dpkg -i kernel-image-2.4.20_10.00.Custom_i386.deb(这个就是刚才编译并打包好的你的新内核)
6) lilo (这个命令最好运行一下,以防万一)
7) reboot (重起后,选择linux,Linux_OLD是你以前的内核的启动选项)

我是一直这么用,没有碰到特别的问题。

祝你好运。

作者: 听峰   发布时间: 2003-09-01

是的,这个文件是可以产生,那以后呢!

假设你要安装nvidia驱动的时候呢!你不可能是在去下载kernel_headers-version.deb吧!因为他们编译器不一样啊!我之所以不直接下载kernel_image*.deb安装也就是编译器gcc的关系.
所以我们一定还要让系统在产生一个kernel_headers-version.deb文件啊!
而在这篇文章里面他用make-kpkg binary-arch的目的也就是生成那两个文件啊!


大家看他的意思是不是说一定要先把自己的系统先升级到你要编译的内核,然后在来下载source包,在包呢!

作者: hoby   发布时间: 2003-09-01

注销,无用

作者: hoby   发布时间: 2003-09-02

错误信息是:
/usr/bin/make -f /usr/share/kernel-package/rules real_stamp_image

make[1]:Entering directory '/usr/src/kernel-source-2.4.21'

The changelog Says we are creating 2.4.21.030901,but i thought the version is 2.4.21

make[1]:***[real_stamp_image] Error1

make[1]:Leaving directory '/usr/src/kernel-source-2.4.21'

make:***[kernel-image-deb] Error2


麻烦大家帮帮忙吧!好吗?拜托.这个问题已经两天了.我也编译了很多次,但就是

失败.

我也怕是我的 version弄错了,但我感觉没有啊!用[阿信里面说的那个我就是把里面2.4.20改成2.4.21其他都没有改变的输,也发生了同样的事情...


下面是rules文件
上传的附件
rules.rar (13.6 KB, 204 次查看)

作者: hoby   发布时间: 2003-09-02

请大家用另存为方式下载rules文件

作者: hoby   发布时间: 2003-09-02

你如果要编译nforce 那么debian的精华帖中有nforce2主板安装的详细过程,你看看吧。搜一下。

作者: 听峰   发布时间: 2003-09-02

不是啊!你知道的.

如果你要编译其他摸块进入kernel的话,那是不是需要一个kernel-headers-version.deb文件呢!

假设你是用apt-get升级到2.4.21的话.那当你要安装nvidia显卡驱动的话,那是不是还是需要下载一个kernel-headers-version.deb文件呢!同样这个文件的编译器也是和你在用apt-get安装kernel-image的一样都是gcc version=2.95.

而我现在选择了自己安装,gcc version=3.2.那我编译出来的kernel-image-version.deb的编译器也就是3.2了吧!而相应的.你要的kernel-headers-version.deb的编译器也应该要是用3.2的.这样才正常吧!而现在我们生不成kernel-headers-version.deb,那你要安装其他部件的时候,你要怎么办呢!

作者: hoby   发布时间: 2003-09-02

那你就生成一个kernel-header的deb包,不就成了...

作者: carlos   发布时间: 2003-09-03

那命令是make-kpkg kernel_headers吗????

作者: hoby   发布时间: 2003-09-03

vi /usr/share/doc/kernel-package/README.gz

作者: carlos   发布时间: 2003-09-03

十分感谢.

作者: hoby   发布时间: 2003-09-03

在我的使用过程中从来不下载什么header的包,我只下载kernel-source包。编译包,安装kernel-image,使用新的kernel,在/usr/src中添加那些驱动,然后在/usr/src下编译这些驱动,安装驱动。
我不习惯下载其他header包,至于你的编译器问题吗,我是直接升级到debian testing时debian自己更新到的gcc 3.3.1,用它在2.4.18的内核环境下编译我的2.4.20内核(没有任何问题),进入2.4.20的内核后,我用它编译我的驱动,一切都这么简单。
对了。我用的内核也是从debian的testing版中apt-get的不是其他地方的通用内核。

作者: 听峰   发布时间: 2003-09-03

不想自己编译内核的兄弟,当然就得下载header包啦
通用的2.4.x内核用gcc 3.3编译会出错

作者: carlos   发布时间: 2003-09-03

我真的没有出现什么错误啊!
我就是用3.3的.

其实个人感觉还是自己编译的话,以后方便嘛!

用carlos教的方法,我已经成功的做出kernel-image-version.deb和kernel-headers-version.deb文件了.

作者: hoby   发布时间: 2003-09-03

热门下载

更多