码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 文件来实现。

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

  • 相关阅读:
    【熵与特征提取】从近似熵,到样本熵,到模糊熵,再到排列熵,包络熵,散布熵,究竟实现了什么?(第五篇)——“包络熵”及其MATLAB实现
    Java环境的搭建(JDK和IDEA)
    每日算法刷题Day14-反转链表、两个链表的第一个公共结点、删除链表中重复的节点
    如何在MapInfo Pro中访问WMS数据?
    鸿蒙OpenHarmony【轻量系统烧录】 (基于Hi3861开发板)
    视觉SLAM14讲笔记-第10讲-后端1
    mysql kill 杀死异常线程 死锁 执行时间长 sleep running lock 等
    安科瑞智能母线监控在数据中心的应用
    python根据多边形polygon生成掩膜图像问题cv2.fillPoly()和cv2.fillConvexPoly()
    排序算法—插入排序快速排序
  • 原文地址:https://blog.csdn.net/superbfly/article/details/125598865
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号