小编以前写过一篇软件的源码编译安装,今天小编再给大家带来一篇内核的编译安装。

  今天,就以centos7 编译安装最新版本4.13.2 内核为例,给大家详解。编译安装之前,检查一下自己的磁盘空间,大约需10G左右。

一、去官网(www.kernel.org)下载最新版本4.13.2



① rz上传

② 创建一个放内核的空目录 /app/kernel4.13,mv linux-4.13.2.tar.xz /app/kernel4.13/

tar xvf linux-4.13.2.tar.xz 解包,解包之前大约只有100M,解包之后875M

④ 扩展小知识:for i in `find /app/linux-4.13.2 -name *.c |xargs -n1` ;do file=`cat $i |wc -l` ;let sum+=file ;done ;echo sum=$sum 可以查出以.c结尾的文件有17233537行代码,还不是所有文件,可知编写一个内核有多么难!!!

二、准备文本配置文件(菜单): .config

以系统上原有的操作系统为模板,拷一个模板文件到我们的目录,并命名为.config的隐藏文件

  cp /boot/config-3.10.0-514.el7.x86_64 /app/kernel4.13/linux-4.13.2/.config

这个文件的作用:定义编译内核时,功能的特性

=y:打到核心里,以后放在 vmlinux中
=m:模块方式,以后就表现为 ko文件
not set:该功能不启用

三、安装编译安装需要的包组

yum groupinstall "development tools"

注意要加"",这个包组提供了编译安装所需要的工具

如果已安装就无需再安装

四、配置内核选项:make menuconfig

(1) cd /app/kernel4.13/linux-4.13.2/ 一定要进入自己的目录文件去完成后边的执行

(2) make menuconfig 就相当于小编以前博客中编译安装服务的.config脚本类似的功能

执行后会发现出错,因为缺包



  

(3) 缺什么包,安装什么包

yum install ncurses-devel -y

  

(4) 继续执行make menuconfig,成功后,会显示这样的窗口菜单



  

(5) 窗口菜单中的一些设置,回车就进入子菜单,在这个菜单中,想要设置什么功能,都可以自己设置

    按m,打到模块中,以后就表现为 ko文件
按y,打到核心里,以后放在 vmlinux中
空 ,就是关闭该功能

① General setup --->的子菜单

   Local version - append to kernel release 进入这一项可以写自己编译安装后的内核版本名

后续都是和硬件相关的,先不改了,按exit 退到上一层



② File systems ---> 文件系统,ext4 xfs ntfs ... 里边有很多文件系统

  DOS/FAT/NT Filesystems ---> 进入ntfs 的子菜单,为了实验后边的证明,我们把这个功能打开



③ Networking support ---> 网络的支持,有各种网络

   Wireless ---> 例如无线网络

④ Device Drivers ---> 设备的驱动

......

(6)退到最后,会有弹框,选择yes保存退出



  

(7)这一步进行的所有操作都放入了.config中,为了验证,我们刚才的操作保存了,

grep -i ntfs .config 查询ntfs,发现和我们修改的一样



  

五、开始编译:make

(1)因为这一步需要很长的时间,为了让大家看到我花费的时间,我加了date,并且设置执行完成后提示10次警报提醒我

date >> /app/date.log ;make -j 8 ;date >> /app/date.log ;for i in {1..10} ;do echo -e "\a" ;sleep 0.5 ;done

大家执行这一步,只需 make -j 8 就行

(2)初次执行,也会报错,缺少包



  

(3)yum -y install openssl-devel 老方法,缺啥按啥

  

(4)继续执行

date >> /app/date.log ;make -j 8 ;date >> /app/date.log ;for i in {1..10} ;do echo -e "\a" ;sleep 0.5 ;done



编译完成,我的机器配置较低,用时48分钟,目录大小变为: 9.2G

六、安装模块:make modules_install

安装完成后ls /lib/modules 会出现咱们自己编译的内核



  

七、安装内核相关文件:make install

安装完成后ls /boot 会出现咱们自己编译的内核相关文件

执行后,会有个报错,不用管,不用终止,等它生产文件



  

八、查询grub的配置文件,看有没有多新的菜单

cat /boot/grub2/grub.cfg



reboot 重启时,发现有咱们的内核新菜单

到此,我们的编译安装内核就完成了!!!我们就可以愉快的用我们的新内核了。但是企业中应该很少会换内核,因为新的内核可能不适合自己的系统,有各种各样的BUG,当然,我们还是要掌握这高大上的技术,因为可以出去装B。。。

  

九、卸载内核

如果发现自己编译安装的内核版本不适合自己的系统,可以卸载,不能只会安装。

1、cd /boot 删除(自己安装的版本eg:4.13)启动的内核和内核映像文件

2、cd /lib/modules/ 删除不需要的内核库文件

3、cd/app (自己安装源码的目录) 删除不需要的内核源码

