» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[其他] J3455安装PVE折腾记录(直通GPU至Libreelec当HTPC+黑群+OMV)20190703更新简易版

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
  • zsj1zsj 激骚 +1 评分 2019-6-26 09:38
  • LcSter 激骚 +3 最骚 Rated by wap 2019-6-26 02:18

TOP

Posted by: HUAWEI VKY-AL00
妈也,比我能折腾多了



TOP

感觉有点麻烦了,其实PVE就是基于debian,所以可以直接安装xfce桌面之后安装kodi,然后设置开机自动进入kodi。HTPC不需要装在虚拟机里面,也就不需要直通核显了。而且PVE下也可以直接装docker


TOP

posted by wap, platform: Android
lz你试试在cpu没有负载的时候群晖的读写速度是不是千兆?
我朋友买的j3455和网上很多人一样碰到了低负载的时候cpu频率太低以至于不能跑满千兆读写的问题

TOP

posted by wap, platform: Android
最关键的就是 cmd里面intel_iommu=on
然后Lspci看PCI I'd

在然后 Virsh edit 编辑vm就可以了

TOP

posted by wap, platform: Android
引用:
原帖由 @長瀬湊  于 2019-6-26 03:01 发表
感觉有点麻烦了,其实PVE就是基于debian,所以可以直接安装xfce桌面之后安装kodi,然后设置开机自动进入kodi。HTPC不需要装在虚拟机里面,也就不需要直通核显了。而且PVE下也可以直接装docker
Kodi和docker不装在pve里是为了保持宿主的纯净,方便迁移备份快照,不然以后换硬盘或主板又得折腾一遍

TOP

posted by wap, platform: Android
引用:
原帖由 @qwased  于 2019-6-26 03:04 发表
lz你试试在cpu没有负载的时候群晖的读写速度是不是千兆?
我朋友买的j3455和网上很多人一样碰到了低负载的时候cpu频率太低以至于不能跑满千兆读写的问题
虚拟的黑群没这个问题,在bios里把C SATE关闭试试

TOP

posted by wap, platform: 小米5
我擦,一般人还就没这两下子。想折腾都不行。厉害

TOP

J3455还真是htpc神器,我之前买的是华擎套装

TOP

Posted by: Xiaomi MI 8
mark

TOP

posted by wap, platform: VIVO
虚拟机没办法硬件转码

TOP

引用:
原帖由 xif7456 于 2019-6-26 07:32 发表
posted by wap, platform: Android
Kodi和docker不装在pve里是为了保持宿主的纯净,方便迁移备份快照,不然以后换硬盘或主板又得折腾一遍
PVE好像没有迁移功能?没搞清楚怎么迁移

TOP

mark学习

TOP

posted by wap, platform: Android
引用:
原帖由 @yufe  于 2019-6-26 09:46 发表
虚拟机没办法硬件转码
可以转码也可以硬解,gpu都直通过去了

TOP

posted by wap, platform: Android
引用:
原帖由 @長瀬湊  于 2019-6-26 10:53 发表
PVE好像没有迁移功能?没搞清楚怎么迁移
建立集群后可以在线迁移,但有直通设备的虚拟机不能在线迁移

TOP

发新话题
     
官方公众号及微博