RPM方式升级
Kernel-lt 长期维护版(推荐)
Kernel-ml Linus亲自维护的主分支版本
CentOS6 x64
[root@newrain ~]# uname -a
Linux newrain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64
x86_64 x86_64 GNU/Linux
# 在链接中下载对应的内核包
[root@newrain ~]# wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-4.4.205-1.el7.elrepo.x86_64.rpm
# 安装
[root@newrain ~]# yum install -y kernel-lt-4.4.205-1.el7.elrepo.x86_64.rpm
# 查看当前内核的启动顺序
[root@newrain ~]# awk '$1=="menuentry" {print $2,$3,$4}' /etc/grub2.cfg
'CentOS Linux (3.10.0-514.el7.x86_64)
'CentOS Linux (0-rescue-8b99afb288c44ddfacf44a1c70405e6f)
# 修改配置文件 设置默认启动项,0是按menuentry顺序。比如要默认从第四个菜单项启动,数字改为3,若改为 saved,则默认为上次启动项。
[root@newrain ~]# sed -i "s/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/g" /etc/default/grub
# 重写grub.cfg
[root@newrain ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@newrain ~]# reboot
[root@newrain ~]# uname -a
Linux newrain 4.4.205-1.el7.elrepo.x86_64 #1 SMP Fri Nov 29 10:10:01 EST 2019 x
86_64 x86_64 x86_64 GNU/Linux
[root@newrain ~]# awk '$1=="menuentry" {print $2,$3,$4}' /etc/grub2.cfg
'CentOS Linux (4.4.205-1.el7.elrepo.x86_64)
'CentOS Linux (3.10.0-514.el7.x86_64)
'CentOS Linux (0-rescue-8b99afb288c44ddfacf44a1c70405e6f)
源码方式升级
内核下载:kernel.org
名词解释
stable(稳定)
mainline(开发)
longterm(历史)
tarball:完整代码
pgp:验证签名
patch:补丁
make | help | 支持更新模式进行配置 |
---|---|---|
make | menuconfig | 基于curses的文本窗口界面 |
make | gconfig | 基于GTK(GOME)环境窗口界面 |
make | xconfig | 基于QT(KDE) 环境的窗口界面 |
make | oldconfig | 透过已经存在的./.config文件内容,并使用该文件内设定值为默认值,只将新版本核心的新功能列出让用户选择,可以简化核心功能挑选过程。对与升级内核很好选择。 |
make | defconfig | 基于内核为目标平台执行提供的“默认”配置进行配置 |
make | allyesconfig | 所有选项均回答为”yes” |
make | allnoconfig | 所有选项均回答为”no” |
make | mrproper | 清理所有编译生成的文件、 config及某些备份文件 |
make | clean | 清理大多数编译生成的文件,但会保留config文件等 |
make | distclean | mrproper、 patches以及编辑器备份文件 |
# 准备编译环境
[root@newrain ~]# yum -y groups install "Development Tools" # 无法下载则跳过
[root@newrain ~]# yum -y install ncurses-devel elfutils-libelf-devel bc openssl-devel.x86_64
[root@newrain ~]# tar xvf linux-4.14.12.tar.xz
[root@newrain ~]# cp /boot/config-3.10.0-693.el7.x86_64 /root/linux-4.14.12
[root@newrain ~]# cd /root/linux-4.14.12/
[root@newrain ~]# make menuconfig # 如果报错则将终端放大
[root@newrain ~]# make
[root@newrain ~]# make modules_install
[root@newrain ~]# make install
cat /boot/grub2/grub.cfg |grep Core
[root@newrain ~]# sed -i "s/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/g" /etc/default/grub
# 重写grub.cfg
[root@newrain ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@newrain ~]# reboot
[root@newrain ~]# uname -a
[root@newrain ~]# uname -r
4.4.206
[root@newrain ~]# hostnamectl
Static hostname: newrain
Icon name: computer-vm
Chassis: vm
Machine ID: 8b99afb288c44ddfacf44a1c70405e6f
Boot ID: 8e995f1faf184a4d8e4d1f7536050cc6
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 4.4.206
Architecture: x86-64
卸载内核
[root@newrain ~]# cd /boot/
[root@newrain ~]# rm -rf *-4* # 谨慎,一般不进行
[root@newrain ~]# vim /boot/grub2/grub.cfg
[root@newrain ~]# reboot
[root@newrain ~]# uname -r
3.10.0-514.el7.x86_64
内核补丁
以3.18.69版本举例:
# 下载补丁文件
wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/3.18/older/patch-3.18.69-rt75.patch.gz
# 下载内核文件
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.18.69.tar.gz
# 解压两个文件
gunzip -d patch-3.18.69-rt75.patch.gz
tar xvzf linux-3.18.69.tar.gz
# 将补丁文件放到内核目录中
mv patch-3.18.69-rt75.patch linux-3.18.69
patch -p1 < patch-3.18.69-rt75.patch
使用zcat命令可以在不解压的情况下给内核打补丁
zcat patch-3.18.69-rt75.patch.gz | patch -d linux-3.18.69 -p1
查看linux-3.2.4目录下的Makefile文件,如果VERSION = 3,PATCHLEVEL = 2,SUBLEVEL = 4则表明打补丁成功。
编译内核
cd linux-3.18.69
make -j 2
make modules_install
make install
cd /boot
mkinitramfs -k -o initrd.img-3.18.69-rt 3.18.69-rt75
编译时间两小时左右
重启后选择新的补丁