系统管理指南:基本管理

x86: 支持 Oracle Solaris OS 中的 GRUB

以下各节包含有关在 Oracle Solaris OS 中管理 GRUB 的其他参考信息。

x86: GRUB 术语

要彻底掌握 GRUB 概念,了解以下术语是至关重要的。


注 –

本列表中介绍的某些术语不是基于 GRUB 的引导所独有的。


boot archive(引导归档文件)

用于引导 Oracle Solaris OS 的关键文件的集合。在挂载根文件系统前,系统启动过程中将需要这些文件。系统中将维护多个引导归档文件:

  • 主引导归档文件,用于在基于 x86 的系统上引导 Oracle Solaris OS。

  • 故障安全引导归档文件,当主引导归档文件被破坏时用于进行恢复。该引导归档文件可在没有挂载根文件系统的情况下启动系统。在 GRUB 菜单中,该引导归档文件被称为故障安全。该归档文件的主要用途是重新生成通常用来引导系统的主引导归档文件。

boot loader(引导装载器)

打开系统电源后运行的第一个软件程序。此程序将开始执行引导过程。

failsafe archive(故障安全归档文件)

请参见引导归档文件。

GRUB

GNU GRand Unified Bootloader (GRUB) 是具有菜单界面的开源引导装载器。该菜单显示系统上安装的操作系统的列表。使用 GRUB 可以轻松地引导各种不同的操作系统,如 Oracle Solaris OS、Linux 或 Windows。

GRUB main menu(GRUB 主菜单)

列出系统中安装的操作系统的引导菜单。使用该菜单,无需修改 BIOS 或 fdisk 分区设置即可轻松地引导操作系统。

GRUB edit menu(GRUB 编辑菜单)

GRUB 主菜单的一个子菜单。GRUB 命令将显示在该子菜单中。可以编辑这些命令以更改引导行为。

menu.lst file(menu.lst 文件)

一个列出系统中安装的所有操作系统的配置文件。该文件的内容指定在 GRUB 菜单中显示的操作系统的列表。使用该菜单,无需修改 BIOS 或 fdisk 分区设置即可轻松地引导操作系统。

miniroot

位于 Solaris 安装介质上的最小可引导根 (/) 文件系统。miniroot 包含安装和升级系统所需的 Solaris 软件。在基于 x86 的系统上,miniroot 被复制到系统中,用作故障安全引导归档文件。有关故障安全引导归档文件的详细信息,请参见 boot archive(引导归档文件)。

primary boot archive(主引导归档文件)

请参见引导归档文件。

x86: GRUB 的功能组件

GRUB 包含以下功能组件:

您无法使用 dd 命令将 stage1stage2 映像写入磁盘。stage1 映像必须能够接收有关磁盘上的 stage2 映像的位置的信息。使用 installgrub 命令,这是安装 GRUB 引导块时支持方法。

用于配置 GRUB 的命名约定

GRUB 使用的设备命名约定与以前的 Solaris 发行版稍有不同。了解 GRUB 设备命名约定可以帮助您在系统上配置 GRUB 时正确指定驱动器和分区信息。

下表介绍了此 Oracle Solaris 发行版的 GRUB 设备命名约定。

表 15–1 GRUB 设备的约定

设备名 

说明 

(fd0)

第一张软盘 

(fd1)

第二个软盘 

(nd)

网络设备 

(hd0,0)

第一个硬盘上的第一个 fdisk 分区

(hd0,1)

第一个硬盘上的第二个 fdisk 分区

(hd0,0,a),

第一个硬盘上的第一个 fdisk 分区上的片 a

(hd0,0,b)

第一个硬盘上的第一个 fdisk 分区上的片 b


注 –

所有的 GRUB 设备名称都必须括在括号中。


有关 fdisk 分区的更多信息,请参见《系统管理指南:设备和文件系统》中的“fdisk 分区创建准则”

findroot 命令使用的命名约定

从 Solaris 10 10/08 发行版开始,findroot 命令取代了之前 GRUB 使用的 root 命令。findroot 命令提供了用于搜索目标磁盘(无论使用哪个引导设备)的增强功能。findroot 命令还支持从 ZFS 根文件系统引导。

