科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道详细解析 Linux内核的主要配置选项 (1)

详细解析 Linux内核的主要配置选项 (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在内核中包含了一些不成熟的代码和功能,如果我们想使用这些功能,想打开相关的配置选项,就必需打开这一选项。

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年10月18日

关键字: 选项 配置 内核 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

配置内核的命令是:

# 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,这个选项能强行卸载模块,即使内核认为这样并不安全,也就是说你可以把正在使用中的模快卸载掉。如果你不是内核开发人员或者骨灰级的玩家,不要选择这个选项。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章