欢迎光临散文网 会员登陆 & 注册

[QEMU]qemu-system-x86-64的常用命令

2021-08-19 15:39 作者:-小白之家-  | 我要投稿


 qemu-system-x86_64     

 qemu-system-i386

 #构架

 

 -name  

 #虚拟机名称

 

 -machine q35,vmport=off,dump-guest-core=off,mem-merge=off,hmat=on,usb=off,memory-backend=pc.ram  

 #机型,VMWareIO端口仿真,在核心转储中包含来宾内存,内存合并支持,ACPI异构内存属性表,USB设备,内存

 

 -object memory-backend-file,id=pc.ram,size=512M,mem-path=/hugetlbfs,prealloc=on,share=on

 #允许使用内存后端作为主 RAM

 #mem-path 从路径中临时创建的文件分配来宾 RAM

 

 -m 512M

 #内存

 #例如,以下命令行将客户机启动 RAM 大小设置为 1GB,创建 3个插槽以热插拔额外内存,并将客户机可以达到的最大内存设置为 4GB:

 #-m 1G,slots=3,maxmem=4G

  

 --accel tcg,thread=multi,kernel-irqchip=off

 #启用tcg加速器,启用多线程,控制KVM内核irqchip支持

 

 -smp cpus=8,cores=4,sockets=2,threads=1

 #模拟带有n最初出现在机器类型板上的“ ”个 CPU的 SMP 系统

 #核心,插槽,线程

 #sockets * cores * die * threads 的总和必须等于最大 CPU 数量

 

 -boot menu=on,strict=off 

 #交互式引导菜单/提示,严格启动

 

 -mem-prealloc

 #使用 -mem-path 时预分配内存

 

 -k en-us

 #使用键盘布局语言en-us

 #可用的布局是:

 #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



声音设备

 -audiodev alsa,id=alsa1,in.channels=2,in.frequency=44100,out.buffer-length=5124,in.format=s16 

 #添加由 id 标识的新音频后端驱动程序。有全局和驱动程序特定的属性

 

 # id=identifier

 # #标识音频后端。

 

 # timer-period=period

 # #以微秒为单位设置音频子系统使用的计时器周期。默认值为 10000(10 毫秒)。

 

 # in|out.mixing-engine=on|off

 # #使用 QEMU 的混合引擎混合 QEMU 内的所有流,并在后端不支持时转换音频格式。关闭时,固定设置也必须关闭。请注意,禁用此选项意味着所选后端必须支持多个流和虚拟卡使用的音频格式,否则您将没有声音。除非您想使用 5.1 或 7.1 音频,否则不建议禁用此选项,因为混音引擎仅支持单声道和立体声音频。默认开启。

 

 # in|out.fixed-settings=on|off #对主机音频使用固定设置。关闭时,它将根据客人打开声卡的方式而改变。在这种情况下,您不得指定频率、频道或格式。默认开启。

 

 # in|out.frequency=frequency

 # #指定使用固定设置时要使用的频率。默认值为 44100Hz。

 

 # in|out.channels=channels

 # #指定使用固定设置时要使用的通道数。默认值为 2(立体声)。

 

 # in|out.format=format

 # #指定使用固定设置时要使用的样本格式。有效值为:s8、s16、s32、u8、u16、 u32、f32。默认为s16。

 

 # in|out.voices=voices

 # #指定要使用的声音数量。默认值为 1。

 

 # in|out.buffer-length=usecs

 # #以微秒为单位设置缓冲区的大小。

 

 ###ALSA 的特定选项是:


 # in|out.dev=device

 # #指定用于输入和/或输出的 ALSA 设备。默认为default。

 

 # in|out.period-length=usecs

 # #以微秒为单位设置周期长度。

 

 # in|out.try-poll=on|off

 # #尝试对设备使用轮询模式。默认开启。

 

 # threshold=threshold

 # #播放开始时的阈值(以微秒为单位)。默认值为 0。



设备

 -device VGA,id=video0,vgamem_mb=256

 #标准的VGA,共享显存256MB

 

 -device intel-hda

 -device hda-duplex,audiodev=alsa1 

 #-device driver[,prop[=value][,...]]

 #添加设备驱动程序。prop=value 设置驱动程序属性。有效属性取决于驱动程序。要获得有关可能的驱动程序和属性的帮助,请使用-device help-device driver,help


 -uuid 1f8e6f7e-5a70-4780-89c1-464dc0e7f308 

 #设置系统 UUID

 

 

磁盘

 ##-cdrom你可以使用:

 -drive file=file,index=2,media=cdrom


 ##代替-hda, -hdb, -hdc, -hdd,您可以使用:

 -drive file=file,index=0,media=disk 

 -drive file=file,index=1,media=disk 

 -drive file=file,index=2 ,media=disk 

 -drive file=file,index=3,media=disk


 ##您可以将 CDROM 连接到 ide0 的从机:

 -drive file=file,if=ide,index=1,media=cdrom

 #如果不指定“file=”参数,则定义一个空驱动器:

 -drive if=ide,index=1,media=cdrom

 

 #代替-fda, -fdb,您可以使用:

 -drive file=file,index=0,if=floppy 

 -drive file=file,index=1,if=floppy


 -drive id=disk,file=镜像文件,if=none,cache=none,aio=native

 -device ahci,id=ahci 

 -device ide-hd,drive=disk,bus=ahci.0

 #SATA

 

 (1):

 -device virtio-blk-pci,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 

 -drive file=镜像文件,if=none,id=drive-virtio-disk0

 (2):

 -drive file=镜像文件,format=qcow2,if=virtio,id=drive-virtio-disk0

 #virtio

 

 -mtdblock file

 #使用文件作为板载闪存映像。

 

 -sd file

 #使用文件作为 SecureDigital 卡图像。

 

 -pflash file

 #使用文件作为并行闪存映像

 

 -usb

 #在带有板载 USB 主机控制器的机器类型上启用 USB 仿真(如果默认情况下未启用)。请注意,板载 USB 主机控制器可能不支持 USB 3.0。在这种情况下, 可以在带有 PCI 的机器上使用。-device qemu-xhci

 

 -usbdevice devname

 #添加 USB 设备 devname,并在可能和必要时启用板载 USB 控制器(就像可以通过 完成一样 )。请注意,此选项主要是为了方便用户。通过选择 USB 主机控制器(如有必要)和所需的 USB 设备,可以实现更细粒度的控制。例如,可以使用 将 USB 鼠标连接到 USB 3.0 控制器来代替使用(至少在支持 PCI 并且默认情况下还没有启用 USB 控制器的机器上)。有关详细信息,请参阅《系统仿真用户指南》中有关连接 USB 设备的章节 。devname 的可能设备是:-machine usb=on-device-usbdevice mouse-device qemu-xhci -device usb-mouse


    braille

   #盲文设备。这将使用 BrlAPI 在真实或伪造的设备上显示盲文输出(即它还会braille在usb-brailleUSB 设备旁边自动创建相应的chardev )。

    keyboard

   #标准 USB 键盘。将覆盖 PS/2 键盘(如果存在)。

    mouse

   #虚拟鼠标。这将在激活时覆盖 PS/2 鼠标模拟。

    tablet

   #使用绝对坐标的指针设备(如触摸屏)。这意味着 QEMU 能够报告鼠标位置而无需抓住鼠标。激活时也会覆盖 PS/2 鼠标模拟。

    wacom-tablet

   #Wacom PenPartner USB 平板电脑。

 

 

