命令行参数
以下是 quickemu 的命令行参数。
用法
quickemu --vm ubuntu.conf <参数>
参数
--access : 启用远程 SPICE 访问。'local'(默认)、'remote'、'clientipaddress'
--braille : 启用盲文支持。需要 SDL。
--delete-disk : 删除磁盘镜像与 EFI 变量
--delete-vm : 删除整个虚拟机及其配置
--display : 选择显示后端。'sdl'(默认)、'gtk'、'none'、'spice' 或 'spice-app'
--fullscreen : 以全屏模式启动虚拟机(Ctl+Alt+f 退出)
--ignore-msrs-always : 配置 KVM 始终忽略未处理的机器特定寄存器
--shortcut : 创建桌面快捷方式
--snapshot apply <tag> : 应用/恢复快照
--snapshot create <tag> : 创建快照
--snapshot delete <tag> : 删除快照
--snapshot info : 显示磁盘/快照信息
--status-quo : 不将任何更改提交到磁盘/快照
--viewer <viewer> : 选择替代查看器。选项:'spicy'(默认)、'remote-viewer'、'none'
--width <width> : 设置虚拟机屏幕宽度。没有 --height 时不生效
--height <height> : 设置虚拟机屏幕高度。没有 --width 时不生效
--ssh-port <port> : 手动设置 SSH 端口
--spice-port <port> : 手动设置 SPICE 端口
--public-dir <path> : 暴露共享目录。选项:''(默认:xdg-user-dir PUBLICSHARE)、'<directory>'、'none'
--monitor <type> : 设置监视器连接类型。选项:'socket'(默认)、'telnet'、'none'
--monitor-telnet-host <ip/host> : 设置监视器的 telnet 主机(默认:'localhost')
--monitor-telnet-port <port> : 设置监视器的 telnet 端口(默认:'4440')
--monitor-cmd <cmd> : 若有可用监视器则发送命令(例如:system_powerdown)
--serial <type> : 设置串口连接类型。选项:'socket'(默认)、'telnet'、'none'
--serial-telnet-host <ip/host> : 设置串口的 telnet 主机(默认:'localhost')
--serial-telnet-port <port> : 设置串口的 telnet 端口(默认:'6660')
--keyboard <type> : 设置键盘。选项:'usb'(默认)、'ps2'、'virtio'
--keyboard_layout <layout> : 设置键盘布局
--mouse <type> : 设置鼠标。选项:'tablet'(默认)、'ps2'、'usb'、'virtio'
--usb-controller <type> : 设置 USB 控制器。选项:'ehci'(默认)、'xhci'、'none'
--sound-card <type> : 设置声卡。选项:'intel-hda'(默认)、'ac97'、'es1370'、'sb16'、'none'
--extra_args <arguments> : 向 qemu 传递额外参数
--version : 打印版本连接到虚拟机
SPICE
使用 SPICE 协议时可获得以下功能:
- 客户机与宿主机之间的复制/粘贴
- 宿主机与客户机之间的文件共享
- USB 设备重定向
要使用 SPICE,在 quickemu 命令中加入 --display spice,这要求安装 spicy 客户端(Debian/Ubuntu 中来自 spice-client-gtk 包)。
quickemu --vm ubuntu-22.04.conf --display spice要在 Windows 客户机中启用复制/粘贴,请在客户机中安装 SPICE Windows 客户机工具。
无头模式
若要以 SPICE 启动但不附加显示,使用 --display none。这需要安装 spicy 客户端(Debian/Ubuntu 中来自 spice-client-gtk)才能连接到运行中的虚拟机。
quickemu --vm ubuntu-22.04.conf --display none你也可以用虚拟机目录下的 .ports 文件查询 SSH 与 SPICE 端口:
cat ubuntu-22.04/ubuntu-22.04.ports例如,如果 SSH 端口是 22220,并假设虚拟机已启动 SSH 服务(具体因系统而异),通常可以从宿主机这样登录:
ssh -p 22220 your_vm_user@localhost无障碍
QEMU 支持通过 BrlAPI 在真实或虚拟设备上输出盲文。
quickemu --vm ubuntu-22.04.conf --braille --display sdlBIOS 与 EFI
自 Quickemu 2.1.0 起,efi 是默认引导方式。若要改为传统 BIOS,请在虚拟机配置中加入:
boot="legacy"CPU、内存与磁盘
默认情况下,Quickemu 会根据宿主机规格计算分配给虚拟机的 CPU 核心数与内存。 你可以覆盖默认行为,按需调整虚拟机配置,加入以下任意行:
cpu_cores="4"—— 指定分配给虚拟机的 CPU 核心数ram="4G"—— 指定分配给虚拟机的内存大小disk_size="16G"—— 指定虚拟磁盘的大小
磁盘预分配
预分配模式(可选值:off(默认)、metadata、falloc、full)。预分配元数据的镜像初始更大,但当镜像需要增长时性能更好。
在虚拟机配置中加入类似下面的一行,以指定创建系统盘时使用的预分配方式:
preallocation="metadata"CD-ROM 磁盘
若想把宿主机的 ISO 镜像暴露给客户机,请在虚拟机配置中加入:
fixed_iso="/path/to/image.iso"软盘
如果你想在客户机中挂载软盘镜像(比如 Alan Pope),请在虚拟机配置中加入:
floppy="/path/to/floppy.img"显示分辨率
qemu 总是默认在主显示器上显示虚拟机窗口。quickemu 请求的默认分辨率为 1280 x 800。
可通过在虚拟机配置文件中设置 width 与 height,或传入 --width 与 --height 命令行参数来覆盖,例如:
quickemu --vm ubuntu-22.04-desktop.conf --width 1920 --height 1080显示后端与 GPU 加速
Quickemu 会根据客户机系统与 --display 选项选择显示设备。并非所有组合都支持 GPU 加速(VirGL)。
通过 VirGL 实现 GPU 加速需要 virtio-vga 或 virtio-vga-gl 设备,它们只在特定显示后端下可用:
| 客户机系统 | 显示后端 | GPU 设备 | VirGL 加速 |
|---|---|---|---|
| Linux | sdl(默认) |
virtio-vga | 是 |
| Linux | gtk |
virtio-vga | 是 |
| Linux | spice-app |
virtio-vga | 是 |
| Linux | spice |
virtio-gpu | 否 |
| Linux | none |
virtio-gpu | 否 |
| Windows | sdl(默认) |
virtio-vga | 是 |
| Windows | cocoa |
virtio-vga | 是 |
| Windows | spice-app |
virtio-vga | 是 |
| Windows | gtk |
qxl-vga | 否 |
| Windows | spice |
qxl-vga | 否 |
| macOS | 全部 | VGA | 否 |
| BSD | 全部 | VGA | 否 |
建议:要获得 Linux 客户机的最佳图形性能,请使用 --display sdl(默认)。如果你需要剪贴板共享、USB 重定向等 SPICE 功能,请注意 --display spice 会禁用 VirGL 加速。
多显示器支持
要启用多个虚拟显示器,请在虚拟机配置文件中加入 max_outputs:
max_outputs="2"这会把虚拟 GPU 配置为最多支持指定数量的显示器。实际行为取决于你的显示后端与客户机系统的支持。
macOS 显示分辨率
要在 macOS 上设置分辨率,你还需要在 macOS 虚拟机中安装第三方的分辨率管理工具以获得最佳效果。推荐使用以下之一:
- Resolutionator
- SwitchResX
- BetterDisplay(需要 macOS 12.4 或更新)
文件共享
所有文件共享选项都只会把当前用户的 ~/Public(或本地化后的对应目录)暴露给客户机。
Samba
支持 Linux、macOS 与 Windows 客户机。如果宿主机上有 smbd,Quickemu 会自动启用 QEMU 内置的 Samba 共享支持,把宿主机的共享暴露给客户机。
在 Ubuntu 上可以这样安装最小的 Samba 组件:
sudo apt-get install --no-install-recommends samba如果一切配置正确,启动虚拟机会打印 smbd 地址,例如:
- smbd: On guest: smb://10.0.2.4/qemu如果使用 Windows 客户机,右键点击“此电脑”,选择“添加一个网络位置”,粘贴该地址,去掉 smb: 并把正斜杠换为反斜杠(本例中为 \\10.0.2.4\qemu)。
SPICE WebDAV
支持 Linux 与 Windows 客户机。
共享的宿主目录由 --public-dir 控制:默认为当前用户的 Public 目录(xdg-user-dir PUBLICSHARE),也可指定其它目录或设为 none 关闭。
客户机侧需要安装 SPICE WebDAV 代理:
- Linux 客户机:Debian/Ubuntu 执行
sudo apt install spice-webdavd。 - Windows 客户机:用
quickget创建的虚拟机已自动安装所需驱动。
安装并启动虚拟机后,共享目录会作为 WebDAV 挂载出现在客户机中,可直接读写宿主机的文件。
VirtIO-9P
支持 Linux 与 macOS 客户机。
Quickemu 会通过 VirtIO-9P 把宿主机的共享目录挂载到客户机中,无需网络即可访问宿主文件。共享目录同样由 --public-dir 控制(默认是当前用户的 Public 目录):
quickemu --vm ubuntu-24.04.conf --public-dir /path/to/share在 Linux 客户机中,该目录通常挂载在 ~/Public 下;如果看不到,请确认客户机内核已启用 9p 支持(大多数发行版默认启用)。
网络
Quickemu 会设置 User Networking,它在 QEMU 内提供完整的 TCP/IP 栈来实现虚拟 NAT 网络,默认网段为 (10.0.2.0/24)。
在客户机内部,连接到“网关”IP 地址 10.0.2.2 的某个端口会连到宿主机上的该端口;例如 ssh 10.0.2.2 会从客户机 SSH 到宿主机。
禁用网络
要完全禁用客户机的所有网络接口,请在虚拟机配置中加入:
network="none"自 Quickemu 4.9.5 起,也可以使用命令行参数 --offline 完全覆盖任何网络配置并禁用该虚拟机的网络。
受限网络
你可以用 restrict 选项把客户机与宿主机(以及更广的网络)隔离,这会把网络限制为仅在客户机与虚拟设备之间。
这可以防止客户机内的软件“偷偷联网”,同时仍在客户机内提供网络。请在虚拟机配置中加入:
network="restrict"桥接网络
要把虚拟机连接到预先配置好的网络网桥,请在虚拟机配置中加入:
network="br0"如果你希望桥接网络接口在客户机中拥有固定 MAC 地址,可以在虚拟机配置中加入 macaddr。QEMU 要求 MAC 地址位于以下范围:52:54:00:AB:00:00 - 52:54:00:AB:FF:FF
因此可以这样指定:
macaddr="52:54:00:AB:51:AE"端口转发
在虚拟机配置中加入一行,例如:
port_forwards=("8123:8123" "8888:80")在上面的例子中:
- 宿主机的 8123 端口转发到客户机的 8123 端口。
- 宿主机的 8888 端口转发到客户机的 80 端口。
剪贴板共享
要在宿主机与客户机之间共享剪贴板,宿主机需使用 SPICE 查看器,客户机需安装 SPICE vdagent。
宿主机
用 --display spice 启动虚拟机,例如:
quickemu --vm nixos-23.11-gnome.conf --display spice客户机
越来越多的 Linux 发行版已在其 live 镜像中包含 SPICE vdagent。要在客户机中共享剪贴板,需要安装并运行 SPICE vdagent。
Debian 与 Ubuntu 上的 SPICE vdagent
sudo apt-get install spice-vdagentNixOS 上的 SPICE vdagent
如果你使用 NixOS,需要启用 SPICE vdagent 守护进程,在配置中加入:
services.spice-vdagentd.enable = true;Windows 上的 SPICE vdagent
如果你是用 quickget 创建的 Windows 10 或 Windows 11 虚拟机,所需驱动已自动安装。
USB 重定向
Quickemu 通过 SPICE 直通与主机直通支持 USB 重定向。
SPICE 重定向(推荐)
使用 SPICE 做 USB 直通最简单,因为它不需要任何提升权限:
来自 spice-gtk 的 spicy(输入 → 选择要重定向的 USB 设备)与来自 virt-viewer 的 remote-viewer(文件 → USB 设备选择)都支持该功能。
- 用
--display spice启动 Quickemu,然后: - **
spicy(默认)- 从菜单中选择
输入→选择要重定向的 USB 设备,挑选要附加到客户机的设备。
- 从菜单中选择
- **
remote-viewer- 从菜单中选择
文件→USB 设备选择,挑选要附加到客户机的设备。
- 从菜单中选择
为确保功能正常,请确认已在虚拟机中安装必要的 SPICE Guest Tools。
在 NixOS 上启用 SPICE USB 重定向
如果在 NixOS 宿主机上遇到以下错误:
Error setting facl: Operation not permitted你需要在配置中启用 SPICE USB 重定向:
virtualisation.spiceUSBRedirection.enable = true;主机重定向(不推荐)
不推荐使用 USB 主机重定向;它只是为了向后兼容旧版 Quickemu 而保留。请优先使用上文所述的 SPICE 方式。
在虚拟机配置中加入一行,例如:
usb_devices=("046d:082d" "046d:085e")在上面的例子中:
- vendor_id 为
046d、product_id 为082d的 USB 设备会暴露给客户机。 - vendor_id 为
046d、product_id 为085e的 USB 设备会暴露给客户机。
如果 USB 设备不可写,quickemu 会显示修改设备权限的相应命令,例如:
- USB: Host pass-through requested:
- Sennheiser Communications EPOS GTW 270 on bus 001 device 005 needs permission changes:
sudo chown -v root:user /dev/bus/usb/001/005
ERROR! USB permission changes are required 👆TPM
自 Quickemu 2.2.0 起,可以为客户机添加软件模拟的 TPM 设备。
只需在虚拟机配置中加入 tpm="on";quickget 会自动为 Windows 11 虚拟机添加这一行。
从同一系统管理多个虚拟机
你可以从同一个下载的 ISO 镜像创建多个互相独立的虚拟机。每个虚拟机都需要自己的配置文件与磁盘镜像。
创建额外的虚拟机
- 用一个新名称复制原配置文件:
cp ubuntu-24.04.conf ubuntu-24.04-testing.conf- 编辑新配置,使用不同的磁盘镜像路径:
guest_os="linux"
disk_img="ubuntu-24.04-testing/disk.qcow2"
iso="ubuntu-24.04/ubuntu-24.04.iso"- 为新虚拟机创建目录:
mkdir ubuntu-24.04-testing- 启动新虚拟机 —— quickemu 会创建一块全新的磁盘镜像:
quickemu --vm ubuntu-24.04-testing.conf推荐的目录结构
要管理同一系统的多个虚拟机,可以参考以下结构:
~/quickemu/
├── ubuntu-24.04/
│ ├── ubuntu-24.04.iso # 共享的 ISO
│ └── disk.qcow2 # 主虚拟机磁盘
├── ubuntu-24.04-dev/
│ └── disk.qcow2 # 开发用虚拟机磁盘
├── ubuntu-24.04-testing/
│ └── disk.qcow2 # 测试用虚拟机磁盘
├── ubuntu-24.04.conf # 主虚拟机配置
├── ubuntu-24.04-dev.conf # 开发用虚拟机配置
└── ubuntu-24.04-testing.conf # 测试用虚拟机配置每个配置文件指向各自的磁盘镜像,同时共享同一个 ISO:
# ubuntu-24.04-dev.conf
guest_os="linux"
disk_img="ubuntu-24.04-dev/disk.qcow2"
iso="ubuntu-24.04/ubuntu-24.04.iso"桌面快捷方式
可以为虚拟机创建桌面快捷方式,快捷方式保存在 ~/.local/share/applications。示例如下:
quickemu --vm ubuntu-22.04-desktop.conf --shortcut