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. |
<devices>
<serial type="tcp">
<source mode="connect" host="0.0.0.0" service="2445"/>
<protocol type="raw"/>
<target port="1"/>
</serial>
</devices>
Or as a TCP server waiting for a client connection.
<devices>
<serial type="tcp">
<source mode="bind" host="127.0.0.1" service="2445"/>
<protocol type="raw"/>
<target port="1"/>
</serial>
</devices>
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="telnet"/>
<target port="1"/>
</serial>
<serial type="tcp">
<source mode="bind" host="127.0.0.1" service="2445"/>
<protocol type="telnet"/>
<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>
|