Solaris 10 安装指南:自定义 JumpStart 和高级安装

第 4 章 x86: 基于 GRUB 引导的 Solaris 安装

本章介绍在基于 x86 的系统中,与 Solaris 安装相关的基于 GRUB 的引导。本章包含以下几节:

x86: 基于 GRUB 的引导(概述)

从 Solaris 10 1/06 发行版开始, Solaris OS 已将 GRUB(开放源代码的引导装载器)用作缺省的引导装载器。


注 –

基于 GRUB 的引导在基于 SPARC 的系统上不可用。


引导装载器是打开系统电源后第一个运行的软件程序。打开基于 x86 的系统后,基本输入/输出系统 (Basic Input/Output System, BIOS) 将初始化 CPU、内存和平台硬件。初始化阶段完成后,BIOS 从所配置的引导设备装入引导装载器,然后将对系统的控制传送给引导装载器。

GRUB 是开放源代码的引导装载器,它带有一个简单的菜单界面,该界面中所包含的引导选项是在一个配置文件中预先定义的。GRUB 还具有命令行界面,可以通过菜单界面对它进行访问来执行各种引导命令。在 Solaris OS 中,GRUB 的实现符合多引导规范。在 http://www.gnu.org/software/grub/grub.html 中有该规范的详细介绍。

因为 Solaris 内核与多引导规范完全兼容,所以可使用 GRUB 来引导基于 Solaris x86 的系统。使用 GRUB,可以更轻松地引导和安装各种操作系统。例如,在一个系统中,可以单独引导以下操作系统:

GRUB 的一个重要优点是直观的文件系统和内核可执行格式,这使得无需记录内核在磁盘上的物理位置即可装入操作系统。使用基于 GRUB 的引导,内核的装入由其文件名、驱动器及所在分区来指定。基于 GRUB 的引导取代了 Solaris Device Configuration Assistant,并使用 GRUB 菜单简化了引导过程。

x86: 基于 GRUB 的引导的工作原理

GRUB 获得了系统控制后,菜单将显示在控制台上。在 GRUB 菜单中,可以执行以下操作:

可配置的超时功能可用于引导缺省的 OS 项。按任意键将异常中止对缺省 OS 项的引导。

要查看 GRUB 菜单的示例,请参见GRUB 主菜单的说明

x86: GRUB 设备命名约定

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

下表介绍了 GRUB 设备命名约定。

表 4–1 GRUB 设备的命名约定

设备名 

描述 

(fd0), (fd1)

第一个软盘,第二个软盘 

(nd)

网络设备 

(hd0,0), (hd0,1)

第一个 bios 磁盘的第一个和第二个 fdisk 分区

(hd0,0,a), (hd0,0,b)

第一个 bios 磁盘的第一个 fdisk 分区上的 Solaris/BSD 片 0 和片 1


注 –

所有的 GRUB 设备名称都必须括在括号中。分区号从 0(零)算起,而不是从 1 算起。


有关 fdisk 分区的更多信息,请参见《System Administration Guide: Devices and File Systems》中的“Guidelines for Creating an fdisk Partition”

x86: 在何处查找有关基于 GRUB 的安装的信息

有关这些更改的更多信息,请参见以下参考资料:

表 4–2 在何处查找有关基于 GRUB 的安装的信息

主题 

GRUB 菜单任务 

更多信息 

安装 

从 Solaris OS CD 或 DVD 介质安装 

《Solaris 10 安装指南:基本安装》

从网络安装映像安装 

《Solaris 10 安装指南:基于网络的安装》中的第 II 部分, “通过局域网进行安装”

 

为网络安装配置 DHCP 服务器 

《Solaris 10 安装指南:基于网络的安装》中的“使用 DHCP 服务预配置系统配置信息(任务)”

 

使用自定义 JumpStart 程序安装 

x86: 执行自定义 JumpStart 安装

 

使用 Solaris Live Upgrade 激活或回退到引导环境 

系统管理 

有关 GRUB 和管理任务的更多详细信息 

《System Administration Guide: Basic Administration》中的第 11  章 “GRUB Based Booting (Tasks)”

x86: 基于 GRUB 的引导(规划)

本节介绍基于 GRUB 的引导基础和 GRUB 菜单。

