linux 从源码编译intel核显(集成显卡)官方最新驱动

一.探索版(带坑,想直接编译的可以跳过这部分看直接版)

前段时间由于项目需要,需要使用intel NUC设备,拿到设备立马装上ubuntu14.04系统,装上系统后发现显卡驱动没装上,直接导致的结果就是三维显示(渲染)效果很卡顿。

google了一下大概找到了原因,因为这款 intel NUC使用的是处理器为i7,14.04中内核中没有对应的驱动(这点不敢苟同,因为我另一台笔记本也是i7处理器,装的ubuntu14.04系统,并没有出现驱动安装不了的情况)。但是人家确实解决了驱动装不上的问题。

于是先不深究,把内核升级一把看看效果再说,内核升级方法:

最简单的内核升级方法是直接下载内核deb包,然后dpkg安装,步骤如下(以kernel4.13为例):

1.下载内核deb包

  wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-headers-4.13.0-041300_4.13.0-041300.201709031731_all.deb

  wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-headers-4.13.0-041300-generic_4.13.0-041300.201709031731_amd64.deb

  wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-image-4.13.0-041300-generic_4.13.0-041300.201709031731_amd64.deb

2.安装内核

  sudo dpkg -i linux*

3.重启系统

  sudo reboot

系统重启后可能遇到 "low graphics mode" 问题。解决方法:

1.进终端并登陆 Ctrl + Alt +F1

2.设置xorg.conf

  sudo cp /etc/X11/xorg.conf.failsafe /etc/X11/xorg.conf

3.重启系统

  sudo reboot 

到这里内核算是升级完成了。进入系统查看驱动安装情况 

输入 lshw -c video 可以看到这时显卡驱动已经安装上 (driver=i915),感觉胜利的曙光就在眼前。

 重新打开三维显示程序才发现开心的太早,仍然存在卡顿的问题。途中更换到16.04系统中发现系统可以自动识别显卡。

inxi -c 5 -b 查看intel设备信息。发现两个系统的mesa库版本不同,考虑应该是14.04中的mesa版本过低。

于是按照intel官方网站的说明文档从git中下载最新的mesa库编译。

编译之前先安装apt-file,在编译过程中遇到 ”package not found“ 的情况时查找库所在安装包。

1安装

  sudo apt-get install apt-file

2使用

  apt-file search 缺少的库name

编译步骤如下:

1.编译libdrm

  git clone git://anongit.freedesktop.org/mesa/drm

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX --libdir=$MY_DISTRO_LIBDIR

  make

  sudo make install

 

2.编译mesa

  git clone git://anongit.freedesktop.org/mesa/mesa

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX --libdir=$MY_DISTRO_LIBDIR --with-dri-drivers="i915 i965" --with-dri-driverdir=$MY_DISTRO_PREFIX/lib/dri --enable-gles1--enable-gles2  --enable-shared-glapi  --with-gallium-drivers= --with-egl-platforms=x11,drm --enable-texture-float --enable-gbm --enable-glx-tls --enble-dri3
 
  make

  sudo make install

 

安装完mesa后 inxi -c 5 -b 发现系统使用的仍未原先的mesa版本,考虑到应该是要把驱动重新安装。

于是按照intel官网步骤一步步来。

变量说明: $MY_DISTRO_PREFIX = /usr $MY_DISTRO_LIBDIR=/usr/lib/x86_64-linux-gnu

1.编译显卡驱动

  git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-intel

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX --libdir=$MY_DISTRO_LIBDIR  

  make

  sudo make install

 

2.编译xserver(这步是巨坑)

  git clone git://git.freedesktop.org/git/xorg/xserver

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX

  make

  sudo make install

 

3.编译libbva

  git clone git://git.freedesktop.org/git/vaapi/libva

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX 

  make

  sudo make install

 

4.编译vappi driver

  git clone git://git.freedesktop.org/git/vaapi/intel-driver

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX 

  make

  sudo make install

 

5.编译 cairo

  git clone git://git.freedesktop.org/git/cairo

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX 

  make

  sudo make install

 

6.编译intel-gpu-tools

  git clone git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX --libdir=$MY_DISTRO_LIBDIR --disable-amdgpu

  make

  sudo make install

编译完重启,恩,发现连图像界面都进不去了。

Ctrl+Alt F1 进终端查看系统log(/var/log/Xorg.0.log)。发现version mismatch 错误。

google之后找到原因,是因为xserver编译更新之后,所有的驱动都得重新编译一遍(所有的驱动都是依赖xserver的,每个版本xserver有ABI编号,驱动编译时依赖的ABI和当前xserver的ABI不匹配就会出现界面进不去的情况)。

intel官方给的文档是先编译驱动再编译xserver,这就导致了最终编译的显卡驱动和更新的xserver ABI不匹配。

于是重新编译所有驱动(重复步骤 1,3,4,5,6)。

reboot 重启电脑。发现鼠标键盘不能用了。于是重新编译鼠标键盘驱动步骤如下:

1.下载 xf86-input-evdev(大部分插拔设备的驱动) xf86-input-mouse xf86-input-keyboard

  wget https://www.x.org/archive/individual/driver/xf86-input-evdev-2.10.0.tar.gz
  wget https://www.x.org/archive/individual/driver/xf86-input-mouse-1.9.2.tar.gz
  wget https://www.x.org/archive/individual/driver/xf86-input-keyboard-1.9.0.tar.gz

  tar xvf xf86-input-evdev-2.10.0.tar.gz

  tar xvf xf86-input-mouse-1.9.2.tar.gz

  tar xvf xf86-input-keyboard-1.9.0.tar.gz