4、vim /boot/grub/grub.conf 更改grub的配置文件,删除不需要的内核启动列表菜单

这样自己编译安装的内核就清干净了。

  

好了,今天就到这里了,有什么不懂的可以联系我。

在centos6,7 上编译安装内核的更多相关文章

  1. 自己编写的:centos6.6上编译安装apache2.4+php5.6+mysql5.6【亲自】

    在centos6.6上安装apache2.4+php5.6+mysql5.6 关于wget的安装 将之前装系统的.iso文件挂载到光驱 由于我在/home/jinnan/下建立了一个cdrom文件夹 ...

  2. 1-18 编译安装内核支持ntfs文件系统

    大纲: 源码编译Linux内核 使用Linux内核模块 实战:编译一个NTFS内核模块,实现Linux挂载NTFS文件系统并实现读写功能 =============================== ...

  3. CentOS6.5下编译安装LAMP环境

    LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架.该框架能够满足大流量.大并发量的网站需求:当然.也可以直接使用高性能的服务器.高性能的负载均衡硬件以及CDN ...

  4. centos6.7下编译安装lnmp

    很多步骤不说明了,请参照本人的centos6.7下编译安装lamp,这次的架构是nginx+php-fpm一台服务器,mysql一台服务器 (1)首先编译安装nginx: 操作命令: yum -y g ...

  5. centos6.7下 编译安装MySQL5.7

    centos6.7下编译安装MySQL5.7 准备工作 #-----依赖包及MySQL和boost安装包----- #yum包安装: shell> yum -y install gcc-c++ ...

  6. Linux(CentOS6.5)下编译安装PHP5.6.22时报错”configure: error: ZLIB extension requires gzgets in zlib”的解决方式(确定已经编译安装Zlib,并已经指定Zlib路径)

    本文地址http://comexchan.cnblogs.com/,作者Comex Chan,尊重知识产权,转载请注明出处,谢谢!   今天在CentOS6.5下编译安装PHP时,一直报错 confi ...

  7. centos6.8上yum安装zabbix3.2

    centos6.8上yum安装zabbix3.2 zabbix3.2安装文档:https://www.zabbix.com/documentation/3.2/manual/installation/ ...

  8. Linux 编译安装内核

    一.简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修 ...

  9. CentOS6.5_64bit下编译安装MySQL-5.6.23

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/44785511 ************************************** ...

随机推荐

  1. iOS的消息转发机制详解

    iOS开发过程中,有一类的错误会经常遇到,就是找不到所调用的方法,当然这类问题比较好解决,给当前对象或其父类对象添加该方法即可,使得编译器在编译时能正确找到该方法:或者,还有另外的方法,由于Objec ...

  2. javascript中的时间版运动

    前面的话 速度版JS运动是指以速度为参照,随着路程的变化,时间随之变化:而时间版JS运动是指以时间为参照,随着路程的变化,速度随着变化.相较而言,时间版JS运动更为常用.JQ的animate就是时间版 ...

  3. 微服务时代之2017年五军之战:Net PHP谁先死

    其实我一直是个懒人,开博也有好几年了,但是一直懒得写文章,主要怕打字麻烦, 手机都是用讯飞语音输入的, 可惜博客里面很多专业性的词语,用讯飞也不大好,另外无论在家还是在公司,开个语音一本正经的叽叽叽, ...

  4. Vue 实例中的生命周期钩子

    Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...

  5. Thinkphp报错 -- “_STORAGE_WRITE_ERROR_”

    磁盘满了 没有写入权限 解决方法:   chmod -R 777 Runtime目录路径

  6. Javaweb分页功能简单实现

    效果如下图 数据库中的数据                                                                页面效果 首先,创建一个通用类Page,代码及 ...

  7. Java开源连接池c3p0的基本用法

    前言:其实c3p0只是一个实现了javax.sql 接口 DataSource的一个工具集,使用c3p0可以帮我们管理宝贵的Connection资源,无须我们去创建连接(免去每次配置数据库驱动,url ...

  8. [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第1讲(实现思路与游戏界面的实现)

    整体效果展示: 一.实现思路 如图,这是我完成该项目的一个逻辑图,也是一个功能模块完成的顺序图. 游戏界面的完成 英雄飞机对象实现,在实现发射子弹方法过程中,又引出了子弹对象并实现.在此时,英雄飞机能 ...

  9. Retrofit2.0源码解析

    欢迎访问我的个人博客 ,原文链接:http://wensibo.net/2017/09/05/retrofit/ ,未经允许不得转载! 今天是九月的第四天了,学校也正式开学,趁着大学最后一年的这大好时 ...

  10. jmeter返回的post data乱码

    通过csv 跑出来的结果 解决方法: 在CSV Data Set Config中将File Encoding设置为GB2312将Allow quoted data 设置为true