Quickemu快速创建KVM虚拟机

简介

Quickemu 是一个优秀的 QEMU 的封装器,它在创建虚拟机时自动“做到正确的事情”。无需繁琐的配置选项。你只需决定想要运行哪个操作系统,Quickemu 会处理其余的工作 🤖

该项目的最初目标是实现对 Linux 发行版的快速测试,虚拟机及其配置可以存储在任何地方(如外部 USB 存储或你的 home 目录),并且运行虚拟机不需要提升权限。

如今,Quickemu 包括对 macOS、Windows、大多数 BSD 以及一些新颖的非 Linux 操作系统(如 FreeDOS、Haiku、KolibriOS、OpenIndiana、ReactOS 等)的全面支持。

安装

yay -S qemu-full quickemu

其它操作系统
01 Installation

quickget 工具是 Quickemu 的一部分,其目的是自动下载操作系统镜像并创建优化的虚拟机配置。

运行 quickget -h 将生成它所支持的所有操作系统的列表,包括数百种 Linux 发行版、所有 BSD、macOS、Windows、FreeDOS 以及许多其他操作系统。

创建虚拟机

Ubuntu

# 下载镜像并创建配置,保存位置为命令的目录
# 如下会下载镜像保存于 ./ubuntu-22.04 并创建配置 ./ubuntu-22.04.conf
quickget ubuntu 22.04
quickemu --vm ubuntu-22.04.conf     # 启动 ubuntu-22.04

在客户机中安装 SPICE 代理(spice-vdagent)以启用 复制/粘贴和 USB 重定向

sudo apt install spice-vdagent

在客户机中安装 SPICE WebDAV 代理 (spice-webdavd) 以 启用文件共享。

sudo apt install spice-webdavd

MacOS
https://github.com/philclifford/quickemu-docs/blob/3125ddc21a91440cd6f1f70aa40081d760c10a4e/quickemu.1-10-macOSguests.md

quickget macos ventura
quickemu --vm macos-ventura.conf

Windows
https://github.com/philclifford/quickemu-docs/blob/3125ddc21a91440cd6f1f70aa40081d760c10a4e/quickemu.1-11-Windowsguests.md

quickget windows 10 "Chinese (Simplified)"
quickemu --vm windows-10-Chinese-Simplified.conf

可通过如下命令获取所有可用虚拟机列表

quickget --list

配置

https://github.com/philclifford/quickemu-docs/blob/3125ddc21a91440cd6f1f70aa40081d760c10a4e/README-135-confoptions.md

默认的 Windows 11 配置如下:

./windows-11-Chinese-Simplified.conf

guest_os="windows"
disk_img="windows-11/disk.qcow2"
iso="windows-11/windows-11.iso"
fixed_iso="windows-11/virtio-win.iso"
tpm="on"
secureboot="off"

各配置项说明

boot="legacy" - efi 是默认的,该配置选项启用传统 BIOS
cpu_cores="4" - 指定分配给虚拟机的 CPU 核心数量
ram="4G" - 指定分配给虚拟机的 RAM 数量
disk_size="16G" - 指定分配给虚拟机的虚拟磁盘大小
preallocation="metadata" - 预分配模式(允许值:off(默认),metadata,fallocfull
fixed_iso="/path/to/image.iso" - 将 ISO 镜像从主机挂载到给客户机
widthheight - 虚拟机分辨率,默认分辨率为 1280 x 800,要在 macOS 上设置显示分辨率,您还需要在 macOS 虚拟机中安装第三方分辨率管理器以获得最佳效果,建议使用以下之一:
- Resolutionator · Many Tricks
- SwitchResX
- BetterDisplay
network="none" - 禁用客户虚拟机中的所有网络接口
network="restrict" - 将来宾与主机(以及更广泛的网络)隔离,这将限制网络仅限于来宾和任何虚拟设备
network="br0" - 将虚拟机连接到预配置的网络桥
macaddr="52:54:00:AB:51:AE" - 为桥接网络接口设置一个持久的 MAC 地址,QEMU 要求 MAC 地址在以下范围内:52:54:00:AB:00:00 - 52:54:00:AB:FF:FF
port_forwards=("8123:8123" "8888:80") - 主机上的 8123 端口被转发到客户机上的 8123 端口,主机上的 8888 端口被转发到客机的 80 端口
display="spice" - 使用 SPICE 协议,在游客和主机之间复制/粘贴,与客户端共享主机文件,USB 设备重定向。这需要安装 spicy 客户端,该客户端可以从 Debian/Ubuntu 的 spice-client-gtk 包中获取。要在 Windows 客户端中启用复制/粘贴,请在客户机虚拟机中安装 SPICE Windows 客户端工具。通过 SPICE 代理复制/粘贴在 macOS 上不可用

命令参数

使用方法  
  quickemu --vm ubuntu.conf <参数>  

参数  
  --access                          : 启用远程 Spice 访问支持。'local'(默认)、'remote'、'clientipaddress'  
  --braille                         : 启用盲文支持。需要 SDL。  
  --delete-disk                     : 删除磁盘映像和 EFI 变量  
  --delete-vm                       : 删除整个虚拟机及其配置  
  --display                         : 选择显示后端。'sdl'(默认)、'cocoa'、'gtk'、'none'、'spice' 或 'spice-app'  
  --fullscreen                      : 以全屏模式启动虚拟机(按 Ctrl+Alt+f 退出)  
  --ignore-msrs-always              : 配置 KVM 始终忽略未处理的特定于机器的寄存器  
  --kill                            : 如果虚拟机正在运行,则终止其进程  
  --offline                         : 覆盖所有网络设置并离线启动虚拟机  
  --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>        : 设置键盘布局:'en-us'(默认)  
  --mouse <type>                    : 设置鼠标。可选项:'tablet'(默认)、'ps2'、'usb'、'virtio'  
  --usb-controller <type>           : 设置 USB 控制器。可选项:'ehci'(默认)、'xhci'、'none'  
  --sound-card <type>               : 设置声卡。可选项:'intel-hda'(默认)、'ac97'、'es1370'、'sb16'、'usb-audio'、'none'  
  --sound-duplex <type>             : 设置声卡双工。可选项:'hda-micro'(默认:扬声器/麦克风)、'hda-duplex'(线路输入/线路输出)、'hda-output'(仅输出)  
  --extra_args <arguments>          : 传递额外参数给 qemu  
  --version                         : 打印版本