安装 Solaris OS 时,在缺省情况下,系统上会安装两个 GRUB 菜单项。第一项是 Solaris OS。第二项是故障安全引导归档文件,将用于系统恢复。作为 Solaris 软件安装和升级过程的一部分,Solaris GRUB 菜单项将自动安装和更新。这些项由 OS 直接管理,不应该手动编辑。

在标准 Solaris OS 安装过程中,无需修改系统 BIOS 设置即可将 GRUB 安装在 Solaris fdisk 分区上。如果 OS 不在 BIOS 引导磁盘上,需要执行以下操作之一:

首选方法是在引导磁盘上安装 Solaris OS。如果计算机上安装了多个操作系统,可以向 menu.lst 文件中添加项。这些项将会在下次引导系统时显示在 GRUB 菜单上。

有关多个操作系统的其他信息,请参见《System Administration Guide: Basic Administration》中的“How Multiple Operating Systems Are Supported in the GRUB Boot Environment”

x86: 从网络上执行基于 GRUB 的安装

执行基于 GRUB 的网络引导时需要为 PXE 客户机配置的 DHCP 服务器和提供 tftp 服务的安装服务器。DHCP 服务器必须能够响应 DHCP 类、PXEClientGRUBClient。DHCP 响应必须包含以下信息:


注 –

rpc.bootparamd ,执行网络引导时服务器端通常需要该程序,而基于 GRUB 进行网络引导时不需要。


如果没有可用的 PXE 或 DHCP 服务器,可以从 CD-ROM 或本地磁盘装入 GRUB。然后可以手动配置 GRUB 中的网络并从文件服务器上下载多引导程序和引导归档文件。

有关更多信息,请参见《Solaris 10 安装指南:基于网络的安装》中的“使用 PXE 通过网络进行引导和安装概述”

GRUB 主菜单的说明

引导基于 x86 的系统时,将显示 GRUB 菜单。该菜单提供用于选择的引导项列表。引导项是安装在系统上的 OS 实例。GRUB 菜单是基于 menu.lst 文件的,该文件是一个配置文件。menu.lst 文件由 Solaris 安装程序创建并可以在安装后进行修改。 menu.lst 文件指定在 GRUB 菜单中显示的 OS 实例列表。


示例 4–1 GRUB 主菜单

在以下示例中,GRUB 主菜单显示了 Solaris 和 Microsoft Windows 操作系统。还列出了 Solaris Live Upgrade 引导环境,命名为 second_disk。请参见以下每个菜单项的说明。


GNU GRUB version 0.95 (616K lower / 4127168K upper memory)
+-------------------------------------------------------------------+
|Solaris                                                            |
|Solaris failsafe                                                   |
|second_disk                                                        |
|second_disk failsafe                                               |
|Windows                                                            |
+-------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted. Press
enter to boot the selected OS, 'e' to edit the commands before
booting, or 'c' for a command-line.
Solaris

指定 Solaris OS。

Solaris failsafe

指定在 Solaris OS 损坏时可用于恢复的引导归档文件。

second_disk

指定 Solaris Live Upgrade 引导环境。second_disk 引导环境是作为 Solaris OS 的副本创建的,并使用 luactivate 命令升级和激活。该引导环境可用于引导。

Windows

指定 Microsoft Windows OS。GRUB 会对这些分区进行检测,但不会验证该 OS 是否能够引导。


GRUB menu.lst 文件说明

GRUB menu.lst 文件列出了 GRUB 主菜单的内容。GRUB 主菜单列出了安装在系统上的所有 OS 实例的引导项,包括 Solaris Live Upgrade 引导环境。Solaris 软件升级过程保留了您对该文件所做的任何更改。

menu.lst 文件所做的任何修订将与 Solaris Live Upgrade 项一起显示在 GRUB 主菜单上。对该文件所做的任何更改将在下次重新引导系统时生效。您可以出于以下原因修订该文件:


注意 – 注意 –

请勿使用 GRUB menu.lst 文件修改 Solaris Live Upgrade 项。修改可能导致 Solaris Live Upgrade 失败。


尽管可以使用 menu.lst 文件自定义引导行为,如使用内核调试程序引导,但首选的自定义方法是使用 eeprom 命令。如果使用 menu.lst 文件来自定义,在软件升级过程中,Solaris OS 项可能会被修改。对文件的更改随后可能会丢失。

