标题: 全面解析Linux内核的主要配置 (查看:311 回复:2)
stellaitlab
学徒网管




UID 687611
精华 0
积分 8
帖子 56
MST币 212 点    
BST币 8 点    赚取
阅读权限 60
注册 2008-3-26
状态 离线
 
[ 使用道具 ]  
发表于 2008-3-31 10:30  [ 资料 ]  [ 博客 ]  [ 短消息 ]  [ 加为好友
爱琴思邮件系统iGENUS V5.0
全面解析Linux内核的主要配置
本帖发表在我是网管论坛,帖子地址:http://bbs.54master.com/240580,1,1
配置内核的命令是:

# make config 文本配置方式

# make menuconfig 菜单配置方式

# make xconfig 图形界面配置方式

我们可以采用任何一个命令配置内核,一般推荐使用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

  •   Automatically append version information to the version string

  •   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

  •   Support for hot-pluggable devices

  •   Kernel Userspace Events

  •   Kernel .config support

  •   Enable access to .config through /proc/config.gz

    ()   Initramfs source file(s)

  •   Configure standard kernel features (for small systems)  --->

             --- Configure standard kernel features (for small systems)

             [ ]   Load all symbols for debugging/kksymoops

             [ ]    Do an extra kallsyms pass

             [ ]    Enable support for prinlk

             [ ]    BUG()support

             [ ]   Enable full-sinzed data structures for core

             
  •    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。只有选择此项及它的子项,才能调用有关审记的系统调用。
    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的机率要远远低于不支持模块全部编进内核的方式。讲了这么多,终于可以理直气壮的选上这一功能了。


    Module unloading,不选这个功能,加载的模块就不能卸载。没什么需要多解释的,建议最好选上。
    Forced module unloading,这个选项能强行卸载模块,即使内核认为这样并不安全,也就是说你可以把正在使用中的模快卸载掉。如果你不是内核开发人员或者骨灰级的玩家,不要选择这个选项。


    Module versioning support (EXPERIMENTAL),这个功能可以让你使用其它版本的内核模块,由于我自己写一些模块,所以我会用到这个选项,因为内核更新太快了,我的头文件更新根本赶不上内核的更新。还有,虽然我在Gentoo下开发,但实际真实环境用的却是从kernel.org下载的内核。虽然我选择了这个选项,不过建议你不要选择这个选项。
    Source checksum for all modules,这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突。我估计现在没有哪家公司在开发中还没使用版本控制工具,所以不需要这项了。如果你不是自己写内核模块,那就更不需要这一选项了。
    Automatic kernel module loading,这个选项能让内核自动的加载部份模块,建议你最好选上。举个例子说明一下,如模块eth1394依赖于模块ieee1394。如果选择了这个选项,可以直接加载模块eth1394;如果没有选择这个选项,必需先加载模块ieee1394,再加载模块eth1394,否则将出错。
    四.总线支持配置
    Bus support --->

           PCCARD (PCMCIA/CardBus) support  --->

               [ ]  Enable PCCARD debugging

               [ ]  16-bit PCMCIA support (NEW)

               [ ]    Load CIS updates from userspace (EXPERIMENTAL)(NEW)

               [ ]    PCMCIA control ioctl (obsolete) (NEW)

               --- PC-card bridges
    PCCard (PCMCIA/CardBus) support,你的计算机是否支持PCMCIA卡   更多内容……

    [ 点这里复制网址,推荐给你QQ/MSN上的好友们! ]
    本站声明:以上内容由网友 stellaitlab 提供,与54master立场无关!
    [ 顶部 ]
    shijt
    学徒网管




    UID 700025
    精华 0
    积分 5
    帖子 431
    MST币 -1 点    
    BST币 5 点    赚取
    阅读权限 60
    注册 2008-4-9
    状态 离线
     
    [ 使用道具 ]  
    发表于 2008-4-10 00:50  [ 资料 ]  [ 博客 ]  [ 短消息 ]  [ 加为好友
    很不错顶!!!!!!!!!!!!!

    本站声明:以上内容由网友 shijt 提供,与54master立场无关!
    [ 顶部 ]
    lwtjob
    衰哥霉女




    UID 529181
    精华 0
    积分 -1
    帖子 131
    MST币 0 点    
    BST币 -1 点    赚取
    阅读权限 0
    注册 2007-6-11
    状态 离线
     
    [ 使用道具 ]  
    发表于 2008-4-10 11:38  [ 资料 ]  [ 博客 ]  [ 短消息 ]  [ 加为好友
    顶!!!!!!!!!!!!!!!!!!!!!!

    本站声明:以上内容由网友 lwtjob 提供,与54master立场无关!
    [ 顶部 ]
      
     



    当前时区 GMT+8, 现在时间是 2008-7-7 12:11

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
    Processed in 0.054170 second(s), 12 queries , Gzip enabled

    清除 Cookies - 关于我是网管 - 联系我是网管 - 广告服务 - 诚聘版主 - 无图版 - WAP -