一.探索版(带坑,想直接编译的可以跳过这部分看直接版)
前段时间由于项目需要,需要使用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
大功告成!!