昨天接到同事给安排的新任务,测试系统性能;网上查了些资料,目测perf功能很强大,而且是内核源码自带的,编译安装即可使用;看了下自己的虚拟机,没有内核源码,好吧,装一个;

查看一下系统版本:

 #cat /etc/redhat-release
CentOS Linux release 7.5. (Core) #uname -r
3.10.-.el7.x86_64

去CentOS官网找对应的内核源码包,下面地址,进去找到与版本信息对应的源码目录,找到内核源码包,下载即可:

#http://vault.centos.org/
#wget http://vault.centos.org/7.5.1804/os/Source/SPackages/kernel-3.10.0-862.el7.src.rpm

直接使用rpm安装的话,会提示一个错误:

#rpm -i kernel-3.10.-.el7.src.rpm
Warning: user mockbuild does not exist. using root
...

这时需要安装一个mock,并新建一个mockbuild用户:

#yum install mock
#useradd -s /sbin/nologin mockbuild

好了,继续安装:

#rpm -i kernel-3.10.-.el7.src.rpm

这时回到root根目录,会有一个rpmbuild目录,进去该目录下的SPEC

#cd ~/rpmbuild/SPECS

开始执行rpmbuild:

#rpmbuild -bp --target=$(uname -m) kernel.spec

这时应该会提示一堆错误信息,因为需要很多依赖包,安装之:

#yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto
#yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel java-devel
#yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel

再次执行rpmbuild命令,如果还提示有缺少,则对应安装即可;

接下来的过程很愉快:

#rpmbuild -bp --target=$(uname -m) kernel.spec
Building target platforms: x86_64
Building for target x86_64
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.eM2FKD
+ umask
+ cd /root/rpmbuild/BUILD
+ patch_command='patch -p1 -F1 -s'
+ cd /root/rpmbuild/BUILD
+ rm -rf kernel-3.10.-.el7
+ /usr/bin/mkdir -p kernel-3.10.-.el7
+ cd kernel-3.10.-.el7
+ /usr/bin/xz -dc /root/rpmbuild/SOURCES/linux-3.10.-.el7.tar.xz
+ /usr/bin/tar -xf -
+ STATUS=
+ '[' -ne ']'
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ mv linux-3.10.-.el7 linux-3.10.-.el7.centos.x86_64
+ cd linux-3.10.-.el7.centos.x86_64
...
...

这时,就可以找到源码包了,在~/rpmbuild/BUILD目录下:

#cd ~/rpmbuild/BUILD/kernel-3.10.-.el7/linux-3.10.-.el7.centos.x86_64

参考:CentOS官方说明:

https://wiki.centos.org/zh/HowTos/I_need_the_Kernel_Source

CentOS安装相应版本的内核源码的更多相关文章

  1. 转载 :Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码

    http://linux.cn/article-5015-1.html 问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubunt ...

  2. git获取内核源码的方法

    [转]http://www.360doc.com/content/17/0410/16/23107068_644444795.shtml 1. 前言 本文主要讲述ubuntu下通过git下载linux ...

  3. Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装

    原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底 ...

  4. Linux-通过源码安装某个版本的内核

    一下操作步骤来自于各种搜索出来的杂七杂八的东西.主要来自:https://blog.csdn.net/happyfreeangel/article/details/85088706 前置环境:Cent ...

  5. <Linux内核源码>文件系统VFS内核4.0.4版本基本概念源码

    题外话:Linux内核从2.x和3.x到现在最新的4.x变化非常大,最直观的表现就是很多书上的内核代码已经无法直接继续使用,所以看看新的源码是非常有意义的! (下文中的内核源码都来自于 kernel ...

  6. 鸿蒙内核源码分析(信号生产篇) | 信号安装和发送过程是怎样的? | 百篇博客分析OpenHarmony源码 | v48.03

    百篇博客系列篇.本篇为: v48.xx 鸿蒙内核源码分析(信号生产篇) | 年过半百,依然活力十足 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管 ...

  7. (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

    本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...

  8. Linux内核源码分析 day01——内存寻址

    前言 Linux内核源码分析 Antz系统编写已经开始了内核部分了,在编写时同时也参考学习一点Linux内核知识. 自制Antz操作系统 一个自制的操作系统,Antz .半图形化半命令式系统,同时嵌入 ...

  9. 编写简单的内核模块及内核源码下载,内核模块Makefile编写

    CentOS的内核源码默认是没有下载的,需要自己下载,首先安装linux的时候就应该知道linux的版本,我装的是Centos7的 下面查一下内核的版本,使用下面的命令 [scut_lcw@local ...

随机推荐

  1. Android ProGuard:代码混淆压缩

    写这篇文章的目的 一直以来,在项目中需要进行代码混淆时每次都要去翻文档,很麻烦.也没有像写代码那样记得那么多.既然要查来查去,就不如自己捋一捋这个知识点了,被人写的终究还是别人的.所以自己去翻看了很多 ...

  2. netcore里使用jwt做登陆授权

    1 什么是JWT? JWT是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象 ...

  3. [LeetCode] 581. 最短无序连续子数组 ☆

    描述 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, 6, 4, 8 ...

  4. Python七大原则,24种设计模式

    七大设计原则:1.单一职责原则[SINGLE RESPONSIBILITY PRINCIPLE]:一个类负责一项职责.2.里氏替换原则[LISKOV SUBSTITUTION PRINCIPLE]:继 ...

  5. layui 单选框、复选框、下拉菜单 不显示问题 记录

    1. 如果是 ajax嵌套了 页面, 请确保  只有最外层的页面引入了 layui.css 和 layui.js 内层页面 切记不要再次引入 2. layui.use(['form', 'upload ...

  6. 用java刷剑指offer(平衡二叉树)

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 牛客网链接 java代码 import java.lang.Math; public class Solution { public bool ...

  7. redis开发相关

    1.为什么要用缓存,缓存的使用场景2.redis数据存储类型 string/list/set/hash/sort set(zset)3.redis的常用数据类型,使用方式4.redis实现的跳跃表是什 ...

  8. python 字符串操作list[::-1]的几种用法

    1.list[-1],此时只有一个参数,作用是通过下标访问数据,-1是倒数第一个. 2.list[:-1],作用是返回从start_index = 0到end_index = -1的一串数据这里的li ...

  9. 关于Bigdecimal的问题

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行 ...

  10. pdfminer批量处理PDF文件

    from pdfminer.pdfparser import PDFParser, PDFDocument from pdfminer.pdfinterp import PDFResourceMana ...