c0851c9e016fba6f913c46e519fa8d74.gif

c0851c9e016fba6f913c46e519fa8d74.gif

posted by wap, platform: Android

----------------------------20190703更新----------------------------------

最近帮几个网友在铭瑄和华擎的J3455板子上搞定了GPU直通,惊喜的发现vga rom是通用的

下面这个压缩包里包含了更改后的PVE配置文件和vga rom,按以下步骤操作:

1.将包里的etc usr文件夹覆盖到pve根目录

2.在shell里执行

update-grub

update-initramfs -u

3.虚拟机配置文件里添加如下:

args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=J3455_HD500.bin

hostpci0: 00:0e,rombar=0

vga: none

记得备份!!!记得备份!!!记得备份!!!

链接: https://pan.baidu.com/s/19QgiUh7r84MlqERQxc-g1w 提取码: xrds 复制这段内容后打开百度网盘手机App,操作更方便哦

密码:edfc

PS:实现直通的这批主板的HDMI固件都是1.66,如果出现死机请检查下HDMI固件的版本

PS2:转载请注明TGFC出处!

--------------------------------------------------------------------------

折腾起源于朋友的暴风矿渣,他的需求是一台机搞定HTPC+转码+硬盘休眠+群晖moments

拜托我帮他折腾,搞定后写个简单的教程当个记录,免得以后忘记了,当然过程还是挺折腾的

各位自取所需

PS:各位如果用其他CPU也实现了,麻烦跟个贴做个记录,减少后来者的折腾成本:贱 :贱

-------------------------前言---------------------------------------------

要实现他的这些需求就必须直通iGPU和SATA控制器给各个虚拟机,SATA好办

关键是GPU的直通,翻遍了全网都没有成功实现iGPU直通并输出HDMI的案例

在寻找资料的过程中找到了这个网页

https://www.redhat.com/archives/ ... -July/msg00076.html

结合pve官方wiki,关于独显直通的教程,猜测只要dump出legacy模式下的vga rom

并设定虚拟机在legacy启动的时候,加载vga rom就能成功输出

一番折腾后成功了,测试结果为

Win7无驱动,Win10卡成翔,但Libreelec能流畅播放4K原盘并源码输出至功放!!

Libreelec安装Docker+Jellyfin后还能转码hevc

但4K remux视频只有0.8-0.9的速度,也就是说一部120分钟的片子

你要等它转码10多分钟后再观看才能流畅看完一部片,算是勉强能用

PS:可惜的是J3455不能点亮HDR,不然就真的完美了:r5:

搞定后我发现这套其实用起来蛮爽的,就自己也搞了块梅捷J3455来用,也没问题

我的配置和系统架构如下:

硬件:梅捷J3455主板+内存8G*2+SATA 2口扩展卡+SATA 4口扩展卡+82576 双口网卡

虚拟机1:Libreelec

1.直通GPU看电影,Docker+Jellyfin实现影库和串流转码

2.流程播放4K原盘

3.源码直通正常点亮功放(全景声没试)

4.Jellyfin转码4K Remux的速度是0.8-0.9X

虚拟机2:黑群3617 6.21

直通82576的一个网口 和 sata 2口扩展卡

Moments正常识别人物和主题

虚拟机3:OMV

直通SATA 4口扩展卡

硬盘正常休眠

教程开始

-------------------------直通GPU前期准备---------------------------------------------

bios设置

C-state:Disable

GPU RAM:开到最大

PVE设置

第一步:开启PVE直通功能

1.内核开启IOMMU支持

vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

改为

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off,vesafb:off"

如果不需要GPU直通,改成

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

保存后执行update-grub

2.添加Vfio驱动

nano /etc/modules

添加以下内容并保存

-------分隔符---------

vfio

vfio_iommu_type1

vfio_pci

vfio_virqfd

-------分隔符---------

3.添加驱动黑名单

nano /etc/modprobe.d/blacklist.conf

添加以下内容并保存

-------分隔符---------

blacklist snd_hda_intel

blacklist snd_soc_skl

blacklist snd_hda_codec_hdmi

blacklist i915

-------分隔符---------

4.绑定iGPU至Vfio

使用lspci命令查看GPU和声卡的总线地址

然后用lspci -n -s XX:XX查询vender id并记录(XX:XX替换为你的GPU和声卡总线地址,igpu的地址一般都是00:02)

然后将查询到的vender id替换至以下命令并执行

echo "options vfio-pci ids=[igpu vender id],[声卡 vender id]" > /etc/modprobe.d/vfio.conf

具体操作请参考proxmox关于pci passthrough的wiki

如果你的主板是华擎、铭瑄、梅捷J3455则直接执行

echo "options vfio-pci ids=8086:5a85,8086:5a98" > /etc/modprobe.d/vfio.conf

5.执行以下指令

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf(未验证是否必须)

echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf(非必须)

6.更新initramfs,后重启宿主

update-initramfs -u

7.重启后,使用

lspci -v 查看gpu和声卡驱动是否绑定至Vifo

find /sys/kernel/iommu_groups/ -type l 查看iommu分组是否正确

第二步:Dump VGA romfile

1.换个临时硬盘或U盘安装个用legacy方式启动的Ubantu然后启动

2.打开终端,按以下顺序命令

a. git clone https://github.com/awilliam/rom-parser

b. cd rom-parser

c. make

d. cd /sys/bus/pci/devices/0000:02:00.0/

e. echo 1 > rom

f. cat rom > /tmp/[自定Rom文件名].bin (自定义rom文件)

g. echo 0 > rom

h. cd /tmp

i. rom-fixer [自定Rom文件名].bin

重点来了,根据提示用之前记录下的gpu vender id修复romfile

修复后,用个U盘把romfile复制出来后关机,换上pve系统的硬盘

将以上步骤dump的romfile复制到PVE /usr/share/kvm/ 目录下

至此直通GPU的前期准备就完成了

参考链接:

https://www.redhat.com/archives/ ... -July/msg00076.html

https://pve.proxmox.com/wiki/Pci_passthrough

https://github.com/awilliam/rom-parser

-------------------------以下为虚拟机安装---------------------------------------------

Libreelec虚拟机安装:

如何建立虚拟机和安装Libreelec略过不表,只挑重点的说

1.建立虚拟机时,Machine选默认的Default (i440fx)

2.启动方式选择Seabios

3.建好虚拟机后,修改虚拟机配置文件,位置:/etc/pve/qemu-server/[vmid].conf

添加以下内容

-------分隔符---------

args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=[rom文件名].bin

hostpci0: [声卡地址],rombar=0

vga: none

-------分隔符---------

若是J3455主板,直接添加以下

-------分隔符---------

args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=[rom文件名].bin

hostpci0: 00:0e,rombar=0

vga: none

-------分隔符---------

黑裙和OMV有空再写

[

本帖最后由 xif7456 于 2019-6-26 01:54 通过手机版编辑

[本帖最后由 xif7456 于 2019-7-4 14:50 编辑]

+1

最骚 Rated by wap

2019-6-26 11:02

+1

评分

2019-6-26 09:38

+3

最骚 Rated by wap

2019-6-26 02:18

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