系统管理指南:基本管理

第 13 章 管理 Oracle Solaris 引导归档文件(任务)

本章介绍如何管理 Oracle Solaris 引导归档文件。还详细介绍使用 bootadm 命令的过程。

以下列出本章所介绍的信息:

有关引导过程的概述信息,请参见第 9 章。有关引导系统的逐步说明,请参见第 12 章

管理 Oracle Solaris 引导归档文件(任务图)

表 13–1 管理引导归档文件(任务图)

任务 

说明 

参考 

管理 boot-archive 服务。

boot-archive 服务由服务管理工具 (Service Management Facility, SMF) 控制。使用 svcadm 命令可启用和禁用服务。使用 svcs 命令可检验 boot-archive 服务是否正在运行。

管理 boot-archive 服务

x86:使用 auto-reboot-safe 属性,清除引导归档文件更新故障。

当因为 auto-reboot-safe 属性被设置为 false,引导归档文件在基于 x86 的系统上更新失败时,使用此过程。

x86: 如何使用 auto-reboot-safe 属性清除引导归档文件自动更新故障

使用 bootadm 命令清除引导归档文件更新故障

使用此过程手动清除 SPARC 平台和 x86 平台上的引导归档文件更新故障(如果 auto-reboot-safe 属性设置为 true)。

如何使用 bootadm 命令清除引导归档文件自动更新故障

使用 bootadm 命令手动更新引导归档文件。

使用 bootadm update-archive 命令可手动更新引导归档文件。

如何使用 bootadm 命令手动更新引导归档文件

在具有 Solaris 卷管理器 (Solaris Volume Manager, SVM) 元设备镜像根的系统上手动更新引导归档文件。 

在使用元设备镜像的系统上,使用 bootadm 命令更新引导归档文件之前,必须手动挂载该设备。

如何在 Solaris 卷管理器 RAID-1(已镜像)根分区上手动更新引导归档文件

使用 bootadm 命令列出引导归档文件的内容。

使用 bootadm list-archive 命令可列出引导归档文件的内容。

如何列出引导归档文件的内容

x86:使用 bootadm 命令找到活动的 GRUB 菜单。

使用 bootadm list-menu 命令可确定活动的 GRUB 菜单的位置。

x86: 如何找到活动的 GRUB 菜单并列出当前菜单项

x86:使用 bootadm 命令在 GRUB 菜单中设置缺省引导项。

使用 bootadm set-menu 命令可在 GRUB 菜单中设置缺省引导项。

x86: 如何设置活动 GRUB 菜单的缺省引导项

Oracle Solaris 引导归档文件说明

在某个系统上安装 Oracle Solaris OS 时,bootadm 命令将创建一个主引导归档文件和一个故障安全归档文件。

主引导归档文件是根 (/) 文件系统的子集。此引导归档文件包含所有的内核模块、driver.conf 文件以及一些配置文件。这些文件位于 /etc 目录中。挂载根 (/) 文件系统之前,内核将读取引导归档文件中的文件。挂载根 (/) 文件系统之后,内核将从内存中放弃引导归档文件。然后,系统将针对引导设备执行文件 I/O。

组成 SPARC 引导归档文件的文件位于 /platform 目录中。

此目录的内容被划分为三组文件:

组成 x86 引导归档文件的文件位于 /platform/i86pc 目录中。

要列出引导归档文件中包括的文件和目录,请使用 bootadm list-archive 命令。

如果更新了归档文件中的任何文件,则必须重建引导归档文件。为使修改生效,必须在重新引导系统之前重建归档文件。

故障安全引导归档文件是在安装 Solaris OS 时创建的第二种类型的归档文件。

故障安全引导归档文件具有以下优点和特征:

有关以故障安全模式引导系统的更多信息,请参见在故障安全模式下引导基于 SPARC 的系统在故障安全模式下引导基于 x86 的系统。

管理 boot-archive 服务

boot-archive 服务由服务管理工具 (Service Management Facility, SMF) 控制。boot-archive 服务实例是 svc:/system/boot-archive:defaultsvcadm 命令用于启用和禁用服务。

要确定 boot-archive 服务是否正在运行,请使用 svcs 命令。

有关更多信息,请参见 svcadm(1M)svcs(1) 手册页。