有关如何使用 eeprom 命令的信息,请参见《System Administration Guide: Basic Administration》中的“How to Set Solaris Boot Parameters by Using the eeprom Command”


示例 4–2 Menu.lst 文件

menu.lst 文件样例如下所示:


default 0
timeout 10
title Solaris
  root (hd0,0,a)
  kernel /platform/i86pc/multiboot -B console=ttya
  module /platform/i86pc/boot_archive
title Solaris failsafe
  root (hd0,0,a)
  kernel /boot/multiboot -B console=ttya -s
  module /boot/x86.miniroot.safe
#----- second_disk - ADDED BY LIVE UPGRADE - DO NOT EDIT  -----
title second_disk
  root (hd0,1,a)
  kernel /platform/i86pc/multiboot
  module /platform/i86pc/boot_archive
title second_disk failsafe
  root (hd0,1,a)
  kernel /boot/multiboot kernel/unix -s
  module /boot/x86.miniroot-safe
#----- second_disk -------------- END LIVE UPGRADE ------------
title Windows
  root (hd0,0)
  chainloader -1
default

指定超时期满后要引导的项。要更改缺省值,可以通过更改编号指定列表中的另一项。第一个标题的计数以零开始。例如,将缺省值更改为 2 以自动引导至 second_disk 引导环境。

timeout

指定了在引导缺省项前等待用户输入的时间(秒)。如果未指定超时值,则需要选择一项。

title OS 名称

指定操作系统的名称。

  • 如果是 Solaris Live Upgrade 引导环境,则 OS 名称就是当创建新引导环境时所赋予的名称。在上例中,Solaris Live Upgrade 引导环境的名称为 second_disk

  • 如果是故障安全引导归档文件,则该引导归档文件用于恢复损坏的主 OS。在上例中,Solaris 故障安全和 second_disk 故障安全是 Solaris 和 second_disk 操作系统的恢复引导归档文件。

root (hd0,0,a)

指定要装入文件的磁盘、分区和片。GRUB 会自动检测文件系统类型。

kernel /platform/i86pc/multiboot

指定多引导程序。kernel 命令后必须始终跟有多引导程序。multiboot 后面的字符串被传送给 Solaris OS(没有解释)。

有关多个操作系统的完整说明,请参见《System Administration Guide: Basic Administration》中的“How Multiple Operating Systems Are Supported in the GRUB Boot Environment”


查找 menu.lst 文件以更改 GRUB 菜单

必须始终使用 bootadm 命令查找 GRUB 菜单的 menu.lst 文件。使用 list-menu 子命令查找活动的 GRUB 菜单。menu.lst 文件列出了安装在系统上的所有操作系统。该文件的内容指定显示在 GRUB 菜单上的操作系统列表。如果想对该文件进行更改,请参见x86: 查找 GRUB 菜单的 menu.lst 文件(任务)

x86: 查找 GRUB 菜单的 menu.lst 文件(任务)

从 Solaris 10 1/06 发行版开始,可以更新 GRUB 菜单。例如,可能要更改引导缺省 OS 所需的缺省时间。 或者,可能想向 GRUB 菜单中添加另一个 OS。

通常,活动的 GRUB 菜单的 menu.lst 文件位于 /boot/grub/menu.lst。在某些情况下,GRUB menu.lst 文件驻留在其他位置。例如,在使用 Solaris Live Upgrade 的系统中,GRUB menu.lst 文件可能位于非当前运行的引导环境中。或者如果升级了带有 x86 引导分区的系统,menu.lst 文件可能位于 /stubboot 目录中。只有活动的 GRUB menu.lst 文件可用于引导系统。要修改引导系统时显示的 GRUB 菜单,必须修改活动的 GRUB menu.lst 文件。更改任何其他 GRUB menu.lst 文件对引导系统时显示的菜单没有影响。要确定活动的 GRUB menu.lst 文件的位置,请使用 bootadm 命令。使用 list-menu 子命令显示活动的 GRUB 菜单的位置。通过以下步骤确定 GRUB 菜单的 menu.lst 文件的位置。

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

Procedure查找 GRUB 菜单的 menu.lst 文件

