以下各节包含有关在 Solaris OS 中管理 GRUB 的其他参考信息。
x86: GRUB 术语
要彻底掌握 GRUB 概念,了解以下术语是至关重要的。
注 –
本列表中介绍的某些术语不是基于 GRUB 的引导所独有的。
- boot archive(引导归档文件)
用于引导 Solaris OS 的关键文件的集合。在挂载根文件系统前,系统启动过程中将需要这些文件。系统中将维护多个引导归档文件:
- boot loader(引导装载器)
打开系统电源后运行的第一个软件程序。此程序将开始执行引导过程。
- failsafe archive(故障安全归档文件)
请参见引导归档文件。
- GRUB
GNU GRand Unified Bootloader (GRUB)
是具有菜单界面的开源引导装载器。该菜单显示系统上安装的操作系统的列表。使用 GRUB 可以轻松地引导各种不同的操作系统,如
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 命令将 stage1 和 stage2 映像写入磁盘。stage1 映像必须能够接收有关磁盘上的 stage2 映像的位置的信息。使用 installgrub 命令,这是安装 GRUB 引导块时支持方法。
用于配置 GRUB 的命名约定
GRUB 使用的设备命名约定与以前的 Solaris 发行版稍有不同。了解 GRUB 设备命名约定可以帮助您在系统上配置 GRUB
时正确指定驱动器和分区信息。
下表介绍了该 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 |
Solaris | fdisk 分区 2 |
Solaris 9 OS | 片 0 |
Solaris 10 10/08 OS | 片 3 |
根据上述信息,GRUB 菜单应该如下所示:
title 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
|
注 –
Solaris 片必须为活动分区。此外,请不要在 Windows 菜单下指示 makeactive。这样做将导致系统每次都引导 Windows。请注意,如果 Linux 已在主引导块上安装了 GRUB,则您不能访问 Solaris
引导选项。无论您是否将 Solaris 分区指定为活动分区,都无法访问 Solaris 引导选项。
在这种情况下,可以执行以下操作之一:
通过修改 Linux 上的菜单,从 Linux GRUB 进行链接装入。
链接装入是使用其他引导装载器装入不受支持的操作系统的机制。
通过运行带有 -m 选项的 installgrub 命令,将主引导块替换为 Solaris GRUB:
# installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/root-slice
|
有关更多信息,请参见 installgrub(1M) 手册页。
有关 Solaris Live Upgrade 引导环境的信息,请参见《Solaris 10 安装指南:Solaris Live Upgrade 和升级规划》。
x86: 支持的 GRUB 实现
在 Solaris 10 OS 中,GRUB 使用多引导实现。在 Solaris Express 发行版中,menu.lst 文件的内容会有所不同,具体取决于您所运行的 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 文件 (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 文件 (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
|