装修网站设计师,门户网站简单模板,网站建设怎么设置网址,荆州网站建设价格本文由 AI 翻译#xff08;ChatGPT-4#xff09;完成#xff0c;并由作者进行人工校对。如有任何问题或建议#xff0c;欢迎联系我。联系方式#xff1a;jelin-shoutlook.com。 原文#xff1a;Invocation — QEMU documentation qemu-system-x86_64 [选项] [磁盘镜像]磁… 本文由 AI 翻译ChatGPT-4完成并由作者进行人工校对。如有任何问题或建议欢迎联系我。联系方式jelin-shoutlook.com。 原文Invocation — QEMU documentation qemu-system-x86_64 [选项] [磁盘镜像]磁盘镜像是用于IDE硬盘0的原始硬盘镜像。一些目标系统不需要磁盘镜像。
当处理包含逗号的任意字符串作为选项参数时如“filemy,file”和“stringa,b”需要多写一个逗号。例如“-fw_cfg namez,stringa,b”将被解析为“-fw_cfg namez,stringa,b”。
标准选项 -h 显示帮助信息并退出 -version 显示版本信息并退出 -machine [type]name[,propvalue[,…]] 通过名称选择模拟的机器。使用-machine help列出可用的机器。
对于旨在支持跨版本实时迁移兼容性的架构每个版本将引入新的版本化机器类型。例如2.8.0版本为x86_64/i686架构引入了“pc-i440fx-2.8”和“pc-q35-2.8”机器类型。
为了允许从QEMU版本2.8.0到QEMU版本2.9.0的实时迁移2.9.0版本必须支持“pc-i440fx-2.8”和“pc-q35-2.8”机器类型。为了允许用户在升级时跳过多个中间版本进行实时迁移新的QEMU版本将支持多个先前版本的机器类型。
支持的机器属性有 accelaccels1[:accels2[:...]] 用于启用加速器。根据目标架构可能可用的加速器有kvm、xen、hvf、nvmm、whpx或tcg。默认情况下使用tcg。如果指定了多个加速器当前一个加速器初始化失败时将使用下一个加速器。 vmporton|off|auto 启用VMWare IO端口的模拟用于vmmouse等。auto表示根据accel选择值。对于accelxen默认值为off否则默认值为on。 dump-guest-coreon|off 在核心转储中包含客体内存。默认值为on。 mem-mergeon|off 启用或禁用内存合并支持。当主机支持此功能时该特性会在VM实例之间去重相同的内存页默认启用。 aes-key-wrapon|off 启用或禁用s390-ccw主机上的AES密钥包装支持。此功能控制是否创建AES包装密钥以允许执行AES加密功能。默认值为on。 dea-key-wrapon|off 启用或禁用s390-ccw主机上的DEA密钥包装支持。此功能控制是否创建DEA包装密钥以允许执行DEA加密功能。默认值为on。 nvdimmon|off 启用或禁用NVDIMM支持。默认值为off。 memory-encryption 使用的内存加密对象。默认值为none。 hmaton|off 启用或禁用ACPI异构内存属性表HMAT支持。默认值为off。 memory-backendid 用于替代传统的-mem-path和mem-prealloc选项。允许使用内存后端作为主RAM。例如 -object memory-backend-file,idpc.ram,size512M,mem-path/hugetlbfs,preallocon,shareon
-machine memory-backendpc.ram
-m 512M迁移兼容性说明 对于需要与旧QEMU5.0进行迁移的情况应使用由机器类型通过query-machines QMP命令可获取广告的‘default-ram-id’作为后端id。 对于4.0及更早的机器类型用户应在迁移至/从旧QEMU5.0时使用x-use-canonical-path-for-ramblock-idoff后端选项。 例如 -object memory-backend-ram,idpc.ram,size512M,x-use-canonical-path-for-ramblock-idoff
-machine memory-backendpc.ram
-m 512Mcxl-fmw.0.targets.0firsttarget,cxl-fmw.0.targets.1secondtarget,cxl-fmw.0.sizesize[,cxl-fmw.0.interleave-granularitygranularity] 定义一个CXL固定内存窗口(CFMW) 它们是系统中主机物理地址HPA的区域可能跨一个或多个 CXL 主桥交错。系统软件将特定设备分配到这些窗口中并在启用内存设备之前在根端口、交换机端口和设备中配置下游的主机管理设备内存HDM解码器以满足交错要求。 targets.Xtarget提供到 CXL 主桥的映射可以通过 -device 项中的 id 进行标识。当固定内存窗口表示交错内存时需要多个条目来指定所有目标。X 是从 0 开始的目标索引。sizesize设置 CFMW 的大小。必须是 256MiB 的倍数。该区域将对齐到 256MiB但位置依赖于平台和配置。interleave-granularitygranularity设置交错粒度。默认值为 256字节。仅支持 256、512、1k、2k、4k、8k 和 16k 的粒度。 例如: -machine cxl-fmw.0.targets.0cxl.0,cxl-fmw.0.targets.1cxl.1,cxl-fmw.0.size128G,cxl-fmw.0.interleave-granularity512sgx-epc.0.memdevvar{memid},sgx-epc.0.nodevar{numaid} 定义一个SGX EPC部分。 -cpu model 选择CPU模型使用-cpu help查看列表和附加功能选择 -accel name[,propvalue[,…]] 用于启用加速器。根据目标架构的不同可用的加速器包括kvm、xen、hvf、nvmm、whpx或tcg。默认情况下使用tcg。如果指定了多个加速器初始化失败时将使用下一个加速器。 igd-passthruon|off 当使用Xen时此选项控制是否可以将英特尔集成显卡设备透传到虚拟机默认值off。 kernel-irqchipon|off|split 控制KVM内核中断控制器支持。默认情况下是完全加速中断控制器。在x86架构上split irqchip减少了内核攻击面但非MSI中断的性能会有所降低。除非用于调试目的不推荐完全禁用内核中断控制器。 kvm-shadow-memsize 定义KVM影子MMU的大小。 one-insn-per-tbon|off 使TCG加速器在每个翻译块中仅放置一条访客指令。这会大大降低仿真速度但在某些情况下可能有用例如分析由-d选项生成的日志时。 split-wxon|off 控制TCG代码生成缓冲区的split w^x映射的使用。某些操作系统需要启用此功能在这种情况下默认开启。在其他操作系统上此功能默认关闭但可以为测试或调试启用。 tb-sizen 控制TCG翻译块缓存的大小以MiB为单位。 threadsingle|multi 控制TCG线程数量。当TCG是多线程时每个vCPU将有一个线程从而利用额外的主机核心。默认情况下在后端和前端都支持且没有启用不兼容的TCG特性例如icount/replay时启用多线程。 dirty-ring-sizen 当使用KVM加速器时控制每个vCPU脏页环缓冲区的大小每个vCPU的条目数。该值应为2的幂并且应大于或等于1024但仍小于内核支持的最大值。如果不确定最佳值4096可能是一个好的初始值。将此值设置为0以禁用该功能。默认情况下该功能是禁用的dirty-ring-size0。启用时KVM将改为在位图中记录脏页。 eager-split-sizen KVM以PAGE_SIZE粒度实现脏页记录启用大页的脏记录需要首先将其拆分为PAGE_SIZE页。默认情况下ARM上的KVM懒惰地执行这种拆分。在某些情况下积极地拆分大页在性能上有好处特别是在TLBI成本与断前制序列相关且访客工作负载主要是读操作时。此处的大小指定一次拆分多少页需要是有效的块大小分别为1GB/2MB/4KB、32MB/16KB和512MB/64KB对于4KB/16KB/64KB的PAGE_SIZE。指定较大的大小会影响内存。默认情况下该功能是禁用的eager-split-size0。 notify-vmexitrun|internal-error|disable,notify-windown 启用或禁用x86主机上的通知VM退出支持并指定相应的通知窗口以在启用时触发VM退出。run选项启用该功能。如果发生退出则不执行任何操作并继续。internal-error选项启用该功能。如果发生退出则引发内部错误。disable选项不启用该功能。该功能可以缓解由于事件窗口在一段时间内未打开而导致的CPU卡住问题即通知窗口。默认值notify-vmexitrun,notify-window0。 devicepath 设置KVM设备节点的路径。默认为/dev/kvm。此选项可用于通过文件描述符传递要使用的KVM设备方法是将值设置为/dev/fdset/NN。 -smp [[cpus]n][,maxcpusmaxcpus][,drawersdrawers][,booksbooks][,socketssockets][,diesdies][,clustersclusters][,modulesmodules][,corescores][,threadsthreads] 模拟一个具有‘n’个初始CPU的SMP系统。在支持CPU热插拔的主板上可以通过可选的‘maxcpus’参数来设置以便在运行时添加更多的CPU。当两个参数都省略时将根据提供的拓扑成员计算最大CPU数量初始CPU数量将与最大数量匹配。当只给出其中一个参数时省略的参数将设置为对应的值。可以同时指定两个参数但最大CPU数量必须等于或大于初始CPU数量。CPU拓扑层次结构的乘积必须等于最大CPU数量。两个参数都受到所选特定机器类型确定的上限的约束。
为了控制CPU拓扑信息的报告可以指定拓扑参数的值。机器可能只支持参数的一个子集不同机器可能支持不同的子集这取决于相应CPU目标的能力。因此可以通过支持的子选项为特定类型的主板定义预期的拓扑层次结构。还可以提供不支持的参数作为子选项的补充但其值必须设置为1以便正确解析。
必须指定初始CPU数量或至少一个拓扑参数。指定的参数必须大于零不允许显式配置为“cpus0”。任何省略参数的值将根据给定参数计算。
例如以下子选项为仅支持插槽/核心/线程的机器定义了CPU拓扑层次结构机器上总共有2个插槽每个插槽2个核心每个核心2个线程。可以省略该选项的某些成员但其值将自动计算
-smp 8,sockets2,cores2,threads2,maxcpus8以下子选项为支持插槽/芯片/模块/核心/线程的PC机器定义了CPU拓扑层次结构机器上总共有2个插槽每个插槽2个芯片每个芯片2个模块每个模块2个核心每个核心2个线程。可以省略该选项的某些成员但其值将自动计算
-smp 32,sockets2,dies2,modules2,cores2,threads2,maxcpus32以下子选项为支持插槽/集群/核心/线程的ARM virt机器定义了CPU拓扑层次结构机器上总共有2个插槽每个插槽2个集群每个集群2个核心每个核心2个线程。可以省略该选项的某些成员但其值将自动计算
-smp 16,sockets2,clusters2,cores2,threads2,maxcpus16历史上在计算缺失值时优先考虑最粗略的拓扑参数即优先考虑插槽而不是核心而核心优先于线程然而这种行为可能会改变。在6.2之前优先级是插槽高于核心高于线程。自6.2以来优先级是核心高于插槽高于线程。
例如以下选项在6.2之前定义了一个具有2个插槽、每个插槽1个核心的机器板在6.2之后定义了一个具有1个插槽、每个插槽2个核心的机器板
-smp 2注意集群拓扑只有在-smp中显式指定时才会在ACPI中生成并暴露给虚拟机。 -numa node[,memsize][,cpusfirstcpu[-lastcpu]][,nodeidnode][,initiatorinitiator] -numa node[,memdevid][,cpusfirstcpu[-lastcpu]][,nodeidnode][,initiatorinitiator] -numa dist,srcsource,dstdestination,valdistance -numa cpu,node-idnode[,socket-idx][,core-idy][,thread-idz] -numa hmat-lb,initiatornode,targetnode,hierarchyhierarchy,data-typetype[,latencylat][,bandwidthbw] -numa hmat-cache,node-idnode,sizesize,levellevel[,associativitystr][,policystr][,linesize] 定义一个NUMA节点并为其分配RAM和VCPU。设置从源节点到目标节点的NUMA距离。为指定节点设置ACPI异构内存属性。
传统的VCPU分配使用‘cpus’选项其中firstcpu和lastcpu是CPU索引。每个‘cpus’选项表示一个连续的CPU索引范围如果省略lastcpu则表示单个VCPU。可以通过提供多个‘cpus’选项来表示非连续的VCPU集合。如果在所有节点上都省略了‘cpus’选项则VCPU会自动在它们之间分配。
例如以下选项将VCPU 0、1、2和5分配给一个NUMA节点
-numa node,cpus0-2,cpus5‘cpu’选项是‘cpus’选项的新替代方案它使用‘socket-id|core-id|thread-id’属性通过CPU的拓扑结构属性将CPU对象分配给节点。属性集是机器特定的并取决于使用的机器类型和‘smp’选项。可以使用‘hotpluggable-cpus’监视器命令查询。‘node-id’属性指定将CPU对象分配到的节点在使用‘cpu’选项之前必须用‘node’选项声明节点。
例如
-M pc \
-smp 1,sockets2,maxcpus2 \
-numa node,nodeid0 -numa node,nodeid1 \
-numa cpu,node-id0,socket-id0 -numa cpu,node-id1,socket-id1‘memdev’选项将来自给定内存后端设备的RAM分配给节点。建议使用‘memdev’选项代替传统的‘mem’选项。这是因为‘memdev’选项提供了更好的性能和对后端RAM的更多控制例如‘-memory-backend-ram’的‘prealloc’参数允许内存预分配。
出于兼容性原因传统的‘mem’选项在5.0及更早的机器类型中受支持。注意‘mem’和‘memdev’是互斥的。如果一个节点使用‘memdev’其余节点也必须使用‘memdev’选项反之亦然。
用户必须通过‘memdev’或如果可用通过传统的‘mem’为所有NUMA节点指定内存。在QEMU 5.2中移除了不指定内存的‘-numa node’的支持。
‘initiator’是一个附加选项指向与此NUMA节点具有最佳性能最低延迟或最大带宽的启动NUMA节点。注意只有在机器属性‘hmat’设置为‘on’时才可以设置此选项。
以下示例创建了一个具有2个NUMA节点的机器节点0有CPU节点1只有内存其启动节点是节点0。注意因为节点0有CPU默认情况下节点0的启动节点是其自身必须是其自身。
-machine hmaton \
-m 2G,slots2,maxmem4G \
-object memory-backend-ram,size1G,idm0 \
-object memory-backend-ram,size1G,idm1 \
-numa node,nodeid0,memdevm0 \
-numa node,nodeid1,memdevm1,initiator0 \
-smp 2,sockets2,maxcpus2 \
-numa cpu,node-id0,socket-id0 \
-numa cpu,node-id0,socket-id1source和destination是NUMA节点ID。distance是从源节点到目标节点的NUMA距离。节点到自身的距离始终为10。如果为任意节点对设置了距离则必须为所有节点对设置距离。但是当每对节点只在一个方向上设置距离时则假定相反方向的距离相同。然而如果为甚至一个节点对设置了不对称的距离则必须为所有节点对提供两个方向的距离值即使它们是对称的。当一个节点无法从另一个节点到达时将这对节点的距离设置为255。
请注意-numa选项并不会分配任何指定的资源它只是将现有资源分配给NUMA节点。这意味着仍然需要使用-m和-smp选项分别分配RAM和VCPU。
使用‘hmat-lb’选项在ACPI异构属性内存表HMAT中设置发起节点和目标NUMA节点之间的系统局部性延迟和带宽信息。发起NUMA节点可以创建内存请求通常它有一个或多个处理器。目标NUMA节点包含可寻址内存。
在‘hmat-lb’选项中node表示NUMA节点ID。hierarchy是目标NUMA节点的内存层次结构如果hierarchy是‘memory’则该结构表示内存性能如果hierarchy是‘first-level|second-level|third-level’则该结构表示每个域的内存侧缓存的综合性能。‘data-type’的类型表示该结构实例表示的数据类型如果‘hierarchy’是‘memory’‘data-type’是目标内存的‘access|read|write’延迟或‘access|read|write’带宽如果‘hierarchy’是‘first-level|second-level|third-level’‘data-type’是目标内存侧缓存的‘access|read|write’命中延迟或‘access|read|write’命中带宽。
lat是以纳秒为单位的延迟值。bw是带宽值可能的值和单位是NUM[M|G|T]表示带宽值为每秒NUM字节或MB/s、GB/s或TB/s具体取决于使用的后缀。注意如果延迟或带宽值为0则表示未提供相应的延迟或带宽信息。
在‘hmat-cache’选项中node-id是内存所属的NUMA-id。size是以字节为单位的内存侧缓存大小。level是该结构描述的缓存级别注意缓存级别0不应与‘hmat-cache’选项一起使用。associativity是缓存关联性可能的值是‘none/direct直接映射/complex复杂缓存索引’。policy是写策略。line是以字节为单位的缓存行大小。
例如以下选项描述了2个NUMA节点。节点0有2个CPU和一个RAM节点1只有一个RAM。节点0的处理器访问节点0的内存时访问延迟为5纳秒访问带宽为200MB/s节点0的处理器访问节点1的内存时访问延迟为10纳秒访问带宽为100MB/s。而对于内存侧缓存信息NUMA节点0和1都具有1级内存缓存大小为10KB写策略为回写缓存行大小为8字节
-machine hmaton \
-m 2G \
-object memory-backend-ram,size1G,idm0 \
-object memory-backend-ram,size1G,idm1 \
-smp 2,sockets2,maxcpus2 \
-numa node,nodeid0,memdevm0 \
-numa node,nodeid1,memdevm1,initiator0 \
-numa cpu,node-id0,socket-id0 \
-numa cpu,node-id0,socket-id1 \
-numa hmat-lb,initiator0,target0,hierarchymemory,data-typeaccess-latency,latency5 \
-numa hmat-lb,initiator0,target0,hierarchymemory,data-typeaccess-bandwidth,bandwidth200M \
-numa hmat-lb,initiator0,target1,hierarchymemory,data-typeaccess-latency,latency10 \
-numa hmat-lb,initiator0,target1,hierarchymemory,data-typeaccess-bandwidth,bandwidth100M \
-numa hmat-cache,node-id0,size10K,level1,associativitydirect,policywrite-back,line8 \
-numa hmat-cache,node-id1,size10K,level1,associativitydirect,policywrite-back,line8-add-fd fdfd,setset[,opaqueopaque] 向文件描述符集fd set中添加一个文件描述符。有效选项包括 fdfd 此选项定义要添加到fd set中的文件描述符的副本。该文件描述符不能是stdin、stdout或stderr。 setset 此选项定义要将文件描述符添加到的fd set的ID。 opaqueopaque 此选项定义一个自由格式的字符串可以用于描述文件描述符。 您可以使用来自fd set的预打开文件描述符来打开镜像文件 qemu-system-x86_64 \-add-fd fd3,set2,opaquerdwr:/path/to/file \-add-fd fd4,set2,opaquerdonly:/path/to/file \-drive file/dev/fdset/2,index0,mediadisk-set group.id.argvalue 为类型为group的项目id设置参数arg的值 -global driver.propvalue -global driverdriver,propertyproperty,valuevalue 将驱动程序属性prop的默认值设置为value例如
qemu-system-x86_64 -global ide-hd.physical_block_size4096 disk-image.img特别地您可以使用此选项为机器模型自动创建的设备设置驱动程序属性。要创建未自动创建的设备并设置其属性请使用-device选项。
-global driver.propvalue是-global driverdriver,propertyprop,valuevalue的简写形式。当driver包含一个点时长形式的语法也适用。 -boot [orderdrives][,oncedrives][,menuon|off][,splashsp_name][,splash-timesp_time][,reboot-timeoutrb_timeout][,stricton|off] 指定启动顺序驱动器作为驱动器字母的字符串。有效的驱动器字母取决于目标架构。x86 PC使用a、b软盘1和2、c第一个硬盘、d第一个CD-ROM、n-p从网络适配器1-4通过Etherboot启动默认情况下为硬盘启动。要仅在第一次启动时应用特定的启动顺序可以通过once参数指定。请注意不应同时使用order或once参数和设备的bootindex属性因为固件通常不支持同时使用这两者。
在固件/BIOS支持的情况下可以通过menuon启用交互式启动菜单/提示。默认情况下为非交互式启动。
可以通过bios传递启动画面允许用户在启用menuon选项并且指定splashsp_name时显示为徽标如果固件/BIOS支持。目前Seabios支持X86系统。限制条件启动画面文件可以是jpeg文件或24位BMP文件真彩色。分辨率应受SVGA模式支持因此推荐的分辨率是320x240、640x480、800x640。
可以将超时设置传递给bios当启动失败时guest将在rb_timeout毫秒内暂停然后重启。如果rb_timeout为‘-1’guest将不会重启qemu默认传递‘-1’给bios。目前Seabios支持X86系统。
通过stricton进行严格启动只要固件/BIOS支持。这仅在通过bootindex选项更改启动优先级时生效。默认情况下为非严格启动。
# 尝试先从网络启动然后从硬盘启动
qemu-system-x86_64 -boot ordernc
# 先从CD-ROM启动重启后恢复为默认顺序
qemu-system-x86_64 -boot onced
# 启动时显示启动画面5秒
qemu-system-x86_64 -boot menuon,splash/root/boot.bmp,splash-time5000注意旧格式‘-boot drives’仍然受支持但不推荐使用因为将来版本中可能会移除。 -m [size]megs[,slotsn,maxmemsize] 设置客户机启动时的RAM大小为megs兆字节。默认值为128 MiB。可以选择使用“M”或“G”后缀分别表示兆字节或千兆字节的值。可选参数slots和maxmem可以用来设置热插拔内存插槽的数量和最大内存量。请注意maxmem必须与页面大小对齐。
例如以下命令行将客户机启动时的RAM大小设置为1GB创建3个插槽以热插拔额外内存并将客户机的最大内存设置为4GB
qemu-system-x86_64 -m 1G,slots3,maxmem4G如果未指定slots和maxmem则不会启用内存热插拔且客户机启动时的RAM大小将不会增加。 -mem-path path 从路径中临时创建的文件中分配客户机RAM。 -mem-prealloc 使用-mem-path时预分配内存。 -k language 使用键盘布局语言例如fr表示法语。该选项仅在不容易获得原始PC键码的情况下需要使用例如在Mac电脑上使用某些X11服务器或使用VNC或curses显示时。通常在PC/Linux或PC/Windows主机上不需要使用此选项。
可用的布局有
ar de-ch es fo fr-ca hu ja mk no pt-br sv
da en-gb et fr fr-ch is lt nl pl ru th
de en-us fi fr-be hr it lv nl-be pt sl tr默认布局为en-us。 -audio [driver]driver[,modelvalue][,prop[value][,…]] 如果指定了model选项-audio是用于一次性配置客户机音频硬件和主机音频后端的快捷方式。客户机硬件模型可以使用modelmodelname进行设置。使用modelhelp列出可用的设备类型。
以下两个示例做了完全相同的事情展示了如何使用-audio来缩短命令行长度
qemu-system-x86_64 -audiodev pa,idpa -device sb16,audiodevpa
qemu-system-x86_64 -audio pa,modelsb16如果未指定model选项-audio用于配置一个默认音频后端该后端将在设备或机器未设置audiodev属性时使用。特别是-audio none确保即使对于有嵌入式声音硬件的机器也不产生音频。
在这两种情况下driver选项与下面对应的-audiodev选项相同。使用driverhelp列出可用的驱动程序。 -audiodev [driver]driver,idid[,prop[value][,…]] 添加一个由id标识的新音频后端驱动程序。有全局和驱动程序特定的属性。一些值可以为输入和输出分别设置它们用in|out.标记。您可以使用in.prop设置输入属性使用out.prop设置输出属性。例如
-audiodev alsa,idexample,in.frequency44100,out.frequency8000
-audiodev alsa,idexample,out.channels1 # 不指定in.channels注意已知参数验证不完整在许多情况下指定无效选项会导致QEMU打印错误消息并继续仿真而没有声音。
有效的全局选项有 ididentifier 标识音频后端。 timer-periodperiod 设置音频子系统使用的定时器周期以微秒为单位。默认值为1000010毫秒。 in|out.mixing-engineon|off 使用QEMU的混音引擎在QEMU内部混合所有流并在后端不支持时转换音频格式。当关闭时fixed-settings也必须关闭。注意禁用此选项意味着所选后端必须支持多流和虚拟卡使用的音频格式否则将没有声音。不建议禁用此选项除非您想使用5.1或7.1音频因为混音引擎仅支持单声道和立体声。默认值为开启。 in|out.fixed-settingson|off 为主机音频使用固定设置。关闭时将根据客户机打开声卡的方式更改。在这种情况下不能指定频率、通道或格式。默认值为开启。 in|out.frequencyfrequency 使用固定设置时指定使用的频率。默认值为44100Hz。 in|out.channelschannels 使用固定设置时指定使用的通道数。默认值为2立体声。 in|out.formatformat 使用固定设置时指定使用的采样格式。有效值为s8、s16、s32、u8、u16、u32、f32。默认值为s16。 in|out.voicesvoices 指定使用的声音数。默认值为1。 in|out.buffer-lengthusecs 设置缓冲区大小以微秒为单位。 in|out.buffer-lengthusecs 设置缓冲区大小以微秒为单位。 -audiodev none,idid[,prop[value][,…]] 创建一个丢弃所有输出的虚拟后端。此后端没有特定的属性。 -audiodev alsa,idid[,prop[value][,…]] 使用ALSA创建后端。此后端仅在Linux上可用。ALSA特定选项包括 in|out.devdevice 指定用于输入和/或输出的ALSA设备。默认值为default。 in|out.period-lengthusecs 设置周期长度以微秒为单位。 in|out.try-pollon|off 尝试使用设备的轮询模式。默认值为on。 thresholdthreshold 播放开始时的阈值以微秒为单位。默认值为0。 -audiodev coreaudio,idid[,prop[value][,…]] 使用Apple的Core Audio创建后端。此后端仅在Mac OS上可用并且仅支持播放。
Core Audio特定选项包括 in|out.buffer-countcount 在播放时增加额外的延迟以微秒为单位。默认值为1000010毫秒。 -audiodev oss,idid[,prop[value][,…]] 使用OSS创建后端。此后端在大多数类Unix系统上可用。
OSS特定选项包括 in|out.devdevice 指定要使用的OSS设备的文件名。默认值为/dev/dsp。 in|out.buffer-countcount 设置缓冲区的数量。 in|out.try-pollon|off 尝试使用设备的轮询模式。默认值为on。 try-mmapon|off 尝试使用内存映射设备访问。默认值为off。 exclusiveon|off 以独占模式打开设备在这种情况下vmix将无法工作。默认值为off。 dsp-policypolicy 设置定时策略0到10之间的值数字越小延迟越小但CPU使用率越高。使用-1以使用buffer和buffer-count指定的缓冲区大小。如果没有OSS 4此选项将被忽略。默认值为5。 -audiodev pa,idid[,prop[value][,…]] 使用PulseAudio创建后端。此后端在大多数系统上可用。
PulseAudio特定选项包括 serverserver 设置要连接的PulseAudio服务器。 in|out.namesink 使用指定的源/接收器进行录音/播放。 in|out.latencyusecs 期望的延迟以微秒为单位。PulseAudio服务器将尝试满足此值但实际延迟可能更低或更高。 -audiodev pipewire,idid[,prop[value][,…]] 使用PipeWire创建后端。此后端在大多数系统上可用。
PipeWire特定选项包括 in|out.latencyusecs 期望的延迟以微秒为单位。 in|out.namesink 使用指定的源/接收器进行录音/播放。 in|out.stream-namename 指定PipeWire流的名称。 -audiodev sdl,idid[,prop[value][,…]] 使用SDL创建后端。此后端在大多数系统上可用但如果可能您应使用平台的本地后端。
SDL特定选项包括 in|out.buffer-countcount 设置缓冲区的数量。 -audiodev sndio,idid[,prop[value][,…]] 使用SNDIO创建后端。此后端在OpenBSD和大多数其他类Unix系统上可用。
SNDIO特定选项包括 in|out.devdevice 指定用于输入和/或输出的SNDIO设备。默认值为default。 in|out.latencyusecs 设置期望的周期长度以微秒为单位。 -audiodev spice,idid[,prop[value][,…]] 创建一个通过SPICE发送音频的后端。此后端需要-spice选项在这种情况下会自动选择因此通常可以忽略此选项。此后端没有特定属性。 -audiodev wav,idid[,prop[value][,…]] 创建一个将音频写入WAV文件的后端。
后端特定选项包括 pathpath 将录制的音频写入指定文件。默认值为qemu.wav。 -device driver[,prop[value][,…]] 添加设备驱动程序。propvalue设置驱动程序属性。有效属性取决于驱动程序。要获取可能的驱动程序和属性的帮助请使用-device help和-device driver,help。 -device ipmi-bmc-sim,idid[,prop[value][,…]] 添加一个IPMI BMC。这是一个硬件管理接口处理器的模拟通常位于系统上。它提供看门狗以及重置和电源控制系统的能力。您需要将其连接到IPMI接口以使其有用。
用于BMC的IPMI从属地址。默认值为0x20。此地址是BMC在管理控制器的I2C网络上的地址。如果您不知道这意味着什么可以安全地忽略它。 idid 用于接口使用此设备的BMC ID。 slave_addrval 定义用于BMC的从属地址。默认值为0x20。 sdrfilefile 包含原始传感器数据记录SDR数据的文件。默认值为无。 fruareasizeval 可替换单元FRU区域的大小。默认值为1024。 frudatafilefile 包含原始可替换单元FRU清单数据的文件。默认值为无。 guiduuid BMC的GUID值采用标准UUID格式。如果设置此值则向BMC发送“获取GUID”命令将返回它。否则“获取GUID”将返回错误。 -device ipmi-bmc-extern,idid,chardevid[,slave_addrval] 添加与外部IPMI BMC模拟器的连接。与本地仿真BMC不同此项连接到提供IPMI服务的外部实体。
连接到外部BMC模拟器。如果这样做强烈建议使用“reconnect”字符设备选项如果连接丢失则重新连接到模拟器。请注意如果不谨慎使用这可能成为安全问题因为接口能够发送重置、NMI和关闭VM的命令。最好是QEMU连接到在localhost上运行在安全端口的外部模拟器这样模拟器和QEMU都不会暴露在任何外部网络上。
有关外部接口的更多详细信息请参见OpenIPMI库中的“lanserv/README.vm”文件。 -device isa-ipmi-kcs,bmcid[,ioportval][,irqval] 在ISA总线上添加一个KCS IPMI接口。如果合适还会添加相应的ACPI和SMBIOS条目。 bmcid 要连接的BMC可以是上面的ipmi-bmc-sim或ipmi-bmc-extern之一。 ioportval 定义接口的I/O地址。默认值为0xca0用于KCS。 irqval 定义要使用的中断。默认值为5。要禁用中断请将其设置为0。 -device isa-ipmi-bt,bmcid[,ioportval][,irqval] 与KCS接口类似但定义了一个BT接口。默认端口为0xe4默认中断为5。 -device pci-ipmi-kcs,bmcid 在PCI总线上添加一个KCS IPMI接口。 bmcid 要连接的BMC可以是上面的ipmi-bmc-sim或ipmi-bmc-extern之一。 -device pci-ipmi-bt,bmcid 与KCS接口类似但在PCI总线上定义了一个BT接口。 -device intel-iommu[,option…] 仅支持在-machine q35下使用它将在客户机中启用Intel VT-d仿真。支持以下选项 intremapon|off默认auto 这启用中断重映射功能。它需要启用完整的x2apic。目前仅支持kvm kernel-irqchip模式off或split尚不支持完整的kernel-irqchip。默认值为“auto”将由kernel-irqchip模式决定。 caching-modeon|off默认off 这为VT-d仿真设备启用缓存模式。当启用缓存模式时每个客户机DMA缓冲区映射将以同步方式从客户机IOMMU驱动程序生成IOTLB无效到vIOMMU设备。对于-device vfio-pci与VT-d设备一起工作是必需的因为主机分配的设备需要在客户机DMA开始之前在主机上设置DMA映射。 device-iotlbon|off默认off 这为仿真的VT-d设备启用设备IOTLB功能。目前virtio/vhost应该是此参数的唯一实际用户设备上配置的atson与之配对。 aw-bits39|48默认39 这决定了IOVA地址空间的地址宽度。地址空间对于3级IOMMU页表具有39位宽度对于4级IOMMU页表具有48位宽度。
有关QEMU中VT-d仿真的一般场景请参阅维基页面https://wiki.qemu.org/Features/VT-d。 -device virtio-iommu-pci[,option…] 仅支持在-machine q35x86_64和-machine virtARM下使用。支持以下选项 granuleval可能的值为4k、8k、16k、64k和host默认host 这决定了virtio-iommu公开的默认粒度。如果为host则粒度与主机页面大小匹配。 aw-bitsval值在32到64之间默认取决于机器 这决定了IOVA地址空间的地址宽度。 -name name 设置客户机的名称。该名称将显示在SDL窗口标题中。该名称也将用于VNC服务器。还可以选择在Linux中设置顶部可见的进程名称。还可以在Linux上启用单独线程的命名以帮助调试。 -uuid uuid 设置系统UUID。 未完待续。。