EC2 シリアルコンソールを使用して Amazon EC2 インスタンスをトラブルシューティングする - Amazon Elastic Compute Cloud

EC2 シリアルコンソールを使用して Amazon EC2 インスタンスをトラブルシューティングする

EC2 シリアルコンソールを使用して、インスタンスのシリアルポートに接続することで、起動、ネットワーク設定、およびその他の問題をトラブルシューティングできます。

インスタンスのオペレーティングシステムと、インスタンスで設定したツールの手順を使用します。

注記

開始する前に、選択したトラブルシューティングツールの設定など、前提条件を満たしていることを確認してください。

GNU GRUB (GNU GRand Unified Bootloader の略。一般に GRUB と呼ばれます) は、ほとんどの Linux オペレーティングシステムのデフォルトのブートローダーです。GRUB メニューから、起動先のカーネルを選択したり、メニューエントリを変更してカーネルの起動方法を変更したりできます。これは、障害が発生したインスタンスをトラブルシューティングする際に役立ちます。

GRUB メニューは、ブートプロセス中に表示されます。通常の SSH ではメニューにアクセスできませんが、EC2 シリアルコンソールからアクセスできます。

シングルユーザーモードまたは緊急モードで起動できます。シングルユーザーモードでは、カーネルを低めの実行レベルで起動します。例えば、ファイルシステムをマウントしても、ネットワークをアクティブ化しない場合があり、インスタンスの修正に必要なメンテナンスを実行することができます。緊急モードはシングルユーザーモードと似ていますが、カーネルは可能な限り低い実行レベルで実行される点が異なります。

シングルユーザーモードで起動するには
  1. インスタンスのシリアルコンソールに接続します。

  2. 次のコマンドを実行して、インスタンスを再起動します。

    [ec2-user ~]$ sudo reboot
  3. 再起動時に GRUB メニューが表示されたら、任意のキーを押してブートプロセスを停止します。

  4. GRUB メニューで、矢印キーを使用して起動先のカーネルを選択し、キーボードの e を押します。

  5. 矢印キーを使用して、カーネルを含む行にカーソルを置きます。行は、インスタンスの起動に使用された AMI に応じて、linux または linux16 のいずれかで始まります。Ubuntu の場合、2 つの行は linux で始まります。どちらも次のステップで変更する必要があります。

  6. 行の最後に、単語 single を追加します。

    Amazon Linux 2 の例を次に示します。

    linux /boot/vmlinuz-4.14.193-149.317.amzn2.aarch64 root=UUID=d33f9c9a-\ dadd-4499-938d-ebbf42c3e499 ro console=tty0 console=ttyS0,115200n8 net.ifname\ s=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.she\ ll=0 single
  7. シングルユーザーモードで起動するには、Ctrl+X キーを押します。

  8. login プロンプトで、前に設定したパスワードベースのユーザーのユーザー名を入力し、Enter キーを押します。

  9. Password プロンプトで、パスワードを入力し、Enter キーを押します。

 

緊急モードで起動するには

シングルユーザーモードと同じステップに従い、ステップ 6 で single の代わりに emergency という単語を追加します。

システムリクエスト (SysRq) キーは、「マジック SysRq」とも呼ばれ、シェルの外部でカーネルにコマンドを直接送信するために使用でき、カーネルが何をしているかにかかわらず、カーネルは応答します。例えば、インスタンスが応答を停止した場合、SysRq キーを使用して、カーネルにクラッシュまたは再起動するように指示できます。詳細については、Wikipedia の「マジック SysRq キー」を参照してください。

SysRq コマンドは、EC2 シリアルコンソールブラウザベースのクライアントまたは SSH クライアントで使用できます。中断リクエストを送信するコマンドは、クライアントごとに異なります。

SysRq を使用するには、使用しているクライアントに基づいて、次のいずれかの手順を選択します。

