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 编辑 ]