显示选项

 -display type

 #选择要使用的显示类型。此选项替代旧样式 -sdl/-curses/... 选项。使用列出可用的显示类型。类型的有效值为-display help


 spice-app[,gl=on|off]

 #启动 QEMU 作为 Spice 服务器并启动默认的 Spice 客户端应用程序。Spice 服务器将重定向串行控制台和 QEMU 监视器。(从 4.0 开始)


 sdl

 #通过 SDL 显示视频输出(通常在单独的图形窗口中;有关其他可能性,请参阅 SDL 文档)。有效参数为:


  alt_grab=on|off :使用 Control+Alt+Shift-g 切换鼠标抓取

  ctrl_grab=on|off : 使用 Right-Control-g 切换鼠标抓取

  gl=on|off|core|es : 使用 OpenGL 进行显示

  show-cursor=on|off : 强制显示鼠标光标

  window-close=on|off : 允许使用窗口关闭按钮退出 qemu


 gtk

 #在 GTK 窗口中显示视频输出。此界面提供下拉菜单和其他 UI 元素,用于在运行时配置和控制 VM。有效参数为:


  full-screen=on|off : 以全屏模式启动

  gl=on|off : 使用 OpenGL 进行显示

  grab-on-hover=on|off :在鼠标悬停时抓取键盘输入

  show-cursor=on|off : 强制显示鼠标光标

  window-close=on|off : 允许使用窗口关闭按钮退出 qemu


 curses[,charset=<encoding>]

 #通过curses 显示视频输出。对于支持文本模式的图形设备模型,QEMU 可以使用 curses/ncurses 界面显示此输出。当图形设备处于图形模式或图形设备不支持文本模式时,不显示任何内容。一般只有 VGA 设备型号支持文本模式。来宾使用的字体字符集可以通过charset选项指定,例如 charset=CP850IBM CP850 编码。默认值为 CP437.

 

 egl-headless[,rendernode=<file>]

 #将所有 OpenGL 操作卸载到本地 DRI 设备。对于任何图形显示,该显示需要与 VNC 或 SPICE 显示配对。


 vnc=<display>

 #在显示 <display> 上启动 VNC 服务器


 none

 #不显示视频输出。来宾仍会看到模拟图形卡,但不会向 QEMU 用户显示其输出。此选项与 -nographic 选项的不同之处在于它仅影响对视频输出所做的工作;-nographic 还会更改串行和并行端口数据的目的地。


-nographic

#通常,如果 QEMU 编译时支持图形窗口,它会在一个窗口中显示输出,例如来宾图形、来宾控制台和 QEMU 监视器。使用此选项,您可以完全禁用图形输出,使 QEMU 成为一个简单的命令行应用程序。模拟串行端口在控制台上重定向并与监视器混合(除非明确重定向到其他地方)。因此,您仍然可以使用 QEMU 来调试带有串行控制台的 Linux 内核。使用 Ca h 帮助在控制台和监视器之间切换。


-curses

#通常,如果 QEMU 编译时支持图形窗口,它会在一个窗口中显示输出,例如来宾图形、来宾控制台和 QEMU 监视器。使用此选项,QEMU 可以在文本模式下使用 Curses/ncurses 界面显示 VGA 输出。图形模式下不显示任何内容。

-alt-grab

#使用 Ctrl-Alt-Shift 来抓取鼠标(而不是 Ctrl-Alt)。请注意,这也会影响特殊键(用于全屏、监视器模式切换等)。


-ctrl-grab

#使用 Right-Ctrl 来抓取鼠标(而不是 Ctrl-Alt)。请注意,这也会影响特殊键(用于全屏、监视器模式切换等)。


-no-quit

#禁用窗口关闭功能(仅限 SDL 和 GTK)。此选项已弃用,请改用。-display ...,window-close=off


-sdl

#启用 SDL。


-spice option[,option[,...]]

