本章介绍如何管理 Oracle Solaris 引导归档文件。还详细介绍使用 bootadm 命令的过程。
以下列出本章所介绍的信息:
有关引导过程的概述信息,请参见第 9 章。有关引导系统的逐步说明,请参见第 12 章。
任务 |
说明 |
参考 |
---|---|---|
管理 boot-archive 服务。 |
boot-archive 服务由服务管理工具 (Service Management Facility, SMF) 控制。使用 svcadm 命令可启用和禁用服务。使用 svcs 命令可检验 boot-archive 服务是否正在运行。 | |
x86:使用 auto-reboot-safe 属性,清除引导归档文件更新故障。 |
当因为 auto-reboot-safe 属性被设置为 false,引导归档文件在基于 x86 的系统上更新失败时,使用此过程。 | |
使用 bootadm 命令清除引导归档文件更新故障 |
使用此过程手动清除 SPARC 平台和 x86 平台上的引导归档文件更新故障(如果 auto-reboot-safe 属性设置为 true)。 | |
使用 bootadm 命令手动更新引导归档文件。 |
使用 bootadm update-archive 命令可手动更新引导归档文件。 | |
在具有 Solaris 卷管理器 (Solaris Volume Manager, SVM) 元设备镜像根的系统上手动更新引导归档文件。 |
在使用元设备镜像的系统上,使用 bootadm 命令更新引导归档文件之前,必须手动挂载该设备。 | |
使用 bootadm 命令列出引导归档文件的内容。 |
使用 bootadm list-archive 命令可列出引导归档文件的内容。 | |
x86:使用 bootadm 命令找到活动的 GRUB 菜单。 |
使用 bootadm list-menu 命令可确定活动的 GRUB 菜单的位置。 | |
x86:使用 bootadm 命令在 GRUB 菜单中设置缺省引导项。 |
使用 bootadm set-menu 命令可在 GRUB 菜单中设置缺省引导项。 |
在某个系统上安装 Oracle Solaris OS 时,bootadm 命令将创建一个主引导归档文件和一个故障安全归档文件。
主引导归档文件是根 (/) 文件系统的子集。此引导归档文件包含所有的内核模块、driver.conf 文件以及一些配置文件。这些文件位于 /etc 目录中。挂载根 (/) 文件系统之前,内核将读取引导归档文件中的文件。挂载根 (/) 文件系统之后,内核将从内存中放弃引导归档文件。然后,系统将针对引导设备执行文件 I/O。
组成 SPARC 引导归档文件的文件位于 /platform 目录中。
此目录的内容被划分为三组文件:
sun4u 引导归档文件所需的文件
sun4v 引导归档文件所需的文件
sun4us 引导归档文件所需的文件
组成 x86 引导归档文件的文件位于 /platform/i86pc 目录中。
要列出引导归档文件中包括的文件和目录,请使用 bootadm list-archive 命令。
如果更新了归档文件中的任何文件,则必须重建引导归档文件。为使修改生效,必须在重新引导系统之前重建归档文件。
故障安全引导归档文件是在安装 Solaris OS 时创建的第二种类型的归档文件。
故障安全引导归档文件具有以下优点和特征:
自给自足
可以自行进行引导
缺省情况下在安装 OS 期间创建
不需要维护
有关以故障安全模式引导系统的更多信息,请参见在故障安全模式下引导基于 SPARC 的系统和在故障安全模式下引导基于 x86 的系统。。
boot-archive 服务由服务管理工具 (Service Management Facility, SMF) 控制。boot-archive 服务实例是 svc:/system/boot-archive:default。svcadm 命令用于启用和禁用服务。
要确定 boot-archive 服务是否正在运行,请使用 svcs 命令。
有关更多信息,请参见 svcadm(1M) 和 svcs(1) 手册页。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
要启用或禁用 boot-archive 服务,请键入:
# svcadm enable | disable system/boot-archive |
要检验 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 命令清除引导归档文件自动更新故障。
在基于 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. |
然后系统进入系统维护模式。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
重新引导系统。
# reboot |
要阻止发生此类故障,如果活动的 BIOS 引导设备和 GRUB 菜单项指向当前的引导实例,请按照以下步骤操作:
将 svc:/system/boot-config SMF 服务的 auto-reboot-safe 属性设置为 true,如下所示:
# svccfg -s svc:/system/boot-config:default setprop config/auto-reboot-safe = true |
验证 auto-reboot-safe 属性是否设置正确。
# svccfg -s svc:/system/boot-config:default listprop |grep config/auto-reboot-safe config/auto-reboot-safe boolean true |
在引导系统过程中,如果显示类似以下内容的警告消息,请按照相应的步骤操作:
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 命令手动更新过时的引导归档文件。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
要更新引导归档文件,请键入:
# bootadm update-archive |
管理系统中的引导归档文件。
根据需要更新当前的引导归档文件。同时适用于基于 SPARC 的系统和基于 x86 的系统。
重新引导系统。
# reboot |
使用 /sbin/bootadm 命令可以执行以下任务:
手动更新系统中当前的引导归档文件。
列出系统中的引导归档文件中包括的文件和目录。
仅适用于 x86:维护 GRUB 菜单。
仅适用于 x86:找到活动的 GRUB 菜单以及当前的 GRUB 菜单项。
该命令的语法如下:
/sbin/bootadm [subcommand] [-option] [-R altroot] |
有关 bootadm 命令的更多信息,请参见 bootadm(1M) 手册页。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
要更新引导归档文件,请键入:
# bootadm update-archive |
管理系统中的引导归档文件。
根据需要更新当前的引导归档文件。同时适用于基于 SPARC 的系统和基于 x86 的系统。
要更新备用根上的引导归档文件,请键入:
# bootadm update-archive -R /a |
指定要应用于 update-archive 子命令的备用 root 路径。
不得使用 -R 选项引用任何非全局区域的根 (/) 文件系统。否则,可能会损坏全局区域的文件系统,危及全局区域的安全性,或者损坏非全局区域的文件系统。请参见 zones(5) 手册页。
重新引导系统。
# reboot |
以下过程介绍了如何在故障安全引导过程中挂载已镜像的元设备。在此过程中,所使用的根 (/) 文件系统为 /dev/dsk/c0t0d0s0。
引导故障安全归档文件。
SPARC 平台: 在 ok 提示符中,键入以下命令:
ok boot -F failsafe |
如果系统已运行,则打开终端窗口,成为超级用户并键入以下命令:
# reboot -- "-F failsafe" |
有关更多信息,请参见 如何在故障安全模式下引导基于 SPARC 的系统。
x86 平台:通过在 GRUB 菜单中选择故障安全引导项引导系统。
有关更多信息,请参见 如何在故障安全模式下引导基于 x86 的系统。
在故障安全模式下引导系统产生以下输出:
Starting shell. # |
在故障安全引导过程中,当系统提示您选择要挂载的设备时,请键入 q 来指明没有要挂载的设备。
Please select a device to be mounted (q for none)[?,??,q]: q |
暂时将根 (/) 文件系统的子镜像作为 /a 目录上的只读文件挂载。
# mount -o ro /dev/dsk/c0t0d0s0 /a |
将 md.conf 文件复制到 /kernel/drv 目录。
# cp /a/kernel/drv/md.conf /kernel/drv/ |
卸载 /a 目录。
# unmount /a |
使用 devfsadm 命令装入 md 驱动程序。
# update_drv -f md |
此命令的运行导致配置得以读取,并创建必要的设备。
在进行下一步骤之前,请等待几秒钟以确保有充足时间装入 md 驱动程序。
使用 metasync 命令确保同步根 (/) 文件系统。例如:
# metasync d0 |
在 /a 目录上挂载根镜像元设备。
# mount /dev/md/dsk/d0 /a |
更新上一步所挂载设备的引导归档文件。
# bootadm update-archive -v -R /a |
如果更新引导归档文件失败或出现错误消息,请执行以下操作:
更新 /a 目录上 md.conf 文件的时间戳,这将强制更新引导归档文件。
# touch /a/kernel/drv/md.conf |
运行 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 |
卸载 /a。
# unmount /a |
重新引导系统。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
要列出引导归档文件中包括的文件和目录,请键入:
# bootadm list-archive |
列出引导归档文件中包括的文件和目录。同时适用于基于 SPARC 的系统和基于 x86 的系统。
使用此过程可确定活动 GRUB 菜单的位置并列出当前的 GRUB 菜单项。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
要列出活动 GRUB 菜单的位置和当前的 GRUB 菜单项,请键入:
# bootadm list-menu |
列出活动 GRUB 菜单的位置,以及当前的 GRUB 菜单项。下面的列表中包括有关 autoboot-timeout、缺省项编号以及每个项的标题的信息。仅适用于基于 x86 的系统。
# 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 |
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
要设置活动 GRUB 菜单中的缺省引导项,请键入:
# bootadm set-menu menu-entry |
维护 GRUB 菜单。活动 GRUB 菜单的位置为 boot/grub/menu.lst。仅适用于基于 x86 的系统。
指定要设置为缺省菜单项的 GRUB 菜单项。
要检验缺省菜单项是否已更改,请键入:
# bootadm list-menu |
此时应该显示新的缺省菜单项。
以下示例说明如何将缺省 GRUB 菜单切换到上一个示例中显示的菜单项之一。所选菜单项为菜单项 2 "Linux"。
# bootadm set-menu default=2 |
有关每个 GRUB 实现中 menu.lst 文件的说明,请参见 x86: 受支持的 GRUB 版本。