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

文档信息

前言

1.  引导和关闭系统(概述)

2.  x86: 管理 GRand Unified Bootloader(任务)

x86: GRUB 2 介绍

x86: GRUB 2 配置说明

x86: GRUB 2 分区和设备命名方案

x86: GRUB 2 和 GRUB Legacy 任务比较

x86: 将 GRUB Legacy 系统升级到支持 GRUB 2 的发行版

x86: 如何将 GRUB Legacy 系统升级到支持 GRUB 2 的发行版

x86: 如何将 GRUB Legacy 菜单项迁移到 GRUB 2 中

x86: 在同一系统上维护 GRUB 2 和 GRUB Legacy 引导环境

x86: 使用 bootadm 命令管理 GRUB 配置

x86: 如何列出 GRUB 菜单项

x86: 如何手动重新生成 GRUB 菜单

x86: 如何维护 GRUB 菜单

x86: 如何设置 GRUB 菜单中指定引导项的属性

x86: 如何向 GRUB 菜单添加引导项

x86: 如何从 GRUB 菜单删除引导项

x86: 通过在引导时编辑 GRUB 菜单添加内核参数

x86: 通过编辑 GRUB 菜单在引导时添加 -B prop=val 内核参数

在引导时重定向 Oracle Solaris 控制台

x86: 定制 GRUB 配置

x86: GRUB 高级管理和故障排除

x86: 使用 bootadm install-bootloader 命令安装 GRUB 2

x86: 如何安装引导装载程序

x86: 如何在恢复根池后安装引导装载程序

x86: 如何在缺省位置以外的位置安装 GRUB

x86: 在已安装 GRUB 2 的系统上安装 GRUB Legacy

x86: 如何在已安装 GRUB 2 的系统上安装 GRUB Legacy

3.  关闭系统(任务)

4.  引导系统(任务)

5.  从网络引导系统(任务)

6.  对引导系统进行故障排除(任务)

索引

x86: 使用 bootadm 命令管理 GRUB 配置

本节提供了以下过程:

在支持 GRUB Legacy 的系统上,GRUB 配置和 GRUB 菜单主要通过编辑 menu.lst 文件进行管理。在支持 GRUB 2 的系统上,将使用 grub.cfg 文件。但是,此文件不能手动编辑。不过,可通过引导管理接口 bootadm 来管理此文件。bootadm 命令可用于管理先前通过编辑 menu.lst 文件而执行的大多数任务。这些任务包括管理引导装载程序设置、GRUB 菜单以及特定引导项的各个属性。


注 - 因为只要使用 bootadm 命令或 beam 命令更改引导装载程序就会覆盖 grub.cfg 文件且无通知,所以永远不应直接编辑此文件。


以下 bootadm 子命令已修改为支持 GRUB 2 配置的管理:

list-menu

显示 GRUB 菜单中的当前引导项。

新的 -P 选项支持显示指定根池的引导项。

按标题或项编号查看各个菜单项,如下所示:

# bootadm list-menu -i 0
the location of the boot loader configuration files is: /rpool/boot/grub
     title: Oracle Solaris 11 FCS
     kernel: /platform/i86pc/kernel/$ISADIR/unix
     kernel arguments: -B $ZFS-BOOTFS -v
     boot archive: /platform/i86pc/$ISADIR/boot_archive
     ZFS root pool: rpool
set-menu

维护 GRUB 菜单。此子命令用于将特定 GRUB 菜单项设置为缺省值以及设置其他菜单选项和引导装载程序选项。

新的 -P 选项支持更改多个根池中的菜单。

以下 bootadm 子命令为新增子命令:

add-entry

向 GRUB 菜单添加引导项。

change-entry

更改 GRUB 菜单中指定引导项的属性。

generate-menu

生成新的引导装载程序配置文件。

install-bootloader

安装系统引导装载程序。此子命令适用于 x86 和 SPARC 平台。

remove-entry

从 GRUB 菜单删除引导项。


注 - 因为 SPARC 平台不使用 GRUB,所以无任何引导菜单需要使用 bootadm 命令进行管理。但是,bootadm 命令可在基于 SPARC 的系统上用于列出引导归档文件的内容、手动更新引导归档文件和安装引导装载程序。请参见管理 Oracle Solaris 引导归档文件


以下过程介绍了如何使用 bootadm 命令管理 GRUB 配置和 GRUB 菜单。有关更完整的信息,请参见 bootadm(1M) 手册页。

x86: 如何列出 GRUB 菜单项

