Xen ゲストのコンソールを有効化する方法【準仮想化・完全仮想化対応】
通常、Xen 上で domU ゲストとして仮想マシンを稼働させる場合、コンソールの確認には virt-manager や virt-viewer を使用します。しかし実用面では、このコンソールバッファはアニメーション画像のようなものであり、少なくともグラフィカルインターフェースが起動するまで(そもそも GUI が存在しないケースもあります)、直接操作することはできません。
そこで問題になるのが、「常にコンソール出力を利用できるようにするにはどうすればよいか?」という点です。コンソール出力をホスト側へリダイレクトし、扱いやすく解析可能なテキストとして取得することはできるのでしょうか? 答えは「はい」です。ただし、それほど簡単な話ではありません。本記事では、準仮想化ゲストと完全仮想化ゲストの両方について、その実現方法を詳しく解説します。
準仮想化ゲストの場合
デフォルトの状態でも、特別な設定や調整なしにコンソールが動作するはずです。しかし残念ながら現実はそう都合よくできていないことが多く、多少のチューニングや工夫が必要になる場合があります。以下に、いくつかの回避策を紹介します。
仮想マシン設定ファイルの編集
仮想マシンの設定ファイルに、以下のような記述を追加します。
extra="console=hvc0 xencons=tty"
hvc0 の代わりに xvc0 を指定することもできますし、2つの extra オプションをキーと値のペアとして個別に指定することも可能です。環境によって最適な組み合わせは異なるため、何度か変更とテストを繰り返しながら、動作する設定を見つける必要があるでしょう。
ゲスト側の inittab を編集
新しいコンソールをゲストに登録する必要があります。これは /etc/inittab を編集して行います。記述例は以下の通りです。
x0:12345:respawn:/sbin/agetty -L 9600 xvc0 xterm
仮想マシン設定ファイルで指定した内容に合わせて、コンソール名を適宜調整してください。また、/etc/securetty にこの新しいコンソールを追加する必要があるかもしれません。ファイルを開いて x0 を追記するだけです。作業の前には必ずバックアップを取るようにしましょう。状況によっては、カーネルコマンドラインへ追加パラメータを渡したり、GRUB メニューを編集したりする必要も生じます(具体例は後述します)。
これで動作するはずですが、うまくいかないケースもあります。その場合、/var/log/messages に次のようなエラーが繰り返し記録されることがあります。
init: Id "x0" respawning too fast: disabled for 5 minutes
init: Id "x0" respawning too fast: disabled for 5 minutes
init: Id "x0" respawning too fast: disabled for 5 minutes
init: Id "x0" respawning too fast: disabled for 5 minutes
このエラーが発生した場合、ゲスト OS の udev がデバイスノードを作成できていない可能性があります。そのため、/dev 配下に手動でデバイスを作成する必要があります。理想的な回避策とは言えませんが、他のすべての調整が功を奏さない場合に、コンソールを確保できる可能性があります。
最後に、次のコマンドも試してみてください。
virsh console <domain id>
ドメイン ID は、xm list を実行すれば確認できます。
完全仮想化ゲストの場合
man ページによると、xm console は完全仮想化ゲストでは利用できないことになっていますが、回避策を使えば解決可能です。やるべきことは2つあります。
まずホスト側(dom0)で、該当ゲストの設定ファイルに次のディレクティブを追加します。
serial="pty"
次にゲスト側で /boot/grub/menu.lst または /boot/grub/grub.conf を編集し、以下の行を最初の kernel エントリより上、default および timeout ディレクティブのすぐ下あたりに追加します。
serial --unit=0 --speed=9600
terminal --timeout=5 serial console
続いて、該当する GRUB エントリの kernel 行に以下を追記します。
console=ttyS0
ゲストを再起動すれば、コンソールが利用できるようになっているはずです。確認するには、dom0 からゲストへコンソールを接続します。手順は以下の通りです。
#xm console <domain name>
コマンド実行後、プロンプトは戻らず、端末が固まったように見えます。この状態でゲストを再起動すると、シャットダウンおよび起動時のメッセージが流れてきます。コンソールから抜けるには、Ctrl + ] を押してください。以下は、起動・シャットダウンの様子と、Magic Keys を使って意図的に発生させたカーネルクラッシュの出力例です。
#xm console test1
INIT: Switching to runlevel: 6
INIT: Sending processes the TERM signal
INIT: Sending processes the KILL signal
Boot logging started on /dev/ttyS0(/dev/console) at Thu Dec 1 2011
Master Resource Control: previous runlevel: 3, switching to runlevel: 6
Shutting down service at daemon done
Shutting down auditd done
Shutting down automount (force) done
なお注意点として、コンソールはリダイレクトされるため、ゲスト側の画面には表示されなくなります。ゲスト内でもコンソールメッセージを確認したい場合は、GRUB メニューに console=tty1 を追加する必要があります。
関連記事
以下の記事も併せて参考にしてみてください。
- Xen トラブルシューティング
- Xen トラブルシューティング(続編)
- Xen 上への SLES11 インストールガイド
- Xen ゲストのコンソールが起動時に固まる問題の対処法
まとめ
以上が解説の全容です。決して簡単なテーマではありませんが、きっと役立つはずです。少なくとも、Xen のコマンドライン操作の基本、各種コマンドの実行方法やパラメータの確認方法、ブートメニューを含むシステム設定ファイルの編集手法については、理解が一段と深まったことでしょう。そして何より、準仮想化ゲストと完全仮想化ゲストの両方に対応した複数の解決策と回避策を提示しました。Xen コンソールをめぐるあれこれでした。
それでは今回はここまで。良い一日をお過ごしください。
-
Windows 11 アップグレードに必須の TPM 2.0 を確認・有効化する完全ガイド
TPM 2.0(Trusted Platform Module)は、Windows 11 へのアップグレードに不可欠なシステム要件の一つです。これが無効になっていると、Microsoft の最新 OS へ移行することはできません。 TPM はマザーボードに搭載されたセキュリティチップ、または CPU に統合されたファームウェア機能として存在し、ハードウェアレベルで暗号鍵を保護することで、マルウェアや不正アクセスからシステムを守ります。過去 5 年以内に出荷された PC であれば TPM 2.0 が搭載されているのが一般的ですが、自作 PC やカスタマイズされた環境ではデフォルトで無効になって
-
Zoomの出席者登録(事前登録)機能を有効にする方法|設定手順を完全解説
画面共有、アンケート(ポーリング)、マイク制限、Dropbox連携、録画など、Zoomには数多くの便利な機能が搭載されています。その中でも特に注目したいのが「出席者登録(Registration)」機能です。世界累計10億回以上のダウンロードを記録し、世界中の大陸で利用されているビデオ会議アプリZoomは、今やビジネスや教育の場に欠かせない存在となっています。 しかし一方で、Zoomはセキュリティ上の不備が指摘されることも少なくありません。そのため、ユーザー側でも適切な対策を講じて、こうしたリスクを最小限に抑えることが重要です。出席者登録機能は、まさにそのような対策の一つとして非常に有効です。