如果 Oracle Solaris 11 系统变得无法引导,您很可能需要执行恢复引导操作。您可从安装介质进行引导,或可引导备份 BE。
如果需要执行完整系统(裸机)恢复,请参见在 Oracle Solaris 11.2 中使用统一归档文件进行系统恢复和克隆 中的如何创建恢复归档文件。
下列错误和恢复方案类似于以前的发行版:
可以使用 boot –a 命令绕过 /etc/system 文件中的一个问题。在系统提示时,使用类似以下内容的语法:
Name of system file [/etc/system]: /dev/null
根据需要,在出现其他提示时按回车键。
在大多数 pkg update 操作期间会自动创建一个备份 BE。利用此功能,在映像更新过程中发生某些错误时,可以引导回以前的 BE。请考虑在进行系统配置更改前创建备份 BE。
# beadm create solaris-backup # beadm list BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris R - 4.01G static 2013-02-08 16:53 solaris-backup N / 47.95M static 2013-02-11 10:48
有关从备份 BE 引导的步骤,请参见如何从备份 BE 引导以进行恢复。
出现阻止系统引导的问题或丢失 root 口令时,可以从安装介质或网络上的安装服务器来引导以进行恢复。
在单用户模式下引导系统可解决一些小问题,例如更正 /etc/passwd 文件中的 root shell 项或更改 NIS 服务器。
解决引导配置问题时,通常需要导入根池、挂载 BE 和修复问题(例如,重新安装损坏的 x86 引导装载程序)。
SPARC 和 x86 平台不再支持引导故障安全归档。请尽可能使用备份 BE 进行恢复。BE 是 Oracle Solaris 映像的可引导实例,以及安装到该映像中的其他任何应用程序软件包。多个 BE 可以降低更新软件时的风险,因为备份 BE 会保留原始 BE。
可以基于活动的或不活动的引导环境创建新 BE。或者,也可以基于原始 BE 的克隆创建新 BE。克隆可以复制原始 BE 的主根数据集下的根数据集和按分层结构排列的所有内容。请参见创建和管理 Oracle Solaris 11.2 引导环境 。
如果系统不从活动的 BE 引导,请选择要从中引导的备份 BE。
ok boot -L
Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0,0:a File and args: -L 1 Oracle Solaris 11.2 SPARC 2 solaris-backup Select environment to boot: [ 1 - 2 ]: 2
在上一个输出中,活动的 BE 为 Oracle Solaris 11.2 SPARC,很可能与实际的 BE 名称不匹配,但它代表当前的 BE。
选择了要从中引导的 BE 之后,确定屏幕引导路径并在提示符处键入该信息。
To boot the selected entry, invoke: boot [<root-device>] -Z rpool/ROOT/solaris-backup Program terminated {0} ok boot -Z rpool/ROOT/solaris-backup
如果系统不引导,请查看如何引导系统以进行恢复中的其他引导恢复步骤。
如果系统不从备份 BE 引导,请查看如何引导系统以进行恢复中的其他引导恢复步骤。
x86:Live Media-从安装介质进行引导并对恢复过程使用 GNOME 终端。
SPARC:文本安装-从安装介质或者从网络进行引导,然后从文本安装屏幕中选择 3 Shell 选项。
x86:文本安装-在 GRUB 菜单中,选择 Text Installer and command line(文本安装程序和命令行)引导项,然后从文本安装屏幕中选择 3 Shell 选项。
SPARC:自动化安装-使用以下命令从允许退出到 shell 的安装菜单直接引导。
ok boot net:dhcp
x86:自动化安装-从网络上的安装服务器进行引导需要 PXE 引导。选择 GRUB 菜单上的 Text Installer and command line(文本安装程序和命令行)项。然后,从文本安装屏幕中选择 3 Shell 选项。
例如,引导系统后,选择 3 Shell 选项。
1 Install Oracle Solaris 2 Install Additional Drivers 3 Shell 4 Terminal type (currently xterm) 5 Reboot Please enter a number [1]: 3 To return to the main menu, exit the shell #
要解决 root shell 错误问题,请将系统引导到单用户模式并更正 /etc/passwd 文件中的 shell 项。
在基于 x86 的系统上,在 GRUB 菜单中编辑选定的引导项,然后向 $kernel 行末尾添加 –s 内核参数。
在基于 SPARC 的系统上,关闭系统,然后引导至单用户模式。在以 root 用户身份登录后,编辑 /etc/passwd 文件,并修复 root shell 条目。
# init 0 ok boot -s Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0,0:a ... SunOS Release 5.11 Version 11.2 64-bit Copyright (c) 1983, 2013, Oracle and/or its affiliates. All rights reserved. Booting to milestone "milestone/single-user:default". Hostname: systema.domain Requesting System Maintenance Mode SINGLE USER MODE Enter user name for system maintenance (control-d to bypass): root Enter root password (control-d to bypass): xxxxxxx single-user privilege assigned to root on /dev/console. Entering System Maintenance Mode Aug 3 15:46:21 su: 'su root' succeeded for root on /dev/console Oracle Corporation SunOS 5.11 11.2 July 2013 su: No shell /usr/bin/mybash. Trying fallback shell /sbin/sh. root@systema.domain:~# TERM =vt100; export TERM root@systema.domain:~# vi /etc/passwd root@systema.domian:~# <Press control-d> logout svc.startd: Returning to milestone all.
解决引导装载程序损坏问题。
首先,使用步骤 1 中列出的引导方法之一从介质或网络引导系统。然后导入根池。
# zpool import -f rpool
再按以下方式重新安装引导装载程序:
# bootadm install-bootloader -f -P rpool
其中 –f 将强制安装引导装载程序并绕过所有相关检查,以便不对系统上的引导装载程序版本进行降级。–P 选项指定根池。
退出并重新引导系统。
# exit 1 Install Oracle Solaris 2 Install Additional Drivers 3 Shell 4 Terminal type (currently sun-color) 5 Reboot Please enter a number [1]: 5
确认系统引导成功。
解决 root 口令未知导致无法登录系统的问题。
首先,您必须使用步骤 1 中列出的引导方法之一从介质或网络引导系统。然后,导入根池 (rpool) 并挂载 BE 以删除 root 口令项。在 SPARC 平台和 x86 平台上,该过程是相同的。
# zpool import -f rpool # beadm list be_find_current_be: failed to find current BE name be_find_current_be: failed to find current BE name BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris - - 11.45M static 2011-10-22 00:30 solaris-2 R - 12.69G static 2011-10-21 21:04 # mkdir /a # beadm mount solaris-2 /a # TERM=vt100 # export TERM # cd /a/etc # vi shadow <Carefully remove the unknown password> # cd / # beadm umount solaris-2 # halt
此步骤假设您在上一步中删除了未知的 root 口令。
ok boot -s Boot device: /pci@780/pci@0/pci@9/scsi@0/disk@0,0:a File and args: -s SunOS Release 5.11 Version 11.2 64-bit Copyright (c) 1983, 2012, Oracle and/or its affiliates. All rights reserved. Booting to milestone "milestone/single-user:default". Hostname: systema.domain Requesting System Maintenance Mode SINGLE USER MODE Enter user name for system maintenance (control-d to bypass): root Enter root password (control-d to bypass): <Press return> single-user privilege assigned to root on /dev/console. Entering System Maintenance Mode . . . root@sysadma.domain:~# passwd -r files root New Password: xxxxxx Re-enter new Password: xxxxxx passwd: password successfully changed for root root@systema.central:~# <Press control-d> logout svc.startd: Returning to milestone all.