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

  大功告成!!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM