10.6.如果发生了一些错误 ======================= 在建立一个定制的内核时,有四类问题可能发生: **config** 失败 如果 ``config`` 失败,它将打印出配置错误的行号。 例如,对于下面的信息,要比较 **GENERIC** 与 **NOTES**\ ,请确保第 32 行的输入是正确的: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session config: /usr/src/sys/amd64/conf/GENERIC:32: syntax error **make** 失败 如果 ``make`` 失败,通常是由于内核配置文件中的错误,而这个错误对于 ``config`` 来说还不够严重。查看配置,如果问题不明显,请向包含内核配置文件的 `FreeBSD 一般问题邮件列表 `__\ 发送一封电子邮件。 **内核无法启动** 如果新内核无法启动或无法识别设备,不要惊慌。FreeBSD 有一个优秀的机制即从不能运行的内核中恢复。 只要在 FreeBSD 的引导加载器中选择要启动的内核即可。当系统启动菜单出现时,可以通过选择 “Kernel:” 选项来访问它,该选项最初显示 “Kernel:default/kernel”。每次选择该选项时,都会出现另一个选项,例如 “kernel.old”。当所需的内核选项出现,按回车键启动。 正常启动后,检查一下配置文件,并尝试再次建立它。可以参考 **/var/log/messages**\ 来获取帮助,它记录了每次成功启动时的内核信息。另外,\ `dmesg(8) `__ 可以打印当前启动时的内核信息。 **注意** 在排除内核的故障时,确保有一份 **GENERIC** 的备份,或者其他已知可以工作的内核在下次编译时不会被清除。这一点很重要,因为每次安装新内核时,\ **kernel.old** 都会被最后安装的内核覆盖,而这个内核可能是可启动的,也可能是不可启动的。尽快重命名包含可以正常启动的内核的目录,并转移工作内核: .. code:: shell-session # mv /boot/kernel /boot/kernel.bad # mv /boot/kernel.good /boot/kernel **内核可以工作,但** `ps(1) `__ **不能工作** 如果内核版本与系统实用程序所使用的版本不同,例如,在一个 -RELEASE 系统上安装了一个由 -CURRENT 源构建的内核,许多系统状态命令(如 `ps(1) `__ 和 `vmstat(8) `__\ )将无法运行。要解决这个问题,需要\ `重新编译并安装 `__\ 与内核相同版本的源代码树。使用与操作系统其他部分不同版本的内核绝对不是一个好主意。