さくらのVPSのリモートコンソールと同じ原理ですね。
SSHすら許されない状況に陥った時の非常用のコンソールになります。
ホストOS側からゲストOSにvirsh consoleで接続します。
シリアルインタフェースが定義されていても以下の設定がされていないと
virsh consoleで接続してもまったく先に進めないので注意が必要です。
- KVM
- CentOS
/etc/grub.conf
起動時にシリアルインタフェースが起動するようにブートローダーの設定に追加します。
カーネルパラメータの後ろに console=tty0 console=ttyS0,115200n8
を追加します。
# vi /etc/grub.conf title CentOS (2.6.32-279.22.1.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro root=/dev/mapper/... quiet console=tty0 console=ttyS0,115200n8 initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img
シリアルコンソールにrootでログインできるようにする
このままだとrootでログイン出来ないのでsecurettyに以下の設定を追加します。
# vi /etc/securetty (snip) tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 tty9 tty10 tty11 ↓追加 ttyS0
上のままだけだとシステムを再起動しない限りシリアルコンソールが有効になりません。
しかもコンソールが死んだら二度と接続出来ません。
このままだと困るので、もう少し設定したいと思います。
注意したいのですが、CentOS6系とCentOS5系ではやり方が違います。
CentOS6系では何度telinitしてもシリアルコンソールは有効になりません。
なぜならCentOS6系ではinitデーモンがSysVInitからUpstartに変更になったからです。
CentOS6系
Upstartシステムです。
シリアルコンソールジョブ定義ファイルを開いてrespwanの記述が書いてあるかどうか確認します。
以下のようにrespawnが書いてなかったら追加します。
# vi /etc/init/serial.conf start on fedora.serial-console-available DEV=* and stopped rc RUNLEVEL=[2345] stop on runlevel [S016] instance $DEV respawn pre-start exec /sbin/securetty $DEV exec /sbin/agetty /dev/$DEV $SPEED vt100-nav (snip)
すぐさま設定を反映させるためinitctlコマンドを使用します。
シリアルコンソール未設定の場合だと以下のような表示となっています。
# initctl list (snip) serial stop/waiting
シリアルコンソールを有効にしたいのでinitctl startします。
# initctl start serial initctl: Unknown parameter: DEV Usage: DEV=ttySX SPEED=Y - where X is console id and Y is baud rate
使い方はDEVとSPEEDを渡してやるようです。
# initctl start serial DEV=ttyS0 SPEED=115200
起動したか確認してみます。
# initctl list (snip) serial (ttyS0) start/running, process 19181
これでOKです。
CentOS5系
SysVInitシステムです。
/etc/inittab
シリアルコンソールが立ち上がるようにinitに教えます。
以下の行を追加します。
respawnでシリアルプロセスが死んだら再起動するようになります。
# vi /etc/inittab S0:12345:respawn:/sbin/agetty ttyS0 115200
設定したらすぐにシリアルコンソールを使えるようにしたいので、initに設定をすぐに反映させるように教えます。
# telinit q
これでOKです。
シリアルコンソールにつながらないんだけど・・・
何十回telinitやってもシリアルコンソールにつなげない。
そんなときはinittabの設定を見なおしてください。
ボーレート(baud rate)が115200ではなく112500になっちゃってたとか、
S0:12345:12345:/sbin/agetty ttyS0 115200
のように書き方を間違っているとエラーを吐かないし、何百回telinitしてもつながるようにならないので注意が必要です。
参考サイト
- Upstart の動きを理解する – いますぐ実践! Linuxシステム管理 / Vol.188
- Upstart をもう少し使い込んでみる – いますぐ実践! Linuxシステム管理 / Vol.189
投稿者紹介
-
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。
最近のエントリ
- レポート2019.10.28ユニキャストレストランを開催しました🍳
- レポート2019.08.29社内研修ワークショップ~マシュマロ・チャレンジ~
- レポート2019.08.06Computex/InnoVEX 出展者・通訳として参加してきました。
- レポート2018.06.12Computex 2018 レポート