跳转至

虚拟机

概述

虚拟机(Virtual Machine)指一种特殊的软件,可以在计算机系统中建立一种环境,用户可以基于虚拟机这个软件所建立的特殊环境来运行其它软件。虚拟机通过系统的软件模拟功能具有完整硬件系统功能。

简单来说,就是运行在一个完全隔离环境中的完整计算机系统,能提供物理计算机的功能。

在Linux中,你可能要使用一些wine无法兼容的Windows独占软件,但当你无法放弃或者没有平替时,又该如何使用?此时,虚拟机便是最好的解决方案。

在Linux上主流的Windows虚拟机方案
  • VirtualBox:图形化最完善,最开箱即用,性能提升需要搭配KVM使用,但KVM支持不够完善
  • VMware:与VirtualBox类似
  • QEMU:最强大,完美支持KVM,支持直通,但需要使用大量CLI,virt-manager逻辑复杂,上手难度大
  • KVM:内核模块,一般不直接使用
  • WinBoat:用容器化完整安装Windows,但暂无图形加速,且项目处于早期阶段

一般情况下,QEMU和VirtualBox是常见选择。


QEMU方案

安装

Debian系:

sudo apt install qemu-system qemu-utils

红帽系:

sudo dnf install qemu

Arch系:

sudo pacman -S qemu-full  #或 qemu-base,qemu-desktop

注意事项

Debian系: qemu-system 包含系统级模拟, qemu-utils 包含 qemu-img 等磁盘管理工具。若需完整模拟器支持,可安装 qemu-system-*

红帽系:也可通过安装 @virtualization 来一次性安装QEMU、KVM及管理工具。

Arch系: qemu-full 是功能最全的包, qemu-base 是不含GUI的精简版; qemu-desktop 默认只包含x86_64模拟。

使用(CLI)

首先,在使用QEMU前,我们需要创建一个QEMU磁盘文件

# 此处示例为qcow2格式,64G大小
qemu-img create -f qcow2 [磁盘文件路径]/windows_disk.qcow2 64G

然后使用以下参数从iso启动

qemu-system-x86_64 \
  -enable-kvm \
  -cpu host \
  -smp 4 \
  -m 4096 \
  -machine usb=on \
  -device usb-tablet \
  -drive file=[磁盘文件路径]/windows_disk.qcow2,if=virtio,format=qcow2 \
  -cdrom [Window镜像路径]/windows.iso \
  -boot order=d \
  -nic user,model=virtio-net-pci \
  • qemu-system-x86_64指定为x86_64的模拟
  • -enable-kvm使用KVM以加速
  • -cpu host将主机的 CPU 型号和特性直接传递给虚拟机,以获得最佳性能
  • -smp 4分配 4 个 CPU 核心给虚拟机
  • -m 4096分配4096MB(4GB)内存给虚拟机,可使用参数4G
  • -machine usb=on启用USB透传
  • -device usb-tablet解决鼠标坐标错位的关键。它模拟一个USB绘图板(或触控屏),使用绝对坐标定位,这样鼠标指针在宿主机和虚拟机内就能完全同步
  • -drive file=[磁盘文件路径]/windows_disk.qcow2,if=virtio,format=qcow2需指向创建的QEMU磁盘文件路径
  • -cdrom [Window镜像路径]/windows.iso需指向Windows ISO安装文件
  • -boot order=d设置从光驱启动
  • -nic user,model=virtio-net-pci网络,此处使用virt-IO

安装完成后,可以删去 -cdrom-boot 行。

关于更多

因本手册专业性限制,建议另寻专门性教程进行学习


VirtualBox方案

virtualbox_logo

Oracle VirtualBox(简称 VirtualBox)是一款虚拟机软件,它允许您在一个操作系统内部以虚拟机的形式运行另一个操作系统。

例如,在 Linux 上,可以用 VirtualBox 创建一个虚拟机,运行 Microsoft Windows。