下面说明了 findroot 命令使用的适用于不同 GRUB 实现的设备命名约定:

GRUB 如何支持多个操作系统

本节介绍 GRUB 如何支持位于同一个磁盘上的多个操作系统。下面是一个基于 x86 的系统的示例,该系统在同一个磁盘上安装了 Solaris 10 10/08 OS、Solaris 9 OS、Linux 和 Windows。

表 15–2 GRUB 菜单配置样例

操作系统 

在磁盘上的位置 

Windows 

fdisk 分区 0

Linux 

fdisk 分区 1

Oracle Solaris 

fdisk 分区 2

Solaris 9 OS 

0

Solaris 10 10/08 OS 

3

根据上述信息,GRUB 菜单应该如下所示:


title Oracle Solaris 10
			findroot (pool_rpool,0,a)
			kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS
			module /platform/i86pc/boot_archive
title Solaris 9 OS (pre-GRUB)
			root (hd0,2,a)
			chainloader +1
			makeactive
title Linux
			root (hd0,1)
			kernel <from Linux GRUB menu...>
			initrd <from Linux GRUB menu...>
title Windows
			root (hd0,0)
			chainloader +1

注 –

Oracle Solaris 片必须为活动分区。此外,请不要在 Windows 菜单下指示 makeactive。这样做将导致系统每次都引导 Windows。请注意,如果 Linux 已在主引导块上安装了 GRUB,则您不能访问 Oracle Solaris 引导选项。无论您是否将 Solaris 分区指定为活动分区,都无法访问 Solaris 引导选项。


在这种情况下,可以执行以下操作之一:

有关 Oracle Solaris Live Upgrade 引导环境的信息,请参见《Oracle Solaris 10 9/10 安装指南:Solaris Live 升级和升级规划》

x86: 受支持的 GRUB 版本

在 Oracle Solaris 10 中,GRUB 使用多重引导。menu.lst 文件的内容会有所不同,具体取决于您所运行的 Oracle Solaris 发行版、所使用的安装方法以及您是从 Oracle Solaris ZFS 根还是从 UFS 根引导系统。

menu.lst 文件说明(ZFS 支持)

下面给出了适用于包含 ZFS 引导装载器的引导环境的多个 menu.lst 文件示例:


注 –

由于 miniroot 被挂载为实际的根文件系统,所以 menu.lst 文件中的故障安全引导条目不会更改为 ZFS bootfs 属性,即使是从 ZFS 数据集读取故障安全归档文件也是如此。在引导装载器读取 miniroot 之后,不会访问 ZFS 数据集。



示例 15–1 缺省 menu.lst 文件(全新安装或标准升级)


title Solaris 10 5/08 s10x_nbu6wos_nightly 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


示例 15–2 缺省 menu.lst 文件 (Oracle Solaris Live Upgrade)


title be1
findroot (BE_be1,0,a)
bootfs rpool/ROOT/szboot_0508
kernel$  /platform/i86pc/multiboot  -B $ZFS-BOOTFS
module /platform/i86pc/boot_archive

title be1 failsafe
findroot (BE_be1,0,a)
kernel /boot/multiboot kernel/unix -s    -B console=ttyb
module /boot/x86.miniroot-safe

menu.lst 文件说明(UFS 支持)

下面给出了支持从 UFS 进行引导的系统上的 menu.lst 文件的示例。


示例 15–3 缺省 GRUB menu.lst 文件(全新安装或标准升级)


title Solaris 10 5/08 s10x_nbu6wos_nightly X86 
findroot (pool_rpool,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive

title Solaris failsafe
findroot (rootfs0,0,a)
kernel /boot/multiboot kernel/unix -s -B console-ttyb
module /boot/x86.miniroot-safe


示例 15–4 缺省 GRUB menu.lst 文件 (Oracle Solaris Live Upgrade)


title be1
findroot (BE_be1,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive

title be1 failsafe
findroot (BE_be1,0,a)
kernel /boot/multiboot kernel/unix -s    -B console=ttyb
module /boot/x86.miniroot-safe