使用 bootadm 命令的 list-menu 子命令列出系统上的当前 GRUB 菜单项列表。此信息由 grub.cfg 文件提供。命令输出还包括位置引导装载程序配置文件、缺省引导项编号、autoboot-timeout 值和每个引导项的标题。

x86: 如何手动重新生成 GRUB 菜单

使用 bootadm generate-menu 命令手动重新生成包含系统上当前安装的 OS 实例的 grub.cfg 文件。

/usr/lib/grub2/bios/etc/default/grub/usr/lib/grub2/uefi64/etc/default/grub 文件中的信息与 GRUB 元配置文件 rpool/boot/grub/menu.conf 中的信息合并后用于生成最终的 grub.cfg 文件。

  1. 承担 root 角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 生成 grub.cfg 文件。
    # bootadm generate-menu
    • 如果 grub.cfg 文件已存在,请使用 -f 选项覆盖现有文件。
      # bootadm generate-menu -f
    • 为除当前根池之外的根池生成新的 GRUB 菜单,如下所示:
      # bootadm generate-menu -P pool-name
  3. 确认菜单已更新以反映更改。
    # bootadm list-menu

    注 - 如果未看到更改,请检查 grub.cfg 文件以确认进行了更改。


x86: 如何维护 GRUB 菜单

使用 bootadm 命令的 set-menu 子命令维护 GRUB 菜单。 例如,您可以使用此命令更改 GRUB 菜单中的菜单超时和缺省引导项。

  1. 承担 root 角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 可选列出 GRUB 菜单项。
    # bootadm list-menu
  3. 对 GRUB 菜单进行必要更改。
    # bootadm set-menu [-P pool] [-R altroot [-p platform]] key=value

    有关可使用 set-menu 子命令指定的每个值的更多信息,请参见 bootadm(1M) 手册页。可使用 set-menu 子命令的常见方法示例均遵循此过程。

  4. 验证是否已进行更改。
    # bootadm list-menu

    注 - 如果未看到更改,请检查 grub.cfg 文件以确认进行了更改。


示例 2-1 更改 GRUB 菜单中的缺省引导项

使用带有相应 key=value 选项的 bootadm set-menu 命令设置 GRUB 菜单中的缺省项编号(例如,0、1 或 2)。此编号指定计时器到期时要引导的操作系统。

例如,以下 bootadm list-menu 命令的输出将缺省引导项显示为 2,其为 Oracle Solaris 11_test:

# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 2
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11_test

在此示例中,控制台设置为 graphics 模式。可将控制台设置成的其他模式包括 textserial

您可以将缺省引导项设置为 1,如下所示:

# bootadm set-menu default=1
# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 1
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 GRUB2

在此示例中,缺省菜单项现在为 1。系统重新引导后,将在缺省计时器到期后自动引导新的 Oracle Solaris 项。

您还可以使用 change-entry 子命令设置 GRUB 菜单中的缺省项。请参见x86: 如何设置 GRUB 菜单中指定引导项的属性

示例 2-2 更改 GRUB 菜单中的菜单超时值

使用带有相应 key=value 选项的 bootadm set-menu 命令设置菜单超时值。

在以下示例中,bootadm list-menu 命令的输出显示已将 30 秒的缺省超时值更改为 45 秒。此更改将在下次引导系统时生效。

# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 2
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11_test
# bootadm set-menu timeout=45
# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 2
console graphics
timeout 45
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11_test

示例 2-3 设置 GRUB 控制台类型

您可以使用 bootadm 命令的 set-menu 子命令设置的一个值是控制台类型。以此方式对控制台类型进行的更改会在系统重新引导后持续有效。

例如,您在 grub.cfg 文件中将控制台类型设置为 serial,如下所示:

# bootadm set-menu console=serial

您还可以将控制台类型设置为 text(适用于纯文本控制台)。如果使用的是 BIOS 串行重定向,请选择此选项。或者,您可以将控制台类型设置为 graphics。此选项提供了一个更具图形化的菜单,此时会用到一个后台映像。

将控制台类型设置为 serial 后,可配置 GRUB 2 在引导时初始化串行端口时使用的串行参数。如果未指定 serial_params 值,则在缺省情况下使用串行端口 0 (COM1/ttya) 而不是指定一个速度。请注意,如果未指定速度且指定了一个端口(例如 serial_params=0),则不会定义所使用的速度,此速度将为执行 GRUB 之前串行端口初始化到的任何速度。如果要确保使用特定速度,则需要使用 serial_params 显式设置它们。

serial_params 键值添加到 bootadm 命令行中,如下所示:

# bootadm set-menu console=serial serial_params=port[,speed[,data bits[,parity[,stop bits]]]]
port

端口号。03 之间的任意数字(通常 0 用于 ttyaCOM1)可用于分别指定 ttyattyd 之间的端口或 COM1COM4 之间的端口。

speed

是串行端口使用的速度。如果省略此值,GRUB 2 将使用串行端口在初始化后所使用的速度。如果串行端口未初始化,则无法指定速度可能导致不可预测的输出。如果不确定串行端口是否已初始化,且未使用 BIOS 控制台重定向,则最好指定一个速度值。

data bits

是使用 78 值指定的。

parity

被分别指定为 eon(分别代指 even、odd 或 none)。

stop bits

是使用 01 值指定的。

port 参数之外的所有串行参数均为可选参数。

x86: 如何设置 GRUB 菜单中指定引导项的属性

使用 bootadm 命令的 change-entry 子命令设置 GRUB 菜单中指定引导项或以逗号分隔的项列表的某些引导属性。可以通过项标题或项编号指定项。如果多个项具有同一标题,则会影响所有项。


注 - 特殊属性 set-default 用于设置在计时器到期时要引导的缺省项。此子命令的功能与 set-menu default=value 子命令的功能相同。请参见示例 2-1


有关如何在引导时通过编辑 GRUB 菜单来设置特定引导项的属性的信息,请参见x86: 通过在引导时编辑 GRUB 菜单添加内核参数

  1. 承担 root 角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 可选列出 GRUB 菜单项。
    # bootadm list-menu
  3. 设置指定项的引导属性。
    # bootadm change-entry [-P pool] {[entry-title[,entry-title...]}]
        | -i entry-number[,entry-number]...]} { key=value [ key=value ...]
        | set-default }

    如果指定的值包含空格,则必须将此值括在单引号或双引号中。

    有关可使用 change-entry 子命令指定的每个值的更多信息,请参见 bootadm(1M) 手册页。使用 change-entry 子命令的常见方法示例均遵循此过程。

  4. 验证是否已对指定项进行了更改。
    # bootadm list-menu

    注 - 如果未看到更改,请检查 grub.cfg 文件以确认进行了更改。


示例 2-4 设置 GRUB 菜单中指定引导项的标题

您可以使用 bootadm 命令的 change-entry 子命令设置指定引导项的标题。设置标题时,既可以指定项编号,也可以指定项标题。以下示例显示了如何通过这两种方式设置指定引导项的标题。如果多个项具有同一标题,则会影响所有项。

通过指定项编号设置引导项的标题,如下所示:

# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 1
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11_test
# bootadm change-entry -i 2 title="Oracle Solaris 11-backup1"
# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 2
console graphics
timeout 45
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11-backup1

通过指定标题设置引导项的标题,如下所示:

# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 1
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11_test
# bootadm change-entry "Oracle Solaris 11_test" title="Oracle Solaris 11-backup1"
# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 2
console graphics
timeout 45
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11-backup1

示例 2-5 通过指定内核参数更改引导项

以下示例显示了如何使用 bootadm 命令的 change-entry 子命令设置指定引导项的内核引导参数。

在此示例中,将引导项编号 1 设置为以单用户模式引导:

# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 1
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11_test
# bootadm change-entry -i 1 kargs=-s
# bootadm list-menu -i 1
The location of the boot loader configuration files is: /rpool/boot/grub
     title: Oracle Solaris 11.1
     kernel: /platform/i86pc/kernel/$ISADIR/unix
     kernel arguments: -s
     boot archive: /platform/i86pc/$ISADIR/boot_archive
     ZFS root pool: rpool

在此示例中,为引导项编号 2 指定多个内核参数:

# bootadm change-entry -i 2 kargs="-v -s"
# bootadm list-menu -i 2
The location of the boot loader configuration files is: /rpool/boot/grub
     title: Oracle Solaris 11_test
     kernel: /platform/i86pc/kernel/$ISADIR/unix
     kernel arguments: -v -s
     boot archive: /platform/i86pc/$ISADIR/boot_archive
     bootfs: rpool/ROOT/snv_160-nightly-1

在此示例中,指定了 -v-s 选项,这会将系统引导到详细模式下的单用户状态。

只要设置的一个或多个属性包含空格,就必须将值括在单引号或双引号中。

示例 2-6 通过使用 -B 选项指定内核参数来更改引导项

以下示例显示了您可以通过使用 -B 选项设置特定引导项的内核参数的几种方法。

