为CentOS8编译5.4.8内核以及设定默认启动时的首选内核+GPU Passthrough

时间:2024-03-24 12:07:48

   因为配置了一台新电脑,用来做kvm服务器,本想着通过GPU Passthrough,利用上 GTX1060(6G)显卡来用于虚拟机的显卡,但是我的显卡是和CPU在一个总线上,分为了1个组,无法完成。 各种搜教程,看到高版本的内核可以支持直接映射,但是是4.7以上的kernel才行,所以为 centos8编译了最新的稳定版内核。

1.最新版内核的下载、编译

如何编译内核,有比较多的教程,这里推荐看下面链接的

https://www.makeuseof.com/tag/compile-linux-kernel/ 

值得一提的是,使用 # make menuconfig 后,建议选择到 load,将从 /boot 下复制出来,重命名为“.config”的配置文件进行加载,再进行适当修改。 我这里因为要用到NTFS格式的硬盘分区,所以就将这个功能编译进了内核。 可以参考下列文章

https://www.linuxidc.com/Linux/2017-11/148276.htm

 

为CentOS8编译5.4.8内核以及设定默认启动时的首选内核+GPU Passthrough

                  建议使用键盘上的 TAB 按键,先选择Load选项,加载 .config文件

需要编译一个仅用于当前系统配置情况的,比较精简的内核的,可以使用命令: # make localmodconfig  

这将创建一个名为.config的文件,该文件告诉GCC从内核源代码进行编译的内容。 make localmodconfig命令检测当前正在运行的内核组件,并将其标记为要编译。 

2.可能出现的问题

2.1.在配置好 “.config”文件, 开始使用命令: # make -j 8   (根据你的CPU的核心数量更改一下数字)后,可能出现如下原因引起的错误:

make[1]: *** No rule to make target 'certs/rhel.pem', needed by 'certs/x509_certificate_list'.  Stop.

则直接用命令: # vi .config      对.config这个配置文件进行修改,利用vi编辑工具的查找功能,找到 certs/rhel.pem 字符, 将这一行和下面的两行前面都加上 “#”,将这共计3行给注释掉,再进行编译。

我的机器是8核的,感觉只用了不到10分钟就编译完了。

2.2.还有可能因为需要提供 X.509 key之类的停止。  这个比较简单,只需要按键盘上的 “ENTER”键,让编译程序继续下去就可以了。

 

3.查看默认的启动内核和调整其顺序

参看下列链接的文章

https://www.golinuxcloud.com/boot-with-old-kernel-version-rhel-8-grubby/

总结起来就是:

3.1 查看目前系统内所有的可启动内核及其版本号:

# ls -l /boot/vmlinuz-*

显示效果如下:

为CentOS8编译5.4.8内核以及设定默认启动时的首选内核+GPU Passthrough

我这里编译了两个,分别是5.4.8和4.9.208 两个版本的。 感觉5.4.8的更快

3.2 查看当前所使用了内核版本:

# uname -a

为CentOS8编译5.4.8内核以及设定默认启动时的首选内核+GPU Passthrough

查看更详细的内容,

# grubby --info=/boot/vmlinuz-5.4.8-0108_X64

为CentOS8编译5.4.8内核以及设定默认启动时的首选内核+GPU Passthrough

3.3 查看当前使用的内核在启动列表中所排的顺序(也可能出现在启动时,手动选择了旧的内核,则显示的数字不同)

# grubby --default-index

为CentOS8编译5.4.8内核以及设定默认启动时的首选内核+GPU Passthrough

显示数字0,说明当前的内核 5.4.8-0108_X64是首选启动内核, 如果显示是1,2,3之类的数字,则说明你手动选择了非默认内核,并且你的系统中的内核数量较多

3.4 将某个内核设定为首选启动内核,例如我们选择centos8系统原来的 vmlinuz-4.18.0-80.11.2.el8_0.x86_64成为默认首选启动内核

# grubby --set-default=/boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64

然后重新启动,则就会自动加载4.18.0-80.11.2.el8_0.x86_64了。

 

4. 新内核下GPU透传

更换了内核,目前还没有将GPU透传设定成功。 可能最主要的原因,是 GPU直接挂栽在CPU的PCIE总线上,这样的好处是游戏性能更好吧。

4.1贴一下我的硬件的图和 IOMMU 组的图

为CentOS8编译5.4.8内核以及设定默认启动时的首选内核+GPU Passthrough

为CentOS8编译5.4.8内核以及设定默认启动时的首选内核+GPU Passthrough

 4.2 与GPU透传相关的,比较有价值的文章的连接合集

https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF

https://pve.proxmox.com/wiki/Pci_passthrough

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/chap-guest_virtual_machine_device_configuration

下面这2篇,讲了如何打补丁 ACS patch,可惜我不会。有会的大神,希望能实验一下,放个中文版的教程

https://forums.linuxmint.com/viewtopic.php?f=231&t=212692&start=200#p1270255