8.6.如果发生了一些错误

在建立一个定制的内核时,有四类问题可能发生:

config 错误

如果配置失败,它将打印出配置不正确的行号。例如,对于下面的信息,要比较GENERICNOTES,确保第 17 行的输入是正确的。

make 错误

如果 make 失败,通常是由于内核配置文件中的错误,而这个错误对于 config 来说还不够严重。查看配置,如果问题不明显,请向包含内核配置文件的FreeBSD一般问题邮件列表发送一封电子邮件。

内核不能启动

如果新内核无法启动或无法识别设备,不要惊慌。FreeBSD 有一个优秀的机制即从不兼容的内核中恢复。只要在 FreeBSD 的引导加载器中选择要启动的内核即可。当系统启动菜单出现时,可以通过选择Escape to a loader prompt选项来访问它。在命令行中输入 boot kernel.old,或者任何其他已知可以正常启动的内核的名字。

正常启动后,检查一下配置文件,并尝试再次建立它。可以参考 /var/log/messages来获取帮助,它记录了每次成功启动时的内核信息。另外,dmesg(8)可以打印当前启动时的内核信息。

注意:

在排除内核的故障时,确保有一份GENERIC的备份,或者其他已知可以工作的内核在下次构建时不会被清除。这一点很重要,因为每次安装新内核时,kernel.old 都会被最后安装的内核覆盖,而这个内核可能是可启动的,也可能是不可启动的。尽快重命名包含可以正常启动的内核的目录,并转移工作内核:

  1. # mv /boot/kernel /boot/kernel.bad
  2. # mv /boot/kernel.good /boot/kernel

内核工作,但ps(1)不工作。

如果内核的版本与系统工具的版本不同,例如,在 -RELEASE系统上安装了由 -CURRENT资源构建的内核,许多系统状态命令,如ps(1)vmstat(8)将无法工作。要解决这个问题,可以重新编译并安装一个与内核相同版本的源码树构建的world。使用一个与操作系统其他部分不同的内核版本是很不好的。