ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 配置Linux内核的4种基本方法

配置Linux内核的4种基本方法

原创 Linux操作系统 作者:tolywang 时间:2009-05-22 11:01:24 0 删除 编辑
       “官方版”的内核 (www.kernel.org)往往针对大多数用户采用通用的配置,包含了许多不同的设备驱动程序和选项包,有些参数值也是为"通用目的"而默认设置. 研究这些配置,调整它们以适应自己系统的确切需要,就能精简内核大小,增强系统性能,安全性及可靠性.

       你可以删除内核中不需要的device drivers, 也可以为增加对新设备的支持而添加新的device drivers. 添加设备驱动对初学者来说是个比较陌生的问题, 也是学习模块编程非常重要的一个方面——有的驱动是针对内核的补丁,要使用它必须重新编译内核; 有的是modules, 只需要加载它; 有的是施加适当修补的脚本.

       配置Linux内核有4种基本方法:
  • 修改可调(动态)的内核配置参数
  • 把新的驱动程序和模块加入现用内核
  • 重新编译内核
  • 通过内核加载程序LILO或GRUB在引导时提供操作指令
       下面分别对这四种方法作出介绍

动态调整Linux Kernel


要想对内核参数动态调整, 编译时的"Sysctl support"必须选上! (即 SYSCTL[=y])
     

        为了提高内核的灵活性, 它提供了一些特诉的"挂钩"(hook), 用户通过hook动态调整内核参数. /proc 中的文件提供了"内核到用户"的接口, 通过/proc文件系统,  用户就能访问这些hook. ( /proc文件系统被称为虚拟文件系统,因为它实际上根本不是一个文件系统. 它只是内核提供的一个映射, 被附加在通常的文件系统结构之上, 从而使您能够访问它.)
      
        /proc/sys 中的特殊文件能够让你查看和设置内核在运行时的参数. 这些文件摹仿标准的Linux文件, 但它们实际上是进入内核的后门. 可以修改这些文件中包含的信息. 但并不是这其中所有的文件都可写(哪怕它们表面上有写权限). 对于这些文件那些可写, 哪些不可写, 也没有相关的参考文档.
      
        例如, 可以通过下面的指令改变一个进程能够打开的文件最大数:

# echo 32768 > /proc/sys/fs/file-max

        方便吧! 就利用这些"后门"接口更改内核配置, 你不需要重启系统.

注意这些"虚拟文件"的读/写方式: 不要使用编辑器来更改任何这些文件. 每当更改 /proc 文件系统中的任何内容时, 应该使用 echo 命令, 然后从命令行将输出重定向至 /proc 下所选定的文件中.
类似地, 如果希望查看 /proc 中的信息, 应该使用专门用于此用途的命令, 或者使用命令行下的 cat 命令.


使内核设置具有持久性

       在系统重启后, 上面的设置会恢复到默认值. 要想让改动永久生效, 应该使用 /etc/sysctl.conf 文件 ( /etc/sysctl.conf 文件默认是在系统引导时读取的, 它的内容用于设定参数的初始值.
      
       实际上, 使用 sysctl(8)命令是更方便的选择 (注意: 并不是所有的发行版都提供了该命令! Debian/Ubuntu有). sysctl 的配置文件是 /etc/sysctl.conf ,可以编辑该文件,并在 sysctl.conf(8) 下记录了该文件。 sysctl/proc/sys 下的文件视为可以更改的单个变量. 所以, 以 /proc/sys 下的文件 /proc/sys/fs/file-max 为例, 它表示系统中所允许的文件句柄的最大数目, 这个文件被表示成 fs.file-max.
    
  
由于 sysctl 只能更改 /proc/sys 目录下的变量, 并且人们始终认为变量是在这个目录下, 因此省略了变量名的那一部分(/proc/sys). 另外, sysctl将目录分隔符(正斜杠 /)换成了英文中的句号(点 .)
       
        要使设置具有持久性, 一定要手动更改 /etc/sysctl.conf 文件 !

例: 改变一个进程能够打开的最大文件数, 将它设置为16348.

对应 /proc/sys/fs/file-max 文件:
    $ cat /proc/sys/fs/file-max
       50323
  
1)  # echo 16384 > /proc/sys/fs/file-max
2)  # sysctl -w fs.file-max="16384"

1)和2)是等效的!

3) 在 /etc/sysctl.conf 后加入: fs.file-max="16384"

            
        要想使重启后的更改仍然生效, 就必须使用3).
      
关于 /proc 的更多介绍, 可以参考我转载的另外一篇文章. 引自: http://www-128.ibm.com/developerworks/cn/linux/l-adfly/index.html


添加Linux设备驱动程序

       设备驱动程序是内核的组成部分, 它们不是用户进程. 但是, 既可以从内核内部, 也可以从用户空间访问一个驱动程序. 内核与设备驱动程序之间的关系类似于用户进程和内核之间的关系: 用户进程请求对设备操作 ---- 内核将这个请求翻译为设备驱动程序指令 ----- 驱动将该命令分解成比特位模式的序列, 提供给设备的控制寄存器.

       正如前面所讲, 可以从用户空间访问驱动程序. 类似于 /proc 虚拟文件系统. Linux提供了 /dev 目录下的专用设备文件来提供的设备的用户级访问. 内核把对这些特殊文件的操作转化为对驱动程序代码的调用.

       这个内容比较多, 有空我另外写.


编译内核

       看这里.
   

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-600809/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Too many open files
请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13334576