Здравствуйте, Коллеги.
Полная тишина на отображенном порте мультипортовки Advantech-1612 в гостевой ОС WinXP Pro English SP2.
Хостовая ОС — Kubuntu 9.10, qemu-0.11.0-0ubuntu6.
Делаю отображение на tcp-порт, нормально могу общаться по терминалкам, меняю на /dev/ttyS0 — все тишинаю.
Причем, при замапленном /dev/ttyS0 из хостовой kubuntu могу запустить minicom на /dev/ttyS0 и нормально работаю в нем. (т.е. qemu не захватывает порт ??? )
Что посоветуете?
setserial /dev/ttyS0
/dev/ttyS0, UART: 8250, Port: 0x9400, IRQ: 19
пробовал и родной для карты тип uart : 16954
winxp.xml из libvirt
<domain type='kvm'>
<name>WinXP</name>
<uuid>66c9894b-f3a9-09c2-37db-a7b5a6f9f3a9</uuid>
<memory>1048576</memory>
<currentMemory>1048576</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='x86_64' machine='pc-0.11'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<pae/>
<acpi/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='block' device='disk'>
<source dev='/dev/sda'/>
<target dev='hda' bus='ide'/>
</disk>
<disk type='block' device='cdrom'>
<source dev='/dev/cdrom'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='54:52:00:62:10:e6'/>
<source bridge='br0'/>
</interface>
<serial type='dev'>
<source path='/dev/ttyS0'/>
<target port='1'/>
</serial>
<serial type='tcp'>
<source mode='bind' host='127.0.0.1' service='2445'/>
<protocol type='raw'/>
<target port='2'/>
</serial>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>
<video>
<model type='cirrus' vram='9216' heads='1'/>
</video>
</devices>
</domain>
Здравствуйте, Zhendos, Вы писали:
Z>что куда меняем непонятно, с какими опциями запускаете qemu?
Host OS — Kubuntu 9.10
Guest OS — WinXP Pro Eng SP2
Плата PCI AD-1612, 4 порта 232/485, ttyS0-ttyS3.
libvirt запускает qemu командой:
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/home/sasha USER=root LOGNAME=root
/usr/bin/kvm -S -M pc-0.11 -m 1024 -smp 1 -name WinXP -uuid 66c9894b-f3a9-09c2-37db-a7b5a6f9f3a9
-monitor unix:/var/run/libvirt/qemu/WinXP.monitor,server,nowait
-localtime -boot c -drive file=/dev/sda,if=ide,index=0,boot=on -drive file=/dev/cdrom,if=ide,media=cdrom,index=2
-net nic,macaddr=54:52:00:62:10:e6,vlan=0,name=nic.0 -net tap,fd=17,vlan=0,name=tap.0
-serial /dev/ttyS0 -serial tcp:127.0.0.1:2445,server,nowait
-parallel none -usb -usbdevice tablet -vnc 127.0.0.1:0 -k en-us -vga cirrus
К ttyS0 подключена консоль контроллера.
При запущенной гостевой WinXP, запускаю minicom на ttyS0 и нормально работаю в консоли.
Запускаю терминалку в WinXP на соотв. порт (COM1), и пусто, как будто к порту ничего не подключено.
Т.е. qemu не захватывает порт.
Как сделать так, чтобы захватывал.
Z>Если TCP работает между гостем и основной ОС, то можно socat запустить
Z>и перенаправиться данные на tty
К сожалению, такой способ мне не подойдет, т.к. протоколы устройств бывают такие, что нужно по ходу завязки сессии переключать скорость. Для разных устройств может быть разная длина слова и четность. Поэтому нужен реальный порт.
Здравствуйте, Alexander Pazdnikov, Вы писали:
AP>Здравствуйте, Zhendos, Вы писали:
Z>>что куда меняем непонятно, с какими опциями запускаете qemu?
AP>Host OS — Kubuntu 9.10
AP>Guest OS — WinXP Pro Eng SP2
AP>Плата PCI AD-1612, 4 порта 232/485, ttyS0-ttyS3.
AP>libvirt запускает qemu командой:
AP>AP>LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/home/sasha USER=root LOGNAME=root
AP>/usr/bin/kvm -S -M pc-0.11 -m 1024 -smp 1 -name WinXP -uuid 66c9894b-f3a9-09c2-37db-a7b5a6f9f3a9
AP>-monitor unix:/var/run/libvirt/qemu/WinXP.monitor,server,nowait
AP>-localtime -boot c -drive file=/dev/sda,if=ide,index=0,boot=on -drive file=/dev/cdrom,if=ide,media=cdrom,index=2
AP>-net nic,macaddr=54:52:00:62:10:e6,vlan=0,name=nic.0 -net tap,fd=17,vlan=0,name=tap.0
AP>-serial /dev/ttyS0 -serial tcp:127.0.0.1:2445,server,nowait
AP>-parallel none -usb -usbdevice tablet -vnc 127.0.0.1:0 -k en-us -vga cirrus
AP>
AP>К ttyS0 подключена консоль контроллера.
AP>При запущенной гостевой WinXP, запускаю minicom на ttyS0 и нормально работаю в консоли.
AP>Запускаю терминалку в WinXP на соотв. порт (COM1), и пусто, как будто к порту ничего не подключено.
AP>Т.е. qemu не захватывает порт.
у вас же два порта получается, а если оставить только -serial /dev/ttyS0 ?
попробуйте вызвать qemu из командной строки выдаст ли он что-нибудь?
Если нет, посмотрите что будет если добавить strace -f в начало команды по вызову qemu,
и для совсем смелых людей есть вариант открыть в редакторе
исходники-qemu/qemu-char.c и добавить в функцию qemu_chr_open_tty
после вызова open(filename
строчку типа printf("open fd %d\n", fd);
в том qemu с которым я работаю, ошибка при открытии /dev/tty просто тихо игнорируется.