#启用 spice 远程桌面协议。有效选项是


  port=<nr>

  #设置 TCP 端口 spice 正在侦听明文通道。

  addr=<addr>

  #设置香料正在监听的 IP 地址。默认为任何地址。

  ipv4=on|off; ipv6=on|off;unix=on|off

  #强制使用指定的 IP 版本。

  password=<string>

  #设置验证所需的密码。此选项已弃用且不安全,因为它使密码在进程列表中可见。使用password-secret 来代替。

  password-secret=<secret-id>

  #设置secret包含您需要验证的密码的对象的 ID 。

  sasl=on|off

  #要求客户端使用 SASL 对 spice 进行身份验证。所使用的身份验证方法的确切选择由“qemu”服务的系统/用户的 SASL 配置文件控制。这通常位于 /etc/sasl2/qemu.conf 中。如果以非特权用户身份运行 QEMU,可以使用环境变量 SASL_CONF_PATH 使其搜索服务配置的备用位置。虽然一些 SASL 身份验证方法也可以提供数据加密(例如 GSSAPI),但建议始终将 SASL 与 'tls' 和 'x509' 设置结合使用,以启用 SSL 和服务器证书。这可确保数据加密防止身份验证凭据的泄露。

  disable-ticketing=on|off

  #允许客户端无需身份验证即可连接。

  disable-copy-paste=on|off

  #禁用客户端和来宾之间的复制粘贴。

  disable-agent-file-xfer=on|off

  #在客户端和来宾之间禁用基于 spice-vdagent 的 file-xfer。

  tls-port=<nr>

  #设置 TCP 端口 spice 正在侦听加密通道。

  x509-dir=<dir>

  #设置 x509 文件目录。期望与 -vnc $display,x509=$dir 相同的文件名

  x509-key-file=<file>; x509-key-password=<file>; x509-cert-file=<file>; x509-cacert-file=<file>;x509-dh-key-file=<file>

  #x509 文件名也可以单独配置。

  tls-ciphers=<list>

  #指定要使用的密码。

  tls-channel=[main|display|cursor|inputs|record|playback]; plaintext-channel=[main|display|cursor|inputs|record|playback]

  #强制使用或不使用 TLS 加密的特定通道。可以多次指定选项以配置多个通道。特殊名称“default”可用于设置默认模式。对于没有明确强制进入一种模式的频道,允许 spice 客户端随意选择 tls/明文。

  image-compression=[auto_glz|auto_lz|quic|glz|lz|off]

  #配置图像压缩(无损)。默认为 auto_glz。

  jpeg-wan-compression=[auto|never|always]; zlib-glz-wan-compression=[auto|never|always]

  #配置 wan 图像压缩(慢速链接有损)。默认为自动。

  streaming-video=[off|all|filter]

  #配置视频流检测。默认关闭。

  agent-mouse=[on|off]

  #通过 vdagent 启用/禁用传递鼠标事件。默认开启。

  playback-compression=[on|off]

  #启用/禁用音频流压缩(使用 celt 0.5.1)。默认开启。

  seamless-migration=[on|off]

  #启用/禁用 spice 无缝迁移。默认关闭。

  gl=[on|off]

  #启用/禁用 OpenGL 上下文。默认关闭。

  rendernode=<file>

  #用于 OpenGL 渲染的 DRM 渲染节点。如果未指定,它将选择第一个可用的。(从 2.9 开始)


-portrait

 #将图形输出向左旋转 90 度(仅限 PXA LCD)。

-rotate deg

 #将图形输出向左旋转一些度(仅限 PXA LCD)。

-vga type

 #选择要模拟的 VGA 卡类型。类型的有效值为


  cirrus

  #Cirrus Logic GD5446 显卡。从 Windows 95 开始的所有 Windows 版本都应识别并使用此图形卡。为获得最佳性能,请在来宾和主机操作系统中使用 16 位色深。(这张卡是 QEMU 2.2 之前的默认卡)

  std

  #带有 Bochs VBE 扩展的标准 VGA 卡。如果您的来宾操作系统支持 VESA 2.0 VBE 扩展(例如 Windows XP)并且您想要使用高分辨率模式(>= 1280x1024x16),那么您应该使用此选项。(这张卡是 QEMU 2.2 以来的默认卡)

  vmware

  #VMWare SVGA-II 兼容适配器。如果您有足够新的 XFree86/XOrg 服务器或带有此卡驱动程序的 Windows 客户机,请使用它。

  qxl

  #QXL 半虚拟显卡。它与 VGA 兼容(包括 VESA 2.0 VBE 支持)。虽然安装了 qxl 来宾驱动程序,但效果最好。使用 spice 协议时的推荐选择。

  tcx

  #(仅限 sun4m)Sun TCX 帧缓冲区。这是 sun4m 机器的默认帧缓冲区,并以 1024x768 的固定分辨率提供 8 位和 24 位颜色深度。

  cg3

  #(仅限 sun4m)Sun cgthree 帧缓冲区。这是一个简单的 8 位帧缓冲区,适用于 sun4m 机器,提供 1024x768 (OpenBIOS) 和 1152x900 (OBP) 两种分辨率,适用于希望运行较旧 Solaris 版本的人。

  virtio

  #Virtio 显卡。

  none

  #禁用 VGA 卡。


-full-screen

 #全屏启动。

-g 宽度x高度[x深度]

 #设置初始图形分辨率和深度(仅限 PPC、SPARC)。

 #对于 PPC,默认值为 800x600x32。

 #对于带有 TCX 图形设备的 SPARC,默认为 1024x768x8,可选择 1024x768x24。对于 cgthree,默认为 1024x768x8,对于希望使用 OBP 的人,可以选择 1152x900x8。


