本文由 AI 翻译(ChatGPT-4)完成,并由作者进行人工校对。如有任何问题或建议,欢迎联系我。联系方式:jelin-sh@outlook.com。
以下是最近删除的、以前不推荐使用的功能的记录,这是为那些在最近升级后遇到问题的用户提供的记录。
系统仿真器命令行参数
-hdachs(在 2.12 中删除)
由 -hdachs c,h,s,t
定义的几何图形现在应通过 -device ide-hd,drive=dr,cyls=c,heads=h,secs=s,bios-chs-trans=t
(连同 -drive if=none,id=dr,...
)指定。
-net channel(在 2.12 中删除)
此选项已被 -net user,guestfwd=...
替换。
-net dump(在 2.12 中删除)
-net dump[,vlan=n][,file=filename][,len=maxlen]
已被 -object filter-dump,id=id,netdev=dev[,file=filename][,maxlen=maxlen]
替换。请注意,新的语法使用 netdev ID 而不是旧的“vlan”中心。
-no-kvm-pit(在 2.12 中删除)
这只是一个被忽略的虚拟选项,因为内核中的 PIT 现在无法单独禁用,与 irqchip 无法分开。可以通过 -M kernel_irqchip=split
获得类似的效果(也会禁用 KVM IOAPIC)。
-tdf(在 2.12 中删除)
没有替代方案,-tdf 选项刚刚被忽略,因为在 qemu-kvm 中可以通过该选项更改的行为现在在使用 KVM PIT 时已成为默认行为。仍然可以通过 -global kvm-pit.lost_tick_policy=delay
明确请求。
-drive secs=s,-drive heads=h 和 -drive cyls=c(在 3.0 中移除)
驱动几何结构现在应通过 -device ...,drive=dr,cyls=c,heads=h,secs=s
(连同 -drive if=none,id=dr,...
)指定。
-drive serial=,-drive trans= 和 -drive addr=(在 3.0 中移除)
使用 -device ...,drive=dr,serial=r,bios-chs-trans=t,addr=a
代替(连同 -drive if=none,id=dr,...
)。
-net …,vlan=x(在 3.0 中删除)
术语“vlan”在这种情况下对大多数用户来说非常令人困惑(它是关于指定一个集线器 ID,而不是关于 IEEE 802.1Q 或类似的东西),因此已被移除。要将一个 NIC 前端与网络后端连接起来,可以使用 -nic ...
(例如用于板载 NIC)或者使用 -netdev ...,id=n
与 -device ...,netdev=n
一起(用于对可插拔 NIC 具有完全控制)。要通过一个集线器设备连接多个 NIC 或网络后端(这就是 vlan 所做的事情),请改用 -nic hubport,hubid=x,...
或 -netdev hubport,id=n,hubid=x,...
(与 -device ...,netdev=n
一起)。
-no-kvm-irqchip(在 3.0 中删除)
请使用 -machine kernel_irqchip=off
替代。
-no-kvm-pit-reinjection(在 3.0 中删除)
请使用 -global kvm-pit.lost_tick_policy=discard
替代。
-balloon(在 3.1 中删除)
选项 -balloon virtio
已被替换为 -device virtio-balloon
。选项 -balloon none
是一个无操作选项,没有替代项。
-bootp(在 3.1 中删除)
第 -bootp /some/file
参数将被替换为 -netdev user,id=x,bootp=/some/file
(用于可插拔网卡,附带 -device ...,netdev=x
)或 -nic user,bootp=/some/file
(用于板载网卡)。新的语法允许为每个网卡提供不同的设置。
-redir(在 3.1 中删除)
选项 -redir [tcp|udp]:hostport:[guestaddr]:guestport
被替换为 -netdev user,id=x,hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport
(适用于可插拔网卡,配有 -device ...,netdev=x
)或选项 -nic user,hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport
(适用于板载网卡)。新语法允许为每个网卡提供不同的设置。
-smb(在 3.1 中删除)
第 -smb /some/dir
参数将被替换为 -netdev user,id=x,smb=/some/dir
(用于可插拔网卡,附带 -device ...,netdev=x
)或 -nic user,smb=/some/dir
(用于板载网卡)。新的语法允许为每个网卡提供不同的设置。
-tftp(在 3.1 中删除)
第 -tftp /some/dir
参数将被替换为 -netdev user,id=x,tftp=/some/dir
(用于可插拔网卡,附带 -device ...,netdev=x
),或 -nic user,tftp=/some/dir
(用于板载网卡)。新的语法允许为每个网卡提供不同的设置。
-localtime(在 3.1 中删除)
被 -rtc base=localtime
替换。
-nodefconfig(在 3.1 中删除)
请使用 -no-user-config
替代。
-rtc-td-hack(在 3.1 中删除)
请使用 -rtc driftfix=slew
替代。
-startdate(在 3.1 中删除)
被 -rtc base=date
替换。
-vnc …,tls=…,-vnc …,x509=… 和 -vnc …,x509verify=…(在 3.1 中移除)
“tls-creds”选项应该使用,而不是指向使用“-object”创建的“tls-creds-x509”对象。
-mem-path 回退到 RAM(在 5.0 中已移除)
如果从由 -mem-path
指定的文件中分配客户端 RAM 失败,QEMU 会回退到直接从 RAM 中分配,这可能导致不可预测的行为,因为用户指定的备用文件被忽略。目前,用户需要确保使用 -mem-path
指定的备用存储确实可以提供与 -m
选项配置的客户端 RAM 相匹配的存储空间。如果 RAM 分配失败,QEMU 将无法启动。
-net …,name=… (在 5.1 中删除)
-net
选项的 name
参数是 id
参数的同义词,现在应使用 id
参数。
-numa node,mem=… (在 5.1 中删除)
-numa node
选项的 mem
参数用于将一部分客户端 RAM 分配给 NUMA 节点。但在使用时,无法在主机端管理指定的 RAM 块(比如将其绑定到主机节点,设置绑定策略等),因此客户端最终会以虚拟 NUMA 配置,性能不佳。然而,自 2014 年以来,可以使用参数 memdev
将 RAM 分配给 NUMA 节点,它与 mem
参数相同,并增加了在主机端实际管理节点 RAM 的功能。使用 memdev
参数与 memory-backend-ram
后端替换 mem
参数,以实现相同的虚拟 NUMA 效果,或者使用正确配置的 memory-backend-file
后端以实际受益于 NUMA 配置。新版本的机器(自 5.1 版本以来)将不接受该选项,但仍可与旧的机器类型一起使用。用户可以查看 QAPI 模型,通过查看 MachineInfo::numa-mem-supported
属性来确定是否支持传统选项。
-numa 节点(未指定内存)(在 5.2 中移除)
默认情况下,在 NUMA 节点之间分割 RAM 存在与 mem
参数相同的问题,不同之处在于用户在 QEMU 中使用隐式通用或板特定的分割规则。使用 memdev
与 memory-backend-ram
后端或 mem
参数(如果所用的机器类型支持)来明确定义映射。希望保留相同 RAM 分配的现有虚拟机用户应使用 -numa node,memdev
选项进行明确配置。当前的 RAM 分配可以使用 HMP 命令 info numa
检索,如果存在单独的内存设备(例如 pc|nv-dimm
),则使用 info memory-device
并从 info numa
的输出中减去设备内存。
-smp (无效拓扑)(在 5.2 中移除)
CPU 拓扑属性应描述整个机器拓扑,包括可能的 CPU。然而,从历史上看,可能会以不正确的拓扑启动 QEMU,其中 n <= sockets * cores * threads < maxcpus
,这可能会导致客户机对不正确的拓扑进行枚举。不再支持无效的拓扑,用户必须确保用 -smp
描述的拓扑包括所有可能的 CPU,即 sockets * cores * threads = maxcpus
。
-machine enforce-config-section=on|off (在 5.2 中删除)
enforce-config-section
属性已被 -global migration.send-configuration={on|off}
选项替换。
-no-kvm (在 5.2 中删除)
-no-kvm
参数是设置 -machine accel=tcg
的同义词。
-realtime (在 6.0 中删除)
-realtime mlock=on|off
参数已被 -overcommit mem-lock=on|off
参数替换。
-show-cursor 选项(在 6.0 版本中移除)
请使用 -display sdl,show-cursor=on
、-display gtk,show-cursor=on
或 -display default,show-cursor=on
。
-tb-size 选项(在 6.0 版本中移除)
QEMU 5.0 引入了一种替代语法来指定翻译块缓存的大小,即 -accel tcg,tb-size=
。
-usbdevice audio (在 6.0 中删除)
此选项缺乏指定音频后端设备的功能。现在应使用 -device usb-audio
(并在必要时指定相应的 USB 主机控制器或 -usb
)。
-vnc acl (在 6.0 中删除)
acl
参数已被 tls-authz
和 sasl-authz
选项替换。
-mon …,control=readline,pretty=on|off (在 6.0 中删除)
pretty=on|off
开关对 HMP 监视器没有影响,其使用已被弃用。
-drive file=json:{…{‘driver’:‘file’}} (在 6.0 中删除)
“file”驱动器不再适用于字符或主机设备,只接受常规文件(S_IFREG)。这些文件类型的正确驱动程序是“host_cdrom”或“host_device”。
软盘控制器的驱动属性(在 6.0 中已移除)
请使用 -device floppy,...
来配置板载软盘控制器:
-
将
-global isa-fdc.driveA=... -global sysbus-fdc.driveA=... -global SUNW,fdtwo.drive=...
替换为
-device floppy,unit=0,drive=...
-
将
-global isa-fdc.driveB=... -global sysbus-fdc.driveB=...
替换为
-device floppy,unit=1,drive=...
当插入软盘控制器时:
-
将
-device isa-fdc,...,driveA=...
替换为
-device isa-fdc,... -device floppy,unit=0,drive=...
-
将
-device isa-fdc,...,driveB=...
替换为
-device isa-fdc,... -device floppy,unit=1,drive=...
-drive 使用虚假的接口类型(在 6.0 中已移除)
具有接口类型 if=none
以外的驱动器适用于板载设备。板卡无法识别的驱动器将无法再与设备一起使用。请改用 if=none
。
-usbdevice ccid (在 6.0 中删除)
此选项未记录并且未在实际中使用。请改用 -device usb-ccid
。
RISC-V 固件默认未启动(在 5.1 中移除)
QEMU 5.1 将 RISC-V virt 机器和 sifive_u 机器的默认行为从 -bios none
更改为 -bios default
。
-no-quit (在 7.0 中删除)
-no-quit
是 -display ...,window-close=off
的同义词,应该使用 -display ...,window-close=off
。
–enable-fips (在 7.1 中删除)
此选项在主机以 FIPS 模式运行时限制了某些加密算法的使用。如果需要符合 FIPS 标准,应使用 libgcrypt 或 gnutls 库构建 QEMU,作为加密提供程序。不支持在启用 FIPS 的主机上使用 nettle 库或内置的加密提供程序。
-writeconfig (在 7.1 中删除)
-writeconfig
选项无法序列化 QEMU 命令行的全部内容。因此,它被视为失败的实验,并在没有替代方案的情况下被移除。
loaded 属性的 secret 和 secret_keyring 对象(在 7.1 中移除)
命令行中的 loaded=on
选项或 QMP object-add
选项没有任何效果(如果 loaded
是最后一个选项),或者导致选项被有效地忽略,就好像它们没有被给出一样。因此,该属性是无用的,应该被简单地移除。
rng-* 对象的 opened 属性(在 7.1 中已移除)
命令行中的 opened=on
选项或 QMP object-add
选项没有任何效果(如果 opened
是最后一个选项),或者会导致错误。因此,该属性是无用的,应该被简单地移除。
-display sdl,window_close=… (在 7.1 中删除)
请使用 -display sdl,window-close=...
代替(即在“window”和“close”之间使用减号而不是下划线)。
-alt-grab 和 -display sdl,alt_grab=on (在 7.1 中移除)
请使用 -display sdl,grab-mod=lshift-lctrl-lalt
替代。
-ctrl-grab 和 -display sdl,ctrl_grab=on (在 7.1 中移除)
请使用 -display sdl,grab-mod=rctrl
替代。
-sdl (在 7.1 中删除)
请使用 -display sdl
替代。
-curses (在 7.1 中删除)
请使用 -display curses
替代。
使用 -soundhw 创建声卡设备(在 7.1 中已移除)
声卡设备应使用 -device
或 -audio
创建。例外情况是 pcspk
,可以使用 -machine pcspk-audiodev=<name>
激活。
-watchdog (自 7.2 版本起)
请使用 -device
替代。
十六进制大小与缩放倍数(自 8.0 版起)
接受大小值的输入参数应在基数以十进制形式书写时使用大小后缀(如 ‘k’ 或 ‘M’),而在值为十六进制时不应使用大小后缀。例如,‘0x20M’ 应该写成 ‘32M’ 或 ‘0x2000000’。
-chardev 后端别名 tty 和 parport (在 8.0 中已移除)
tty
和 parport
曾分别是 serial
和 parallel
的别名。应使用实际的后端名称。
-drive if=none 适用于 sifive_u OTP 设备(在 8.0 中已移除)
使用 -drive if=pflash
来配置 sifive_u RISC-V 机器的 OTP 设备。
-spice password=string (在 8.0 中删除)
此选项不安全,因为 SPICE 密码在进程列表中仍然可见。已被新的 password-secret
选项替换,该选项允许使用 secret 对象实例在命令行上安全地提供密码。
QEMU_AUDIO_ 环境变量和 -audio-help (在 8.2 中已移除)
-audiodev
和 -audio
命令行选项现在是指定音频后端设置的唯一方式。
使用 -audiodev 来定义默认音频后端(在 8.2 中已移除)
如果未指定 audiodev
属性,则以前的版本将使用第一个 -audiodev
命令行选项作为后备。从版本 8.2 开始,使用 -audiodev
创建的音频后端将仅由在 audiodev=
属性中引用它的客户端(声卡、带有嵌入式声音硬件的机器、VNC)使用。
为了配置默认音频后端,请使用 `
-audio` 命令行选项,而无需指定 model;以前的 QEMU 版本需要一个模型,从 8.2 版本开始,QEMU 不需要模型,在这种情况下不会创建任何声卡。
请注意,如果使用 -nodefaults
选项,则必须在命令行上配置默认音频后端。
-no-hpet (在 9.0 中删除)
HPET 设置已转换为机器属性。请使用 -machine hpet=off
。
-no-acpi (在 9.0 中删除)
-no-acpi
设置已转换为机器属性。请使用 -machine acpi=off
。
-async-teardown (在 9.0 中删除)
请使用 -run-with async-teardown=on
替代。
-chroot (在 9.0 中删除)
请使用 -run-with chroot=dir
替代。
-singlestep (在 9.0 中删除)
选项 -singlestep
已转换为加速器属性,并赋予了一个更能反映其实际功能的名称。请使用 -accel tcg,one-insn-per-tb=on
。
-smp (“parameter=0” SMP 配置)(在 9.0 中移除)
指定的 CPU 拓扑参数必须大于零。在 SMP 配置中,用户应提供合理的 CPU 拓扑参数(大于零),或者省略它,QEMU 将计算缺失的值。
历史上隐式允许用户提供值为零的参数,这是没有意义的,也可能导致 -smp
解析中的意外结果。因此,自 9.0 版本开始,不再支持这种配置(例如 -smp 8,sockets=0
),用户必须确保所有使用 -smp
描述的拓扑成员大于零。
-global migration.decompress-error-check (在 9.1 中删除)
随着压缩迁移功能一起移除。
用户模式模拟器命令行参数
-singlestep (在 9.0 中删除)
选项 -singlestep
已被赋予一个更能反映其实际功能的名称。对于 Linux 用户和 BSD 用户,请使用选项 -one-insn-per-tb
。
QEMU 机器协议(QMP)命令
block-dirty-bitmap-add “autoload”参数(在 4.2 中已移除)
“autoload”参数自 2.12.0 版本起已被忽略。所有位图将自动从 qcow2 镜像加载。
cpu-add (在 5.2 中删除)
使用 device_add
来热插拔虚拟 CPU,而不是 cpu-add
。有关更多详细信息,请参阅 query-hotpluggable-cpus
的文档。
change (在 6.0 中删除)
请使用 blockdev-change-medium
或 change-vnc-password
或 display-update
。
query-events (在 6.0 中删除)
query-events
命令已被更强大和准确的 query-qmp-schema
命令取代。
migrate_set_cache_size 和 query-migrate-cache-size (在 6.0 中移除)
使用 migrate_set_parameter
和 info migrate_parameters
代替。
migrate_set_downtime 和 migrate_set_speed (在 6.0 中移除)
请使用 migrate_set_parameter
替代。
query-cpus (在 6.0 中删除)
query-cpus
命令被 query-cpus-fast
命令替换。
query-cpus-fast arch 输出成员(在 6.0 中已移除)
query-cpus-fast
命令的 arch
输出成员被 target
输出成员替换。
chardev 客户端套接字与 wait 选项(在 6.0 中已移除)
在客户端模式下创建套接字的字符设备不应指定 wait
字段,该字段仅适用于服务器模式下的套接字。
query-named-block-nodes 结果 encryption_key_missing (在 6.0 中移除)
无替代品移除。
query-block 结果 inserted.encryption_key_missing (在 6.0 中移除)
无替代品移除。
query-named-block-nodes 和 query-block 结果 dirty-bitmaps[i].status(在 6.0 中已移除)
这些命令返回的 BlockDirtyInfo
结构的 status
字段已被移除。两个新的布尔字段 recording
和 busy
有效地取代了它。
query-block 结果字段 dirty-bitmaps (在 6.0 中已移除)
查询块命令返回的 BlockInfo
结构的 dirty-bitmaps
字段现在已被移除。应该使用 BlockDeviceInfo
结构的 dirty-bitmaps
字段,这是查询块回复中 inserted
字段的类型,以及查询命名块节点中数组项的类型。
object-add 选项 props (在 6.0 中已移除)
将对象的属性指定为顶级参数。
query-sgx 返回值成员 section-size (在 8.0 中已移除)
返回值中的成员 section-size
已被 sections
取代。
query-sgx-capabilities 返回值成员 section-size (在 8.0 中已移除)
返回值中的成员 section-size
已被 sections
取代。
query-migrate 返回值成员 skipped (在 9.1 中已移除)
MigrationStats
结构体的成员 skipped
已经超过 10 年没有被使用。已删除且没有替代。
migrate 命令选项 inc (在 9.1 版本中已移除)
使用 blockdev-mirror
与 NBD
代替。有关详细说明,请参阅 docs/interop/live-block-operations.rst
中的“使用 blockdev-mirror
+ NBD
进行实时存储迁移的 QMP 调用”。
migrate 命令选项 blk (在 9.1 版本中已移除)
使用 blockdev-mirror
与 NBD
代替。有关详细说明,请参阅 docs/interop/live-block-operations.rst
中的“使用 blockdev-mirror
+ NBD
进行实时存储迁移的 QMP 调用”。
migrate-set-capabilities block 选项(在 9.1 中已移除)
块迁移已被移除。要进行替代,请参阅 docs/interop/live-block-operations.rst
中的“使用 blockdev-mirror
+ NBD
进行实时存储迁移的 QMP 调用”。
migrate-set-parameter compress-level 选项(在 9.1 中已移除)
请使用 multifd-zlib-level
或 multifd-zstd-level
。
migrate-set-parameter compress-threads 选项(在 9.1 中已移除)
请使用 multifd-channels
替代。
migrate-set-parameter compress-wait-thread 选项(在 9.1 中已移除)
无替代品移除。
migrate-set-parameter decompress-threads 选项(在 9.1 中已移除)
请使用 multifd-channels
替代。
migrate-set-capability compress 选项(在 9.1 中已移除)
请使用 multifd-compression
替代。
人类监控协议(HMP)命令
usb_add 和 usb_remove (在 2.12 中移除)
被 device_add
和 device_del
替换(使用 device_add help
查看可用设备列表)。
host_net_add 和 host_net_remove (在 2.12 中移除)
被 netdev_add
和 netdev_del
替换。
hostfwd_add / hostfwd_remove 的 hub_id 参数(在 5.0 中已移除)
“hostfwd_add”和“hostfwd_remove” HMP 命令的 [hub_id name]
参数元组已被 netdev_id
替换。
cpu-add (在 5.2 中删除)
使用 device_add
来热插拔虚拟 CPU,而不是 cpu-add
。有关更多详细信息,请参阅 query-hotpluggable-cpus
的文档。
change vnc TARGET (在 6.0 中删除)
没有替换。change vnc password
和 change DEVICE MEDIUM
命令不受影响。
acl_show,acl_reset,acl_policy,acl_add,acl_remove (在 6.0 中已移除)
acl_show
,acl_reset
,acl_policy
,acl_add
和 acl_remove
命令已被删除,没有替代。应使用可插拔的 QAuthZ
对象执行 VNC 的授权。
migrate-set-cache-size 和 info migrate-cache-size (在 6.0 中移除)
使用 migrate-set-parameters
和 info migrate-parameters
代替。
migrate_set_downtime 和 migrate_set_speed (在 6.0 中移除)
请使用 migrate-set-parameters
替代。
info cpustats (在 6.1 中删除)
这个命令没有产生任何输出。已删除且没有替换。
singlestep (在 9.0 中删除)
singlestep
命令已被 one-insn-per-tb
命令替换,两者行为相同,但名称更少误导。
migrate 命令 -i 选项(在 9.1 中已移除)
使用 blockdev-mirror
与 NBD
代替。有关详细说明,请参阅 docs/interop/live-block-operations.rst
中的“使用 blockdev-mirror
+ NBD
进行实时存储迁移的 QMP 调用”。
migrate 命令 -b 选项(在 9.1 中已移除)
使用 blockdev-mirror
与 NBD
代替。有关详细说明,请参阅 docs/interop/live-block-operations.rst
中的“使用 blockdev-mirror
+ NBD
进行实时存储迁移的 QMP 调用”。
migrate_set_capability block 选项(在 9.1 中已移除)
块迁移已被移除。要进行替代,请参阅 docs/interop/live-block-operations.rst
中的“使用 blockdev-mirror
+ NBD
进行实时存储迁移的 QMP 调用”。
migrate_set_parameter compress-level 选项(在 9.1 中已移除)
请使用 multifd-zlib-level
或 multifd-zstd-level
。
migrate_set_parameter compress-threads 选项(在 9.1 中已移除)
请使用 multifd-channels
替代。
migrate_set_parameter compress-wait-thread 选项(在 9.1 中已移除)
无替代品移除。
migrate_set_parameter decompress-threads 选项(在 9.1 中已移除)
请使用 multifd-channels
替代。
migrate_set_capability compress 选项(在 9.1 中已移除)
请使用 multifd-compression
替代。
主机架构
32 位 Windows 主机上的系统仿真(在 9.0 中已移除)
Windows 11 不支持 32 位主机安装,Windows 10 也不支持新的 32 位安装,只支持升级。MSYS2 项目现在已经放弃了对 32 位 Windows 的支持。QEMU 也正在逐渐停止支持 32 位 x86 主机部署。因此,32 位 Windows 不再是 QEMU 的支持主机。由于过去 10 年来所有最新的 x86 硬件都支持 64 位 x86 扩展,应使用相应的 64 位操作系统。
客人模拟器 ISA
RISC-V ISA 特权规范版本 1.09.1(在 5.1 中移除)
RISC-V ISA 特权规范版本 1.09.1 已被移除。QEMU 支持更新版本 1.10.0 和已批准版本 1.11.0,应使用这些版本代替 1.09.1 版本。
系统仿真器 CPU
在 32 位 Arm 主机上支持 KVM 客户端(在 5.2 中已移除)
Linux 内核已经在 5.7 内核中停止支持允许 32 位 Arm 系统托管 KVM 客户端,并因此也从 QEMU 中移除。在 64 位 Arm 主机上运行 32 位客户端仍然受支持。
RISC-V ISA 特定的 CPU(在 5.1 中移除)
RISC-V CPUs 中带有 CPU 名称的 ISA 版本已被移除。这四个 CPU 是:rv32gcsu-v1.9.1、rv32gcsu-v1.10.0、rv64gcsu-v1.9.1 和 rv64gcsu-v1.10.0。相反,版本可以通过在使用 rv32 或 rv64 CPU 时指定 CPU priv_spec
选项来指定。
RISC-V 没有 MMU 的 CPU(在 5.1 中移除)
RISC-V 没有 MMU 的 CPU 已被移除。两个 CPU:rv32imacu-nommu 和 rv64imacu-nommu 不能再使用。取而代之的是,在使用 rv32 或 rv64 CPU 时,可以通过 CPU mmu
选项指定 MMU 状态。
服务器类 POWER CPUs 的 compat 属性(在 6.0 中已移除)
应使用 pseries 机器类型的 max-cpu-compat
属性。
moxie CPU(在 6.1 中移除)
在 QEMU 中没有人在使用这个 CPU 仿真,并且没有可用的测试镜像来确保代码仍然有效,因此已经被移除而没有替代。
lm32 CPU(在 6.1 中移除)
这种架构的唯一公共用户是已经停止运行多年的 milkymist 项目;从未有过上游 Linux 端口。已移除且没有替代。
unicore32 CPU(在 6.1 中移除)
该 CPU 的支持已从上游 Linux 内核中移除,并且没有可用的上游工具链来构建二进制文件。已移除且没有替代。
x86 Icelake-Client CPU(在 7.1 中移除)
从来没有 Icelake Client CPU,那是错误的和虚构的。请使用 Icelake-Server 代替。
Nios II CPU(在 9.1 中移除)
QEMU Nios II 架构已被遗弃;英特尔已经终止了 Nios II 处理器 IP(请参阅英特尔终止通知)。
系统加速器
用户空间本地 APIC 与 KVM(x86,在 8.0 中已移除)
-M kernel-irqchip=off 如果 CPU 型号包含本地 APIC,则无法在 KVM 上使用。支持 split 设置,当 CPU 没有本地 APIC 时也支持使用 -M kernel-irqchip=off 。
HAXM( -accel hax
)(在 8.2 中已移除)
HAXM 项目已经被弃用(请参阅 https://github.com/intel/haxm#status)。请改用“whpx”(在 Windows 上)或“hvf”(在 macOS 上)。
MIPS“陷阱和模拟”KVM 支持(在 8.0 中移除)
MIPS“陷阱和模拟”KVM 主机和客户端支持已于 2021 年从 Linux 中移除,并且 QEMU 也不再支持。
系统仿真机器
s390-virtio
(在 2.6 中删除)
使用 s390-ccw-virtio
机器代替。
m68k dummy
机器(在 2.9 中移除)
使用 none
机器与 loader 设备替代。
xlnx-ep108
(在 3.0 中删除)
EP108 是一个早期的开发板,现在不再使用。请改用 xlnx-zcu102
机器。
spike_v1.9.1
和 spike_v1.10
(在 5.1 中移除)
特定版本的 Spike 机器已被移除,取而代之的是通用 spike
机器。如果您需要指定旧版本的 RISC-V 规范,可以使用 -cpu rv64gcsu,priv_spec=v1.10.0
命令行参数。
MIPS r4k
平台(在 5.2 版中已移除)
这种机器类型非常古老且未维护。用户应该使用 malta
机器类型。
MIPS fulong2e
机器别名(在 6.0 中已移除)
这台机器已经更名为 fuloong2e
。
pc-0.10
到 pc-i440fx-1.7
(在 4.0 到 8.2 版本中已移除)
这些机器类型非常古老,很可能无法再用于从旧的 QEMU 版本进行实时迁移。请改用更新的机器类型。
树莓派 raspi2
和 raspi3
机器(在 6.2 版本中移除)
树莓派机器有各种型号(A、A+、B、B+)。为了能够区分 QEMU 正在实现的是哪个型号,raspi2
和 raspi3
机器已被重命名为 raspi2b
和 raspi3b
。
Aspeed swift-bmc
机器(在 7.0 中移除)
这台机器被移除是因为它没有被使用。替代的基于 AST2500 的 OpenPOWER 机器是 witherspoon-bmc
和 romulus-bmc
。
ppc taihu
机器(已在 7.2 中移除)
这台机器被移除,因为它部分被模拟,并且 405 台机器非常相似。请使用 ref405ep
机器代替。
Nios II 10m50-ghrd
和 nios2-generic-nommu
机器(在 9.1 中移除)
Nios II 架构已被孤立。
Linux 用户模式 CPU
tilegx CPU(在 6.0 中移除)
已删除 tilegx 客户 CPU 支持,且没有替代品。它仅在 linux-user 模式下实现,但该 CPU 的支持已于 2018 年从上游 Linux 内核中移除,并且也已从 glibc 中删除,因此没有新的 Linux 开发使用该架构。要运行旧的二进制文件,您可以使用较旧版本的 QEMU。
ppc64abi32 CPU(在 7.0 中移除)
ppc64abi32 架构存在许多问题,经常导致 CI 测试失败,并被怀疑存在严重问题。因此,维护人员强烈怀疑没有人实际使用它。
nios2 CPU(在 9.1 中移除)
QEMU Nios II 架构已被遗弃;英特尔已经终止了 Nios II 处理器 IP(请参阅英特尔终止通知)。
TCG 内省特性
TCG trace-events(自 6.2 起)
添加新的 TCG 跟踪点的能力已经被废弃,因为这一功能可以通过 TCG 插件复制。如果任何用户目前正在使用此功能并需要将其转换为使用 TCG 插件的帮助,请联系 qemu-devel 邮件列表。
系统仿真器设备
spapr-pci-vfio-host-bridge(在 2.12 中移除)
spapr-pci-vfio-host-bridge
设备类型已被 spapr-pci-host-bridge
设备类型取代。
ivshmem(在 4.0 中移除)
已被 ivshmem-plain
或 ivshmem-doorbell
取代。
ide-drive(在 6.0 中移除)
ide-drive
设备已被移除。用户应根据需要使用 ide-hd
或 ide-cd
以获得 IDE 硬盘或 CD-ROM。
scsi-disk(在 6.0 中移除)
scsi-disk
设备已被移除。用户应根据需要使用 scsi-hd
或 scsi-cd
以获得 SCSI 硬盘或 CD-ROM。
sga(在 8.0 中移除)
sga
设备为 x86 目标加载了一个选项 ROM,使 SeaBIOS 可以将消息发送到串行控制台。从 SeaBIOS 1.11.0 开始,包含了对该功能的原生支持,因此选项 ROM 的使用已被淘汰。可以通过使用 -machine graphics=off
激活原生的 SeaBIOS 支持。
pvrdma 和 RDMA 子系统(在 9.1 中移除)
pvrdma
设备和整个 RDMA 子系统已被移除。
相关二进制文件
qemu-nbd --partition(在 5.0 中移除)
qemu-nbd --partition $digit
代码(也拼写为 -P
)只能处理 MBR 分区,并且从未正确处理超过分区 5 的逻辑分区。仍然可以通过使用 --image-opts
选项并结合 raw
块设备的 offset
和 size
参数来导出分区。例如,如果分区 1 长度为 100MiB,起始位置为 1MiB,则旧命令:
qemu-nbd -t -P 1 -f qcow2 file.qcow2
可以重写为:
qemu-nbd -t --image-opts driver=raw,offset=1M,size=100M,file.driver=qcow2,file.file.driver=file,file.file.filename=file.qcow2
qemu-img convert -n -o(在 5.1 中移除)
所有在 -o
中指定的选项都是镜像创建选项,因此它们现在在使用 -n
跳过镜像创建时会被拒绝。
qemu-img create -b bad file $size(在 5.1 中移除)
在使用无法打开的后备文件创建镜像时,qemu-img create
曾在提供明确的大小时发出警告但继续创建镜像。然而,由于 -u
选项的存在,更安全的做法是强制要求在不使用 -u
时,任何打开后备镜像的失败(包括后备文件缺失或格式不正确)都被视为错误。
qemu-img amend to adjust backing file(在 6.1 中移除)
使用 qemu-img amend
修改 qcow2 后备镜像的名称或格式从未完全记录或测试,并且干扰了需要访问原始后备镜像的其他修订操作(例如在转换为 v2 镜像时决定是否可以保留 v3 零集群未分配)。任何对后备链的更改应通过 qemu-img rebase -u
在修订前后进行。
qemu-img backing file without format(在 6.1 中移除)
使用 qemu-img create
、qemu-img rebase
或 qemu-img convert
创建或修改依赖于后备文件的镜像,现在要求提供明确的后备格式。这是为了安全性:如果 QEMU 探测到的格式与你所认为的不一致,呈现给客机的数据将会损坏;同样,如果未来探测到的基于客机写入的非原始镜像呈现给客机,将可能造成潜在的安全漏洞。
为避免创建不安全的后备链,必须传递 -o backing_fmt=
(或在创建期间使用简写 -F
)来指定预期的后备格式。可以使用 qemu-img rebase -u
追溯添加后备格式到现有镜像。然而,需注意盲目使用 qemu-img info
探测不受信任的后备镜像格式时,决定将何种格式添加到现有镜像中,已经存在潜在的安全风险。
块设备
VXHS 后端(在 5.1 中移除)
自 v2.12.0 以来,VXHS 代码未能编译。它在 5.1 版本中被移除。
sheepdog 驱动程序(在 6.0 中移除)
相应的上游服务器项目不再维护。建议用户切换到其他分布式块设备驱动程序,如 RBD。
工具
virtiofsd(在 8.0 中移除)
有一个较新的 Rust 实现的 virtiofsd,可在 https://gitlab.com/virtio-fs/virtiofsd 获取;该实现已经稳定了一段时间,并被广泛使用。其命令行和功能集与已移除的 C 实现非常接近。
© Copyright 2024, The QEMU Project Developers. This documentation is for QEMU version 9.0.50.