Linux系统:CentOS编译Linux内核

news2024/11/16 1:21:26

目录

一、实验

1.下载内核

2.解压内核源码

3.配置依赖的环境

4.进入源码目录,使用make menuconfig开启菜单选项,手动选择内核功能

5.编译内核

6.安装模块

7.安装内核

8.验证新内核版本


一、实验

1.下载内核

(1)官网下载

内核的源码的官方网站为 The Linux Kernel Archives,在此网站下载最新内核源码。

(2)进入页面

点击某一个版本对应的browse

Linux版本分为:mainline(主线版本)、stable(稳定版本)、longterm(长期演进版本) 

 进入之后,默认打开界面是tree型

 资源下载,选择summary,拉到最下方

 (3)网页下载

直接进入链接:​​​​​​  Index of /sites/ftp.kernel.org/pub/linux/kernel/ (sjtu.edu.cn),选择需要的版本,直接选择下载即可。

 

2.解压内核源码

(1)解压

tar -zxvf linux-6.3.7.tar.gz -C /usr/src/

(2)软链接

[root@centos2 src]# ln -sv linux-6.3.7 linux
"linux" -> "linux-6.3.7"

(3)查看当前目录

[root@centos2 src]# ls
debug  kernels  linux  linux-6.3.7

3.配置依赖的环境

(1)修改阿里镜像源

          备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

    下载新的CentOS-Base.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清除并更新缓存

yum clean all && yum makecache

(2)确保根分区可用空间在15G以上

(3)确保gcc版本在5.0以上

GCC依赖四个库:GMP、MPFR、MPC、ISL。GMP:计算任意精度的数学库, 包括支持整数,有理数和浮点。MPFR: 一个多精度高效的浮点计算C语言库, 基于GMP。MPC:一个支持高精度复数的算术运算的C库,并能正确的进行结果舍入。ISL:用于操作集合和线性约束下的整数点的关系的库,支持集合的交,并和补操作。

      其中,MPFR依赖GMP,MPC依赖GMP和MPFR,GCC依赖上面四个库,所以推荐的编译安装顺序是GMP->MPFR->MPC->ISL->GCC。

选择下载如下版本,且给出了下载地址:

GMP-6.2.1    https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz
MPFR-4.2.0  https://www.mpfr.org/mpfr-current/mpfr-4.2.0.tar.xz
MPC-1.3.1    https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz
ISL -0.24      http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/isl-0.24.tar.bz2
GCC-9.3.0    http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.3.0/gcc-9.3.0.tar.xz

表1 gcc版本升级

升级版本命令

升级到gcc 6.3

  1. yum -y install centos-release-scl 

  2. yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils 

  3. scl enable devtoolset-6 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 6.3的话:

echo "source /opt/rh/devtoolset-6/enable" >>/etc/profile

这样退出shell重新打开就是新版的gcc了
以下其他版本同理,修改devtoolset版本号即可。

升级到gcc 7.3

  1. yum -y install centos-release-scl 

  2. yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils 

  3. scl enable devtoolset-7 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 7.3的话:

echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile

升级到gcc 8.3

  1. yum -y install centos-release-scl 

  2. yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils 

  3. scl enable devtoolset-7 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 8.3的话:

echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile

升级到gcc 9.3

  1. yum -y install centos-release-scl 

  2. yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 

  3. scl enable devtoolset-9 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 9.3的话:

echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

配置好镜像源也可以直接升级到gcc 9.3:

[root@centos2 linux]# yum -y install centos-release-scl 
[root@centos2 linux]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 
[root@centos2 linux]# scl enable devtoolset-9 bash

4.进入源码目录,使用make menuconfig开启菜单选项,手动选择内核功能

[root@centos2 linux]#  make menuconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/mconf

配置完成后会生成.config的隐藏文件,如果不知道该开启哪些功能也可以直接选用当前系统的配置文件,这里直接使用当前系统的配置文件。

 [root@centos2 linux]# cp /boot/config-3.10.0-693.el7.x86_64 ./.config
