本章提供有关在 Solaris 系统上修改引导行为的信息。
以下列出本章所介绍的信息:
有关引导方面的新增功能以及有关引导过程的一般概述信息,请参见第 8 章。
有关引导 Oracle Solaris 系统的逐步说明,请参见第 12 章。
引导 PROM 用于引导系统。您可能需要更改系统引导的方法。例如,在系统进入多用户级别之前,可能需要重置要引导的设备或运行硬件诊断。
系统管理员通常使用 PROM 级别引导系统。您还可以在 PROM 级别更改缺省引导文件和引导设备。
如果您需要执行以下任一任务,则需要更改缺省引导设备:
向系统永久或临时性地添加新的驱动器
更改网络引导策略
从网络临时引导独立系统
有关 PROM 命令的完整列表,请参见 monitor(1M) 和 eeprom(1M) 手册页。
ok banner Sun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 333MHz), No Keyboard OpenBoot 3.15, 128 MB memory installed, Serial #number. Ethernet address number, Host ID: number. |
可能需要标识系统中的设备,以确定引导系统的合适设备。
需要执行以下操作后,才能安全地使用 probe 命令来确定与系统连接的设备。
将 PROM auto-boot? 参数更改为 False。
ok setenv auto-boot? false |
发出 reset-all 命令以清除系统注册。
ok reset-all |
您可以使用 sifting probe 命令查看系统提供的 probe 命令:
ok sifting probe |
如果在未清除系统注册的情况下运行 probe 命令,系统将会显示以下消息:
ok probe-scsi This command may hang the system if a Stop-A or halt command has been executed. Please type reset-all to reset the system before executing this command. Do you wish to continue? (y/n) n |
标识系统中的设备。
ok probe-device |
(可选)如果希望让系统在断电或使用 reset 命令之后重新引导,请将 auto-boot? 参数重置为 True。
ok setenv auto-boot? true auto-boot? = true |
将系统引导至多用户模式。
ok reset-all |
以下示例显示如何标识与 Ultra 10 系统连接的设备。
ok setenv auto-boot? false auto-boot? = false ok reset-all Resetting ... Sun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 333MHz), No Keyboard OpenBoot 3.15, 128 MB memory installed, Serial #10933339. Ethernet address 8:0:20:a6:d4:5b, Host ID: 80a6d45b. ok probe-ide Device 0 ( Primary Master ) ATA Model: ST34321A Device 1 ( Primary Slave ) Not Present Device 2 ( Secondary Master ) Removable ATAPI Model: CRD-8322B Device 3 ( Secondary Slave ) Not Present ok setenv auto-boot? true auto-boot? = true |
或者,您可以使用 devalias 命令标识 可能 与系统相连接设备的设备别名和关联路径。例如:
ok devalias screen /pci@1f,0/pci@1,1/SUNW,m64B@2 net /pci@1f,0/pci@1,1/network@1,1 cdrom /pci@1f,0/pci@1,1/ide@3/cdrom@2,0:f disk /pci@1f,0/pci@1,1/ide@3/disk@0,0 disk3 /pci@1f,0/pci@1,1/ide@3/disk@3,0 disk2 /pci@1f,0/pci@1,1/ide@3/disk@2,0 disk1 /pci@1f,0/pci@1,1/ide@3/disk@1,0 disk0 /pci@1f,0/pci@1,1/ide@3/disk@0,0 ide /pci@1f,0/pci@1,1/ide@3 floppy /pci@1f,0/pci@1,1/ebus@1/fdthree ttyb /pci@1f,0/pci@1,1/ebus@1/se:b ttya /pci@1f,0/pci@1,1/ebus@1/se:a keyboard! /pci@1f,0/pci@1,1/ebus@1/su@14,3083f8:forcemode keyboard /pci@1f,0/pci@1,1/ebus@1/su@14,3083f8 mouse /pci@1f,0/pci@1,1/ebus@1/su@14,3062f8 name aliases |
使系统进入 ok PROM 提示符下。
有关更多信息,请参见如何关闭独立系统。
使用 printenv 命令确定缺省引导设备。
ok printenv boot-device |
标识用于设置引导设备的参数。
标识 boot-device 值,如磁盘或网络。可以将 n 指定为磁盘编号。
将会以类似如下的格式显示缺省引导设备:
boot-device = /pci@1f,4000/scsi@3/disk@1,0:a
如果缺省引导设备是网络引导设备,则输出将类似如下:
boot-device = /sbus@1f,0/SUNW,fas@e,8800000/sd@a,0:a \ /sbus@1f,0/SUNW,fas@e,8800000/sd@0,0:a disk net
将缺省引导设备更改为某个其他设备之前,可能需要标识系统上的设备。有关如何标识系统上设备的信息,请参见SPARC: 如何标识系统中的设备。
更改为运行级别 0。
# init 0 |
此时将显示 ok PROM 提示符。有关更多信息,请参见 init(1M) 手册页。
更改 boot-device 参数的值。
ok setenv boot-device device[n] |
请使用 probe 命令之一,帮助您标识磁盘编号。
确认缺省引导设备已更改。
ok printenv boot-device |
保存新 boot-device 值。
ok reset-all |
新 boot-device 值将被写入 PROM。
在本示例中,将缺省引导设备设置为磁盘。
# init 0 # INIT: New run level: 0 . . . The system is down. syncing file systems... done Program terminated ok setenv boot-device /pci@1f,4000/scsi@3/disk@1,0 boot-device = /pci@1f,4000/scsi@3/disk@1,0 ok printenv boot-device boot-device /pci@1f,4000/scsi@3/disk@1,0 ok boot Resetting ... screen not found. Can't open input device. Keyboard not present. Using ttya for input and output. Sun Enterprise 220R (2 X UltraSPARC-II 450MHz), No Keyboard OpenBoot 3.23, 1024 MB memory installed, Serial #13116682. Ethernet address 8:0:20:c8:25:a, Host ID: 80c8250a. Rebooting with command: boot disk1 Boot device: /pci@1f,4000/scsi@3/disk@1,0 File and args: |
在本示例中,将缺省引导设备设置为网络。
# init 0 # INIT: New run level: 0 . . . The system is down. syncing file systems... done Program terminated ok setenv boot-device net boot-device = net ok printenv boot-device boot-device net disk ok reset Sun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 333MHz), No Keyboard OpenBoot 3.15, 128 MB memory installed, Serial #number. Ethernet address number, Host ID: number. Boot device: net File and args: . . . pluto console login: |
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
指定要引导的备用内核。
# eeprom boot-device new-boot-device |
确认已设置新的参数。
# eeprom boot-device |
输出应该显示 boot-device 参数的新的 eeprom 值。
ok reset-all |
系统将执行自检程序,对硬件运行诊断测试。然后,如果 auto-boot? 参数设置为 true,则重新引导系统。
更改为运行级别 0。
# init 0 |
此时将显示 ok PROM 提示符。有关更多信息,请参见 init(1M) 手册页。
将 boot-file 属性设置为备用内核。
ok setenv boot-file boot-file |
确认缺省引导设备已更改。
ok printenv boot-file |
保存新的 boot-file 值。
ok reset-all |
新的 boot-file 值会被写入 PROM。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
指定要引导的备用内核。
# eeprom boot-file new boot-file |
例如:
# eeprom boot-file=kernel.name/sparcv9/unix |
确认已设置新的参数。
# eeprom boot-file |
输出应该显示指定参数的新的 eeprom 值。
ITU 实用工具用于将软件包和修补程序转换为驱动更新 (Driver Update, DU) 格式,然后修补 Oracle Solaris 安装介质,这样您就可以使用这些新软件包和修补程序来引导系统。从 Oracle Solaris 10 9/10 开始,对 itu 命令进行了修改以使您能够在基于 SPARC 的系统上创建并存储 ITU,然后使用新创建的 ITU 引导系统。
ITU 实用程序允许您安装开箱即用驱动程序,并在安装过程中应用缺陷修补程序。以下步骤介绍了在基于 SPARC 的系统上创建并存储 ITU,然后使用新创建的 ITU 引导系统的过程。
在您要使用 ITU 引导的系统上,成为超级用户。
通过使用带有以下选项的 itu 命令创建 ITU:
# itu makedu -r solaris-release -o iso-file package1-name package2-name... |
使用一个或多个驱动程序软件包作为输入项,并将软件包转换为 DU 格式。
指定要进行驱动程序更新的 Oracle Solaris 发行版本号。使用的发行版本号格式为 5.10。
指定要创建的 ISO 映像文件路径。
有关 itu 命令及其所有选项的详细信息,请参见 itu(1M) 手册页。
使系统进入 ok PROM 提示符下。
禁用 auto-boot 属性。
ok setenv auto-boot?=false |
重置系统。
ok reset-all |
上一步骤很重要,因为它确保引导系统时不清除 itu-device 字符串。
查找 cdrom 别名。
ok devalias cdrom |
别名是连接到系统上 CD 或 DVD 驱动器的设备路径。请注意:此输出会因系统的不同而异。例如,在此过程中,cdrom 别名的位置如下所示:
/pci@8,700000/scsi@1/disk@6,0:f |
配置用于安装 ITU 的 itu-device 路径。
请注意:步骤 6 中的输出用于 config-string 的第一部分,如以下示例中所示:
ok> " /pci@8,700000/scsi@1/disk@6,0:f" d# 80 config-string itu-device |
80 指字符串允许的最大长度。如果您所修改的 cdrom 别名字符数大于 80,请适当地增加此数字。
使用 ITU 引导系统。
ok boot |
当您引导系统且 Solaris 安装过程开始时,系统将查找存储在 itu-device 上的 ITU。然后系统将标识和配置 itu-device 上可用的系统组件。另外还将标识和配置适用这些驱动程序的设备。安装完成后,设备可作为安装目标使用。
安装完成后,还原 auto-boot 属性的缺省值,然后引导系统。
ok setenv auto-boot?=true |
上述示例中假设 auto-boot 属性的缺省值为 true。
引导系统。
ok boot |
任务 |
说明 |
参考 |
---|---|---|
使用 eeprom 命令设置引导文件参数。 |
使用 eeprom 命令在基于 x86 的系统上修改引导行为。使用 eeprom 命令设置的引导选项会在系统重新引导后持续生效,除非通过在引导时在 GRUB 菜单中修改内核行为覆盖了这些选项。 | |
通过在引导时编辑 GRUB 菜单修改引导行为。 |
通过在引导时编辑 GRUB 菜单修改引导行为。通过在 GRUB 菜单中修改引导行为指定的引导选项仅在系统下一次重新引导之前持续生效。 | |
通过手动编辑 menu.lst 文件修改引导行为。 |
通过编辑 menu.lst 配置文件以添加新的 OS 项或重定向控制台,从而修改引导行为。您对该文件进行的更改会在系统重新引导后持续生效。 | |
修改 menu.lst 文件以包含支持 findroot 命令的条目。 |
在安装或升级后,可以向 menu.lst 菜单中添加其他使用 findroot 命令的菜单项。 |
在基于 x86 的系统上修改引导行为的主要方法如下所述:
使用 eeprom 命令。
eeprom 命令用于将不同的值指定给标准的属性集。这些与 SPARC OpenBoot PROM NVRAM 变量等效的值存储在 /boot/solaris/bootenv.rc 文件中。使用 eeprom 命令对引导行为进行的更改会在每次系统重新引导后持续生效,并且会在软件升级期间得以保留。您可以通过在引导时编辑 GRUB 菜单或者通过编辑 menu.lst 文件来覆盖这些更改。有关更多信息,请参见 eeprom(1M) 手册页。
通过直接编辑 bootenv.rc 文件进行的更改并不总是在软件升级期间得以保留。因此,建议不要使用这种方法。进行这些类型的更改的首选方法是使用 eeprom 命令。
通过在引导时编辑 GRUB 菜单。
通过在引导时修改 GRUB 内核行为进行的更改会覆盖使用 eeprom 命令设置的选项。但是,这些更改仅在下次引导系统之前保持生效。有关更多信息,请参见 kernel(1M) 手册页。
通过手动编辑 GRUB menu.lst 文件。
任何由系统生成的对 menu.lst 项的更改在系统升级期间会被改变或丢失。然而,手动添加的任何新引导项在升级后仍将保留。您可以通过在引导时编辑 GRUB 菜单或者通过编辑 menu.lst 文件来覆盖 eeprom 设置。通过在引导时编辑 GRUB 菜单进行的更改不会持续生效。然而,通过编辑 menu.lst 文件而做的更改在系统重新引导后持续生效。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
更改指定的参数。
# eeprom parameter=new-value |
确认已设置新的参数。
# eeprom parameter |
输出应该显示指定参数的新的 eeprom 值。
本示例说明如何手动指定系统引导 64 位内核。系统必须支持 64 位计算。
# eeprom boot-file=kernel/amd64/unix |
本示例说明如何在具备 64 位计算能力的系统上手动引导 32 位内核。
# eeprom boot-file=kernel/unix |
本示例说明如何在系统上恢复缺省的自动检测引导行为。
# eeprom boot-file="" |
以下是一个 GRUB 主菜单示例,该菜单所处的 Oracle Solaris 发行版支持从 ZFS 根文件系统引导系统。该菜单基于 menu.lst 文件的内容,包含了系统中所有可引导的 OS 实例的菜单项。除非另有指定,否则该菜单中的第一项是缺省项。要将其他引导项指定为缺省项,请向 menu.lst 文件中添加 default= n 命令,其中,n 是一个从 0(第一个引导项)开始的数字。
GNU GRUB version 0.95 (637K lower / 3144640K upper memory) +-------------------------------------------------------------------------+ be1) be1 failsafe be3 be3 failsafe be2 be2 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. |
menu.lst 文件中包含的信息具体视所使用的 Oracle Solaris 发行版和安装方法而异。
要编辑 GRUB 菜单中的引导项,请使用方向键选择该项,然后键入 e。
GNU GRUB version 0.95 (637K lower / 3144640K upper memory) +-------------------------------------------------------------------------+ findroot (BE_be1,0,a) bootfs rpool/ROOT/szboot_0508 kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive +-------------------------------------------------------------------------+ 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. |
有关在引导时编辑 GRUB 菜单的说明,请参见x86: 如何通过在引导时编辑 GRUB 菜单修改引导行为。
以下示例说明了各种 GRUB 实现中的编辑菜单:
GRUB ZFS 支持:
grub edit> kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS,prop=value [,prop=value...]][-asrvxk] [-m smf-options] [-i altinit] |
在具有 ZFS 支持的系统上添加引导参数时,请在缺省的 -B -$ZFS-BOOTFS 参数之后添加任何附加的 B 选项。
GRUB UFS 支持:
grub edit> kernel /platform/i86pc/multiboot [-asrvxk] [-m smf-options] [-i altinit][-B prop=value [,prop=value...]] |
下表介绍了您可以通过在引导时编辑 GRUB 菜单指定的引导参数和选项:
指定要引导的内核
提示用户输入配置信息
在单用户模式中引导系统
指定重新配置引导
系统将探测所有连接的硬件设备,然后指定文件系统中的节点,以便仅表示实际找到的那些设备。
在启用详细消息的情况下引导系统
勿在群集模式中引导系统
在启用内核调试器的情况下引导系统
控制服务管理工具 (Service Management Facility, SMF) 的引导行为
有两类选项:恢复选项和消息选项。
将备用可执行文件指定为原始进程。altinit 是指向可执行文件的有效路径。
指定内核引导属性。
以下是使用 -B prop=val 选项在 GRUB 菜单中修改引导行为的各种方式:
将控制台重定向到 ttya。
禁用设备的高级配置和电源接口 (Advanced Configuration and Power Interface, ACPI) 枚举。
将控制台重定向到 ttya 并禁用设备的 ACPI 枚举。
完全禁用 ACPI。
使用 eeprom 命令以及在 GRUB 命令行上指定属性时,GRUB 命令优先。
通过在引导时编辑 GRUB 菜单修改 GRUB 内核行为时,所做的更改不会在系统重新引导后持续生效。当您下次引导系统时,将恢复缺省的引导行为。
重新引导系统。
引导序列开始时,将显示 GRUB 主菜单。
使用方向键选择引导项进行编辑。
键入 e 以访问 GRUB 编辑菜单。
在此菜单中,选择 kernel 或 kernel$ 行。
键入 e 以向该行中添加引导参数。
键入任何附加的引导参数。
按回车键以保存您的更改,并返回到上一级菜单。
按 Esc 键返回 GRUB 主菜单,而不保存所做更改。
要引导系统,请键入 b。
您所做的更改将在引导系统时生效。
要在具备 64 位计算能力的系统上引导 32 位内核,请添加 kernel/unix 参数。
grub edit> kernel /platform/i86pc/multiboot kernel/unix |
要将串行控制台重定向到 ttyb,请添加 -B console=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,-" |
注意:在前面的示例中,属性值包含逗号,这也是属性分隔符。为避免混淆属性解析器,请使用双引号引住整个属性值。
可以对 GRUB 菜单(它基于 menu.lst 配置文件)进行自定义。安装或升级您的系统时,bootadm 命令会自动更新 menu.lst 文件以反映该特定发行版所支持的菜单项。重新引导系统时,此文件中列出的任何新安装的 OS 都将在 GRUB 菜单中显示为引导项。请注意,在安装除 Oracle Solaris 以外的操作系统时,您将需要在安装之后手动将菜单项添加到 menu.lst 文件中。
以下是一个典型 GRUB 主菜单示例,该菜单基于 menu.lst 文件的内容。该 GRUB 主菜单由所有可用的引导项外加一个故障安全归档文件组成。
GNU GRUB version 0.95 (631K lower / 2095488K upper memory) +-------------------------------------------------------------------------+ | Solaris 10.1 ... X86 | | Solaris failsafe | | | +-------------------------------------------------------------------------+ |
可配置的超时功能可用于引导缺省的 OS 项。所引导的缺省 OS 引导项可通过 default 命令进行配置。安装软件通常将此命令设置为引导有效的引导项之一。要引导 Oracle Solaris OS 的不同实例(如果适用)或者引导不同的 OS,请使用方向键突出显示不同的引导项。然后,按 Enter 键以引导该项。请注意,如果未设置 default 命令,将引导 GRUB 菜单中的第一个引导项。
只有活动的 menu.lst 文件可用于引导系统。要修改在引导系统时显示的 GRUB 菜单,请编辑活动的 GRUB menu.lst 文件。更改任何其他 menu.lst 文件不会对引导系统时显示的菜单产生任何影响。要确定活动的 menu.lst 文件的位置,请使用 bootadm 命令的 list-menu 子命令。有关使用 bootadm 命令的更多信息,请参见使用 bootadm 命令管理引导归档文件。
有关 Solaris OS 中每个 GRUB 实现中的 menu.lst 文件的完整描述,请参见x86: 受支持的 GRUB 版本。
出于以下某一原因,您可能需要修改 menu.lst 文件:
添加新的 OS 项
添加 GRUB 控制台重定向信息
因为只有活动的 GRUB menu.lst 文件可用于引导系统,所以请确保编辑正确的文件。更改任何其他 GRUB menu.lst 文件不会对引导系统时显示的菜单产生任何影响。
活动 menu.lst 文件的位置随您的系统具有 UFS 根还是 ZFS 根而异。
对于 UFS 根,活动 menu.lst 文件为 /boot/grub/menu.lst。
可以使用带有 list-menu 子命令的 bootadm 命令确定活动 GRUB menu.lst 文件的位置。
# bootadm list-menu |
有关 bootadm 命令的更多信息,请参见 bootadm(1M) 手册页。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
要向活动 menu.lst 文件中添加新的 OS 项,请使用文本编辑器修改该文件。
menu.lst 文件中的注释提供了添加新的 OS 项所必需的信息。
以下是运行具有 ZFS 引导支持的发行版的系统中的 menu.lst 文件示例。menu.lst 文件中的引导项随您所运行的 Oracle Solaris 发行版而异。
#---------- ADDED BY BOOTADM - DO NOT EDIT ---------- title Solaris Solaris 10 s10x_nbu6wos_nightly X86 kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive #---------------------END BOOTADM-------------------- |
请不要直接编辑 menu.lst 文件的原始内容。要对该文件中的任何 OS 项进行更改,请手动编辑该文件以复制现有内容。然后,对所复制的内容进行修改。
另请注意:当手动向文件中添加新项时,绝不包含安全注释,例如,“Added by bootadm”。系统将保留这些注释备用。不使用这些注释可以确保这些项在软件升级期间保持完整无损。
如果您已添加除缺省项以外的任何附加项,请手动进行等效更改。
如果原始 menu.lst 文件中存在 [-B *] 和 [*] 标志,则必须保留这些标志。另外,故障安全项应该总是具有 -s 标志。
添加必需的信息之后,保存该文件。
请注意,对该文件所做的任何更改将在下次重新引导系统时生效。
如果您正在运行 Linux,然后安装 Oracle Solaris,则当系统重新引导时,Linux 项不会显示在 GRUB 菜单中。在安装或升级系统之前,请保存包含 Linux 信息的 menu.lst 文件的副本。安装后,请将 Linux 信息添加到 Solaris 分区中新近创建的 menu.lst 文件中。
因为您对 menu.lst 文件所做的更改与 Oracle Solaris OS 不直接相关,所以无法使用 eeprom 命令进行这些更改。您必须直接编辑该文件。请注意, 软件升级过程会保留您对 menu.lst 文件所做的任何更改。
GRUB 可以引导 Linux 和 Oracle Solaris。但是,Linux GRUB 不能引导 Oracle Solaris。
请始终确保满足以下条件之一:
fdisk 分区是活动分区,且该分区安装了 GRUB,并且 menu.lst 文件是活动的 GRUB 菜单。
Oracle Solaris GRUB 被安装到主引导记录 (Master Boot Record, MBR),并且它引用 fdisk 分区中的 menu.lst。
有关与每个 Oracle Solaris 发行版相关的 GRUB menu.lst 的详细描述,请参见 x86: 受支持的 GRUB 版本。
以下示例说明 menu.lst 文件在安装了 Oracle Solaris ZFS 引导装载器的系统中的样子。缺省情况下,此系统将从 ZFS 根文件系统引导。请注意,该文件的内容随安装类型而异。
全新安装或标准升级:
title Solaris 10 s10x_nbu6wos_nightly X86 findroot (pool_rpool,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (pool_rpool,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-safe |
Oracle Solaris Live Upgrade
title be1 findroot (BE_be1,0,a) bootfs rpool/ROOT/szboot_0508 kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title be1 failsafe findroot (BE_be1,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-sa |
以下示例说明 menu.lst 文件在安装了 UFS 根文件系统的系统中的样子。缺省情况下,此系统将从 UFS 根文件系统引导。
全新安装或标准升级:
title Solaris 10 s10x_nbu6wos_nightly X86 findroot (rootfs0,0,a) kernel /platform/i86pc/multiboot module /platform/i86pc/boot_archive title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-safe |
Oracle Solaris Live Upgrade:
title be1 findroot (BE_be1,0,a) kernel /platform/i86pc/multiboot module /platform/i86pc/boot_archive title be1 failsafe findroot (BE_be1,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-safe |
在具有 ZFS 根的系统上,活动的 menu.lst 文件通常位于 /pool-name/boot/grub/menu.lst 中。
在具有 UFS 根的系统上,活动的 menu.lst 文件通常位于 /boot/grub/menu.lst 中。
要找到活动的 GRUB 菜单,请使用带有 list-menu 子命令的 bootadm 命令。
# bootadm list-menu |
此命令还将列出活动 menu.lst 文件的内容:
# bootadm list-menu The location for the active GRUB menu is: /pool-name/boot/grub/menu.lst default 0 timeout 10 0 be1 1 be1 failsafe 2 be3 3 be3 failsafe 4 be2 5 be2 failsafe |
有关使用 bootadm 命令的进一步说明,请参见使用 bootadm 命令管理引导归档文件。
所有安装方法(包括 Oracle Solaris Live Upgrade)现在都使用 findroot 命令来指定要引导基于 x86 的系统上的哪个磁盘片。此增强功能支持具有 ZFS 根以及 UFS 根的系统引导。此信息位于 GRUB 使用的 menu.lst 文件中。以前,root 命令 root (hd0.0.a) 用于明确指定要引导哪个磁盘片。
安装方法包括 Oracle Solaris Live Upgrade、Oracle Solaris JumpStart 和安装程序 GUI 程序。
findroot 命令后跟片上的签名文件 (mysign, 0, a),其中 mysign 是位于 /boot/grub/bootsign 目录中的签名文件的名称。从 ZFS 根引导系统时,ZFS GRUB 插件会寻找并尝试挂载 fdisk 分区 0 的片 a 中的 ZFS 文件系统。
签名文件的名称随所使用的安装方法而异。有关 findroot 命令使用的命名约定的更多信息,请参见findroot 命令使用的命名约定。
在安装或升级后,可以向 GRUB 菜单中添加其他也使用 findroot 命令的菜单项。有关说明,请参见x86: 如何添加使用 findroot 命令的 GRUB 菜单项。
引导签名必须是唯一的。不要使用或删除系统生成的签名或 Oracle Solaris 软件多个实例相同的用户签名。否则,可能会导致引导不正确的 OS 实例或者阻止系统引导。
请注意,在某些情况下(例如,为了引导 Windows),仍然可以在 menu.lst 文件中使用 root 命令。但是,当 findroot 命令为首选项时,不要使用 root 命令。
以下示例介绍一个使用 findroot 命令的 menu.lst 文件项的格式:
title Solaris 10 s10x_nbu6wos_nightly X86 findroot (pool_rpool,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (pool_rpool,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-safe |
以下是支持 Oracle Solaris ZFS 引导装载器的系统中的 menu.lst 文件示例。在执行 Oracle Solaris Live Upgrade 时,将自动在该文件中添加用于从 ZFS 根文件系统引导的信息。
title be1 findroot (BE_be1,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title be1 failsafe findroot (BE_be1,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttyb module /boot/x86.miniroot-safe |
以下过程说明如何通过使用 findroot 命令的用户定义的项来手动更新 menu.lst 文件。通常,这些项在安装或升级之后添加。有关添加使用 findroot 命令的用户定义项的准则,请参见x86: findroot 命令的实现。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
在要引导的根 (/) 文件系统或根池中创建引导签名文件。
对于 ZFS 池 my-pool,请在 /my-pool/boot/grub/bootsign 目录中创建引导签名文件。
# touch /my-pool/boot/grub/bootsign/user-sign |
对于 UFS 文件系统,请在要引导的根文件系统的 /boot/grub/bootsign 目录中创建引导签名文件。
# touch /boot/grub/bootsign/user-sign |
请确保您为引导签名选择的文件名是唯一的。不要使用系统生成的签名或在 Oracle Solaris 的多个实例中重复的用户签名。否则,可能会阻止系统引导,或者会导致错误的 Oracle Solaris 实例引导。
添加一个包含 findroot 命令的菜单项。
重新引导系统。
新项会出现在 GRUB 菜单中,并且可以选择该项以引导指定的 Oracle Solaris OS 实例。