JavaScript is required to for searching.
跳过导航链接
退出打印视图
在 x86 平台上引导和关闭 Oracle Solaris     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

关于本书

1.  引导和关闭基于 x86 的系统(概述)

2.  将基于 x86 的系统引导至指定状态(任务)

3.  关闭系统(任务)

4.  重新引导基于 x86 的系统(任务)

5.  从网络引导基于 x86 的系统(任务)

6.  在基于 x86 的系统上修改引导参数(任务)

在基于 x86 的系统上修改引导参数(任务列表)

在基于 x86 的系统上修改引导参数

使用 eeprom 命令显示和设置引导参数

如何使用 eeprom 命令修改引导参数

在引导时修改引导参数

x86: 如何在引导时修改引导参数

支持位映射控制台

禁用关机动画

通过编辑 menu.lst 文件修改引导项和引导参数

如何在安装 Oracle Solaris 之后将 Linux 项添加到 GRUB 菜单

使用 bootadm 命令显示和设置引导项的参数

如何找到活动的 GRUB 菜单并列出当前菜单项

如何设置活动 GRUB 菜单的缺省引导项

7.  在 x86 平台上从 ZFS 引导环境创建、管理和引导(任务)

8.  使基于 x86 的系统保持可引导(任务)

9.  基于 x86 的系统引导故障排除(任务)

索引

在基于 x86 的系统上修改引导参数

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

使用 eeprom 命令显示和设置引导参数

要确定特定引导参数的缺省值,请使用 eeprom 命令,如下所示:

$ eeprom parameter

例如,要显示 boot-device 参数的缺省值,需要键入:

$ eeprom boot-device

注 - 您不必成为 root 用户就能显示引导参数。但是,要使用 eeprom 命令更改引导参数或任何其他参数,则必须成为 root 用户。


如何使用 eeprom 命令修改引导参数

  1. 成为 root 角色。
  2. 更改指定的参数。
    # eeprom parameter=new-value
  3. 确认已设置新的参数。
    # eeprom parameter

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

示例 6-1 使用 eeprom 命令设置 auto-boot 参数

以下示例显示如何将 auto-boot 引导参数设置为 true。

# eeprom auto-boot?=true

eeprom 命令在用户模式下运行时,结尾具有问号 (?) 的任何参数都需要括在双引号中,以防止 shell 解释该问号。在问号前加一个转义符 (\) 也可以防止 shell 解释问号。例如:

# eeprom "auto-boot?"=true

在引导时修改引导参数

要在引导时修改系统的引导行为(例如将系统引导至单用户状态或在启用了内核调试器的情况下引导系统),可以在显示 GRUB 菜单时,通过键入 e 在 GRUB 菜单中编辑引导项,从而中断引导过程。

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

unix

指定要引导的内核。

-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 acpi-enum=off

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

-B acpi-user-options=0x2

完全禁用 ACPI。

-B console=force-text

指定使用 VGA 文本模式进行引导。请参见支持位映射控制台

-B console=graphics

指定控制台使用图形模式进行引导,其中启用了高分辨率状态。

-B console=text

指定控制台使用文本模式进行引导,其中启用了高分辨率状态。

-B screen-#columns= value, screen-#rows=
value

指定帧缓存器控制台的行数和列数。系统会自动检测所选数量的行或列的最合适字体。此选项用于优化帧缓存器控制台的大小。请参见支持位映射控制台

-B console=ttya

将控制台重定向到 ttya

-B console=ttya,acpi-enum=off

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


注 - 使用 eeprom 命令以及在 GRUB 命令行上指定参数时,GRUB 命令行优先。


x86: 如何在引导时修改引导参数

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

  1. 重新引导系统。

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

  2. 使用方向键选择引导项进行编辑。
  3. 键入 e 以访问 GRUB 编辑菜单。
  4. 在菜单中选择 kernel$ 行。
  5. 键入 e 以向该行中添加引导参数。
  6. 键入任何附加的引导参数。
  7. 按回车键以保存您的更改,并返回到上一级菜单。

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


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

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

支持位映射控制台

与较早的视频图形阵列 (Video Graphics Array, VGA) 640-480 16 色控制台相比,Oracle Solaris 11 在基于 x86 的系统上支持更高的分辨率和颜色深度。对于使用传统 BIOS 和视频电子标准协会 (Video Electronics Standards Association, VESA) 选项只读存储器 (read-only memory, ROM) 的系统,提供这种支持。请注意,这种支持仅限于图形卡或帧缓存器用作物理或虚拟控制台的情况下。对串行控制台的行为则没有任何影响。

为支持此功能,提供了以下两个命令行 -B option=val 参数:

-B console=force-text

指定使用 VGA 文本模式进行引导。

-B screen-#columns= value, screen-#rows=
value

指定帧缓存器控制台的行数和列数。系统会自动检测所选数量的行或列的最合适字体。此选项用于优化帧缓存器控制台的大小。

缺省情况下,GRUB 会检测已安装的视频卡和监视器中使用的分辨率和颜色深度。但是,也可以指定不同的分辨率,例如,更高的分辨率和不同的颜色深度。

