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

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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算

容器只是一个起点

容器,Docker,Kubernetes已经出现有四年了。以致于有些人甚至认为这项技术是成熟的!但是,我强烈认为,容器基础设施的构造任然处于成长阶段。

23990
来自专栏IT派

最全的30+个开源免费的Docker工具

容器生态系统的发展和扩展速度越来越快速,并且已经有了许多的Docker工具和服务,想要知道所有的有用选择,你会发现基本很难完成。

28330
来自专栏SDNLAB

Kubernetes正式支持Containerd 1.1版

19840
来自专栏bdcn

CoreOS那些事之Rkt容器尝鲜(上) 转

从CoreOS发布Rocket应用容器项目到现在,已经过去半年时间了。为了增加辨识度,项目更名为了Rkt。在沉寂了许久后,最近又开始在社区里出现了一些新鲜的声音...

41720
来自专栏云计算D1net

为什么Docker会受欢迎?看完这些才恍然大悟

Docker不是唯一的容器平台,也不是第一个推出的。其他框架,如OpenVZ和LXC,从20世纪20年代中期诞生。而其他类似容器的技术,如FreeBSD更进一步...

35960
来自专栏DevOps时代的专栏

E2E 测试容器化实践

在互联网最初之时,没有任何容器化的概念,那么刚开始的时候是怎样开发软件或者是网站的吗?那时就是计算机便是服务器,就是一个简单的静态网页,没有复杂的业务逻辑。

14520
来自专栏编程坑太多

『中级篇』Kubenetes简介(60)

PS:了解我的老铁都知道,概念讲的少,更多重在实践,通过实践更好的理解概念,从下次开始怼k8s的环境和集群。如果跟我一起学的老铁,应该可以感受的到,在学习doc...

24930
来自专栏逸鹏说道

KVM基于内核的虚拟机概念理解与客户机浅析

作为一个KVM的学习者,如果你想要自己完善一个KVM样品级的解决方案,仅仅学会图形化界面使用和简单的配置(详情见上一篇文章)是远远不够的。在上文中感谢@laow...

42440
来自专栏Albert陈凯

5分钟弄懂Docker

尽管之前久闻Docker的大名了,但是天资愚钝,对其到底是个啥东西一直摸不清,最近花了一段时间整理了一下,算是整理出一点头绪来。 官网的介绍是这样的: Do...

34950
来自专栏大魏分享(微信公众号:david-share)

如何将Openshift对接CloudForms云管平台?

Openshift对接云管平台的目的 Openshift是红帽一款优秀的PaaS解决方案。目前国内的行业客户,如金融、电信、制造等,在云平台的构建上,逐渐从Ia...

43850

扫码关注云+社区

领取腾讯云代金券