作者:阿锐
2.6内核的配置和编译(1)
本文以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
打开使用研发中、不完全的代码/驱动会让内核配置多出很多选项,由于我们需要使用一些正在研发中的功能,因此必需打开这一选项。
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
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表示编译器的默认方式。使用内存对齐能提高程式的运行速度,但是会增加程式对内存的使用量。
内核也是一组程式呀。可加载模块,
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
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




