VirtualBox では、仮想マシン内でシリアル(COM)ポートをエミュレートでき、レガシーアプリケーションの実行、物理シリアルデバイスの接続、または仮想システム間の通信を確立することが可能になります。VirtualBox の COM ポートを正しく設定することで、シリアルデータをホストマシンにリダイレクトしたり、実際のハードウェアを共有したり、パイプやネットワークソケットを使用して仮想接続を作成したりできます。
この記事では、VirtualBox のシリアルポートの仕組み、利用可能な設定オプション、そして仮想環境で COM ポートを接続・管理する実用的な方法について説明します。
VirtualBoxにおけるシリアルポートのエミュレーションと管理
VirtualBox で作成された仮想シリアルポートは、デフォルトではオペレーティングシステムにより標準の 16550A 互換 UART デバイスとして認識されます。VBoxManage modifyvm コマンドを使用すると、このポートが他の種類の UART デバイスを再現できるようになります。仮想シリアルポートは双方向通信のためのデータ受信および送信をサポートします。ホストマシンへの接続は、そのオペレーティングシステムの機能を使用してカスタマイズされます。
ユーザーは VirtualBox の設定タブ、または VBoxManage コマンドを使用して仮想シリアルポートをセットアップします。各仮想マシンにつき最大 4 つの仮想シリアルポートを構成できます。ポート番号は構成時に割り当てられ、通常は COM1、COM2 などの標準的な値を再現します。仮想シリアルポートを確立する際に、ユーザー定義の名前を使用することも可能です。
Virtualboxにおけるポートモードオプションと通信技術
仮想ポートの接続に影響するポートモードを選択する際には、複数の選択肢があります。選択肢は次のとおりです:
- 切断 – ゲストOSはデバイスを認識しますが、ポートに接続されていないものとして扱います。
- ホストデバイス – このオプションは、仮想シリアルポートをホストコンピューターの物理シリアルポートにリンクします。パスはホストOSの形式を反映します。たとえば、Linuxでは /dev/ttyS0 が使用され、Windowsシステムでは COM1 が使用されます。
- ホストパイプ – このオプションは、Windowsシステムでは名前付きパイプを作成し、Mac、Linux、またはOracle Solarisではローカルドメインソケットを使用します。これは、ソフトウェアからホストOSへのパイプ接続を作成するための推奨設定です。
- 生ファイル – このモードでは、仮想シリアルポートの出力をファイルに保存し、ゲストオペレーティングシステムから診断データを収集するために使用できます。
- TCPソケット – このモードを使用すると、VirtualBoxのシリアルポートパススルーが確立され、シリアルデータをTCP/IPネットワーク経由で転送できます。VMはサーバーとしてもクライアントとしても動作できます。
複数の仮想シリアルポートを作成する場合、通信の競合を避けるため、ポートが同じ割り込みレベルを使用している場合は割り込み共有を実装しないでください。
ユーザーは ヌルモデム接続 によって仮想マシン間の通信を確立できます。VMの一方を、2台目のVMが最初のマシンに接続するために使用するパイプまたはソケットとして構成します。
TCPソケットモードは、TCP経由でゲストマシンのシリアルポートへの外部接続の作成をサポートします。VirtualBoxは、telnet のようなツールでアクセス可能なTCPサーバーモードと、仮想ヌルモデムケーブルに適したTCPクライアントモードの両方をサポートします。
VirtualBoxのシリアルポートに関する知識は、開発者やシステムプログラマーにとって、VMの機能を拡張するための価値あるツールとなります。これらのポートは、デバイス共有、カーネルデバッグ、または物理シリアルインターフェースを必要とせずにネットワークブリッジを確立するために使用できます。
VirtualBox シリアルポートの技術詳細
VirtualBox は仮想マシンごとに最大 4 つの仮想シリアルポートをサポートします。各ポートは標準的な PC の COM インターフェースをエミュレートし、レガシーソフトウェアやオペレーティングシステムとの互換性を確保するために特定のハードウェアパラメータが必要です。
VirtualBox のデフォルト COM ポート設定
シリアルポートを手動で設定する場合、I/O ベースアドレスとIRQ 番号を指定する必要があります。VirtualBox は従来の PC シリアルポートのレイアウトに従います:
| COMポート | I/Oベースアドレス | IRQ |
| COM1 | 0x3F8 | 4 |
| COM2 | 0x2F8 | 3 |
| COM3 | 0x3E8 | 4 |
| COM4 | 0x2E8 | 3 |
これらのデフォルト値を使用すると、競合を回避でき、ゲストオペレーティングシステムがシリアルデバイスを正しく検出できるようになります。
VBoxManage を使用したシリアルポートの設定
VirtualBox のグラフィカルインターフェースに加えて、シリアルポートは VBoxManage コマンドラインツールを使用して設定できます。この方法は、自動化、スクリプト作成、またはヘッドレス環境で役立ちます。
VirtualBox には次のようなコマンドオプションがあります:
--uart– シリアルポート番号とハードウェアパラメータを定義します--uartmode– ポートの接続方法(ホストデバイス、パイプ、ソケット、ファイルなど)を指定します--uarttype– UART エミュレーションの種類を設定します
コマンドラインでの設定により、GUI に依存せずに、上級ユーザーはシリアルポートの動作を正確に制御できます。
Serial to Ethernet コネクタを使用した VirtualBox シリアルポートのパススルー
VirtualBox のシリアルポートパススルーを簡素化し、物理シリアルデバイスへのアクセスを可能にするには、Serial to Ethernet Connector を使用できます。このソフトウェアにより、VirtualBox の仮想マシンは、VM 内に仮想シリアルポートを作成することで、ローカルまたはリモートの Windows ホストに接続されたシリアルデバイスに接続できます。
Serial to Ethernet Connector を使用すると、仮想マシンはネットワーク接続されたシリアル周辺機器を、あたかも直接接続されているかのように完全に制御できます。このアプローチにより、シリアルデバイス管理の柔軟性が向上し、仮想マシンを再設定することなく、ハードウェアを仮想セッション間で容易に再割り当てできます。
VirtualBoxでCOMポートを設定する
以下の手順では、仮想マシンで仮想シリアルポートを確立して共有する方法を説明します。
1. 物理シリアルポートを共有するコンピューターに、Serial to Ethernet Connector をダウンロードしてインストールします。
2. プログラムを起動し、サーバー接続タブを開きます。
3. ホストマシンの COM ポート名と、通信を監視する TCP ポートを指定します。
4. サーバー接続の作成を選択します。
5. 共有された物理ポートにアクセスするゲストオペレーティングシステム上の[クライアント接続]タブで、シリアルポートを仮想マシンに接続します。
6. サーバー作成時に定義した TCP ポート名とホストコンピューターの IP アドレスを指定します。
7. 仮想マシンのシリアルポートの名前を選択します。
8.[クライアント接続の作成]を選択します。
ビデオチュートリアル
COM Port Redirector を使用すると、仮想マシン環境でシリアルポートにアクセスできます。クライアント接続を確立すると、COM Port Redirector(別名 Serial to Ethernet Connector)は、接続されたデバイスを使用する際に、物理的に直接接続した場合と同等の機能性をゲスト VM に提供します。