转载注明: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下的一样。