For the complete documentation index, see llms.txt. This page is also available as Markdown.

10.6.如果发生了错误

在构建定制内核时,可能会遇到四种类型的故障:

config 失败

如果 config 失败,它会打印出错误的行号。例如,对于以下消息,请确保第 17 行输入正确,可与 GENERICNOTES 文件比较:

config: line 17: syntax error

make 失败

如果 make 失败,通常是由于内核配置文件中的错误,但该错误未严重到 config 能检测到的程度。请检查配置文件,如果问题不明显,可以将内核配置文件发送到 FreeBSD 常见问题邮件列表 求助。

内核无法引导

如果新内核无法引导或无法识别设备,不必惊慌!幸运的是,FreeBSD 提供了优秀的机制来从不兼容的内核中恢复。只需在 FreeBSD 引导加载器中选择要引导的内核。在系统引导菜单出现时,选择“Escape to a loader prompt”选项。在提示符下,输入 boot kernel.old,或者输入任何已知能正常引导的内核名称。

在使用可用的内核引导后,请检查配置文件并尝试重新构建。有用的资源是 /var/log/messages,它记录了每次成功引导的内核信息。另外,dmesg(8) 会打印当前引导的内核信息。

注意

在排查内核问题时,确保保留一份已知可正常工作的内核副本(如 GENERIC)。这一点很重要,因为每次安装新内核时,kernel.old 都会被上一次安装的内核覆盖,而那个内核未必能正常引导。应尽快通过重命名目录来转移可正常工作的内核:

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

内核正常工作,但 ps(1) 无法使用

如果内核版本与系统工具的构建版本不同,例如,在 -RELEASE 系统上安装了从 -CURRENT 源代码构建的内核,那么许多系统状态命令,如 ps(1)vmstat(8),将无法工作。为了解决这个问题,请 重新编译并安装使用与内核相同版本源代码树构建的世界。使用与操作系统其他部分版本不同的内核版本从来不是好主意。

最后更新于