配置内核

请先进入 /usr/src/linux 目录,并升级为 root

首先,教您一个小窍门:您能(如果您想的话)自定义您内核的版本号。内核版本号由 Makefile 的第一行决定:

$ head -4 Makefile
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 8
EXTRAVERSION = -1mdkcustom

Makefile 后面,您会发现内核版本号的组成是:

KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

您要做的就是更改这些域之一以定义您自己的版本号。最好您只改变 EXTRAVERSION。例如您将其改为 -foo。您的新内核版本就会是 2.6.8-foo。当您重新编译新内核的时候,请尽量更改这个域。这样,您就能在保留先前版本的情况下测试新的选项。

然后可以继续配置过程。您可以执行:

您可以浏览配置中的各个小节,不过当您使用 menuconfigxconfiggconfig 时,您可以直接跳到您感兴趣的部分。各条目的选项为:y 表示 (相应功能将直接编译进内核),m 表示 模块 (相应功能将编译为一个模块),以及 n 表示 (相应功能不会包含进内核)。

命令 make xconfigmake gconfigmake menuconfig 按照层次结构组织各个选项。比如,Processor family 就在 Processor type and features 之下。

xconfiggconfig 中,主菜单 按钮用以返回层次结构中的主菜单,下页 用进入下一组选项,上页 将返回上一组选项。而在 menuconfig 中,可用回车键选定某个小节并在选项状态 ymn 之间切换,或者按回车键并作出多重选择。要跳出某小节,请按 退出;如果您已经在主菜单中,它将退出配置。同时,还有 帮助 按钮。

鉴于选项数量众多,我们并不打算在此一一列举。而且,如果您已经看到这里了,那您就应该了解自己想干什么。因此,您可以按照自己的意愿浏览内核配置,并选定/取消任何合适的选项。不过,以下建议将避免您最终得出一个不能工作的内核:

  1. 除非您使用初始化 ramdisk (initrd),否则绝不要把挂载根文件系统必需的驱动程序(硬件驱动以及文件系统驱动)编译成模块!而如果您确实使用初始化 ramdisk,请为 ext2FS 支持选项选择 Y,因为 ramdisk 使用该文件系统。您还需要 initrd 支持。

  2. 如果您系统中有网卡,将它们的驱动编译成模块。这样,您就能够在 /etc/modules.conf 中用别名定义哪一块网卡第一,哪一块第二,等等。如果您将驱动程序编译进了内核,它们加载的顺序将取决于当初它们链接进内核的顺序,而这不一定是您想要的。

  3. 最后,如果您不清楚某个选项的含义,请阅读其帮助!而如果该帮助信息依然不能解决您的困惑,请保留该选项原来的样子。(在 configoldconfig 中可以按 ? 键访问帮助。)

配置最终结束后,请保存您的配置并退出。