CentOS7 编译安装最新的Linux Kernel 6.0 rc3

news2024/9/21 8:15:27
哪个男孩不想手动编译一份自己的内核呢?

安装编译环境

CentOS7安装必要的包

yum groupinstall "Development Tools" -y &&
yum install openssl-devel -y &&
yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto -y &&
yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel -y &&
yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel -y

CentOS7更新gcc版本

必须升级gcc版本,centOS7自带的gcc版本是4.8.5,编译内核会出错

 sudo yum install centos-release-scl -y &&
 sudo yum install devtoolset-8-gcc* -y &&
 scl enable devtoolset-8 bash

永久替换旧的gcc( 可选操作 )

mv /usr/bin/gcc /usr/bin/gcc-4.8.5 &&
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc &&
mv /usr/bin/g++ /usr/bin/g++-4.8.5 &&
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++

下载最新的Linux Kernel6.0 rc3

从kernel.org下载6.0 rc3 的压缩包有203MB,由于国内网络的特殊情况下载会非常的慢,请自备加速手段或者耐心。

 wget https://git.kernel.org/torvalds/t/linux-6.0-rc3.tar.gz
tar zxvf linux-6.0-rc3.tar.gz 
cd linux-6.0-rc3

配置config

以下配置config文件的操作二选一,如果拿不准就选择第一个,有图形配置界面的。编辑config文件可以选定编译过中需要的内核模块或者组件。不懂不知道就全程默认。

通过menuconfig

make menuconfig

 linux-6.0-rc3 目录下敲这个命令,会进去一个配置界面,如果看不懂就保持默认配置,就按右方向键选定 save 然后回车,根据提示保存.config文件,

cat  .config //查看有没有正确保存

根据现有内核拷贝生成config

也可通过现有内核参数去生成新的配置参数文件.config 。要注意 /boot/config-3.10.0-957.el7.x86_64,就是/boot/目录下面这个相似的目录。或许不同CentOS7的路径名不同。要根据实际机器的目录改动。

cp /boot/config-3.10.0-957.el7.x86_64 ./.config 
make oldconfig //操作这里要一路回车
cat  .config

执行编译

我要再提醒你一次,金箍戴上以后,你再也不是一个凡人,执行以下命令,你将是一个编译Linux内核的人。-j12参数是因为我给虚拟机分配了12核,让这12核别闲着。根据自己机器的情况改成 -j6、 -j8甚至 -j100都行。自行测试胡改的后果。编译过程费时费力,看编译机器的性能。假如是1C1G的云服务器执行编译,可以先去睡一觉。

make -j12 all

上面命令跑完后,内核模块如果没有特殊需求,可以把内核模块的debug信息给去掉,节约点硬盘空间。

make INSTALL_MOD_STRIP=1 modules_install > /dev/null &&
make modules_install &&
make install 

设置默认新的kernel启动

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg &&
sudo grub2-set-default 0 &&
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

编译成rpm包

编译出单独的通用RPM包可以在其他的CentOS 7机器上直接安装,免去了以上繁琐的手动编译的过程。
在当前目录 linux-6.0-rc3 下执行 :

yum -y install rpm-build && make rpm-pkg -j32

如果需要压缩体积,可以将make rpm-pkg -j32 换成 make INSTALL_MOD_STRIP=1 rpm-pkg 。

这条命令又会执行一会。执行完不出意外,会在系统的~/rpmbuild/RPMS/x86_64/ 目录下出现三个rpm安装包。

-rw-r--r--. 1 root root  69354600 8月  31 19:46 kernel-6.0.0_rc3-1.x86_64.rpm
-rw-r--r--. 1 root root 179586568 8月  31 19:48 kernel-devel-6.0.0_rc3-1.x86_64.rpm
-rw-r--r--. 1 root root   1545516 8月  31 19:47 kernel-headers-6.0.0_rc3-1.x86_64.rpm

在其他机器CentOS7上安装(yum localinstall kern* -y)这三个rpm包就行可以更新内核了。三个包装完还要更新一下启动项。

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg &&
sudo grub2-set-default 0 &&
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

这是我打包好的三个rpm包,有兴趣的朋友可以下载安装试试。不做任何可靠保证,请避免在生产环境上直接使用。

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

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

相关文章

Java核心技术卷Ⅰ-第四章对象和类

重点 1.使用预定义类 2.方法参数 3.对象构造 4.包 5.类设计技巧 1.使用预定义类 一个源文件只能有一个公共类,可以有任意数目的非公共类可以使用通配符调用Java编译器:javac Test*.java使用var声明局部变量就不用担心0、0L和0.0之间的区别,因…

找出链表中间结点的三种解法

初阶链表刷题注意!!!学习的是解题的思维! 找出链表的中间结点(链接在末尾) 解题思路 数组解法 由于链表不能通过下标访问对应的结点,所以我们将所有的结点存储在数组中,这样就可以通…

测试开发怎么学?

随着互联网行业的高速发展,快速高质量的产品版本迭代成为企业始终立于不败之地的迫切需求,而在短期迭代的快节奏中.传统测试工作面对更大压力,无法持续提供高效率高质量的人力支撑,所以越来越多的企业需要技术更为全面的测试开发工程师。 测试开发本质上属于测试,区…

