kerneld mini-HOWTO( 二 )





--------------------------------------------------------------------------------


如何取得所需东西?
对 kerneld 的支援始於 1.3.57 版 。如果你正使用较旧的版本,你需要更新它才可用 kerneld 了 。所有主要的 Linux ftp 台都有核心的原程式码 。我建议你更新至最新版本的稳定核心,2.0,目前是嵌补等级 (patch level) 2.0.29 (译按:现时已是 2.0.35):

ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/linux-2.0.29.tar.gz
ftp://tsx-11.mit.edu/pub/linux/sources/system/v2.0/linux-2.0.29.tar.gz
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0/linux-2.0.29.tar.gz
使用者层面的监控程式包含在 modules-1.2.8 及更新的 modules-2.0 中 。它们一般会和核心源程式码在同一地点找到,而官方位置包括:

ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/modules-2.0.0.tar.gz
ftp://tsx-11.mit.edu/pub/linux/sources/sbin/modules-2.0.0.tar.gz
ftp://ftp.funet.fi/pub/Linux/tools/modules-2.0.0.tar.gz
注意:如果你想在 2.1 版的开发核心尝试载入模组,你必须用最新的 modutils-(不是 modules-) 。但请看 以下有关模组和 2.1 版核心部分的问题 。



--------------------------------------------------------------------------------


如何设定它?
首先要取得所需的东西:合用的核心部分及最新版的 modules-utilities 。之後你要安装 modules-utilities 。十分简单:只需把原程式码解压及执行 make install. 这样便会编译 genksysm, insmod, lsmod, modprobe, depmod, kerneld,及把它们安装到 /sbin 。我建议你加数行到你的开机命令手稿 (startup-script) 来完成启动时所需的设定 。如果你使用 Slackware,请把以下数行加入你的 /etc/rc.d/rc.S 档,如果你使用 SysVinit,如 Debian, RedHat, Caldera,请把以下数行加入你的 /etc/rc.d/rc.sysinit 档 。(译按:据我所知,RedHat 5.0的 SysVinit已加入此功能):

# Start kerneld - this should happen very early in the
# boot process, certainly BEFORE you run fsck on filesystems
# that might need to have disk drivers autoloaded
if [ -x /sbin/kerneld ]
then
/sbin/kerneld
fi

# Your standard fsck commands go here
# And you mount command to mount the root fs read-write

# Update kernel-module dependencies file
# Your root-fs MUST be mounted read-write by now
if [ -x /sbin/depmod ]
then
/sbin/depmod -a
fi

第一部分启动 kerneld 。

第二部分开始时执行 "depmod -a" 。depmod 建立所有可找到的模组的清单及分析它们之间互相依赖的情况 。所以,它会知道载入一个模组前是否需要先载入其他模组 。

注意∶最新版本的 kerneld 可选择链结 (link) GNU 的 dbm 程式库 libgdbm 。如果在编译 module-utilities 时作了此抉择,找不到 libgdbm 时 kerneld 便不能启动 。这很有可能当 /usr 在另一个磁碟分区 (partition),而企图在挂 (mount) /usr 前启动 kerneld 时发生 。建议的解决方法是把 libgdbm 从 /usr/lib 移到 /lib,或静态连结 kerneld (link kerneld statically) 。

之後,你要把核心的源程式解压,设定及建立一个你喜欢的核心 。如果你未试过这样做,你必须阅读在 Linux 源程式码顶层目录 (top directory) 中的 README 档 。在执行 make config 设定核心时,你要注意数条在早期出现的问题:

Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y

你要选择 loadable module support,否则根本不会有模组让 kerneld 载入 。答 Yes 。

Kernel daemon support (CONFIG_KERNELD) [Y/n/?] Y

推荐阅读