web-dev-qa-db-ja.com

ゲストOSのQEMUおよびシリアルポート

ゲストがホストのシリアルポート(/ dev/ttyS0、COM1、またはホストが提供する仮想シリアルポート)へのフルアクセスを持っているQEMU/KVMでゲストOSを正常に実行できました。

-chardev、-serialなどのドキュメントは(少なくとも私には)少し混乱しているようです。ゲストの起動時に適切なパラメーターが渡されれば、ゲストOSがシリアルポートを表示/使用できるという印象を受けました。しかし、多くの人が「いいえ、シリアルポートはQEMU/KVMのゲストOSとホスト間のコンソールリダイレクト専用です」と言っています。 RS232機器などと通信する必要があります。

さらに、ホストに物理シリアルポートがない場合、「作成」する方法を教えてください。現在、私はNetSerialを使用しています。これにより、「COMポート」が作成されます(「モデム」が接続されています)。しかし、QEMUもこの構成をあまり好きではないようです。

3
joho

最初に、次のように、ホストシリアルポートのchardevを定義し、それに名前(idパラメータ)を付ける必要があります。

-chardev tty,path=/dev/ttyUSB0,id=hostusbserial

次に、シリアルデバイスを仮想マシンに追加し、作成したchardevにリンクする必要があります。

-device pci-serial,chardev=hostusbserial

できました。ゲストで回線速度などを設定する必要があります。qemuは設定を取得してホストのシリアルポートに適用します。

-serialコマンドスイッチは便利なショートカットです。chardevを作成し、それをデフォルトのシリアルポート(x86の通常のioport 0x3f8にあるisa-serialデバイスであり、他のアーキテクチャでは何か)にリンクします。

5
Gerd Hoffmann