(1)下载源码文件
先在内核官网(www.kernel.org/)上下载最新版本的内核到桌面上,然后rz拷到linux系统上,找到一个空目录如/app/tmp,将之移到/app/tmp中,然后再解包解压,就会生成一个目录
(2)准备文本配置文件.config
在/boot下有个文件/boot/config-3.10.0-514.el7.x86_64,这个文件定义了在编译内核的时候,那些特性,哪些功能启用了,哪些功能没启用,哪些是以模块方式还是打到核心,就是在编译内核的时候,以这个文件为模板,在这个模板基础之上来修改特性,所以先将这个文件拷到linux-4.13.2目录下,并命名为隐藏文件.config
cp /boot/config-3.10.0-514.el7.x86_64 /app/tmp/linux-4.13.2/.config
(3)安装包组 yum groupinstall "development tools"
yum groupinstall "development tools"
(4)配置内核选项 make menuconfig
cd /app/linux-4.13.2/ 进入到这个目录下,make menuconfig,但是会提示错误,缺少了ncurses包
所以再把这个包安装了, yum install ncurses-devel ,安装之后再次make menuconfig
然后就可以成功了(如果还没有成功,提示你缺失了包,那你就继续把这个缺失了的包加上-devel,用yum安装(yum install 缺失包-devel)。)进入了内核菜单项,我们可以自己定制内核版本名字和开启ntfs功能(默认是不开启的)
定制内核版本名字
启动ntfs功能
进入子菜单,ntfs文件系统在最下面,一直往下翻就可以找到
其他配置就不改了,然后退出,yes保存
通过菜单修改了内核选项,也就修改了.config这个文件
(5)开始编译
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就可以了,我写这么长,是为了统计此次编译花了多长时间,并且在编译完之后,会发出10次响声来提醒我编译完成了。
初次编译,会有一些错误出现,提示你有些包没有安装
我们用还是用yum install openssl-devel -y安装,然后再次编译,这次没有错误了,时间可能有点长,我的电脑不太好,花了55分钟才编译好
编译完成之后我们来看一下这个目录有多大呢?9.2G,所以我们的虚拟机所在的磁盘必须预留有10G以上的空间,不然编译无法完成
(6)安装模块make modules_install
make modules_install
我们安装模块完之后,在/lib/modules目录下就会出现新的内核
(7)安装内核相关文件make install
安装bzImage为/boot/vmlinuz-VERSION-RELEASE
生成initramfs文件
编辑grub的配置文件
安装完之后,我们再进入/boot下看看,发现已经生成了vmlixuz和initramfs文件
再查看/boot/grub2/grub.cfg,发现已经生成了我们安装的新内核的启动菜单
好了编译安装内核到此已经结束了,然后再重启就行了
(8)卸载内核
如果我们编译安装新内核之后,在使用的过程冲发现各种bug,和我现有的系统软件不兼容,我想删了这个内核,那么怎么删呢?
1.删除/lib/modules/目录下不需要的内核库文件
2.删除/usr/src/linux/目录下不需要的内核源码
3.删除/boot目录下启动的内核和内核映像文件
4.更改grub的配置文件,删除不需要的内核启动列表