GRUB 支持使用以下两种方法来指定视频模式:

vbeset hexmode

指定所需 VESA 模式的十六进制代码。要获取视频卡和监视器支持的所有模式列表,请在 GRUB 命令提示符下使用 vbeprobe 命令,该命令将显示与以下内容类似的列表:

0x117: Direct Color, 1024x768x16
0x118: Direct Color, 1024x768x32
0x11a: Direct Color, 1280x1024x16
0x11b: Direct Color, 1280x1024x32
[...]

用于指定 1024x768x32 配置的 vbeset 项如下所示:

vbset 0x118

vbeset 项必须在 GRUB 菜单中的 kernel$module$ 项之后指定。

vbematch xres yres depth

指示 GRUB 搜索指定的配置,例如 1024x768x32。如果找到,GRUB 将设置指定的配置。

用来代替 vbeset 项时,1024x768x32 配置的 vbematch 项如下所示:

vbematch 1024 768 32

vbematch 项必须在 GRUB 菜单中的 kernel$module$ 项之后指定。

示例 6-2 x86: 为控制台配置文本模式引导参数

在文本模式下,控制台输出将发送到帧缓存器,而从键盘接收输入。图形模式(文本模式的衍生模式)会显示具有动画效果的图像,直到按下某个键或通过控制台 loginsuloginkmdb 命令要求进行控制台交互。文本的新属性 force-text 会指示系统不将 VGA 适配器用作位图设备,并将该适配器设置为 VGA 文本模式。

如果此属性不存在,控制台设备会恢复到由 input-deviceoutput-device 属性对指定的设备。如果控制台属性以及 input-deviceoutput-device 属性对都不存在,则控制台缺省为帧缓存器和键盘。

以下示例说明引导时如何在内核命令行指定 -B console=force-text 属性:

-B console=force-text

示例 6-3 x86: 启用图形显示和配置控制台文本模式参数

缺省情况下,控制台文本模式具有 80 列、24 行。要重新配置此参数,请使用带有 screen-#columns=valuescreen-#rows=value 参数的 -B 选项。

例如,可以在内核命令行中指定以下参数,以启用图形显示并分配具有 100 列、60 行的控制台终端:

-B console=graphics, screen-#columns=100,screen-#rows=60

禁用关机动画

在关机过程中,如果在引导系统时使用了 console=graphics 选项,并且 Xorg 服务器触发了关机操作,则会显示进度状态指示器。要阻止显示进度状态指示器,请将 svc:/system/boot-config SMF 服务的新 splash-shutdown 属性设置为 false,如下所示:

# svccfg -s svc:/system/boot-config:default setprop config/splash_shutdown = false
# svcadm refresh svc:/system/boot-config:default

通过编辑 menu.lst 文件修改引导项和引导参数

可以对 GRUB 菜单(它基于 menu.lst 配置文件中的项)进行定制。Solaris 会自动为 Oracle Solaris 引导环境 (boot environment, BE) 管理 GRUB menu.lst 项。创建引导环境(通过包管理系统或显式使用 beadm 命令)时,GRUB 项会添加到 menu.lst 文件中。使用 beadm destroy 命令与 destroy 子命令删除引导环境时,会从 GRUB menu.lst 文件中删除相应的项。Oracle Solaris 不会自动为您系统上安装的其他操作系统添加 menu.lst 项。您必须手动为这些操作系统添加菜单项。有关更多信息,请参见如何在安装 Oracle Solaris 之后将 Linux 项添加到 GRUB 菜单

Oracle Solaris 11 的典型 menu.lst 文件可能包括以下信息:

#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Oracle Solaris 11 1
findroot (pool_rpool,0,a) 2
bootfs rpool/ROOT/solaris 3
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS,console=graphics 4
module$ /platform/i86pc/$ISADIR/boot_archive 5
#---------------------END BOOTADM-------------------- 
  1. 为菜单项指定操作系统标题。

  2. 在所有分区中搜索 SIGNATURE 文件名。在此示例中,文件名为 pool_rpool

    GRUB 仅在 /boot/grub/bootsign 目录中搜索文件名,然后在找到文件的第一个实例后立即停止搜索。要有效地使用该方法,签名文件的名称在所有分区中必须唯一。在定位签名文件之后,GRUB 会对该分区调用 root 命令。要优化搜索,可以指定可选的分区和分片。

  3. 将当前 ZFS 引导文件系统设置为指定值。在此 menu.lst 文件示例中,属性将当前 ZFS 引导文件系统设置为 rpool/ROOT/solaris

  4. 从指定路径装入主引导映像。此行的其余部分以内核命令行形式逐字传递。美元符号 ($) 是 $ISADIR 项的扩展。

  5. 装入给定内核的引导归档文件。美元符号 ($) 是 $ISADIR 项的扩展。


注 - 要了解有关特定 GRUB 命令的更多信息,请从命令行中键入 help command