在以下过程中,该系统包含两个操作系统:Solaris 和 Solaris Live Upgrade 引导环境,second_disk。Solaris OS 已经被引导,并包含 GRUB 菜单。

步骤
  1. 成为超级用户或作为等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的《System Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”

  2. 要查找 menu.lst 文件,请键入:


    # /sbin/bootadm list-menu
    

    显示文件的位置和内容。


    The location for the active GRUB menu is: /boot/grub/menu.lst
    default 0
    timeout 10
    0 Solaris
    1 Solaris failsafe
    2 second_disk
    3 second_disk failsafe

Procedure当活动的 menu.lst 文件在另一个引导环境中时,查找 GRUB 菜单的 menu.lst 文件

在以下过程中,该系统包含两个操作系统:Solaris 和 Solaris Live Upgrade 引导环境,second_disk。在这种情况下,menu.lst 文件不在当前正在运行的引导环境中。second_disk 引导环境已引导。Solaris 引导环境包含 GRUB 菜单。但该引导环境尚未挂载。

步骤
  1. 成为超级用户或作为等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的《System Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”

  2. 要查找 menu.lst 文件,请键入:


    # /sbin/bootadm list-menu
    

    显示文件的位置和内容。


    The location for the active GRUB menu is:/dev/dsk/device_name(not mounted)
    The filesystem type of the menu device is <ufs>
    default 0
    timeout 10
    0 Solaris
    1 Solaris failsafe
    2 second_disk
    3 second_disk failsafe
  3. 因为尚未挂载包含 menu.lst 文件的文件系统,请挂载该文件系统。指定 UFS 文件系统和设备名称。


    # /usr/sbin/mount -F ufs /dev/dsk/device_name /mnt
    

    其中 device_name 指定了在要挂载的引导环境的磁盘设备上,根 (/) 文件系统的位置。设备名称的输入格式为:/dev/dsk/c wtx dysz。例如:


    # /usr/sbin/mount -F ufs /dev/dsk/c0t1d0s0 /mnt
    

    可以访问 /mnt/boot/grub/menu.lst 下的 GRUB 菜单

  4. 卸载文件系统


    # /usr/sbin/umount /mnt
    

    注 –

    如果挂载引导环境或引导环境的文件系统,请确保使用后卸载这些文件系统。如果没有卸载这些文件系统,该引导环境中以后执行的 Solaris Live Upgrade 操作可能会失败。


Procedure当挂载了 Solaris Live Upgrade 引导环境时,查找 GRUB 菜单的 menu.lst 文件

在以下过程中,该系统包含两个操作系统:Solaris 和 Solaris Live Upgrade 引导环境,second_disksecond_disk 引导环境已引导。Solaris 引导环境包含 GRUB 菜单。Solaris 引导环境挂载在 /.alt.Solaris 下。

步骤
  1. 成为超级用户或作为等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的《System Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”

  2. 要查找 menu.lst 文件,请键入:


    # /sbin/bootadm list-menu
    

    显示文件的位置和内容。


    The location for the active GRUB menu is:
    /.alt.Solaris/boot/grub/menu.lst
    default 0
    timeout 10
    0 Solaris
    1 Solaris failsafe
    2 second_disk
    3 second_disk failsafe

    由于已挂载包含 GRUB 菜单的引导环境,因此可以访问 /.alt.Solaris/boot/grub/menu.lst 下的 menu.lst 文件。

Procedure当系统具有 x86 引导分区时,查找 GRUB 菜单的 menu.lst 文件

在以下过程中,该系统包含两个操作系统:Solaris 和 Solaris Live Upgrade 引导环境,second_disksecond_disk 引导环境已引导。您的系统已升级并保留了 x86 引导分区。该引导分区挂载在 /stubboot 下并包含 GRUB 菜单。有关 x86 引导分区的说明,请参见x86: 分区建议

步骤
  1. 成为超级用户或作为等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的《System Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”

  2. 要查找 menu.lst 文件,请键入:


    # /sbin/bootadm list-menu
    

    显示文件的位置和内容。


    The location for the active GRUB menu is:
    /stubboot/boot/grub/menu.lst
    default 0
    timeout 10
    0 Solaris
    1 Solaris failsafe
    2 second_disk
    3 second_disk failsafe

    可以访问 /stubboot/boot/grub/menu.lst 下的 menu.lst 文件。