在无图形界面的服务器上,全程通过命令行操作是标准做法。核心思路是使用 `virt-install` 命令创建虚拟机,并通过 **VNC** 远程连接来完成 Windows 的图形化安装。 以下是完整的命令行操作手册: --- ### 📋 一、前提条件 在开始之前,请确保: 1. **CPU 支持虚拟化**:你的 E5-2673 支持,但需在 BIOS 中确认 **Intel VT-x** 已启用。 2. **拥有 sudo 权限**。 ### 🛠️ 二、安装 KVM 及相关工具 1. **更新软件包列表**: ```bash sudo apt update ``` 2. **安装 KVM、QEMU、libvirt 和 virt-install**(无需图形界面工具 `virt-manager`): ```bash sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst ovmf ``` 3. **将当前用户加入 `libvirt` 和 `kvm` 组**: ```bash sudo usermod -aG libvirt $USER sudo usermod -aG kvm $USER ``` 4. **启动 `libvirtd` 服务并设置开机自启**: ```bash sudo systemctl enable --now libvirtd ``` 5. **验证服务状态**: ```bash sudo systemctl status libvirtd ``` 确保状态为 `active (running)`。 ### 🌐 三、(可选)配置桥接网络 默认的 `NAT` 网络(`default`)可以让虚拟机访问互联网,但如果需要虚拟机与宿主机在同一个局域网,并拥有独立 IP,则需要配置桥接网络。 > **注意**:以下操作通过 SSH 连接服务器时请格外小心,错误的网络配置可能导致连接中断。建议通过服务器控制台(如 IPMI、iDRAC)操作。 1. **查看网卡名称**: ```bash ip link show ``` 找到你的物理网卡,如 `enp3s0` 或 `eth0`。 2. **备份当前 Netplan 配置**: ```bash sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak ``` 你的配置文件可能叫别的名字,以 `/etc/netplan/` 目录下的实际文件名为准。 3. **编辑 Netplan 配置文件**: ```bash sudo nano /etc/netplan/50-cloud-init.yaml ``` 4. **修改为以下内容**(请将 `enp3s0`、IP 地址等替换为你自己的信息): ```yaml network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: false bridges: br0: interfaces: [enp3s0] addresses: [192.168.1.100/24] # 替换为你的静态IP routes: - to: default via: 192.168.1.1 # 替换为你的网关 nameservers: addresses: [8.8.8.8, 8.8.4.4] parameters: stp: false forward-delay: 0 ``` > 如果希望网桥通过 DHCP 自动获取 IP,可将 `addresses`、`routes`、`nameservers` 替换为 `dhcp4: true`。 5. **应用配置**: ```bash sudo netplan apply ``` 6. **验证网桥**: ```bash ip addr show br0 ``` ### 💾 四、准备 ISO 镜像文件 创建目录存放 ISO 文件: ```bash mkdir -p ~/iso ``` 将以下两个 ISO 文件放入 `~/iso` 目录: * **Windows 10 LTSC ISO 镜像** * **VirtIO 驱动 ISO**:从 [Fedora 官方仓库](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso) 下载。 ### 🚀 五、使用 virt-install 创建虚拟机 执行以下命令创建虚拟机: ```bash sudo virt-install \ --name win10-ltsc \ --memory 8192 \ --vcpus sockets=1,cores=4,threads=1 \ --disk path=/vm/disk/win10-ltsc.qcow2,size=60,bus=virtio \ --disk path=/vm/iso/virtio-win.iso,device=cdrom \ --cdrom /vm/iso/zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso \ --os-variant win10 \ --network network=default,model=virtio \ --graphics vnc,listen=0.0.0.0 \ --console pty,target_type=serial \ --boot uefi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no \ --check path_in_use=off ``` #### 各参数说明 | 参数 | 说明 | | :--- | :--- | | `--name` | 虚拟机名称 | | `--memory` | 分配的内存大小(MB),此处为 8GB | | `--vcpus` | CPU 配置:1 个 CPU 插槽,4 个核心,每个核心 1 个线程 | | `--disk` | 磁盘路径、大小(GB)和总线类型(`virtio` 性能最佳) | | `--cdrom` | Windows ISO 镜像路径 | | `--os-variant` | 操作系统类型,`win10` 适用于 Windows 10/11 | | `--network` | 网桥名称(如用 NAT 则填 `default`)和网卡型号(`virtio`) | | `--graphics` | **关键**:启用 VNC,并监听所有网络接口 | | `--console` | 开启串行控制台,便于故障排查 | | `--boot` | 使用 UEFI 固件(`ovmf`)启动 | > **关于 `--os-variant`**:执行 `osinfo-query os | grep win` 可查看所有支持的 Windows 版本。 ### 🖥️ 六、通过 VNC 完成 Windows 安装 1. **确认 VNC 端口**: ```bash sudo virsh vncdisplay win10-ltsc ``` 输出类似 `127.0.0.1:0`,表示 VNC 服务在 **5900** 端口(`:0` 对应 5900,`:1` 对应 5901)。 2. **连接 VNC**:在本地电脑上用 VNC 客户端连接: ``` 你的服务器IP:5900 ``` > **安全提醒**:上述配置中 VNC 未设密码,任何人都可连接。建议通过 SSH 隧道转发 VNC 端口,或使用 `--graphics vnc,password=你的密码` 设置密码。 3. **在 VNC 窗口中安装 Windows**: * 正常进入安装界面。 * 当提示 **“未找到任何驱动器”** 时,点击 **“加载驱动程序”**。 * 点击 **“浏览”**,找到 VirtIO 驱动 ISO 中的 `viostor\w10\amd64` 文件夹,加载 **“Red Hat VirtIO SCSI Controller”** 驱动。 * 磁盘识别后,继续完成 Windows 安装。 ### 🚀 七、安装完成后的优化 1. **安装 VirtIO 网卡驱动**: * Windows 安装完成后,进入“此电脑”,打开 VirtIO 驱动光盘。 * 运行 `virtio-win-gt-x64.exe` 安装所有驱动。 2. **启用远程桌面(RDP)**: * 在 Windows 中:设置 → 系统 → 远程桌面 → 开启远程桌面。 * 之后可通过 RDP 客户端直接连接,比 VNC 更流畅。 3. **常用虚拟机管理命令**: ```bash # 启动虚拟机 sudo virsh start win10-ltsc # 关闭虚拟机(需在 Windows 内关机) sudo virsh shutdown win10-ltsc # 强制关闭 sudo virsh destroy win10-ltsc # 查看所有虚拟机状态 sudo virsh list --all # 删除虚拟机 sudo virsh undefine win10-ltsc ``` ### 💎 总结 整个流程可概括为: 1. **安装** KVM 相关软件包。 2. **(可选)配置**桥接网络。 3. **准备** Windows ISO 和 VirtIO 驱动 ISO。 4. **执行** `virt-install` 命令创建虚拟机。 5. **通过 VNC 连接**,在 Windows 安装过程中加载 VirtIO 驱动。 6. **安装 VirtIO 驱动**并启用 RDP,完成优化。 如果在 VNC 连接或驱动加载环节遇到问题,可以随时再来问我。