2.驱动编译

  1)evdev编译

    cd xf86-input-evdev-2.10.0

    ./configure --prefix=/usr

    make&&sudo make install

  2)鼠标驱动编译

    cd xf86-input-mouse-1.9.2

    ./configure --prefix=/usr

    make && sudo make install

  3)键盘驱动编译

    cd xf86-input-keyboard-1.9.0

    ./configure --prefix=/usr

    make && sudo make install

最后重启系统

  reboot

大功告成。

  

 二. 直接版

1.升级内核(见前文)

2.依赖安装

  sudo apt-get update
  sudo apt-get upgrade
  sudo apt-get install x11proto-dri2-dev build-essential x11-common xutils-dev \
            flex bison xcb libx11-xcb-dev libxcb-glx0 \
            libxcb-glx0-dev xorg-dev libxcb-xfixes0-dev zlib1g \
            zlib1g-dev x11proto-gl-dev libpciaccess-dev libdri2-dev \
            libxcb-dri2-0-dev pkg-config libpixman-1-dev libx11-dev x11proto-gl-dev \
            libglib2.0-dev libgl1-mesa-dev x11proto-xf86dri-dev libgcrypt11-dev x11proto-xcmisc-dev \
            x11proto-bigreqs-dev x11proto-randr-dev x11proto-render-dev x11proto-fonts-dev libepoxy-dev \
            libkmod2 libkmod-dev libunwind8-dev \
            libudev-dev libevdev-dev libmtdev-dev autoconf automake libtool python-dev python-mako

2.显卡驱动编译

  环境变量设置

  Fedora 64 bits: 

  export MY_DISTRO_PREFIX=/usr

  export MY_DISTRO_LIBDIR=/usr/lib64

  Ubuntu 64 bits:

  export MY_DISTRO_PREFIX=/usr

  export MY_DISTRO_LIBDIR=/usr/lib/x86_64-linux-gnu

  1)首先从intel官网下载所需源码包 下载地址 https://01.org/zh/linuxgraphics/downloads/stack (也可不下载直接git获取) 官方说明文档 https://01.org/linuxgraphics/documentation/build-guide-0

  4)编译xserver

    git clone git://git.freedesktop.org/git/xorg/xserver

    ./autogen.sh --prefix=$MY_DISTRO_PREFIX

    make && sudo make install

  2)编译libdrm

  git clone git://anongit.freedesktop.org/mesa/drm

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX --libdir=$MY_DISTRO_LIBDIR

  make

  sudo make install

 

  3)编译mesa

    git clone git://anongit.freedesktop.org/mesa/mesa

     ./autogen.sh --prefix=$MY_DISTRO_PREFIX --libdir=$MY_DISTRO_LIBDIR --with-dri-drivers="i915 i965" --with-dri-driverdir=$MY_DISTRO_PREFIX/lib/dri --enable-gles1--enable-gles2  --enable-shared-glapi  --with-gallium-drivers= --with-egl-platforms=x11,drm --enable-texture-float --enable-gbm --enable-glx-tls --enble-dri3
 
    make

    sudo make install

  5)编译xf86-video-intel

    git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-intel

    ./autogen.sh --prefix=$MY_DISTRO_PREFIX --libdir=$MY_DISTRO_LIBDIR

    make && sudo make install

  6)编译libbva

    git clone git://git.freedesktop.org/git/vaapi/libva

    ./autogen.sh --prefix=$MY_DISTRO_PREFIX 

    make && sudo make install

  7)编译vappi driver

    git clone git://git.freedesktop.org/git/vaapi/intel-driver

    ./autogen.sh --prefix=$MY_DISTRO_PREFIX 

    make && sudo make install

  8)编译 cairo

    git clone git://git.freedesktop.org/git/cairo

    ./autogen.sh --prefix=$MY_DISTRO_PREFIX 

    make && sudo make install

  9)编译intel-gpu-tools

  git clone git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

  ./autogen.sh --prefix=$MY_DISTRO_PREFIX --libdir=$MY_DISTRO_LIBDIR --disable-amdgpu

  make && sudo make install

3. 键鼠等驱动编译

  1)下载驱动 xf86-input-evdev(大部分插拔设备的驱动) xf86-input-mouse xf86-input-keyboard

    wget https://www.x.org/archive/individual/driver/xf86-input-evdev-2.10.0.tar.gz
    wget https://www.x.org/archive/individual/driver/xf86-input-mouse-1.9.2.tar.gz
    wget https://www.x.org/archive/individual/driver/xf86-input-keyboard-1.9.0.tar.gz

    tar xvf xf86-input-evdev-2.10.0.tar.gz

    tar xvf xf86-input-mouse-1.9.2.tar.gz

    tar xvf xf86-input-keyboard-1.9.0.tar.gz

  2)evdev编译

    cd xf86-input-evdev-2.10.0

    ./configure --prefix=/usr

    make&&sudo make install

  3)鼠标驱动编译

    cd xf86-input-mouse-1.9.2

    ./configure --prefix=/usr

    make && sudo make install

  4)键盘驱动编译

    cd xf86-input-keyboard-1.9.0

    ./configure --prefix=/usr

    make && sudo make install

4.重启电脑

  sudo ldconfig

  sudo reboot

  大功告成!!

 

 

posted @ 2017-09-29 11:36  xiejake  阅读(11957)  评论(0编辑  收藏  举报