跳到内容
观澜涉川 · 札记EN

在 Ubuntu 上使用 Cockpit 创建虚拟机

· 约 3 分钟阅读

在 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 安装:

Terminal window
sudo apt-get update
sudo apt install -y cockpit

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

Terminal window
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 命令安装:

Terminal window
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 虚拟机中挂载(映射)这个网络驱动器。