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

刚整了个家用 pve 服务器, 5950x+rx6400, 记录一下 a 卡显卡直通碰到的坑

  •  1
     
  •   zx900930 ·
    zx900930 · 2022-06-25 07:25:45 +08:00 · 6584 次点击
    这是一个创建于 883 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主板是 MSI MEG x570 unify, 升了最新的 BIOS

    • 无法进入 pve 安装界面

    这是因为最新的 BIOS 为了支持 Win11, 自动把 TPM 给打开了, 去 BIOS 里关闭 TPM

    如果默认开了 Safe Boot, 也要关掉(有 work around 可以开着 Safe Boot 进行后面的安装可是太麻烦, 建议直接关掉.

    顺便 Resizable BAR 会导致 windows 虚拟机显卡代码 43, 所以最好也关掉.

    当然 IOMMU 和 AMD-V 是必开的这就不用多说了.

    宿主机 pve 7.2

    • pve 安装时获取完 DHCP 地址就卡死在启动安装 GUI, 看 log 错误是显卡驱动问题导致 xorg 无法启动

    解决办法用 debug 模式安装, 在出错后 ctrl+c 中断, 并执行以下命令

    $ chmod 1777 /tmp 
    $ Xorg -configure   
    $ mv /xorg.conf.new /etc/X11/xorg.conf
    $ nano /etc/X11/xorg.conf # 把所有 Driver "amdgpu" 替换成 "fbdev" 会有多个设备, 全都要改. 
    $ startx
    

    就可以正常打开安装 GUI 进行安装

    • 安装完毕后宿主机识别不了显卡

    这个简单, 只需要更新一下包就行, 最新的 mesa 驱动里就有最新的 amd 显卡支援

    # 先更新软件包
    sudo apt update && apt upgrade -y
    
    # 再更新 pciid 数据库
    update-pciids
    

    虚拟机是 debian 11

    然后按步就搬显卡直通给虚拟机(这个网上教程一大堆,我只写新 A 卡需要注意的地方)

    • 直通后虚拟机启动一半停住, 报错
    [drm:psp_sw_init [amdgpu]] *ERROR* Failed to load psp firmware!
    

    需要更新 firmware

    # 先进到 home
    cd ~ 
    
    # 创建一个文件夹来放固件
    mkdir fw
    
    # 下载最新固件
    git clone   git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git fw
    
    # 再确认一下下载的固件是否正常
    ls fw
    
    # 确认没问题就可以更新固件了
    rsync -avh fw/amdgpu/* /lib/firmware/amdgpu/
    

    也可以添加 backports 源并更新 firmware-amd-graphics 但是不保证能解决问题

    如果你要使用 xorg, 启动还是会报错:

    [     5.485] (EE) open /dev/fb0: No such file or directory
    [     5.485] vesa: Ignoring device with a bound kernel driver
    [     5.485] (EE) Screen 0 deleted because of no matching config section.
    [     5.485] (II) UnloadModule: "modesetting"
    [     5.485] (EE) Screen 0 deleted because of no matching config section.
    [     5.485] (II) UnloadModule: "fbdev"
    [     5.485] (II) UnloadSubModule: "fbdevhw"
    [     5.485] (EE) Screen 0 deleted because of no matching config section.
    [     5.485] (II) UnloadModule: "vesa"
    [     5.485] (EE) Device(s) detected, but none match those in the config file.
    [     5.485] (EE)
    Fatal server error:
    [     5.485] (EE) no screens found(EE)
    [     5.485] (EE)
    

    这是因为 xorg 会去找不同的驱动 需要强制让 xorg 使用 amdgpu 驱动

    #修改 xorg 配置文件
    nano /etc/X11/xorg.conf
    
    #强制使用 amdgpu 驱动
    Section "Device"
         Identifier "Device0"
         Driver     "amdgpu"
    EndSection
    

    再重启, dmesg | grep -i amdgpu 显示正常初始化, xorg 日志显示

    (II) AMDGPU(0): Setting screen physical size to 381 x 238
    

    正常加载问题解决

    主要都是驱动和固件的问题, 还有 rx6400 这显卡是完全没有 Encoding 的, 只适合拿来输出图像, 不适合用来做影音服务器, 属于性价比巨低的亮机卡.(我主要是拿来跑一个需要 3d 渲染的小项目, 6400 也够了)

    23 条回复    2022-08-23 17:08:58 +08:00
    geekvcn
        1
    geekvcn  
       2022-06-25 09:41:41 +08:00 via Android
    不超频当服务器 AMD 家用平台建议用华擎,华擎支持纯 ECC ,微星不支持,另外 AMD 家用做服务器处理器很多特性也能支持,比如 SR-IOV ,Intel 家用平台就不支持。所以国外很多小鸡直接用 AMD 家用处理器搭服务器了。

    另外虚拟机里吧用不到的显卡内核模块加到黑名单就行了或者虚拟机不要给 vGPU ,当然改 xorg 配置文件也行。AMD 这种多 CCD 处理器调度和内部 IF 总线速度和延时虽然比 NUMA 架构强太多,但是建议还是把各种中断,单个虚拟机或容器绑到单 CCD 上,能提高一定性能,需要渲染等并行任务的虚拟机和容器再绑定全部两个 CCD 内核
    mingl0280
        2
    mingl0280  
       2022-06-25 10:30:56 +08:00
    R730 安装 PVE:写 U 盘,关掉 Safe Boot ,安装,设 IP ,进界面……
    tcpdump
        3
    tcpdump  
       2022-06-25 10:54:37 +08:00
    待机功耗如何
    sjmcefc2
        4
    sjmcefc2  
       2022-06-25 10:59:22 +08:00
    请教如何把现有的物理机转换到 pve 里面呢?
    sjmcefc2
        5
    sjmcefc2  
       2022-06-25 10:59:58 +08:00
    @tcpdump 感觉这个功耗要上 100w 了
    2NUT
        6
    2NUT  
       2022-06-25 12:55:50 +08:00
    @sjmcefc2 #4 搜索关键词 p2v
    Dk2014
        7
    Dk2014  
       2022-06-25 13:37:52 +08:00 via Android
    @tcpdump 目测 70w 起步,我的 56x 待机 55w ,还不是 performance 模式
    zx900930
        8
    zx900930  
    OP
       2022-06-25 15:44:56 +08:00
    @geekvcn blacklist 是肯定加了的毕竟官方文档就写了, 只是官方文档还有个没有提到, 新内核需要新的参数
    video=simplefb:off
    否则宿主机会报错:
    ```
    BAR 0: can't reserve [mem 0xe0000000-0xefffffff 64bit pref]
    ```

    最终的内核参数是这样的:
    ```
    quiet iommu=pt vfio_iommu_type1.allow_unsafe_interrupts=1 video=vesafb:off video=efifb:off video=simplefb:off
    ```

    vfio-pci 设置
    ```
    echo "options vfio-pci ids=你的显卡设备 id disable_vga=1" > /etc/modprobe.d/vfio.conf
    ```
    驱动黑名单
    ```
    echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
    echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
    echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
    ```
    sjmcefc2
        9
    sjmcefc2  
       2022-06-25 17:57:45 +08:00
    @2NUT esxi 是用以前老掉牙的一个 convert 软件,


    starwind 有一款转换软件,但是不能存储到本地,

    好像是没有找到 pve 专用的转换软件啊?
    2NUT
        10
    2NUT  
       2022-06-25 18:03:31 +08:00
    @sjmcefc2 #9 我专门孤岛过, 没有老掉牙, esxi 的那个有新的版本, 甚至 hyper-v 都有相关工具,

    physical to virtual
    LLaMA2
        11
    LLaMA2  
       2022-06-25 18:20:22 +08:00
    简单明了,社区感谢有你
    sidkang
        12
    sidkang  
       2022-06-25 18:23:06 +08:00
    电脑配置类似,我的内核参数只加了这些,`quiet amd_iommu=on`,一定不能加的是 `iommu=pt`,最新的 7.2 加了这个参数反而会无法正常启动。
    zx900930
        13
    zx900930  
    OP
       2022-06-25 18:38:41 +08:00 via Android
    @sidkang 其实可以正常启动,但是 pt 没用,并不能提升性能,amd_iommu 可以不加,因为 amd 的 iommu 默认就是 on 的,intel 必须加。
    sidkang
        14
    sidkang  
       2022-06-25 18:56:15 +08:00
    @zx900930 这就比较吊诡了,我在 6.X 的时候就已经配置了这个参数,近期更换硬盘重启了一回发现了这个问题,查了半天才发现是这个参数的锅,配置是 5950x+x570+2060s
    yangzhaofeng
        15
    yangzhaofeng  
       2022-06-26 00:09:49 +08:00 via Android
    tpm 可以開,但是 secure boot 開著的話安裝就會比較麻煩了
    chancat
        16
    chancat  
       2022-06-28 05:42:55 +08:00 via Android
    真有钱
    hanssx
        17
    hanssx  
       2022-06-28 13:06:18 +08:00
    @zx900930 7.2 默认开了 iommu 了
    https://pve.proxmox.com/wiki/Roadmap#Proxmox_VE_7.2
    intel_iommu now defaults to on. The kernel config of the new 5.15 series enables the intel_iommu parameter by default
    zx900930
        18
    zx900930  
    OP
       2022-06-28 15:29:32 +08:00 via Android
    @hanssx 谢谢告知,内核参数洁癖症有福了
    hanssx
        19
    hanssx  
       2022-07-24 23:51:10 +08:00
    @zx900930 我回来了,xorg 是可以用独显来显示远程桌面的吗?另外有办法进正在开机使用的同一会话吗?我每次 xrdp xorg 都会进另外一个单独的会话。
    zx900930
        20
    zx900930  
    OP
       2022-07-25 02:03:54 +08:00 via Android
    @hanssx 我用的 ThinLinc ,远程连桌面不会 start a new session ,可以透过 VirtualGL 使用独立显卡加速。
    但是 VirtualGL 只适用于 opengl 驱动的图形软件,不适用于 vulcan 。 需要 vulkan 的可能需要去买个 dummy plug 插在你的独显上。
    hanssx
        21
    hanssx  
       2022-07-25 10:49:30 +08:00
    @zx900930 感谢老哥,你说的这个软件 ThinLinc ,我在 V 站搜了下,就 2 个相关帖子,这玩意儿有啥优势吗。
    zx900930
        22
    zx900930  
    OP
       2022-07-25 16:49:59 +08:00   ❤️ 1
    @hanssx 就是性能好, 支持硬件加速, 企业解决方案, 可以理解为以 linux 为第一目标系统的 Parsec, 缺点就是收费吧.
    不然的话一般维护使用其实 VNC 或者 VNC 衍生的就够用了.
    hanssx
        23
    hanssx  
       2022-08-23 17:08:58 +08:00
    @zx900930 请教一下这个 ThinLinc ,我装好之后,在 Windows 上面连接使用,发现确实快一些,但是仍然没有启用 GPU ,如何才能启用呢,装一个 VirtualGL 吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1159 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:55 · PVG 07:55 · LAX 15:55 · JFK 18:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.