V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Menci
V2EX  ›  Linux

配置 KVM 显卡直通,无法读取 vBIOS ROM

  •  
  •   Menci ·
    Menci · 2019-09-21 22:27:12 +08:00 · 6610 次点击
    这是一个创建于 1875 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正确配置 vfio-pci 并移除 i915 模块后添加 -device vfio-pci,host=00:02.0 启动虚拟机,报错:

    qemu-system-x86_64: vfio-pci: Cannot read device rom at 0000:00:02.0
    Device option ROM contents are probably invalid (check dmesg).
    Skip option ROM probe with rombar=0, or load from file with romfile=
    

    dmesg 的错误信息:

    [ 1271.531853] vfio-pci 0000:00:02.0: enabling device (0400 -> 0403)
    [ 1271.639246] vfio_ecap_init: 0000:00:02.0 hiding ecap 0x1b@0x100
    [ 1272.865197] vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
    

    添加 rombar=0 参数后虚拟机可启动,但显卡直通不工作。按照一些英文资料中的说法,在显卡在主机上工作时,dump 显卡的 vBIOS ROM:

    # cd /sys/bus/pci/devices/0000\:00\:02.0
    # echo 1 > rom
    # cat rom > /tmp/rom
    cat: rom: Input/output error
    

    此时 dmesg 的输出与上述类似。搜索了这些错误信息后发现,又多例使用 UEFI 引导无法读取,但使用 Legacy 引导成功读取的例子,但我的机器并不支持 Legacy 引导。如何解决?

    显卡型号是 HD520。

    5 条回复    2019-09-22 13:28:57 +08:00
    geekvcn
        1
    geekvcn  
       2019-09-22 09:21:13 +08:00
    内核启动参数,GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
    内核模块 /etc/modules 加上
    vfio
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd
    显卡驱动全部加到黑名单(提前开好 ssh 等远程连接):
    echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
    echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
    echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
    update-initramfs -u
    剩下的就是常规操作,确定设备 ID,设置直通,UEFI 下核显不支持,没戏,核显 vbios 写在主板 BIOS 里面的
    geekvcn
        2
    geekvcn  
       2019-09-22 09:24:28 +08:00
    但我的机器并不支持 Legacy 引导。如何解决?别折腾了,直接用 virtio-gpu (有性能损耗仅限基础使用),或者买张独显
    py2ex
        3
    py2ex  
       2019-09-22 10:58:44 +08:00
    买张独显
    danchleo
        4
    danchleo  
       2019-09-22 13:05:26 +08:00 via Android
    集显用 intel-gt 吧,独显把 vbios 导出来,其余动作和一楼说的一样的,最好系统是 uefi 引导的
    okudayukiko0
        5
    okudayukiko0  
       2019-09-22 13:28:57 +08:00 via iPhone   ❤️ 1
    集顯的 Video BIOS 是儲存在主板 BIOS 裡的,用 UEFITool 打開主板 BIOS,把 GOP(Graphics Output Protocol 縮寫)模塊提取出來,這就是 UEFI Video Driver,QEMU 可以用命令列 Load OpROM。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1035 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:13 · PVG 03:13 · LAX 11:13 · JFK 14:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.