本篇主要是讲述下关于内核的一些基本常识,并记录下内核升级和编译的过程,若有遗漏/有误之处,望各位大佬们指出。
Ⅰ 基本内核常识
常见内核安装包
- 内核(kernel):这是Linux操作系统的核心部分,它负责管理系统的硬件和软件资源,提供各种服务给软件应用程序;
- 内核开发包(kernel-devel):这个包包含了内核头文件,这些文件可以用来构建内核模块
- 内核头文件包(kernel-headers):这个包包含了指定Linux内核与用户空间库和程序之间的接口的C头文件。这些头文件定义了构建大多数标准程序所需的常量结构和常量
如果是升级内核的话,需要下载上面三个安装包,只是编译内核的话,就只需要下载个devel包即可。
关于如何获取这些安装包的话,我一般都是在【 内核包下载地址】这条链接获取的
其余的安装包获取,可以参考这个
下面这些存放都是比较零散的,需要花费大量时间,而且对应的rpm包比较不好找
- centos7官方:http://elrepo.org/linux/kernel/el7/x86_64/RPMS/
- 阿里云:https://developer.aliyun.com/mirror/
- 清华源:https://mirrors.edge.kernel.org/pub/linux/kernel/
Ⅱ 升级内核版本
需要下载好三个安装包,分别为【以X86_64的centos为例子】
- kernel-3.10.0-957.e17.x86_64.rpm
- kernel-devel-3.10.0-957.e17.x86_64.rpm
- kernel-headers-3.10.0-957.e17.x86_64.rpm
进入该目录,执行下面这条指令
yum localinstall kernel-*
使用下面指令,查看内核是否安装成功
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
grub2-set-default 0 #指定内核编号,一般新安装的内核版本都会放到第一位,留意下内核版本编号
最后执行指令【reboot】重启服务器,即可
Ⅲ 编译内核
如果只是编译内核的话,只需要一个开发包kernel-devel就可以了。
// 开发包devel存放位置
/usr/src/kernels/$(uname -r)
只下载一个开发包就可以了,去下载一个对应的内核开发包.rpm,然后再执行make即可进行编译了。
拉取devel包后,到相对于位置执行以下指令
uname -a ; rpm -qa kernel\* | sort // 查看已安装devel包
yum localinstall kernel-devel-3.10.0-957.27.2.el7.x86_64.rpm // 下载到本地
//卸载
yum remove kernel-devel-2.6.32-754.el6.x86_64
//验证
ls /usr/src/kernels/$(uname -r)/
【注意】
关于旧版内核的东西,由于centos官方删掉了一部分的devel文件,如果需要拉去的话,只能自己手动去找rpm进行编译了