Browser-based client
シリアルコンソールのブラウザベースのクライアントで SysRq を使用するには
  1. インスタンスのシリアルコンソールに接続します。

  2. 中断リクエストを送信するには、CTRL+0 (ゼロ) を押します。キーボードがサポートしている場合は、Pause キーまたは Break キーを使用して中断リクエストを送信することもできます。

    [ec2-user ~]$ CTRL+0
  3. SysRq コマンドを発行するには、必要なコマンドに対応するキーボードのキーを押します。例えば、SysRq コマンドのリストを表示するには、h を押します。

    [ec2-user ~]$ h

    h コマンドは、次のような内容を出力します。

    [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
SSH client
SSH クライアントで SysRq を使用するには
  1. インスタンスのシリアルコンソールに接続します。

  2. 中断リクエストを送信するには、~B (チルダ、その後に大文字の B) を押します。

    [ec2-user ~]$ ~B
  3. SysRq コマンドを発行するには、必要なコマンドに対応するキーボードのキーを押します。例えば、SysRq コマンドのリストを表示するには、h を押します。

    [ec2-user ~]$ h

    h コマンドは、次のような内容を出力します。

    [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
    注記

    中断リクエストの送信に使用するコマンドは、使用している SSH クライアントによって異なる場合があります。

Windows の Special Admin Console (SAC) 機能を使用して、Windows インスタンスをトラブルシューティングできます。インスタンスのシリアルコンソールに接続して SAC を使用すると、ブートプロセスを中断し、Windows をセーフモードで起動できます。

注記

インスタンスで SAC を有効にすると、パスワードの取得に依存する EC2 サービスは Amazon EC2 コンソールから操作できません。Amazon EC2 起動エージェント (EC2Config、EC2Launch v1、EC2Launch v2) での Windowsは、シリアルコンソールを使用してさまざまなタスクを実行します。インスタンスで SAC を有効にすると、これらのタスクは正常に実行されません。Amazon EC2 の起動エージェント上の Windows の詳細については、「Amazon EC2 Windows インスタンスの設定」を参照してください。SAC を有効にする場合は、後で無効にすることができます。詳細については、「SAC とブートメニューを無効にする」を参照してください。

SAC を使用する

SAC を使用するには
  1. シリアルコンソールに接続します。

    インスタンスで SAC が有効になっている場合、シリアルコンソールには SAC> プロンプトが表示されます。

    シリアルコンソールに SAC プロンプトが表示されます。
  2. SAC コマンドを表示するには、? と入力し、Enter を押します。

    正常な出力

    疑問符を入力して SAC コマンドを表示します。
  3. コマンドプロンプトチャネル (cmd0001cmd0002 など) を作成するには、cmd と入力し、Enter を押します。

  4. コマンドプロンプトチャネルを表示するには、ESC を押してから TAB を押します。

    正常な出力

    コマンドプロンプトチャネル。
  5. チャネルを切り替えるには、ESC + TAB + チャネル番号を同時に押します。例えば、cmd0002 チャネルに切り替えるには (チャネルが作成されている場合)、ESC + TAB + 2 を押します。

  6. コマンドプロンプトチャネルに必要な認証情報を入力します。

    コマンドプロンプトで認証情報が要求されます。

    コマンドプロンプトは、既に出力された文字の読み取りを許可しない点を除いて、デスクトップ上で取得するのと同じフル機能のコマンドシェルです。

    フル機能のコマンドシェル。

PowerShell は、コマンドプロンプトからも使用できます。

進行状況の詳細設定をサイレントモードに設定する必要がある場合があります。

コマンドプロンプト内の PowerShell。

ブートメニューを使用する

インスタンスでブートメニューが有効になっていて、SSH 経由で接続した後に再起動した場合は、次のようにブートメニューが表示されます。

コマンドプロンプトのブートメニュー。

ブートメニューのコマンド

ENTER

オペレーティングシステムの選択したエントリを開始します。

TAB

[Tools] (ツール) メニューに切り替えます。

ESC

インスタンスをキャンセルして再起動します。

ESC、その後に 8

[F8] を押す操作に相当します。選択した項目の詳細オプションを表示します。

ESC キー + 左矢印

最初のブートメニューに戻ります。

注記

ESC キーだけでは、Windows がエスケープシーケンスが進行中かどうかを確認するために待機しているため、メインメニューに戻ることはありません。

高度なブートオプション。

SAC とブートメニューを無効にする

SAC とブートメニューを有効にする場合、これらの機能を後で無効にできます。

インスタンスで SAC とブートメニューを無効にするには、次のいずれかの方法を使用します。

PowerShell
Windows インスタンスで SAC とブートメニューを無効にするには
  1. インスタンスに接続し、昇格された PowerShell コマンドラインから以下の手順を実行します。

  2. まず、値を no に変更して、ブートメニューを無効にします。

    bcdedit /set '{bootmgr}' displaybootmenu no
  3. その後、値を off に変更して SAC を無効にします。

    bcdedit /ems '{current}' off
  4. インスタンスを再起動して、更新された設定を適用します。

    shutdown -r -t 0
Command prompt
Windows インスタンスで SAC とブートメニューを無効にするには
  1. インスタンスに接続し、コマンドプロンプトから次の手順を実行します。

  2. まず、値を no に変更して、ブートメニューを無効にします。

    bcdedit /set {bootmgr} displaybootmenu no
  3. その後、値を off に変更して SAC を無効にします。

    bcdedit /ems {current} off
  4. インスタンスを再起動して、更新された設定を適用します。

    shutdown -r -t 0