Solaris のシステム管理 (基本編)

x86 システムでの ブート動作の変更 (作業マップ)

作業 

説明 

参照先 

eeprom コマンドを使用してブートファイルパラメータを設定します。

eeprom コマンドを使用して、x86 システムのブート動作を変更します。 eeprom コマンドを使って設定するブートオプションは、ブート時に GRUB メニューでカーネルの動作を変更してオプションを上書きしないかぎり、システムをリブートしても持続します。

「x86: eeprom コマンドを使用してブート動作を変更する方法」

ブート時に GRUB メニューを編集してブート動作を変更します。 

ブート時に GRUB メニューを編集してブート動作を変更します。GRUB メニューでブート動作を変更することで指定するブートオプションは、次にシステムをリブートするまでしか持続しません。 

「x86: ブート時に GRUB メニューを編集してブート動作を変更する方法」

手動で menu.lst ファイルを編集してブート動作を変更します。

menu.lst 構成ファイルを編集して新しい OS エントリを追加するか、コンソールをリダイレクトすることで、ブート動作を変更します。ファイルに加えた変更は、システムをリブートしても持続します。

「x86: menu.lst ファイルを編集してブート動作を変更する方法」

menu.lst ファイルを、findroot コマンドをサポートするエントリを含むように変更します。

インストールまたはアップグレードが完了したら、findroot コマンドを使用するそのほかのメニューエントリを menu.lst ファイルメニューに追加できます。

「x86: findroot コマンドを使用する GRUB メニューエントリを追加する方法」

x86 システムのブート動作を変更する

x86 システムのブート動作を変更する主な方法は、次のとおりです。

Procedurex86: eeprom コマンドを使用してブート動作を変更する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「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 メニューを編集してブート動作を変更する

次の例は、ZFS ルートファイルシステムからのシステムのブートをサポートする Oracle Solaris リリースの GRUB メインメニューを示しています。このメニューは、menu.lst ファイルの内容に基づいて、システム上のブート可能なすべての OS インスタンスのメニューエントリを含んでいます。特に指定がないかぎり、メニューの最初のエントリはデフォルトです。別のブートエントリをデフォルトとして指定するには、default=n コマンドを menu.lst ファイルに追加します。この場合の 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) のブート動作を制御します

復元オプションとメッセージオプションという、2 種類のオプションがあります

-i altinit

代替実行可能ファイルを原始プロセスとして指定します。 altinit は実行可能ファイルへの有効なパスです。

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

カーネルのブートプロパティーを指定します。

次に、-B prop=val オプションを使用して GRUB メニューでブート動作を変更できる各種方法を示します。

-B console=ttya

出力先をコンソールから ttya に変更します。

-B acpi-enum=off

デバイスの ACPI (Advanced Configuration and Power Interface) 列挙を使用不可にします。

-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. このメニューで、kernel 行または kernel$ 行を選択します。

  5. e と入力して、ブート引数をその行に追加します。

  6. 指定する追加のブート引数を入力します。

  7. Return キーを押して変更を保存し、前のメニューに戻ります。


    注 –

    変更を保存せずに GRUB メインメニューに戻るには、Escape キーを押します。


  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 ファイルに手動で追加する必要があります。

次の例は、menu.lst ファイルの内容に基づいた、一般的な GRUB メインメニューを示しています。 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 ルートのどちらが含まれるかで異なります。

アクティブな GRUB menu.lst ファイルの場所を調べるには、bootadm コマンドで list-menu サブコマンドを指定します。


# bootadm list-menu

bootadm コマンドの詳細は、bootadm(1M) のマニュアルページを参照してください。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「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」などの保護コメントを決して含めないでください。これらのコメントは、システムで予約されています。保護コメントを含めないことで、これらのエントリはソフトウェアアップグレード中にそのまま維持されます。


    デフォルトのエントリ以外に、エントリを新しく追加した場合は、同等の変更をすべて手動で行なってください。

    [-B *] フラグと [*] フラグが元の menu.lst ファイルに存在する場合は、これらのフラグを保持する必要があります。また、failsafe エントリには常に -s フラグが付いているはずです。

  3. 必要な情報を追加したあとで、ファイルを保存します。

    ファイルに加えた変更は、次にシステムをリブートしたときに有効になります。


    ヒント –

    Linux が稼働しているマシンに Oracle Solaris をインストールすると、システムのリブート時に Linux のエントリは GRUB メニュー内に保持されません。システムをインストールまたはアップグレードする前に、Linux 情報が含まれている menu.lst ファイルのコピーを保存します。インストールが完了したら、Solaris パーティションに新しく作成された menu.lst ファイルに Linux 情報を追加します。


    menu.lst ファイルに加えた変更は、Oracle Solaris OS と直接の関係がありません。このため、eeprom コマンドを使用して変更を行うことはできません。ファイルを直接編集する必要があります。ソフトウェアのアップグレード処理では、menu.lst ファイルに加えた変更内容がすべて保持されます。


    注意 – 注意 –

    GRUB では、Linux と Oracle Solaris の両方をブートできます。ただし、Linux GRUB では Oracle Solaris をブートできません。

    必ず次のいずれかの条件が満たされていることを確認してください。

    • fdisk パーティションがアクティブになっていて、そこに GRUB がインストールされていること。また、menu.lst ファイルがアクティブな GRUB メニューであること

    • Oracle Solaris GRUB がマスターブートレコード (MBR) にインストールされ、fdisk パーティションにある menu.lst を参照すること


    各 Oracle Solaris リリースに関連する GRUB menu.lst の詳細は、「x86: サポートされる GRUB のバージョン」を参照してください。


例 11–6 Oracle Solaris ZFS ブートローダーを備えたシステムの menu.lst ファイル

次の例は、Oracle Solaris ZFS ブートローダーを備えたシステムで menu.lst ファイルがどのように表示されるかを示しています。デフォルトでは、このシステムは 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 ファイル

次の例は、UFS ルートファイルシステムがインストールされているシステムで menu.lst ファイルがどのように表示されるかを示しています。デフォルトでは、このシステムは 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 メニューを検出するには、bootadm コマンドで list-menu サブコマンドを指定します。


# 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 など、すべてのインストール方法では、ブート対象の x86 システム上のディスクスライスを指定する際に findroot コマンドを使用するようになりました。 この拡張機能は、UFS ルートだけでなく Oracle Solaris ZFS ルートを含むシステムのブートもサポートします。この情報は、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 プラグインが ZFS ファイルシステムを探して、fdisk パーティション 0 のスライス a にマウントしようとします。

署名ファイルの名前は、使用したインストール方式に応じて異なります。findroot コマンドで使用される命名規則の詳細は、findroot コマンドで使用される命名規則」を参照してください。

インストールまたはアップグレードが完了したら、findroot コマンドを使用するそのほかのメニューエントリを GRUB メニューに追加できます。方法については、「x86: findroot コマンドを使用する GRUB メニューエントリを追加する方法」を参照してください。


注意 – 注意 –

ブートの署名は一意にする必要があります。Oracle Solaris ソフトウェアの複数のインスタンス間で複製される、システム生成の署名またはユーザーの署名を使用したり削除したりしないでください。そのようにすると、正しくない OS インスタンスがブートされたり、システムがブートできなくなる場合があります。


root コマンドは、Windows のブートなどの特定の場合に menu.lst ファイルで引き続き使用できます。ただし、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. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「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 インスタンスをブートするために選択できます。