-vnc display[,option[,option[,...]]]

 #通常,如果 QEMU 编译时支持图形窗口,它会在一个窗口中显示输出,例如来宾图形、来宾控制台和 QEMU 监视器。使用此选项,您可以让 QEMU 侦听 VNC 显示并通过 VNC 会话重定向 VGA 显示。使用此选项(选项)时启用 USB 平板设备非常有用。使用 VNC 显示时,如果不使用 en-us ,则必须使用该参数来设置键盘布局。显示的有效语法是-device usb-tablet-k


  to=L

  #使用此选项,QEMU 将尝试下一个可用的 VNC 显示,直到数字 L,如果最初定义的“-vnc 显示”不可用,例如端口 5900+display 已被另一个应用程序使用。默认情况下,to=0。

  host:d

  #TCP 连接将只允许来自显示器上的主机 d。按照惯例,TCP 端口是 5900+d。或者,可以省略主机,在这种情况下,服务器将接受来自任何主机的连接。

  unix:path

  #将允许通过 UNIX 域套接字进行连接,其中路径是用于侦听连接的 Unix 套接字的位置。

  none

  #VNC 已初始化但未启动。monitorchange 命令可用于稍后启动 VNC 服务器。

  #在显示值之后可能有一个或多个选项标志,以逗号分隔。有效选项是


  reverse=on|off

  #通过“反向”连接连接到侦听 VNC 客户端。客户端由显示器指定。对于反向网络连接 (host:d,``reverse``),d 参数是 TCP 端口号,而不是显示号。

  websocket=on|off

  #打开一个额外的 TCP 侦听端口,专用于 VNC Websocket 连接。如果给出了裸 websocket 选项,则 Websocket 端口为 5700+display。可以使用语法websocket=port指定替代端口。

  #如果指定了主机,则只允许来自该主机的连接。可以使用语法websocket=host:port独立控制 websocket 侦听地址。

  #如果未提供 TLS 凭据,则 websocket 连接以未加密模式运行。如果提供了 TLS 凭据,则 websocket 连接需要加密的客户端连接。


  password=on|off

  #要求对客户端连接使用基于密码的身份验证。

  #必须使用QEMU Monitor 中的set_password 命令单独设置密码。更改密码的语法是: 其中 <protocol> 可以是“vnc”或“spice”。set_password <protocol> <password>

  #如果您想更改 <protocol> 密码过期时间,您应该使用 过期时间可以是以下选项之一:now、never、+seconds 或 UNIX 过期时间,例如 +60 使密码在 60 秒后过期,或1335196800 使密码在“Mon Apr 23 12:00:00 EDT 2012”(此日期和时间的 UNIX 时间)过期。expire_password <protocol> <expiration-time>

  #您还可以使用关键字“now”或“never”作为过期时间,以允许 <protocol> 密码立即过期或永不过期。

  

  password-secret=<secret-id>

  #要求对客户端连接使用基于密码的身份验证,使用由secret 标识的对象提供的密码secret-id。

  

  tls-creds=ID

  #提供一组用于保护 VNC 服务器的 TLS 凭据的 ID。它们将适用于普通 VNC 服务器套接字和 websocket 套接字(如果启用)。设置 TLS 凭据将导致 VNC 服务器套接字启用 VeNCrypt 身份验证机制。凭证应该是之前使用参数创建的。-object tls-creds


  tls-authz=ID

  #提供 QAuthZ 授权对象的 ID,将根据该 ID 验证客户端的 x509 专有名称。此对象仅在使用时解析,因此可以在 VNC 服务器处于活动状态时动态删除和重新创建。如果丢失,它将默认拒绝访问。


  sasl=on|off

  #要求客户端使用 SASL 与 VNC 服务器进行身份验证。所使用的身份验证方法的确切选择由“qemu”服务的系统/用户的 SASL 配置文件控制。这通常位于 /etc/sasl2/qemu.conf 中。如果以非特权用户身份运行 QEMU,可以使用环境变量 SASL_CONF_PATH 使其搜索服务配置的备用位置。虽然一些 SASL 身份验证方法也可以提供数据加密(例如 GSSAPI),但建议始终将 SASL 与 'tls' 和 'x509' 设置结合使用,以启用 SSL 和服务器证书。这可确保数据加密防止身份验证凭据的泄露。有关使用 SASL 身份验证的详细信息,请参阅系统仿真用户指南中的 VNC 安全部分。


  sasl-authz=ID

  #提供将验证客户端 SASL 用户名的 QAuthZ 授权对象的 ID。此对象仅在使用时解析,因此可以在 VNC 服务器处于活动状态时动态删除和重新创建。如果丢失,它将默认拒绝访问。

 

 acl=on|off

  #根据 x509 专有名称和 SASL 用户名启用客户端授权的旧方法。它导致创建两个authz-listID 为vnc.username和 的对象 vnc.x509dname。这些对象的规则必须使用 HMP ACL 命令进行配置。

  #此选项已弃用,不应再使用。新的 sasl-authz和tls-authz选项是替代品。


  lossy=on|off

  #启用有损压缩方法(渐变、JPEG 等)。如果设置了此选项,VNC 客户端可能会根据其编码设置接收有损帧缓冲区更新。启用此选项可以以牺牲质量为代价节省大量带宽。


  non-adaptive=on|off

  #禁用自适应编码。默认情况下启用自适应编码。自适应编码将尝试检测频繁更新的屏幕区域,并使用有损编码(如 JPEG)在这些区域中发送更新。这对于在播放视频时节省带宽非常有帮助。禁用自适应编码可以恢复像 Tight 这样的编码的原始静态行为。


  share=[allow-exclusive|force-shared|ignore]

  #设置显示共享策略。'allow-exclusive' 允许客户端请求独占访问。正如 rfb 规范所建议的,这是通过丢弃其他连接来实现的。并行连接多个客户端需要所有客户端请求共享会话(vncviewer:-shared 开关)。这是默认设置。'force-shared' 禁用独占客户端访问。对于共享桌面会话很有用,您不希望有人忘记指定 -shared 断开其他所有人的连接。'ignore' 完全忽略共享标志并允许每个人无条件连接。不符合 rfb 规范,而是传统的 QEMU 行为。


  key-delay-ms

  #为按键按下和按键按下事件设置键盘延迟,以毫秒为单位。默认值为 10。键盘是低带宽设备,因此这种减速可以帮助设备和来宾跟上,并且在事件大量到达时不会丢失事件。后者的可能原因是不稳定的网络连接或用于自动化测试的脚本。


  audiodev=audiodev

  #VNC 客户端请求音频传输时使用指定的audiodev。当不使用 -audiodev 参数时,必须省略此选项,否则必须存在并指定有效的 audiodev。


  power-control=on|off

  #允许远程客户端发出关机、重启或重置电源控制请求。

 



仅限 i386 目标


-win2k-hack

  #在安装 Windows 2000 时使用它以避免磁盘已满错误。安装 Windows 2000 后,您不再需要此选项(此选项会减慢 IDE 传输速度)。

