Centos 7 源码编译安装内核4.14.12

为什么要编译内核

需要新功能的支持:

在生产环境中,突然会需要使用一些新的功能,但是原有的内核并不支持此功能,这是就需要重新编译出一个新的内核来提供对此新功能的支持,比如虚拟化、iptables功能必须要在2.4.X以上版本的内核中才支持。

原核心太过于臃肿:

原来安装的内核中,有很多不常用甚至基本上用不到的功能支持,而这些功能又会使内核文件变得很大,这时要将此变成一个简化切功能够用的内核就需要进行重新编译。

与硬件搭配的稳定性:

很多情况下,系统内核中默认一般默认支持的CPU类型为Inter,但在其它厂商,如AMD或者是较新的CPU硬件上使用此系统,可能就不能很好的支持,且不稳定。因此就需要重新编译内核来支持最新的硬件驱动。

其它特殊需求:

linux除了在pc机上运行,当然也能支持一些其它设备,比如嵌入式的APM、智能手机等,这时或许就要进行重新编译支持的CPU架构来支持这些特殊需求。

总结一点:kernel的作业就是所需要的硬件支持,因此在此基础上只加需要的功能,来实现内核文件的短小精干。

实验环境:VMware Workstation Pro 14(试用版)

系统平台:

CentOS Linux release 7.4.1708 (Core)       内核  3.10.0-693.el7.x86_64

步骤如下:

内核源码官网,请下载标记为stable的版本

https://www.kernel.org/

本次编译的源码版本为

stable:


4.14.12


2018-01-05

1.准备编译环境

a.至少准备10GB的磁盘剩余空间

b.# yum -y groups install "Development Tools"

# yum -y install ncurses-devel elfutils-libelf-devel bc openssl-devel.x86_64

2.解压源码包

#tar xvf linux-4.14.12.tar.xz

源码包解压后的大小为979M

3.在当前已经安装的系统中的/boot目录下存在一个名为conf-xxx 的文件,那个文件其实就是核心功能列表选择文件,如

-rw-r--r--.  1 root root   140894 Aug 22 17:21 config-3.10.0-693.el7.x86_64

copy当前系统内核中的config-xxx文件到需要编译的内核目录下。这一步不是必须的,可以用来参考之前系统的内核选项。

#cp config-3.10.0-693.el7.x86_64 /kernel/linux-4.14.12

4.所有操作均在源码编译目录内进行

#cd /kernel/linux-4.14.12/

编码内核选择界面(生成.config的方法):


make help


支持更新模式进行配置


make menuconfig


基于curses的文本窗口界面


make gconfig


基于GTK(GOME)环境窗口界面


make xconfig


基于QT(KDE) 环境的窗口界面


make oldconfig


透过已经存在的./.config文件内容,

并使用该文件内设定值为默认值,

只将新版本核心的新功能列出让用户选择,

可以简化核心功能挑选过程。对与升级内核很好选择。


make defconfig


基于内核为目标平台执行提供的“默认”配置进行配置


make allyesconfig


所有选项均回答为”yes”


make allnoconfig


所有选项均回答为”no”


make mrproper


清理所有编译生成的文件、 config及某些备份文件


make clean


清理大多数编译生成的文件,但会保留config文件等


make distclean


mrproper、 patches以及编辑器备份文件

5.使用make menuconfig 命令进行菜单化界面来选择内核功能:

左右箭头键:用来移动选择最下面的select、exit、help、save、load几个按钮

上下箭头键:可移动上面的菜单来选中对应的功能选项,选项后与--> 表示内部有子菜单需要选择。

选定项目:使用上下键选择设定的项目,并使用左右键选择select按钮,然后按回车就可进入项目中 的子菜单选择。

挑选功能:在项目的功能名称前面,有 [ ]或者 < > 才可以使用 空格键 来选择。

挑选说明:

[ ]: 不编译此项

[M]: 表示编译成模块,也就是存放在/lib/modules/内核版本号/

< * > [ * ] : 表示编译进核心,也就是/boot下的vmlinuz-内核版本号 文件

功能选择的建议:

核心一定要的功能,直接编译进核心内;

可能以后会用到的功能,尽量编译成模块;

离开选择项:左右键选择Exit按回车即可

一些编译项目如下:

[*] 64-bit kernel

General setup  --->             基本的linux核心功能,最相关的驱动程序、版本说明 核心说明代码

[*] Enable loadable module support  --->         模块加载和卸载

-*- Enable the block layer --->                 块设备的支持

Processor type and features  --->            处理器类型和其功能选择

Power management and ACPI options  --->      电源管理和ACPI选项

Bus options (PCI etc.)  --->                 总线选项和PCI插槽

Executable file formats / Emulations --->   编译后执行档的格式

[*] Networking support  --->           核心网络功能

Device Drivers  --->                 设备驱动

Firmware Drivers  --->

File systems --->                           文件系统的支持

Kernel hacking  --->

Security options  --->                 安全相关模块

-*- Cryptographic API  --->

[*] Virtualization  --->

Library routines --->

这里以编译2个功能为演示

(Hunk-2018v1.0) Local version - append to kernel release 追加内核版本

[*] Automatically append version information to the version string   自动追加版本号

DOS/FAT/NT Filesystems  ---> 核心层支持NTFS 文件系统格式读写

都选择好核心功能后,记得选择SAVE保存

6.编译

要想快一点,可以查询当前系统CPU有几个核

#lscpu

CPU(s):                4

为了防止意外发生,开启一个screen窗口,命令功能请自行man

#screen -S kernel

#make -j 4

编译好之后的源码目录为9.8G

#make -j 4 modules

