编译定制的内核有好处也有坏处。但是,作为新手的linux用户或管理员发现编译Linux内核有一定困难。其实编译内核几乎不需要理解什么,只是简单的敲一组命令。这个教程一步一步地涵盖了在Debian GNU Linux下一步一步编译Linux2.6.xx内核的过程。不过,对于其他的发行版本命令也是一样的。

获得最新的linux内核源码

访问 ,下载最新的内核源代码。 文件名形如linux-x.y.z.tar.bz2,这里x.y.z是实际的版本号。例如文件linux-2.6.25.tar.bz2 代表 2.6.25的内核版本。可以用wget命令来下载内核的源代码。

1
2
$ cd /tmp
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-x.y.z.tar.bz2

提示:用实际的版本好来替换x,y,z。

提取bz2(bz3)文件

键入如下命令:

1
2
# tar -xjvf linux-2.6.25.tar.bz2 -C /usr/src
# cd /usr/src

配置内核

在你配置内核之前,确保你系统中装有开发环境(gcc编译器和相关的工具)。如果gcc编译器和工具没有安装,那么在Debian Linux系统中可以用apt-get命令来安装。(novego:其他系统中gcc的安装方法可以在网上搜索到)

1
# apt-get install gcc

现在你就可以用下述命令中的一个来配置内核: make config - 会一条一条的进行配置 make menuconfig - 基于文本的配置工具。(novego:需要ncurses(ncurses-devel)的支持。) make xconfig - 基于x window(qt)的配置工具,在KDE桌面下工作最为合适 make gconfig - 基于x window(gtk)的配置工具, 在Gnome桌面下工作最为合适

例如如下的命令将启动基于文本的配置工具

1
$ make menuconfig

你需要根据你自己的需求来选择不同的选项(novego:例如如果没有scsi设备就可以在编译时去掉scsi模块)。每一个选项都有help按钮可以获取帮助信息。

编译内核

开始编译内核并创建一个压缩的内核镜像,输入:

1
$ make

开始编译内核模块:

1
$ make modules

安装内核模块(需要root权限,使用用su命令):

1
2
$ su -
$ make modules_install

安装内核

到目前为止我们已经编译了内核并安装了内核模块,是时侯要安装内核自身了。

1
$ make install

上述的命令会安装三个文件到/boot目录下,同时也会修改你的grub配置文件(menu.lst) System.map-2.6.25 config-2.6.25 vmlinuz-2.6.25

创建initrd镜像

在Shell提示符下敲入以下的命令:

1
2
$ cd /boot
$ mkinitrd -o initrd.img-2.6.25 2.6.25

initrd镜像包含设备驱动,这些是以后载入操作系统其他部分所需要的。并不是所有的电脑都需要initrd,但创建一个更安全。

修改grub配置文件

/boot/grub/menu.lst,用vi打开文件

1
$ vi /boot/grub/menu.lst

添加以下的内容:

1
2
3
4
5
6
title           Debian GNU/Linux, kernel 2.6.25 Default
root            (hd0,0)
kernel          /boot/vmlinuz root=/dev/hdb1 ro
initrd          /boot/initrd.img-2.6.25
savedefault
boot

记住去设置好root=/dev/hdxx设备。保存并关闭文件。如果你你觉得手工编辑和敲入这些行太麻烦了,试试update-grub命令来更新menu.lst文件。只用敲入以下命令:

1
$ update-grub

重启电脑进入新的内核

重启就可以了

1
$ reboot

写在后面:此文为译文,英文原文连接为 http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html