VGA GPU passthrough 虚拟桌面pci穿透--Ubuntu与centos的内核升级步骤

转载注明:http://www.jb51.cc/article/p-rhanhmdz-bpz.html
在做虚拟化桌面的过程中使用spice很难做到3d效果并且usb打印机穿透过去的在安装驱动的时候安装不起来,因此usb打印机无法使用,因此采用的穿透的方法,就是把GPU和usb controller穿透到虚拟机内部使用。对于GPU的穿透有两种方法VFIO PCI和KVMGT,本文先针对VFIO PCI做内核升级,然后再去研究KVMGT的方式。

1.确认主机是否支持GPU穿透,cpu一定要支持VT-d(VT-x,VT-c可以去查),否则只能穿透usb而GPU无法使用。
2.Linux的内核支持无论是ubuntu还是centos7都要在内核4.8以上,本人使用的是4.11.1和4.11.5(centos下的),那么分别来介绍一下内核的升级

一.显示ubuntu,如果是最新版本的ubuntu 16.04 就可以不必升级到4.11.1因为本事4.8就支持vfio的。
1.查看vfio的支持情况

uname -a //查看内核版本
ls /dev/vfio/  //查看内核时候含有vfio模块

这个命令就可查看在dev下是否已经含有设备驱动vfio,若果是ubuntu16.04那就会含有。
2.下载linux4.11.1并升级内核
方法一:

sudo apt-get update //这一步更新包列表
sudo apt-get dist-upgrade //这一步安装所有可用更新,包括新内核

方法二:推荐
在ubuntu的内核网站上下载 http://kernel.ubuntu.com/~kernel-ppa/mainline/ ,这个网站含有所有版本的内核,最新的为4.12.7,但我们下载4.11.1就好。

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.1/linux-headers-4.11.1-041101_4.11.1-041101.201705140931_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.1/linux-headers-4.11.1-041101-generic_4.11.1-041101.201705140931_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.1/linux-image-4.11.1-041101-generic_4.11.1-041101.201705140931_amd64.deb
下载好后安装:
dpkg -i linux-headers-4.11.1-041101_4.11.1-041101.201705140931_all.deb
dpkg -i linux-headers-4.11.1-041101-generic_4.11.1-041101.201705140931_amd64.deb
dpkg -i linux-image-4.11.1-041101-generic_4.11.1-041101.201705140931_amd64.deb

安装好后就会在/boot下看到很多相关的内核config文件
查看当前主机所有内核版本

dpkg --get-selections | grep linux //查看当前主机所有内核版本
apt purge linux-headers-4.11.3-041103 linux-headers-4.11.3-041103-generic linux-image-4.11.3-041103-generic//删除某个内核
apt-get install libssl-dev libncurses5-dev //安装编译内核的相关工具

下载内核源码:https://www.kernel.org/pub/linux/kernel/v4.x/ 在这个网站可只找到所有版本的源码下载
下载下来的源码是linux-4.11.1.tar.gz 或者linux-4.11.1.tar.xz 然后解压到/usr/src/

tar -Jxvf linux-4.11.1.tar.xz -C /usr/src/   //.xz
cd /usr/src/linux-4.11.1/ //进到源码下
cp /boot/config-4.11.1-041101-generic .config //把加载好的内核配置考到4.11.1源码下

编译内核源码:

make menuconfig

在device driver内找到vfio的相关选项,并选上

Devices Drivers -->  VFIO Non-Privileged userspace driver framework   -->
         <M>   VFIO support for PCI devices 
         [*]     VFIO PCI support for VGA devices

编译安装:

make -j8
make modules_install
make install

安装完毕后重启,到此ubuntu的内核升级就完毕了
二、centos 7的内核升级
由于centos 7是3.x版本的内核,所以必须得升级才能使用
1.加载源:http://www.linuxidc.com/Linux/2015-02/112697.htm

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org //导入key
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm//安装elrepo的yun源
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available //列出可用的最新的内核相关包
yum --enablerepo=elrepo-kernel install kernel-ml //安装最新的稳定内核 在/boot下会看到目前的4.11.5

如果报错:

一个应用程序是:PackageKit
内存:33 M RSS(1.3 GB VSZ)
已启动:XXXXXXXXXXXXX
状态:睡眠中 ,进程ID:13901

只需要把它杀死:

kill -9 13901

如果找不到源:可以清除所有源,然后重新导入阿里源(就是上面)就可以了

yum clean all

然后下载linux4.11.5的源码并解压放到/usr/src/下面,从/boot/下拷贝config文件并编译安装源码,其过程与ubuntu下的一样。

相关文章

ubuntu退出redis的示例:指定配置文件方式启动源码redis:roo...
ubuntu中mysql改密码忘了的解决方法:1.在终端中切换到root权...
ubuntu安装mysql失败的解决方法原因:可能是原有的MySQL还有...
使用centos和ubuntu建站的区别有以下几点1.CentOS是Linux发行...
ubuntu图形界面和字符界面切换的方法:可以通过快捷键CTRL+A...
ubuntu中重启mysql失败的解决方法1.首先,在ubuntu命令行中,...