centos 7系统升级内核(ELRepo仓库)、小版本升级、自编译内核

使用ELRepo仓库

ELRepo是一个第三方仓库,提供了最新的linux内核版本。

安装ELRepo密钥:

bash 复制代码
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装ELRepo仓库:

bash 复制代码
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

查看可使用内核版本

bash 复制代码
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

安装最新的稳定内核:

bash 复制代码
yum -y --enablerepo=elrepo-kernel install kernel-ml

或安装长期支持版本(LTS)内核:

bash 复制代码
yum -y --enablerepo=elrepo-kernel install kernel-lt

改变系统启动时默认选择的内核版本或菜单项

bash 复制代码
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_dev/root rd.lvm.lv=centos_dev/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

将第三行的GRUB_DEFAULT=saved,修改成0

在GRUB配置中,GRUB_DEFAULT 参数用于指定默认启动的条目。当设置为 saved 时,GRUB会记住用户上一次手动选择的条目作为下次启动的默认选项。而当你将其更改为 0 时,GRUB会在启动时自动选择配置文件中列出的第一个条目作为默认启动选项,通常这是最近安装的内核。

这个修改意味着,无论用户之前选择了哪个内核启动,系统都会始终从配置列表中的第一个选项启动,除非用户在GRUB菜单显示的时间内(由 GRUB_TIMEOUT 设置)手动选择其他选项。

bash 复制代码
sed -i '3s/saved/0/' /etc/default/grub

重新生成 GRUB(GRand Unified Bootloader)的配置文件

GRUB是一个多重引导程序,用于加载操作系统并引导计算机启动。该命令将扫描系统上的所有可引导的操作系统,并根据检测到的操作系统生成一个新的grub.cfg文件。这个文件将包含引导操作系统所需的相关配置信息,例如操作系统的位置、内核参数等。通过运行这个命令,可以确保GRUB引导菜单包含最新的可引导操作系统。

bash 复制代码
grub2-mkconfig -o /boot/grub2/grub.cfg

小版本升级:

如果只是想进行小版本的内核升级,可以使用默认的CentOS仓库进行:

bash 复制代码
yum -y update kernel

这将更新到CentOS官方提供的最新小版本内核。

自编译内核:

自编译内核是一个相对复杂的过程,这是最复杂的方法,但能够提供最大的灵活性以适应特定需求。适合需要高度定制内核的场景。你需要从kernel.org下载内核源码,然后进行配置、编译和安装。

准备工作

确保系统已更新:yum update

安装编译内核所需的依赖包:

bash 复制代码
yum install ncurses-devel elfutils-libelf-devel dwarves binutils-devel openssl-devel

下载内核源代码

访问Kernel.org下载你想要的内核版本。例如,下载Linux 5.x系列的最新源码包:

bash 复制代码
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.x.x.tar.xz

解压缩源代码

bash 复制代码
tar -xvf linux-5.x.x.tar.xz
cd linux-5.x.x

配置内核

你可以使用默认配置作为起点,然后根据需要修改:

bash 复制代码
cp /boot/config-$(uname -r) .config

编译内核

这个过程可能需要一段时间,具体取决于你的系统性能。

bash 复制代码
make -j $(nproc)

这里的-j $(nproc)表示使用所有处理器核心来加速编译过程。

安装编译后的内核和模块

bash 复制代码
make modules_install
make install

更新引导加载器配置

对于GRUB,通常需要运行以下命令来更新其配置:

bash 复制代码
grub2-mkconfig -o /boot/grub2/grub.cfg

验证新内核

检查/boot目录下是否有新生成的vmlinuz-*和initramfs-*文件,确认新内核已经安装。

重启系统并选择新内核

bash 复制代码
reboot

在GRUB启动菜单中,你应该能看到新编译的内核作为选项。选择它来启动。

验证内核版本

重启后,使用uname -r命令确认是否已成功切换到新内核。

bash 复制代码
uname -r
相关推荐
被摘下的星星6 分钟前
四层模型TCP/IP协议栈
运维·服务器·网络
努力努力再努力wz9 分钟前
【Linux网络系列】深入理解 I/O 多路复用:从 select 痛点到 poll 高并发服务器落地,基于 Poll、智能指针与非阻塞 I/O与线程池手写一个高性能 HTTP 服务器!(附源码)
java·linux·运维·服务器·c语言·c++·python
努力努力再努力wz12 分钟前
【Linux网络系列】万字硬核解析网络层核心:IP协议到IP 分片重组、NAT技术及 RIP/OSPF 动态路由全景
java·linux·运维·服务器·数据结构·c++·python
.千余14 分钟前
【Linux】基本指令2
linux·运维·服务器
2601_9498158418 分钟前
Linux下PostgreSQL-12.0安装部署详细步骤
linux·运维·postgresql
minji...25 分钟前
Linux 线程同步与互斥(四) POSIX信号量,基于环形队列的生产者消费者模型
linux·运维·服务器·c语言·开发语言·c++
SPC的存折26 分钟前
8、Docker镜像瘦身
运维·docker·容器
抠脚学代码39 分钟前
Linux开发-->驱动开发-->字符设备驱动框架(2)
linux·运维·驱动开发
何中应1 小时前
Promehteus如何指定数据路径
运维·prometheus·监控
热爱Liunx的丘丘人1 小时前
Ansible的Playbook案例一
linux·运维·服务器·ansible