在 Ubuntu 上使用 Cockpit 创建虚拟机

2025-09-25#Cockpit#虚拟机

在 Windows 上,个人用户可使用 VirtualBox、VMware Workstation 等虚拟机软件;在 macOS 上的选择有 UTM 和 VirtualBox 等。在 Linux 主机上,除了可以使用 VirtualBox 外,还有其他选择,比如 KVM、QEMU。它们本身没有图形界面,需要通过其他工具进行管理,比如桌面应用程序 virt-manager。而 Cockpit 是基于 Web 的管理工具,无需桌面环境即可使用,是本文的主角。

在 Linux 上创建虚拟机运行 Windows 时,需要考虑以下几个因素:

  1. 管理界面的易用性和用户体验
  2. 虚拟机的安装配置流程
  3. 虚拟机安装完成后的访问方式
  4. 主机与虚拟机之间的文件共享

安装 Cockpit 🔗

大部分 Linux 发行版的包管理器中都已经包含了 Cockpit。参考官方文档 《Running Cockpit》,在 Ubuntu 24.04 上可以直接使用 apt 安装:

sudo apt-get update
sudo apt install -y cockpit

以及用于虚拟机管理的相关组件:

sudo apt install cockpit-machines cockpit-networkmanager cockpit-storaged

安装完成后,可以在浏览器中访问 http://localhost:9090 使用 Cockpit。

安装虚拟机 🔗

在 Cockpit 界面中选择菜单栏的 "Virtual machines",点击 "Create VM" 按钮,输入基本信息即可创建虚拟机。

需要注意的是,如果选择本地的系统镜像文件,需要确保 QEMU 能够通过 libvirt/virt-install 访问该文件。如果系统镜像文件位于 Downloads 目录,QEMU 默认没有权限访问,会出现如下错误:

ERROR internal error: process exited while connecting to monitor: 2025-09-25T13:58:04.212887Z qemu-system-x86_64: -blockdev {"driver":"file","filename":"/home/***/Downloads/Win11_24H2_Chinese_Simplified_x64.iso","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}: Could not open '/home/***/Downloads/Win11_24H2_Chinese_Simplified_x64.iso': Permission denied Domain installation does not appear to have been successful. If it was, you can restart your domain by running: virsh --connect qemu:///system start windows11 otherwise, please restart your installation. Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'win11', '--reinstall', 'windows11', '--wait', '-1', '--noautoconsole', '--cdrom', '/home/***/Downloads/Win11_24H2_Chinese_Simplified_x64.iso']' returned non-zero exit status 1.

解决方法是将系统镜像文件移动到 /var/lib/libvirt/images/ 目录或其他 libvirt 可访问的目录中。

创建虚拟机后,在虚拟机页面点击 "Boot order",确保系统能够从镜像文件启动。然后启动虚拟机,就可以在 Web 页面通过 VNC 查看虚拟机的安装界面了。

访问 Windows 虚拟机 🔗

虽然可以通过浏览器中的 VNC 访问虚拟机,但在 Windows 系统安装完成后,使用远程桌面访问会有更好的体验。在 Linux 上可以使用 Remmina 远程桌面客户端,通过 apt 命令安装:

sudo apt-get update
sudo apt install -y remmina

但 Windows 默认没有开启远程桌面,需要稍做配置:

  1. 在 Windows 系统,进入”控制面板“ → ”系统“ → ”远程桌面“,启用远程桌面
  2. 在 Windows 系统,查看网络,找到虚拟机的 IP 地址
  3. 在 Remmina 中创建连接,使用虚拟机的 IP、用户名和密码

默认情况下,Remmina 打开的远程桌面分辨率较小。可以点击工具栏上的 "Toggle dynamic resolution update" 按钮来启用动态分辨率调整,这样远程桌面分辨率就会自动适应 Remmina 窗口大小。

如果需要在 Windows 虚拟机中播放音频,需要配置音频输出。在 Cockpit 的虚拟机编辑(Edit)页面中,选择 "Advanced" 选项卡,将 "Audio output mode" 设置为 "Local" 即可。

创建虚拟机快照 🔗

建议在系统安装完成后创建快照,以便日后需要时可以快速恢复到干净状态。在 Cockpit 的虚拟机页面中,找到 "Snapshots" 选项,点击 "Create snapshot" 并输入快照名称即可。

主机与虚拟机共享目录 🔗

对于 Linux 虚拟机,可以使用 virtiofs 创建共享目录。但由于 virtiofs 不支持 Windows 系统,对于 Windows 虚拟机,需要在 Linux 主机上配置 Samba(SMB)服务来共享文件夹,然后在 Windows 虚拟机中挂载(映射)这个网络驱动器。