Windows Server 2022 + Hyper-V + Ubuntu 22.04 + RTX A6000 显卡直通

基本环境

环境:

  • Windows Server 2022 标准版
  • 物理机支持 VT-d 技术(Intel VT-d 或 AMD-Vi)
  • 物理机支持 IOMMU 功能
  • RTX A6000 显卡

windows server 2022版本
windows server 2022版本

安装Hyper-V

  1. 以 管理员身份 打开 PowerShell,执行以下命令(安装后自动重启):
    # 安装 Hyper-V 角色及管理工具
    Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
  2. 解绑 RTX A6000 显卡(供虚拟机直通使用)
    2.1 禁用显卡设备
    打开「设备管理器」→ 展开「显示适配器」
    右键「NVIDIA RTX A6000」→ 选择「禁用设备」(宿主机不再使用该显卡)
    2.2 查询显卡 InstancePath
    管理员 PowerShell 执行命令,复制输出的 InstanceId(实际为 Server 2022 所需的 InstancePath):
    # 筛选 NVIDIA 显卡的 InstancePath
    Get-PnpDevice -Class Display | Where-Object FriendlyName -like "NVIDIA*" | Select-Object FriendlyName, InstanceId
    示例输出(需替换为你的实际路径):
    plaintext
    FriendlyName     InstanceId
    ------------     ----------
    NVIDIA RTX A6000 PCI\VEN_10DE&DEV_2230&SUBSYS_14591028&REV_A1\4&24FCC77D&0&0010
    2.3 解绑显卡供 Hyper-V 使用
    执行以下命令(替换为你的 InstancePath):
    # 核心命令:解绑显卡(Server 2022 用 -InstancePath 参数,而非 -InstanceId)
    Dismount-VmHostAssignableDevice -InstancePath "PCI\VEN_10DE&DEV_2230&SUBSYS_14591028&REV_A1\4&24FCC77D&0&0010" -Force
    成功标志:无报错或提示「操作成功完成」
    2.4 验证解绑成功
    # 查看 Hyper-V 可直通的设备列表
    Get-VMHostAssignableDevice
    InstanceID   : PCIP\VEN_10DE&DEV_2230&SUBSYS_14591028&REV_A1\4&24FCC77D&0&0010
    LocationPath : PCIROOT(4A)#PCI(0200)#PCI(0000)
    CimSession   : CimSession: .
    ComputerName : WIN-8136HEDM9LJ
    IsDeleted    : False
    
    输出包含 NVIDIA RTX A6000 及对应 InstanceID 即成功。

hyper-v 虚拟机创建

  1. 创建第二代(Gen2)虚拟机
    打开「Hyper-V 管理器」→ 右键本地服务器 →「新建 → 虚拟机」:
    步骤配置项具体操作
    1名称 / 位置名称:vmGPU(自定义),位置选择存储路径
    2虚拟机代数必须选择「第二代」(仅 Gen2 支持 PCIe 直通)
    3内存分配 32GB 固定内存(禁用「动态内存」)
    4网络适配器选择已配置的虚拟交换机(如「toOutside」,确保虚拟机联网)
    5虚拟硬盘创建新硬盘:VHDX 格式,大小 ≥ 100GB(动态扩展即可)
    6安装选项选择「以后安装操作系统」→ 完成
  2. 虚拟机核心配置(PowerShell 命令优先,避坑)
    由于 Server 2022 图形界面可能缺失部分选项,推荐用以下命令配置(管理员 PowerShell 执行):
    $vmName = "vmGPU"  # 替换为你的虚拟机名
    $gpuInstancePath = "PCI\VEN_10DE&DEV_2230&SUBSYS_14591028&REV_A1\4&24FCC77D&0&0010"  # 替换为你的显卡 InstancePath
    
    # 1. 启用虚拟机监控程序扩展(显卡直通必需)
    Set-VMProcessor -VMName $vmName -ExposeVirtualizationExtensions $true
    
    # 2. 确认动态内存禁用(已在创建时设置,此处验证)
    Set-VMMemory -VMName $vmName -DynamicMemoryEnabled $false -MemoryStartupBytes 32GB
    
    # 3. 绑定 RTX A6000 到虚拟机
    Add-VMAssignableDevice -VMName $vmName -InstancePath $gpuInstancePath
    
    # 4. 配置网络(关联虚拟交换机,确保联网)
    Connect-VMNetworkAdapter -VMName $vmName -SwitchName "toOutside"  # 替换为你的交换机名
  3. 图形界面补充配置(可选)
    右键虚拟机 →「设置」,验证以下项:
    「固件」:将「DVD 驱动器」移到启动顺序第一位(后续装 Ubuntu)
    「安全」:取消勾选「启用安全启动」(避免影响显卡识别)
    「硬件」:确认列表中存在「PCI Express 设备 - NVIDIA RTX A6000」
    「检查点」:确保「启用检查点」已勾选 生产检查点,启用 使用自动检查点
    「自动停止操作」: 选择当虚拟机关机时,强行关闭虚拟机
    自动停止操作
    检查点

安装 Ubuntu 22.04

ubuntu安装GPU驱动

更新系统后,安装其他工具

sudo apt update
sudo apt upgrade 

# 安装 Hyper-V 集成服务(适配硬件)
sudo apt install -y linux-tools-virtual linux-cloud-tools-virtual
sudo reboot  # 必须重启生效

禁用 nouveau 开源驱动(避免冲突)

# 创建禁用配置文件
sudo tee /etc/modprobe.d/blacklist-nouveau.conf <<EOF
blacklist nouveau
options nouveau modeset=0
EOF

# 更新内核配置
sudo update-initramfs -u
sudo reboot  # 重启后 nouveau 完全禁用

安装nvdia cuda驱动

# 1. 安装 NVIDIA 官方密钥(避免 apt 报错)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

# 2. 安装 CUDA 驱动(自动适配 RTX A6000)
sudo apt update && sudo apt install -y cuda
sudo reboot  # 重启后驱动生效

验证显卡直通成功

# 检查 NVIDIA 驱动是否加载
nvidia-smi

成功标志:显示 RTX A6000 相关信息(如温度、功耗等)

创建快照

# 1. 为虚拟机创建快照
Checkpoint-VM -Name "vmGPU" -SnapshotName "GPU success"