-no-fd-bootchk

  #在 BIOS 中禁用软盘的启动签名检查。可能需要从旧软盘启动。

-no-acpi

  #禁用 ACPI(高级配置和电源接口)支持。如果您的来宾操作系统抱怨 ACPI 问题(仅限 PC 目标机器),请使用它。

-no-hpet

  #禁用 HPET 支持。

-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n] [,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]

  #从指定文件添加具有指定标题字段和上下文的 ACPI 表。对于 file=,从指定文件中获取整个 ACPI 表,包括所有 ACPI 标头(可能被其他选项覆盖)。对于 data=,仅使用表的数据部分,所有标题信息都在命令行中指定。如果将 SLIC 表提供给 QEMU,则 SLIC 的 oem_id 和 oem_table_id 字段将覆盖 RSDT 和 FADT(又名 FACP)中的相同字段,以确保该字段匹配 Microsoft SLIC 规范和 ACPI 规范所需的字段。



SMBIOS

-smbios file=binary

  #从二进制文件加载 SMBIOS 条目。

-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d][,uefi=on|off]

  #指定 SMBIOS 类型 0 字段

-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str][,uuid=uuid][,sku=str][,family=str]

  #指定 SMBIOS 类型 1 字段

-smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str][,asset=str][,location=str]

  #指定 SMBIOS 类型 2 字段

-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str][,sku=str]

  #指定 SMBIOS 类型 3 字段

-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str][,asset=str][,part=str]

  #指定 SMBIOS 类型 4 字段

-smbios type=11[,value=str][,path=filename]

  #指定 SMBIOS 类型 11 字段

  #此参数可以重复多次,并按解析顺序添加值。鼓励打算使用 OEM 字符串数据的应用程序使用其应用程序名称作为值字符串的前缀。这有助于同时为多个应用程序传递信息。 #该value=str语法提供内联字符串数据,而该path=filename语法从磁盘上的文件加载数据。请注意,该文件不允许包含任何 NUL 字节。

  #无论是value和path选项可以被重复多次,并在它们出现的顺序将被添加到SMBIOS表。

  #请注意,在 x86 架构上,所有 SMBIOS 表的总大小限制为 65535 字节。因此 OEM 字符串数据不适合将大量数据传递给来宾。相反,它应该被用作一个指示符来通知来宾在何处定位真实数据集,例如,通过指定块设备的序列号。

-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str][,asset=str][,part=str][,speed=%d]

  #指定 SMBIOS 类型 17 字段

-smbios type=41[,designation=str][,kind=str][,instance=%d][,pcidev=str]

  #指定 SMBIOS 类型 41 字段

  #这个论点可以重复多次。它的主要用途是允许像enoX在 Linux上一样创建网络接口,其中 X 是实例编号,而不是名称取决于 PCI 总线上的接口位置。 

 

 

网络选项

-nic [tap|bridge|user|l2tpv3|vde|netmap|vhost-user|socket][,...][,mac=macaddr][,model=mn]

  #此选项是一次性配置板载(默认)来宾 NIC 硬件和主机网络后端的快捷方式。主机后端选项与-netdev下面的相应选项相同 。来宾 NIC 模型可以使用 model=modelname. 使用model=help列出可用的设备类型。硬件 MAC 地址可以用 设置mac=macaddr。

 例子

  qemu-system-x86_64 -netdev user,id=n1,ipv6=off -device e1000,netdev=n1,mac=52:54:98:76:54:32 

  qemu-system-x86_64 -nic user,ipv6=off,模型=e1000,mac=52:54:98:76:54:32

 

-nic none

  #表示不应配置任何网络设备。它用于覆盖默认配置(带有“用户”主机网络后端的默认 NIC),如果没有提供其他网络选项,则激活该配置。

  

-netdev user,id=id[,option][,option][,...]

  #配置无需管理员权限即可运行的用户模式主机网络后端。有效的选项是:

  id=id

  #分配符号名称以在监视器命令中使用。

  ipv4=on|off and ipv6=on|off

  #指定必须启用 IPv4 或 IPv6。如果两者均未指定,则启用两个协议。

  net=addr[/mask]

  #设置访客将看到的 IP 网络地址。可以选择指定网络掩码,以 abcd 形式或有效最高位的数量。默认值为 10.0.2.0/24。

  host=addr

  #指定主机的访客可见地址。默认为访客网络中的第二个 IP,iexxx2。

  ipv6-net=addr[/int]

  #设置来宾将看到的 IPv6 网络地址(默认为 fec0::/64)。网络前缀以通常的十六进制 IPv6 地址表示法给出。前缀大小是可选的,以有效的最高位的数量给出(默认为 64)。

  ipv6-host=addr

  #指定主机的访客可见 IPv6 地址。默认为访客网络中的第二个 IPv6,即 xxxx::2。

  restrict=on|off

  #如果启用此选项,访客将被隔离,即它无法联系主机并且没有访客 IP 数据包将通过主机路由到外部。此选项不影响任何明确设置的转发规则。

  hostname=name

  #指定内置 DHCP 服务器报告的客户端主机名。

  dhcpstart=addr

  #指定内置 DHCP 服务器可以分配的 16 个 IP 中的第一个。默认是访客网络中的第 15 到 31 个 IP,即 xxx15 到 xxx31。

  dns=addr

  #指定虚拟名称服务器的访客可见地址。地址必须与主机地址不同。默认为访客网络中的第三个 IP,iexxx3。

  ipv6-dns=addr

  #指定 IPv6 虚拟名称服务器的访客可见地址。地址必须与主机地址不同。默认为访客网络中的第三个 IP,即 xxxx::3。

  dnssearch=domain

  #为内置 DHCP 服务器发送的域搜索列表提供一个条目。通过多次指定此选项,可以传输多个域后缀。如果支持,这将导致来宾自动尝试附加给定的域后缀,以防无法解析域名。


