系统管理指南:基本管理

第 11 章 修改 Oracle Solaris 引导行为(任务)

本章提供有关在 Solaris 系统上修改引导行为的信息。

以下列出本章所介绍的信息:

有关引导方面的新增功能以及有关引导过程的一般概述信息,请参见第 8 章

有关引导 Oracle Solaris 系统的逐步说明,请参见第 12 章

在基于 SPARC 的系统上修改引导行为(任务图)

任务 

说明 

参考 

确定 PROM 修订号。 

ok 提示符下使用 banner 命令以显示系统的 PROM 修订号。

SPARC: 如何查找系统的 PROM 修订号

标识系统中可引导的设备。 

在使用引导 PROM 修改引导行为之前,标识系统中的设备。 

SPARC: 如何标识系统中的设备

显示当前引导设备。 

使用此过程来确定当前用于引导系统的缺省引导设备。 

SPARC: 如何确定缺省引导设备

更改缺省引导设备。 

要更改缺省引导设备,请使用以下方法之一:

  • 使用引导 PROM 更改 boot-device 参数。

  • 使用 eeprom 命令更改 boot-device 参数。

SPARC: 如何使用引导 PROM 更改缺省引导设备

SPARC: 如何使用 eeprom 命令更改缺省引导设备

重置系统。 

重置系统时,系统将运行对硬件的诊断测试,然后重新引导。 

SPARC: 重置系统

更改缺省引导文件。 

要更改系统引导的缺省内核,请使用以下方法之一:

  • 使用引导 PROM 更改 boot-file 参数。

  • 使用 eeprom 命令更改 boot-file 参数。

SPARC: 如何使用引导 PROM 更改缺省内核

SPARC: 如何使用 eeprom 命令更改缺省内核

利用安装时更新 (ITU) 引导系统。 

新 ITU 实用程序允许您利用创建的安装时更新引导 SPARC 系统。 

SPARC: 如何使用新创建的 ITU 引导系统

SPARC: 使用引导 PROM

引导 PROM 用于引导系统。您可能需要更改系统引导的方法。例如,在系统进入多用户级别之前,可能需要重置要引导的设备或运行硬件诊断。

系统管理员通常使用 PROM 级别引导系统。您还可以在 PROM 级别更改缺省引导文件和引导设备。

如果您需要执行以下任一任务,则需要更改缺省引导设备:

有关 PROM 命令的完整列表,请参见 monitor(1M)eeprom(1M) 手册页。

ProcedureSPARC: 如何查找系统的 PROM 修订号

  1. 使用 banner 命令显示系统的 PROM 修订号。


    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.

    将显示硬件配置信息, 包括 PROM 的修订号。在上述示例中,PROM 修订号为 3.15。

ProcedureSPARC: 如何标识系统中的设备

可能需要标识系统中的设备,以确定引导系统的合适设备。

开始之前

需要执行以下操作后,才能安全地使用 probe 命令来确定与系统连接的设备。

您可以使用 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
  1. 标识系统中的设备。


    ok probe-device
    
  2. (可选)如果希望让系统在断电或使用 reset 命令之后重新引导,请将 auto-boot? 参数重置为 True。


    ok setenv auto-boot? true
    auto-boot? =          true
  3. 将系统引导至多用户模式。


    ok reset-all
    

示例 11–1 SPARC: 标识系统中的设备

以下示例显示如何标识与 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

ProcedureSPARC: 如何确定缺省引导设备

  1. 使系统进入 ok PROM 提示符下。

    有关更多信息,请参见如何关闭独立系统

  2. 使用 printenv 命令确定缺省引导设备。


    ok printenv boot-device
    
    boot-device

    标识用于设置引导设备的参数。

    device[n]

    标识 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

ProcedureSPARC: 如何使用引导 PROM 更改缺省引导设备

将缺省引导设备更改为某个其他设备之前,可能需要标识系统上的设备。有关如何标识系统上设备的信息,请参见SPARC: 如何标识系统中的设备

  1. 更改为运行级别 0。


    # init 0
    

    此时将显示 ok PROM 提示符。有关更多信息,请参见 init(1M) 手册页。

  2. 更改 boot-device 参数的值。


    ok setenv boot-device device[n]

    请使用 probe 命令之一,帮助您标识磁盘编号。

  3. 确认缺省引导设备已更改。


    ok printenv boot-device
    
  4. 保存新 boot-device 值。


    ok reset-all
    

    boot-device 值将被写入 PROM。


