“官方版”的内核 (www.kernel.org)往往针对大多数用户采用通用的配置,包含了许多不同的设备驱动程序和选项包,有些参数值也是为"通用目的"而默认设置. 研究这些配置,调整它们以适应自己系统的确切需要,就能精简内核大小,增强系统性能,安全性及可靠性.
你可以删除内核中不需要的device drivers, 也可以为增加对新设备的支持而添加新的device drivers. 添加设备驱动对初学者来说是个比较陌生的问题, 也是学习模块编程非常重要的一个方面——有的驱动是针对内核的补丁,要使用它必须重新编译内核; 有的是modules, 只需要加载它; 有的是施加适当修补的脚本.
配置Linux内核有4种基本方法:
动态调整Linux Kernel
为了提高内核的灵活性, 它提供了一些特诉的"挂钩"(hook), 用户通过hook动态调整内核参数. /proc 中的文件提供了"内核到用户"的接口, 通过/proc文件系统, 用户就能访问这些hook. ( /proc文件系统被称为 虚拟文件系统,因为它实际上根本不是一个文件系统. 它只是内核提供的一个映射, 被附加在通常的文件系统结构之上, 从而使您能够访问它.)
/proc/sys 中的特殊文件能够让你查看和设置内核在运行时的参数. 这些文件摹仿标准的Linux文件, 但它们实际上是进入内核的后门. 可以修改这些文件中包含的信息. 但并不是这其中所有的文件都可写(哪怕它们表面上有写权限). 对于这些文件那些可写, 哪些不可写, 也没有相关的参考文档.
例如, 可以通过下面的指令改变一个进程能够打开的文件最大数:
方便吧! 就利用这些"后门"接口更改内核配置, 你不需要重启系统.
使内核设置具有持久性
在系统重启后, 上面的设置会恢复到默认值. 要想让改动永久生效, 应该使用 /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.
要使设置具有持久性, 一定要手动更改 /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 目录下的专用设备文件来提供的设备的用户级访问. 内核把对这些特殊文件的操作转化为对驱动程序代码的调用.
这个内容比较多, 有空我另外写.
编译内核
看 这里.
你可以删除内核中不需要的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 |
方便吧! 就利用这些"后门"接口更改内核配置, 你不需要重启系统.
![006.gif](http://www.cublog.cn/images/face/006.gif)
注意这些"虚拟文件"的读/写方式: 不要使用编辑器来更改任何这些文件. 每当更改 /proc 文件系统中的任何内容时, 应该使用 echo 命令, 然后从命令行将输出重定向至 /proc 下所选定的文件中. 类似地, 如果希望查看 /proc 中的信息, 应该使用专门用于此用途的命令, 或者使用命令行下的 cat 命令. |
使内核设置具有持久性
在系统重启后, 上面的设置会恢复到默认值. 要想让改动永久生效, 应该使用 /etc/sysctl.conf 文件 ( /etc/sysctl.conf 文件默认是在系统引导时读取的, 它的内容用于设定参数的初始值.
实际上, 使用 sysctl(8)命令是更方便的选择 (注意: 并不是所有的发行版都提供了该命令! Debian/Ubuntu有
![030.gif](http://www.cublog.cn/images/face/030.gif)
由于 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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-600809/