Linux* 上的Intel® Media Server Studio 通用(Generic)安装

在本文中,我们讨论Intel® Media Server Studio在Linux*上的安装。在 Getting Started Guide 中提供了Gold OS: CentOS* 7.1.1503的安装说明。本文解释如何安装到其他的Linux*发行版,如Ubuntu*。

请在Linux* Release Notes中检查硬件配置支持。

Intel只会处理那些可以在“Gold"配置中验证的问题。更多信息请参阅下面部分。

欢迎参阅: Media Server Studio CentOS Update Options

 

什么是"Gold", "Generic"和"Secondary OS" 安装?

Intel Media Server Studio的安装会更新很多图形软件堆栈中的组件, 如内核,i915内核模块驱动,用户模式驱动,库文件,如何libdrm和libva。

"Gold" 配置是完全验证和支持的。通常来说这是这默认并且没有更新操作系统更新镜像,如CentOS 7.1.1503。内核补丁是为默认并且没有更新的此特定版本准备的。 注意:任何影响图形堆栈和内核组件的情况,都会使得你的配置认为是通用(Generic)。 更多信息,请参阅 Media Server Studio CentOS Update Options

"Generic"方案允许你基于最小的需求创建自己的配置。更多详细信息参阅下一节。通常说,这意味着使用特定的内核分支 (3.14.5 for 16.4 drivers),但是,对于CentOS/RedHat 版本,你可使用现存的CentOS 7.1.1503 补丁作为起点。

这主要的"Gold"和"Generic"之间区别是支持的。功能上他们是相同的。但这意味着更多的自由会带来更多的责任。Intel可在"Generic"的问题上的帮助要少于"Gold"。  一般来说,任何发生来自使用Generic 安装系统问题必须要在Gold配置重现,Intel才会处理。实际上,主要的区别是安装和非媒体内核特性的支持 - 并不是Media SDK 特性本身。然而安装覆盖了一个非常宽广的范围,因此Intel只能给高层次的建议 - 如本文。

可能的下一步是把Generic 分支的 (3.14.5)内核补丁,移植到默认的非Gold配置的内核中。这个移植被认为是创建一个 "secondary OS"工程。Generic 包中的所有组件都需要这样做。通常来说,帮助移植这些补丁超出了Intel支持的范围。 

GCC, glibc 和libstdc++.so 版本:

"Generic"安装需求:

  • glibc >=2.12
  • gcc >=4.7

然而,你的Linux系统中可能有一个不同的gcc, glibc和libstdc++ 版本。

使用如下命令行在系统中检查gcc版本

[user@host]$ gcc -v
[user@host]$ gcc –version

Use following command line to check the glibc version

[user@host]$ ldd --version
ldd (GNU libc) 2.17
......

很多Linxu发行版带有更新工具或者其他的机制可以很容易的升级gcc。升级glibc被认为是更困难,并且是在产品级的系统中不推荐的。

 

Ubuntu* 14.04上安装Intel Media Server Studio

如下步骤在Ubuntu* 14.04 长期支持版本上安装Intel Media Server Studio。

注意:步骤对于其他的Ubuntu或者基于Ubuntu发行版是相似的, 如何Mint。

如果gcc版本太低,更新:

[root@host]# apt-get install g++-4.7    # 或者更高的gcc版本

Ubuntu 14.04上的安装步骤如下。你可以用root用户在MediaServerStudio*/SDK*/Generic 目录下运行如下的脚本。请注意,仅作为开始和参考使用。

install_ubuntu.sh

#!/bin/bash

echo "remove other libdrm/libva"
find /usr -name "libdrm*" | xargs rm -rf
find /usr -name "libva*" | xargs rm -rf

echo "Remove old MSS install files ..."
rm -rf /opt/intel/mediasdk
rm -rf /opt/intel/common
rm -rf /opt/intel/opencl


echo "install user mode components"
#unpack the generic package
tar -xvzf intel-linux*.tar.gz