例子:

  qemu-system-x86_64 -nic user,dnssearch=mgmt.example.org,dnssearch=example.org

  

   domainname=domain

   #指定内置DHCP服务器上报的客户端域名。

   tftp=dir

   #使用用户模式网络堆栈时,激活内置 TFTP 服务器。dir 中的文件将作为 TFTP 服务器的根目录公开。来宾上的TFTP客户端必须以二进制方式配置(使用binUnix TFTP客户端的命令)。

   tftp-server-name=name

   #在 BOOTP 回复中,广播名称为“TFTP 服务器名称”(RFC2132 选项 66)。这可用于建议来宾从与主机地址不同的服务器加载引导文件或配置。

   bootfile=file

   #使用用户模式网络堆栈时,广播文件作为 BOOTP 文件名。结合tftp,这可用于从本地目录通过网络引导来宾。


示例(使用 pxelinux):

  qemu-system-x86_64 -hda linux.img -boot n -device e1000,netdev=n1 

  -netdev user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0

  

   smb=dir[,smbserver=addr]

   #使用用户模式网络堆栈时,激活内置 SMB 服务器,以便 Windows 操作系统可以dir透明地访问主机文件 。SMB服务器的IP地址可以设置为addr。默认使用访客网络中的第 4 个 IP,即 iexxx4。

   #在来宾 Windows 操作系统中,该行:


   10.0.2.4 smbserver

   #必须添加到文件中C:\WINDOWS\LMHOSTS(对于 Windows 9x/Me)或C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS(Windows NT/2000)。

   #然后dir就可以访问了\\smbserver\qemu。

   请注意,主机操作系统上必须安装 SAMBA 服务器。


   hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport

   #将到主机端口 hostport 的传入 TCP 或 UDP 连接重定向到来宾端口 guestport 上的来宾 IP 地址 guestaddr。如果未指定 guestaddr,则其值为 xxx15(内置 DHCP 服务器提供的默认第一个地址)。通过指定hostaddr,可以将规则绑定到特定的主机接口。如果未设置连接类型,则使用 TCP。可以多次给出此选项。


 例如,要将主机 X11 连接从屏幕 1 重定向到访客屏幕 0,请使用以下命令:

   # 在主机

   qemu-system-x86_64 -nic user,hostfwd=tcp:127.0.0.1:6001-:6000 

   # 这个主机 xterm 应该在来宾 X11 服务器中打开

   xterm -display :1

   #要将 telnet 连接从主机端口 5555 重定向到来宾上的 telnet 端口,请使用以下命令:

   # 在主机上

   qemu-system-x86_64 -nic user,hostfwd=tcp::5555-:23 

   telnet localhost 5555

   #然后当您在主机上使用时,您连接到来宾 telnet 服务器。telnet localhost 5555


   guestfwd=[tcp]:server:port-dev; guestfwd=[tcp]:server:port-cmd:command

   #将访客 TCP 连接转发到端口端口上的 IP 地址服务器到字符设备 dev 或由 cmd:command  执行的程序,该程序为每个连接生成。可以多次给出此选项。

   #您可以直接使用 chardev 并在 QEMU 的整个生命周期中使用它,如下例所示:

   #在启动时打开10.10.1.1:4321,连接10.0.2.100:1234到它每当

   #客人访问它

   #的qemu系统-x86_64的-nic用户,guestfwd = TCP:10.0.2.100:1234- TCP:10.10.1.1:4321

   #或者,您可以在来宾建立的每个 TCP 连接上执行命令,以便 QEMU 的行为类似于该虚拟服务器的 inetd 进程:

   # 在每个到 10.0.2.100:1234 的 TCP 连接上调用 "netcat 10.10.1.1 4321" 

   # 并将 TCP 流连接到它的 stdin/stdout 

   qemu-system-x86_64 -nic 'user,id=n1,guestfwd=tcp:10.0。 2.100:1234-cmd:netcat 10.10.1.1 4321'



TPM 设备选项


  #TPM 设备选项的一般形式是:

  -tpmdev backend,id=id[,options]

  #特定的后端类型将决定适用的选项。该 -tpmdev选项创建 TPM 后端并需要一个-device指定 TPM 前端接口模型的 选项。

  #使用打印所有可用的TPM后端类型。-tpmdev help

  可用的后端是:

  -tpmdev passthrough,id=id,path=path,cancel-path=cancel-path

  #(仅限 Linux 主机)使用直通驱动程序启用对主机 TPM 的访问。

  #path指定主机 TPM 设备的路径,即,在 Linux 主机上,这将是/dev/tpm0. path是可选的,默认/dev/tpm0使用。

  #cancel-path指定主机 TPM 设备的 sysfs 条目的路径,允许取消正在进行的 TPM 命令。 cancel-path是可选的,默认情况下 QEMU 将搜索要使用的 sysfs 条目。

  #关于将主机的 TPM 与直通驱动程序一起使用的一些注意事项:

  #直通驱动程序访问的 TPM 设备不得由主机上的任何其他应用程序使用。

  #由于主机的固件 (BIOS/UEFI) 已经初始化了 TPM,VM 的固件 (BIOS/UEFI) 将无法再次初始化 TPM,因此可能不会显示特定于 TPM 的菜单,否则将允许用户配置TPM,例如,允许用户启用/禁用或激活/停用TPM。此外,如果从 VM 内部释放 TPM 所有权,则主机的 TPM 将被禁用和停用。之后要再次启用和激活 TPM,必须重新启动主机,并且要求用户进入固件菜单以启用和激活 TPM。如果 TPM 被禁用和/或停用,大多数 TPM 命令将失败。

  #要创建直通 TPM,请使用以下两个选项:

  -tpmdev passthrough,id=tpm0 -device tpm-tis,tpmdev=tpm0

  #请注意,该-tpmdevid在设备选项中tpm0被引用 tpmdev=tpm0。

  -tpmdev emulator,id=id,chardev=dev

  #(仅限 Linux 主机)使用基于 Unix 域套接字的 chardev 后端启用对 TPM 模拟器的访问。

  #chardev 指定提供到软件 TPM 服务器的连接的字符设备后端的唯一 ID。

  #要使用 chardev 套接字后端创建 TPM 模拟器后端设备:

  -chardev socket,id=chrtpm,path=/tmp/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0

 

 