Procedure如何启用或禁用 boot-archive 服务

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 要启用或禁用 boot-archive 服务,请键入:


    # svcadm enable | disable system/boot-archive
    
  3. 要检验 boot-archive 服务的状态,请键入:


    % svcs boot-archive
    

    如果该服务正在运行,则输出会显示服务处于联机状态。


    STATE          STIME    FMRI
    online          9:02:38 svc:/system/boot-archive:default

    如果该服务未在运行,则输出会指示服务处于脱机状态。

故障排除

有关清除自动引导归档文件更新故障的信息,请参见 引导归档文件自动恢复

引导归档文件自动恢复

从 Oracle Solaris 10 9/10 发行版开始,SPARC 平台上的引导归档文件恢复将完全自动化。在 x86 平台上,引导归档文件恢复是部分自动化的。

为了支持 x86 平台上引导归档文件的自动恢复,已将新 auto-reboot-safe 属性添加到引导配置 SMF 服务 svc:/system/boot-config:default 中。缺省情况下,该属性的值设置为 false,以免该系统自动重新引导至未知的引导设备。但是,如果您的系统配置为自动重新引导至已安装 Oracle Solaris OS 的 BIOS 引导设备和缺省 GRUB 菜单项,则可通过将此属性的值设置为 true 启用引导归档文件的自动恢复。以下过程介绍了如何清除 x86 平台上的引导归档文件自动更新故障。

有关如何使用 bootadm 命令清除引导归档文件自动更新故障的信息,请参见 如何使用 bootadm 命令清除引导归档文件自动更新故障

Procedurex86: 如何使用 auto-reboot-safe 属性清除引导归档文件自动更新故障

在基于 x86 的系统上,在引导系统的过程中,如果显示类似以下内容的警告,则按照随后过程中所描述的步骤操作。


WARNING: Reboot required.
The system has updated the cache of files (boot archive) that is used
during the early boot sequence. To avoid booting and running the system
with the previously out-of-sync version of these files, reboot the
system from the same device that was previously booted.

然后系统进入系统维护模式。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 重新引导系统。


    # reboot
    

    要阻止发生此类故障,如果活动的 BIOS 引导设备和 GRUB 菜单项指向当前的引导实例,请按照以下步骤操作:

  3. svc:/system/boot-config SMF 服务的 auto-reboot-safe 属性设置为 true,如下所示:


    # svccfg -s svc:/system/boot-config:default setprop config/auto-reboot-safe = true
    
  4. 验证 auto-reboot-safe 属性是否设置正确。


    # svccfg -s svc:/system/boot-config:default listprop |grep config/auto-reboot-safe
    config/auto-reboot-safe            boolean  true

Procedure如何使用 bootadm 命令清除引导归档文件自动更新故障

在引导系统过程中,如果显示类似以下内容的警告消息,请按照相应的步骤操作:


WARNING: Automatic update of the boot archive failed.
Update the archives using 'bootadm update-archive'
command and then reboot the system from the same device that
was previously booted.

以下过程介绍如何使用 bootadm 命令手动更新过时的引导归档文件。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 要更新引导归档文件,请键入:


    # bootadm update-archive
    
    bootadm

    管理系统中的引导归档文件。

    update-archive

    根据需要更新当前的引导归档文件。同时适用于基于 SPARC 的系统和基于 x86 的系统。

  3. 重新引导系统。


    # reboot
    

使用 bootadm 命令管理引导归档文件

使用 /sbin/bootadm 命令可以执行以下任务:

该命令的语法如下:


/sbin/bootadm [subcommand] [-option] [-R altroot]

有关 bootadm 命令的更多信息,请参见 bootadm(1M) 手册页。

Procedure如何使用 bootadm 命令手动更新引导归档文件

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 要更新引导归档文件,请键入:


    # bootadm update-archive
    
    bootadm

    管理系统中的引导归档文件。

    update-archive

    根据需要更新当前的引导归档文件。同时适用于基于 SPARC 的系统和基于 x86 的系统。

    • 要更新备用根上的引导归档文件,请键入:


      # bootadm update-archive -R /a
      
      -R altroot

      指定要应用于 update-archive 子命令的备用 root 路径。


      注 –

      不得使用 -R 选项引用任何非全局区域的根 (/) 文件系统。否则,可能会损坏全局区域的文件系统,危及全局区域的安全性,或者损坏非全局区域的文件系统。请参见 zones(5) 手册页。


  3. 重新引导系统。


    # reboot
    

Procedure如何在 Solaris 卷管理器 RAID-1(已镜像)根分区上手动更新引导归档文件

