Files

6.8 KiB
Raw Permalink Blame History

在无图形界面的服务器上,全程通过命令行操作是标准做法。核心思路是使用 virt-install 命令创建虚拟机,并通过 VNC 远程连接来完成 Windows 的图形化安装。

以下是完整的命令行操作手册:


📋 一、前提条件

在开始之前,请确保:

  1. CPU 支持虚拟化:你的 E5-2673 支持,但需在 BIOS 中确认 Intel VT-x 已启用。
  2. 拥有 sudo 权限。

🛠️ 二、安装 KVM 及相关工具

  1. 更新软件包列表:

    sudo apt update
    
  2. 安装 KVM、QEMU、libvirt 和 virt-install(无需图形界面工具 virt-manager):

    sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst ovmf
    
  3. 将当前用户加入 libvirt 和 kvm 组:

    sudo usermod -aG libvirt $USER
    sudo usermod -aG kvm $USER
    
  4. 启动 libvirtd 服务并设置开机自启:

    sudo systemctl enable --now libvirtd
    
  5. 验证服务状态:

    sudo systemctl status libvirtd
    

    确保状态为 active (running)。

🌐 三、(可选)配置桥接网络

默认的 NAT 网络(default)可以让虚拟机访问互联网,但如果需要虚拟机与宿主机在同一个局域网,并拥有独立 IP,则需要配置桥接网络。

注意:以下操作通过 SSH 连接服务器时请格外小心,错误的网络配置可能导致连接中断。建议通过服务器控制台(如 IPMI、iDRAC)操作。

  1. 查看网卡名称:

    ip link show
    

    找到你的物理网卡,如 enp3s0 或 eth0。

  2. 备份当前 Netplan 配置:

    sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
    

    你的配置文件可能叫别的名字,以 /etc/netplan/ 目录下的实际文件名为准。

  3. 编辑 Netplan 配置文件:

    sudo nano /etc/netplan/50-cloud-init.yaml
    
  4. 修改为以下内容(请将 enp3s0、IP 地址等替换为你自己的信息):

    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. 应用配置:

    sudo netplan apply
    
  6. 验证网桥:

    ip addr show br0
    

💾 四、准备 ISO 镜像文件

创建目录存放 ISO 文件:

mkdir -p ~/iso

将以下两个 ISO 文件放入 ~/iso 目录:

🚀 五、使用 virt-install 创建虚拟机

执行以下命令创建虚拟机:

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 端口:

    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. 常用虚拟机管理命令:

    # 启动虚拟机
    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 连接或驱动加载环节遇到问题,可以随时再来问我。