示例 11–2 SPARC: 更改缺省引导设备

在本示例中,将缺省引导设备设置为磁盘。


# 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:

ProcedureSPARC: 如何使用 eeprom 命令更改缺省引导设备

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 指定要引导的备用内核。


    # eeprom boot-device new-boot-device
    
  3. 确认已设置新的参数。


    # eeprom boot-device
    

    输出应该显示 boot-device 参数的新的 eeprom 值。

SPARC: 重置系统

ok 提示符运行以下命令:


ok reset-all

系统将执行自检程序,对硬件运行诊断测试。然后,如果 auto-boot? 参数设置为 true,则重新引导系统。

ProcedureSPARC: 如何使用引导 PROM 更改缺省内核

  1. 更改为运行级别 0。


    # init 0
    

    此时将显示 ok PROM 提示符。有关更多信息,请参见 init(1M) 手册页。

  2. boot-file 属性设置为备用内核。


    ok setenv boot-file boot-file
    
  3. 确认缺省引导设备已更改。


    ok printenv boot-file
    
  4. 保存新的 boot-file 值。


    ok reset-all
    

    新的 boot-file 值会被写入 PROM。

ProcedureSPARC: 如何使用 eeprom 命令更改缺省内核

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 指定要引导的备用内核。


    # eeprom boot-file new boot-file
    

    例如:


    # eeprom boot-file=kernel.name/sparcv9/unix
    
  3. 确认已设置新的参数。


    # eeprom boot-file
    

    输出应该显示指定参数的新的 eeprom 值。

SPARC 支持 ITU 构造工具

ITU 实用工具用于将软件包和修补程序转换为驱动更新 (Driver Update, DU) 格式,然后修补 Oracle Solaris 安装介质,这样您就可以使用这些新软件包和修补程序来引导系统。从 Oracle Solaris 10 9/10 开始,对 itu 命令进行了修改以使您能够在基于 SPARC 的系统上创建并存储 ITU,然后使用新创建的 ITU 引导系统。

ProcedureSPARC: 如何使用新创建的 ITU 引导系统

ITU 实用程序允许您安装开箱即用驱动程序,并在安装过程中应用缺陷修补程序。以下步骤介绍了在基于 SPARC 的系统上创建并存储 ITU,然后使用新创建的 ITU 引导系统的过程。

  1. 在您要使用 ITU 引导的系统上,成为超级用户。

  2. 通过使用带有以下选项的 itu 命令创建 ITU:


    # itu makedu -r solaris-release -o iso-file package1-name package2-name...
    
    makedu

    使用一个或多个驱动程序软件包作为输入项,并将软件包转换为 DU 格式。

    -r solaris-release

    指定要进行驱动程序更新的 Oracle Solaris 发行版本号。使用的发行版本号格式为 5.10。

    -o iso-file

    指定要创建的 ISO 映像文件路径。

    有关 itu 命令及其所有选项的详细信息,请参见 itu(1M) 手册页。

  3. 使系统进入 ok PROM 提示符下。

  4. 禁用 auto-boot 属性。


    ok setenv auto-boot?=false
    
  5. 重置系统。


    ok reset-all
    

    注 –

    上一步骤很重要,因为它确保引导系统时不清除 itu-device 字符串。


  6. 查找 cdrom 别名。


    ok devalias cdrom
    

    别名是连接到系统上 CD 或 DVD 驱动器的设备路径。请注意:此输出会因系统的不同而异。例如,在此过程中,cdrom 别名的位置如下所示:


    /pci@8,700000/scsi@1/disk@6,0:f
  7. 配置用于安装 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,请适当地增加此数字。


  8. 使用 ITU 引导系统。


    ok boot
    

    当您引导系统且 Solaris 安装过程开始时,系统将查找存储在 itu-device 上的 ITU。然后系统将标识和配置 itu-device 上可用的系统组件。另外还将标识和配置适用这些驱动程序的设备。安装完成后,设备可作为安装目标使用。

  9. 安装完成后,还原 auto-boot 属性的缺省值,然后引导系统。


    ok setenv auto-boot?=true
    

    上述示例中假设 auto-boot 属性的缺省值为 true

  10. 引导系统。


    ok boot
    

