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

x86 プラットフォームのブートのトラブルシューティング (作業マップ)

作業 

説明 

参照先 

復旧を目的としてシステムを停止します。  

破損したファイルによってシステムのブートが正常に行えない場合は、最初にシステムを停止して復旧を試みます。 

「x86: 復旧を目的としてシステムを停止する方法」

強制的にシステムのクラッシュダンプを実行し、システムをリブートします。 

トラブルシューティング手段としてシステムのクラッシュダンプとリブートを強制的に実行できます。 

「x86: クラッシュダンプを強制してシステムをリブートする方法」

カーネルデバッガを使ってシステムをブートします。 

カーネルデバッガを使ってシステムをブートして、ブート問題のトラブルシューティングを実行できます。システムのブートには kmdb コマンドを使用します。

「x86: GRUB ブート環境でカーネルデバッガ (kmdb) を使ってシステムをブートする方法」

Procedurex86: 復旧を目的としてシステムを停止する方法

  1. 可能であれば、次のいずれかのコマンドを使用してシステムを停止します。

    • キーボードとマウスを使用できる場合は、スーパーユーザーになります。次に、init 0 と入力してシステムを停止します。Press any key to reboot プロンプトが表示されたら、任意のキーを押してシステムをリブートします。

    • キーボードやマウスが動作する場合は、スーパーユーザーになり、init 6 と入力してシステムをリブートします。

  2. マウスまたはキーボードからの入力にシステムが応答しない場合、リセットキーがあればそのキーを押してシステムをリブートします。

    あるいは、電源スイッチを使用してシステムをリブートします。

x86: クラッシュダンプを強制してシステムをリブートする

場合によっては、トラブルシューティングの目的でクラッシュダンプを強制実行し、システムをリブートする必要があります。デフォルトでは、savecore 機能を使用できます。

システムのクラッシュダンプについては、『Solaris のシステム管理 (上級編)』の第 17 章「システムクラッシュ情報の管理 (手順)」を参照してください。

Procedurex86: クラッシュダンプを強制してシステムをリブートする方法

reboot -d コマンドまたは halt -d コマンドを使用できない場合は、カーネルデバッガ kmdb を使用してクラッシュダンプを強制的に実行できます。次の手順を実行するには、ブート時または mdb -k コマンド経由でカーネルデバッガが読み込まれている必要があります。


注 –

カーネルデバッガ (kmdb) にアクセスするにはテキストモードでなければなりません。したがって、まずウィンドウシステムを終了してください。


  1. カーネルデバッガにアクセスします。

    デバッガにアクセスするための方法は、システムへのアクセスに使用するコンソールのタイプによって異なります。

    • ローカル接続されているキーボードを使用している場合は、F1–A を押します。

    • シリアルコンソールを使用している場合は、そのシリアルコンソールタイプに適した方法で ブレークを送信します。

    kmdb プロンプトが表示されます。

  2. クラッシュを強制実行するために、systemdump マクロを使用します。


    [0]> $<systemdump
    

    パニックメッセージが表示され、クラッシュダンプが保存され、システムがリブートします。

  3. コンソールログインプロンプトでログインして、システムがリブートされていることを確認します。


例 14–6 x86: halt -d コマンドを使用してシステムのクラッシュダンプとリブートを強制実行する

この例は、halt -d コマンドと boot コマンドを使って、x86 システム neptune のクラッシュダンプとリブートを強制実行する方法を示しています。システムのクラッシュダンプを強制するには、この方法を使用してください。このあとに、システムを手動でリブートします。


# halt -d
4ay 30 15:35:15 wacked.Central.Sun.COM halt: halted by user

panic[cpu0]/thread=ffffffff83246ec0: forced crash dump initiated at user request

fffffe80006bbd60 genunix:kadmin+4c1 ()
fffffe80006bbec0 genunix:uadmin+93 ()
fffffe80006bbf10 unix:sys_syscall32+101 ()

syncing file systems... done
dumping to /dev/dsk/c1t0d0s1, offset 107675648, content: kernel
NOTICE: adpu320: bus reset
100% done: 38438 pages dumped, compression ratio 4.29, dump succeeded

Welcome to kmdb
Loaded modules: [ audiosup crypto ufs unix krtld s1394 sppp nca uhci lofs 
genunix ip usba specfs nfs md random sctp ]
[0]> 
kmdb: Do you really want to reboot? (y/n) y

Procedurex86: GRUB ブート環境でカーネルデバッガ (kmdb) を使ってシステムをブートする方法

この手順では、カーネルデバッガ ( kmdb) を読み込むための基本的な操作を示します。デフォルトでは、savecore 機能を使用できます。カーネルデバッガの使用方法の詳細については、『Solaris モジューラデバッガ』を参照してください。

  1. システムをブートします。

    システムがブートすると、GRUB メニューが表示されます。

  2. GRUB メニューが表示されたら、e と入力して GRUB 編集メニューにアクセスします。

  3. 矢印キーを使用して、kernel$ 行を選択します。

    矢印キーを使用できない場合は、^ キーを使って上方へスクロールしたり、v キーを使って下方へスクロールしたりします。

  4. e と入力して、その行を編集します。

    ブートエントリメニューが表示されます。このメニューで、kernel$ 行の末尾に追加のブート引数を指定して、ブート動作を変更できます。

  5. 行の終わりに -k と入力します。

  6. Enter キーを押して、GRUB メインメニューに戻ります。

  7. カーネルデバッガが使用可能な状態でシステムをブートするために、b と入力します。

  8. カーネルデバッガにアクセスします。

    デバッガにアクセスするための方法は、システムへのアクセスに使用するコンソールのタイプによって異なります。

    • ローカル接続されているキーボードを使用している場合は、F1–A を押します。

    • シリアルコンソールを使用している場合は、そのシリアルコンソールタイプに適した方法で ブレークを送信します。

    カーネルデバッガに初めてアクセスした場合、ウェルカムメッセージが表示されます。


例 14–7 x86: カーネルデバッガ (GRUB マルチブート実装) を使用してシステムをブートする

次の例は、64 ビット対応 x86 システムをカーネルデバッガが使用可能な状態で手動でブートする方法を示しています。


kernel$ /platform/i86pc/multiboot kernel/amd64/unix -k -B $ZFS-BOOTFS

次の例は、64 ビット対応 x86 システムをカーネルデバッガ使用可能な状態で 32 ビットモードでブートする方法を示しています。


kernel$ /platform/i86pc/multiboot kernel/unix -k -B $ZFS-BOOTFS