[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一页 ]


Debian Reference
第 7 章 - Debian 下的 Linux 内核


Debian 使用自己的方法来编译内核及相关模块。参阅 Debian 和系统内核, 第 2.7 节


7.1 内核编译

Debian unstable 发行版中的 gccbinutilsmodule-init-tools 可用来编译最新的 Linux 内核。这方面的官方信息,参阅 file:///usr/share/doc/kernel-package/README.gz,特别是文件的后半部分。

内核编译是个很困难的议题,由于目标在不断的变化,即使是最受人尊敬的开发者也会有不同的见解:

Manoj Srivastava 写到:

--initrd 需要 Debian 专用 cramfs 补丁。

Herbert Xu 写到:

不,它不需要,想使用除 CRAMFS 以外的文件系统只需在 /etc/mkinitrd/mkinitrd.conf 中设置 MKIMAGE。

按照 Manoj 和 Kent 撰写的 file:///usr/share/doc/kernel-package/README.gz 以及 http://kernel-handbook.alioth.debian.org/ 的指导小心行事,如果要编译最新版本的内核请确认安装了最新 unstable 版 kernel-package 软件包。

对于单机内核编译,initrd 不是必须的。我用它是希望我新编译的内核与相应的内核镜像一模一样。如果使用 initrd,请先阅读一下 mkinitrd(8)mkinitrd.conf(5)


7.1.1 内核头文件

绝大多数“普通”程序不需要内核头文件,事实上如果直接引用它们会出错。这些程序应该引用那些编译 glibc 所用的头文件,它们位于 Debian 系统的 /usr/include/linux/usr/include/asm 目录下。

故不要在 /usr/src/linux 目录中创建指向 /usr/include/linux/usr/include/asm 的链接,一些过时的文档曾建议创建它们。

如果某些内核类应用程序需要特定的内核头文件,可修改 Makefile(s),使其包含指向“特定内核头文件目录/include/linux”和“特定内核头文件目录/include/asm”的路径。


7.2 通过 proc 文件系统调整内核

Linux 内核行为可以在运行状态下通过 proc 文件系统进行调节。

有关在 /proc 文件系统下修改内核参数的基础知识,可参阅 Linux 源码包中的 Documentation/sysctl/* 文件。

调整内核参数的例子,可参考 /etc/init.d/networking无法访问某些站点的怪问题, 第 3.8.5 节

参阅 sysctl.conf(5) 了解如何使用 /proc 文件系统和脚本 /etc/init.d/procps.sh 来设置内核开机时的配置。此脚本由 /etc/rcS.d/S30procps.sh 执行。


7.2.1 打开了太多文件

Linux 内核有时会报告“Too many open files”,起因是 file-max 默认值(8096)太小。要解决这个问题,可以 root 身份执行下列命令:(或将它们加入/etc/rcS.d/*下的 init 脚本。)

     # echo "65536"  > /proc/sys/fs/file-max  # 适用于 2.2 和 2.4 版内核
     # echo "131072" > /proc/sys/fs/inode-max # 仅适用于 2.2 版内核

或将下列内容放入 /etc/sysctl.conf,做永久性的更改:

     file-max=65536   # 适用于 2.2 和 2.4 版内核
     inode-max=131072 # 仅适用于 2.2 版内核

7.2.2 磁盘缓存清除时间(Disk flush intervals)

可通过 proc 文件系统来修改磁盘缓存清除时间。下面的操作将默认的 5 秒时间间隔缩短到 1 秒。

     # echo "40 0 0 0 100 30000 60 0 0"  > /proc/sys/vm/bdflush

这可能对文件 I/O 性能产生一点儿负面影响。但它能保证文件内容是最近 1 秒的,比默认的 5 秒更短。对日志文件系统来说更是如此。


7.2.3 迟缓的小内存旧机器

对某些小内存的旧机器来说,在 proc 文件系统中打开内存的 over-commit 功能会很有效果:

     # echo 1 > /proc/sys/vm/overcommit_memory

7.3 2.6 版内核和 udev

udev 是取代 /dev/ 的动态设置的系统。我们可以选择很短的设备名字。而 2.4 版内核使用的 devfs 已经被淘汰。

安装 Debian 新版的 kernel-image-2.6.NNudev 就能启用这个功能。


[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一页 ]


Debian Reference

This translation is based on old version of Debian Reference (English, version 1.x), well before Sat, 26 Jan 2008.

Osamu Aoki osamu#at#debian.org
译者:
Hao "Lyoo" Liu iamlyoo#at#163.net
Ming Hua minghua#at#rice.edu
肖盛文 atzlinux#at#163.com
Haifeng Chen optical.dlz#at#gmail.com
解彦博 xieyanbo#at#gmail.com
easthero easthero#at#gmail.com
作者, 第 A.1 节