kerneld mini-HOWTO(5)

2008-02-23 07:23:36来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折




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


常见问题及你可能怀疑的事情
为何当我执行 ifconfig 时为何我会得到 "Cannot locate module for net-pf-X" 讯息
在核心 1.3.80 左右,网络的程式修改至容许把通诉协定 (protocol families,如 IPX, AX.25 和 AppleTalk) 载入为模组。这导致额外的 kerneld 要求:net-pf-X,X 是一个用以辨别通讯协定的数字(参看 /usr/src/linux/include/linux/socket.h 来找出不同数字的意思)。
不幸地,ifconfig 会意外地造成这些讯息,所以很多人会在开机期间执行 ifconfig 来设定回归设备 (loopback device) 时收到。这些讯息并无坏处,你可在 /etc/conf.modules 中加入以下数行来避免它们:

        alias net-pf-3 off      # Forget AX.25
        alias net-pf-4 off      # Forget IPX
        alias net-pf-5 off      # Forget AppleTalk

当然,如果你把 IPX 编译了为模组,你不可加上和它有关的一行。


开始 Kerneld 後,启动 PPP 连线会使我的电脑慢如蜗牛
已经有多个这类个案。这似乎是因为 kerneld 和部分系统用来设定和监察 PPP 连线的 tkPPP script 不正常地互相影向所致。因为那 script 在执行 ifconfig 时好像用到回圈 (loops)。这样会触发 kerneld 找寻 net-pf-X 模组(见前),增加系统工作量和可能导致系统纪录 (system log) 中出现大量 "Cannot locate module for net-pf-X" 讯息。除了不使用 tkPPP 或改用其他方法来监察连线,这问题未有其他解决方法。

kerneld 不载入我的 SCSI 驱动程式!
在你的 /etc/conf.modules 中加上一个 SCSI 配接器的项目。详情这看之前有关 scsi_hostadapter 的部分。 

modprobe 投诉 'gcc2_compiled' 未定义 (undefined)
这是 module-utilities 的一个错误。它只在使用 binutils 2.6.0.9 或更新版本时出现,而且已在 binutils 的出版说明 (release note) 中说明。所以你应该看看它。你也可更新 module-utilities,如 modules-2.0.0 来解决这问题。

我的音响驱动程式 (sound driver) 老是忘记音量之类设定
模组载入後的设定是储存在模组之内的。所以,当 kerneld 自动卸下模组时,你所做的设定都会被忘掉,下次载入时又回复原状。

你可使 kerneld 在自动载入模组後执行一个程式,以作出设定。请参看以上有关 'post-install' 项目的部分。

DOSEMU 需要一些模组,我怎样使 kerneld 载入它们?
你不能。不论是官方 (official) 或开发 (development) 版的 dosemu,都不支援用 kerneld 载入 dosemu 模组。不过,如果你有 2.0.26 或更新的核心,你不再需要那些 dosemu 模组 -- 你只需要更新 dosemu 至 0.66.1 版。(译按∶目前最新的 DOSEMU 稳定版本 (stable version) 是 0.66.7。)

为何会有 "Ouch, kerneld timed out, message failed" 这讯息?
当核心对 kerneld 作出要求时,它会期望在 1 秒之内得到应答 (acknowledgement)。如果 kerneld 不作出回应,这个讯息会被记录下来 (logged)。这要求会再被提出,直到完成为止。

这通常在系统负荷 (load) 非常高时发生。因为 kerneld 也是一个使用者行程 (user-process),它会如其他程序般排程 (scheduling)。负荷高时,它可能来不及在核心超时 (time out) 前作出回应。

如果这问题在负荷低时也发生,请再启动 kerneld (杀掉 kerneld 行程,以 /usr/sbin/kerneld指令来重新开始它)。如果仍有问题,你应该寄一份错误报告给linux-kernel@vger.rutgers.edu,但在寄出前请先确保你的核心和 kerneld 都是最新的。

mount 不等待 kerneld 载入档案系统模组
已经收到一定数目有关 mount (8) 指令不等待 kerneld 载入档案系统模组的报告。 ismod 显示模组已被载入,如果你立刻再执行 mount 的话便会成功。这似乎是 module-utilities 1.3.69f 版中一个会影响 Debian 使用者的错误,使用一个新版的 module-utilities 可解决这问题。

kerneld 不能载入 ncpfs 模组
你编译 ncpfs utilities 时要用 -DHAVE_KERNELD。请参阅 ncpfs 的 Makefile。

kerneld 不能载入 smbfs 模组
你在使用一个旧的 smbmount utilities。请从 ftp://tsx-11.mit.edu/pub/linux/filesystems/smbfs/ 下载最新版本 (0.10 或之後)。

我把所有东西都编译成模组,现在我的系统不能启动
kerneld 不能载入根档案系统 (root filesystem) 模组。
你不可把所有东西都编译成模组∶核心要有足够的驱动程式以使它能挂上 (mount) 根档案系统,和执行所有要用於启动 kerneld 的程式。所以你不能把以下东西模组化∶

根档案系统所在的硬碟的驱动程式 
根档案系统的驱动程式 
init, kerneld和其他程式的二元格式载入程式 (binary format loader) 
[事实上,这并不正确。新的 1.3.x 及所有 2.0.x 核心都容许 LILO 或 LOADLIN 载入初始的 ram-disk,而你可以在启动的早期在这『磁碟』中载入模组。做法可在核心原程式码中的 Documentation/initrd.txt 档中可找到。] 

kerneld 不能在启动时载入 -- 投诉 libgdbm
较新版的 kerneld 要 GNU dbm 程式库 libgdbm.so 才能执行。大多数的安装程式都会把这档案放在 /usr/lib,而你多数是在挂上 /usr 档案系统前执行了 kerneld。这问题的其中一个症状是 kerneld 在启动时不能籍 rc-scripts 载入,但如果你在启动系统後自己开始它,它便没有问题。解决方法,一是把 kerneld 的启动放在挂上 /usr 後,另一是把 gdbm 程式库放到你的根档案系统,如 /lib。

我重新设定核心至没有 xxx 支援後出现 "Cannot load module xxx"
Slackware(其他也可能)会在安装时籍执行 modprobe 来建立一个预设的 /etc/rc.d/rc.modules。modprode 得出来的结果会因原本的核心的设定而异。你可能在重新设定时排除了一些在 rc.modules 的模组,因此造成错误。你可把你在 rc.modules 中不用的模组变为注释 (comment out),或删除 rc.modules,让 kerneld 在需要模组时自行载入。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Bzip2 Howto

下一篇:Linux 核心--16.Linux数据结构