シリアル通信を行うプログラムのテストをするときに、仮想マシン上でなんとかしたい場合があります。
 普通はそんな状況は滅多にないでしょうが、稀に無いとも言えません。しかもそんな稀なケースでは得てして送信側と受信側の2つのポートが必要だったりします。

 そこで、仮想マシンに2つの仮想シリアルポートを作り、それを名前付きパイプでクロス接続することにします。

 VMwareなら片方をサーバ、もう一方をクライアントにしてオシマイです。
 それではつまらないので、VirtualBoxならどうすればいいのか。そんな設定は無いぞ。

 やってみました。

 両方の仮想シリアルポートのポートモードをパイプにして、同じパイプを参照するようにすれば良いかと思ったら、「そのパイプはすでに使っている」とか言って設定できません。VMwareのようにサーバとクライアントを選ぶこともできません。

 こんなときはVBoxManagerのヘルプを見てみます。

$ VBoxManager modifyvm

 とやると仮想マシンの設定変更コマンドヘルプがズラズラ〜と出てきます。この中の–uartmodeが目的のオプションです。

$ VBoxManager modifyvm 仮想マシン名 --uart1 on
$ VBoxManager modifyvm 仮想マシン名 --uart2 on
$ VBoxManager modifyvm 仮想マシン名 --uartmode1 server パイプのファイル名
$ VBoxManager modifyvm 仮想マシン名 --uartmode2 client パイプのファイル名

 と設定してやると、 仮想マシン上でいい塩梅にクロス接続されます。