#put the generic components in standard locations
/bin/cp -r etc/* /etc
/bin/cp -r opt/* /opt
/bin/cp -r usr/* /usr

#ensure that new libraries can be found
echo '/usr/lib64' > /etc/ld.so.conf.d/libdrm_intel.conf
echo '/usr/local/lib' >> /etc/ld.so.conf.d/libdrm_intel.conf
ldconfig

echo "install kernel build dependencies"
apt-get -y install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc g++

echo "download 3.14.5 kernel"
if [ ! -f ./linux-3.14.5.tar.xz ]; then
     wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.5.tar.xz
fi
tar -xJf linux-3.14.5.tar.xz

echo "apply kernel patches" 
cp  /opt/intel/mediasdk/opensource/patches/kmd/3.14.5/intel-kernel-patches.tar.bz2 .
tar -xvjf intel-kernel-patches.tar.bz2
cd linux-3.14.5
for i in ../intel-kernel-patches/*.patch; do patch -p1 < $i; done

echo "build patched 3.14.5 kernel" 
make olddefconfig
make -j 8
make modules_install
make install


echo "Install finished, please "
echo "1. update LD_LIBRARY_PATH to include /usr/lib64;/usr/local/lib"
echo "2. add user to video group: usermod -a -G video user"
echo "3. reboot"

在其他发行版上安装Intel Media Server Studio

基本步骤如上所述,不同点需要注意:

  • 库的位置对于不同的发行版有很大的区别。是否LD_LIBRARY_PATH 包含了Media SDK 默认库的位置,或者其他您的产品安装位置。 
  • 包管理系统和需要构建内核的软件包在不同的发行版之间有很大的区别,然而构建内核需要的软件包通常会有文档说明。
  • glibc版本:通常问题只是由于版本过于低。但实际情况可能不止这些。
  • gcc 版本(通常问题只是由于版本过于低)
    • 对于 CentOS/Redhat, 容易使用开发工具集升级
    • 对于 Ubuntu 及其派生,使用apt-get升级
    • 对于SuSE/SLES, 使用zypper升级

 

2.4 冒烟测试

'vainfo'工具可以显示Intel iHD加载,并且显示很多VAProfile入口点。

$ vainfo
libva info: VA-API version 0.99.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'iHD'
libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.99 (libva 1.67.0.pre1)
vainfo: Driver version: 16.4.4.47109-ubit
vainfo: Supported profile and entrypoints
      VAProfileH264Baseline           :	VAEntrypointEncSlice

 

https://software.intel.com/zh-cn/intel-media-server-studio-support/code-samples 下载MSDK 示例代码

[user@host]$ ./sample_multi_transcode_drm -hw -i::h264 input.h264 -o::h264 out.h264

 

重新编译libva 和 libdrm (可选)

 Media Server Studio 包含了所使用libdrm和libva的全部源码。基于prefix的不同配置,你可能需要更新LD_LIBRARY_PATH以便安装后可以找到库文件, 另外,记得首先移除其他的libdrm和libva版本。

find /usr -name "libdrm*" | xargs rm -rf
find /usr -name "libva*" | xargs rm -rf

 

1. 重建和安装libdrm:

[user@host msdk_install]$ cp /opt/intel/mediasdk/opensource/libdrm/*/libdrm-2.4.54.tar.bz2 .
[user@host msdk_install]$ tar xf libdrm-2.4.54.tar.bz2
[user@host msdk_install]$ cd libdrm-2.4.54
[user@host libdrm-2.4.54]$ ./configure --prefix=/usr/local
[user@host libdrm-2.4.54]$ make
[root@host libdrm-2.4.54]# make install

2. 重建和安装libva:

[user@host msdk_install]$ cp /opt/intel/mediasdk/opensource/libva/*/libva-1.3.1.tar.bz2 .
[user@host msdk_install]$ tar xf libva-1.3.1.tar.bz2
[user@host msdk_install]$ cd libva-1.3.1
[user@host libva-1.3.1]$ ./configure --prefix=/usr/local --with-drivers-path=/opt/intel/mediasdk/lib64
[user@host libva-1.3.1]$ make
[root@host libva-1.3.1]# make install

注意: 请首先编译libdrm,因为libva依赖于libdrm。

有关编译器优化的更完整信息,请参阅优化通知