在 Oracle® Solaris 11.2 中管理 ZFS 文件系统

退出打印视图

更新时间: 2014 年 12 月
 
 

在 ZFS 根环境中进行引导以恢复系统

如果您需要引导系统,以解决根口令丢失或类似问题,请使用以下过程。

如何为进行恢复而引导系统

使用以下过程解决引导装载程序损坏问题或 root 口令问题。如果需要替换根池中的磁盘,请参见如何替换 ZFS 根池中的磁盘(SPARC 或 x86/VTOC)。如果需要执行完整系统(裸机)恢复,请参见在 Oracle Solaris 11.2 中使用统一归档文件进行系统恢复和克隆

  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 系统上,编辑选定的引导项,然后添加 –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: tardis.central
      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): xxxx
      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@tardis.central:~# TERM =vt100; export TERM
      root@tardis.central:~# vi /etc/passwd
      root@tardis.central:~# <Press control-d>
      logout
      svc.startd: Returning to milestone all.
    • 解决引导装载程序损坏问题。

      首先,您必须使用步骤 1 中列出的引导方法之一从介质或网络引导系统。然后,执行诸如导入根池和修复 GRUB 条目等操作。

      x86# zpool import -f rpool

      重新安装引导装载程序。

      x86# bootadm install-bootloader -f -P rpool

      其中 –f 选项将强制安装引导装载程序并绕过所有版本检查,以便不对系统上的引导装载程序版本进行降级。–P 选项用于指定根池。

      您可以使用 bootadm list-menu 命令列出并修改 GRUB2 条目。有关更多信息,请参见 bootadm(1M)

      退出并重新引导系统。

      x86# 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   -      -          46.95M static 2012-07-20 10:25
      solaris-2 R      -          3.81G  static 2012-07-19 13:44
      # 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 口令。

  3. 通过引导至单用户模式并设置口令来设置 root 口令。

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

    在基于 x86 系统上,编辑选定的引导项,然后添加 –s 选项。

    在基于 SPARC 系统上,将系统引导至单用户模式,以 root 身份登录,然后设置 root 口令。例如:

    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".
    
    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
    
    Jul 20 14:09:59 su: 'su root' succeeded for root on /dev/console
    Oracle Corporation      SunOS 5.11      11.2    July 2013
    root@tardis.central:~# passwd -r files root
    New Password: xxxxxx
    Re-enter new Password: xxxxxx
    passwd: password successfully changed for root
    root@tardis.central:~# <Press control-d>
    logout
    svc.startd: Returning to milestone all.