cp:是否覆盖"./.config"? yes

5.编译内核

"-j 8" 代表使用8颗cpu同时编译,这里可根据实际情况而定。

[root@centos2 linux]# make -j 8 

此步骤会对.config文件中的每一个选项再次确认,全部确认即可。

6.安装模块

[root@centos2 linux]# make modules_install

安装完成后在/lib/modules/目录下会生成一个同内核版本号的目录,目录下便是新内核的模块。

7.安装内核

 [root@centos2 linux]# make install

安装完后会在/boot目录下生成新的内核文件。

[root@centos2 linux]# ll /boot/

新内核会自动写入到引导文件中,直接重启系统,在选择内核的界面选中新的内核即可。

 [root@centos2 linux]# cat /boot/grub2/grub.cfg 

8.验证新内核版本

  [root@centos2 linux]# uname -a

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

010:vue中el-table 隐藏表头的两种方法

第010个 查看专栏目录: VUE — element UI echarts,openlayers,cesium,leaflet,mapbox,d3,canvas 免费交流社区 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例…

【Kubernetes存储篇】StorageClass存储类动态生成PV详解

文章目录 一、StorageClass存储类理论二、案例:Storageclass存储类实战演示1、搭建NFS服务端2、搭建NFS供应商(provisioner)3、创建StorageClass存储类4、创建PVC,通过StorageClass动态生成PV5、创建Pod挂载PVC 三、步骤总结 一、StorageClass存储类理论…

web测试工程师的工作职责

web测试工程师的工作职责1 职责: 1、 负责数据平台产品的测试工作,参与产品需求分析,负责方案制定,并能预先评估项目风险,确保测试活动的顺利开展; 2、 深入理解系统内部的设计原理,并能从测试的角度提供优化意见; 3、 根据产品需…

LVS+Keepalived 高可用群集实战部署

目录 前言 一、Keepalived工具介绍 1、Keepalived的作用 2、 Keepalived体系主要模块 二、keepalived工作原理 1、VRRP (虚拟路由冗余协议) 2、VRRP (虚拟路由冗余协议) (1)keepalived.conf是主配置文…

qt 使用qtpdfium实现读取pdf文件

此处仅作为笔记和配置指导。 要想获取源码可Git hub上下载,这里推荐一个:QtPdfium_Build_Source: 基于Google pdfium 库,可编译和编译好的Qtpdfium 库,用于加载pdf文件进行预览 (gitee.com) 目前小编根据推荐的编译方法&#xf…

STM32F0实现数字化SPWM纯正弦波逆变器

一、理论基础 所谓SPWM,就是通过只有开关两个状态(离散,数字的)的PWM序列产生正弦波(连续,模拟的)的方法。其理论基础一句话就能说明白:冲量相等而形状不同的窄脉冲加在具有惯性的环…

golang语法的注意事项

目录 1.源文件以.go结尾2.过文件只能存在一个mian 函数 (入口函数)3. go严格区分大小写4. golang的每行代码是一个语句 默认存在 ; 不需要自己写了5. golang 是每一行每一行的执行的 不要把多个语句写在一行6. 定义变量 或是导入的包未使用 无法同过编译7. {} 都是成对出现 为了…

Xtrak 塔克小车巡线代码以及红绿灯识别相关小改动

做的小改动: 只更改了xtark_follow_line.py 增加了一次HSV分割来做红绿灯识别(建议到时候用手机或者平板显示红色或者绿色图片),红绿图片: 将检测道路位置的方式从重心变为最接近屏幕中心的道路像素点。 检测不到道路之…

ubuntu 22.04部署dzzoffice及安装onlyoffice插件

目录 一、配置阿里源 二、安装数据库 三、安装依赖组件 (一)安装php7.4 (二)安装apache2 四、下载 dzzoffice 五、安装dzzoffice 六、安装onlyoffice插件 (一)从github下载小胡版onlyoffice替代原来…