您需要在引导时禁用 e1000g 网络驱动程序并装入内核调试器,如下所示:

# bootadm change-entry -i 0 kargs="-B disable-e1000g=true -k"

您可以使用 bootadm change-entry 命令指定多个 -B 选项。例如,您可以使用以下任一命令同时禁用 e1000g 驱动程序 ACPI:

# bootadm change-entry -i 0 kargs="-B disable-e1000g=true -B acpi-user-options=2"
# bootadm change-entry -i 0 kargs="-B disable-e1000g=true,acpi-user-options=2"

您还可以通过编辑指定引导项在引导时使用 -B 选项设置特定引导属性。有关说明,请参见x86: 通过在引导时编辑 GRUB 菜单添加内核参数

示例 2-7 从引导项删除先前添加的内核参数

在以下示例中,将从特定引导项删除一个内核参数 (-s):

# bootadm list-menu -i 1
the location of the boot loader configuration files is: /rpool/boot/grub
title: s11.1.backup
kernel: /platform/i86pc/kernel/amd64/unix
kernel arguments: -s
boot archive: /platform/i86pc/amd64/boot_archive
bootfs: rpool/ROOT/s11.1.backup
# bootadm change-entry -i 1 kargs=
# bootadm list-menu -i 1
the location of the boot loader configuration files is: /rpool/boot/grub
title: s11.1.backup
kernel: /platform/i86pc/kernel/amd64/unix
kernel arguments:
boot archive: /platform/i86pc/amd64/boot_archive
bootfs: rpool/ROOT/s11.1.backup

x86: 如何向 GRUB 菜单添加引导项

使用 bootadm 命令的 add-entry 子命令向 GRUB 菜单添加带有指定项标题的新项。如果指定项编号,新项将会插入到 GRUB 菜单中的指定位置。或者,如果项编号高于菜单中项的当前编号,此项将作为菜单中的最后一项进行添加。

  1. 承担 root 角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 可选列出 GRUB 菜单中的当前引导项。
    # bootadm list-menu
  3. 向 GRUB 菜单添加新引导项。
    # bootadm add-entry -P pool -i [entry-number] entry-title
  4. 为新添加的项设置 bootfs 属性,如下所示:
    # bootadm change-entry -i new-entry-number bootfs='pool-name/ROOT/be-name'

    通过此步骤,可确保新添加的引导项不使用根池中设置的缺省 bootfs 值,根池在 bootfs pool-level 属性中指定。

  5. 确认已添加引导项。
    # bootadm list-menu

    注 - 如果未看到更改,请检查 grub.cfg 文件以确认进行了更改。


示例 2-8 x86: 向 GRUB 菜单添加引导项

以下示例显示了如何使用 bootadm add-entry 命令向 GRUB 菜单添加菜单项。在此示例中,添加了项编号 2。

# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 2
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
# bootadm add-entry -i 2  Oracle Solaris 11_test
# bootadm change-entry -i 2 bootfs='rpool/ROOT/test'
# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 2
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11_test

通过指定项编号查看新菜单项的内容,如下所示:

# bootadm list-menu -i 2
     the location of the boot loader configuration files is: /rpool/boot/grub
     title: Oracle Solaris 11_test
     kernel: /platform/i86pc/kernel/amd64/unix
     kernel arguments: -B $ZFS-BOOTFS
     boot archive: /platform/i86pc/amd64/boot_archive
     ZFS root pool: rpool

x86: 如何从 GRUB 菜单删除引导项

使用 bootadm 命令的 remove-entry 子命令从 GRUB 菜单删除指定项或以逗号分隔的项列表。如果指定带有同一标题的多个项,则会删除带有此标题的所有项。

  1. 承担 root 角色。

    请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 可选列出当前引导项。
    # bootadm list-menu
  3. 从 GRUB 菜单删除指定项。
    # bootadm remove-entry [-P pool] [{entry-title [,entry-title...] |
        -i entry-number[,entry-number...]}
  4. 验证是否已删除此项。
    # bootadm list-menu

    注 - 如果未看到更改,请检查 grub.cfg 文件以确认进行了更改。


示例 2-9 x86: 从 GRUB 菜单删除引导项

以下示例显示了从 GRUB 菜单删除项编号 2 的操作。

# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 2
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1
2 Oracle Solaris 11_test
bootadm remove-entry -i 2
1 entry removed
# bootadm list-menu
The location of the boot loader configuration file is /rpool/boot/grub
default 2
console graphics
timeout 30
0 Oracle Solaris 11/11
1 Oracle Solaris 11.1