博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在centos6,7 上编译安装内核
阅读量:5165 次
发布时间:2019-06-13

本文共 2601 字,大约阅读时间需要 8 分钟。

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

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

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

1216496-20170919145307462-568164578.png

① 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:该功能不启用

1216496-20170919154948415-1980611676.png

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

yum groupinstall "development tools"

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

如果已安装就无需再安装

四、配置内核选项:make menuconfig

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

(2) make menuconfig 就相当于小编以前博客中编译安装服务的.config脚本类似的功能
执行后会发现出错,因为缺包
1216496-20170919145824775-631381659.png
  
(3) 缺什么包,安装什么包
yum install ncurses-devel -y
  
(4) 继续执行make menuconfig,成功后,会显示这样的窗口菜单
1216496-20170919145849759-286469793.png
  
(5) 窗口菜单中的一些设置,回车就进入子菜单,在这个菜单中,想要设置什么功能,都可以自己设置

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

① General setup --->的子菜单

   Local version - append to kernel release 进入这一项可以写自己编译安装后的内核版本名
后续都是和硬件相关的,先不改了,按exit 退到上一层
1216496-20170919145939478-2123628619.png
② File systems ---> 文件系统,ext4 xfs ntfs ... 里边有很多文件系统
  DOS/FAT/NT Filesystems ---> 进入ntfs 的子菜单,为了实验后边的证明,我们把这个功能打开
1216496-20170919150020431-1963342165.png
③ Networking support ---> 网络的支持,有各种网络
   Wireless ---> 例如无线网络
④ Device Drivers ---> 设备的驱动
......
(6)退到最后,会有弹框,选择yes保存退出
1216496-20170919150111681-1793433289.png
  
(7)这一步进行的所有操作都放入了.config中,为了验证,我们刚才的操作保存了,
grep -i ntfs .config 查询ntfs,发现和我们修改的一样
1216496-20170919150123978-820298205.png
  

五、开始编译: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)初次执行,也会报错,缺少包
1216496-20170919150240040-1166720831.png
  
(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
1216496-20170919150250790-218267119.png
编译完成,我的机器配置较低,用时48分钟,目录大小变为: 9.2G

六、安装模块:make modules_install

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

1216496-20170919150324540-461355088.png
  

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

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

执行后,会有个报错,不用管,不用终止,等它生产文件
1216496-20170919150349915-523834036.png
  

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

cat /boot/grub2/grub.cfg

1216496-20170919150446384-1862260248.png
reboot 重启时,发现有咱们的内核新菜单
1216496-20170919150453868-2007172581.png

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

  

九、卸载内核

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

1、cd /boot 删除(自己安装的版本eg:4.13)启动的内核和内核映像文件
2、cd /lib/modules/ 删除不需要的内核库文件
3、cd/app (自己安装源码的目录) 删除不需要的内核源码
4、vim /boot/grub/grub.conf 更改grub的配置文件,删除不需要的内核启动列表菜单
这样自己编译安装的内核就清干净了。
  

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

转载于:https://www.cnblogs.com/along21/p/7551833.html

你可能感兴趣的文章
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>
Codeforces Round #277 (Div. 2)
查看>>
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>