转载:http://blog.chinaunix.net/index.php?blogId=224
本文以Gentoo的2.6.10-r6的内核为例,讲述了如何配置、编译2.6版本的内核。

本文以Gentoo的2.6.10-r6的内核为例,讲述了如何配置、编译2.6版本的内核。

首先对内核进行菜单配置,
# cd /usr/src/linux
# make menuconfig
进入图像界面的内核配置。

代码成熟度选项,
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
[*] Select only drivers expected to compile cleanly

打开使用研发中、不完全的代码/驱动会让内核配置多出很多选项,由于我们需要使用一些正在研发中的功能,因此必需打开这一选项。

2.6内核的配置和编译(2)
通用配置选项,
General setup --->
() Local version - append to kernel release
[*] Support for paging of anonymous memory (swap)
[*] System V IPC
[*] POSIX Message Queues
[*] BSD Process Accounting
[*] BSD Process Accounting version 3 file format
[*] Sysctl support
[ ] Auditing support
(15) Kernel log buffer size (16 => 64KB, 17 => 128KB)
[*] Support for hot-pluggable devices
[*] Kernel Userspace Events
[*] Kernel .config support
[*] Enable access to .config through /proc/config.gz
[*] Configure standard kernel features (for small systems) --->
--- Configure standard kernel features (for small systems)
[ ] Load all symbols for debugging/kksymoops
[*] Enable futex support
[*] Enable eventpoll support
[*] Optimize for size
[*] Use full shmem filesystem
(0) Function alignment
(0) Label alignment
(0) Loop alignment
(0) Jump alignment
Local version - append to kernel release:这里填入的是64字符以内的字符串,您在这里填上的字符口串能够用uname -a命令看到。

Support for paging of anonymous memory (swap):这是使用交换分区或交换文档来做为虚拟内存的,当然要选上了。

System V IPC:表示系统5的Inter Process Communication,他用于处理器在程式之间同步和交换信息,假如不选这项,很多程式运行不起来的。

POSIX Message Queues:这是POSIX的消息队列,他同样是一种IPC。建议您最好将他选上。

BSD Process Accounting:这是充许用户进程访问内核将账户信息写入文档中的。这通常被认为是个好主意,建议您最好将他选上。

Sysctl support:这个选项能不重新编译内核修改内核的某些参数和变量,假如您也选择了支持/proc,将能从/proc/sys存取能够影响内核的参数或变量。建议您最好将他选上。

Auditing support:审记支持,用于和内核的某些子模块同时工作,例如SELinux。只有选择此项及他的子项,才能调用有关审记的系统调用。

Kernel log buffer size:内核日志缓存的大小,12 => 4 KB,13 => 8 KB,14 => 16 KB单处理器,15 => 32 KB多处理器,16 => 64 KB for x86 NUMAQ or IA-64,17 => 128 KB for S/390。

Support for hot-pluggable devices:是否支持热插拔的选项,肯定要选上。不然USB、PCMCIA等这些设备都用不了。

Kernel Userspace Events:内核中分为系统区和用户区,这里系统区和用户区进行通讯的一种方式,选上。

Kernel .config support:将.config配置信息保存在内核中,选上他及他的子项使得其他用户能从/proc中得到内核的配置。还记得另一篇贴子我是如何取得引导光盘的内核配置信息,并在此基础上配置新的内核吗?

Configure standard kernel features (for small systems):这是为了编译某些特别的内核使用的,通常您能够不选择这一选项,您也不用对他下面的子项操心了。

Load all symbols for debugging/kksymoops:是否装载任何的调试符号表信息,假如您无需对内核调试,无需选择此项。

Enable futex support:不选这个内核不一定能正确的运行使用glibc的程式,当然要选上。

Enable eventpoll support:不选这个内核将不支持事件轮循的系统调用,最好选上。

Optimize for size:这个选项使gcc使用-Os的参数而不是-O2的参数来优化编译,以获得更小尺寸的内核,建议选上。

Use full shmem filesystem:除非您在很少的内存且不使用交换内存时,才不要选择这项。

后面的这四项都是在编译时内存中的对齐方式,0表示编译器的默认方式。使用内存对齐能提高程式的运行速度,但是会增加程式对内存的使用量。
内核也是一组程式呀。
2.6内核的配置和编译(3)

可加载模块,
Loadable module support --->
[*] Enable loadable module support
[*] Module unloading
[ ] Forced module unloading
[*] Module versioning support (EXPERIMENTAL)
[ ] Source checksum for all modules
[*] Automatic kernel module loading

Enable loadable module support,很多人喜欢将全部功能、硬件支持一股脑的编进内核,而不是使用模块的方式。这样做很不好(个人觉得)。其实我也做过嵌入式的研发,在针 对特定硬件的平台下尽可能将内核编小,将始终是支持模块加载的。例如我们研发的防火墙就是做为内核的模块被加载的。使用模块支持,您的系统能具备更好的可 扩充性。更有一个原因就是自己编写的功能模块、设备驱动模块(假设编写的质量不高)以模块方式工作引起Kernel Panic的机率要远远低于不支持模块全部编进内核的方式。讲了这么多,终于能够理直气壮的选上这一功能了。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!