专栏首页磨磨谈基于发行版本内核打造自己的内核

基于发行版本内核打造自己的内核

Linux当中最核心的部分就是内核,这个也是最基础,最可能被忽视的一部分,随便找一个刚入职的运维,学习个两三天,网上找些资料也能能自己安装编译内核了,很多运维的初期培训就是做的这些学习,为什么在网上已经有这么多文章的情况下,还要写一篇关于内核的文章,这是因为,我想讲的是如何去选择内核 一般来说,找内核的时候都会去下面这个网站进行选择

https://www.kernel.org/

很多人在问我的时候,都会问,我该怎么去选择哪个版本的内核,一般来说我的回答是这样的

选取最后一个长期支持版本,或者最后一个稳定的版本

一般来说,选择这两个版本基本不会出太大的问题,并且即使有问题,后面做小版本的升级也不是很难的事情,当然这是基于你对自定义内核很有兴趣,或者需要自己去裁剪,增加一些东西的时候,用我上面说的两个版本都没有问题,下面是一个其他的选择

最近把linus的just for fun看完了,也基本上了解了linux大概的发展历程,linux走向成功也有一定的原因是围绕在其周围的一些商业公司,红帽是其中最成功的一个公司,当然还有其他各种发型版本,开源版本和商业版本的最大区别在于服务上面,商业公司能够提供专业的服务,开源并不意味着免费,其中很大一部分是学习成本,然后其次就是包装和推广了,最终才是一个完整的产品

开源有开源的规矩,当然这个规矩在中国不一定行得通,大部分公司不会将开源修改的东西回馈回去,而能够回馈回去的,基本都是技术非常领先的公司,这些公司核心在于自己的技术,以及对产品的把控,所以也就不介意源代码的开源了,并且乐意去引领行业的发展

当然这个对于红帽这样级别的公司,代码当然是会开源的,而其发行版本的内核,其实都是经过了一些修改的,并且这些修改也都是会开源出来的,只是大部分时候我们并没有去关注它,这就是本篇的重点

获取源代码

http://vault.centos.org/7.2.1511/os/Source/SPackages/ centos版本

红帽的内核源码之前托管在ftp上的,现在全部放到了订阅中心了,这里进入红帽订阅中心,进行rpm包的搜索,找到需要的部分,选择下载即可

https://access.redhat.com/downloads/content/kernel/3.10.0-514.el7/x86_64/fd431d51/package

这里我们是要选择的是源码包,因为可能需要自己加些内核模块进去 安装源码包

rpm -ivh kernel-3.10.0-514.el7.src.rpm

安装后默认会放到下面的目录下面,如果你有自定义的目录,也可以直接解压rpm,解压的方法是,下面命令默认会将文件解压到当前目录

rpm2cpio kernel-3.10.0-514.el7.src.rpm |cpio -div

检查文件

