10.6.如果发生了一些错误
在构建自定义内核时可能发生四类问题:
config
失败
如果 config
失败,它将打印出错误的行号。例如,对于以下信息,请确保第 17 行与 GENERIC 或 NOTES 中的内容相符:
make
失败
如果 make
失败,通常是由于内核配置文件中的错误,该错误不足以被 config
捕获。检查配置,如果问题不明显,请发送一封包含内核配置文件的电子邮件到FreeBSD 通用问题邮件列表。
内核无法引导:如果新内核无法引导或无法识别设备,请不要惊慌!幸运的是,FreeBSD 有一个从不兼容内核中恢复的出色机制。只需在 FreeBSD 引导加载程序中选择要引导的内核。当系统引导菜单出现时,选择 "Escape to a loader prompt" 选项。在提示符处,键入 boot kernel.old
,或任何其他已知可以正确引导的内核的名称。
引导到良好的内核后,检查配置文件并尝试重新构建。一个有用的资源是 /var/log/messages,它记录了每次成功引导时的内核消息。此外,dmesg(8) 将打印当前引导的内核消息。
注意
在故障排除内核时,请确保保留一个已知工作的内核副本,例如 GENERIC。这很重要,因为每次安装新内核时,kernel.old 都会被上次安装的内核覆盖,这个内核可能可引导,也可能不可引导。尽快移动工作中的内核,通过重命名包含良好内核的目录:
内核可用,但 ps(1) 不起作用
如果内核版本与已构建系统实用程序的版本不同,例如,在 -RELEASE 系统上安装了从 -CURRENT 源构建的内核,则许多系统状态命令(如 ps(1) 和 vmstat(8))将无法正常工作。要解决此问题,请重新编译和安装系统,该系统使用与内核相同版本的源代码。使用与操作系统其他部分不同版本的内核通常是个坏主意。
最后更新于