PVE直通Intel核显虚拟机配置ffmpeg-qsv硬件加速
时间:2021-12-17 16:29 来源:linux.it.net.cn 作者:IT
PVE Intel 核显直通配置
首先需要安装好PVE,我所安装的PVE是6.4-9版本,不同版本的PVE配置有所不同,PVE 6版本的配置应该相同,可以根据自己的实际情况来对配置进行相应的修改。
其次是需要在主板中打开CPU虚拟化设置,打开VT-d选项。
以下为配置内容
在PVE Web界面中选中pve节点,然后选中 shell 面板,修改iommu配置文件: /etc/default/grub
# 将 GRUB_CMDLINE_LINUX_DEFAULT="quiet"
# 替换为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off,vesafb:off"
更新 grub
update-grub
模块加载配置:/etc/modules
# 文件末尾添加以下内容
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
驱动黑名单配置:/etc/modprobe.d/pve-blacklist.conf
# 添加以下内容
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915
获取显卡硬件id:
lspci -nn | grep -Ei 'vga|display'
>>
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 510 [8086:1902] (rev 06)
返回值中,8086:1902 即为显卡的硬件id。将其写入直通设备配置文件中 /etc/modprobe.d/vfio.conf
# 添加以下内容,id根据自己显卡实际修改
options vfio-pci ids=8086:1902
完成配置后,重启即可。如果有接显示屏,可以看到显示屏显示和之前不一样(没有出现PVE ip及登录指示),即为禁用驱动成功。
虚拟机
虚拟机我使用 ubuntu 20.04 的操作系统。在创建虚拟机时,添加PCI硬件,选中显卡,然后显示选项选择标准VGA(否则控制台则无法显示及虚拟机无法启动),CPU选择host模式,其他默认即可。
完成创建后,启动虚拟机完成系统安装即可。
Intel 驱动安装
在之前的文章里,直接使用 apt 安装 intel-media-va-driver-non-free ,但是这个并不是最新的版本,我们可以在 Intel 的官网上找到相应的文档,通过添加源来安装最新的版本。
General Purpose GPU Drivers for Linux* Operating Systems
登录上面地址,在页面中根据提示填入GPU的id,具体方法可以参考页面中的介绍或者上文提到的命令。然后选择操作系统,接下来根据下面的提示完成即可。
以下为我使用的G4400,HD510核显的操作:
sudo apt-get install -y gpg-agent wget
wget -qO - https://repositories.intel.com/graphics/intel-graphics.key |
sudo apt-key add -
sudo apt-add-repository \
'deb https://repositories.intel.com/graphics/ubuntu focal main'
sudo apt update
驱动及相关软件安装
接下来,开始配置驱动及相关的库和软件。
Intel Media Driver for VAAPI 安装
Ps:Intel Media Driver for VAAPI 有对显卡有要求,我试过使用第四代Intel CPU安装,会导致安装失败,安装这个软件包需要显卡支持iHD才行,老CPU只支持i965 i915,请根据实际情况自行处理和选择。
sudo apt-get install libmfx1 libmfx-tools
sudo apt-get install libva-dev libmfx-dev intel-media-va-driver-non-free
sudo apt-get install vainfo
安装完成后,更改以下配置文件,一般为 .bashrc 如果安装了 zsh,则是 .zshrc
# 在文件末尾添加
export LIBVA_DRIVER_NAME=iHD
完成后,使用 vainfo 来检查是否成功。
sudo vainfo
>>
error: XDG_RUNTIME_DIR not set in the environment.
error: can't connect to X server!
libva info: VA-API version 1.11.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_11
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.11 (libva 2.11.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 21.2.1 (12ca7a4)
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointFEI
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointFEI
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointFEI
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointFEI
Intel Media SDK 编译
首先安装所需要的依赖:
sudo apt-get install git cmake pkg-config build-essential
sudo apt-get install meson libdrm-dev automake libtool
然后下载 MSDK 源码
git clone https://github.com/Intel-Media-SDK/MediaSDK msdk
进入目录:
cd msdk
接下来就可以开始编译了:
mkdir build && cd build
cmake ..
make
# 如果没有报错,可以执行安装
sudo make install
安装完成后,需要再完善以下环境变量的配置,同样修改 .bashrc 或者 .zshrc :
# 在文件末尾添加
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
export LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri/
export LD_LIBRARY_PATH=/opt/intel/mediasdk/lib/
ffmpeg编译安装
完成上述步骤,就可以开始 ffmpeg 编译了。
首先还是先下载源码:
git clone https://github.com/ffmpeg/ffmpeg
1
这里默认编译的是最新的开发版,一般为了稳定,我们可以选择上一个稳定版,可以在 Github 页面上找到,比如我们想要 n4.4 版本的 ffmpeg,就可以找到对应的 commit dc91b91。
cd ffmpeg
git checkout dc91b91
接下来可以开始编译:
cd ffmpeg
./configure --arch=x86_64 --disable-yasm --enable-vaapi --enable-libmfx
make -j8
# 如果没有报错 即可安装
sudo make install
到这里,我们的 全部步骤都已经完成了。
最后,可以测试一下 ffmpeg 是否能正常已经安装好了 qsv:
ffmpeg -codecs | grep qs
>>
ffmpeg version n4.4 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 9 (Ubuntu 9.3.0-17ubuntu1~20.04)
configuration: --arch=x86_64 --disable-yasm --enable-vaapi --enable-libmfx
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
D.V.L. av1 Alliance for Open Media AV1 (decoders: av1 av1_qsv )
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_v4l2m2m h264_qsv ) (encoders: h264_qsv h264_v4l2m2m h264_vaapi )
DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc hevc_qsv hevc_v4l2m2m ) (encoders: hevc_qsv hevc_v4l2m2m hevc_vaapi )
DEVIL. mjpeg Motion JPEG (decoders: mjpeg mjpeg_qsv ) (encoders: mjpeg mjpeg_qsv mjpeg_vaapi )
DEV.L. mpeg2video MPEG-2 video (decoders: mpeg2video mpegvideo mpeg2_v4l2m2m mpeg2_qsv ) (encoders: mpeg2video mpeg2_qsv mpeg2_vaapi )
D.V.L. vc1 SMPTE VC-1 (decoders: vc1 vc1_qsv vc1_v4l2m2m )
DEV.L. vp8 On2 VP8 (decoders: vp8 vp8_v4l2m2m vp8_qsv ) (encoders: vp8_v4l2m2m vp8_vaapi )
DEV.L. vp9 Google VP9 (decoders: vp9 vp9_v4l2m2m vp9_qsv ) (encoders: vp9_vaapi vp9_qsv )
可以看到,我们到这里就完成了所有配置。
Tips
为了方便日后卸载重装软件,建议可以保留源码文件及 build 文件,删除只需要进入文件夹,执行 sudo make uninstall 及可完成卸载。
为了方便观察GPU的使用情况,可以安装 intel-gpu-tools ,具体如下:
sudo apt install intel-gpu-tools
# 查看GPU 使用情况
sudo intel_gpu_top
>>
intel-gpu-top - 512/ 526 MHz; 0% RC6; ----- (null); 1496 irqs/s
IMC reads: ------ (null)/s
IMC writes: ------ (null)/s
ENGINE BUSY MI_SEMA MI_WAIT
Render/3D/0 61.68% |█████████████████████▌ | 4% 0%
Blitter/0 0.00% | | 0% 0%
Video/0 68.50% |███████████████████████▉ | 40% 0%
VideoEnhance/0 0.00% | | 0% 0%
# 使用 Ctrl+C 退出
总结
本文从PVE直通显卡开始,到如何配置驱动及相关软件、库的编译安装,到最后编译ffmpeg,基本涵盖了大部分配置中可能遇到的问题。希望本文对你有帮助。
(责任编辑:IT)
PVE Intel 核显直通配置 首先需要安装好PVE,我所安装的PVE是6.4-9版本,不同版本的PVE配置有所不同,PVE 6版本的配置应该相同,可以根据自己的实际情况来对配置进行相应的修改。 其次是需要在主板中打开CPU虚拟化设置,打开VT-d选项。 以下为配置内容 在PVE Web界面中选中pve节点,然后选中 shell 面板,修改iommu配置文件: /etc/default/grub # 将 GRUB_CMDLINE_LINUX_DEFAULT="quiet" # 替换为: GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off,vesafb:off" 更新 grub update-grub 模块加载配置:/etc/modules # 文件末尾添加以下内容 vfio vfio_iommu_type1 vfio_pci vfio_virqfd 驱动黑名单配置:/etc/modprobe.d/pve-blacklist.conf # 添加以下内容 blacklist snd_hda_intel blacklist snd_hda_codec_hdmi blacklist i915 获取显卡硬件id: lspci -nn | grep -Ei 'vga|display' >> 00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 510 [8086:1902] (rev 06) 返回值中,8086:1902 即为显卡的硬件id。将其写入直通设备配置文件中 /etc/modprobe.d/vfio.conf # 添加以下内容,id根据自己显卡实际修改 options vfio-pci ids=8086:1902 完成配置后,重启即可。如果有接显示屏,可以看到显示屏显示和之前不一样(没有出现PVE ip及登录指示),即为禁用驱动成功。 虚拟机 虚拟机我使用 ubuntu 20.04 的操作系统。在创建虚拟机时,添加PCI硬件,选中显卡,然后显示选项选择标准VGA(否则控制台则无法显示及虚拟机无法启动),CPU选择host模式,其他默认即可。 完成创建后,启动虚拟机完成系统安装即可。 Intel 驱动安装 在之前的文章里,直接使用 apt 安装 intel-media-va-driver-non-free ,但是这个并不是最新的版本,我们可以在 Intel 的官网上找到相应的文档,通过添加源来安装最新的版本。 General Purpose GPU Drivers for Linux* Operating Systems 登录上面地址,在页面中根据提示填入GPU的id,具体方法可以参考页面中的介绍或者上文提到的命令。然后选择操作系统,接下来根据下面的提示完成即可。 以下为我使用的G4400,HD510核显的操作: sudo apt-get install -y gpg-agent wget wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | sudo apt-key add - sudo apt-add-repository \ 'deb https://repositories.intel.com/graphics/ubuntu focal main' sudo apt update 驱动及相关软件安装 接下来,开始配置驱动及相关的库和软件。 Intel Media Driver for VAAPI 安装 Ps:Intel Media Driver for VAAPI 有对显卡有要求,我试过使用第四代Intel CPU安装,会导致安装失败,安装这个软件包需要显卡支持iHD才行,老CPU只支持i965 i915,请根据实际情况自行处理和选择。 sudo apt-get install libmfx1 libmfx-tools sudo apt-get install libva-dev libmfx-dev intel-media-va-driver-non-free sudo apt-get install vainfo 安装完成后,更改以下配置文件,一般为 .bashrc 如果安装了 zsh,则是 .zshrc # 在文件末尾添加 export LIBVA_DRIVER_NAME=iHD 完成后,使用 vainfo 来检查是否成功。 sudo vainfo >> error: XDG_RUNTIME_DIR not set in the environment. error: can't connect to X server! libva info: VA-API version 1.11.0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_11 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.11 (libva 2.11.0) vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 21.2.1 (12ca7a4) vainfo: Supported profile and entrypoints VAProfileNone : VAEntrypointVideoProc VAProfileNone : VAEntrypointStats VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Simple : VAEntrypointEncSlice VAProfileMPEG2Main : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264Main : VAEntrypointFEI VAProfileH264Main : VAEntrypointEncSliceLP VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileH264High : VAEntrypointFEI VAProfileH264High : VAEntrypointEncSliceLP VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointEncPicture VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointFEI VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP VAProfileVP8Version0_3 : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSlice VAProfileHEVCMain : VAEntrypointFEI Intel Media SDK 编译 首先安装所需要的依赖: sudo apt-get install git cmake pkg-config build-essential sudo apt-get install meson libdrm-dev automake libtool 然后下载 MSDK 源码 git clone https://github.com/Intel-Media-SDK/MediaSDK msdk 进入目录: cd msdk 接下来就可以开始编译了: mkdir build && cd build cmake .. make # 如果没有报错,可以执行安装 sudo make install 安装完成后,需要再完善以下环境变量的配置,同样修改 .bashrc 或者 .zshrc : # 在文件末尾添加 export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/ export LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri/ export LD_LIBRARY_PATH=/opt/intel/mediasdk/lib/ ffmpeg编译安装 完成上述步骤,就可以开始 ffmpeg 编译了。 首先还是先下载源码: git clone https://github.com/ffmpeg/ffmpeg 1 这里默认编译的是最新的开发版,一般为了稳定,我们可以选择上一个稳定版,可以在 Github 页面上找到,比如我们想要 n4.4 版本的 ffmpeg,就可以找到对应的 commit dc91b91。 cd ffmpeg git checkout dc91b91 接下来可以开始编译: cd ffmpeg ./configure --arch=x86_64 --disable-yasm --enable-vaapi --enable-libmfx make -j8 # 如果没有报错 即可安装 sudo make install 到这里,我们的 全部步骤都已经完成了。 最后,可以测试一下 ffmpeg 是否能正常已经安装好了 qsv: ffmpeg -codecs | grep qs >> ffmpeg version n4.4 Copyright (c) 2000-2021 the FFmpeg developers built with gcc 9 (Ubuntu 9.3.0-17ubuntu1~20.04) configuration: --arch=x86_64 --disable-yasm --enable-vaapi --enable-libmfx libavutil 56. 70.100 / 56. 70.100 libavcodec 58.134.100 / 58.134.100 libavformat 58. 76.100 / 58. 76.100 libavdevice 58. 13.100 / 58. 13.100 libavfilter 7.110.100 / 7.110.100 libswscale 5. 9.100 / 5. 9.100 libswresample 3. 9.100 / 3. 9.100 D.V.L. av1 Alliance for Open Media AV1 (decoders: av1 av1_qsv ) DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_v4l2m2m h264_qsv ) (encoders: h264_qsv h264_v4l2m2m h264_vaapi ) DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc hevc_qsv hevc_v4l2m2m ) (encoders: hevc_qsv hevc_v4l2m2m hevc_vaapi ) DEVIL. mjpeg Motion JPEG (decoders: mjpeg mjpeg_qsv ) (encoders: mjpeg mjpeg_qsv mjpeg_vaapi ) DEV.L. mpeg2video MPEG-2 video (decoders: mpeg2video mpegvideo mpeg2_v4l2m2m mpeg2_qsv ) (encoders: mpeg2video mpeg2_qsv mpeg2_vaapi ) D.V.L. vc1 SMPTE VC-1 (decoders: vc1 vc1_qsv vc1_v4l2m2m ) DEV.L. vp8 On2 VP8 (decoders: vp8 vp8_v4l2m2m vp8_qsv ) (encoders: vp8_v4l2m2m vp8_vaapi ) DEV.L. vp9 Google VP9 (decoders: vp9 vp9_v4l2m2m vp9_qsv ) (encoders: vp9_vaapi vp9_qsv ) 可以看到,我们到这里就完成了所有配置。 Tips 为了方便日后卸载重装软件,建议可以保留源码文件及 build 文件,删除只需要进入文件夹,执行 sudo make uninstall 及可完成卸载。 为了方便观察GPU的使用情况,可以安装 intel-gpu-tools ,具体如下: sudo apt install intel-gpu-tools # 查看GPU 使用情况 sudo intel_gpu_top >> intel-gpu-top - 512/ 526 MHz; 0% RC6; ----- (null); 1496 irqs/s IMC reads: ------ (null)/s IMC writes: ------ (null)/s ENGINE BUSY MI_SEMA MI_WAIT Render/3D/0 61.68% |█████████████████████▌ | 4% 0% Blitter/0 0.00% | | 0% 0% Video/0 68.50% |███████████████████████▉ | 40% 0% VideoEnhance/0 0.00% | | 0% 0% # 使用 Ctrl+C 退出 总结 本文从PVE直通显卡开始,到如何配置驱动及相关软件、库的编译安装,到最后编译ffmpeg,基本涵盖了大部分配置中可能遇到的问题。希望本文对你有帮助。 (责任编辑:IT) |