在基于 x86 的系统上修改引导行为(任务图)

任务 

说明 

参考 

使用 eeprom 命令设置引导文件参数。

使用 eeprom 命令在基于 x86 的系统上修改引导行为。使用 eeprom 命令设置的引导选项会在系统重新引导后持续生效,除非通过在引导时在 GRUB 菜单中修改内核行为覆盖了这些选项。

x86: 如何使用 eeprom 命令修改引导行为

通过在引导时编辑 GRUB 菜单修改引导行为。 

通过在引导时编辑 GRUB 菜单修改引导行为。通过在 GRUB 菜单中修改引导行为指定的引导选项仅在系统下一次重新引导之前持续生效。 

x86: 如何通过在引导时编辑 GRUB 菜单修改引导行为

通过手动编辑 menu.lst 文件修改引导行为。

通过编辑 menu.lst 配置文件以添加新的 OS 项或重定向控制台,从而修改引导行为。您对该文件进行的更改会在系统重新引导后持续生效。

x86: 如何通过编辑 menu.lst 文件修改引导行为

修改 menu.lst 文件以包含支持 findroot 命令的条目。

在安装或升级后,可以向 menu.lst 菜单中添加其他使用 findroot 命令的菜单项。

x86: 如何添加使用 findroot 命令的 GRUB 菜单项

在基于 x86 的系统上修改引导行为

在基于 x86 的系统上修改引导行为的主要方法如下所述:

Procedurex86: 如何使用 eeprom 命令修改引导行为

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 更改指定的参数。


    # eeprom parameter=new-value
    
  3. 确认已设置新的参数。


    # eeprom parameter
    

    输出应该显示指定参数的新的 eeprom 值。


示例 11–3 x86: 使用 eeprom 命令设置 boot-file 参数

本示例说明如何手动指定系统引导 64 位内核。系统必须支持 64 位计算。


# eeprom boot-file=kernel/amd64/unix

本示例说明如何在具备 64 位计算能力的系统上手动引导 32 位内核。


# eeprom boot-file=kernel/unix

本示例说明如何在系统上恢复缺省的自动检测引导行为。


# eeprom boot-file=""

x86: 通过在引导时编辑 GRUB 菜单修改引导行为

以下是一个 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 菜单修改引导行为

在 Oracle Solaris 10 中编辑 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 菜单指定的引导参数

下表介绍了您可以通过在引导时编辑 GRUB 菜单指定的引导参数和选项:

multiboot

指定要引导的内核

-a

提示用户输入配置信息

-s

在单用户模式中引导系统

-r

指定重新配置引导

系统将探测所有连接的硬件设备,然后指定文件系统中的节点,以便仅表示实际找到的那些设备。

-v

在启用详细消息的情况下引导系统

-x

勿在群集模式中引导系统

-k

在启用内核调试器的情况下引导系统

-m smf-options

控制服务管理工具 (Service Management Facility, SMF) 的引导行为

有两类选项:恢复选项和消息选项。

-i altinit

将备用可执行文件指定为原始进程。altinit 是指向可执行文件的有效路径。

-B prop=value[,prop=value]...

指定内核引导属性。

以下是使用 -B prop=val 选项在 GRUB 菜单中修改引导行为的各种方式:

-B console=ttya

将控制台重定向到 ttya

-B acpi-enum=off

禁用设备的高级配置和电源接口 (Advanced Configuration and Power Interface, ACPI) 枚举。

-B console=ttya,acpi-enum=off

将控制台重定向到 ttya 并禁用设备的 ACPI 枚举。

-B acpi-user-options=0x2

完全禁用 ACPI。


注 –

使用 eeprom 命令以及在 GRUB 命令行上指定属性时,GRUB 命令优先。


