CentOS 7 下编译Linux内核

CentOS 7 下编译Linux内核

前言:linux编译内核需要内存较大,如果是像我一样之前都是学习用的vmware 下的centos 20G是不够的,这时需要扩容。具体参考centos扩容,一般扩到50G就够用了,这篇博文只扩容到30G需要读者注意。另外,这篇博文的内存挂载是临时挂载,重启后就不见了,而永久挂载,需要用到vim /etc/fstab设备挂载策略文件,参考linux的临时挂载(mount)与永久挂载

1.准备编译环境

Development tools 这是一个可以给开发编译运维的配置基本初始环境的工具(第一次用centos编译内核时没有下载这个工具,只是按照网上其他教程安装了一些软件包,结果编译过程stage 2报错)。具体看浅谈用Development tools工具配置初始环境

yum groupinstall "Development Tools"

过程中可能报错

development tools

解决办法具体命令如下:

yum groupinstall "Development Tools" --setopt=group_package_types=mandatory,default,optional

2.准备依赖的软件包

yum install ncurses-devel           # menuconfig基于文本选单的配置界面依赖的包
yum install elfutils-libelf-devel
yum install openssl-devel
yum install bc

3.官网linux内核下载

地址1

CentOS 7 下编译Linux内核_第1张图片

地址2

CentOS 7 下编译Linux内核_第2张图片

安装自己所需要的版本,我自己安装的linux内核为6.0.6

4.解压安装包

进入kernels常用存放目录,将文件直接传输到这个目录(我用的xftp),或者使用mv指令将内核移到这里(其实不移也没关系)。

cd /usr/src/kernels/

解压安装包,进入此目录

tar xvf linux-6.0.6.tar.gz
# 本来要下一个tar.gz文件的,但是下了一个xz的,用下面指令解压
tar -Jxf linux-6.0.6.tar.xz

cd linux-6.0.6

5.生成内核配置文件.config

清理源代码树,需要进入解压好的源码文件夹执行命令,清理过去内核编译产生的文件,第一次编译时可不执行此命令

make mrproper

生成内核配置文件.config,可以先将系统原配置文件拷贝过来,原配置文件在/boot目录下

uname -r是你所用linux的内核版本,在终端输入uname -r可以看到版本号

在这里插入图片描述

cp -v /boot/config-$(uname -r) .config   

使用make menuconfig 对配置进行需要的更改,决定将内核的各个功能系统编译进内核还是编译为模块还是不编译,这个工具有图形化界面利于操作

make menuconfig

命令执行后会进入基于文本选单的配置界面,可以选择各种配置

CentOS 7 下编译Linux内核_第3张图片

这里的配置可参考 Make Menuconfig详解 (配置内核选择)
可以直接默认配置,选择save,ok,exit生成了一个.config文件。

6.内核编译及安装

make开始编译,编译时间较久,加上 -j4可以加快编译速度

make -j4

编译并安装内核模块

make modules_install

安装内核

make install

7. 设置开机默认从新kernel启动

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

查看当前默认启动内核

grub2-editenv list

8.删除无用的内核(多个内核存在也不影响)

此时系统中可能已经有了很多个内核,如果想要删除无用的内核,可通过如下操作

yum install yum-utils
package-cleanup --oldkernels

9.重启

查看内核版本,成功替换

在这里插入图片描述

uname -r

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