可配置的超时功能可用于引导缺省操作系统。所引导的缺省项可通过 default 命令进行配置。安装软件通常将该命令设置为引导有效的引导项之一。要引导不同版本的 Oracle Solaris(如果适用)或者引导除 Oracle Solaris 之外的其他操作系统,请使用方向键选择相应引导项,然后按 Enter 键引导该操作系统。请注意,如果未设置 default 命令,将引导 GRUB 菜单中的第一个引导项。

只有活动的 menu.lst 文件可用于引导系统。要修改在引导系统时显示的 GRUB 菜单,请编辑活动的 GRUB menu.lst 文件。更改任何其他 menu.lst 文件不会对引导系统时显示的菜单产生任何影响。要确定活动 menu.lst 文件的位置,请使用 bootadm 命令的 list-menu 子命令。

如何在安装 Oracle Solaris 之后将 Linux 项添加到 GRUB 菜单

如果您通过首先将 Linux 安装到一个分区,然后将 Oracle Solaris 安装到另一个分区的方法设置引导环境,需要遵循特殊说明以确保新安装生成的 GRUB 菜单信息不会删除先前安装生成的 GRUB 菜单信息。以下过程说明了如何手动更新 menu.lst 文件以包含先前安装的 Lunix 项。下列说明假设您已在系统上安装了 Linux,然后又安装了 Oracle Solaris。

  1. 完成 Linux 安装后,将活动的 menu.lst 文件复制到 USB 驱动器中,以便在完成 Oracle Solaris 安装后可以重新使用其中的信息。

    通常,此文件为 /boot/grub/menu.lst

    • 如果您不确定活动 menu.lst 文件的位置,请使用 bootadm 命令查找该文件:
      # bootadm list-menu
    • 如果您不确定 USB 驱动器的位置,请使用 mount 命令(不带选项)确定 USB 驱动器的安装位置。然后,将 menu.list 文件复制到该位置。
  2. 安装完成后,编辑活动 menu.lst 文件,如下所示:
    1. 打开终端窗口并成为 root 角色。
      $ su root
      Password:
    2. 使用文本编辑器编缉 menu.lst 文件。

      例如:

      # vi /pool-name/boot/grub/menu.lst

      其中 pool-name 是 ZFS 存储池的名称。

    3. 使用在步骤 1 中复制 menu.lst 文件的 USB 驱动器,将原始 Linux 安装生成的 Lunix menu.lst 信息复制到新 menu.lst 文件的末尾。

      例如,Ubuntu 安装生成的 menu.lst 文件与以下内容类似:

      title        Ubuntu 8.04, kernel 2.6.24-18-generic
          root        (hd0,4)
          kernel        /vmlinuz-2.6.24-18-generic \
      root=UUID=1ed7fa17-6d77-4b49-be1a-22481310fd1b ro quiet splash
          initrd        /initrd.img-2.6.24-18-generic
          quiet
      
          title        Ubuntu 8.04, kernel 2.6.24-18-generic (recovery mode)
          root        (hd0,4)
          kernel        /vmlinuz-2.6.24-18-generic \
      root=UUID=1ed7fa17-6d77-4b49-be1a-22481310fd1b ro single
          initrd        /initrd.img-2.6.24-18-generic

      注意

      注意 - 请不要直接编辑 menu.lst 文件的原始内容。始终将新信息添加到文件的末尾,或者通过复制现有内容然后再对该内容进行修改来进行更改。


    4. 保存并退出该文件。
  3. 重新引导系统。

    当系统重新引导时,GRUB 菜单应包含对应于 Linux 和 Oracle Solaris 操作系统的项。

使用 bootadm 命令显示和设置引导项的参数

如何找到活动的 GRUB 菜单并列出当前菜单项

使用此过程可确定活动 GRUB 菜单的位置并列出当前的 GRUB 菜单项。

  1. 成为 root 角色。
  2. 要列出活动 GRUB 菜单的位置和当前的 GRUB 菜单项,请键入:
    # bootadm list-menu
    list-menu

    列出活动 GRUB 菜单的位置,以及当前的 GRUB 菜单项。输出中包括有关 autoboot-timeout 缺省项编号以及每个项的标题的信息。

示例 6-4 列出活动 GRUB 菜单的位置和当前的 GRUB 菜单项

# bootadm list-menu
The location for the active GRUB menu is: /stubboot/boot/grub/menu.lst
default=0
timeout=30
0 2010-12-10-be
1 Oracle Solaris 11
2 Linux

如何设置活动 GRUB 菜单的缺省引导项

  1. 成为 root 角色。
  2. 要设置活动 GRUB 菜单中的缺省引导项,请键入:
    # bootadm set-menu menu-entry
    set-menu

    维护 GRUB 菜单。活动 GRUB 菜单的位置为 boot/grub/menu.lst

    menu-entry

    指定要设置为缺省菜单项的 GRUB 菜单项。

  3. 要检验缺省菜单项是否已更改,请键入:
    # bootadm list-menu

    此时应该显示新的缺省菜单项。

示例 6-5 切换 GRUB 缺省菜单项

以下示例说明如何将缺省 GRUB 菜单切换到上一个示例中显示的菜单项之一。所选菜单项为菜单项 2 "Linux"。

# bootadm set-menu default=2