linux内核编译

参考:linux公社:http://www.linuxidc.com/Linux/2016-12/137794.htm和鸟哥私房菜

         Linux内核(linux kernel),是一种计算机操作系统的内核,由c和汇编语言编写,匹配POSIX标准,以GNC通用公共许可证发布。内核指的是一个提供硬件抽象层、磁盘及文件控制、多任务等功能的系统软件。

        内核是操作系统的核心,也是操作系统最基本的部分。Linux内核工作在模块化的方式下并且这些模块可以动态的卸载和装载;所以在很多公司面临不同的实际应用都会编译内核定制相关的内核模块配置相关的内核参数以达到需求并剔除不需要的内核模块。

1、安装开发包组

yum groupinstall Development tools
linux内核编译_第1张图片

2 、下载内核源码

https://www.kernel.org/

linux内核编译_第2张图片

可以看到当前稳定的最新版本为4.13.11

3、解压内核源码

tar -xvf linux-4.13.11.tar.xz -C/usr/src/kernels/
linux内核编译_第3张图片

进入文件夹查看

查看内核源代码的次目录

感兴趣可以了解每个目录里是哪些重要数据。

保持源码干净

make mrproper
make clean
linux内核编译_第4张图片

4、查看硬件环境

查看cpu信息

cat /proc/cpuinfo 
linux内核编译_第5张图片
查看PCI设备信息

lspci
linux内核编译_第6张图片

5、开始内核功能选择

make menuconfig
我使用的是GNOME界面,所以也可以使用make gconfig,还有很多方法,但我们最常用make menuconfig,因为不管是图形界面还是文字模式都可以显示类似图形界面供选择。
linux内核编译_第7张图片

发现缺少ncurses,使用yum install ncurses-devel安装即可。

安装完成,再次输入make menuconfig命令,出现如下

linux内核编译_第8张图片

使用空格键选择设置,[]<>符合可以选择选项,空为不编译,*为编译进内核,M为编译模块。对于细节,自己可以进行深入理解,此处不再详细描述,后续将解析。

设置完成选择Save

linux内核编译_第9张图片

保存到.config文件中

linux内核编译_第10张图片

完成后Exit退出

6、内核编译

这里我使用的是鸟哥的方法,也可以使用make -j #(#为cpu核心数)或者直接make我也试验过,有效。

make clean    #先清除
make bzImage  #先编译内核
make modules  #再编译模块
编译内核发现缺少文件

linux内核编译_第11张图片

使用yum install openssl-devel安装,完成,重新编译

要等一段时间啦!安装完成如下:

linux内核编译_第12张图片

编译模块继续等一段时间。编译完成如下:

linux内核编译_第13张图片

7、安装模块和内核

1)安装模块

make modules_install
linux内核编译_第14张图片
2)安装内核

make install
出现错误,那就将缺少的安装yum install elfutils-libelf-devel

再次安装内核,完成。

注意先安装模块再安装内核

8、修改内核启动

注意:我使用的是centos7,原来的grub变为grub2,原来的grub.conf变为了grub.cfg

原来的内核:

linux内核编译_第15张图片

刚刚编译的新内核,可能我使用版本较新,自动添加了进来(好像不需要我们手动添加了):

linux内核编译_第16张图片

9、重启测试

重启会出现新编译的选择项,选择即可。

uname -a
uname -r
原先的内核:

安装新内核后:

linux内核编译_第17张图片

注意:对于装了多系统的电脑,会发现重新启动选项没有变。我的电脑就是,因为装了好几个系统,最后是由ubuntu引导的,所以要进ubuntu系统,使用update-grub2命令将开机启动内核更新即可。

你可能感兴趣的:(linux,centos,linux,kernel)