QEMU不会创建第二个串行端口(Ubuntu x86-64来宾和主机)

时间:2018-10-14 10:38:12

标签: serial-port virtual-machine qemu

我通过以下方式运行QEMU版本3.0.0:
x86_64-softmmu/qemu-system-x86_64 -m 2560 -hda img.qcow2 -serial pty -serial pty

我的主机是Ubuntu Desktop 16.04,而我的来宾是全新(即默认配置)的Ubuntu Server 18.04。两者都是x86-64。

启动后,QEMU立即打印:

qemu-system-x86_64: -serial pty: char device redirected to /dev/pts/18 (label serial0)
qemu-system-x86_64: -serial pty: char device redirected to /dev/pts/19 (label serial1)

此外,info qtree的输出(在QEMU的监视器中)为:

[...]
          dev: isa-serial, id ""
            index = 1 (0x1)
            iobase = 760 (0x2f8)
            irq = 3 (0x3)
            chardev = "serial1"
            wakeup = 0 (0x0)
            isa irq 3
          dev: isa-serial, id ""
            index = 0 (0x0)
            iobase = 1016 (0x3f8)
            irq = 4 (0x4)
            chardev = "serial0"
            wakeup = 0 (0x0)
            isa irq 4
[...]

因此serial0serial1似乎应该完全相同。
根据{{​​3}},/dev/ttyS1应该用于iobase为0x2f8的串行端口,因此从上面的输出中我推断出serial1应该通过{{1}使用}。

我可以正常工作,来宾中的/dev/ttyS1和主机中的/dev/ttyS0。 但是,我没有在来宾中使用/dev/pts/18,在我看来,来宾中根本没有/dev/ttyS1

在来宾内部,serial1的输出(根据this site应该显示现有的串行端口):
dmesg | grep ttyS

我想念什么?为什么访客内部似乎不存在[ 7.147289] 00:05: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A

1 个答案:

答案 0 :(得分:1)

我发现了我的错误。

由于来宾启动需要花费很多时间(至少在我的计算机上),所以我总是立即使用loadvm after_startup_snapshot

我现在试图让来宾进行启动,/dev/ttyS1的重定向工作正常。