一、手动档

手动档就是从源码开始编译内核安装,好处是可以自己选择任意版本的内核,缺点就是耗时长,编译安装消耗系统资源

1.1、获取 kernel 源码

这世界上最伟大的 Linux 内核源码下载地址是 kernel 官网,选择一个稳定版本下载即可

1.2、解压并清理

官方要求将其解压到 /usr/src 目录,其实在哪都可以,为了规范一点索性也解压到此位置,然后为了防止编译残留先做一次清理动作

1
2
3
4
5
6
7
8
9
10
# 下载内核源码
$ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.8.6.tar.xz
# 解压并移动到 /usr/src
$ tar -Jxvf linux-4.8.6.tar.xz
$ mv linux-4.8.6 /usr/src/kernels
# 执行清理(没 gcc 的要装一下)
$ cd /usr/src/kernels/linux-4.8.6
$ make mrproper && make clean

1.3、生成编译配置表

kernel 在编译时需要一个配置文件(.config),用于描述开启哪些特性等,该文件一般可通过一下四种途径获得:

  • 复制当前系统编译配置表,即 cp /boot/config-xxx .config;如果系统有多个内核,那么根据版本号选择最新的即可
  • 使用 make defconfig 命令获取当前系统编译配置表,该命令会自动写入到 .config
  • 使用 make localmodconfig 命令开启交互模式,然后根据提示生成编译配置表
  • 使用 make oldconfig 命令根据旧的编译配置表生成新的编译配置表,刚方式会直接读取旧的便已配置表,并在以前没有设定过的配置时会自动开启交互模式

这里采用最后一种方式生成

1.4、编译并安装

内核配置表生成完成后便可进行编译和安装(需要安装 bc、openssl-devel 等)

1
2
3
4
$ make
$ make modules
$ make modules_install
$ make install

最后执行重启验证即可,验证成功后可删除旧的内核

1
2
3
4
5
# 检索已安装的内核
$ sudo rpm -qa | grep kernel
# 删除指定的内核
$ sudo rpm -e kernel-3.10.0-327.el7.x86_64

二、自动档

相对于手动档编译安装,CentOS 还可以通过使用 elrepo 源的方式直接安装最新稳定版 kernel,脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# import key
$ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# install elrepo repo
$ sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# install kernel
$ sudo yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
# modify grub
$ sudo grub2-set-default 0
# reboot system
$ sudo reboot

原文地址