在线安装的方式升级kernel
安装最新版本的kernel
# 载入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装ELRepo
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 载入elrepo-kernel元数据
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
# 查看可用的rpm包
yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
# 安装最新版本的kernel
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
设置grub,然后重启
查看系统上的所有可以内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
设置 grub2
1.通过 grub2-set-default 0 命令设置:
其中 0 来自上一步的 awk 命令:
grub2-set-default 0
2. 编辑 /etc/default/grub 文件
设置 GRUB_DEFAULT=0,表示使用上一步的 awk 命令显示的编号为 0 的内核作为默认内核:
# vi /etc/default/grub
> GRUB_TIMEOUT=5
> GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
> GRUB_DEFAULT=0
> GRUB_DISABLE_SUBMENU=true
> GRUB_TERMINAL_OUTPUT="console"
3 生成 grub 配置文件并重启
通过 gurb2-mkconfig 命令创建 grub2 的配置文件,然后重启:
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
验证
通过 uname -r 查看
更新工具包
# 删除旧版本工具包
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64
# 安装新版本工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
编译的方式升级内核
[root@docker-dev ~]# yum groupinstall "Development Tools" -y #安装开发工具包
[root@docker-dev ~]# yum install -y elfutils-libelf-devel bc openssl-devel ncurses-devel wget ntpdate vim net-tools #安装常用软件
[root@docker-dev ~]# ntpdate -u times.aliyun.com #同步时间,如果时间不对编译可能会出问题
[root@docker-dev ~]# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.39.tar.xz #下载内核
[root@docker-dev ~]# tar -xf linux-4.9.39.tar.xz -C /usr/src/ #解压内核
[root@docker-dev ~]# cd /usr/src/linux-4.9.39/
[root@docker-dev linux-4.9.39]# cp /boot/config-3.10.0-514.el7.x86_64 .config
[root@docker-dev linux-4.9.39]# sh -c 'yes "" | make oldconfig'
[root@docker-dev linux-4.9.39]# make -j30 bzImage #测试机是32核,这里用30,尽可能加快编译速度
[root@docker-dev linux-4.9.39]# make -j30 modules
[root@docker-dev linux-4.9.39]# make -j30 modules_install
[root@docker-dev linux-4.9.39]# make install
[root@docker-dev linux-4.9.39]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
[root@docker-dev linux-4.9.39]# grub2-set-default 0 && init 6
[root@docker-dev ~]# uname -a
Linux docker-dev 4.9.39 #1 SMP Mon Jul 24 11:28:25 CST 2017 x86_64 x86_64 x86_64 GNU/Linux
参考资料
相关术语
- kernel-ml
kernel-ml 中的ml是英文
mainline stable
的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。 - kernel-lt
kernel-lt 中的lt是英文
long term support
的缩写,elrepo-kernel中罗列出来的长期支持版本。