Debian下编译Linux内核

1.下载内核:2.6.8
查看可用内核
#apt-cache search kernel-source
下载内核
#apt-get install kernel-source-2.6.8
解压
#cd /usr/src
#tar -jxf kernel-source-2.6.8.tar.bz2

2.安装所需的软件包
#apt-get install kernel-package libncurses5-dev fakeroot build-essential

3.配置内核
#cd linux-source-2.6.8
#make menuconfig
这里可以参数配置内核,而如果对硬件参数不是很熟悉,我们可以使用现有的配置文件
Load an Alternate Configuration File->/boot/config-2.6.8-2-386
Save as .config
Exit

4.编译内核
#make-kpkg clean
#fakeroot make-kpkg –initrd –append-to-version=.070728 kernel-image
接下来提示关于initrd选项,是否abort[Ny],选择n
在Debian 编译内核,我们可以使用make-kpkg,这是一个可以自动替换”make dep;make clean;make bzImage;make modules”命令序列的脚本。而最其最常用的两个参数就是–append-to-version与–revision。
–append- to-version这个选项可以让我们来指定一个额外的内核版本,这个可以成为内核名的一问分。我们可以使用数字,”+”,”,”,但是不要使用下划线 “_”.比较常见的用法是我们可以当天的日期作为参数,从而来区分不同的内核。如我正在运行的内核版本号如下:

$uname -r
2.6.8.070728

这里我们要注意的是我们要避免设置–append-to-version为如”-686″,”-K7″,”-sparc”等值,因为这些值常为Debian的预编译内核所使用。
内核模块位于/lib/modules子目录下。每一个内核有他自己的子目录。每次当我们以一个新的名字来安装一个新的内核时,这个包安装程序就会在/lib/modules目录下创建一个新的子目录来保存他自己的模块。
这就意味着每一次我们使用–append-to-version的一个新的值来编译一个内核时,我们就可以保证这个内核有一个新的名字,而他的模块也不会与其他的内核模块相冲突。
注意:如果我们使用相同的名字来安装一个内核时,安装程序就会覆盖掉已安装的内核及其模块。
— revision只会影响Debian软件包本身的名字而不是内核的名字。与–append-to-version相似,我们只可以使用数,”+”, “.”,不要使用下划线”_”。如果我们并没有为–revision指定一个值,make-kpkg就会使用”10.00.Custom”.
使用不同的–revision的值就可以避免相同名字的内核之间的冲突。
Debian kernel-image文件的名字格式如下:    kernel-image-(kernel-version)(–append-to-version)_(–revision)_(architecture).deb

5.安装内核
经过一段时间的等待以后我们就会得到一个deb包,如:kernel-image-2.6.8.070728_10.00.Custom_i386.deb
#dpkg -i kernel-image-2.6.8.070728_10.00.Custom_i386.deb
如果是升级安装时也会提问是否继续安装,会在grub菜单中自动添加新内核的启动项

发表评论

邮箱地址不会被公开。