[root@lab8106 ~]# ll  /root/rpmbuild/SOURCES/
total 82804
-rwxr-xr-x 1 root root     3118 Oct 19 23:20 check-kabi
-rw-r--r-- 1 root root      150 Oct 19 23:20 cpupower.config
-rw-r--r-- 1 root root      294 Oct 19 23:20 cpupower.service
-rw-r--r-- 1 root root        0 Oct 19 23:20 extra_certificates
-rw-r--r-- 1 root root   121660 Oct 19 23:20 kernel-3.10.0-ppc64.config
-rw-r--r-- 1 root root   121951 Oct 19 23:20 kernel-3.10.0-ppc64-debug.config
-rw-r--r-- 1 root root   121229 Oct 19 23:20 kernel-3.10.0-ppc64le.config
-rw-r--r-- 1 root root   121531 Oct 19 23:20 kernel-3.10.0-ppc64le-debug.config
-rw-r--r-- 1 root root    58278 Oct 19 23:20 kernel-3.10.0-s390x.config
-rw-r--r-- 1 root root    57895 Oct 19 23:20 kernel-3.10.0-s390x-debug.config
-rw-r--r-- 1 root root    30834 Oct 19 23:20 kernel-3.10.0-s390x-kdump.config
-rw-r--r-- 1 root root   137690 Oct 19 23:20 kernel-3.10.0-x86_64.config
-rw-r--r-- 1 root root   137991 Oct 19 23:20 kernel-3.10.0-x86_64-debug.config
-rw-rw-r-- 1 root root     8582 Oct 19 22:19 kernel-abi-whitelists-514.tar.bz2
-rw-rw-r-- 1 root root 83660860 Oct 19 22:19 linux-3.10.0-514.el7.tar.xz
-rw-r--r-- 1 root root        0 Oct 19 23:20 linux-kernel-test.patch
-rw-r--r-- 1 root root     1757 Oct 19 23:20 Makefile.common
-rw-r--r-- 1 root root    34277 Oct 19 23:20 Module.kabi_ppc64
-rw-r--r-- 1 root root    34277 Oct 19 23:20 Module.kabi_ppc64le
-rw-r--r-- 1 root root    31748 Oct 19 23:20 Module.kabi_s390x
-rw-r--r-- 1 root root    36881 Oct 19 23:20 Module.kabi_x86_64
-rw-r--r-- 1 root root     1198 Oct 19 23:20 rheldup3.x509
-rw-r--r-- 1 root root     1176 Oct 19 23:20 rhelkpatch1.x509
-rw-r--r-- 1 root root      977 Oct 19 23:20 securebootca.cer
-rw-r--r-- 1 root root      899 Oct 19 23:20 secureboot.cer
-rwxr-xr-x 1 root root      507 Oct 19 23:20 sign-modules
-rw-r--r-- 1 root root      361 Oct 19 23:20 x509.genkey

打包内核

如果需要修改默认的内核选项,就修改这个文件

vim /root/rpmbuild/SOURCES/kernel-3.10.0-x86_64.config

然后开始编译内核rpm包

rpmbuild -ba /root/rpmbuild/SPECS/kernel.spec

然后内核包就生成了,在下面目录当中取rpm包即可

/root/rpmbuild/RPMS/x86_64/

本文分享自微信公众号 - 磨磨谈(momotan1987),作者:张鹏

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cephfs的快照功能

    Cephfs的快照功能在官网都很少提及,因为即使开发了很多年,但是由于cephfs的复杂性,功能一直没能达到稳定,这里,只是介绍一下这个功能,怎么使用,并且建议...

    用户2772802
  • Cephfs的文件存到哪里了

    在ceph里面使用rbd接口的时候,存储的数据在后台是以固定的prifix的对象存在的,这样就能根据相同的前缀对象去对image文件进行拼接或者修复

    用户2772802
  • rbd的image快照与Pool快照

    这个错我之前也没见过,并且因为很少用到快照,所以可能也就没有触发这个问题,在查看了一些资料以后,明白了原因,这里就梳理一下

    用户2772802
  • 如何使用树莓派自制网络监视器

    本文所介绍的工具适合家庭环境下的“黑盒测试”,它可以帮助你记录网络中发生的所有事情。你可以用它来检测网络威胁,或将数据提供给相关专家来进行网络取证分析。 ? 如...

    FB客服
  • 1.Android系统源代码目录与系统目录

    想要看完整个Android的源代码,需要懂C、懂脚本、懂Java、软硬兼通。所以一般情况下,我们了解源代码的框架结构,出了问题知道从哪里着手解决就可以了。这就好...

    凌川江雪
  • 根据中序序列与后序序列构建二叉树

    算法如下: 1)先在后序序列中找到根结点, 2)在中序序列中找到根结点位置,(可以将二叉树分为左子树和右子树) 3)用同样的办法构造左子树 。...

    AI那点小事
  • Linux查看进程的所有信息的办法示例

    服务器上有一个任务进程,当我们使用ps -ef | grep task查看时,只能得到一些最基本的信息,假如我们需要知道对应的文件路径、启动命令的完整路径,就无...

    砸漏
  • Linux查看进程的所有信息的方法示例

    服务器上有一个任务进程,当我们使用ps -ef | grep task查看时,只能得到一些最基本的信息,假如我们需要知道对应的文件路径、启动命令的完整路径,就无...

    砸漏
  • 前序遍历树

    代码来自:pickle and cPickle – Python object serialization 首先树的结构,如图

    用户3579639
  • python中os. popen sy

    python调用Shell脚本或者是调用系统命令,有两种方法: os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,正确会返...

    py3study

扫码关注云+社区

领取腾讯云代金券