web-dev-qa-db-ja.com

QEMUは4つ以上のシリアルポート

Debianストレッチコンピューターの物理シリアルポートに接続されている5つの異なるシリアルデバイスがあり、内部的にQEMUマシンに転送する必要があります。 qemuの内部にはQNX 6.5.0システムがあるため、virtio-seralドライバーまたは同様のソリューションを使用できるかどうかはわかりません。

4つのシリアルポートのLinux標準の制限は、次の方法で解決されます。

/etc/default/grub: 8250.nr_uarts=8

したがって、QEMUの最大シリアルポート= 4で現在発生している唯一の問題です。

これはqemuを再コンパイルすることで解決できますか?他の解決策はありますか?

6
MetNP

再コンパイルは、8つのポートすべてで機能するようです。

1)linux-ホストの制限は次の方法で解決されました:/etc/default/grub: 8250.nr_uarts=8 ... update grub

2)次の方法で解決されるqemuの制限:

git clone git://git.qemu-project.org/qemu.git; cd qemu
include/sysemu/sysemu.h: changing MAX_SERIAL_PORTS 4->8
hw/char/serial-isa.c: adding 4 values to each of 2 arrays:
isa_serial_io [MAX_SERIAL_PORTS] = {0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x5f8, 0x4f8, 0x5e8, 0x4e8}
isa_serial_irq[MAX_SERIAL_PORTS] = {4,3,4,3,4,3,4,3}
...
./configure --target-list=x86_64-softmmu
make; Sudo make install

3)qnx-guestの制限は以下を実行することで解決しました:devc-ser8250 5f8,4 4f8,3 5e8,4 4e8,3

ノート:

  • Sudo apt-get install libpixman-1-dev唯一欠落している依存関係でした
  • 最初のmakeには最大10分かかりました
  • ioアドレスとirqがランダムに選択され、どの動作を試しました(理由についての実際の知識がなく、一部のio/irqの組み合わせは動作し、一部は動作しません)
5
MetNP