crash.8

CRASH(8)

CRASH(8)

FreeBSD System Manager's Manual

CRASH(8)

crash

FreeBSD 系统故障

本节解释了一些关于系统崩溃和(非常简要地)如何分析崩溃转储的信息。

当系统自动崩溃时,它会打印表单的消息

恐慌:为什么我放弃了幽灵

在控制台上,如果已启用转储(请参阅 dumpon(8) ),则在大容量存储外围设备上进行转储,然后调用 reboot(8) 中所述的自动重新启动过程。 除非由于硬件或软件故障导致文件系统的状态出现意外的不一致,否则系统将恢复多用户操作。

系统有大量的内部一致性检查;如果其中一个失败,那么它会恐慌并显示一条非常短的消息,指示哪个失败了。 在许多情况下,这将是检测到错误的例程的名称,或者是对不一致的两个词的描述。 要全面了解大多数恐慌消息,需要仔细阅读系统的源代码。

系统故障最常见的原因是硬件故障,它可以以不同的方式反映自身。 以下是最有可能的消息,以及一些关于原因的提示。 在所有情况下都没有说明硬件或软件错误以某种意想不到的方式产生消息的可能性。

无法挂载根

此紧急消息是由于在引导过程中未能挂载根文件系统造成的。 根文件系统已损坏,或者系统试图使用错误的设备作为根文件系统。 通常,可以使用系统二进制文件的备用副本或备用根文件系统来启动系统进行调查。 这通常是通过使用用于安装系统的引导软盘,然后使用 “fixit” 软盘来完成的。

init: not found

这不是一个恐慌消息,因为重新启动可能是徒劳的。 在引导过程的后期,系统无法定位并执行初始化过程 init(8) 。 根文件系统不正确或已损坏,或 /sbin/init 的模式或类型禁止执行或完全丢失。

ffs_realloccg: 糟糕的优化

ffs_valloc: 重复分配

ffs_alloccgblk: cyl 组损坏

ffs_alloccg: 地图损坏

blkfree: 释放空闲块

blkfree: 释放免费碎片

ifree: 释放空闲的 inode

这些恐慌消息是在检测到文件系统不一致时可能产生的消息之一。 该问题通常是由于在崩溃、硬件故障或其他通常不应发生的情况后无法修复损坏的文件系统造成的。 文件系统检查通常会纠正问题。

timeout table full

这真的不应该是恐慌,但在涉及的数据结构可扩展之前,用完条目会导致崩溃。 如果发生这种情况,请将超时表变大。

init died (signal #, exit #)

系统初始化过程已以指定的信号编号和退出代码退出。 这是个坏消息,因为届时将没有新用户能够登录。 重新启动是唯一的解决方法,因此系统会立即执行此操作。

这样就完成了您可能会看到的恐慌类型列表。

如果系统已配置为进行崩溃转储(请参阅 dumpon(8) ),那么当它崩溃时,它将写入(或至少尝试写入)内存映像到转储设备的后端,通常与主交换区。 系统重新启动后,程序 savecore(8) 运行并将此核心映像和当前系统的副本保存在指定目录中以供以后阅读。 有关详细信息,请参阅 savecore(8) 。

要分析转储,您应该首先在系统加载映像和核心转储上运行 kgdb(1) 。 如果核心图像是恐慌的结果,则会打印恐慌消息。 有关详细信息,请参阅 FreeBSD 开发人员手册 (https://www.freebsd.org/doc/en/books/developers-handbook/) 中有关内核调试的章节。

kgdb(1), dumpon(8), reboot(8), savecore(8)

crash 手册页首次出现在 FreeBSD 2.2 中。

July 23, 2011

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区