• CentOS 升级内核至5.15.52


    编译安装大致分为以下几步:

    • 升级gcc
    • 解压内核
    • 编译前,选择配置项,生成 config 文件
    • 编译内核
    • 安装模块,安装内核
    • 更新引导文件

    升级gcc

    参考:GCC编译过程详细记录https://blog.csdn.net/superbfly/article/details/110918859?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165691537316782246439453%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165691537316782246439453&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-110918859-null-null.185%5Ev2%5Econtrol&utm_term=gcc&spm=1018.2226.3001.4450

    解压内核

    将内核文件解压到指定目录,这里放到了 /usr/src/ 目录下,这个也是 CentOS 内核所在的目录,后缀 .tar.xz 的文件可以使用下面的命令解压。

    tar xvJf linux-5.15.52.tar.xz -C /usr/src/

    配置项

    重点来了,解压之后,编译之前要先生成 config 配置文件。这个文件是干什么的呢?它是编译时的必备文件,指明了所有的配置项,编译时就是根据你选择的配置项来定制内核的。在你的 CentOS 内同样有这样一个配置文件,在 /boot/ 目录下有一个 config 开头的文件,就是它,你可以先 cat 一下,会发现都是键值对,所有的配置项都在这。

    配置项非常多,可以随心所欲的定制内核,把不需要的全部关闭,当然也不是随心所欲,某些配置项是必须要选的,否则可能连系统也启动不了。

    选择配置项的方式有以下几种,当然它们的目的都是为了生成 config 文件,所以选择哪种都可以。

    1. make config (基于文本的配置界面)
    2. make menuconfig (基于文本菜单的配置界面)
    3. make xconfig (基于图形窗口的配置界面)
    4. make oldconfig (基于原来内核配置的基础上修改)

    这里推荐使用 make menuconfig。

    使用 make menuconfig 需要 ncurses-devel 的支持,如果之前没装过,需要执行下面的命令安装一下。

    yum install ncurses-devel

    还有一些其依赖需要安装

    1. yum install -y flex
    2. yum install -y bison

    执行 make menuconfig,开始选择配置项

    make menuconfig

    如果执行没有错误的话,会出现下面这个页面

    内核的编译分为两个部分,核心和模块,对于核心的部分,要编译进核心,可能以后会用到的部分,尽量编译成模块。

    文本菜单选择界面,使用左(←)、右(→)箭头切换底部菜单,上(↑)、下(↓)箭头切换中间的配置项,空格键 选择配置项,部分配置项右边有 —> 标识,代表有下级子项,可以使用 Enter 进去选择。

    同时每一项的前面都有以下标识,可以根据需要选择。

    1. <*>[*]  表示编译进核心
    2. <M>     表示编译成模块
    3. 空格    表示不选中此项


    当然,如果你只是看一下整个编译过程,不想深究每一项,执行上一步 make menuconfig 之后,直接保存退出就可以了,它会使用 CentOS 内部的配置文件作为这次编译的配置文件,不知道 CentOS 内部配置文件在哪的,自己往前翻。

    选择“Exit”后会提示是否保存,这里选"Yes"。

    编译

    配置项选完,config 配置文件生成之后,就可以开始编译了,编译需要 elfutils-libelf-devel 的支持,先执行下面的命令安装一下。

    yum install elfutils-libelf-devel

    安装编译需要的依赖项

    1. yum install -y perl
    2. yum install -y openssl-devel

    内核的编译,执行 make 即可开始编译。

    make

    编译时间比较长,如果上面你是自定义配置项,把不需要的配置都关闭,编译会快的多。我这使用的 CentOS 内部的配置文件,CentOS 为了大多数人的使用,开的配置项比较多,所以编译的时间比较长,当然,也和你的电脑配置有关。我记了一下时间,这一部分的编译用了两个半小时,所以请耐心等待,可以去喝个咖啡。

    安装

    经过了漫长的等待,终于编译完成,现在可以开始安装了。上面配置项有的编译进核心,有的编译成模块,所以安装也分为两个部分,模块安装和核心安装。

    执行 make modules_install 开始安装模块

    make modules_install

    等待完成,执行 make install 开始安装核心

    make install

    执行完成之后,就可以在 /boot/ 目录下看到新编译的内核了。

    更新引导

    到现在为止,离成功就差一步更新引导了。可以直接去修改 /boot/grub2/grub.cfg 文件来更新引导,但是非常不建议这样去做。

    推荐使用 grub2-mkconfig 来更新引导文件,下面的命令会根据 /boot/ 目录下的内核文件自动更新 grub 文件。

    grub2-mkconfig -o /boot/grub2/grub.cfg

    执行完之后,下次启动系统的时候就可以选择我们编译的内核了。如果想修改默认的启动内核,可以通过修改 /etc/default/grub 文件来实现。

    重启系统,如果看到两个内核,说明已经成功了,你可以自由的选择哪个内核。

  • 相关阅读:
    【Java基础】数据结构与算法
    Linux信息系统相关的命令
    SharePoint
    MMDetection模型代码训练及测试过程的详细解析
    一、Vue3基础[组件(props、事件、插槽)]
    ARouter详解
    【知识点随笔分析 | 第三篇】快速介绍什么是DHCP
    selenium的使用细节
    R语言七天入门教程五:认识并使用函数
    敏捷开发中的站立会应该怎么开?
  • 原文地址:https://blog.csdn.net/superbfly/article/details/125598865