本章对如何引导系统进行了概述。本章中介绍了 Oracle Solaris 引导设计、引导过程以及在 Oracle Solaris OS 中引导系统的各种方法。
以下列出本章所介绍的信息:
有关引导 Oracle Solaris 系统的说明,请参见第 12 章
有关引导未实现 GRUB 的 Solaris 系统的说明,请参见第 16 章。
有关关闭和引导系统方面的新增功能,请参见关闭和引导系统方面的新增功能。
有关管理引导装载器和修改引导行为的概述信息和说明,请参见第 11 章。
有关通过服务管理工具 (Service Management Facility, SMF) 管理引导服务的信息,请参见SMF 和引导。
本节中的信息适用于 SPARC 和 x86 平台。
基本的 Oracle Solaris 引导设计具有以下特点:
使用引导归档文件
引导归档文件是一个 RAM 磁盘 (ramdisk) 映像,它包含引导系统所需的所有文件。当您安装 Solaris OS 时,将创建两个引导归档文件:一个主归档文件和一个故障安全归档文件。有关更多信息,请参见SPARC 上引导归档文件的实现。
bootadm 命令也进行了修改,以便在 SPARC 平台上使用。此命令的作用与在 x86 平台上相同。bootadm 命令可自动处理归档文件更新和验证的细节。在安装或系统升级期间,bootadm 命令将创建初始引导归档文件。在系统正常关机过程中,关机过程会根据根文件系统检查引导归档文件的内容。如果存在任何不一致的情况,系统将重新生成引导归档文件,以确保在重新引导时引导归档文件和根 (/) 文件系统保持同步。您还可以使用 bootadm 命令手动更新引导归档文件。请参见使用 bootadm 命令管理引导归档文件。
bootadm 命令的某些选项不能在基于 SPARC 的系统上使用。
有关更多信息,请参见 bootadm(1M) 和 boot(1M) 手册页。
在安装和故障安全操作期间使用 RAM 磁盘 (ramdisk) 映像作为根文件系统
现在,该过程在 SPARC 平台上和 x86 平台上相同。RAM 磁盘 (ramdisk) 映像源自引导归档文件,然后会被从引导设备传送到系统。
在 SPARC 平台上,OpenBoot PROM 继续用于访问引导设备以及将引导归档文件传送到系统的内存。与此相反,在 x86 平台上,系统最初由 BIOS 控制。BIOS 用于启动从网络设备传送引导归档文件或用于运行引导装载器。在 Oracle Solaris OS 中,用于从磁盘传送引导归档文件的 x86 引导装载器为 GRUB。请参见x86: 引导过程。
对于软件安装,RAM 磁盘 (ramdisk) 映像是用于整个安装过程的根文件系统。使用 RAM 磁盘 (ramdisk) 映像实现此目的消除了从可移除介质引导系统的需要。RAM 磁盘 (ramdisk) 文件系统类型可以是 High Sierra 文件系统 (High Sierra File System, HSFS) 或 UFS。
SPARC 平台上的引导过程进行了重新设计和改进,以便增加与 x86 引导体验的共同性。使用新的 SPARC 引导设计,无需对引导链的多个部分进行任何更改即可添加新功能,如新的文件系统类型。这些更改还包括实现了引导阶段独立性。
这些改进的突出方面包括:
SPARC 平台和 x86 平台上的引导过程的共同性
网络引导体验方面的共同性
引导体系结构灵活性,使得从不同文件系统类型引导系统更加容易
以下四个引导阶段现在相互独立:
Open Boot PROM (OBP) 阶段
SPARC 平台上的引导过程的 OBP 阶段没有发生变化。
对于磁盘设备,固件驱动程序通常使用 OBP 标签软件包的 load 方法,该方法解析位于磁盘开头的 VTOC 标签,以便定位指定的分区。随后,该分区的扇区 1-15 被读取到系统的内存中。此区域通常称为引导块,并且通常包含一个文件系统读取器。
引导程序阶段
在此阶段中,将会读取和执行引导归档文件。请注意,这是引导过程中唯一一个需要了解引导文件系统格式的阶段。在某些情况下,引导归档文件还可能是安装 miniroot。用于传送引导装载器和引导归档文件的协议包括本地磁盘访问、NFS 和 HTTP。
RAM 磁盘 (ramdisk) 阶段
ramdisk 是引导归档文件,由内核模块和引导 Oracle Solaris OS 实例所需的任何其他部件组成。或者是安装程序 miniroot。
SPARC 引导归档文件与 x86 引导归档文件完全相同。引导归档文件系统格式是专用的。因此,引导程序或内核不需要知道在系统引导过程中使用的文件系统类型(例如,HSFS 或 UFS 文件系统)。RAM 磁盘 (ramdisk) 从引导归档文件中提取内核映像,然后执行它。为了最大限度地减小 RAM 磁盘 (ramdisk)(尤其是驻留在系统内存中的安装 miniroot)的大小,对 miniroot 的内容进行了压缩。此压缩在每文件级别执行,并且在单个文件系统内实现。然后,使用 /usr/sbin/fiocompress 实用程序压缩该文件并将该文件标记为已压缩。
此实用程序具有一个用于文件压缩文件系统 dcfs 的专用接口。
内核阶段
内核阶段是引导过程的最后一个阶段。在此阶段中,将初始化 Oracle Solaris OS,并在 RAM 磁盘 (ramdisk) 上挂载一个最小根文件系统,该磁盘根据引导归档文件构造。如果引导归档文件是安装 miniroot,则 OS 将继续执行安装过程。否则,RAM 磁盘 (ramdisk) 将包含一组足够用来在指定的根设备上挂载根文件系统的内核文件和驱动程序。
然后,内核从引导归档文件中提取主模块的剩余部分,初始化其自身,挂载实际的根文件系统,然后放弃引导归档文件。
基于 RAM 磁盘 (ramdisk) 的 miniroot 通过 root_archive 命令进行压缩和解压缩。请注意,只有支持新引导体系结构的基于 SPARC 的系统能够压缩和解压缩 miniroot 的压缩版本。
Oracle Solaris 10 版本的 root_archive 工具与其他 Oracle Solaris 发行版中包含的该工具版本不兼容。因此,仅应在运行与归档文件相同的发行版的系统上执行 RAM 磁盘 (ramdisk) 操作。
有关压缩和解压缩 miniroot 的更多信息,请参见 root_archive(1M) 手册页。
要安装或升级 Oracle Solaris OS,您需要从 CD/DVD 或者从网络引导。在这两种情况下,miniroot 的根文件系统都是 RAM 磁盘 (ramdisk)。此过程使您无需重新引导系统即可弹出 Solaris 引导 CD 或 DVD。请注意,引导归档文件包含整个 miniroot。安装 DVD 的构造已修改为使用 HSFS 引导块。miniroot 随后会被压缩为作为 RAM 磁盘 (ramdisk) 装入的单个 UFS 文件。请注意,miniroot 可用于所有 OS 安装类型。
对于 Oracle Solaris 10 9/10,安装基于 SPARC 系统的最低内存要求为 384 MB。这一内存量只允许进行基于文本的安装。对于基于 x86 的系统,最低内存要求为 768 MB。另外,要运行安装程序 GUI 程序,最低需要 768 MB 内存。
网络引导服务器设置过程已进行了修改。引导服务器现在提供了一个引导程序以及 RAM 磁盘 (ramdisk),对于所有安装,无论是从 CD/DVD 引导还是使用 NFS 或 HTTP 执行网络安装,该 RAM 磁盘 (ramdisk) 都作为单个 miniroot 下载和引导。对于通过 NFS 或 wanboot 程序 (HTTP) 进行的网络引导,网络引导服务器的管理保持不变。但是,网络引导过程的内部实现已进行了修改,如下所述:
引导服务器以引导归档文件的形式将引导传送到目标系统。
目标系统在 RAM 磁盘 (ramdisk) 中解压缩引导归档文件。
然后,该引导归档文件将作为初始只读根设备挂载。
有关引导基于 SPARC 的系统的更多信息,请参见引导基于 SPARC 的系统(任务图)。
在基于 SPARC 的系统上,当您从 ok 提示符引导系统时,将自动选择缺省引导设备。通过更改 boot-device 的 NVRAM 变量可以指定备用引导设备。您还可以在引导时从命令行指定备用引导设备或备用内核(引导文件)。请参见SPARC: 如何引导除缺省内核以外的内核。
引导归档文件以前只在 x86 平台上可用,现在已成为 SPARC 引导体系结构的不可或缺的组成部分。
bootadm 命令已进行了修改,以便在 SPARC 平台上使用。此命令的作用与在 x86 平台上相同。bootadm 命令可自动处理归档文件更新和验证的细节。在 x86 平台上,bootadm 命令在安装或系统升级期间更新 GRUB 菜单。您还可以使用 bootadm 命令手动管理引导归档文件。
引导归档文件服务由服务管理工具 (Service Management Facility, SMF) 管理。引导归档文件的服务实例是 svc:/system/boot-archive:default。要启用、禁用或刷新此服务,请使用 svcadm 命令。有关使用 SMF 管理服务的信息,请参见第 18 章。
在受支持的 Solaris 发行版上,对于基于 SPARC 和基于 x86 的系统而言,都有两种引导归档文件:
主引导归档文件
故障安全引导归档文件
SPARC 引导归档文件中包含的文件位于 /platform 目录中。
/platform 目录的内容被划分为两组文件:
sun4u 引导归档文件所需的文件
sun4v 引导归档文件所需的文件
有关管理引导归档文件的信息,请参见管理 Oracle Solaris 引导归档文件(任务图)。
在基于 x86 的系统中,开放源代码 GRand Unified Bootloader (GRUB) 是缺省引导装载器。GRUB 负责将引导归档文件装入系统的内存中。引导归档文件是一些关键文件的集合,挂载根文件系统之前,在系统启动过程中需要这些文件。引导归档文件是用于引导 Oracle Solaris OS 的接口。您可以在 http://www.gnu.org/software/grub/grub.html 中找到有关 GRUB 的更多信息。另请参见 grub(5) 手册页。
打开基于 x86 的系统后,基本输入/输出系统 (Basic Input/Output System, BIOS) 将初始化 CPU、内存和平台硬件。初始化阶段完成后,BIOS 从所配置的引导设备装入引导装载器,然后将对系统的控制权传送给引导装载器。引导装载器是在打开系统后运行的第一个软件程序。此程序将开始执行引导过程。
GRUB 实现了一个菜单界面,其中包括在名为 menu.lst 文件的配置文件中预定义的引导选项。GRUB 还具有一个可从 GUI 菜单界面访问的命令行界面,该界面可用于执行各种引导功能,包括修改缺省引导行为。在 Solaris OS 中,GRUB 实现符合多引导规范,http://www.gnu.org/software/grub/grub.html 中详细介绍了该规范。
由于 Oracle Solaris 内核完全符合多引导规范,因此可使用 GRUB 来引导基于 x86 的系统。使用 GRUB,可以引导单个基于 x86 的系统上安装的各种操作系统。例如,通过在引导时在 GRUB 菜单中选择引导项,可以单独引导 Oracle Solaris、Linux 或 Windows,或者通过配置 menu.lst 文件以便在缺省情况下引导特定 OS。
由于 GRUB 具有直观的文件系统和内核可执行格式,因此您无需记录内核在磁盘上的物理位置即可装入操作系统。使用基于 GRUB 的引导,内核的装入是通过指定其文件名以及内核所在的驱动器和分区来实现的。有关更多信息,请参见用于配置 GRUB 的命名约定。
有关使用 GRUB 引导系统的逐步说明,请参见使用 GRUB 引导基于 x86 的系统(任务图)。
另请参见以下手册页:
findroot 命令(其作用与 GRUB 以前使用的 root 命令类似)具有增强的功能,用于搜索目标磁盘(无论引导设备是什么)。findroot 命令还支持从 Oracle Solaris ZFS 根文件系统引导。
此命令的 menu.lst 项的最常见格式为:
findroot (rootfs0,0,a) kernel$ /platform/i86pc/kernel/$ISADIR/unix module$ /platform/i86pc/$ISADIR/boot_archive |
在某些 Oracle Solaris 发行版中,该项为:
title Solaris 10 10/08 s10x_u6wos_03 X86 findroot (pool_rpool,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (pool_rpool,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-safe |
有关更多信息,请参见x86: findroot 命令的实现。
有关 GRUB 的参考信息,请参见第 15 章。
Oracle Solaris 中已添加支持,可从 Oracle Solaris ZFS 根文件系统引导。安装软件还支持系统升级和修补具有 ZFS 根的系统。引导、系统操作和安装过程都已进行修改,以便支持此更改。对引导的更改包括 SPARC 平台实现了新的引导体系结构。新的 SPARC 引导设计包括用于提高与 Solaris x86 引导体系结构的共同性的增强功能。
使用此功能之前,请查看《Oracle Solaris 10 9/10 发行说明》以找出有关的任何已知问题。
有关 Oracle Solaris ZFS 的更多信息(包括一个完整的术语表),请参见 《Oracle Solaris ZFS 管理指南》中的“ZFS 术语”。
在执行 Oracle Solaris 软件的全新安装或者使用 Oracle Solaris Live Upgrade 将 UFS 根文件系统迁移到 Oracle Solaris ZFS 根文件系统之前,请确保满足以下要求:
Solaris 发行版信息:
从 Solaris 10 10/09 发行版开始,提供了安装 Oracle Solaris ZFS 根文件系统并从中进行引导的功能。要执行 Oracle Solaris Live Upgrade 操作以迁移到 ZFS 根文件系统,您必须已安装或升级到 Solaris 10 10/09 或以上发行版。
Oracle Solaris ZFS 存储池空间要求:
因为交换设备和转储设备在 ZFS 根环境中不共享,所以可引导的 ZFS 根文件系统所要求的可用池空间的最低容量要大于可引导的 UFS 根文件系统所要求的容量。
交换卷的大小可按照物理内存的一半计算,但不超过 2 GB 且不少于 512 MB。转储卷的大小由内核基于 dumpadm 信息和物理内存大小进行计算。您可以将交换卷和转储卷的大小调整为在 Oracle Solaris JumpStart 配置文件中或初始安装期间选择的大小(只要新的大小支持系统操作)。有关更多信息,请参见 《Oracle Solaris ZFS 管理指南》中的“对于交换和转储设备的 ZFS 支持”。
从 Oracle Solaris ZFS 根文件系统引导的工作原理与从 UFS 文件系统引导有所不同。由于 ZFS 针对安装和引导应用了若干新概念,所以用于引导系统的某些基本管理做法已发生变化。从 ZFS 根文件系统引导与从 UFS 根文件系统引导之间最显著的差别在于,对于 ZFS,设备标识符不唯一地标识根文件系统(因而也不唯一地标识 BE)。对于 ZFS,设备标识符唯一地标识存储池。存储池可能包含多个可引导的数据集(根文件系统)。因此,除了指定引导设备外,还必须指定由引导设备标识的池中的根文件系统。
在基于 x86 的系统中,如果由 GRUB 标识的引导设备包含一个 ZFS 存储池,则用于创建 GRUB 菜单的 menu.lst 文件位于该池的数据集分层结构的根处的数据集中。此数据集与池具有相同的名称。在每个池中,都有一个这样的数据集。
缺省可引导数据集是在引导时挂载的池的可引导数据集,并且由根池的 bootfs 属性定义。在引导根池中的设备时,此属性所指定的数据集随后将作为根文件系统挂载。
新的 bootfs 池属性是系统用来指定某个给定池的缺省可引导数据集的机制。在引导根池中的设备时,缺省情况下作为根文件系统挂载的数据集是由 bootfs 池属性标识的数据集。
在基于 SPARC 的系统上,可以使用 boot 命令的新 -Z dataset 选项来覆盖缺省 bootfs 池属性。
在基于 x86 的系统上,可以通过在引导时在 GRUB 菜单中选择另一个引导环境来覆盖缺省 bootfs 池属性。
在 SPARC 平台上,新增了以下两个引导选项:
-L 选项,该选项用于列显系统中所有可用 BE 的列表。
ok boot -L |
-L 选项是从 ok 提示符下运行的。此选项仅显示系统中可用 BE 的列表。要引导系统,请使用 -Z 引导选项。
使用 boot 命令的 -Z 选项,可以指定除 bootfs 池属性所指定的缺省数据集以外的其他可引导数据集。
ok boot -Z dataset |
在具有 ZFS 引导装载器的系统上使用 -L 选项时显示的 BE 列表反映了在该特定系统上可用的 menu.lst 项。除了提供可用 BE 的列表以外,还提供了有关选择 BE 和使用 -Z 选项引导系统的说明。菜单项的 bootfs 值指定的数据集会用于引导程序所读取的所有后续文件,例如,引导归档文件和位于 /etc 目录中的各种配置文件。此数据集随后将作为根文件系统挂载。
有关逐步说明,请参见在基于 SPARC 的系统上从指定的 ZFS 根文件系统引导。
在 x86 平台上,已引入一个新的 GRUB 关键字 $ZFS-BOOTFS。引导基于 x86 的系统时,如果与 GRUB 菜单项对应的根文件系统是一个 ZFS 数据集,则在缺省情况下,该 GRUB 菜单项包含带有 -$ZFS-BOOTFS 标记的 B 选项。如果您安装一个支持 ZFS 引导装载器的发行版,则 GRUB menu.lst 文件将自动使用此信息进行更新。缺省的可引导数据集由 bootfs 属性标识。
在运行支持 ZFS 引导装载器的发行版的基于 x86 的系统上,此信息将包含在 GRUB menu.lst 文件中。
有关从 ZFS 引导系统的逐步说明,请参见x86: 在基于 x86 的系统上从指定的 ZFS 根文件系统引导。