ゲストがホストのシリアルポート(/ dev/ttyS0、COM1、またはホストが提供する仮想シリアルポート)へのフルアクセスを持っているQEMU/KVMでゲストOSを正常に実行できました。
-chardev、-serialなどのドキュメントは(少なくとも私には)少し混乱しているようです。ゲストの起動時に適切なパラメーターが渡されれば、ゲストOSがシリアルポートを表示/使用できるという印象を受けました。しかし、多くの人が「いいえ、シリアルポートはQEMU/KVMのゲストOSとホスト間のコンソールリダイレクト専用です」と言っています。 RS232機器などと通信する必要があります。
さらに、ホストに物理シリアルポートがない場合、「作成」する方法を教えてください。現在、私はNetSerialを使用しています。これにより、「COMポート」が作成されます(「モデム」が接続されています)。しかし、QEMUもこの構成をあまり好きではないようです。
最初に、次のように、ホストシリアルポートのchardevを定義し、それに名前(idパラメータ)を付ける必要があります。
-chardev tty,path=/dev/ttyUSB0,id=hostusbserial
次に、シリアルデバイスを仮想マシンに追加し、作成したchardevにリンクする必要があります。
-device pci-serial,chardev=hostusbserial
できました。ゲストで回線速度などを設定する必要があります。qemuは設定を取得してホストのシリアルポートに適用します。
-serial
コマンドスイッチは便利なショートカットです。chardevを作成し、それをデフォルトのシリアルポート(x86の通常のioport 0x3f8にあるisa-serialデバイスであり、他のアーキテクチャでは何か)にリンクします。