第1 1 章
193
有关对基于x86 的系统上的Solaris 安装过程所做更改的更多信息,请参见第196 页中的
“对Solaris OS 安装过程所做的更改”和以下参考:
■ 如果您使用Solaris 交互式安装程序进行安装,请参见《Solaris 10 安装指南:基本安
装》。
■ 如果您使用自定义JumpStart 程序进行安装,请参见《Solaris 10 安装指南:自定义
JumpStart 和高级安装》。
■ 如果您需要设置安装服务器以便通过网络进行安装,请参见《Solaris 10 安装指南:
基于网络的安装》。
■ 如果您使用Solaris Live Upgrade 进行安装或升级,请参见《Solaris 10 安装指南
:Solaris Live Upgrade 和升级规划》。
基于GRUB 的引导方面的新增功能或更改
Solaris 10 6/06: 在此Solaris 发行版中,GRUB 故障安全交互已发生更改。以前,在引
导故障安全归档文件时,系统会提示您更新引导归档文件,而不管是否有任何引导归
档文件已过时。现在,系统会提示您只更新过时的引导归档文件。有关示例,请参见
示例11–8。
有关以前的GRUB 故障安全交互的示例,请参见“为修复关键系统资源而引导故障安
全归档文件”。
x86: 基于GRUB 的引导(概述)
在此Solaris 发行版中,GRUB 是适用于基于x86 的系统的缺省开放源代码引导装载器。
注– 在此Solaris 发行版中,基于GRUB 的引导在基于SPARC 的系统上不可用。
引导装载器是在打开系统后运行的第一个软件程序。此程序将开始执行引导过程。打
开基于x86 的系统后,基本输入/输出系统(Basic Input/Output System, BIOS) 将初始化
CPU、内存和平台硬件。初始化阶段完成后,BIOS 从所配置的引导设备装入引导装载
器,然后将对系统的控制传送给引导装载器。
GRUB 实现了简单的菜单界面,其中包括在配置文件中预定义的引导选项。GRUB 还具
有一个命令行界面,可从菜单界面访问该界面以执行各种引导命令。在Solaris OS 的基
于x86 的系统中,GRUB 的实现符合多引导规范(在
http://www.gnu.org/software/grub/grub.html 中详细加以介绍)。
由于Solaris 内核完全符合多引导规范,因此可使用GRUB 来引导基于x86 的系统。使
用GRUB,可以更方便地引导在系统上安装的各种操作系统。例如,在基于x86 的某个
系统上,可以分别引导以下操作系统:
基于GRUB 的引导方面的新增功能或更改
194 系统管理指南:基本管理• 2006 年7 月
■ Solaris OS
■ Linux
■ Microsoft Windows
请注意,Solaris Live Upgrade 引导环境也会显示在GRUB 菜单中。有关更多信息,请参
见《Solaris 10 安装指南:Solaris Live Upgrade 和升级规划》。
注– GRUB 将检测Microsoft Windows 分区,但不会验证此OS 是否可以引导。
由于GRUB 具有直观的文件系统和内核可执行格式,因此您无需记录内核在磁盘上的
物理位置即可装入操作系统。使用基于GRUB 的引导时,内核的装入由其文件名、驱
动器及所在分区来指定。
引导基于x86 的系统时,将显示GRUB 菜单。该菜单提供了一个引导项列表以供从中
选择。引导项是安装在系统上的OS 实例。GRUB 主菜单基于可修改的配置文件。
■ 如果安装或升级Solaris OS,则会自动更新GRUB 菜单。Solaris OS 显示为一个新的
引导项。
■ 如果安装Solaris OS 以外的操作系统,则必须修改menu.lst 配置文件以包括新的OS
实例。添加新的OS 实例可使新的引导项在下次引导系统时出现在GRUB 菜单中。
有关更多信息,请参见第199 页中的“x86: GRUB 菜单”一节。
注– 在此发行版中,GRUB 菜单取代了SolarisDevice ConfigurationAssistant。
x86: 基于GRUB 的引导的工作原理
GRUB 获得了系统控制后,控制台上就会显示一个菜单。在GRUB 主菜单中,可以执
行以下操作:
■ 选择引导项。
■ 使用GRUB 编辑菜单修改引导项。
■ 从命令行手动装入OS 内核。
以下是典型的GRUB 主菜单的样例。该菜单包含可供选择的两个引导项。如果您没有
选择项,则系统将引导缺省的OS。通常,缺省的OS 是显示在GRUB 主菜单中的第一
项。
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 195
| Solaris failsafe |
| |
| |
+-------------------------------------------------------------------------+
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.
使用箭头键高亮显示引导项,然后按Enter 键以引导选定的项。如果要使用GRUB 编辑
菜单编辑引导项,请使用箭头键在GRUB 主菜单中高亮显示引导项。然后,键入e 以
显示GRUB 编辑菜单。如果要使用命令行界面,请使用箭头键在GRUB 主菜单中选择
引导项,然后键入c。
有关GRUB 术语和定义的完整列表,请参见第203 页中的“GRUB 术语”。
可配置的超时功能可用于引导缺省的OS 项。按任意键可异常中止缺省的OS 项引导。
引导系统时,GRUB 将装入主引导归档文件和多引导程序。主引导归档文件是包含
Solaris 内核模块和数据的文件系统的随机映像。有关更多信息,请参见第240 页中的
“x86: 管理GRUB 引导归档文件”。GRUB 将此信息置于内存中(没有任何解释)。多
引导程序是一个ELF32 可执行程序,包含符合多引导规范的标题。操作完成后,GRUB
会将对系统的控制传送给多引导程序。随后GRUB 本身就变成不活动状态,且系统内
存会被收回。
通过读取引导归档文件并将与引导相关的信息传递给内核,多引导程序负责将核心的
内核模块装入内存。与引导相关的信息由多引导规范指定。
注– 多引导程序与引导归档文件协同工作。您不能将来自一个OS 实例的多引导程序与
来自另一个OS 实例的引导归档文件组合使用。
有关更多信息,请参见第238 页中的“x86: GRUB 引导环境中的Solaris 内核初始化过程
”。
对Solaris OS 安装过程所做的更改
Solaris 10 1/06:Solaris 安装过程在以下方面发生了更改:
■ 最低内存要求为了支持GRUB,基于x86 的系统必须至少具有256MB的主内存,
才能引导安装miniroot。在内存不足的系统上,将显示以下消息:
x86: 基于GRUB 的引导(概述)
196 系统管理指南:基本管理• 2006 年7 月
Selected item can not fit in memory
■ USB 驱动器支持-现在完全支持从通过USB 接口连接的CD 和DVD 驱动器进行安
装。
■ 网络安装过程-为基于x86 的系统设置网络安装映像的标准过程保持不变。这些系
统使用引导前执行环境(Preboot eXecution Environment, PXE) 机制进行引导。不能执
行PXE 引导的系统可以使用GRUB 软盘。
■ 配置设备-GRUB 菜单取代了此Solaris 发行版中的Device Configuration Assistant。
GRUB 装入Solaris OS 后,屏幕上就会显示以下安装菜单:
Select the type of installation you want to perform:
1 Solaris Interactive
2 Custom JumpStart
3 Solaris Interactive Text (Desktop session)
4 Solaris Interactive Text (Console session)
5 Apply driver updates
6 Single user shell
Enter the number of your choice followed by the <ENTER> key.
Alternatively, enter custom boot arguments directly.
If you wait 30 seconds without typing anything,
an interactive installation will be started.
注– 从Solaris 10 1/06 发行版开始,不能再使用Device ConfigurationAssistant 和关联
的交互式shell。要在安装过程中添加任何所需的驱动程序,请选择“选项5”。
请注意,在安装过程中应用驱动程序更新时,您必须提供安装时更新(Install Time
Update, ITU) 软盘、CD 或DVD。ITU 可能包含软件包,也许还包含修补程序。添
加ITU 映像的内容时,请检查自述文件中的附加说明。
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 197
要在安装期间向miniroot 添加驱动程序,请按照以下步骤修补x86 miniroot。有关逐
步说明,请参见以下文档:
■ 有关DVD 介质,请参见《Solaris 10 安装指南:基于网络的安装》中的“使用
SPARC 或x86DVD介质创建x86 安装服务器”中的步骤9。
■ 有关CD 介质,请参见《Solaris 10 安装指南:基于网络的安装》中的“使用CD
介质创建x86 安装服务器”中的步骤19。
选项6 可用于系统恢复。通过该选项,可以快速访问超级用户提示,而不必经过系
统识别过程。请注意,使用选项6 与从GRUB 主菜单(引导系统时显示)引导
Solaris 故障安全归档文件选项效果相同。
x86: GRUB 设备命名约定
GRUB 使用的设备命名约定与以前的Solaris OS 版本稍有不同。了解GRUB 设备命名约
定可以帮助您在系统上配置GRUB 时正确指定驱动器和分区信息。
下表介绍了GRUB 设备命名约定。
表11–1GRUB设备的命名约定
设备名说明
(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 分区的更多信息,请参见《系统管理指南:设备和文件系统》中的“fdisk 分
区创建准则”。
x86: GRUB 的功能组件
GRUB 包含以下功能组件:
x86: 基于GRUB 的引导(概述)
198 系统管理指南:基本管理• 2006 年7 月
■ stage1 -安装在Solaris fdisk 分区的第一个扇区上。通过指定installgrub 命令和
-m 选项,可以选择将stage1 安装在主引导扇区上。有关更多信息,请参见
installgrub(1M) 手册页和《系统管理指南:设备和文件系统》中的“GRUB 引导环
境中的磁盘管理”。
■ stage2 -安装在Solaris fdisk 分区的保留区中。stage2 是GRUB 的核心映像。
■ menu.lst -该文件通常位于/boot/grub 目录中。该文件由GRUB stage2 文件读取。
有关更多信息,请参见第203 页中的“GRUB 术语”一节。
不能使用dd 命令将stage1 和stage2 写入磁盘。stage1 必须能够接收有关stage2 在磁
盘上的位置的信息。使用installgrub 命令,这是安装GRUB 引导块时支持方法。
x86: GRUB 菜单
缺省情况下,Solaris 菜单文件位于/boot/grub/menu.lst 中。如果从pcfs 分区引导
Solaris OS,则要从/stubboot/boot/grub/menu.lst 文件装入有效菜单。您还可以在执
行软件升级时获取相同的配置。此文件的内容指定引导系统时在GRUB 菜单中显示的
内容。GRUB 菜单文件包含系统上安装的所有OS 实例的项以及其他重要引导指令。请
参见第239 页中的“x86: 在GRUB 引导环境中如何支持多个操作系统”。
注– 在某些情况下,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 菜单的位置。有关更多信息,请参见《Solaris 10 安装指南:Solaris Live
Upgrade 和升级规划》中的“查找GRUB 菜单的menu.lst 文件(任务)”和bootadm(1M)
手册页。
出于以下某一原因,您可能需要自定义menu.lst 文件:
■ 添加新的OS 项
■ 添加GRUB 控制台重定向信息
可以在/boot/grub/menu.lst 文件注释中找到用于编辑文件的语法说明。由于这些更改
与Solaris OS 没有直接关系,因此不能使用eeprom 命令来进行更改。Solaris 软件升级过
程保留对此文件所做的所有更改。
以下是/boot/grub/menu.lst 文件的部分样例。下面的列表包括对行项的说明。
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 199
default 0
timeout 10
.
.
.
title Solaris
root (hd0,0,a)
kernel /platform/i86pc/multiboot -B console=ttya
module /platform/i86pc/boot_archive
title Solaris (test)
root (hd0,0,a)
kernel /boot/grub/multiboot -B console=ttya
module /platform/i86pc/boot_archive
title Solaris fail-safe single user
root (hd0,0,a)
kernel /boot/multiboot -B console=ttya -s
module /boot/x86.miniroot.safe
title OS name
指定操作系统的名称。
注– 如果是Solaris Live Upgrade 引导环境,则OS name 是创建新的引导环境时为其指
定的名称。有关更多信息,请参见《Solaris 10 安装指南:Solaris Live Upgrade 和升级
规划》。
default 0
指定要引导的项(如果超时时间已过)。
x86: 基于GRUB 的引导(概述)
200 系统管理指南:基本管理• 2006 年7 月
timeout 10
指定引导缺省项之前等待用户输入的秒数。如果没有指定超时,则需要选择一项。
serial --unit=0 --speed=9600
将GRUB 输出切换到提示行。与terminal 命令结合使用。
terminal serial
将GRUB 输出切换到提示行。与serial 命令结合使用。
root (hd0,0,a)
指定将文件装入哪个磁盘、哪个分区和哪个片。GRUB 将自动检测文件系统类型。
kernel /platform/i86pc/multiboot -B console=ttya
指定多引导程序。kernel 命令后必须始终跟有多引导程序。multiboot 后面的字符串
被传递给Solaris OS(没有解释)。
对该文件所做的任何更改将在下次重新引导系统时生效。
x86: 修改Solaris OS 中的引导行为
以下是用于修改Solaris OS 中的引导行为的主要方法:
■ 使用eeprom 命令。
eeprom 命令用于将不同的值指定给标准的属性集。这些与SPARC OpenBoot PROM
NVRAM变量等效的值存储在/boot/solaris/bootenv.rc 文件中。使用eeprom 命令
对Solaris 引导行为所做的更改在每次重新引导系统时都保持不变。有关更多信息,
请参见eeprom(1M) 手册页。
■ 使用kernel 命令,引导系统时GRUB 菜单中将显示此命令。
注– 使用kernel 命令所做的更改将覆盖使用eeprom 命令设置的选项。这些更改将始
终有效,直到下次引导系统。有关更多信息,请参见kernel(1M) 手册页。
您还可以在GRUB menu.lst 文件中修改Solaris 引导行为,这与使用eeprom 命令进行修
改的方式类似。不过,此方法不是首选方法,因为在升级软件时可能会修改menu.lst
文件中的Solaris OS 项。此时,对该文件所做的任何更改都会丢失。相反,使用eeprom
命令所做的更改会添加到/boot/solaris/bootenv.rc 文件中。升级期间会适当处理该
文件。
有关说明,请参见第218 页中的“x86: 通过编辑GRUB 菜单来修改Solaris 引导行为”。
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 201
x86: 基于GRUB 的磁盘引导
安装Solaris OS 时,缺省情况下将在系统上安装两个GRUB 菜单项。第一项是Solaris OS
项。第二项是miniroot(故障安全)归档文件,用于执行系统恢复。GRUB 菜单项会作
为Solaris 软件安装和升级过程的一部分,自动进行安装,随后自动进行更新。这些项
由OS 直接管理且不应该手动进行编辑。有关这些GRUB 菜单和其他GRUB 菜单的详细
说明,请参见第203 页中的“GRUB 术语”。
安装标准的Solaris OS 期间,会将GRUB 安装在Solaris fdisk 分区上,而无需修改系统
BIOS 设置。如果OS 不在BIOS 引导磁盘上,则需要执行以下操作之一:
■ 修改BIOS 设置。
■ 使用引导管理器引导至Solaris 分区。有关更多详细信息,请查看您的引导管理器。
首选方法始终是在引导磁盘上安装Solaris OS。如果计算机上安装了多个操作系统,可
以向/boot/grub/menu.lst 文件中添加项。下次引导系统时,这些项将会显示在GRUB
菜单中。
有关其他信息,请参见第239 页中的“x86: 在GRUB 引导环境中如何支持多个操作系统
”。
x86: 从网络执行基于GRUB 的引导
本节介绍有关从网络执行基于GRUB 的引导的要求和警告。有关从网络引导基于x86
的系统的概述信息和其他详细信息,请参见第202 页中的“x86: 从网络执行基于GRUB
的引导”。
要执行基于GRUB 的网络引导,需要有为PXE 客户机配置的DHCP 服务器。还需要提
供tftp 服务的引导服务器。DHCP 服务器提供客户机配置其网络接口所需的信息。
DHCP 服务器必须能够使用以下信息响应DHCP 类(PXEClient 和GRUBClient):
■ 文件服务器的IP 地址
■ 引导文件(pxegrub) 的名称
文件服务器负责提供以下信息:
■ pxegrub 二进制文件
■ GRUB 菜单
■ 多引导程序
■ x86.miniroot
以下是执行Solaris OS 的PXE 网络引导的顺序:
1. BIOS 被配置为从网络接口进行引导。
2. BIOS 发送DHCP 请求。
3. DHCP 服务器在回复中提供服务器地址和引导文件的名称。
x86: 基于GRUB 的引导(概述)
202 系统管理指南:基本管理• 2006 年7 月
4. BIOS 使用tftp 下载pxegrub 并执行pxegrub。
5. 系统使用tftp 下载GRUB 菜单文件。
此文件显示可用的引导菜单项。
6. 选择菜单项后,系统即开始装入Solaris OS。
有关更多信息,请参见《系统管理指南:IP 服务》中的“如何设置网络配置服务器”。
运行add_install_client 命令可以创建/tftpboot_01ethernet-address 文件。此文件链接
至pxegrub 和/tftpboot/menu.lst.01ethernet-address 文件。
/tftpboot/menu.lst.01ethernet-address 文件是GRUB 菜单文件。如果此文件不存在,则
pxegrub 将恢复使用DHCP 选项150(如果指定了此选项)或
/tftpboot/boot/grub/menu.lst 文件。通常,将单系统设置为提供两项功能。此时,
add_install_client 命令会使用正确的pxegrub 菜单文件和Solaris 文件设置/tftpboot
文件。DHCP 服务是使用add_install_client 命令单独进行处理的。对每台客户机只
需完成一次设置。有关更多信息,请参见第222 页中的“关于DHCP 宏”和第224 页中
的“x86: 如何从网络执行基于GRUB 的引导”。
注– 服务器端上通常需要有rpc.bootparamd 守护进程,用于执行网络引导。但是,
rpc.bootparamd 不需要使用GRUB 执行基于网络的引导。
如果没有可用的PXE 或DHCP 服务器,则可以从软盘、CD-ROM或本地磁盘装入
GRUB。然后可以手动配置GRUB 中的网络并从文件服务器下载多引导程序和引导归档
文件。
PXE 网络引导序列
注– 服务器端上通常需要有rpc.bootparamd 守护进程,用于执行网络引导。但是,
rpc.bootparamd 不需要使用GRUB 执行基于网络的引导。
如果没有可用的PXE 或DHCP 服务器,则可以从软盘、CD-ROM或本地磁盘装入
GRUB。然后可以手动配置GRUB 中的网络并从文件服务器下载多引导程序和引导归档
文件。
GRUB 术语
本文档中的很多地方都使用了以下GRUB 术语。要掌握GRUB 概念,了解这些术语是
必要的。
boot archive(引导归档文件) 引导归档文件是用于引导Solaris OS 的关
键文件的集合。在挂载根(/) 文件系统之
前的系统启动过程中需要这些文件。系统
中将维护以下两个引导归档文件:
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 203
■ 在系统中用于引导Solaris OS 的引导归
档文件。该引导归档文件有时被称为
主引导归档文件。
■ 当主引导归档文件被破坏时,用于进
行恢复的引导归档文件。该引导归档
文件用于在没有挂载根(/) 文件系统的
情况下启动系统。在GRUB 菜单中,
该引导归档文件被称为故障安全。该
归档文件的主要作用是重新生成通常
用于引导系统的主引导归档文件。
boot loader(引导装载器) 引导装载器是在打开系统后运行的第一个
软件程序。此程序将开始执行引导过程。
failsafe archive(故障安全归档文件) 请参见引导归档文件。
GRUB GNUGRand Unified Bootloader (GRUB) 是
具有简单菜单界面的开放源代码引导装载
器。该菜单显示系统上安装的操作系统的
列表。使用GRUB 可以轻松地引导各种不
同的操作系统,如Solaris OS、Linux 或
Microsoft Windows。
GRUB edit menu(GRUB 编辑菜单) 引导菜单,是GRUB 主菜单的子菜单。该
菜单中显示了GRUB 命令。可以编辑这些
命令以更改引导行为。
GRUB main menu(GRUB 主菜单) 列出系统中安装的操作系统的引导菜单。
使用该菜单,可以轻松引导操作系统,而
无需修改BIOS 或fdisk 分区设置。
menu.lst file(menu.lst 文件) 列出系统中安装的所有操作系统的文件。
该文件的内容指定在GRUB 菜单上显示的
操作系统列表。使用GRUB 菜单,可以轻
松引导操作系统,而无需修改BIOS 或
fdisk 分区设置。
miniroot 位于Solaris 安装介质上的最小可引导根
(/) 文件系统。miniroot 包含安装和升级系
统所需的Solaris 软件。在基于x86 的系统
上,miniroot 被复制到系统中,用作故障
安全引导归档文件。有关详细信息,请参
见故障安全引导归档文件。
primary boot archive(主引导归档文件) 请参见引导归档文件。
x86: 基于GRUB 的引导(概述)
204 系统管理指南:基本管理• 2006 年7 月
x86: 基于GRUB 的引导(任务图)
任务说明参考
引导系统。选择以下引导选项之一:
将系统引导至运行级3-在关闭系统或执行某项
系统硬件维护任务之后使用。
第206 页中的“x86: 如何将系统引导
至运行级3(多用户级别)”
将系统引导至运行级S-在执行系统维护任务
(如备份文件系统)后使用。
第208 页中的“x86: 如何将系统引导
至运行级S(单用户级别)”
交互式引导-为测试目的而对系统文件或内核进
行临时更改后使用。
第213 页中的“x86: 如何交互式地引
导系统”
自定义Solaris 引导行为。您可以在命令行使用eeprom 命令来自定义Solaris
引导行为。也可以使用GRUB 菜单中的可用
kernel 命令来自定义Solaris 引导行为。
使用eeprom 命令设置的引导选项在重新引导系统
期间保持不变,除非这些选项被kernel 命令覆
盖。通过编辑GRUB 菜单或使用kernel 命令设置
的引导选项在下次重新引导系统之前始终保持不
变。
第217 页中的“x86: 如何使用eeprom
命令设置Solaris 引导参数”
第220 页中的“x86: 如何通过编辑
GRUB 菜单来修改Solaris 引导行为”
从网络引导系统。用于从具有缺省网络配置策略的网络引导PXE 或
非PXE 设备。此方法用于引导无盘客户机。
第224 页中的“x86: 如何从网络执行
基于GRUB 的引导”
在故障安全归档文件中引导系
统以便进行恢复。
用于在损坏的文件阻止系统正常引导时引导系
统。为了引导系统以进行恢复,您可能需要执行
以下操作:
■ 停止系统以尝试恢复。
■ 引导故障安全归档文件,以更新引导归档文
件或修复阻止系统成功引导的重要系统文
件。
第225 页中的“x86: 如何为恢复目的
而停止系统”
第225 页中的“x86: 如何为恢复目的
而引导故障安全归档文件”
第230 页中的“x86: 如何为强制更新
损坏的引导归档文件而引导故障安全
归档文件”
■ 强制实施崩溃转储。然后,重新引导系统-
用于强制实施崩溃转储,以排除故障。
■ 引导kmdb-用于解决系统问题。
如果您没有时间交互式地调试系统,请使用带有
-d 选项的reboot 和halt 命令。运行带有-d 选项
的halt 命令后需要以手动方式重新引导系统。但
是,如果使用reboot 命令,系统会自动进行引
导。有关更多信息,请参见reboot(1M)。
第235 页中的“x86: 强制实施崩溃转
储和系统重新引导”
第234 页中的“x86: 如何在基于
GRUB 的引导环境中使用内核调试器
(kmdb) 引导系统”
x86: 基于GRUB 的引导(任务图)
第11 章• x86: 基于GRUB 的引导(任务) 205
x86: 在基于GRUB 的引导环境中引导系统
本节包括有关在基于x86 的系统上执行基于GRUB 的磁盘引导和基于GRUB 的网络引
导的最新信息。还包括有关配置DHCP 以执行基于GRUB 的网络引导以及如何修改
Solaris 引导行为的说明。
注– 在此Solaris 发行版中,基于GRUB 的引导在基于SPARC 的系统上不可用。
本节中的某些过程指示使用“重置”按钮来重新启动系统。如果系统没有“重置”按
钮,请使用电源开关重新启动系统。根据系统的状态,您或许可以按Ctrl-Alt-Del 组合
键来中断系统操作。
▼ x86: 如何将系统引导至运行级3(多用户级别)
使用此过程将当前处于运行级0 的系统引导至运行级3。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。如果系统已关闭,请使用电源开关打
开系统。
引导序列开始时,将显示GRUB 菜单。
要将系统引导至运行级3,请按Enter 键来引导缺省的OS 实例。
如果在10 秒内未选择项,系统会自动引导至运行级3。
确认系统已引导至运行级3。
# who -r
引导过程成功完成后,将显示登录提示。
hostname console login:
x86: 在Solaris OS 中将系统引导至运行级3(多用户级别)
对于新安装的Solaris OS,系统会自动引导64 位内核(如果系统具有64 位计算能
力)。对于升级安装,系统会引导64 位内核(如果系统具有64 位计算能力)。但是,
如果以前已使用eeprom 命令将boot-file 参数设置为kernel/unix 以外的其他值,则系
统不会引导64 位内核。
本示例说明如何将具有64 位计算能力的基于x86 的系统引导至运行级3。
Press any key to reboot.
Resetting...
1
2
3
示例11–1
x86: 在基于GRUB 的引导环境中引导系统
206 系统管理指南:基本管理• 2006 年7 月
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
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.
The highlighted entry will be booted automatically in 10 seconds
Booting ’Solaris 10.1 ... X86’
root (hd0,2,a)
Filesystem type is ufs, partition type 0x000000bf
kernel /platform/i86pc/multiboot
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x1000000]
module /platform/i86pc/boot_archive
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 207
SunOS Release 5.10.1 Version ... 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: swoozie.Central.Sun.COM
NIS domain name is boulder.Central.Sun.COM
checking ufs filesystems
/dev/rdsk/c1d0s7: is logging.
swoozie.Central.Sun.COM console login:
▼ x86: 如何将系统引导至运行级S(单用户级别)
使用此过程可以将处于运行级0 的系统引导至运行级S。单用户级别用于执行系统维
护。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。如果系统已关闭,请使用电源开关打
开系统。
引导序列开始时,将显示GRUB 菜单。
要将系统引导至运行级S,请在显示GRUB 主菜单时键入e。
使用箭头键选择kernel /platform/i86pc/multiboot 引导项。
注– 如果不能使用箭头键,请使用^ 键向上滚动,并使用v 键向下滚动。
键入e,以编辑kernel /platform/i86pc/multiboot 引导项。
此时将显示GRUB 编辑菜单,通过该菜单可以向kernel 命令添加选项和参数。
grub edit> kernel /platform/i86pc/multiboot
在kernel /platform/i86pc/multiboot 行的结尾处键入-s。然后,按Enter 键。
grub edit> kernel /platform/i86pc/multiboot -s
按Enter 键后,即返回GRUB 主菜单。
1
2
3
4
5
x86: 在基于GRUB 的引导环境中引导系统
208 系统管理指南:基本管理• 2006 年7 月
要将系统引导至单用户级别,请键入b。
系统即引导至单用户级别。
如果看到提示,请键入超级用户口令。
确认系统处于运行级S。
# who -r
执行将运行级更改为S 所需的系统维护任务。
完成系统维护任务之后,请按Ctrl-D 组合键,使系统进入多用户状态。
x86: 将系统引导至运行级S(单用户级别)
Press any key to reboot.
Resetting...
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
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.
6
7
8
9
10
示例11–2
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 209
<Type e to edit Solaris entry>
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot |
| module /platform/i86pc/boot_archive |
| |
| |
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press ’b’ to boot, ’e’ to edit the selected command in the
boot sequence, ’c’ for a command-line, ’o’ to open a new line
after (’O’ for before) the selected line, ’d’ to remove the
selected line, or escape to go back to the main menu.
<Type e to edit the line>
grub edit> kernel /platform/i86pc/multiboot -s <Press Enter>
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
x86: 在基于GRUB 的引导环境中引导系统
210 系统管理指南:基本管理• 2006 年7 月
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot -s |
| module /platform/i86pc/boot_archive |
| |
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press ’b’ to boot, ’e’ to edit the selected command in the
boot sequence, ’c’ for a command-line, ’o’ to open a new line
after (’O’ for before) the selected line, ’d’ to remove the
selected line, or escape to go back to the main menu.
<Type b to boot system in single-user mode>
Booting List command
root (hd0,2,a)
Filesystem type is ufs, partition type 0x000000bf
kernel /platform/i86pc/multiboot -s
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x100000
0]...
SunOS Release 5.10.1 Version ... 64-bit
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 211
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Booting to milestone "milestone/single-user:default".
.
.
.
Root password for system maintenance (control-d to bypass): xxxxxx
single-user privilege assigned to /dev/console.
Entering System Maintenance Mode
May 30 12:11:15 su: ’su root’ succeeded for root on /dev/console
Sun Microsystems Inc. SunOS 5.10.1 ... October 2007.
# who -r
. run-level S Jun 10 11:44 S 0 0
# svcs | grep milestone
disabled 11:44:02 svc:/milestone/sysconfig:default
disabled 11:44:02 svc:/milestone/name-services:default
disabled 11:44:02 svc:/milestone/multi-user:default
disabled 11:44:02 svc:/milestone/multi-user-server:default
online 11:44:05 svc:/milestone/devices:default
online 11:44:10 svc:/milestone/network:default
online 11:44:10 svc:/milestone/single-user:default
# <Perform some maintenance task>
# ^D
x86: 在基于GRUB 的引导环境中引导系统
212 系统管理指南:基本管理• 2006 年7 月
▼ x86: 如何交互式地引导系统
在需要指定备用内核或备用/etc/system 文件时,请使用此过程引导系统。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。如果系统已关闭,请使用电源开关打
开系统。
引导序列开始时,将显示GRUB 主菜单。
键入e 以访问GRUB 编辑菜单。
使用箭头键选择kernel /platform/i86pc/multiboot 行。
键入e 以编辑该行。
此时将显示GRUB 编辑菜单,通过该菜单可以向kernel 命令添加选项。
grub edit> kernel /platform/i86pc/multiboot
在kernel /platform/i86pc/multiboot 行的结尾处键入-a。然后,按Enter 键。
grub edit> kernel /platform/i86pc/multiboot -a
此时将显示GRUB 主菜单。
要交互式地引导系统,请键入b。
此时将显示一系列系统提示。如果要接受缺省值,请按Enter 键。
为模块提供缺省目录名称。
此时将显示以下提示: Enter default directory for modules
[/platform/i86pc/kernel /kernel /usr/kernel]:
提供用于引导的内核名称。
此时将出现以下提示: Name of system file
[etc/system]:
出现提示时,请提供模块目录的替代路径。
按Enter 键以使用缺省的模块目录。否则,请提供模块目录的替代路径,然后按Enter
键。
出现提示时,请键入根设备的物理名称。
提供替代的设备名称,或按Enter 键以使用缺省值。
如果系统未提示您回答这些问题,请使用-a 选项修改相应的项,然后再次交互式地引
导系统。
1
2
3
4
5
6
7
8
9
10
11
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 213
x86: 交互式地引导系统
在以下示例中,接受了缺省选择(显示在方括号[] 中)。
Press any key to reboot.
Resetting...
Press any key to reboot.
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
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.
The highlighted entry will be booted in 10 seconds.
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
示例11–3
x86: 在基于GRUB 的引导环境中引导系统
214 系统管理指南:基本管理• 2006 年7 月
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot |
| module /platform/i86pc/boot_archive |
| |
| |
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press ’b’ to boot, ’e’ to edit the selected command in the
boot sequence, ’c’ for a command-line, ’o’ to open a new line
after (’O’ for before) the selected line, ’d’ to remove the
selected line, or escape to go back to the main menu.
grub edit> kernel /platform/i86pc/multiboot -a
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot -a |
| module /platform/i86pc/boot_archive |
| |
| |
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 215
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press ’b’ to boot, ’e’ to edit the selected command in the
boot sequence, ’c’ for a command-line, ’o’ to open a new line
after (’O’ for before) the selected line, ’d’ to remove the
selected line, or escape to go back to the main menu.
Booting command-list
root (hd0,2,a)
Filesystem type is ufs, partition type 0x000000bf
kernel /platform/i86pc/multiboot -a
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x100000
0]...
module /platform/i86pc/boot_archive
Enter default directory for modules [/platform/i86pc/kernel /kernel /usr/kernel]
: <Press Enter>
Name of system file [etc/system]: <Press Enter>
SunOS Release 5.10.1 Version ... 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: swoozie.Central.Sun.COM
NIS domain name is boulder.Central.Sun.COM
x86: 在基于GRUB 的引导环境中引导系统
216 系统管理指南:基本管理• 2006 年7 月
checking ufs filesystems
/dev/rdsk/c1d0s7: is logging.
swoozie.Central.Sun.COM console login:
▼ x86: 如何使用eeprom 命令设置Solaris 引导参数
可以使用eeprom 命令来显示或设置Solaris 引导参数。可以在
/boot/solaris/bootenv.rc 文件中找到使用eeprom 命令设置的参数。使用eeprom 命令
所做的更改在系统重新引导期间保持不变。但是,如果您使用GRUB 菜单中的kernel
命令来引导系统,则可以覆盖此eeprom 设置。
请参见第220 页中的“x86: 如何通过编辑GRUB 菜单来修改Solaris 引导行为”。有关此
发行版中对eeprom 命令所做更改的更多信息,请参见eeprom(1M) 手册页。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南
:安全性服务》中的“配置RBAC(任务列表)”。
要更改指定的参数,请键入带有相应参数的eeprom 命令。
# eeprom parameter=new-value
确认已设置新的参数。
# eeprom parameter
输出应该显示指定参数的新的eeprom 值。
x86: 使用eeprom 命令设置boot-file 参数
本示例说明如何手动指定系统引导64 位内核。请注意,系统必须支持64 位计算。
# eeprom boot-file=kernel/amd64/unix
本示例说明如何在具备64 位计算能力的系统上手动引导32 位内核。
# eeprom boot-file=kernel/unix
本示例说明如何在系统上恢复缺省的自动检测引导行为。
# eeprom boot-file=""
本示例说明如何确定当前的boot-file 参数。
1
2
3
示例11–4
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 217
$ eeprom boot-file
使用eeprom 命令设置控制台目标、模式和速度。
以下示例说明如何指示控制台在ttyb 上运行。
# eeprom console=ttyb
# eeprom input-device=ttyb output-device=ttyb
只有在至少运行Solaris 10 1/06 OS 的情况下,eeprom console=ttyb 命令才能正常发挥作
用。请注意,input-device 和output-device 必须具有相同的值。否则,系统可能根本
无法引导。
本示例说明如何设置较高的串行行速度。
# eeprom ttyb-mode=115200,8,n,1
为使Solaris 软件可以使用较高的串行行速度,还必须修改/etc/ttydefs 文件中的控制
台行,如以下示例所示。
console:115200 hupcl opost onlcr:115200::console
有关在终端控制台上设置波特率的更多信息,请参见《系统管理指南:高级管理》中
的“如何在ttymon 控制台终端上设置波特率速度”。
x86: 通过编辑GRUB 菜单来修改Solaris 引导行为
首次引导系统时,可通过编辑GRUB 菜单来修改Solaris 引导行为。在显示GRUB 主菜
单时通过键入e 可中断引导过程,进而使您可以访问GRUB 编辑菜单。此菜单中的每
一行都是单独的引导项命令,可以在GRUB 主菜单中进行选择。有关更多信息,请参
见第203 页中的“GRUB 术语”一节。
以下是在GRUB 主菜单中键入e 来编辑引导项时所显示菜单的样例。第二行kernel
/platform/i86pc/multiboot 执行kernel 命令,确定Solaris OS 的引导行为。使用箭头
键浏览菜单,然后高亮显示指定的行。再次键入e 以编辑该行。请注意,您所做的任
何修改仅在下次引导系统前保持不变。
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
示例11–5
x86: 在基于GRUB 的引导环境中引导系统
218 系统管理指南:基本管理• 2006 年7 月
| kernel /platform/i86pc/multiboot |
| module /platform/i86pc/boot_archive |
| |
+-------------------------------------------------------------------------+
注意– 您只能在正在编辑的引导项结尾处添加其他参数,而不应修改菜单项中的任何一
部分文本。这样做的目的是阻止Solaris 实例进行引导。
使用kernel 命令
以下列表介绍如何使用带有相应选项和参数的kernel 命令在GRUB 菜单中指定Solaris
引导行为。
grub edit> kernel /platform/i86pc/multiboot/ [kernel-name] [-asrvxk]
-m [smf-options] [-i altinit] [-B prop=value[,prop=value]...]
kernel-name 指定要引导的内核。
-a 提示用户输入配置信息。
-s 在单用户模式中引导系统。
-r 指定重新配置引导。系统将探测所有连接的硬件设备,
然后指定文件系统中的节点,以便仅表示实际找到的那
些设备。
-v 在启用详细消息的情况下引导系统。
-x 不在群集模式中引导系统。
-k 在启用内核调试器的情况下引导系统。
-m smf-options 控制服务管理工具(ServiceManagement Facility, SMF) 的
引导行为。包括两类选项,即恢复选项和消息选项。
-i altinit 将备用可执行文件指定为最初的过程。altinit 是可执
行文件的有效路径。
-B prop=value[,prop=value]... 由多引导程序进行分析。随后,多引导程序会将参数转
换为属性。
下面介绍了可使用带有-B 选项的kernel 命令的各种方法:
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 219
-B console=ttya 将控制台重定向到ttya。
-B acpi-enum=off 禁用设备的高级配置和电源接口(Advanced
Configuration and Power Interface, ACPI) 枚举。
-B console=ttya,apci-enum=off 将控制台重定向到ttya 并禁用设备的ACPI 枚举。
-B acpi-user-options=0x2 完全禁用ACPI。
请注意,使用eeprom 命令以及在GRUB 命令行上指定属性时,GRUB 命令优先。
▼ x86: 如何通过编辑GRUB 菜单来修改Solaris 引导行
为
此过程说明如何在GRUB 菜单中修改Solaris 引导行为。您所做的更改在下次引导系统
前保持不变。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。如果系统已关闭,请使用电源开关打
开系统。
引导序列开始时,将显示GRUB 主菜单。
要访问GRUB 编辑菜单,请键入e。
使用箭头键选择菜单中的第二行。
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot |
| module /platform/i86pc/boot_archive |
| |
| |
| |
+-------------------------------------------------------------------------+
1
2
3
x86: 在基于GRUB 的引导环境中引导系统
220 系统管理指南:基本管理• 2006 年7 月
GRUB 菜单中的第二行包括kernel 命令,此命令用于指定Solaris 引导选项。
再次键入e 以编辑kernel /platform/i86pc/multiboot 行。
为要指定的引导参数键入相应的信息。
kernel /platform/i86pc/multiboot/ [kernel-name] [-afsrvxk]
-m [smf-options] [-i atinit] [-B prop=value[,prop=value]...]
例如,要在32 位模式中引导具有64 位计算能力的基于x86 的系统,应键入:
grub edit> kernel /platform/i86pc/multiboot kernel/unix
有关所有kernel 命令选项的说明,请参见第219 页中的“使用kernel 命令”。
按Enter 键返回GRUB 主菜单。
注– 按Enter 键保存所做更改,并返回GRUB 主菜单。按Esc 键返回GRUB 主菜单,而
不保存所做更改。
要引导系统,请键入b。
您所做的更改将在引导系统时生效。
在GRUB 菜单中修改Solaris 引导行为
本示例说明如何修改kernel/platform/i86pc/multiboot 行,以将32 位内核引导至单用
户模式。
grub edit> kernel /platform/i86pc/multiboot kernel/unix -s
本示例说明如何将控制台手动重定向到ttyb。
grub edit> kernel /platform/i86pc/multiboot -B console=ttyb
或者,可以使用input-device/output-device 属性,如以下示例所示。
grub edit> kernel /platform/i86pc/multiboot -B input-device=ttyb,output-device=ttyb
本示例说明如何覆盖串行行速度。
grub edit> kernel /platform/i86pc/multiboot -B ttyb-mode="115200,8,n,1,-"
4
5
6
7
示例11–6
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 221
在前面的示例中,属性值包含逗号,它也是属性分隔符。为避免混淆属性解析器,请
使用双引号引住整个属性值。
x86: 从网络执行基于GRUB 的引导
如果引导服务器可用,任何系统都可以从网络进行引导。如果系统不能从本地磁盘进
行引导,您可能需要从网络引导独立系统以便进行恢复。可以从支持PXE 网络引导协
议的网络来直接引导基于Solaris OS x86 的系统。
注– PXE 网络引导只适用于实现了Intel 引导前执行环境规范的设备。
用于基于GRUB 的PXE 网络引导的缺省网络引导策略是DHCP。对于非PXE 设备,可
以使用DHCP 引导策略或RARP 引导策略。使用的策略取决于网络上可用的引导服务
器的类型。如果没有可用的PXE 或DHCP 服务器,则可以从软盘、CD-ROM或本地磁
盘装入GRUB。然后可以手动配置GRUB 中的网络并从文件服务器下载多引导程序和
引导归档文件。有关其他信息,请参见第202 页中的“x86: 从网络执行基于GRUB 的
引导”。
关于DHCP 宏
当您使用add_install_client -d 脚本在安装服务器上添加客户机时,脚本将把DHCP
配置信息报告到标准输出。创建用于将网络安装信息传递到客户机所需的选项和宏
时,可以使用此信息。
要通过网络使用DHCP 服务器安装DHCP 客户机,必须创建DHCP 选项。安装Solaris
OS 时需要用到此信息。当客户机发送DHCP 请求时,服务器必须具有以下客户机信息
:
■ 客户机的ID(通常是以太网地址)
■ 客户机请求的类
■ 客户机所在的子网
SolarisDHCP 服务器会作出响应。此响应基于以下宏,且与客户机请求匹配:
类宏类宏基于DHCP 请求中包含的类字符串。在基于x86 的系统上,BIOS 已
使用类PXEClient:Arch:00000:UNDI:002001 创建了DHCP 请求。如果在
DHCP 服务器配置中已按此名称定义了宏,则宏内容将被发送到基于x86
的客户机。
x86: 在基于GRUB 的引导环境中引导系统
222 系统管理指南:基本管理• 2006 年7 月
网络宏网络宏以客户机所在子网的IP 地址命名。如果已在DHPC 服务器上定义
了宏129.146.87.0,则宏内容将被发送到该子网上的所有客户机。宏内容
的发送与请求类无关。如果同时在类宏和网络宏中定义了选项,则网络宏
优先使用。
IP 宏IP 宏以IP 地址命名。该宏很少使用。
客户机宏客户机宏以客户机的类型(01 表示以太网)和客户机的Mac 地址(使用
大写字母)命名。对于具有以太网地址0:0:39:fc:f2:ef 的客户机,对应
的宏名称为01000039FCEF。请注意,客户机宏中没有冒号。
例如,对于子网192.168.100.0 上具有以太网地址0:0:39:fc:f2:ef 的客户机(创建类
PXEClient 的DHCP 请求),DHCP 服务器具有以下匹配的宏:
PXEClient
BootSrvA: 192.168.100.0
BootFile: pxegrub
129.146.87.0
Router: 129.146.87.1
NISdmain: sunsoft.eng.sun.com
01000039FCEF
BootFile: 01000039FCEF
The actual DHCP response will be
BootSrvA: 192.168.100.0
BootFile: 01000039FCEF
Router: 129.146.87.1
NISdmain: sunsoft.eng.sun.com
请注意,客户机宏中的BootFile 将覆盖类宏中的BootFile。
有关更多详细信息,请参见《Solaris 10 安装指南:基于网络的安装》中的“使用DHCP
服务预配置系统配置信息(任务)”。
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 223
▼ x86: 如何从网络执行基于GRUB 的引导
要执行基于GRUB 的网络引导,需要有为PXE 客户机配置的DHCP 服务器。还需要提
供tftp 服务的引导服务器。DHCP 服务器必须能够对DHCP 类(PXEClient 和
GRUBClient)做出响应,才能获取文件服务器和引导文件(pxegrub) 的IP 地址。缺省情
况下,此菜单文件为/tftpboot/menu.lst.01ethernet-address。如果此文件不存在,则
pxegrub 将恢复到DHCP 选项150(如果指定了此选项),或
/tftpboot/boot/grub/menu.lst 文件。
如果您是从Solaris Software 1 CD或DVD 来引导系统,系统会自动进行引导。
注– 在此发行版中,Device ConfigurationAssistant 已为GRUB 菜单所取代。
使用GRUB 在基于x86 的系统上执行网络引导之前,请执行以下操作:
■ 在安装服务器上运行相应的命令,以使系统能够从网络进行引导。
■ 将客户机系统作为安装客户机进行添加。
有关更多信息,请参见《Solaris 10 安装指南:基于网络的安装》中的第7 章“准备从网
络安装(概述)”。
在DHCP 服务器上,使用以下两个选项为DHCP 服务创建客户机宏:
■ BootSrvA: svr-addr
■ BootFile: client-macro
请注意,您必须对DHCP 服务器具有超级用户权限才能运行dhtadm 命令。
其中,svr-addr 是服务器的IP 地址,且client-macro 以客户机的以太网类型(01) 和
mac 地址来命名(使用大写字母)。此编号也是在安装服务器上的/tftpboot 目录
中使用的文件的名称。
注– client-macro 的表示法不应包含任何冒号。
您可以使用DHCP GUI 或命令行界面来创建客户机宏。
要从命令行创建客户机宏,请键入:
# dhtadm -[MA] -m client macro -d
":BootFile=client-macro:BootSrvA=svr-addr:"
重新引导系统。
开始之前
1
2
x86: 在基于GRUB 的引导环境中引导系统
224 系统管理指南:基本管理• 2006 年7 月
指示BIOS 从网络进行引导。
■ 如果系统使用特定的击键序列从网络进行引导,请在显示BIOS 屏幕时键入这些击
键。
■ 如果需要手动修改BIOS 设置以从网络进行引导,请键入相应的击键序列,以访问
BIOS 设置实用程序。然后,修改从网络进行引导的引导优先级。
显示GRUB 菜单时,请选择要安装的网络安装映像。
▼ x86: 如何为恢复目的而停止系统
使用以下命令之一停止系统(如果可能):
■ 如果键盘和鼠标功能正常,请成为超级用户。然后,键入init 0 以停止系统。出现
Press any key to reboot 提示后,请按任意键以重新引导系统。
■ 如果键盘和鼠标功能正常,请成为超级用户。然后键入init 6 以重新引导系统。
如果系统未响应从鼠标或键盘输入的任何内容,请按“重置”键(如果存在)重新引
导系统。
或者,可以使用电源开关重新引导系统。
▼ x86: 如何为恢复目的而引导故障安全归档文件
按照此过程引导Solaris 故障安全归档文件,以便可以更新引导归档文件或修复关键的
系统资源。
注– 从Solaris 10 6/06 发行版开始,GRUB 故障安全交互已发生变化。以前,在引导故障
安全归档文件时,系统会提示您更新引导归档文件,而不管引导归档文件是否已过
时。现在,只有在系统检测到任何过时的引导归档文件时,才会提示您更新引导归档
文件。有关示例,请参见示例11–8。
有关以前的GRUB 故障安全交互的示例,请参见“为修复关键系统资源而引导故障安
全归档文件”。
使用系统的Stop 组合键停止系统。
如果您不知道超级用户口令,或者如果您不能登录系统,请使用系统的Stop 组合键。
有关更多信息,请参见第254 页中的“x86: 如何为恢复目的而停止系统”。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。
3
4
1
2
1
2
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 225
引导序列开始时,将显示GRUB 菜单。
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
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.
The highlighted entry will be booted in 10 seconds.
使用箭头键浏览GRUB 菜单,然后选择Solaris failsafe 项。键入b 或按Enter 键以引导
故障安全归档文件。
系统将搜索已安装的OS 实例。如果系统检测到任何过时的引导归档文件,则会显示类
似如下的消息:
Searching for installed OS instances...
An out of sync boot archive was detected on /dev/dsk/c0t0d0s0.
The boot archive is a cache of files used during boot and
should be kept in sync to ensure proper system operation.
Do you wish to automatically update this boot archive? [y,n,?]
3
x86: 在基于GRUB 的引导环境中引导系统
226 系统管理指南:基本管理• 2006 年7 月
键入y 以自动更新过时的引导归档文件。如果找到多个过时的引导归档文件,系统会提
示您一次更新一个引导归档文件。键入y 并按Enter 键以更新每个引导归档文件。
此时将显示一条类似如下的消息:
Updating boot archive on /dev/dsk/c0t0d0s0.
The boot archive on /dev/dsk/c0t0d0s0 was updated successfully.
成功更新引导归档文件后,系统将再次搜索所有已安装的OS 实例并提示您选择要在/a
上挂载的设备。如果找到多个OS 实例,则将显示一条类似如下的消息:
Multiple OS instances were found. To check and mount one of them
read-write under /a, select it from the following list. To not mount
any, select ’q’.
1 /dev/dsk/c0t0d0s0 Solaris 10 1/06 s10x_u1wos_19a X86
2 /dev/dsk/c0t1d0s0 Solaris Nevada snv_25 X86
Please select a device to be mounted (q for none) [?,??,q]: 2
mounting /dev/dsk/c0t1d0s0 on /a
Starting shell.
#
■ 如果您不需要挂载设备,请键入q 并按Enter 键。然后,继续执行步骤7。
■ 如果已在上一步中更新了所有过时的归档文件,则不需要挂载该设备。该设备已被
挂载。请继续执行步骤5。
■ 如果未在上一步中更新过时的引导归档文件,并且需要挂载该设备,请键入对应的
设备编号,并按Enter 键。
系统会将该设备挂载到/a 上,并返回到shell 提示符。
修复关键的系统资源。
4
5
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 227
完成关键系统资源的修复后,请卸载该设备。
# umount /a
重新引导系统。
# init 6
x86: 为修复关键系统资源而引导故障安全归档文件
本示例说明以前的故障安全交互。在前面的任务中,说明的故障安全交互针对当前发
行版。如果已安装或升级到Solaris 10 6/06 OS(至少),请参见示例11–8 来了解当前的
故障安全交互。
Press any key to reboot.
Resetting...
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
Filesystem type is ufs, partition type 0x000000bf
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x100000
6
7
示例11–7
x86: 在基于GRUB 的引导环境中引导系统
228 系统管理指南:基本管理• 2006 年7 月
0]...
module /boot/x86.miniroot-safe
SunOS Release 5.10.1 Version ... 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Booting to milestone "milestone/single-user:default".
Configuring devices.
Searching for installed OS...
/dev/dsk/c1t0d0s0 -- Solaris 10.1 ... X86
Do you wish to automatically update boot archives? [y,n,?] y
# mount /dev/dsk/c0t0d0s0 /a
.
.
.
# cd /a/etc
# vi passwd
(Remove invalid entry)
# cd /
# umount /a
# init 6
.
.
.
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 229
Booting ’Solaris 10.1 ... X86’
root (hd0,2,a)
Filesystem type is ufs, partition type 0x000000bf
kernel /platform/i86pc/multiboot
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x1000000]
module /platform/i86pc/boot_archive
SunOS Release 5.10.1 Version ... 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: swoozie.Central.Sun.COM
NIS domain name is boulder.Central.Sun.COM
checking ufs filesystems
/dev/rdsk/c1d0s7: is logging.
hostname.domain console login:
▼ x86: 如何为强制更新损坏的引导归档文件而引导故
障安全归档文件
此过程说明如何使用bootadm 命令替换损坏的引导归档文件。有关更多信息,请参见
bootadm(1M) 手册页。
使用系统的Stop 组合键停止系统。
如果您不知道超级用户口令,或者如果您不能登录系统,请使用系统的Stop 组合键。
有关更多信息,请参见第254 页中的“x86: 如何为恢复目的而停止系统”。
1
x86: 在基于GRUB 的引导环境中引导系统
230 系统管理指南:基本管理• 2006 年7 月
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。
引导序列开始时,将显示GRUB 菜单。
+-------------------------------------------------------------------------+
| Solaris 10.1... X86 |
| Solaris failsafe |
| |
| |
+-------------------------------------------------------------------------+
Use the and 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.
使用箭头键浏览GRUB 菜单,然后选择Solaris failsafe 项。键入b 或按Enter 键以引导
故障安全归档文件。
如果引导归档文件已过时,则会显示类似如下的消息:
Searching for installed OS instances...
An out of sync boot archive was detected on /dev/dsk/c0t0d0s0.
The boot archive is a cache of files used during boot and
should be kept in sync to ensure proper system operation.
Do you wish to automatically update this boot archive? [y,n,?]
键入y,然后按Enter 键以更新过时的引导归档文件。
系统将显示以下消息:
Updating boot archive on /dev/dsk/c0t0d0s0.
2
3
4
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 231
The boot archive on /dev/dsk/c0t0d0s0 was updated successfully.
如果未找到过时的引导归档文件时,则会显示类似如下的消息:
Searching for installed OS instances...
Solaris 10.1... X86 was found on /dev/dsk/c0t0d0s0.
Do you wish to have it mounted read-write on /a? [y,n,?]
成功更新所有过时的引导归档文件后,也会显示此消息。
通过键入对应的设备编号在/a 上挂载包含损坏的引导归档文件的设备,然后按Enter
键。
注– 如果已在上一步中更新了过时的引导归档文件,则表明已在/a 上挂载了该设备。
请继续执行步骤6。
要强制更新损坏的引导归档文件,请键入:
# bootadm update-archive -f -R /a
卸载设备。
# umount /a
重新引导系统。
# init 6
x86: 为强制更新损坏的引导归档文件而引导故障安全归档文件
本示例说明如何引导故障安全归档文件,以强制更新损坏的引导归档文件。请注意,
此示例说明了当前的Solaris 发行版中的故障安全交互。有关以前的故障安全交互的示
例,请参见示例11–7。
GNU GRUB version 0.95 (635K lower / 523200K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10 1/06 s10x_u1wos_19a X86 |
| >Solaris failsafe< |
5
6
7
8
示例11–8
x86: 在基于GRUB 的引导环境中引导系统
232 系统管理指南:基本管理• 2006 年7 月
| |
| |
+-------------------------------------------------------------------------+
Use the and 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.
SunOS Release 5.11 Version snv_34 32-bit
Copyright 1983-2006 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Booting to milestone "milestone/single-user:default".
Configuring devices.
Searching for installed OS instances...
Multiple OS instances were found. To check and mount one of them
read-write under /a, select it from the following list. To not mount
any, select ’q’.
1 /dev/dsk/c0t0d0s0 Solaris 10 1/06 s10x_u1wos_19a X86
2 /dev/dsk/c0t1d0s0 Solaris Nevada snv_25 X86
Please select a device to be mounted (q for none) [?,??,q]: 1
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 233
mounting /dev/dsk/c0t0d0s0 on /a
Starting shell.
# rm /a/platform/i86pc/boot_archive
# bootadm update-archive -f -R /a
Creating ram disk on /a
updating /a/platform/i86pc/boot_archive...this may take a minute
# umount /a
# reboot
syncing file systems... done
rebooting...
.
.
.
▼ x86: 如何在基于GRUB 的引导环境中使用内核调试
器(kmdb) 引导系统
此过程说明装入内核调试器(kmdb) 的基本原理。缺省情况下将启用savecore 功能。有
关使用内核调试器的更多详细信息,请参见《Solaris 模块调试器指南》。
引导系统。
引导系统时将显示GRUB 菜单。
显示GRUB 菜单时,请键入e 以访问GRUB 编辑菜单。
使用箭头键选择kernel/platform/i86pc/multiboot 项。
注– 如果不能使用箭头键,请使用^ 键向上滚动,并使用v 键向下滚动。
1
2
3
x86: 在基于GRUB 的引导环境中引导系统
234 系统管理指南:基本管理• 2006 年7 月
键入e 以编辑引导项。
grub edit> kernel /platform/i86pc/multiboot
此时将显示引导项菜单。在该菜单中,可以向kernel 命令中添加选项。
在kernel/platform/i86pc/multiboot 项后键入-k。
grub edit> kernel /platform/i86pc/multiboot -k
要保存所做的更改并返回GRUB 主菜单,请按Enter 键。
键入b 以便在启用内核调试器的情况下引导系统。
系统将在启用内核调试器的情况下进行引导。
访问内核调试器。
用于访问调试器的方法因访问系统所使用的控制台类型而异:
■ 如果使用本地连接的键盘,请按F1–A 组合键。
■ 如果使用串行控制台,请使用适合于该类型的串行控制台的方法来发送中断信号。
首次访问内核调试器时,将显示欢迎消息。
x86: 在基于GRUB 的引导环境中使用内核调试器引导系统
本示例说明如何在启用了内核调试器的情况下手动引导具有64 位计算能力的基于x86
的系统。
/kernel/platform/i86pc/multiboot kernel/amd64/unix -k
本示例说明如何在启用了内核调试器的情况下将具有64 位计算能力的基于x86 的系统
引导至32 位模式。
/kernel/platform/i86pc/multiboot kernel/unix -k
如果在GRUB 菜单中键入kmdb,则系统将在启用了内核调试器的情况下引导自动检测
内核类型。不管如何设置eeprom boot-file 参数,系统都将以此方式进行引导。
在GRUB 菜单中键入-k(不含其他参数)后产生的引导效果与在启用了内核调试器的
情况下键入b 的效果相同。如果将boot-file 参数设置为空值(""),则内核由eeprom
boot-file 参数或由自动检测到的缺省值指定。
x86: 强制实施崩溃转储和系统重新引导
有时,为了排除故障,必须强制实施崩溃转储并重新引导系统。缺省情况下将启用
savecore 功能。
4
5
6
7
8
示例11–9
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 235
有关系统崩溃转储的更多信息,请参见《系统管理指南:高级管理》中的第24 章“管
理系统崩溃转储信息(任务)”。
▼ x86: 如何强制实施崩溃转储和系统重新引导
如果您不能使用reboot -d 或halt -d 命令,则可以使用内核调试器kmdb 来强制实施崩
溃转储。必须已在引导时或使用mdb -k 命令装入了内核调试器,以下过程才能正常进
行。
注– 必须处于文本模式下,才能访问内核调试器(kmdb)。因此,首先要退出任何窗口系
统。
访问内核调试器。
用于访问调试器的方法因访问系统所使用的控制台类型而异。
■ 如果使用本地连接的键盘,请按F1–A 组合键。
■ 如果使用串行控制台,请使用适合于该类型的串行控制台的方法来发送中断信号。
此时将显示kmdb 提示符。
要引发崩溃,请使用systemdump 宏。
[0]> $<systemdump
此时将显示应急消息,保存崩溃转储,随后系统将重新引导。
通过在控制台登录提示符下登录来确认系统已重新引导。
x86: 使用halt -d 强制实施崩溃转储和系统重新引导
本示例说明如何使用halt -d 和boot 命令强制实施基于x86 的系统neptune 的崩溃转储
和重新引导。使用此方法强制实施系统崩溃转储。随后以手动方式重新引导系统。
# halt -d
4ay 30 15:35:15 wacked.Central.Sun.COM halt: halted by user
panic[cpu0]/thread=ffffffff83246ec0: forced crash dump initiated at user request
fffffe80006bbd60 genunix:kadmin+4c1 ()
fffffe80006bbec0 genunix:uadmin+93 ()
1
2
3
示例11–10
x86: 在基于GRUB 的引导环境中引导系统
236 系统管理指南:基本管理• 2006 年7 月
fffffe80006bbf10 unix:sys_syscall32+101 ()
syncing file systems... done
dumping to /dev/dsk/c1t0d0s1, offset 107675648, content: kernel
NOTICE: adpu320: bus reset
100% done: 38438 pages dumped, compression ratio 4.29, dump succeeded
Welcome to kmdb
Loaded modules: [ audiosup crypto ufs unix krtld s1394 sppp nca uhci lofs
genunix ip usba specfs nfs md random sctp ]
[0]>
kmdb: Do you really want to reboot? (y/n) y
x86: 基于GRUB 的引导过程(参考)
本节包括以下参考信息:
■ 第237 页中的“x86: GRUB 引导环境中的系统BIOS”
■ 第238 页中的“x86: 在GRUB 引导环境中引导子系统”
■ 第238 页中的“x86: GRUB 引导环境中的Solaris 内核初始化过程”
■ 第239 页中的“x86: 在GRUB 引导环境中如何支持多个操作系统”
■ 第240 页中的“x86: 管理GRUB 引导归档文件”
■ 第241 页中的“GRUB 引导归档文件”
x86: GRUB 引导环境中的系统BIOS
打开系统时,系统由只读存储器(read-only-memory, ROM) 基本输入/输出系统(Basic
Input/Output System, BIOS) 进行控制。BIOS 是具有64 位和32 位x86 支持的Solaris 操作
系统上的固件接口。
x86: 基于GRUB 的引导过程(参考)
第11 章• x86: 基于GRUB 的引导(任务) 237
硬件适配器通常具有显示设备的物理特征的板载BIOS。该BIOS 用于访问设备。启动
过程期间,系统BIOS 将检查是否存在任何适配器BIOS。如果找到了任何适配器,则
系统会装入并执行每个适配器BIOS。每个适配器的BIOS 都会运行自检诊断,然后显
示设备信息。
大多数系统上的BIOS 都有一个用户界面,您可以在该界面中选择已排序的引导设备的
列表,其中包含以下选择:
■ 软盘
■ CD 或DVD
■ 硬盘
■ 网络
BIOS 尝试从每个设备轮流进行引导,直到找到带有可引导程序的有效设备为止。
x86: 在GRUB 引导环境中引导子系统
引导设备是本地介质或网络设备。从本地介质进行引导时,BIOS 将装入并随后执行
512 字节的程序(位于该介质的第一个物理扇区中)。此程序由操作系统供应商提供。
随后将该程序安装在磁盘上作为正常的Solaris 软件安装或升级过程的一部分。BIOS 将
控制权转移给此程序后,OS 将接管系统。
要从网络接口引导系统,需要DHCP 服务器。还需要引导文件服务器。这些服务器可
以驻留在同一台计算机上,也可以分别驻留在不同的计算机上。x86 网络的实际引导协
议是PXE,该协议与DHCP 结合使用。BIOS 从网络接口引导系统。随后,BIOS 将发出
对引导程序名称和下载该程序的服务器的IP 地址的DHCP 请求。BIOS 收到DHCP 响应
后,BIOS 便会使用TFTP 协议下载程序并执行该程序。引导程序由OS 供应商提供。您
可以在引导文件服务器上安装引导程序。
当前的操作系统内核太大了,使得BIOS 无法直接装入。因此,OS 需要使用引导子系
统来引导内核。此过程包含多个阶段,因此使得小程序得以装入并执行较大的程序。
最终,控制权将转交给Solaris OS 内核。在基于x86 的系统上,Solaris OS 使用开放源代
码GRUB 程序来引导内核。
x86: GRUB 引导环境中的Solaris 内核初始化过程
注意– 本节包括Solaris 实现的详细信息,在未来的Solaris 发行版或未来的Solaris 修补程
序中如有更改,恕不另行通知。您不应该生成依据本节中介绍的详细信息确定的过
程。
x86: 基于GRUB 的引导过程(参考)
238 系统管理指南:基本管理• 2006 年7 月
/platform/i86pc/multiboot 程序是一个ELF32 可执行程序,包含在多引导规范中定义
的信息头。多引导程序负责执行以下任务:
■ 解释引导归档文件的内容
■ 自动检测系统是否具有64 位计算能力
■ 选择用于引导系统的最佳内核模式
■ 在内存中汇编核心内核模块
■ 将系统控制权转交给Solaris 内核
内核获得系统控制权后,便会对CPU、内存和设备子系统进行初始化。随后,内核会
挂载引导设备,该设备与在/boot/solaris/bootenv.rc 文件中指定的bootpath 和
fstype 属性对应。此文件是引导归档文件的一部分。如果没有在bootenv.rc 文件或
GRUB 命令行中指定这些属性,则根(/) 文件系统将缺省作为/devices/ramdisk:a 中的
UFS。引导安装miniroot 时,根(/) 文件系统将缺省作为UFS。挂载引导设备后,内核
将对sched 和init 命令进行初始化。这些命令可以启动服务管理工具(Service
Management Facility, SMF) 服务。
x86: 在GRUB 引导环境中如何支持多个操作系统
本节介绍在具有GRUB 的同一个磁盘上支持的多个操作系统。以下是在同一个磁盘上
安装了Solaris 10 1/06 OS、Solaris 9OS、Linux 和Microsoft Windows 的基于x86 的系统的
示例。
表11–2GRUB菜单配置样例
操作系统在磁盘上的位置
Microsoft Windows fdisk 分区0:
Linux fdisk 分区1:
fdisk 分区2:
片0 Solaris 9OS
片3 Solaris 10 1/06 OS
基于前面的信息,GRUB 菜单显示如下:
title Solaris 10 1/06
root (hd0,2,d)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
x86: 基于GRUB 的引导过程(参考)
第11 章• x86: 基于GRUB 的引导(任务) 239
title Solaris 9
root (hd0,2,a)
chainloader +1
makeactivetitle Linux
root (hd0,1)
kernel <from Linux GRUB menu...>
initrd <from Linux GRUB menu...>
title Windows
root (hd0,0)
chainloader +1
Solaris 分区必须为活动分区。此外,请不要在Microsoft Windows 菜单下指示
makeactive。这样做将导致系统每次都引导Microsoft 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 引导归档文件
引导归档文件包含初始化OS 内核所需的核心内核模块,其中包括驱动程序和配置文
件。初始化I/O 子系统后,内核将在实际的根设备上挂载根(/) 文件系统。必要时,
Solaris OS 将从根(/) 文件系统上的文件更新引导归档文件。此更新通常发生在应用内
核修补程序或添加驱动程序软件包时。要检测手动执行的任何文件更新,可能还要在
系统关闭期间更新引导归档文件。
x86: 基于GRUB 的引导过程(参考)
240 系统管理指南:基本管理• 2006 年7 月
如果在更新内核文件后立刻出现系统故障、断电或发出内核警告音,则引导归档文件
和根(/) 文件系统可能无法同步。尽管系统可能仍然可以使用旧的引导归档文件进行引
导,但是您应该在故障安全归档文件中引导系统,以重建引导归档文件。在对系统可
用性要求极高的关键业务系统中,您可以选择通过设置cron 作业来定期运行bootadm
命令。如果不需要更新引导归档文件,此过程使用的资源会非常少,而且通常只需0.1
到0.2 秒就能完成。
引导归档文件是使用bootadm 命令进行更新的。执行系统升级或应用修补程序后,请立
即以超级用户身份运行以下命令来手动重建引导归档文件:
# bootadm update-archive
有关更多信息,请参见bootadm(1M) 手册页。有关逐步说明,请参见第230 页中的
“x86: 如何为强制更新损坏的引导归档文件而引导故障安全归档文件”。
GRUB 引导归档文件
GRUB 具有两种引导归档文件:
■ 故障安全引导归档文件
■ 主引导归档文件
故障安全引导归档文件具有以下优点和特征:
■ 自给自足
■ 可以自行进行引导
■ 缺省情况下在安装OS 期间创建
■ 不需要维护
主引导归档文件将遮盖根(/) 文件系统。此引导归档文件包含所有的内核模块、
driver.conf 文件以及多个配置文件。这些文件位于/etc 目录中。挂载根(/) 文件系统
之前,内核将读取引导归档文件中的文件。挂载根(/) 文件系统之后,内核将从内存中
放弃引导归档文件。然后,系统将针对引导设备执行文件I/O。
缺省情况下,主引导归档文件包含以下文件:
■ boot/solaris/bootenv.rc
■ boot/solaris.xpm
■ etc/dacf.conf
■ etc/devices
■ etc/driver_aliases
■ etc/driver_classes
■ etc/mach
■ etc/name_to_sysnum
■ etc/path_to_inst
■ etc/rtc_config
x86: 基于GRUB 的引导过程(参考)
第11 章• x86: 基于GRUB 的引导(任务) 241
■ etc/system
■ kernel
■ platform/i86pc/biosint
■ platform/i86pc/kernel
如果更新了归档文件中的任何文件,则必须重建引导归档文件。为使修改生效,必须
在重新引导系统之前重建归档文件。
要手动重建引导归档文件,请使用bootadm 命令。还可以通过在故障安全归档文件
(GRUB 主菜单中的可用选项)中引导系统,来重建引导归档文件。在故障安全引导
过程中,如果看到系统提示,请键入y,以重建主引导归档文件。有关更多信息,请参
见第225 页中的“x86: 如何为恢复目的而引导故障安全归档文件”。
x86: 基于GRUB 的引导过程(参考)
242 系统管理指南:基本管理• 2006 年7 月
193
有关对基于x86 的系统上的Solaris 安装过程所做更改的更多信息,请参见第196 页中的
“对Solaris OS 安装过程所做的更改”和以下参考:
■ 如果您使用Solaris 交互式安装程序进行安装,请参见《Solaris 10 安装指南:基本安
装》。
■ 如果您使用自定义JumpStart 程序进行安装,请参见《Solaris 10 安装指南:自定义
JumpStart 和高级安装》。
■ 如果您需要设置安装服务器以便通过网络进行安装,请参见《Solaris 10 安装指南:
基于网络的安装》。
■ 如果您使用Solaris Live Upgrade 进行安装或升级,请参见《Solaris 10 安装指南
:Solaris Live Upgrade 和升级规划》。
基于GRUB 的引导方面的新增功能或更改
Solaris 10 6/06: 在此Solaris 发行版中,GRUB 故障安全交互已发生更改。以前,在引
导故障安全归档文件时,系统会提示您更新引导归档文件,而不管是否有任何引导归
档文件已过时。现在,系统会提示您只更新过时的引导归档文件。有关示例,请参见
示例11–8。
有关以前的GRUB 故障安全交互的示例,请参见“为修复关键系统资源而引导故障安
全归档文件”。
x86: 基于GRUB 的引导(概述)
在此Solaris 发行版中,GRUB 是适用于基于x86 的系统的缺省开放源代码引导装载器。
注– 在此Solaris 发行版中,基于GRUB 的引导在基于SPARC 的系统上不可用。
引导装载器是在打开系统后运行的第一个软件程序。此程序将开始执行引导过程。打
开基于x86 的系统后,基本输入/输出系统(Basic Input/Output System, BIOS) 将初始化
CPU、内存和平台硬件。初始化阶段完成后,BIOS 从所配置的引导设备装入引导装载
器,然后将对系统的控制传送给引导装载器。
GRUB 实现了简单的菜单界面,其中包括在配置文件中预定义的引导选项。GRUB 还具
有一个命令行界面,可从菜单界面访问该界面以执行各种引导命令。在Solaris OS 的基
于x86 的系统中,GRUB 的实现符合多引导规范(在
http://www.gnu.org/software/grub/grub.html 中详细加以介绍)。
由于Solaris 内核完全符合多引导规范,因此可使用GRUB 来引导基于x86 的系统。使
用GRUB,可以更方便地引导在系统上安装的各种操作系统。例如,在基于x86 的某个
系统上,可以分别引导以下操作系统:
基于GRUB 的引导方面的新增功能或更改
194 系统管理指南:基本管理• 2006 年7 月
■ Solaris OS
■ Linux
■ Microsoft Windows
请注意,Solaris Live Upgrade 引导环境也会显示在GRUB 菜单中。有关更多信息,请参
见《Solaris 10 安装指南:Solaris Live Upgrade 和升级规划》。
注– GRUB 将检测Microsoft Windows 分区,但不会验证此OS 是否可以引导。
由于GRUB 具有直观的文件系统和内核可执行格式,因此您无需记录内核在磁盘上的
物理位置即可装入操作系统。使用基于GRUB 的引导时,内核的装入由其文件名、驱
动器及所在分区来指定。
引导基于x86 的系统时,将显示GRUB 菜单。该菜单提供了一个引导项列表以供从中
选择。引导项是安装在系统上的OS 实例。GRUB 主菜单基于可修改的配置文件。
■ 如果安装或升级Solaris OS,则会自动更新GRUB 菜单。Solaris OS 显示为一个新的
引导项。
■ 如果安装Solaris OS 以外的操作系统,则必须修改menu.lst 配置文件以包括新的OS
实例。添加新的OS 实例可使新的引导项在下次引导系统时出现在GRUB 菜单中。
有关更多信息,请参见第199 页中的“x86: GRUB 菜单”一节。
注– 在此发行版中,GRUB 菜单取代了SolarisDevice ConfigurationAssistant。
x86: 基于GRUB 的引导的工作原理
GRUB 获得了系统控制后,控制台上就会显示一个菜单。在GRUB 主菜单中,可以执
行以下操作:
■ 选择引导项。
■ 使用GRUB 编辑菜单修改引导项。
■ 从命令行手动装入OS 内核。
以下是典型的GRUB 主菜单的样例。该菜单包含可供选择的两个引导项。如果您没有
选择项,则系统将引导缺省的OS。通常,缺省的OS 是显示在GRUB 主菜单中的第一
项。
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 195
| Solaris failsafe |
| |
| |
+-------------------------------------------------------------------------+
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.
使用箭头键高亮显示引导项,然后按Enter 键以引导选定的项。如果要使用GRUB 编辑
菜单编辑引导项,请使用箭头键在GRUB 主菜单中高亮显示引导项。然后,键入e 以
显示GRUB 编辑菜单。如果要使用命令行界面,请使用箭头键在GRUB 主菜单中选择
引导项,然后键入c。
有关GRUB 术语和定义的完整列表,请参见第203 页中的“GRUB 术语”。
可配置的超时功能可用于引导缺省的OS 项。按任意键可异常中止缺省的OS 项引导。
引导系统时,GRUB 将装入主引导归档文件和多引导程序。主引导归档文件是包含
Solaris 内核模块和数据的文件系统的随机映像。有关更多信息,请参见第240 页中的
“x86: 管理GRUB 引导归档文件”。GRUB 将此信息置于内存中(没有任何解释)。多
引导程序是一个ELF32 可执行程序,包含符合多引导规范的标题。操作完成后,GRUB
会将对系统的控制传送给多引导程序。随后GRUB 本身就变成不活动状态,且系统内
存会被收回。
通过读取引导归档文件并将与引导相关的信息传递给内核,多引导程序负责将核心的
内核模块装入内存。与引导相关的信息由多引导规范指定。
注– 多引导程序与引导归档文件协同工作。您不能将来自一个OS 实例的多引导程序与
来自另一个OS 实例的引导归档文件组合使用。
有关更多信息,请参见第238 页中的“x86: GRUB 引导环境中的Solaris 内核初始化过程
”。
对Solaris OS 安装过程所做的更改
Solaris 10 1/06:Solaris 安装过程在以下方面发生了更改:
■ 最低内存要求为了支持GRUB,基于x86 的系统必须至少具有256MB的主内存,
才能引导安装miniroot。在内存不足的系统上,将显示以下消息:
x86: 基于GRUB 的引导(概述)
196 系统管理指南:基本管理• 2006 年7 月
Selected item can not fit in memory
■ USB 驱动器支持-现在完全支持从通过USB 接口连接的CD 和DVD 驱动器进行安
装。
■ 网络安装过程-为基于x86 的系统设置网络安装映像的标准过程保持不变。这些系
统使用引导前执行环境(Preboot eXecution Environment, PXE) 机制进行引导。不能执
行PXE 引导的系统可以使用GRUB 软盘。
■ 配置设备-GRUB 菜单取代了此Solaris 发行版中的Device Configuration Assistant。
GRUB 装入Solaris OS 后,屏幕上就会显示以下安装菜单:
Select the type of installation you want to perform:
1 Solaris Interactive
2 Custom JumpStart
3 Solaris Interactive Text (Desktop session)
4 Solaris Interactive Text (Console session)
5 Apply driver updates
6 Single user shell
Enter the number of your choice followed by the <ENTER> key.
Alternatively, enter custom boot arguments directly.
If you wait 30 seconds without typing anything,
an interactive installation will be started.
注– 从Solaris 10 1/06 发行版开始,不能再使用Device ConfigurationAssistant 和关联
的交互式shell。要在安装过程中添加任何所需的驱动程序,请选择“选项5”。
请注意,在安装过程中应用驱动程序更新时,您必须提供安装时更新(Install Time
Update, ITU) 软盘、CD 或DVD。ITU 可能包含软件包,也许还包含修补程序。添
加ITU 映像的内容时,请检查自述文件中的附加说明。
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 197
要在安装期间向miniroot 添加驱动程序,请按照以下步骤修补x86 miniroot。有关逐
步说明,请参见以下文档:
■ 有关DVD 介质,请参见《Solaris 10 安装指南:基于网络的安装》中的“使用
SPARC 或x86DVD介质创建x86 安装服务器”中的步骤9。
■ 有关CD 介质,请参见《Solaris 10 安装指南:基于网络的安装》中的“使用CD
介质创建x86 安装服务器”中的步骤19。
选项6 可用于系统恢复。通过该选项,可以快速访问超级用户提示,而不必经过系
统识别过程。请注意,使用选项6 与从GRUB 主菜单(引导系统时显示)引导
Solaris 故障安全归档文件选项效果相同。
x86: GRUB 设备命名约定
GRUB 使用的设备命名约定与以前的Solaris OS 版本稍有不同。了解GRUB 设备命名约
定可以帮助您在系统上配置GRUB 时正确指定驱动器和分区信息。
下表介绍了GRUB 设备命名约定。
表11–1GRUB设备的命名约定
设备名说明
(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 分区的更多信息,请参见《系统管理指南:设备和文件系统》中的“fdisk 分
区创建准则”。
x86: GRUB 的功能组件
GRUB 包含以下功能组件:
x86: 基于GRUB 的引导(概述)
198 系统管理指南:基本管理• 2006 年7 月
■ stage1 -安装在Solaris fdisk 分区的第一个扇区上。通过指定installgrub 命令和
-m 选项,可以选择将stage1 安装在主引导扇区上。有关更多信息,请参见
installgrub(1M) 手册页和《系统管理指南:设备和文件系统》中的“GRUB 引导环
境中的磁盘管理”。
■ stage2 -安装在Solaris fdisk 分区的保留区中。stage2 是GRUB 的核心映像。
■ menu.lst -该文件通常位于/boot/grub 目录中。该文件由GRUB stage2 文件读取。
有关更多信息,请参见第203 页中的“GRUB 术语”一节。
不能使用dd 命令将stage1 和stage2 写入磁盘。stage1 必须能够接收有关stage2 在磁
盘上的位置的信息。使用installgrub 命令,这是安装GRUB 引导块时支持方法。
x86: GRUB 菜单
缺省情况下,Solaris 菜单文件位于/boot/grub/menu.lst 中。如果从pcfs 分区引导
Solaris OS,则要从/stubboot/boot/grub/menu.lst 文件装入有效菜单。您还可以在执
行软件升级时获取相同的配置。此文件的内容指定引导系统时在GRUB 菜单中显示的
内容。GRUB 菜单文件包含系统上安装的所有OS 实例的项以及其他重要引导指令。请
参见第239 页中的“x86: 在GRUB 引导环境中如何支持多个操作系统”。
注– 在某些情况下,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 菜单的位置。有关更多信息,请参见《Solaris 10 安装指南:Solaris Live
Upgrade 和升级规划》中的“查找GRUB 菜单的menu.lst 文件(任务)”和bootadm(1M)
手册页。
出于以下某一原因,您可能需要自定义menu.lst 文件:
■ 添加新的OS 项
■ 添加GRUB 控制台重定向信息
可以在/boot/grub/menu.lst 文件注释中找到用于编辑文件的语法说明。由于这些更改
与Solaris OS 没有直接关系,因此不能使用eeprom 命令来进行更改。Solaris 软件升级过
程保留对此文件所做的所有更改。
以下是/boot/grub/menu.lst 文件的部分样例。下面的列表包括对行项的说明。
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 199
default 0
timeout 10
.
.
.
title Solaris
root (hd0,0,a)
kernel /platform/i86pc/multiboot -B console=ttya
module /platform/i86pc/boot_archive
title Solaris (test)
root (hd0,0,a)
kernel /boot/grub/multiboot -B console=ttya
module /platform/i86pc/boot_archive
title Solaris fail-safe single user
root (hd0,0,a)
kernel /boot/multiboot -B console=ttya -s
module /boot/x86.miniroot.safe
title OS name
指定操作系统的名称。
注– 如果是Solaris Live Upgrade 引导环境,则OS name 是创建新的引导环境时为其指
定的名称。有关更多信息,请参见《Solaris 10 安装指南:Solaris Live Upgrade 和升级
规划》。
default 0
指定要引导的项(如果超时时间已过)。
x86: 基于GRUB 的引导(概述)
200 系统管理指南:基本管理• 2006 年7 月
timeout 10
指定引导缺省项之前等待用户输入的秒数。如果没有指定超时,则需要选择一项。
serial --unit=0 --speed=9600
将GRUB 输出切换到提示行。与terminal 命令结合使用。
terminal serial
将GRUB 输出切换到提示行。与serial 命令结合使用。
root (hd0,0,a)
指定将文件装入哪个磁盘、哪个分区和哪个片。GRUB 将自动检测文件系统类型。
kernel /platform/i86pc/multiboot -B console=ttya
指定多引导程序。kernel 命令后必须始终跟有多引导程序。multiboot 后面的字符串
被传递给Solaris OS(没有解释)。
对该文件所做的任何更改将在下次重新引导系统时生效。
x86: 修改Solaris OS 中的引导行为
以下是用于修改Solaris OS 中的引导行为的主要方法:
■ 使用eeprom 命令。
eeprom 命令用于将不同的值指定给标准的属性集。这些与SPARC OpenBoot PROM
NVRAM变量等效的值存储在/boot/solaris/bootenv.rc 文件中。使用eeprom 命令
对Solaris 引导行为所做的更改在每次重新引导系统时都保持不变。有关更多信息,
请参见eeprom(1M) 手册页。
■ 使用kernel 命令,引导系统时GRUB 菜单中将显示此命令。
注– 使用kernel 命令所做的更改将覆盖使用eeprom 命令设置的选项。这些更改将始
终有效,直到下次引导系统。有关更多信息,请参见kernel(1M) 手册页。
您还可以在GRUB menu.lst 文件中修改Solaris 引导行为,这与使用eeprom 命令进行修
改的方式类似。不过,此方法不是首选方法,因为在升级软件时可能会修改menu.lst
文件中的Solaris OS 项。此时,对该文件所做的任何更改都会丢失。相反,使用eeprom
命令所做的更改会添加到/boot/solaris/bootenv.rc 文件中。升级期间会适当处理该
文件。
有关说明,请参见第218 页中的“x86: 通过编辑GRUB 菜单来修改Solaris 引导行为”。
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 201
x86: 基于GRUB 的磁盘引导
安装Solaris OS 时,缺省情况下将在系统上安装两个GRUB 菜单项。第一项是Solaris OS
项。第二项是miniroot(故障安全)归档文件,用于执行系统恢复。GRUB 菜单项会作
为Solaris 软件安装和升级过程的一部分,自动进行安装,随后自动进行更新。这些项
由OS 直接管理且不应该手动进行编辑。有关这些GRUB 菜单和其他GRUB 菜单的详细
说明,请参见第203 页中的“GRUB 术语”。
安装标准的Solaris OS 期间,会将GRUB 安装在Solaris fdisk 分区上,而无需修改系统
BIOS 设置。如果OS 不在BIOS 引导磁盘上,则需要执行以下操作之一:
■ 修改BIOS 设置。
■ 使用引导管理器引导至Solaris 分区。有关更多详细信息,请查看您的引导管理器。
首选方法始终是在引导磁盘上安装Solaris OS。如果计算机上安装了多个操作系统,可
以向/boot/grub/menu.lst 文件中添加项。下次引导系统时,这些项将会显示在GRUB
菜单中。
有关其他信息,请参见第239 页中的“x86: 在GRUB 引导环境中如何支持多个操作系统
”。
x86: 从网络执行基于GRUB 的引导
本节介绍有关从网络执行基于GRUB 的引导的要求和警告。有关从网络引导基于x86
的系统的概述信息和其他详细信息,请参见第202 页中的“x86: 从网络执行基于GRUB
的引导”。
要执行基于GRUB 的网络引导,需要有为PXE 客户机配置的DHCP 服务器。还需要提
供tftp 服务的引导服务器。DHCP 服务器提供客户机配置其网络接口所需的信息。
DHCP 服务器必须能够使用以下信息响应DHCP 类(PXEClient 和GRUBClient):
■ 文件服务器的IP 地址
■ 引导文件(pxegrub) 的名称
文件服务器负责提供以下信息:
■ pxegrub 二进制文件
■ GRUB 菜单
■ 多引导程序
■ x86.miniroot
以下是执行Solaris OS 的PXE 网络引导的顺序:
1. BIOS 被配置为从网络接口进行引导。
2. BIOS 发送DHCP 请求。
3. DHCP 服务器在回复中提供服务器地址和引导文件的名称。
x86: 基于GRUB 的引导(概述)
202 系统管理指南:基本管理• 2006 年7 月
4. BIOS 使用tftp 下载pxegrub 并执行pxegrub。
5. 系统使用tftp 下载GRUB 菜单文件。
此文件显示可用的引导菜单项。
6. 选择菜单项后,系统即开始装入Solaris OS。
有关更多信息,请参见《系统管理指南:IP 服务》中的“如何设置网络配置服务器”。
运行add_install_client 命令可以创建/tftpboot_01ethernet-address 文件。此文件链接
至pxegrub 和/tftpboot/menu.lst.01ethernet-address 文件。
/tftpboot/menu.lst.01ethernet-address 文件是GRUB 菜单文件。如果此文件不存在,则
pxegrub 将恢复使用DHCP 选项150(如果指定了此选项)或
/tftpboot/boot/grub/menu.lst 文件。通常,将单系统设置为提供两项功能。此时,
add_install_client 命令会使用正确的pxegrub 菜单文件和Solaris 文件设置/tftpboot
文件。DHCP 服务是使用add_install_client 命令单独进行处理的。对每台客户机只
需完成一次设置。有关更多信息,请参见第222 页中的“关于DHCP 宏”和第224 页中
的“x86: 如何从网络执行基于GRUB 的引导”。
注– 服务器端上通常需要有rpc.bootparamd 守护进程,用于执行网络引导。但是,
rpc.bootparamd 不需要使用GRUB 执行基于网络的引导。
如果没有可用的PXE 或DHCP 服务器,则可以从软盘、CD-ROM或本地磁盘装入
GRUB。然后可以手动配置GRUB 中的网络并从文件服务器下载多引导程序和引导归档
文件。
PXE 网络引导序列
注– 服务器端上通常需要有rpc.bootparamd 守护进程,用于执行网络引导。但是,
rpc.bootparamd 不需要使用GRUB 执行基于网络的引导。
如果没有可用的PXE 或DHCP 服务器,则可以从软盘、CD-ROM或本地磁盘装入
GRUB。然后可以手动配置GRUB 中的网络并从文件服务器下载多引导程序和引导归档
文件。
GRUB 术语
本文档中的很多地方都使用了以下GRUB 术语。要掌握GRUB 概念,了解这些术语是
必要的。
boot archive(引导归档文件) 引导归档文件是用于引导Solaris OS 的关
键文件的集合。在挂载根(/) 文件系统之
前的系统启动过程中需要这些文件。系统
中将维护以下两个引导归档文件:
x86: 基于GRUB 的引导(概述)
第11 章• x86: 基于GRUB 的引导(任务) 203
■ 在系统中用于引导Solaris OS 的引导归
档文件。该引导归档文件有时被称为
主引导归档文件。
■ 当主引导归档文件被破坏时,用于进
行恢复的引导归档文件。该引导归档
文件用于在没有挂载根(/) 文件系统的
情况下启动系统。在GRUB 菜单中,
该引导归档文件被称为故障安全。该
归档文件的主要作用是重新生成通常
用于引导系统的主引导归档文件。
boot loader(引导装载器) 引导装载器是在打开系统后运行的第一个
软件程序。此程序将开始执行引导过程。
failsafe archive(故障安全归档文件) 请参见引导归档文件。
GRUB GNUGRand Unified Bootloader (GRUB) 是
具有简单菜单界面的开放源代码引导装载
器。该菜单显示系统上安装的操作系统的
列表。使用GRUB 可以轻松地引导各种不
同的操作系统,如Solaris OS、Linux 或
Microsoft Windows。
GRUB edit menu(GRUB 编辑菜单) 引导菜单,是GRUB 主菜单的子菜单。该
菜单中显示了GRUB 命令。可以编辑这些
命令以更改引导行为。
GRUB main menu(GRUB 主菜单) 列出系统中安装的操作系统的引导菜单。
使用该菜单,可以轻松引导操作系统,而
无需修改BIOS 或fdisk 分区设置。
menu.lst file(menu.lst 文件) 列出系统中安装的所有操作系统的文件。
该文件的内容指定在GRUB 菜单上显示的
操作系统列表。使用GRUB 菜单,可以轻
松引导操作系统,而无需修改BIOS 或
fdisk 分区设置。
miniroot 位于Solaris 安装介质上的最小可引导根
(/) 文件系统。miniroot 包含安装和升级系
统所需的Solaris 软件。在基于x86 的系统
上,miniroot 被复制到系统中,用作故障
安全引导归档文件。有关详细信息,请参
见故障安全引导归档文件。
primary boot archive(主引导归档文件) 请参见引导归档文件。
x86: 基于GRUB 的引导(概述)
204 系统管理指南:基本管理• 2006 年7 月
x86: 基于GRUB 的引导(任务图)
任务说明参考
引导系统。选择以下引导选项之一:
将系统引导至运行级3-在关闭系统或执行某项
系统硬件维护任务之后使用。
第206 页中的“x86: 如何将系统引导
至运行级3(多用户级别)”
将系统引导至运行级S-在执行系统维护任务
(如备份文件系统)后使用。
第208 页中的“x86: 如何将系统引导
至运行级S(单用户级别)”
交互式引导-为测试目的而对系统文件或内核进
行临时更改后使用。
第213 页中的“x86: 如何交互式地引
导系统”
自定义Solaris 引导行为。您可以在命令行使用eeprom 命令来自定义Solaris
引导行为。也可以使用GRUB 菜单中的可用
kernel 命令来自定义Solaris 引导行为。
使用eeprom 命令设置的引导选项在重新引导系统
期间保持不变,除非这些选项被kernel 命令覆
盖。通过编辑GRUB 菜单或使用kernel 命令设置
的引导选项在下次重新引导系统之前始终保持不
变。
第217 页中的“x86: 如何使用eeprom
命令设置Solaris 引导参数”
第220 页中的“x86: 如何通过编辑
GRUB 菜单来修改Solaris 引导行为”
从网络引导系统。用于从具有缺省网络配置策略的网络引导PXE 或
非PXE 设备。此方法用于引导无盘客户机。
第224 页中的“x86: 如何从网络执行
基于GRUB 的引导”
在故障安全归档文件中引导系
统以便进行恢复。
用于在损坏的文件阻止系统正常引导时引导系
统。为了引导系统以进行恢复,您可能需要执行
以下操作:
■ 停止系统以尝试恢复。
■ 引导故障安全归档文件,以更新引导归档文
件或修复阻止系统成功引导的重要系统文
件。
第225 页中的“x86: 如何为恢复目的
而停止系统”
第225 页中的“x86: 如何为恢复目的
而引导故障安全归档文件”
第230 页中的“x86: 如何为强制更新
损坏的引导归档文件而引导故障安全
归档文件”
■ 强制实施崩溃转储。然后,重新引导系统-
用于强制实施崩溃转储,以排除故障。
■ 引导kmdb-用于解决系统问题。
如果您没有时间交互式地调试系统,请使用带有
-d 选项的reboot 和halt 命令。运行带有-d 选项
的halt 命令后需要以手动方式重新引导系统。但
是,如果使用reboot 命令,系统会自动进行引
导。有关更多信息,请参见reboot(1M)。
第235 页中的“x86: 强制实施崩溃转
储和系统重新引导”
第234 页中的“x86: 如何在基于
GRUB 的引导环境中使用内核调试器
(kmdb) 引导系统”
x86: 基于GRUB 的引导(任务图)
第11 章• x86: 基于GRUB 的引导(任务) 205
x86: 在基于GRUB 的引导环境中引导系统
本节包括有关在基于x86 的系统上执行基于GRUB 的磁盘引导和基于GRUB 的网络引
导的最新信息。还包括有关配置DHCP 以执行基于GRUB 的网络引导以及如何修改
Solaris 引导行为的说明。
注– 在此Solaris 发行版中,基于GRUB 的引导在基于SPARC 的系统上不可用。
本节中的某些过程指示使用“重置”按钮来重新启动系统。如果系统没有“重置”按
钮,请使用电源开关重新启动系统。根据系统的状态,您或许可以按Ctrl-Alt-Del 组合
键来中断系统操作。
▼ x86: 如何将系统引导至运行级3(多用户级别)
使用此过程将当前处于运行级0 的系统引导至运行级3。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。如果系统已关闭,请使用电源开关打
开系统。
引导序列开始时,将显示GRUB 菜单。
要将系统引导至运行级3,请按Enter 键来引导缺省的OS 实例。
如果在10 秒内未选择项,系统会自动引导至运行级3。
确认系统已引导至运行级3。
# who -r
引导过程成功完成后,将显示登录提示。
hostname console login:
x86: 在Solaris OS 中将系统引导至运行级3(多用户级别)
对于新安装的Solaris OS,系统会自动引导64 位内核(如果系统具有64 位计算能
力)。对于升级安装,系统会引导64 位内核(如果系统具有64 位计算能力)。但是,
如果以前已使用eeprom 命令将boot-file 参数设置为kernel/unix 以外的其他值,则系
统不会引导64 位内核。
本示例说明如何将具有64 位计算能力的基于x86 的系统引导至运行级3。
Press any key to reboot.
Resetting...
1
2
3
示例11–1
x86: 在基于GRUB 的引导环境中引导系统
206 系统管理指南:基本管理• 2006 年7 月
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
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.
The highlighted entry will be booted automatically in 10 seconds
Booting ’Solaris 10.1 ... X86’
root (hd0,2,a)
Filesystem type is ufs, partition type 0x000000bf
kernel /platform/i86pc/multiboot
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x1000000]
module /platform/i86pc/boot_archive
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 207
SunOS Release 5.10.1 Version ... 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: swoozie.Central.Sun.COM
NIS domain name is boulder.Central.Sun.COM
checking ufs filesystems
/dev/rdsk/c1d0s7: is logging.
swoozie.Central.Sun.COM console login:
▼ x86: 如何将系统引导至运行级S(单用户级别)
使用此过程可以将处于运行级0 的系统引导至运行级S。单用户级别用于执行系统维
护。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。如果系统已关闭,请使用电源开关打
开系统。
引导序列开始时,将显示GRUB 菜单。
要将系统引导至运行级S,请在显示GRUB 主菜单时键入e。
使用箭头键选择kernel /platform/i86pc/multiboot 引导项。
注– 如果不能使用箭头键,请使用^ 键向上滚动,并使用v 键向下滚动。
键入e,以编辑kernel /platform/i86pc/multiboot 引导项。
此时将显示GRUB 编辑菜单,通过该菜单可以向kernel 命令添加选项和参数。
grub edit> kernel /platform/i86pc/multiboot
在kernel /platform/i86pc/multiboot 行的结尾处键入-s。然后,按Enter 键。
grub edit> kernel /platform/i86pc/multiboot -s
按Enter 键后,即返回GRUB 主菜单。
1
2
3
4
5
x86: 在基于GRUB 的引导环境中引导系统
208 系统管理指南:基本管理• 2006 年7 月
要将系统引导至单用户级别,请键入b。
系统即引导至单用户级别。
如果看到提示,请键入超级用户口令。
确认系统处于运行级S。
# who -r
执行将运行级更改为S 所需的系统维护任务。
完成系统维护任务之后,请按Ctrl-D 组合键,使系统进入多用户状态。
x86: 将系统引导至运行级S(单用户级别)
Press any key to reboot.
Resetting...
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
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.
6
7
8
9
10
示例11–2
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 209
<Type e to edit Solaris entry>
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot |
| module /platform/i86pc/boot_archive |
| |
| |
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press ’b’ to boot, ’e’ to edit the selected command in the
boot sequence, ’c’ for a command-line, ’o’ to open a new line
after (’O’ for before) the selected line, ’d’ to remove the
selected line, or escape to go back to the main menu.
<Type e to edit the line>
grub edit> kernel /platform/i86pc/multiboot -s <Press Enter>
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
x86: 在基于GRUB 的引导环境中引导系统
210 系统管理指南:基本管理• 2006 年7 月
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot -s |
| module /platform/i86pc/boot_archive |
| |
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press ’b’ to boot, ’e’ to edit the selected command in the
boot sequence, ’c’ for a command-line, ’o’ to open a new line
after (’O’ for before) the selected line, ’d’ to remove the
selected line, or escape to go back to the main menu.
<Type b to boot system in single-user mode>
Booting List command
root (hd0,2,a)
Filesystem type is ufs, partition type 0x000000bf
kernel /platform/i86pc/multiboot -s
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x100000
0]...
SunOS Release 5.10.1 Version ... 64-bit
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 211
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Booting to milestone "milestone/single-user:default".
.
.
.
Root password for system maintenance (control-d to bypass): xxxxxx
single-user privilege assigned to /dev/console.
Entering System Maintenance Mode
May 30 12:11:15 su: ’su root’ succeeded for root on /dev/console
Sun Microsystems Inc. SunOS 5.10.1 ... October 2007.
# who -r
. run-level S Jun 10 11:44 S 0 0
# svcs | grep milestone
disabled 11:44:02 svc:/milestone/sysconfig:default
disabled 11:44:02 svc:/milestone/name-services:default
disabled 11:44:02 svc:/milestone/multi-user:default
disabled 11:44:02 svc:/milestone/multi-user-server:default
online 11:44:05 svc:/milestone/devices:default
online 11:44:10 svc:/milestone/network:default
online 11:44:10 svc:/milestone/single-user:default
# <Perform some maintenance task>
# ^D
x86: 在基于GRUB 的引导环境中引导系统
212 系统管理指南:基本管理• 2006 年7 月
▼ x86: 如何交互式地引导系统
在需要指定备用内核或备用/etc/system 文件时,请使用此过程引导系统。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。如果系统已关闭,请使用电源开关打
开系统。
引导序列开始时,将显示GRUB 主菜单。
键入e 以访问GRUB 编辑菜单。
使用箭头键选择kernel /platform/i86pc/multiboot 行。
键入e 以编辑该行。
此时将显示GRUB 编辑菜单,通过该菜单可以向kernel 命令添加选项。
grub edit> kernel /platform/i86pc/multiboot
在kernel /platform/i86pc/multiboot 行的结尾处键入-a。然后,按Enter 键。
grub edit> kernel /platform/i86pc/multiboot -a
此时将显示GRUB 主菜单。
要交互式地引导系统,请键入b。
此时将显示一系列系统提示。如果要接受缺省值,请按Enter 键。
为模块提供缺省目录名称。
此时将显示以下提示: Enter default directory for modules
[/platform/i86pc/kernel /kernel /usr/kernel]:
提供用于引导的内核名称。
此时将出现以下提示: Name of system file
[etc/system]:
出现提示时,请提供模块目录的替代路径。
按Enter 键以使用缺省的模块目录。否则,请提供模块目录的替代路径,然后按Enter
键。
出现提示时,请键入根设备的物理名称。
提供替代的设备名称,或按Enter 键以使用缺省值。
如果系统未提示您回答这些问题,请使用-a 选项修改相应的项,然后再次交互式地引
导系统。
1
2
3
4
5
6
7
8
9
10
11
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 213
x86: 交互式地引导系统
在以下示例中,接受了缺省选择(显示在方括号[] 中)。
Press any key to reboot.
Resetting...
Press any key to reboot.
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
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.
The highlighted entry will be booted in 10 seconds.
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
示例11–3
x86: 在基于GRUB 的引导环境中引导系统
214 系统管理指南:基本管理• 2006 年7 月
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot |
| module /platform/i86pc/boot_archive |
| |
| |
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press ’b’ to boot, ’e’ to edit the selected command in the
boot sequence, ’c’ for a command-line, ’o’ to open a new line
after (’O’ for before) the selected line, ’d’ to remove the
selected line, or escape to go back to the main menu.
grub edit> kernel /platform/i86pc/multiboot -a
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot -a |
| module /platform/i86pc/boot_archive |
| |
| |
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 215
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press ’b’ to boot, ’e’ to edit the selected command in the
boot sequence, ’c’ for a command-line, ’o’ to open a new line
after (’O’ for before) the selected line, ’d’ to remove the
selected line, or escape to go back to the main menu.
Booting command-list
root (hd0,2,a)
Filesystem type is ufs, partition type 0x000000bf
kernel /platform/i86pc/multiboot -a
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x100000
0]...
module /platform/i86pc/boot_archive
Enter default directory for modules [/platform/i86pc/kernel /kernel /usr/kernel]
: <Press Enter>
Name of system file [etc/system]: <Press Enter>
SunOS Release 5.10.1 Version ... 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: swoozie.Central.Sun.COM
NIS domain name is boulder.Central.Sun.COM
x86: 在基于GRUB 的引导环境中引导系统
216 系统管理指南:基本管理• 2006 年7 月
checking ufs filesystems
/dev/rdsk/c1d0s7: is logging.
swoozie.Central.Sun.COM console login:
▼ x86: 如何使用eeprom 命令设置Solaris 引导参数
可以使用eeprom 命令来显示或设置Solaris 引导参数。可以在
/boot/solaris/bootenv.rc 文件中找到使用eeprom 命令设置的参数。使用eeprom 命令
所做的更改在系统重新引导期间保持不变。但是,如果您使用GRUB 菜单中的kernel
命令来引导系统,则可以覆盖此eeprom 设置。
请参见第220 页中的“x86: 如何通过编辑GRUB 菜单来修改Solaris 引导行为”。有关此
发行版中对eeprom 命令所做更改的更多信息,请参见eeprom(1M) 手册页。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南
:安全性服务》中的“配置RBAC(任务列表)”。
要更改指定的参数,请键入带有相应参数的eeprom 命令。
# eeprom parameter=new-value
确认已设置新的参数。
# eeprom parameter
输出应该显示指定参数的新的eeprom 值。
x86: 使用eeprom 命令设置boot-file 参数
本示例说明如何手动指定系统引导64 位内核。请注意,系统必须支持64 位计算。
# eeprom boot-file=kernel/amd64/unix
本示例说明如何在具备64 位计算能力的系统上手动引导32 位内核。
# eeprom boot-file=kernel/unix
本示例说明如何在系统上恢复缺省的自动检测引导行为。
# eeprom boot-file=""
本示例说明如何确定当前的boot-file 参数。
1
2
3
示例11–4
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 217
$ eeprom boot-file
使用eeprom 命令设置控制台目标、模式和速度。
以下示例说明如何指示控制台在ttyb 上运行。
# eeprom console=ttyb
# eeprom input-device=ttyb output-device=ttyb
只有在至少运行Solaris 10 1/06 OS 的情况下,eeprom console=ttyb 命令才能正常发挥作
用。请注意,input-device 和output-device 必须具有相同的值。否则,系统可能根本
无法引导。
本示例说明如何设置较高的串行行速度。
# eeprom ttyb-mode=115200,8,n,1
为使Solaris 软件可以使用较高的串行行速度,还必须修改/etc/ttydefs 文件中的控制
台行,如以下示例所示。
console:115200 hupcl opost onlcr:115200::console
有关在终端控制台上设置波特率的更多信息,请参见《系统管理指南:高级管理》中
的“如何在ttymon 控制台终端上设置波特率速度”。
x86: 通过编辑GRUB 菜单来修改Solaris 引导行为
首次引导系统时,可通过编辑GRUB 菜单来修改Solaris 引导行为。在显示GRUB 主菜
单时通过键入e 可中断引导过程,进而使您可以访问GRUB 编辑菜单。此菜单中的每
一行都是单独的引导项命令,可以在GRUB 主菜单中进行选择。有关更多信息,请参
见第203 页中的“GRUB 术语”一节。
以下是在GRUB 主菜单中键入e 来编辑引导项时所显示菜单的样例。第二行kernel
/platform/i86pc/multiboot 执行kernel 命令,确定Solaris OS 的引导行为。使用箭头
键浏览菜单,然后高亮显示指定的行。再次键入e 以编辑该行。请注意,您所做的任
何修改仅在下次引导系统前保持不变。
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
示例11–5
x86: 在基于GRUB 的引导环境中引导系统
218 系统管理指南:基本管理• 2006 年7 月
| kernel /platform/i86pc/multiboot |
| module /platform/i86pc/boot_archive |
| |
+-------------------------------------------------------------------------+
注意– 您只能在正在编辑的引导项结尾处添加其他参数,而不应修改菜单项中的任何一
部分文本。这样做的目的是阻止Solaris 实例进行引导。
使用kernel 命令
以下列表介绍如何使用带有相应选项和参数的kernel 命令在GRUB 菜单中指定Solaris
引导行为。
grub edit> kernel /platform/i86pc/multiboot/ [kernel-name] [-asrvxk]
-m [smf-options] [-i altinit] [-B prop=value[,prop=value]...]
kernel-name 指定要引导的内核。
-a 提示用户输入配置信息。
-s 在单用户模式中引导系统。
-r 指定重新配置引导。系统将探测所有连接的硬件设备,
然后指定文件系统中的节点,以便仅表示实际找到的那
些设备。
-v 在启用详细消息的情况下引导系统。
-x 不在群集模式中引导系统。
-k 在启用内核调试器的情况下引导系统。
-m smf-options 控制服务管理工具(ServiceManagement Facility, SMF) 的
引导行为。包括两类选项,即恢复选项和消息选项。
-i altinit 将备用可执行文件指定为最初的过程。altinit 是可执
行文件的有效路径。
-B prop=value[,prop=value]... 由多引导程序进行分析。随后,多引导程序会将参数转
换为属性。
下面介绍了可使用带有-B 选项的kernel 命令的各种方法:
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 219
-B console=ttya 将控制台重定向到ttya。
-B acpi-enum=off 禁用设备的高级配置和电源接口(Advanced
Configuration and Power Interface, ACPI) 枚举。
-B console=ttya,apci-enum=off 将控制台重定向到ttya 并禁用设备的ACPI 枚举。
-B acpi-user-options=0x2 完全禁用ACPI。
请注意,使用eeprom 命令以及在GRUB 命令行上指定属性时,GRUB 命令优先。
▼ x86: 如何通过编辑GRUB 菜单来修改Solaris 引导行
为
此过程说明如何在GRUB 菜单中修改Solaris 引导行为。您所做的更改在下次引导系统
前保持不变。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。如果系统已关闭,请使用电源开关打
开系统。
引导序列开始时,将显示GRUB 主菜单。
要访问GRUB 编辑菜单,请键入e。
使用箭头键选择菜单中的第二行。
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| root (hd0,2,a) |
| kernel /platform/i86pc/multiboot |
| module /platform/i86pc/boot_archive |
| |
| |
| |
+-------------------------------------------------------------------------+
1
2
3
x86: 在基于GRUB 的引导环境中引导系统
220 系统管理指南:基本管理• 2006 年7 月
GRUB 菜单中的第二行包括kernel 命令,此命令用于指定Solaris 引导选项。
再次键入e 以编辑kernel /platform/i86pc/multiboot 行。
为要指定的引导参数键入相应的信息。
kernel /platform/i86pc/multiboot/ [kernel-name] [-afsrvxk]
-m [smf-options] [-i atinit] [-B prop=value[,prop=value]...]
例如,要在32 位模式中引导具有64 位计算能力的基于x86 的系统,应键入:
grub edit> kernel /platform/i86pc/multiboot kernel/unix
有关所有kernel 命令选项的说明,请参见第219 页中的“使用kernel 命令”。
按Enter 键返回GRUB 主菜单。
注– 按Enter 键保存所做更改,并返回GRUB 主菜单。按Esc 键返回GRUB 主菜单,而
不保存所做更改。
要引导系统,请键入b。
您所做的更改将在引导系统时生效。
在GRUB 菜单中修改Solaris 引导行为
本示例说明如何修改kernel/platform/i86pc/multiboot 行,以将32 位内核引导至单用
户模式。
grub edit> kernel /platform/i86pc/multiboot kernel/unix -s
本示例说明如何将控制台手动重定向到ttyb。
grub edit> kernel /platform/i86pc/multiboot -B console=ttyb
或者,可以使用input-device/output-device 属性,如以下示例所示。
grub edit> kernel /platform/i86pc/multiboot -B input-device=ttyb,output-device=ttyb
本示例说明如何覆盖串行行速度。
grub edit> kernel /platform/i86pc/multiboot -B ttyb-mode="115200,8,n,1,-"
4
5
6
7
示例11–6
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 221
在前面的示例中,属性值包含逗号,它也是属性分隔符。为避免混淆属性解析器,请
使用双引号引住整个属性值。
x86: 从网络执行基于GRUB 的引导
如果引导服务器可用,任何系统都可以从网络进行引导。如果系统不能从本地磁盘进
行引导,您可能需要从网络引导独立系统以便进行恢复。可以从支持PXE 网络引导协
议的网络来直接引导基于Solaris OS x86 的系统。
注– PXE 网络引导只适用于实现了Intel 引导前执行环境规范的设备。
用于基于GRUB 的PXE 网络引导的缺省网络引导策略是DHCP。对于非PXE 设备,可
以使用DHCP 引导策略或RARP 引导策略。使用的策略取决于网络上可用的引导服务
器的类型。如果没有可用的PXE 或DHCP 服务器,则可以从软盘、CD-ROM或本地磁
盘装入GRUB。然后可以手动配置GRUB 中的网络并从文件服务器下载多引导程序和
引导归档文件。有关其他信息,请参见第202 页中的“x86: 从网络执行基于GRUB 的
引导”。
关于DHCP 宏
当您使用add_install_client -d 脚本在安装服务器上添加客户机时,脚本将把DHCP
配置信息报告到标准输出。创建用于将网络安装信息传递到客户机所需的选项和宏
时,可以使用此信息。
要通过网络使用DHCP 服务器安装DHCP 客户机,必须创建DHCP 选项。安装Solaris
OS 时需要用到此信息。当客户机发送DHCP 请求时,服务器必须具有以下客户机信息
:
■ 客户机的ID(通常是以太网地址)
■ 客户机请求的类
■ 客户机所在的子网
SolarisDHCP 服务器会作出响应。此响应基于以下宏,且与客户机请求匹配:
类宏类宏基于DHCP 请求中包含的类字符串。在基于x86 的系统上,BIOS 已
使用类PXEClient:Arch:00000:UNDI:002001 创建了DHCP 请求。如果在
DHCP 服务器配置中已按此名称定义了宏,则宏内容将被发送到基于x86
的客户机。
x86: 在基于GRUB 的引导环境中引导系统
222 系统管理指南:基本管理• 2006 年7 月
网络宏网络宏以客户机所在子网的IP 地址命名。如果已在DHPC 服务器上定义
了宏129.146.87.0,则宏内容将被发送到该子网上的所有客户机。宏内容
的发送与请求类无关。如果同时在类宏和网络宏中定义了选项,则网络宏
优先使用。
IP 宏IP 宏以IP 地址命名。该宏很少使用。
客户机宏客户机宏以客户机的类型(01 表示以太网)和客户机的Mac 地址(使用
大写字母)命名。对于具有以太网地址0:0:39:fc:f2:ef 的客户机,对应
的宏名称为01000039FCEF。请注意,客户机宏中没有冒号。
例如,对于子网192.168.100.0 上具有以太网地址0:0:39:fc:f2:ef 的客户机(创建类
PXEClient 的DHCP 请求),DHCP 服务器具有以下匹配的宏:
PXEClient
BootSrvA: 192.168.100.0
BootFile: pxegrub
129.146.87.0
Router: 129.146.87.1
NISdmain: sunsoft.eng.sun.com
01000039FCEF
BootFile: 01000039FCEF
The actual DHCP response will be
BootSrvA: 192.168.100.0
BootFile: 01000039FCEF
Router: 129.146.87.1
NISdmain: sunsoft.eng.sun.com
请注意,客户机宏中的BootFile 将覆盖类宏中的BootFile。
有关更多详细信息,请参见《Solaris 10 安装指南:基于网络的安装》中的“使用DHCP
服务预配置系统配置信息(任务)”。
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 223
▼ x86: 如何从网络执行基于GRUB 的引导
要执行基于GRUB 的网络引导,需要有为PXE 客户机配置的DHCP 服务器。还需要提
供tftp 服务的引导服务器。DHCP 服务器必须能够对DHCP 类(PXEClient 和
GRUBClient)做出响应,才能获取文件服务器和引导文件(pxegrub) 的IP 地址。缺省情
况下,此菜单文件为/tftpboot/menu.lst.01ethernet-address。如果此文件不存在,则
pxegrub 将恢复到DHCP 选项150(如果指定了此选项),或
/tftpboot/boot/grub/menu.lst 文件。
如果您是从Solaris Software 1 CD或DVD 来引导系统,系统会自动进行引导。
注– 在此发行版中,Device ConfigurationAssistant 已为GRUB 菜单所取代。
使用GRUB 在基于x86 的系统上执行网络引导之前,请执行以下操作:
■ 在安装服务器上运行相应的命令,以使系统能够从网络进行引导。
■ 将客户机系统作为安装客户机进行添加。
有关更多信息,请参见《Solaris 10 安装指南:基于网络的安装》中的第7 章“准备从网
络安装(概述)”。
在DHCP 服务器上,使用以下两个选项为DHCP 服务创建客户机宏:
■ BootSrvA: svr-addr
■ BootFile: client-macro
请注意,您必须对DHCP 服务器具有超级用户权限才能运行dhtadm 命令。
其中,svr-addr 是服务器的IP 地址,且client-macro 以客户机的以太网类型(01) 和
mac 地址来命名(使用大写字母)。此编号也是在安装服务器上的/tftpboot 目录
中使用的文件的名称。
注– client-macro 的表示法不应包含任何冒号。
您可以使用DHCP GUI 或命令行界面来创建客户机宏。
要从命令行创建客户机宏,请键入:
# dhtadm -[MA] -m client macro -d
":BootFile=client-macro:BootSrvA=svr-addr:"
重新引导系统。
开始之前
1
2
x86: 在基于GRUB 的引导环境中引导系统
224 系统管理指南:基本管理• 2006 年7 月
指示BIOS 从网络进行引导。
■ 如果系统使用特定的击键序列从网络进行引导,请在显示BIOS 屏幕时键入这些击
键。
■ 如果需要手动修改BIOS 设置以从网络进行引导,请键入相应的击键序列,以访问
BIOS 设置实用程序。然后,修改从网络进行引导的引导优先级。
显示GRUB 菜单时,请选择要安装的网络安装映像。
▼ x86: 如何为恢复目的而停止系统
使用以下命令之一停止系统(如果可能):
■ 如果键盘和鼠标功能正常,请成为超级用户。然后,键入init 0 以停止系统。出现
Press any key to reboot 提示后,请按任意键以重新引导系统。
■ 如果键盘和鼠标功能正常,请成为超级用户。然后键入init 6 以重新引导系统。
如果系统未响应从鼠标或键盘输入的任何内容,请按“重置”键(如果存在)重新引
导系统。
或者,可以使用电源开关重新引导系统。
▼ x86: 如何为恢复目的而引导故障安全归档文件
按照此过程引导Solaris 故障安全归档文件,以便可以更新引导归档文件或修复关键的
系统资源。
注– 从Solaris 10 6/06 发行版开始,GRUB 故障安全交互已发生变化。以前,在引导故障
安全归档文件时,系统会提示您更新引导归档文件,而不管引导归档文件是否已过
时。现在,只有在系统检测到任何过时的引导归档文件时,才会提示您更新引导归档
文件。有关示例,请参见示例11–8。
有关以前的GRUB 故障安全交互的示例,请参见“为修复关键系统资源而引导故障安
全归档文件”。
使用系统的Stop 组合键停止系统。
如果您不知道超级用户口令,或者如果您不能登录系统,请使用系统的Stop 组合键。
有关更多信息,请参见第254 页中的“x86: 如何为恢复目的而停止系统”。
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。
3
4
1
2
1
2
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 225
引导序列开始时,将显示GRUB 菜单。
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
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.
The highlighted entry will be booted in 10 seconds.
使用箭头键浏览GRUB 菜单,然后选择Solaris failsafe 项。键入b 或按Enter 键以引导
故障安全归档文件。
系统将搜索已安装的OS 实例。如果系统检测到任何过时的引导归档文件,则会显示类
似如下的消息:
Searching for installed OS instances...
An out of sync boot archive was detected on /dev/dsk/c0t0d0s0.
The boot archive is a cache of files used during boot and
should be kept in sync to ensure proper system operation.
Do you wish to automatically update this boot archive? [y,n,?]
3
x86: 在基于GRUB 的引导环境中引导系统
226 系统管理指南:基本管理• 2006 年7 月
键入y 以自动更新过时的引导归档文件。如果找到多个过时的引导归档文件,系统会提
示您一次更新一个引导归档文件。键入y 并按Enter 键以更新每个引导归档文件。
此时将显示一条类似如下的消息:
Updating boot archive on /dev/dsk/c0t0d0s0.
The boot archive on /dev/dsk/c0t0d0s0 was updated successfully.
成功更新引导归档文件后,系统将再次搜索所有已安装的OS 实例并提示您选择要在/a
上挂载的设备。如果找到多个OS 实例,则将显示一条类似如下的消息:
Multiple OS instances were found. To check and mount one of them
read-write under /a, select it from the following list. To not mount
any, select ’q’.
1 /dev/dsk/c0t0d0s0 Solaris 10 1/06 s10x_u1wos_19a X86
2 /dev/dsk/c0t1d0s0 Solaris Nevada snv_25 X86
Please select a device to be mounted (q for none) [?,??,q]: 2
mounting /dev/dsk/c0t1d0s0 on /a
Starting shell.
#
■ 如果您不需要挂载设备,请键入q 并按Enter 键。然后,继续执行步骤7。
■ 如果已在上一步中更新了所有过时的归档文件,则不需要挂载该设备。该设备已被
挂载。请继续执行步骤5。
■ 如果未在上一步中更新过时的引导归档文件,并且需要挂载该设备,请键入对应的
设备编号,并按Enter 键。
系统会将该设备挂载到/a 上,并返回到shell 提示符。
修复关键的系统资源。
4
5
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 227
完成关键系统资源的修复后,请卸载该设备。
# umount /a
重新引导系统。
# init 6
x86: 为修复关键系统资源而引导故障安全归档文件
本示例说明以前的故障安全交互。在前面的任务中,说明的故障安全交互针对当前发
行版。如果已安装或升级到Solaris 10 6/06 OS(至少),请参见示例11–8 来了解当前的
故障安全交互。
Press any key to reboot.
Resetting...
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10.1 ... X86 |
| Solaris failsafe |
| |
| |
| |
+-------------------------------------------------------------------------+
GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
Filesystem type is ufs, partition type 0x000000bf
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x100000
6
7
示例11–7
x86: 在基于GRUB 的引导环境中引导系统
228 系统管理指南:基本管理• 2006 年7 月
0]...
module /boot/x86.miniroot-safe
SunOS Release 5.10.1 Version ... 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Booting to milestone "milestone/single-user:default".
Configuring devices.
Searching for installed OS...
/dev/dsk/c1t0d0s0 -- Solaris 10.1 ... X86
Do you wish to automatically update boot archives? [y,n,?] y
# mount /dev/dsk/c0t0d0s0 /a
.
.
.
# cd /a/etc
# vi passwd
(Remove invalid entry)
# cd /
# umount /a
# init 6
.
.
.
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 229
Booting ’Solaris 10.1 ... X86’
root (hd0,2,a)
Filesystem type is ufs, partition type 0x000000bf
kernel /platform/i86pc/multiboot
[Multiboot-elf, <0x1000000:0x13f3b:0x3941d>, shtab=0x104e258, entry=0x1000000]
module /platform/i86pc/boot_archive
SunOS Release 5.10.1 Version ... 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: swoozie.Central.Sun.COM
NIS domain name is boulder.Central.Sun.COM
checking ufs filesystems
/dev/rdsk/c1d0s7: is logging.
hostname.domain console login:
▼ x86: 如何为强制更新损坏的引导归档文件而引导故
障安全归档文件
此过程说明如何使用bootadm 命令替换损坏的引导归档文件。有关更多信息,请参见
bootadm(1M) 手册页。
使用系统的Stop 组合键停止系统。
如果您不知道超级用户口令,或者如果您不能登录系统,请使用系统的Stop 组合键。
有关更多信息,请参见第254 页中的“x86: 如何为恢复目的而停止系统”。
1
x86: 在基于GRUB 的引导环境中引导系统
230 系统管理指南:基本管理• 2006 年7 月
如果系统显示Press any key to reboot 提示,请按任意键以重新引导系统。
在出现此提示时,您还可以使用“重置”按钮。
引导序列开始时,将显示GRUB 菜单。
+-------------------------------------------------------------------------+
| Solaris 10.1... X86 |
| Solaris failsafe |
| |
| |
+-------------------------------------------------------------------------+
Use the and 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.
使用箭头键浏览GRUB 菜单,然后选择Solaris failsafe 项。键入b 或按Enter 键以引导
故障安全归档文件。
如果引导归档文件已过时,则会显示类似如下的消息:
Searching for installed OS instances...
An out of sync boot archive was detected on /dev/dsk/c0t0d0s0.
The boot archive is a cache of files used during boot and
should be kept in sync to ensure proper system operation.
Do you wish to automatically update this boot archive? [y,n,?]
键入y,然后按Enter 键以更新过时的引导归档文件。
系统将显示以下消息:
Updating boot archive on /dev/dsk/c0t0d0s0.
2
3
4
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 231
The boot archive on /dev/dsk/c0t0d0s0 was updated successfully.
如果未找到过时的引导归档文件时,则会显示类似如下的消息:
Searching for installed OS instances...
Solaris 10.1... X86 was found on /dev/dsk/c0t0d0s0.
Do you wish to have it mounted read-write on /a? [y,n,?]
成功更新所有过时的引导归档文件后,也会显示此消息。
通过键入对应的设备编号在/a 上挂载包含损坏的引导归档文件的设备,然后按Enter
键。
注– 如果已在上一步中更新了过时的引导归档文件,则表明已在/a 上挂载了该设备。
请继续执行步骤6。
要强制更新损坏的引导归档文件,请键入:
# bootadm update-archive -f -R /a
卸载设备。
# umount /a
重新引导系统。
# init 6
x86: 为强制更新损坏的引导归档文件而引导故障安全归档文件
本示例说明如何引导故障安全归档文件,以强制更新损坏的引导归档文件。请注意,
此示例说明了当前的Solaris 发行版中的故障安全交互。有关以前的故障安全交互的示
例,请参见示例11–7。
GNU GRUB version 0.95 (635K lower / 523200K upper memory)
+-------------------------------------------------------------------------+
| Solaris 10 1/06 s10x_u1wos_19a X86 |
| >Solaris failsafe< |
5
6
7
8
示例11–8
x86: 在基于GRUB 的引导环境中引导系统
232 系统管理指南:基本管理• 2006 年7 月
| |
| |
+-------------------------------------------------------------------------+
Use the and 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.
SunOS Release 5.11 Version snv_34 32-bit
Copyright 1983-2006 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Booting to milestone "milestone/single-user:default".
Configuring devices.
Searching for installed OS instances...
Multiple OS instances were found. To check and mount one of them
read-write under /a, select it from the following list. To not mount
any, select ’q’.
1 /dev/dsk/c0t0d0s0 Solaris 10 1/06 s10x_u1wos_19a X86
2 /dev/dsk/c0t1d0s0 Solaris Nevada snv_25 X86
Please select a device to be mounted (q for none) [?,??,q]: 1
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 233
mounting /dev/dsk/c0t0d0s0 on /a
Starting shell.
# rm /a/platform/i86pc/boot_archive
# bootadm update-archive -f -R /a
Creating ram disk on /a
updating /a/platform/i86pc/boot_archive...this may take a minute
# umount /a
# reboot
syncing file systems... done
rebooting...
.
.
.
▼ x86: 如何在基于GRUB 的引导环境中使用内核调试
器(kmdb) 引导系统
此过程说明装入内核调试器(kmdb) 的基本原理。缺省情况下将启用savecore 功能。有
关使用内核调试器的更多详细信息,请参见《Solaris 模块调试器指南》。
引导系统。
引导系统时将显示GRUB 菜单。
显示GRUB 菜单时,请键入e 以访问GRUB 编辑菜单。
使用箭头键选择kernel/platform/i86pc/multiboot 项。
注– 如果不能使用箭头键,请使用^ 键向上滚动,并使用v 键向下滚动。
1
2
3
x86: 在基于GRUB 的引导环境中引导系统
234 系统管理指南:基本管理• 2006 年7 月
键入e 以编辑引导项。
grub edit> kernel /platform/i86pc/multiboot
此时将显示引导项菜单。在该菜单中,可以向kernel 命令中添加选项。
在kernel/platform/i86pc/multiboot 项后键入-k。
grub edit> kernel /platform/i86pc/multiboot -k
要保存所做的更改并返回GRUB 主菜单,请按Enter 键。
键入b 以便在启用内核调试器的情况下引导系统。
系统将在启用内核调试器的情况下进行引导。
访问内核调试器。
用于访问调试器的方法因访问系统所使用的控制台类型而异:
■ 如果使用本地连接的键盘,请按F1–A 组合键。
■ 如果使用串行控制台,请使用适合于该类型的串行控制台的方法来发送中断信号。
首次访问内核调试器时,将显示欢迎消息。
x86: 在基于GRUB 的引导环境中使用内核调试器引导系统
本示例说明如何在启用了内核调试器的情况下手动引导具有64 位计算能力的基于x86
的系统。
/kernel/platform/i86pc/multiboot kernel/amd64/unix -k
本示例说明如何在启用了内核调试器的情况下将具有64 位计算能力的基于x86 的系统
引导至32 位模式。
/kernel/platform/i86pc/multiboot kernel/unix -k
如果在GRUB 菜单中键入kmdb,则系统将在启用了内核调试器的情况下引导自动检测
内核类型。不管如何设置eeprom boot-file 参数,系统都将以此方式进行引导。
在GRUB 菜单中键入-k(不含其他参数)后产生的引导效果与在启用了内核调试器的
情况下键入b 的效果相同。如果将boot-file 参数设置为空值(""),则内核由eeprom
boot-file 参数或由自动检测到的缺省值指定。
x86: 强制实施崩溃转储和系统重新引导
有时,为了排除故障,必须强制实施崩溃转储并重新引导系统。缺省情况下将启用
savecore 功能。
4
5
6
7
8
示例11–9
x86: 在基于GRUB 的引导环境中引导系统
第11 章• x86: 基于GRUB 的引导(任务) 235
有关系统崩溃转储的更多信息,请参见《系统管理指南:高级管理》中的第24 章“管
理系统崩溃转储信息(任务)”。
▼ x86: 如何强制实施崩溃转储和系统重新引导
如果您不能使用reboot -d 或halt -d 命令,则可以使用内核调试器kmdb 来强制实施崩
溃转储。必须已在引导时或使用mdb -k 命令装入了内核调试器,以下过程才能正常进
行。
注– 必须处于文本模式下,才能访问内核调试器(kmdb)。因此,首先要退出任何窗口系
统。
访问内核调试器。
用于访问调试器的方法因访问系统所使用的控制台类型而异。
■ 如果使用本地连接的键盘,请按F1–A 组合键。
■ 如果使用串行控制台,请使用适合于该类型的串行控制台的方法来发送中断信号。
此时将显示kmdb 提示符。
要引发崩溃,请使用systemdump 宏。
[0]> $<systemdump
此时将显示应急消息,保存崩溃转储,随后系统将重新引导。
通过在控制台登录提示符下登录来确认系统已重新引导。
x86: 使用halt -d 强制实施崩溃转储和系统重新引导
本示例说明如何使用halt -d 和boot 命令强制实施基于x86 的系统neptune 的崩溃转储
和重新引导。使用此方法强制实施系统崩溃转储。随后以手动方式重新引导系统。
# halt -d
4ay 30 15:35:15 wacked.Central.Sun.COM halt: halted by user
panic[cpu0]/thread=ffffffff83246ec0: forced crash dump initiated at user request
fffffe80006bbd60 genunix:kadmin+4c1 ()
fffffe80006bbec0 genunix:uadmin+93 ()
1
2
3
示例11–10
x86: 在基于GRUB 的引导环境中引导系统
236 系统管理指南:基本管理• 2006 年7 月
fffffe80006bbf10 unix:sys_syscall32+101 ()
syncing file systems... done
dumping to /dev/dsk/c1t0d0s1, offset 107675648, content: kernel
NOTICE: adpu320: bus reset
100% done: 38438 pages dumped, compression ratio 4.29, dump succeeded
Welcome to kmdb
Loaded modules: [ audiosup crypto ufs unix krtld s1394 sppp nca uhci lofs
genunix ip usba specfs nfs md random sctp ]
[0]>
kmdb: Do you really want to reboot? (y/n) y
x86: 基于GRUB 的引导过程(参考)
本节包括以下参考信息:
■ 第237 页中的“x86: GRUB 引导环境中的系统BIOS”
■ 第238 页中的“x86: 在GRUB 引导环境中引导子系统”
■ 第238 页中的“x86: GRUB 引导环境中的Solaris 内核初始化过程”
■ 第239 页中的“x86: 在GRUB 引导环境中如何支持多个操作系统”
■ 第240 页中的“x86: 管理GRUB 引导归档文件”
■ 第241 页中的“GRUB 引导归档文件”
x86: GRUB 引导环境中的系统BIOS
打开系统时,系统由只读存储器(read-only-memory, ROM) 基本输入/输出系统(Basic
Input/Output System, BIOS) 进行控制。BIOS 是具有64 位和32 位x86 支持的Solaris 操作
系统上的固件接口。
x86: 基于GRUB 的引导过程(参考)
第11 章• x86: 基于GRUB 的引导(任务) 237
硬件适配器通常具有显示设备的物理特征的板载BIOS。该BIOS 用于访问设备。启动
过程期间,系统BIOS 将检查是否存在任何适配器BIOS。如果找到了任何适配器,则
系统会装入并执行每个适配器BIOS。每个适配器的BIOS 都会运行自检诊断,然后显
示设备信息。
大多数系统上的BIOS 都有一个用户界面,您可以在该界面中选择已排序的引导设备的
列表,其中包含以下选择:
■ 软盘
■ CD 或DVD
■ 硬盘
■ 网络
BIOS 尝试从每个设备轮流进行引导,直到找到带有可引导程序的有效设备为止。
x86: 在GRUB 引导环境中引导子系统
引导设备是本地介质或网络设备。从本地介质进行引导时,BIOS 将装入并随后执行
512 字节的程序(位于该介质的第一个物理扇区中)。此程序由操作系统供应商提供。
随后将该程序安装在磁盘上作为正常的Solaris 软件安装或升级过程的一部分。BIOS 将
控制权转移给此程序后,OS 将接管系统。
要从网络接口引导系统,需要DHCP 服务器。还需要引导文件服务器。这些服务器可
以驻留在同一台计算机上,也可以分别驻留在不同的计算机上。x86 网络的实际引导协
议是PXE,该协议与DHCP 结合使用。BIOS 从网络接口引导系统。随后,BIOS 将发出
对引导程序名称和下载该程序的服务器的IP 地址的DHCP 请求。BIOS 收到DHCP 响应
后,BIOS 便会使用TFTP 协议下载程序并执行该程序。引导程序由OS 供应商提供。您
可以在引导文件服务器上安装引导程序。
当前的操作系统内核太大了,使得BIOS 无法直接装入。因此,OS 需要使用引导子系
统来引导内核。此过程包含多个阶段,因此使得小程序得以装入并执行较大的程序。
最终,控制权将转交给Solaris OS 内核。在基于x86 的系统上,Solaris OS 使用开放源代
码GRUB 程序来引导内核。
x86: GRUB 引导环境中的Solaris 内核初始化过程
注意– 本节包括Solaris 实现的详细信息,在未来的Solaris 发行版或未来的Solaris 修补程
序中如有更改,恕不另行通知。您不应该生成依据本节中介绍的详细信息确定的过
程。
x86: 基于GRUB 的引导过程(参考)
238 系统管理指南:基本管理• 2006 年7 月
/platform/i86pc/multiboot 程序是一个ELF32 可执行程序,包含在多引导规范中定义
的信息头。多引导程序负责执行以下任务:
■ 解释引导归档文件的内容
■ 自动检测系统是否具有64 位计算能力
■ 选择用于引导系统的最佳内核模式
■ 在内存中汇编核心内核模块
■ 将系统控制权转交给Solaris 内核
内核获得系统控制权后,便会对CPU、内存和设备子系统进行初始化。随后,内核会
挂载引导设备,该设备与在/boot/solaris/bootenv.rc 文件中指定的bootpath 和
fstype 属性对应。此文件是引导归档文件的一部分。如果没有在bootenv.rc 文件或
GRUB 命令行中指定这些属性,则根(/) 文件系统将缺省作为/devices/ramdisk:a 中的
UFS。引导安装miniroot 时,根(/) 文件系统将缺省作为UFS。挂载引导设备后,内核
将对sched 和init 命令进行初始化。这些命令可以启动服务管理工具(Service
Management Facility, SMF) 服务。
x86: 在GRUB 引导环境中如何支持多个操作系统
本节介绍在具有GRUB 的同一个磁盘上支持的多个操作系统。以下是在同一个磁盘上
安装了Solaris 10 1/06 OS、Solaris 9OS、Linux 和Microsoft Windows 的基于x86 的系统的
示例。
表11–2GRUB菜单配置样例
操作系统在磁盘上的位置
Microsoft Windows fdisk 分区0:
Linux fdisk 分区1:
fdisk 分区2:
片0 Solaris 9OS
片3 Solaris 10 1/06 OS
基于前面的信息,GRUB 菜单显示如下:
title Solaris 10 1/06
root (hd0,2,d)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
x86: 基于GRUB 的引导过程(参考)
第11 章• x86: 基于GRUB 的引导(任务) 239
title Solaris 9
root (hd0,2,a)
chainloader +1
makeactivetitle Linux
root (hd0,1)
kernel <from Linux GRUB menu...>
initrd <from Linux GRUB menu...>
title Windows
root (hd0,0)
chainloader +1
Solaris 分区必须为活动分区。此外,请不要在Microsoft Windows 菜单下指示
makeactive。这样做将导致系统每次都引导Microsoft 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 引导归档文件
引导归档文件包含初始化OS 内核所需的核心内核模块,其中包括驱动程序和配置文
件。初始化I/O 子系统后,内核将在实际的根设备上挂载根(/) 文件系统。必要时,
Solaris OS 将从根(/) 文件系统上的文件更新引导归档文件。此更新通常发生在应用内
核修补程序或添加驱动程序软件包时。要检测手动执行的任何文件更新,可能还要在
系统关闭期间更新引导归档文件。
x86: 基于GRUB 的引导过程(参考)
240 系统管理指南:基本管理• 2006 年7 月
如果在更新内核文件后立刻出现系统故障、断电或发出内核警告音,则引导归档文件
和根(/) 文件系统可能无法同步。尽管系统可能仍然可以使用旧的引导归档文件进行引
导,但是您应该在故障安全归档文件中引导系统,以重建引导归档文件。在对系统可
用性要求极高的关键业务系统中,您可以选择通过设置cron 作业来定期运行bootadm
命令。如果不需要更新引导归档文件,此过程使用的资源会非常少,而且通常只需0.1
到0.2 秒就能完成。
引导归档文件是使用bootadm 命令进行更新的。执行系统升级或应用修补程序后,请立
即以超级用户身份运行以下命令来手动重建引导归档文件:
# bootadm update-archive
有关更多信息,请参见bootadm(1M) 手册页。有关逐步说明,请参见第230 页中的
“x86: 如何为强制更新损坏的引导归档文件而引导故障安全归档文件”。
GRUB 引导归档文件
GRUB 具有两种引导归档文件:
■ 故障安全引导归档文件
■ 主引导归档文件
故障安全引导归档文件具有以下优点和特征:
■ 自给自足
■ 可以自行进行引导
■ 缺省情况下在安装OS 期间创建
■ 不需要维护
主引导归档文件将遮盖根(/) 文件系统。此引导归档文件包含所有的内核模块、
driver.conf 文件以及多个配置文件。这些文件位于/etc 目录中。挂载根(/) 文件系统
之前,内核将读取引导归档文件中的文件。挂载根(/) 文件系统之后,内核将从内存中
放弃引导归档文件。然后,系统将针对引导设备执行文件I/O。
缺省情况下,主引导归档文件包含以下文件:
■ boot/solaris/bootenv.rc
■ boot/solaris.xpm
■ etc/dacf.conf
■ etc/devices
■ etc/driver_aliases
■ etc/driver_classes
■ etc/mach
■ etc/name_to_sysnum
■ etc/path_to_inst
■ etc/rtc_config
x86: 基于GRUB 的引导过程(参考)
第11 章• x86: 基于GRUB 的引导(任务) 241
■ etc/system
■ kernel
■ platform/i86pc/biosint
■ platform/i86pc/kernel
如果更新了归档文件中的任何文件,则必须重建引导归档文件。为使修改生效,必须
在重新引导系统之前重建归档文件。
要手动重建引导归档文件,请使用bootadm 命令。还可以通过在故障安全归档文件
(GRUB 主菜单中的可用选项)中引导系统,来重建引导归档文件。在故障安全引导
过程中,如果看到系统提示,请键入y,以重建主引导归档文件。有关更多信息,请参
见第225 页中的“x86: 如何为恢复目的而引导故障安全归档文件”。
x86: 基于GRUB 的引导过程(参考)
242 系统管理指南:基本管理• 2006 年7 月