今回は61回で紹介したubuntu-vm-builderで構成した仮想マシンを,
サーバーにおけるビデオカードの必然性(仮想マシンに限らない話)
仮想マシンを
一般的なPCの利用形態では,
しかし,
逆にいえば,
設定方法さえ把握しておけば,
これは仮想化にどう関係するのでしょうか? 答えは単純で,
今回は
- 注1
- 現在の多くのサーバーではIPMIなどの遠隔管理機能を内蔵しているため,
IP接続で利用可能なKVM機能を使うことがほとんどです。さらに, IPMIの機能を使うことで 「内部でRS-232Cに接続し, そのセッションをIP越しに接続できるようにする (SoL; Serial over LANと呼ばれます)」こともできます。 - 注2
- モニタがなければキーボードやマウスによる操作は不可能ですので,
これらも通常は接続しません。 - 注3
- ヘッドレス構成にするための設定さえ済ませてしまえば,
必要な時にRS-232Cで接続することでコンソールを取得することができます。また, 前出のSoLや 「ターミナルサーバー」 と呼ばれるタイプの機器を使うことで, ローカルなシリアルケーブルによる接続ではなく, ネットワーク経由でこのコンソールに接続することもできます。
Ubuntuをヘッドレスで運用する
……ということで,
Ubuntuをヘッドレス構成にし,
- GRUBの出力デバイスをシリアルポートにする。
- カーネルのコンソール出力をシリアルポートに向ける。
- シリアルポートからログインできるようにする。
順番に見ていきましょう。
GRUBの出力デバイスをシリアルポートに設定する
最初に,
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret
--unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=5 console serial
#
# examples
#
これにより,
カーネルのコンソール出力をシリアルポートに設定する
次に,
/boot/
# kopt=root=UUID=4ead8965-89b4-43da-8849-3e8fee00c1c2 ro console=tty0 console=ttyS0,115200n8
このままでは既存のカーネルの起動オプションが修正されませんので,
$ sudo update-grub
update-grub実行後,
title Ubuntu 8.10, kernel 2.6.27-11-server
uuid 4b42d9eb-8925-4a8f-ac79-d24e8fa88309
kernel /boot/vmlinuz-2.6.27-11-server root=UUID=4b42d9eb-8925-4a8f-ac79-d24e8fa88309 ro console=tty0 console=ttyS0,115200n8 quiet splash
initrd /boot/initrd.img-2.6.27-11-server
これにより,
シリアルポートからログインできるように設定する
さらに,
古典的なLinuxでは,
Upstartに即した設定を行うため,
# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
start on stopped rc2
start on stopped rc3
start on stopped rc4
start on stopped rc5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
exec /sbin/getty -L ttyS0 115200 vt100
このように設定することで,
今回はシリアル接続で操作することが主眼ではないので軽く触れるだけに留めますが,
- 注4
- /etc/
inittabに対する互換性も維持されていますので, inittab経由の設定も可能です。が, これはあくまで後方互換性として維持されているだけなので, 遠い将来には無効になるはずです (なぜ遠い将来なのかといえば, まだまだ当分の間こうした設定が生き残るからです。少なくとも数年間といった単位では有効なままでしょう)。