以下过程介绍了如何在故障安全引导过程中挂载已镜像的元设备。在此过程中,所使用的根 (/) 文件系统为 /dev/dsk/c0t0d0s0

  1. 引导故障安全归档文件。

    在故障安全模式下引导系统产生以下输出:


    Starting shell.
    #
  2. 在故障安全引导过程中,当系统提示您选择要挂载的设备时,请键入 q 来指明没有要挂载的设备。


    Please select a device to be mounted (q for none)[?,??,q]: q
    
  3. 暂时将根 (/) 文件系统的子镜像作为 /a 目录上的只读文件挂载。


    # mount -o ro /dev/dsk/c0t0d0s0 /a
    
  4. md.conf 文件复制到 /kernel/drv 目录。


    # cp /a/kernel/drv/md.conf /kernel/drv/
    
  5. 卸载 /a 目录。


    # unmount /a
    
  6. 使用 devfsadm 命令装入 md 驱动程序。


    # update_drv -f md
    

    此命令的运行导致配置得以读取,并创建必要的设备。


    注 –

    在进行下一步骤之前,请等待几秒钟以确保有充足时间装入 md 驱动程序。


  7. 使用 metasync 命令确保同步根 (/) 文件系统。例如:


    # metasync d0
    
  8. /a 目录上挂载根镜像元设备。


    # mount /dev/md/dsk/d0 /a
    
  9. 更新上一步所挂载设备的引导归档文件。


    # bootadm update-archive -v -R /a
    

    如果更新引导归档文件失败或出现错误消息,请执行以下操作:

    1. 更新 /a 目录上 md.conf 文件的时间戳,这将强制更新引导归档文件。


      # touch /a/kernel/drv/md.conf
      
    2. 运行 bootadm 命令更新引导归档文件。


      # bootadm update-archive -v -R /a
      

      完成引导归档文件的更新需要几分钟的时间。如果引导归档文件已成功更新,将显示一条类似以下内容的消息:


      changed /a/etc/system
         cannot find: /a/etc/cluster/nodeid: No such file or directory
         cannot find: /a/etc/devices/mdi_ib_cache: No such file or directory
         Creating ram disk on /a
         updating /a/platform/i86pc/boot_archive
  10. 卸载 /a


    # unmount /a
    
  11. 重新引导系统。

Procedure如何列出引导归档文件的内容

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 要列出引导归档文件中包括的文件和目录,请键入:


    # bootadm list-archive
    
    list-archive

    列出引导归档文件中包括的文件和目录。同时适用于基于 SPARC 的系统和基于 x86 的系统。

Procedurex86: 如何找到活动的 GRUB 菜单并列出当前菜单项

使用此过程可确定活动 GRUB 菜单的位置并列出当前的 GRUB 菜单项。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 要列出活动 GRUB 菜单的位置和当前的 GRUB 菜单项,请键入:


    # bootadm list-menu
    
    list-menu

    列出活动 GRUB 菜单的位置,以及当前的 GRUB 菜单项。下面的列表中包括有关 autoboot-timeout、缺省项编号以及每个项的标题的信息。适用于基于 x86 的系统。


示例 13–1 列出活动 GRUB 菜单的位置和当前的 GRUB 菜单项


# bootadm list-menu
The location for the active GRUB menu is: /stubboot/boot/grub/menu.lst
default=0
timeout=10
(0) Solaris10
(1) Solaris10 Failsafe
(2) Linux

Procedurex86: 如何设置活动 GRUB 菜单的缺省引导项

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 要设置活动 GRUB 菜单中的缺省引导项,请键入:


    # bootadm set-menu menu-entry
    
    set-menu

    维护 GRUB 菜单。活动 GRUB 菜单的位置为 boot/grub/menu.lst适用于基于 x86 的系统。

    menu-entry

    指定要设置为缺省菜单项的 GRUB 菜单项。

  3. 要检验缺省菜单项是否已更改,请键入:


    # bootadm list-menu
    

    此时应该显示新的缺省菜单项。


示例 13–2 切换 GRUB 缺省菜单项

以下示例说明如何将缺省 GRUB 菜单切换到上一个示例中显示的菜单项之一。所选菜单项为菜单项 2 "Linux"。


# bootadm set-menu default=2

另请参见

有关每个 GRUB 实现中 menu.lst 文件的说明,请参见 x86: 受支持的 GRUB 版本