7.编译后安装

#make modules_install

#make install

安装好之后,会在/boot内生成对应的内核相关文件

模块目录也会生成/lib/modules/4.14.12Hunk-2018v1.0

#cat /boot/grub2/grub.cfg

menuentry 'CentOS Linux (4.14.12Hunk-2018v1.0) 7 (Core)'

8.检查无误后,重启以便使用新内核

#uname -r

4.14.12hunk-2018-1.0

至此,内核编译安装成功。

编译中的一些选择

?全编译: make [-j #]

?编译内核的一部分功能:

(a) 只编译某子目录中的相关代码

进入源码文件夹内

# make dir/   注意,不要进到那个需要编译指定部分功能的子目录。

(b) 只编译一个特定的模块

cd /usr/src/linux

# make dir/file.ko

例如:只为e1000编译驱动:

# make drivers/net/ethernet/intel/e1000/e1000.ko

卸载内核

? 删除/lib/modules/目录下不需要的内核库文件

#rm -rf 4.14.12hunk-2018-1.0/

? 删除源码目录

? 删除/boot目录下启动的内核和内核映像文件

#rm *-4*

rm: remove regular file ‘initramfs-4.14.12hunk-2018-1.0.img’? y

rm: remove regular file ‘initramfs-4.14.12hunk-2018-1.0.img.gz’? y

rm: remove regular file ‘System.map-4.14.12hunk-2018-1.0’? y

rm: remove regular file ‘vmlinuz-4.14.12hunk-2018-1.0’? y

? 更改grub的配置文件,删除不需要的内核启动列表

# vim /boot/grub2/grub.cfg

原文地址:http://blog.51cto.com/191226139/2059117

时间: 2024-08-05 14:28:06

Centos 7 源码编译安装内核4.14.12的相关文章

CentOS 6源码编译安装 PHP 7.0.5

环境介绍: 系统版本:RHEL 6 软件仓库:yum-Base,yum-Epel PHP版本:PHP 7.0.5 安装方式:源码编译 删除原有yum安装版本php # yum remove php -y # yum remove php-* -y 2.安装开发包和依赖环境 # yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel

Centos 7 源码编译安装mysql 5.6.22(整理篇)

经过看了几篇文档,都没有写完全.稍微整理了一下,重新一步一步进行编译安装mysql在centos7上. 安装步骤如下: 1.安装编译环境 # yum -y install gcc- gcc-c++  ncurses-devel per # yum install cmake 2.建立mysql目录和帐号,及目录属性 # mkdir -p /data/mydata # mkdir -p /usr/local/mysql # useradd -d /data/mydata -s  /sbin/nol

CentOS 7 源码编译安装PostgreSQL 9.5

下载 在postgresql的官方即可找到源码文件目录,地址如下:https://www.postgresql.org/ftp/source/,在下载列表中根据需求选择版本,进入子目录后,可以看到文件列表: 如上图,可以看到提供了两种压缩格式,此处我们选择postgresql-9.5.5.tar.gz,下载完成后上传至CentOS服务器的指定目录即可. 配置编译安装 首先进入pg压缩包目录通过tar -zxvf ./postgresql-9.5.5.tar.gz进行解压,然后就可以开始编译安装了

centos软件源码编译安装httpd

使用CentOS软件过程中,可能需要用编译使用.src的软件源码包,有些是因为需要某些功能,有些是需要某个版本,以下以httpd为例: 下载源码httpd并编译[[email protected] ~]# tar -xf httpd-2.4.6.tar.bz2[[email protected] ~]# cd httpd-2.4.6; ls #看到install文件[[email protected] httpd-2.4.6]# cat install #查看帮助,有些软件是README...$

CentOS 7 源码编译安装MySQL 5.7.14

一.添加用户和组 1. 进入root: su 2. 添加组: groupadd mysql 3. 添加用户: useradd -r -g mysql -s /bin/false mysql 二.安装 1. 首先到MySQL官网下载最新版的MySQL 5.7.14,进入http://dev.mysql.com/downloads/mysql/,选择Source Code下的Generic Linux. 2. 解压 tar zxvf mysql-5.7.14.tar.gz 3. 安装MySQL所需要

CentOS 7 源码编译安装 Nginx

这里安装的是nginx 1.14版本 1.下载源码 #下载 wget http://nginx.org/download/nginx-1.14.0.tar.gz #解压 tar -xzf nginx-1.14.0.tar.gz cd nginx-1.14.0 2.安装编译环境 yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel 3.编译安装 #添加用户和组 groupadd www useradd -g

源码编译安装mysql-5.7.14

1.下载并上传 mysql-5.7.14.tar.gz view plain copy tar -zxf msql-5.7.14.tar.gz 2.安装依赖包 view plain copy yum -y install gcc gcc-c++ ncurses ncurses-devel cmake 3.下载Boost库 view plain copy wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1

CentOS 7 源码编译安装 Mysql 5.7

1.创建 mysql 用户,用户组,以及相关目录 /usr/sbin/groupadd mysql /usr/sbin/useradd -g mysql mysql mkdir -p /opt/local/mysql/data mkdir -p /opt/local/mysql/binlog mkdir -p  /opt/local/mysql/logs mkdir -p /opt/local/mysql/relaylog mkdir -p /var/lib/mysql mkdir -p /op

Ubuntu/CentOS下源码编译安装Php 5.6基本参数

先确认安装libxml2 apt-get install libxml2 libxml2-dev或者yum install libxml2 libxml2-dev ./configure --prefix=/usr/local/include/php --with-pdo-mysql --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-zlib-dir --enable-xml --enable-bcmath