20.16.17. Host Physical Machine Interface
A character device presents itself to the host physical machine as one of the following types:
Parameter | Description | XML snippet |
---|---|---|
Domain logfile | Disables all input on the character device, and sends output into the virtual machine's logfile |
<devices> <console type='stdio'> <target port='1'/> </console> </devices> |
Device logfile | A file is opened and all data sent to the character device is written to the file. |
<devices> <serial type="file"> <source path="/var/log/vm/vm-serial.log"/> <target port="1"/> </serial> </devices> |
Virtual console | Connects the character device to the graphical framebuffer in a virtual console. This is typically accessed via a special hotkey sequence such as "ctrl+alt+3" |
<devices> <serial type='vc'> <target port="1"/> </serial> </devices> |
Null device | Connects the character device to the void. No data is ever provided to the input. All data written is discarded. |
<devices> <serial type='null'> <target port="1"/> </serial> </devices> |
Pseudo TTY | A Pseudo TTY is allocated using /dev/ptmx . A suitable client such as virsh console can connect to interact with the serial port locally. |
<devices> <serial type="pty"> <source path="/dev/pts/3"/> <target port="1"/> </serial> </devices> |
NB Special case | NB special case if <console type='pty'> , then the TTY path is also duplicated as an attribute tty='/dev/pts/3' on the top level <console> tag. This provides compat with existing syntax for <console> tags. | |
Host physical machine device proxy | The character device is passed through to the underlying physical character device. The device types must match, eg the emulated serial port should only be connected to a host physical machine serial port - do not connect a serial port to a parallel port. |
<devices> <serial type="dev"> <source path="/dev/ttyS0"/> <target port="1"/> </serial> </devices> |
Named pipe | The character device writes output to a named pipe. See pipe(7) man page for more info. |
<devices> <serial type="pipe"> <source path="/tmp/mypipe"/> <target port="1"/> </serial> </devices> |
TCP client/server | The character device acts as a TCP client connecting to a remote server. |
Or as a TCP server waiting for a client connection.
Alternatively you can use telnet instead of raw TCP. In addition, you can also use telnets (secure telnet) and tls.
<devices> <serial type="tcp"> <source mode="connect" host="0.0.0.0" service="2445"/> <protocol type="raw"/> <target port="1"/> </serial> </devices> |
UDP network console | The character device acts as a UDP netconsole service, sending and receiving packets. This is a lossy service. |
<devices> <serial type="udp"> <source mode="bind" host="0.0.0.0" service="2445"/> <source mode="connect" host="0.0.0.0" service="2445"/> <target port="1"/> </serial> </devices> |
UNIX domain socket client/server | The character device acts as a UNIX domain socket server, accepting connections from local clients. |
<devices> <serial type="unix"> <source mode="bind" path="/tmp/foo"/> <target port="1"/> </serial> </devices> |