昨天接到同事给安排的新任务,测试系统性能;网上查了些资料,目测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

最新文章

  1. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
  2. querySelectorAll 方法相比 getElementsBy 系列方法区别
  3. Raab判别法确定级数是否收敛
  4. 旅图beta版 asp.net web api 单元测试
  5. SharePoint 2013 一些小技巧
  6. ***PHP中empty()和isset()的区别
  7. 四则运算app工程的进展
  8. Appboy 基于 MongoDB 的数据密集型实践
  9. 【自学php】第四天 - 使用数组
  10. 计算机存储负数以及int转byte时-128的出现
  11. Codeforces Round #336 (Div. 2)-608A.水题 608B.前缀和
  12. 掌握SQLServer锁的相关概念
  13. css动画-animation各个属性详解(转)
  14. 功能强大的js数组方法:reduce
  15. Confluence 6 针对 key "cp_" 或 "cps_" 的 "Duplicate Entry" 问题解决
  16. Asp.Net MVC 获取当前 Controller Action Area
  17. leetcode16—3 Sum Closet
  18. Android------------------ListVIew学习
  19. 5.如何调节ubuntu的分辨率
  20. Intellij IDEA自定义类模板和方法模板

热门文章

  1. Discuz!数据库操作DB类和C::t类介绍
  2. Anaconda-Jupyter notebook 如何安装 nbextensions
  3. 邮件学习过程中关于request.POST的使用
  4. centos7 安装Virtualenv
  5. C语言基础知识-数据类型
  6. Kubernetes系统基础
  7. DTD学习
  8. 使用SikuliX定位Object(flash)元素
  9. window下关闭占用端口使用
  10. gradle 构建scala程序