[QEMU]字符设备选项(1)

字符设备选项的一般形式是:
-chardev backend,id=id[,mux=on|off][,options]
后端是以下各项之一:、、、、、、特定的后端将确定适用的选项。
null
socket
udp
msmouse
vc
ringbuf
file
pipe
console
serial
pty
stdio
braille
tty
parallel
parport
spicevmc
spiceport
用于打印所有可用的 chardev 后端类型。
-chardev help
所有设备都必须有一个 ID,该 ID 可以是长度不超过 127 个字符的任何字符串。它用于在其他命令行指令中唯一标识此设备。
一个字符设备可以由多个前端在多路复用模式下使用。指定以启用此模式。多路复用器是一个“1:N”设备,这里的“1”端是您指定的chardev后端,“N”端是QEMU中可以与chardev通信的各个部分。如果使用 和 创建 chardev,QEMU 将使用指定的 ID 创建多路复用器,然后您可以配置多个前端以将该 chardev ID 用于其输入/输出。最多可以将四个不同的前端连接到单个多路复用字符。(如果未启用多路复用,则 chardev 只能由单个前端使用。例如,您可以使用它来允许两个串行端口和QEMU监视器使用单个stadio chardev:
-chardev stdio,mux=on,id=char0 \-mon chardev=char0,mode=readline \-serial chardev:char0 \-serial chardev:char0mux=on
id=myid
mux=on
您可以在系统配置中拥有多个多路复用器;例如,您可以在UART 0和UART 1之间多路复用TCP端口,并在QEMU监视器和并行端口之间多路复用:
-chardev stdio,mux=on,id=char0 \-mon chardev=char0,mode=readline \-parallel chardev:char0 \-chardev tcp,...,mux=on,id=char1 \-serial chardev:char1 \-serial chardev:char1使用多路复用字符设备时,会在输入中解释一些转义序列。有关更多详细信息,请参阅《系统仿真用户指南》中有关字符后端多路复用器中的密钥的章节。
请注意,其他一些命令行选项可能会隐式创建多路复用字符后端;例如,创建一个连接到串行端口和QEMU监视器的多路复用Stdio后端,并将控制台和监视器多路复用到stdio。
-serial mon:stdio
-nographic
目前不支持另一个方向的多路复用(其中单个QEMU前端从多个chardev获取输入和输出)。
每个后端都支持该选项,该选项提供文件的路径以记录通过后端传输的所有数据。该选项控制日志文件在打开时是被截断还是追加到。
logfile
logappend
可用的后端包括:
-chardev null,id=id
无效装置。此设备不会发出任何数据,并且会丢弃它接收到的任何数据。空后端不采用任何选项。
-chardev socket,id=id[,TCP options or unix options][,server=on|off][,wait=on|off][,telnet=on|off][,websocket=on|off][,reconnect=seconds][,tls-creds=id][,tls-authz=id]
创建双向流套接字,它可以是 TCP 或 unix 套接字。如果指定,将创建一个 unix 套接字。如果为 unix 套接字指定了 TCP 选项,则行为未定义。
path
server=on|off
指定套接字应为侦听套接字。wait=on|off
指定 QEMU 不应阻止等待客户端连接到侦听套接字。telnet=on|off
指定套接字上的流量应解释 telnet 转义序列。websocket=on|off
指定套接字使用 WebSocket 协议进行通信。reconnect
设置在远程端消失时在非服务器套接字上重新连接的超时。qemu 将延迟这几秒钟,然后尝试重新连接。零禁用重新连接,并且是默认值。tls-creds
请求启用 TLS 协议以进行加密,并指定用于握手的 TLS 凭据的 ID。必须事先使用参数创建凭据。-object tls-creds
tls-auth
提供 QAuthZ 授权对象的 ID,将针对该对象验证客户端的 x509 可分辨名称。此对象仅在使用时解析,因此可以在 chardev 服务器处于活动状态时动态删除和重新创建。如果丢失,它将默认拒绝访问。TCP 和 unix 套接字选项如下所示:
TCP options: port=port[,host=host][,to=to][,ipv4=on|off][,ipv6=on|off][,nodelay=on|off]
host
for 侦听套接字 指定要绑定的本地地址。对于连接套接字,要连接到的远程主机类型。 对于侦听套接字是可选的。如果未指定,则默认为 。host
0.0.0.0
port
指定要绑定的本地端口。对于连接套接字,指定远程主机上要连接到的端口。 可以指定为端口号或服务名称。 是必需的。port
port
to
仅与监听套接字相关。如果已指定且无法绑定,QEMU 将尝试绑定到后续端口,直到成功为止。 必须指定为端口号。port
to
to
ipv4=on|off
并指定必须使用 IPv4 或 IPv6。如果未指定任何一个,则套接字可以使用任一协议。ipv6=on|off
nodelay=on|off
禁用 Nagle 算法。unix options: path=path[,abstract=on|off][,tight=on|off]
path
指定 unix 套接字的本地路径。 是必需的。 指定使用抽象套接字命名空间,而不是文件系统。可选,默认为 false。 将抽象套接字的套接字长度设置为最小值,而不是完整的sun_path长度。可选,默认为 true。path
abstract=on|off
tight=on|off
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr][,localport=localport][,ipv4=on|off][,ipv6=on|off]
通过 UDP 将来自来宾的所有流量发送到远程主机。
host
指定要连接到的远程主机。如果未指定,则默认为 。localhost
port
指定远程主机上要连接到的端口。 是必需的。port
localaddr
指定要绑定到的本地地址。如果未指定,则默认为 。0.0.0.0
localport
指定要绑定到的本地端口。如果未指定,将使用任何可用的本地端口。ipv4=on|off
并指定必须使用 IPv4 或 IPv6。如果未指定任何协议,则设备可以使用任一协议。ipv6=on|off
-chardev msmouse,id=id
将 QEMU 模拟的 msmouse 事件转发给来宾。 不采取任何选择。
msmouse
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
连接到 QEMU 文本控制台。 可以任选地给出特定的尺寸。
vc
width
并分别指定控制台的宽度和高度(以像素为单位)。height
cols
并指定控制台的大小适合具有给定尺寸的文本控制台。rows
-chardev ringbuf,id=id[,size=size]
创建具有固定大小的环形缓冲区。size 必须是 2 的幂,并且缺省值为 。
size
64K
-chardev file,id=id,path=path
将客户机收到的所有流量记录到一个文件中。
path
指定要打开的文件的路径。如果此文件尚不存在,则将创建此文件;如果尚不存在,则将其覆盖。 是必需的。path
-chardev pipe,id=id,path=path
创建与来宾的双向连接。Windows 主机和其他主机之间的行为略有不同:
在 Windows 上,将在 中创建单个双工管道。
\\.pipe\path
在其他主机上,将创建 2 个管道,称为 和 。写入的数据将由客人收到。可以从 中读取来宾写入的数据。QEMU不会创建这些fifo,并要求它们存在。
path.in
path.out
path.in
path.out
path
形成管道路径的一部分,如上所述。 是必需的。path
-chardev console,id=id
将流量从来宾发送到 QEMU 的标准输出。 不采取任何选择。
console
console
仅在 Windows 主机上可用。-chardev serial,id=id,path=path
将流量从来宾发送到主机上的串行设备。
在Unix主机上,串行实际上将接受任何tty设备,而不仅仅是串行线路。
path
指定要打开的串行设备的名称。-chardev pty,id=id
在主机上创建新的伪终端并连接到它。 不采取任何选择。
pty
pty
在 Windows 主机上不可用。-chardev stdio,id=id[,signal=on|off]
连接到 QEMU 过程的标准输入和标准输出。
signal
控制终端上是否启用了信号,包括使用键序列 Control-c 退出 QEMU。默认情况下,此选项处于启用状态,用于禁用它。signal=off