当您在CentOS系统上编译自定义内核模块(如设备驱动程序)时,您需要在系统上安装内核头文件,其中包括Linux内核的C头文件。 内核头文件在安装或编译任何与内核接口的代码时提供了不同类型的函数和结构定义。
安装内核头文件时 ,确保它与系统上当前安装的内核版本相匹配。 如果您的内核版本附带默认的分发版安装,或者您已经使用系统基本存储库中的yum软件包管理器升级了内核 ,则必须仅使用软件包管理器安装匹配的内核标头。 如果您从源代码编译内核,则只能从源安装内核头文件。
在本文中,我们将介绍如何使用默认包管理器在CentOS / RHEL 7和Fedora发行版中安装Kernel Headers 。
在CentOS 7中安装内核头文件
首先使用以下命令确认匹配的内核头文件已经安装在系统上的/ usr / src / kernels / location下。
# cd /usr/src/kernels/ # ls -l
在CentOS 7中检查内核头文件
如果没有匹配的内核头文件位于/ usr / src / kernels /目录中,请继续并安装内核头文件,该文件头文件由kernel-devel软件包提供,可以使用默认软件包管理器进行安装,如图所示。
# yum install kernel-devel [On CentOS/RHEL 7] # dnf install kernel-devel [On Fedora 22+]
在CentOS 7中安装内核头文件
安装kernel-devel软件包后,可以使用以下命令在/ usr / src / kernels目录中找到所有内核头文件。
# ls -l /usr/src/kernels/$(uname -r)
关于VPS (例如Linode VPS )的注意事项,内核可能有自定义的版本名称,在这种情况下,您必须手动识别内核版本并使用以下命令检查安装的内核头文件。
# uname -r # ls -l /usr/src/kernels/3.10.0-862.2.3.el7.x86_64
检查CentOS 7中的内核版本
示例输出
total 4544 drwxr-xr-x. 32 root root 4096 May 16 12:48 arch drwxr-xr-x. 3 root root 4096 May 16 12:48 block drwxr-xr-x. 4 root root 4096 May 16 12:48 crypto drwxr-xr-x. 119 root root 4096 May 16 12:48 drivers drwxr-xr-x. 2 root root 4096 May 16 12:48 firmware drwxr-xr-x. 75 root root 4096 May 16 12:48 fs drwxr-xr-x. 28 root root 4096 May 16 12:48 include drwxr-xr-x. 2 root root 4096 May 16 12:48 init drwxr-xr-x. 2 root root 4096 May 16 12:48 ipc -rw-r--r--. 1 root root 505 May 9 19:21 Kconfig drwxr-xr-x. 12 root root 4096 May 16 12:48 kernel drwxr-xr-x. 10 root root 4096 May 16 12:48 lib -rw-r--r--. 1 root root 51205 May 9 19:21 Makefile -rw-r--r--. 1 root root 2305 May 9 19:21 Makefile.qlock drwxr-xr-x. 2 root root 4096 May 16 12:48 mm -rw-r--r--. 1 root root 1093137 May 9 19:21 Module.symvers drwxr-xr-x. 60 root root 4096 May 16 12:48 net drwxr-xr-x. 14 root root 4096 May 16 12:48 samples drwxr-xr-x. 13 root root 4096 May 16 12:48 scripts drwxr-xr-x. 9 root root 4096 May 16 12:48 security drwxr-xr-x. 24 root root 4096 May 16 12:48 sound -rw-r--r--. 1 root root 3409102 May 9 19:21 System.map drwxr-xr-x. 17 root root 4096 May 16 12:48 tools drwxr-xr-x. 2 root root 4096 May 16 12:48 usr drwxr-xr-x. 4 root root 4096 May 16 12:48 virt -rw-r--r--. 1 root root 41 May 9 19:21 vmlinux.id
另外,如果您需要Linux内核的头文件供glibc使用,请使用以下命令安装kernel-header包。
# yum install kernel-headers [On CentOS/RHEL 7] # dnf install kernel-headers [On Fedora 22+]
现在,您可以编译自己的或现有的内核模块以用于诸如VirtualBox等软件。
而已! 在本文中,我们解释了如何在CentOS / RHEL 7和Fedora系统中安装kernel-devel和kernel-header软件包。 请记住,在Linux系统上编译内核模块(如设备驱动程序)之前,应该安装必要的内核头文件。 如果您有任何疑问,请使用下面的评论表单与我们联系。