【数据结构】二叉树链式结构的实现

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:数据结构 文章目录一、二叉树的链式存储二、二叉树链式结构的实现结构设计手动构建二叉树前序遍历中序遍历…

游戏思考26:游戏服务器压力测试文档(最近在忙这个,这个会更新频繁,12/03未完待续)

文章目录一、压力测试关注点二、计算最耗时的加载操作1)从数据库读取数据,对加载的类型进一步划分各种类型,计算最耗时操作2)查看CPU随着在线人数的变化所占百分比3)查看内存变化4)备注一、压力测试关注点 …

【C语言字符串】一道题检验你的字符串学习情况

作者:匿名者Unit 目录 一.字符串引言1.字符串基础二.洛谷P5734详解1.字符串相关库函数(1) strcpy函数 (2) strcat函数 (3)strstr函数 2.题目讲解一.字符串引言 1.字符串基础 字符串通常以\0作为…

008. 子集

1.题目链接: 78. 子集 2.解题思路: 2.1.题目要求: 给一个元素各不相同的数组 nums,返回各种可能的子集(子集不能重复) 比如: 输入:nums [1,2,3] 输出:[[],[1],[2],[…

做了8年前端,感谢那些优秀的后端,陪伴我工作,教会我成长

☆ 前段时间由于一时的头脑发热,写了一篇《做了8年前端,细说那些曾经让你浴霸不能的后端》的博客,虽然每个细节也都属实吧,但始终是一些负能量的东西,建议大家不要去看了,今年互联网情况已经这样了&#xf…

安卓APP源码和设计报告——体育馆预约系统

项目名称:体育馆体育场预约系统专业:班级:学号:姓名: 目 录 一、项目功能介绍3 二、项目运行环境3 1、开发环境3 2、运行环境3 3、是否需要联网3 三、项目配置文件及工程结构4 1、工程配置文件4 2、工程结构目…

磨金石教育摄影技能干货分享|上海随手拍——叶落满街,秋意未尽

步入十二月以来,气温也随之骤降,这时候才明显感到初冬已至。冬天的寒风就是最好的脱叶剂,走在街道上,抬眼望去两旁的树木多数已经稀疏。只有残留的绿意还在迎着微微的寒风摇动。 我最喜欢的是秋天,因为秋天的草木最有色…

基于keras与tensorflow手工实现ResNet50网络

前言 在文章 基于tensorflow的ResNet50V2网络识别动物,我们使用了keras已经提供的神经网络,完成了图像分类的。这个时候,小明同学就问了,那么我怎么自己去写一个神经网络来进行训练呢? 本文就基于tensorflow&#xff…

Redis原理篇——五种基本数据类型

一、Redis底层数据结构 1. SDS 获取字符串长度耗时: 由于Redis底层是C语言编写的,C语言中没有字符串这个概念,本质上都是字符数组,获取字符串长度就是遍历数组获取长度(遍历到 \0结束标识结束 )时间复杂度…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校毕业生信息采集系统05hj2

大四计算机专业的同学们即将面临大学4年的最后一次考验--毕业设计。通过完成毕业设计来对过去4年的大学学习生活做一个总结,也是检验我们学习成果的一种方式,毕业设计作品也是我们将来面试找工作的一个敲门砖。 选题前先看看自己掌握哪些技术点、擅长哪…

数据库常用的数据类型和约束条件

文章目录一. 数据库常用的数据类型1. 数字类型1.1 整数类型:INT(m)和BIGINT(m)1.2 浮点类型:DOUBLE(m,n)2. 字符类型2.1 定长字符:CHAR(n)2.2 变长字符:VARCHAR(n)2.3 变长字符:TEXT(n)3. 日期类型3.1 语法格式:3.2 注意事项二. 约束条件1.主键约束(PRIMARY KEY)1.1 注意事项1.…

[附源码]Python计算机毕业设计Django美发店会员管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Web压测工具http_load原理分析

01、前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ 这个软件一直在保持着更新(不像webbench,已经是十年的老古董了。 webbench的源…

【Matplotlib绘制图像大全】(二十九):Matplotlib绘制热力图

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

【经验分享】突然我的SM.MS的图床没法访问了(内附解决方法)

【经验分享】突然我的SM.MS的图床没法访问了(内附解决方法) 一大早写文章,发现Markdown里的图片全部都不能成功加载了,这个的确挺头疼的! 文章目录1 说一说现象2 简单排查一下3 查找解决方案4 实施解决方案5 总结6 更多…

高楼扔鸡蛋问题

1.对应letecode链接 高楼扔鸡蛋问题 2.题目描述 解题思路 题目是这样&#xff1a;你面前有一栋从 1 到 N 共 N 层的楼&#xff0c;然后给你 K 个鸡蛋&#xff08;K 至少为 1&#xff09;。现在确定这栋楼存在楼层 0 < F < N&#xff0c;在这层楼将鸡蛋扔下去&#xff…

Windows使用ssh协议远程连接ubuntu linux子系统

Windows使用ssh协议远程连接ubuntu linux子系统一、Windows远程连接ubuntu linux子系统二、开启ubuntu ssh服务三、获取ubuntu子系统的ip地址四、从windows上通过ssh连接到ubuntu子系统五、后记一、Windows远程连接ubuntu linux子系统 当我们在windows上安装好ubuntu子系统后&…