仮想マシンにシリアルコンソールで接続できるようにする


この記事の所要時間: 334
さくらのVPSのリモートコンソールと同じ原理ですね。
SSHすら許されない状況に陥った時の非常用のコンソールになります。
ホストOS側からゲストOSにvirsh consoleで接続します。
シリアルインタフェースが定義されていても以下の設定がされていないと
virsh consoleで接続してもまったく先に進めないので注意が必要です。

  • KVM
  • CentOS

/etc/grub.conf

起動時にシリアルインタフェースが起動するようにブートローダーの設定に追加します。
カーネルパラメータの後ろに console=tty0 console=ttyS0,115200n8 を追加します。

シリアルコンソールにrootでログインできるようにする

このままだとrootでログイン出来ないのでsecurettyに以下の設定を追加します。

上のままだけだとシステムを再起動しない限りシリアルコンソールが有効になりません。
しかもコンソールが死んだら二度と接続出来ません。
このままだと困るので、もう少し設定したいと思います。

注意したいのですが、CentOS6系とCentOS5系ではやり方が違います。
CentOS6系では何度telinitしてもシリアルコンソールは有効になりません。
なぜならCentOS6系ではinitデーモンがSysVInitからUpstartに変更になったからです。

CentOS6系

Upstartシステムです。
シリアルコンソールジョブ定義ファイルを開いてrespwanの記述が書いてあるかどうか確認します。
以下のようにrespawnが書いてなかったら追加します。

すぐさま設定を反映させるためinitctlコマンドを使用します。
シリアルコンソール未設定の場合だと以下のような表示となっています。

シリアルコンソールを有効にしたいのでinitctl startします。

使い方はDEVとSPEEDを渡してやるようです。

起動したか確認してみます。

これでOKです。

CentOS5系

SysVInitシステムです。

/etc/inittab

シリアルコンソールが立ち上がるようにinitに教えます。
以下の行を追加します。
respawnでシリアルプロセスが死んだら再起動するようになります。

設定したらすぐにシリアルコンソールを使えるようにしたいので、initに設定をすぐに反映させるように教えます。

これでOKです。

シリアルコンソールにつながらないんだけど・・・

何十回telinitやってもシリアルコンソールにつなげない。
そんなときはinittabの設定を見なおしてください。
ボーレート(baud rate)が115200ではなく112500になっちゃってたとか、

のように書き方を間違っているとエラーを吐かないし、何百回telinitしてもつながるようにならないので注意が必要です。

参考サイト

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

人気の記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

PAGE TOP