如何学习及计算机编程,入门看这一篇就够了---以c语言为例

信息时代,计算机变成不再是专业性很强的一门学科,更多的是变成了一种工具 用计算机爬取信息(爬虫)进行数据分析,数据可视化(大数据的某个方面)处理海量的数据,如excel(百…

声音生成项目(4)——从VariantAutoencoder(VAE)到VQ-VAE矢量量化变分编码器

文章目录 论文介绍步骤具体讲解自定义矢量量化层获取最近距离的码字的索引计算推导损失函数相关参考 矢量量化层的代码实现完整代码实现 论文介绍 不同于变分编码器和自动编码器,vq-vae中的latent space是离散的,并不是连续的,这能够避免后验…

第3章“程序的机器级表示”:理解指针

指针是 C 语言的一个重要特色。它们提供一种统一方式,能够远程访问数据结构。 指针基本的概念其实非常简单,下面的代码说明了许多这样的概念: struct str { /* Example Structure */int t;char v; };union uni { /* Example Union */int t;…

大厂C++面试基础题第1辑——虚函数七题精讲之一

> “虚函数的作用” 是面向对象的C编程最基础也最核心的知识点,如果不能无法正确回答本题,则只此一题,不管大厂还是小厂,都铁定无缘了。 概述 “虚函数” 是 C面向对象三最:最基础、最重要、最关键的知识点。我们从…

什么是Vue的Vite构建工具?如何使用Vite进行项目开发

什么是Vue的Vite构建工具?如何使用Vite进行项目开发 介绍 Vite是一个由Vue.js核心团队开发的构建工具。它的目标是提供一种快速的开发体验,同时保持生产环境的稳定性和可靠性。Vite使用了ES模块作为开发环境的原生模块格式,通过在开发服务器…

C++11中的关键字constexpr

文章目录 1、constexpr修饰普通变量2、constexpr修饰函数3、constexpr修饰类的构造函数 constexpr 关键字的功能是使指定的常量表达式获得在程序编译阶段计算出结果的能力,而不必等到程序运行阶段。C 11 标准中,constexpr 可用于修饰普通变量、函数&…

【Leetcode】DP | 序列及子数组问题

300 最长递增子序列 求数组最长严格递增子序列的长度。 D [ i ] D[i] D[i]代表以 n u m s [ i ] nums[i] nums[i]结尾的最长递增子序列的长度。 D [ i ] max ⁡ j < i , n u m s [ i ] > n u m s [ j ] ( D [ j ] 1 ) D[i] \max_{j < i,\ nums[i]>nums[j]}(D[…

什么是Vue的UI框架?

什么是Vue的UI框架&#xff1f; Vue.js 是一款流行的 JavaScript 框架&#xff0c;用来构建现代的单页面应用程序&#xff08;SPA&#xff09;。Vue.js 提供了丰富的功能和 API&#xff0c;但是在构建应用程序时&#xff0c;我们还需要使用一些 UI 组件来实现复杂的交互和界面…

【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

02- 输入、输出及运算符(C语言)

一 输入、输出 1.1 输出函数 printf 函数是一个可变参数函数&#xff0c;参数的个数不定&#xff1a;int printf(const char *format, ...) printf("%d\n", x); printf("%d %d\n", x, y); 1.2 输入函数 1.2.1 scanf函数&#xff1a;int scanf(const …

利用AI点亮副业变现:5个变现实操案例的启示

AI变现副业实操案例 宝宝起名服务AI科技热点号头像壁纸职业头像收徒&#xff1a;萌娃头像定制头像平台挂载 小说推广号流量营销号百家号AI共创计划公众号流量主 知识付费知识星球小报童&#xff1a; 整体思维导图&#xff1a; 在这里先分享五个实操案例: 宝宝起名服务AI科技热…