Procedurex86: 如何通过在引导时编辑 GRUB 菜单修改引导行为

通过在引导时编辑 GRUB 菜单修改 GRUB 内核行为时,所做的更改不会在系统重新引导后持续生效。当您下次引导系统时,将恢复缺省的引导行为。

  1. 重新引导系统。

    引导序列开始时,将显示 GRUB 主菜单。

  2. 使用方向键选择引导项进行编辑。

  3. 键入 e 以访问 GRUB 编辑菜单。

  4. 在此菜单中,选择 kernelkernel$ 行。

  5. 键入 e 以向该行中添加引导参数。

  6. 键入任何附加的引导参数。

  7. 按回车键以保存您的更改,并返回到上一级菜单。


    注 –

    按 Esc 键返回 GRUB 主菜单,而不保存所做更改。


  8. 要引导系统,请键入 b

    您所做的更改将在引导系统时生效。


示例 11–4 x86: 在具备 64 位计算能力的系统上引导 32 位内核

要在具备 64 位计算能力的系统上引导 32 位内核,请添加 kernel/unix 参数。


grub edit> kernel /platform/i86pc/multiboot kernel/unix


示例 11–5 x86: 重定向串行控制台

要将串行控制台重定向到 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,-"

注意:在前面的示例中,属性值包含逗号,这也是属性分隔符。为避免混淆属性解析器,请使用双引号引住整个属性值。


x86: 通过编辑 menu.lst 文件修改引导行为

可以对 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 版本

Procedurex86: 如何通过编辑 menu.lst 文件修改引导行为

出于以下某一原因,您可能需要修改 menu.lst 文件:

开始之前

因为只有活动的 GRUB menu.lst 文件可用于引导系统,所以请确保编辑正确的文件。更改任何其他 GRUB menu.lst 文件不会对引导系统时显示的菜单产生任何影响。

活动 menu.lst 文件的位置随您的系统具有 UFS 根还是 ZFS 根而异。

可以使用带有 list-menu 子命令的 bootadm 命令确定活动 GRUB menu.lst 文件的位置。


# bootadm list-menu

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

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 要向活动 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 标志。

  3. 添加必需的信息之后,保存该文件。

    请注意,对该文件所做的任何更改将在下次重新引导系统时生效。


    提示 –

    如果您正在运行 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 版本


示例 11–6 具有 Oracle Solaris ZFS 引导装载器的系统上的 menu.lst 文件

以下示例说明 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


示例 11–7 具有 UFS 引导装载器的系统中的 menu.lst 文件

以下示例说明 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

x86: 找到活动的 GRUB menu.lst 文件

在具有 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 命令管理引导归档文件

x86: findroot 命令的实现

所有安装方法(包括 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 命令。


示例 11–8 x86: 支持 UFS 引导装载器的系统中的缺省 menu.lst 文件

以下示例介绍一个使用 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


示例 11–9 x86: 支持 Oracle Solaris ZFS 引导装载器的缺省 menu.lst 文件

以下是支持 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

Procedurex86: 如何添加使用 findroot 命令的 GRUB 菜单项

以下过程说明如何通过使用 findroot 命令的用户定义的项来手动更新 menu.lst 文件。通常,这些项在安装或升级之后添加。有关添加使用 findroot 命令的用户定义项的准则,请参见x86: findroot 命令的实现

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 在要引导的根 (/) 文件系统或根池中创建引导签名文件。

    • 对于 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 实例引导。


  3. 添加一个包含 findroot 命令的菜单项。

    1. 找到活动的 menu.lst 文件:


      # bootadm list-menu
      
    2. 使用文本编辑器编辑活动的 menu.lst 文件,添加以下项:


      title    User Solaris boot entry
      findroot  (user-sign, 3, c)
      kernel$   /platform/i86pc/multiboot
      module  /platform/i86pc/boot_archive

      在上一示例中,3 表示第 4 个 fdisk 分区(分区号从 0 开始)。c 表示 Solaris fdisk 分区内的片(片号从 a 开始)。

  4. 重新引导系统。

    新项会出现在 GRUB 菜单中,并且可以选择该项以引导指定的 Oracle Solaris OS 实例。