首页 > 系统相关 >Linux - 内核版本升级

Linux - 内核版本升级

时间:2024-05-15 17:09:11浏览次数:12  
标签:kernel make 编译 版本升级 yum 内核 install Linux

测试时间:2024年5月15日,本文测试CentOS7.9的内核版本升级

 

一、使用第三方仓库(ELRepo)

(1)升级前内核查看(3.10.0-1160.el7.x86_64):uname -a 或者 uname -r

(2)添加ELRepo仓库

yum install -y https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

(3)检查可安装的内核版本

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

(4)安装指定版本的内核

yum --enablerepo=elrepo-kernel install -y kernel-<version>

(5)更新引导加载器配置

# 设置开机从新内核启动
grub2-set-default "CentOS Linux (5.4.275-1.el7.elrepo.x86_64) 7 (Core)"

(6)可以检查一下 /boot/grub2/grub.cfg中menuentry的内容

(7)重启服务器,查看内核版本

 

 

二、手动编译和安装

自测评价:太慢了,还容易出错。不推荐使用该方法

(1)查看操作系统以及内核的版本

(2)安装编译工具和依赖

yum groupinstall 'Development Tools'
yum install kernel-devel kernel-header elfutils-libelf-devel

(3)下载内核源码:https://kernel.org/

(4)解压并配置内核

# 解压
tar -xvf linux-5.4.275.tar.xz

# 配置内核
make olddefconfig

(5)编译内核

time make -j$(nproc)
make modules_install
make install

 

 

三、标题

 

 

 

四、Q&A

Q1:手动编译和安装时,执行time make -j$(nproc)有如下报错

注意:根据以下解决报错后,重新执行time make -j$(nproc)

Answer:

1、构建过程中试图生成ORC(Optimized Restartable Sequences)元数据,但缺少必要的开发库。

解决:

  • yum install libelf-devel(Red Hat系统:Fedora、CentOS)
  • apt-get install libelf-dev(Debian系统:Ubuntu)
  • dnf install elfutils-libelf-devel(较新的Fedora/CentOS)

2、在编译过程中需要访问OpenSSL的头文件,所以需要安装OpenSSL的开发包

解决:yum install openssl-devel

 

Q2:在Q1问题解决后,再次执行time make -j$(nproc),发现有以下提示,但是编译过程并未中断。

  在执行 make 命令,尤其是在编译像操作系统内核这样的大型项目时,缺少花括号({})通常会导致代码结构不完整,从而影响代码的正确编译。花括号在C语言及类似语言中用于定义代码块的范围,比如循环体、条件语句块或函数体等。如果花括号缺失,编译器可能无法正确理解哪些语句应该被包含在特定的控制结构中。

对于内核升级过程,这确实是个问题,因为它可能会导致以下几个后果:

(1)编译错误:最直接的影响是编译失败,因为编译器会在遇到语法错误时停止编译过程。
(2)逻辑错误:即使某些情况下编译通过了(例如,如果缺少的花括号导致的逻辑块很小,而编译器默认将其与下一行关联),这也可能导致内核功能不按预期工作,因为执行的代码逻辑与设计意图不符。
(3)潜在的安全风险:代码逻辑的改变可能引入安全漏洞,特别是在内核这样对安全性要求极高的软件中。
(4)维护困难:代码的可读性和可维护性降低,给后续的开发和调试带来不必要的复杂度。

因此,如果在尝试编译内核时遇到提示缺少花括号的错误,应该首先修正这些语法错误,确保所有的控制结构(如if语句、for循环等)都有正确的花括号来界定其作用域。这不仅是修复编译错误所必需的,也是保证内核正确、安全运行的基础。

 

 

 

 

— 业精于勤荒于嬉,行成于思毁于随 —

标签:kernel,make,编译,版本升级,yum,内核,install,Linux
From: https://www.cnblogs.com/houhuilinblogs/p/18194166

相关文章

  • linux下使用c++模拟下载进度
    #include<iostream>#include<iomanip>#include<chrono>#include<thread>voidshowProgressBar(doubleprogress){constintbarWidth=70;std::cout<<"\r[";intpos=static_cast<int>(barWid......
  • 【Linux命令学习】lsof查看打开的文件
    lsof:listopenfiles作用1:可查端口号被哪个进程占用比如我们跑自动化,经常会遇到端口号被占用,无法启动driverlsof-i:8081lsof输出的结果含义:fd:文件描述符的数字,通常是一个正整数。filedescriptortype:文件描述符的类型,如 REG 表示普通文件,DIR 表示目录,CHR 表示字......
  • FM20S用户手册--Linux系统启动卡制作及系统固化
     ......
  • Linux常用命令
    常用的linux命令:========================================================================================================================目录类/代表根目录.代表当前目录..代表上级目录cd/进入根目录cd..进入上级目录ls查看当前目录下的所有文件ll查看当前目录......
  • Linux远程连接
    Linuxcentos设置静态ip参考:https://blog.csdn.net/weixin_45533131/article/details/128002480FileZilla安装下载与使用参考:https://blog.csdn.net/Passerby_Wang/article/details/125298958FileZilla是免费开源的FTP软件,,分为客户端版本和服务器版本,具备所有的FTP软件功能,......
  • Linux系统安装snmptt
    在Linux系统中安装yum和snmptt可以通过以下步骤进行:打开终端。确保你有管理员权限(通常是root用户)。执行以下命令来安装yum:  #对于基于RedHat的系统(如CentOS或Fedora)sudoyuminstallyum安装snmptt可能需要通过EPEL仓库,如果还没有添加EPEL仓库,你......
  • ubuntu linux安装MySQL后遇到的一些问题和解决方法
    Ubuntulinux安装MySQL后遇到的一些问题和解决方法版本信息ubuntu:Ubuntu24.04mysql:Ver8.0.36-2ubuntu3forLinuxonx86_64((Ubuntu))登陆安装后直接sudomysql就可以登陆分析为什么可以不用sudomysql-uroot-p呢?原因有三点直接执行mysql命令它是可以根据......
  • Linux查看进程命令ps和top示例详解
    Linux 是一种自由和开放源代码的操作系统,它的使用在全球范围内非常广泛。在 Linux 中,进程是操作系统中最重要的组成部分之一,它代表了正在运行的程序。了解如何查看正在运行的进程是非常重要的,因为它可以帮助你了解系统的运行状态并对其进行管理。今天飞飞将和你分享如何在 Lin......
  • 无法在 Linux 下运行脚本
    无法在Linux下运行脚本cantrunscriptinlinuxCreated:2024-05-14T10:59+08:00Published:2024-05-15T11:19+08:00Categories:LinuxTags:Bug打算在wsl中运行Windows文件中的sh文件,script.sh内容为:#!/usr/bin/shcd..但是终端中执行bash./script.sh,什么......
  • 在Linux中,什么是子网和CIDR?
    在网络通信中,子网(Subnet)和CIDR(无类别域间路由,ClasslessInter-DomainRouting)是两个重要的概念,它们与IP地址的分配和网络的组织方式密切相关。1.子网(Subnet)子网是将一个较大的网络划分成若干个较小的网络的过程。这样做的目的是为了更好地组织和管理网络,提高网络安全性,以及优化......