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

第 11 章 Oracle Solaris ブート動作の変更 (手順)

この章では、Solaris システムのブート動作の変更方法について説明します。

この章の内容は次のとおりです。

ブートに関する新機能とブートプロセスの概要については、第 8 章システムのシャットダウンとブートの概要を参照してください。

Oracle Solaris システムのブート手順については、第 12 章Oracle Solaris システムのブート (手順)を参照してください。

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. システムの PROM リビジョン番号を表示するには、banner コマンドを使用します。


    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 の値 (disk または net) を設定します。n はディスク番号です。

    次のような形式で、デフォルトのブートデバイス (boot-device) が表示されます。

    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. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「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. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. ブートする代替カーネルを指定します。


    # eeprom boot-file new boot-file
    

    次に例を示します。


    # eeprom boot-file=kernel.name/sparcv9/unix
    
  3. 新しいパラメータが設定されていることを確認します。


    # eeprom boot-file
    

    この出力には、指定したパラメータの新しい eeprom 値が表示されるはずです。

SPARC での ITU 構築ツールのサポート

ITU ユーティリティーを使用して、ソフトウェアパッケージとパッチのドライバ更新 (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

    1 つ以上のドライバパッケージを入力として取り、パッケージを 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 のパスを設定します。

    次の例に示すように、config-string の最初の部分で手順 6 の出力が使用されます。


    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 コマンドをサポートするエントリを含むように変更します。

インストールまたはアップグレードが完了したら、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 インスタンスをブートするために選択できます。