Linux/多引导启动特定

  #使用这些选项时,您可以使用给定的 Linux 或 Multiboot 内核,而无需将其安装在磁盘映像中。它可用于更轻松地测试各种内核。

  -kernel bzImage

  #使用 bzImage 作为内核映像。内核可以是 Linux 内核,也可以是多引导格式。

  -append cmdline

  #使用 cmdline 作为内核命令行

  -initrd file

  #使用文件作为初始 ram 磁盘。

  -initrd "file1 arg=foo,file2"

  #此语法仅适用于多重引导。使用 file1 和 file2 作为模块并将 arg=foo 作为参数传递给第一个模块。

  -dtb file

  #将文件用作设备树二进制 (dtb) 映像并在启动时将其传递给内核。

 

 

 

杂项

 

 -parallel dev

  #将虚拟并行端口重定向到主机设备 dev(与串行端口相同的设备)。在 Linux 主机上,/dev/parportN可用于使用连接在相应主机并口上的硬件设备。此选项可多次使用以模拟最多 3 个并行端口。使用禁用所有并行端口。-parallel none


  -monitor dev 

  #将监视器重定向到主机设备 dev(与串行端口相同的设备)。默认设备vc处于图形模式和stdio 非图形模式。使用禁用默认监视器。-monitor none


  -qmp dev

  #与 -monitor 类似,但以“控制”模式打开。


  -qmp-pretty dev

  #像 -qmp 但使用漂亮的 JSON 格式。


  -mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]

  #在 chardev 名称上设置监视器。mode=control配置 QMP 监视器(JSON RPC 样式的协议),它与 HMP 不同,后者是具有“(qemu)”提示的人工监视器。 pretty仅在 时有效mode=control,打开 JSON 漂亮打印以方便人类阅读和调试。


  -debugcon dev

  #将调试控制台重定向到主机设备 dev(与串行端口相同的设备)。调试控制台是一个 I/O 端口,通常是端口 0xe9;写入该 I/O 端口会将输出发送到该设备。默认设备vc处于图形模式和stdio非图形模式。

 

  -pidfile file

  #将 QEMU 进程 PID 存储在文件中。如果您从脚本启动 QEMU,这会很有用。

 

  -singlestep

  #以单步模式运行仿真。

  

  --preconfig

  #在创建机器之前暂停 QEMU 进行交互式配置,这允许查询和配置将影响机器初始化的属性。使用 QMP 命令 'x-exit-preconfig' 退出预配置状态并移动到下一个状态(即,如果未使用 -S 则运行来宾,如果使用 -S 则第二次暂停)。此选项是实验性的。

  

  -S

  #不要在启动时启动 CPU(您必须在监视器中键入“c”)。

  

  -overcommit mem-lock=on|off

  -overcommit cpu-pm=on|off

  #使用有关主机资源过量使用的提示运行 qemu。默认是假设主机过量使用所有资源。可以通过mem-lock=on (默认情况下禁用)启用锁定 qemu 和来宾内存。这在主机内存没有过度使用时起作用,并减少了来宾的最坏情况延迟。可以通过cpu-pm=on(默认情况下禁用)启用来宾管理主机 CPU 电源状态的能力(增加同一主机 CPU 上其他进程的延迟,但减少来宾的延迟)。这在主机 CPU 未过度使用时效果最佳。使用时,主机对 CPU 周期和电源利用率的估计将不正确,不考虑来宾空闲时间。


  -gdb dev

  #接受设备 dev 上的 gdb 连接(请参阅系统仿真用户指南中的GDB 使用章节)。请注意,此选项不会暂停 QEMU 的执行——如果您希望 QEMU 在您连接 gdb 并发出continue命令之前不启动来宾,您还需要将该-S选项传递给 QEMU。最常用的配置是侦听本地 TCP 套接字:


  -gdb tcp::3117

  #但您可以指定其他后端;UDP、伪 TTY 甚至 stdio 都是合理的用例。例如,stdio 连接允许您从 gdb 中启动 QEMU 并通过管道建立连接:


  (gdb) 目标远程 | 执行 qemu-system-x86_64 -gdb stdio ...

  -s

  -gdb tcp::1234 的简写,即在 TCP 端口 1234 上打开一个 gdbserver(参见系统仿真用户指南中的GDB 使用章节)。

  -d item1[,...]

  #启用指定项目的日志记录。使用“-d help”获取日志项列表。

  -D logfile

  #将日志输出到日志文件而不是 stderr

  -dfilter range1[,...]

  #将调试输出过滤为与一系列目标地址相关的输出。过滤器规范可以是 start+size、start-size 或 start..end,其中 start end 和 size 是所需的地址和大小。例如:


  -dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000

  #将转储从 0x8000 开始的 0x1000 大小的块和从 0xffffffc000080000 开始的 0x200 大小的块和另一个从 0xffffffc00005f000 开始的 0x1000 大小的块中的任何代码的输出。


  -seed number

  #强制来宾使用确定性伪随机数生成器,以数字作为种子。这不会影响主机内的加密例程。


  -L  path

  #设置 BIOS、VGA BIOS 和键盘映射的目录。

  #要列出所有数据目录,请使用.-L help


  -bios file

  #设置 BIOS 的文件名。


  -enable-kvm

  #启用 KVM 完全虚拟化支持。此选项仅在编译时启用 KVM 支持时可用。

  

  -xen-domid id

  #指定 xen 来宾域 ID(仅限 XEN)。

  

  -xen-attach

  #附加到现有的 xen 域。libxl 将在启动 QEMU(仅限 XEN)时使用它。将可用的 xen 操作集限制为指定的域 ID(仅限 XEN)。

  

  -no-reboot

  #退出而不是重新启动。


  -no-shutdown

  #不要在来宾关闭时退出 QEMU,而只是停止仿真。这允许例如切换到监视器以提交对磁盘映像的更改。


  -action event=action

  #action 参数用于在发生某些访客事件时修改 QEMU 的默认行为。它提供了一种通用方法,用于指定由-no-reboot和-no-shutdown 参数修改的相同行为。