VirtualBox 的本体自由软件,采用 GPL-3.0 发布。

但是,VirtualBox 的扩展包专有软件。不过,您可以选择不安装扩展包。

安装

安装内核头文件

VirtualBox 使用树外内核模组来完成虚拟化。为了编译 VirtualBox 内核模组,需要先安装内核的头文件(header)。

  • Debian 系

    sudo apt install linux-headers-generic
    

  • 红帽系

    sudo yum install kernel-devel kernel-headers
    

  • Arch 系

    sudo pacman -S linux-headers
    

安装 VirtualBox

  • Debian 系
    sudo apt install virtualbox
    
Debian 13 "Trixie" 或 12 "Bookworm"...

VirtualBox 的软件包并未正式包含在 Debian 的稳定版本中。然而,Debian Fast Track 会以“滚动更新”的方式向 Debian 稳定版用户提供 VirtualBox。

要安装 VirtualBox,先启用 Debian Backports 源和 Debian Fast Track 源。

用喜欢的文本编辑器创建并编辑 /etc/apt/sources.list.d/debian-backports.sources 文件,这里示例 GNU nano 。

sudo nano /etc/apt/sources.list.d/debian-backports.sources

输入以下内容:

  • Debian GNU/Linux 13 "Trixie"

    Types: deb deb-src
    URIs: http://deb.debian.org/debian
    Suites: trixie-backports
    Components: main contrib non-free non-free-firmware
    Enabled: yes
    Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
    

  • Debian GNU/Linux 12 "Bookworm"

    Types: deb deb-src
    URIs: http://deb.debian.org/debian
    Suites: bookworm-backports bookworm-backports-sloppy
    Components: main contrib non-free non-free-firmware
    Enabled: yes
    Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
    

再创建并编辑 /etc/apt/sources.list.d/fasttrack.sources 文件,这里示例 GNU nano 。

sudo nano /etc/apt/sources.list.d/fasttrack.sources

输入以下内容:

  • Debian GNU/Linux 13 "Trixie"

    Types: deb deb-src
    URIs: https://fasttrack.debian.net/debian-fasttrack
    Suites: trixie-fasttrack trixie-backports-staging
    Components: main contrib non-free
    Signed-By: /usr/share/keyrings/fasttrack-archive-keyring.gpg
    

  • Debian GNU/Linux 12 "Bookworm"

    Types: deb deb-src
    URIs: https://fasttrack.debian.net/debian-fasttrack
    Suites: bookworm-fasttrack bookworm-backports-staging
    Components: main contrib non-free
    Signed-By: /etc/apt/trusted.gpg.d/fasttrack-archive-keyring.gpg
    

还需要安装 Fast Track 的签名验证文件:

sudo apt install fasttrack-archive-keyring

最后,安装 VirtualBox 。

sudo apt update
sudo apt install virtualbox

如果出现了依赖冲突...

指定从 Backports 源安装依赖:

  • Debian GNU/Linux 13 "Trixie"

    sudo apt install -t trixie-backports virtualbox
    

  • Debian GNU/Linux 12 "Bookworm"

    sudo apt install -t bookworm-backports-staging virtualbox
    

  • 红帽系

    sudo yum install virtualbox
    

  • Arch 系

    sudo pacman -S virtualbox
    

使用

将用户加入至 vboxusers

只有在 vboxusers 组内的用户才能使用 VirtualBox 虚拟机。

要将用户加入 vboxusers 组,执行以下命令:

sudo usermod -aG vboxusers $USER

如果以上命令因为找不到 usermod 而失败,使用以下命令:

sudo gpasswd -a $USER vboxusers

加入完成后,您需要重新登入(注销再登入)以使新的组别产生效果。

加载内核模块

VirtualBox 依赖 vboxdrv 内核模组实现虚拟化。

要使用 VirtualBox,必须加载这个内核模组:

sudo modprobe vboxdrv

关于更多