彷徨えるフジワラ

年がら年中さまよってます

VirtualBox を headless 稼動

デスクトップ環境を OpenSolaris にするとは言え、仕事の都合から MS-Windows 環境が必要な状況があるのは目に見えているため、VirtualBox を使った仮想環境上で MS-Windows を稼動させることに。

例によってインストールは至極簡単。ダウンロードしたアーカイブに ReadMe.txt も付いているしね。仮想マシン/仮想ディスク作成を経て、MS-Windows のインストールも無事終了。

ここまでの作業は VirtualBoxGUI 経由で行ったけど、グラフィックディスプレイの無いサーバ環境での稼動のような事態を想定して、所謂 headless server 運用にも挑戦。
理想的には、仮想マシン/仮想ディスクの作成もheadless server 運用すべきなんだけど、そこはそれ、勇気と無謀は違う、という奴だ(大袈裟な……)。

$ VBoxManage list vms
....
"WindowsXP" {vmid}
$ VBoxHeadless --startvm vmid -vrdp on

デフォルトでは無効化されている機能だけど、上記 VBoxHeadless 起動での "-vrdp on" 指定などのような有効化指示があれば、RDP(Remote Desktop Protocol)経由で仮想マシン(≠ ゲスト OS)に繋ぐことができる。

早速、rdesktop コマンドから仮想マシンに接続。…………うーん、マウスの移動に追従できなくて、マウスカーソルが2つになったりしてるんだけど。あ、ゆっくり動かすと大丈夫かも。

でも、普段の作業でこの応答性はちょっと辛いなぁ。Microsoft 製クライアントでも事情は変化しないので、原理上無理があるのかも(画面サイズを狭めれば良いのか?)。

MS-Windowsリモートデスクトップにしろ、UNIX 系 OS への SSH リモート接続にしろ、ゲスト OS 起動が完了するまでは機能しないので、そう言った所謂「コンソール」へのアクセスが必要な状況(例: 仮想マシン BIOS への操作や、シングルモード起動等)限定での使用かなぁ。あ、後は headless モードのままゲストをインストールする時とか。

ゲストの MS-Windows が起動してしまえば、仮想マシン側ではなくゲスト側に RDP 接続した方が快適なので、日常使用の際はそちらで行くことに。

それと、仮想マシンへの RDP 接続は認証系が殆ど機能しないので:

  • localhost(127.0.0.1) でのみ待ち受け
  • 外部からの接続は SSH のポートフォワードを併用
  • ホスト OS の複数ユーザ利用は想定外(セキュリティ上の懸念がある場合)

といった感じになるのかな。

ちなみに VBoxHeadless コマンドは、仮想マシンが動作終了するまで戻って来ない。うっかり Ctrl-C で中断すると、所謂「コンセント引っこ抜き」相当の扱いになってしまうので、仮想マシンの突き放し起動ができる "VBoxManage startvm" を起点として、以下の様な運用で。

# 仮想マシン起動:
$ VBoxManage startvm vmid --type headless

# 仮想マシンの RDP アクセスを有効化
$ VBoxManage controlvm vmid vrdp on
# 仮想マシンの RDP アクセスを無効化
$ VBoxManage controlvm vmid vrdp off

# 仮想マシン一時停止:
$ VBoxManage controlvm vmid pause
# 仮想マシン状態保存⇒仮想マシン実行終了:
$ VBoxManage controlvm vmid savestate