例子:

  -action panic=none -action reboot=shutdown,shutdown=pause -watchdog i6300esb -action watchdog=pause


  -loadvm file

  #立即开始保存状态(loadvm在监视器中)


  -daemonize

  #初始化后守护 QEMU 进程。QEMU 不会从标准 IO 分离,直到它准备好在其任何设备上接收连接。此选项是外部程序启动 QEMU 的有用方法,而无需处理初始化竞争条件。


  -option-rom file

  #加载文件的内容作为选项 ROM。这个选项对于加载 EtherBoot 之类的东西很有用。


  -rtc [base=utc|localtime|datetime][,clock=host|rt|vm][,driftfix=none|slew]

  #分别指定base为utc或localtime让 RTC 在当前 UTC 或本地时间开始。localtime在 MS-DOS 或 Windows 中需要正确的日期。要在特定时间点开始,请以2006-06-17T16:01:21或格式提供日期时间 2006-06-17。默认基数是 UTC。默认情况下,RTC 由主机系统时间驱动。这允许将 RTC 用作来宾内部的准确参考时钟,特别是如果主机时间平滑地遵循准确的外部参考时钟,例如通过 NTP。如果要将访客时间与主机隔离,可以改为设置clock为rt,如果主机支持,则提供主机单调时钟。甚至为了防止 RTC 在暂停期间进行,您可以设置 clock为vm(虚拟时钟)。' clock=vm' 在 icount 模式下尤其推荐使用,以保持确定性;但是,请注意,在 icount 模式下,虚拟时钟的速度是可变的,通常与主机时钟不同。driftfix如果您遇到时间漂移问题,尤其是 Windows 的 ACPI HAL,请启用(仅限 i386 目标)。此选项将尝试找出 Windows 来宾未处理的计时器中断数,并将重新注入它们。


  -icount [shift=N|auto][,align=on|off][,sleep=on|off][,rr=record|replay,rrfile=filename[,rrsnapshot=snapshot]]

  #启用虚拟指令计数器。虚拟 cpu 将每 2^N ns 虚拟时间执行一条指令。如果auto指定,则虚拟 CPU 速度将自动调整以将虚拟时间保持在实际时间的几秒钟内。请注意,虽然此选项可以提供确定性行为,但它不提供周期精确仿真。现代 CPU 包含具有复杂缓存层次结构的超标量乱序内核。执行的指令数量通常与实际性能几乎没有或没有相关性。当虚拟 CPU 处于睡眠状态时,除非sleep=on指定,否则虚拟时间将以默认速度前进。使用 sleep=on,每当虚拟 CPU 进入睡眠模式时,虚拟时间将立即跳转到下一个计时器截止时间,如果没有启用计时器,则不会提前。从访客的角度来看,此行为提供了确定性的执行时间。如果启用 icount,则默认值为sleep=off。 sleep=on不能与shift=auto 或一起使用align=on。


   align=on   #将激活延迟算法,该算法将尝试同步主机时钟和虚拟时钟。目标是让来宾以移位选项强加的实际频率运行。每当访客时钟落后于主机时钟并且如果 align=on被指定,那么我们会向用户打印一条消息以通知延迟。目前此选项在shiftis时不起作用 auto。注意:同步算法适用于来宾时钟运行在主机时钟之前的那些偏移值。通常,这种情况发生在 shift 值很高时(多高取决于主机)。如果启用 icount,则默认值为align=off。当该rr选项被指定时,确定性记录/重放被启用。rrfile=还必须提供该选项以指定重播日志的路径。在记录模式下,数据被写入这个文件,在重放模式下,它被读回。如果rrsnapshot给出该选项,则它指定一个 VM 快照名称。在记录模式下,在执行记录开始时会创建一个具有给定名称的新 VM 快照。在重播模式下,此选项指定用于加载初始 VM 状态的快照名称。

 

  -enable-fips

  #启用 FIPS 140-2 合规性模式。

 

 

 

 

 

 

 启动配置(例):

 qemu-system-x86_64

 -name Windows10 

 -machine q35,vmport=off,dump-guest-core=off,mem-merge=off,hmat=on,usb=off

 -m 2048M

 --accel tcg,thread=multi,kernel-irqchip=off

 -boot menu=on,strict=off -mem-prealloc

 -k en-us

 -audiodev alsa,id=alsa1,in.channels=2,in.frequency=44100,out.buffer-length=5124,in.format=s16 

 -device VGA,id=video0,vgamem_mb=256

 -device intel-hda

 -device hda-duplex,audiodev=alsa1

 -drive id=disk,file=镜像文件,if=none,cache=none,aio=native

 -device ahci,id=ahci 

 -device ide-hd,drive=disk,bus=ahci.0

 -uuid 1f8e6f7e-5a70-4780-89c1-464dc0e7f308 

 -nodefaults 

 -no-user-config 

 -no-hpet 

 -no-fd-bootchk 

 -msg timestamp=off 

 -cpu Cascadelake-Server-v4,model_id='Intel(R) Xeno(TM) E7-8891 v2 @ 3.60GHz' 

 -rtc base=localtime 

 -display vnc=127.0.0.1:0,key-delay-ms=0,connections=15000,to=2,lossy=on,non-adaptive=off 

 -netdev user,id=n1,ipv4=on,ipv6=off 

 -device e1000,netdev=n1,mac=52:54:98:76:54:32 

 -smbios type=3,manufacturer='XBZJ' -smbios type=1,manufacturer='ASUS',product=' Z10PE-D16 WS',version='2021.1' 

 -smbios type=4,manufacturer='Intel-Xeon-XBZJ',max-speed=5200,current-speed=3600 -smbios type=0,version='Intel-Xeon' 

 -smbios type=2,manufacturer='Intel',version='2021.7',product='Intel C612' 


[QEMU]qemu-system-x86-64的常用命令的评论 (共 条)

分享到微博请遵守国家法律