本章介绍在基于 x86 的系统中,与 Solaris 安装相关的基于 GRUB 的引导。本章包含以下几节:
GRUB 是开放源代码的引导装载器,Solaris OS 已将其作为缺省的引导装载器。
基于 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,可以更轻松地引导和安装各种操作系统。例如,在一个系统上,可以单独引导以下操作系统:
Solaris OS
Microsoft Windows
GRUB 会对 Microsoft Windows 分区进行检测,但不会验证该 OS 是否能够引导。
GRUB 的一个重要优点是直观的文件系统和内核可执行格式,这使得无需记录内核在磁盘上的物理位置即可装入操作系统。使用基于 GRUB 的引导,内核的装入由其文件名、驱动器及所在分区来指定。基于 GRUB 的引导取代了 Solaris Device Configuration Assistant,并使用 GRUB 菜单简化了引导过程。
GRUB 获得了系统控制后,菜单将显示在控制台上。在 GRUB 菜单中,可以执行以下操作:
选择一个项以引导系统
使用内置 GRUB 编辑菜单修改引导项
从命令行手动装入 OS 内核
可配置的超时可用于引导缺省的 OS 项。按任意键将异常中止对缺省 OS 项的引导。
要查看 GRUB 菜单的示例,请参见GRUB 主菜单说明。
GRUB 使用的设备命名约定与以前的 Solaris OS 版本稍有不同。了解 GRUB 设备命名约定可以帮助您在系统上配置 GRUB 时正确指定驱动器和分区信息。
下表介绍了 GRUB 设备命名约定。
表 5–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”。
有关这些更改的更多信息,请参见以下参考资料。
表 5–2 在何处查找有关基于 GRUB 的安装的信息
主题 |
GRUB 菜单任务 |
更多信息 |
---|---|---|
安装 |
从 Solaris OS CD 或 DVD 介质安装 | |
从网络安装映像安装 | ||
为网络安装配置 DHCP 服务器 | ||
使用自定义 JumpStart 程序安装 |
《Solaris 10 6/06 安装指南:自定义 JumpStart 和高级安装》中的“执行自定义 JumpStart 安装” |
|
使用 Solaris Live Upgrade 激活或回退到引导环境 | ||
System Administration |
有关 GRUB 和管理任务的更多详细信息 |
《System Administration Guide: Basic Administration》中的第 11 章,“GRUB Based Booting (Tasks)” |
安装 Solaris OS 时,在缺省情况下,系统上会安装两个 GRUB 菜单项。第一项是 Solaris OS。第二项是故障安全引导归档文件,将用于系统恢复。作为 Solaris 软件安装和升级过程的一部分,Solaris GRUB 菜单项将自动安装和更新。这些项由 OS 直接管理,不应该手动编辑。
在标准 Solaris OS 安装过程中,无需修改系统 BIOS 设置即可将 GRUB 安装在 Solaris fdisk 分区上。如果 OS 不在 BIOS 引导磁盘上,需要执行以下操作之一:
修改 BIOS 设置。
使用引导管理器引导至 Solaris 分区。有关更多详细信息,请查看您的引导管理器。
首选方法是在引导磁盘上安装 Solaris OS。如果计算机上安装了多个操作系统,可以向 menu.lst 文件中添加项。这些项将会在下次引导系统时显示在 GRUB 菜单上。
有关多个操作系统的其他信息,请参见《System Administration Guide: Basic Administration》中的“How Multiple Operating Systems Are Supported in the GRUB Boot Environment”。
执行基于 GRUB 的网络引导时需要为 PXE 客户机配置的 DHCP 服务器和提供 tftp 服务的安装服务器。DHCP 服务器必须能够响应 DHCP 类、PXEClient 和 GRUBClient。DHCP 响应必须包含以下信息:
文件服务器的 IP 地址
引导文件 (pxegrub) 的名称
rpc.bootparamd,执行网络引导时服务器端通常需要该程序,而基于 GRUB 进行网络引导时不需要。
如果没有可用的 PXE 或 DHCP 服务器,可以从 CD-ROM 或本地磁盘装入 GRUB。然后可以手动配置 GRUB 中的网络并从文件服务器上下载多引导程序和引导归档文件。
有关更多信息,请参见《Solaris 10 6/06 安装指南:基于网络的安装》中的“使用 PXE 通过网络进行引导和安装概述”。
引导基于 x86 的系统时,将显示 GRUB 菜单。该菜单提供用于选择的引导项列表。引导项是安装在系统上的 OS 实例。GRUB 菜单是基于 menu.lst 文件的,该文件是一个配置文件。menu.lst 文件由 Solaris 安装程序创建并可以在安装后进行修改。menu.lst 文件指定在 GRUB 菜单中显示的 OS 实例列表。
如果安装或升级 Solaris OS,则会自动更新 GRUB 菜单。然后,该 Solaris OS 将显示为新的引导项。
如果安装 Solaris OS 以外的 OS,必须修改 menu.lst 配置文件以包含新的 OS 实例。添加新的 OS 实例可使新的引导项在下次引导系统时出现在 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 OS。
指定在 Solaris OS 损坏时可用于恢复的引导归档文件。
指定 Solaris Live Upgrade 引导环境。second_disk 引导环境是作为 Solaris OS 的副本创建的,并使用 luactivate 命令升级和激活。该引导环境可用于引导。
指定 Microsoft Windows OS。GRUB 会对这些分区进行检测,但不会验证该 OS 是否能够引导。
GRUB menu.lst 文件列出了 GRUB 主菜单的内容。GRUB 主菜单列出了安装在系统上的所有 OS 实例的引导项,包括 Solaris Live Upgrade 引导环境。Solaris 软件升级过程保留了您对该文件所做的任何更改。
对 menu.lst 文件所做的任何修订将与 Solaris Live Upgrade 项一起显示在 GRUB 主菜单上。对该文件所做的任何更改将在下次重新引导系统时生效。您可以出于以下目的修订该文件:
要添加非 Solaris 操作系统的 GRUB 菜单项
要自定义引导行为,如在 GRUB 菜单上指定缺省 OS
请勿使用 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”。
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 |
指定超时期满后要引导的项。要更改缺省值,可以通过更改编号指定列表中的另一项。第一个标题的计数从零开始。例如,将缺省值更改为 2 以自动引导至 second_disk 引导环境。
指定了在引导缺省项前等待用户输入的时间(秒)。如果未指定超时值,则需要选择一项。
指定操作系统的名称。
如果是 Solaris Live Upgrade 引导环境,则 OS 名称就是当创建新引导环境时所赋予的名称。在上例中,Solaris Live Upgrade 引导环境名为 second_disk。
如果是故障安全引导归档文件,则该引导归档文件用于恢复损坏的主 OS。在上例中,Solaris 故障安全和 second_disk 故障安全是 Solaris 和 second_disk 操作系统的恢复引导归档文件。
指定要装入文件的磁盘、分区和片。GRUB 会自动检测文件系统类型。
指定多引导程序。kernel 命令后必须始终跟有多引导程序。multiboot 后面的字符串被传送给 Solaris OS(没有解释)。
有关多个操作系统的完整说明,请参见《System Administration Guide: Basic Administration》中的“How Multiple Operating Systems Are Supported in the GRUB Boot Environment”。
必须始终使用 bootadm 命令查找 GRUB 菜单的 menu.lst 文件。使用 list-menu 子命令查找活动的 GRUB 菜单。menu.lst 文件列出了安装在系统上的所有操作系统。该文件的内容指定在 GRUB 菜单上显示的操作系统的列表。如果想对该文件进行更改,请参见x86: 查找 GRUB 菜单的 menu.lst 文件(任务)。
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) 手册页。
在以下过程中,该系统包含两个操作系统:Solaris 和 Solaris Live Upgrade 引导环境,second_disk。Solaris OS 已经被引导,并包含 GRUB 菜单。
成为超级用户或作为等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
要查找 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 |
在以下过程中,该系统包含两个操作系统:Solaris 和 Solaris Live Upgrade 引导环境,second_disk。在本示例中,menu.lst 文件不在当前正在运行的引导环境中。second_disk 引导环境已引导。Solaris 引导环境包含 GRUB 菜单。但该引导环境尚未挂载。
成为超级用户或作为等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
要查找 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 |
因为尚未挂载包含 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 菜单
卸载文件系统
# /usr/sbin/umount /mnt |
如果挂载引导环境或引导环境的文件系统,请确保使用后卸载这些文件系统。如果没有卸载这些文件系统,该引导环境中以后执行的 Solaris Live Upgrade 操作可能会失败。
在以下过程中,该系统包含两个操作系统:Solaris 和 Solaris Live Upgrade 引导环境,second_disk。second_disk 引导环境已引导。Solaris 引导环境包含 GRUB 菜单。Solaris 引导环境挂载在 /.alt.Solaris 下。
成为超级用户或作为等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
要查找 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 文件。
在以下过程中,该系统包含两个操作系统:Solaris 和 Solaris Live Upgrade 引导环境,second_disk。second_disk 引导环境已引导。您的系统已升级并保留了 x86 引导分区。该引导分区挂载在 /stubboot 下并包含 GRUB 菜单。有关 x86 引导分区的说明,请参见x86: 分区建议。
成为超级用户或作为等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。
要查找 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 文件。