1. 前言
毕业进入公司后,接触的第一个项目是做ceph内核客户端的优化,为了对ceph-client有更加深刻的了解,这里编译linux-3.18内核,操作系统为centos7.2。
2. 本文分析内容安排
- 前期准备
- 编译安装
3.前期准备
- 到http://www.kernel.org下载对应版本的内核
- 将内核源码解压到/usr/src目录下
tar xf linux-3.18.63.tar.xz -C /usr/src
- 因为现在一般采取图形化menuconfig的方式选取编译的模块,该模块依赖于ncurses和ncurses-devel,这里需要首先确认有没有安装这两个包,没有的话要安装
yum install ncurses ncurses-devel
4. 编译安装
- 清理历史编译过程中留下的编译残渣,如果是第一次编译,这一步可以省略
cd /usr/src/linux-3.18.63
make mrproper - 通过界面的方式选择要编译的模块
make menuconfig
对界面中出现的每个配置选项都有三个选择,<*>将一个功能编进内核,[]不编译进内核,[M]是可以动态插入内核的代码 - 开始编译内核,输入
make
这个过程大概需要二十分钟到半个小时的时间,然后生成内核模块,命令为
make modules_install
这步完成之后会在/lib/modules目录下生成以版本号命名的文件模块
make install
这一步之后就在/boot/目录下生成了一个vmlinuz-3.18.63的内核文件了,至此编译完成。重启系统,就会多了新编译内核的选择。
5. 总结
本文讲了如何编译一个新内核,整体与编译一个源码程序差不多,就是第一步稍显麻烦。
6. 作者介绍
梁明远,国防科大并行与分布式计算国家重点实验室研究生,读研期间重点研究docker容器技术。17年毕业后回老家进入浪潮,主攻ceph分布式文件系统的优化。邮箱:liangmingyuanneo@gmail.com