从 Oracle® Solaris 10 转换至 Oracle Solaris 11.2

退出打印视图

更新时间: 2014 年 12 月
 
 

引导系统以进行恢复

如果 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 口令时,可以从安装介质或网络上的安装服务器来引导以进行恢复。


    注 -  在基于 SPARC 的系统上,boot net:dhcp 命令替代了 Oracle Solaris 10 发行版中使用的 boot net 命令。
  • 在单用户模式下引导系统可解决一些小问题,例如更正 /etc/passwd 文件中的 root shell 项或更改 NIS 服务器。

  • 解决引导配置问题时,通常需要导入根池、挂载 BE 和修复问题(例如,重新安装损坏的 x86 引导装载程序)。

如何从备份 BE 引导以进行恢复

SPARC 和 x86 平台不再支持引导故障安全归档。请尽可能使用备份 BE 进行恢复。BE 是 Oracle Solaris 映像的可引导实例,以及安装到该映像中的其他任何应用程序软件包。多个 BE 可以降低更新软件时的风险,因为备份 BE 会保留原始 BE。

可以基于活动的或不活动的引导环境创建新 BE。或者,也可以基于原始 BE 的克隆创建新 BE。克隆可以复制原始 BE 的主根数据集下的根数据集和按分层结构排列的所有内容。请参见创建和管理 Oracle Solaris 11.2 引导环境

如果系统不从活动的 BE 引导,请选择要从中引导的备份 BE。

  • 按如下方式从备份 BE 引导:
    • SPARC:引导系统,以便选择一个备用或备份 BE。
      1. 使用 boot –L 命令进行引导。
        ok boot -L
      2. 选择一个备用或备份 BE。
        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。

      3. 引导备份 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

        如果系统不引导,请查看如何引导系统以进行恢复中的其他引导恢复步骤。

    • x86:引导系统以便从 GRUB 菜单确定备用或备份 BE。
      1. 当显示 GRUB 菜单时,确定备份 BE。
      2. 选择备份 BE,然后按回车键以引导该项。

        如果系统不从备份 BE 引导,请查看如何引导系统以进行恢复中的其他引导恢复步骤。

如何引导系统以进行恢复

  1. 选择适当的引导方法:
    • 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
    #
  2. 从以下引导恢复问题中选择:
    • 要解决 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

      注 -  除非您确定要使用介质上的版本覆盖引导装载程序,否则请不要使用 –f 选项。请参见引导和关闭 Oracle Solaris 11.2 系统 中的使用 bootadm install-bootloader 命令安装 GRUB 2

      再按以下方式重新安装引导装载程序:

      # 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
  3. 通过引导至单用户模式并设置口令来设置 root 口令。

    此步骤假设您在上一步中删除了未知的 root 口令。

    • 在基于 x86 的系统上,在 GRUB 菜单中编辑选定的引导项,然后向 $kernel 行添加 –s 选项。
    • 在基于 SPARC 系统上,将系统引导至单用户模式,以 root 身份登录,然后设置 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.