FreeBSD
Prev 疑难排解 Next

疑难排解

在你建立自定的核心时你可能会遇到四种类型的错误,分别是:

config 执行失败

如果 config 指令执行时出现错误,通常是你写错某个关键字或叁数名称。幸运的是,config 会告诉你哪一行出错,所以你能用 vi 快速解决这类问题。例如你看到:
    config: line 17: syntax error
你可以在 vi 的指令模式下输入 17G,然后找出第十七行的问题。你可以叁考 GENERIC 或是其他资料以确定你打对关键字。
make 执行失败
如果 make 执行失败,通常是你的核心设定档有 config 无法发现的错误。一样的,从头到尾检视你的设定档以找出错误。
新核心开机失败
如果你的新核心无法正常开机,或是不能辨认出你的硬体装置,别担心!FreeBSD 有一套相当完善的回复机制可以解决这个问题。只要在开机命令列输入你想启用的核心名称(例如 kernel.old ),而不是按 Enter(Return) 键跳过。在系统内保留一个已知可以正常开机的核心,以备不时之需,是一个不错的想法。
    Hit [Enter] to boot immendiately, or any other key for command prompt.
    Booting [kernel] in 9 seconds...
这时候按 Enter 键以外的按键,就会出现;
    Type '?' for a list of commands, 'help' for more detailed help
    ok
接下来就载入旧的核心 kernel.old,这是表示前一版的核心
    ok boot kernel.old

或是想要载入 kernel.GENERIC,也就是最初的核心

ok boot kernel.GENERIC

在用正常的核心开机后,你可以检查你的核心设定档,并尝试再次建立新核心。/var/log/messages 纪录每次成功开机时,核心产生的讯息。此外,dmesg(8) 则会列出当次开机的核心讯息

Note: 如果你在编译核心时遇到问题,确定你在系统内有保留一个 GENERIC 核心,或是其他你知道可正常开机, 而且不会在你建立新核心时被覆盖过去的核心。不要以为有 kernel.old 就够了,因为每次建立新核心时, kernel.old 会被前一次建立的 kernel 给覆写过去,而这个核心有可能是有问题的。另外,如果你用旧的、可用的核心来开机,记得把目前的开机核心覆写到 kernel,不然部分程式如 ps(1) 将无法正常执行。接下来的指令介绍如何解除核心的存取限制(以便把旧的核心覆写回去):
    # chflags noschg /kernel
另外,如果你要"锁定"核心或是其他档案的存取限制,使它们不会被修改或移除,则可输入以下指令:
    # chflags schg /kernel
核心运作良好,但是 ps 指令却无法执行?
如果你安装不同版本的核心到系统上,例如在 3.X 版系统上装了一 个 4.X 版的核心,那麽很多用来查看系统状态的指令,如 ps(1) 与 vmstat(8),可能会不能使用。你必须重新编译 libkvm 函式库与这些公用程式。切记不要随意从 其他系统拷贝不同版本的核心来使用,不然你可能会遇到此类问题。

Prev Home Next
核心设定挡 UP FreeBSD 更新版本