系统管理指南:基本管理

排除在 x86 平台上引导时的故障(任务图)

任务 

说明 

参考 

停止系统以便进行恢复。  

如果损坏的文件阻止系统正常引导,请首先停止系统以尝试恢复。 

x86: 如何为恢复目的而停止系统

强制实施系统故障转储和重新引导。 

作为一种故障排除措施,您可以强制实施系统故障转储和重新引导。 

x86: 如何强制实施崩溃转储和系统重新引导

使用内核调试器引导系统。 

您可以使用内核调试器引导系统,以排除引导问题。使用 kmdb 命令引导系统。

x86: 如何在 GRUB 引导环境中使用内核调试器 (kmdb) 引导系统

Procedurex86: 如何为恢复目的而停止系统

  1. 使用以下命令之一停止系统(如果可能):

    • 如果键盘和鼠标功能正常,请成为超级用户。然后,键入 init 0 以停止系统。出现 Press any key to reboot 提示后,请按任意键以重新引导系统。

    • 如果键盘和鼠标可正常运行,则成为超级用户然后键入 init 6 以重新引导系统。

  2. 如果系统未响应从鼠标或键盘输入的任何内容,请按“重置”键(如果存在)重新引导系统。

    或者,可以使用电源开关重新引导系统。

x86: 强制实施崩溃转储和系统重新引导

有时,为了排除故障,必须强制实施崩溃转储并重新引导系统。缺省情况下将启用 savecore 功能。

有关系统故障转储的更多信息,请参见《系统管理指南:高级管理》中的第 17  章 “管理系统故障转储信息(任务)”

Procedurex86: 如何强制实施崩溃转储和系统重新引导

如果您不能使用 reboot -dhalt -d 命令,则可以使用内核调试器 kmdb 来强制实施故障转储。必须已在引导时或使用 mdb -k 命令装入了内核调试器,以下过程才能正常进行。


注 –

必须处于文本模式下,才能访问内核调试器 (kmdb)。因此,首先要退出任何窗口系统。


  1. 访问内核调试器。

    用于访问调试器的方法因访问系统所使用的控制台类型而异。

    • 如果使用本地连接的键盘,请按 F1–A 组合键。

    • 如果使用串行控制台,请使用适合于该类型的串行控制台的方法来发送中断信号。

    此时将显示 kmdb 提示符。

  2. 要引发崩溃,请使用 systemdump 宏。


    [0]> $<systemdump
    

    此时将显示应急消息,保存崩溃转储,随后系统将重新引导。

  3. 通过在控制台登录提示符下登录来确认系统已重新引导。


示例 14–6 x86: 使用 halt -d 强制实施崩溃转储和系统重新引导

本示例说明如何使用 halt -dboot 命令强制实施基于 x86 的系统 neptune 的崩溃转储和重新引导。使用此方法强制实施系统崩溃转储。随后以手动方式重新引导系统。


# halt -d
4ay 30 15:35:15 wacked.Central.Sun.COM halt: halted by user

panic[cpu0]/thread=ffffffff83246ec0: forced crash dump initiated at user request

fffffe80006bbd60 genunix:kadmin+4c1 ()
fffffe80006bbec0 genunix:uadmin+93 ()
fffffe80006bbf10 unix:sys_syscall32+101 ()

syncing file systems... done
dumping to /dev/dsk/c1t0d0s1, offset 107675648, content: kernel
NOTICE: adpu320: bus reset
100% done: 38438 pages dumped, compression ratio 4.29, dump succeeded

Welcome to kmdb
Loaded modules: [ audiosup crypto ufs unix krtld s1394 sppp nca uhci lofs 
genunix ip usba specfs nfs md random sctp ]
[0]> 
kmdb: Do you really want to reboot? (y/n) y

Procedurex86: 如何在 GRUB 引导环境中使用内核调试器 (kmdb) 引导系统

此过程说明装入内核调试器 (kmdb) 的基本原理。缺省情况下将启用 savecore 功能。有关使用内核调试器的更多详细信息,请参见 《Solaris 模块调试器指南》

  1. 引导系统。

    引导系统时将显示 GRUB 菜单。

  2. 显示 GRUB 菜单时,请键入 e 以访问 GRUB 编辑菜单。

  3. 使用方向键选择 kernel$ 行。

    如果不能使用方向键,请使用 ^ 键向上滚动,并使用 v 键向下滚动。

  4. 键入 e 以编辑该行。

    此时将显示引导项菜单。在此菜单中,您可以通过向 kernel$ 行的结尾处添加其他引导参数来修改引导行为。

  5. 在该行的结尾处键入 -k

  6. 按 Enter 键以返回到 GRUB 主菜单。

  7. 键入 b 以便在启用内核调试器的情况下引导系统。

  8. 访问内核调试器。

    用于访问调试器的方法因访问系统所使用的控制台类型而异:

    • 如果使用本地连接的键盘,请按 F1–A 组合键。

    • 如果使用串行控制台,请使用适合于该类型的串行控制台的方法来发送中断信号。

    首次访问内核调试器时,将显示欢迎消息。


示例 14–7 x86: 使用内核调试器引导系统(GRUB 多引导实现)

本示例说明如何在启用了内核调试器的情况下手动引导具有 64 位计算能力的基于 x86 的系统。


kernel$ /platform/i86pc/multiboot kernel/amd64/unix -k -B $ZFS-BOOTFS

本示例说明如何在启用了内核调试器的情况下将具有 64 位计算能力的基于 x86 的系统引导至 32 位模式。


kernel$ /platform/i86pc/multiboot kernel/unix -k -B $ZFS-BOOTFS