内核代码下载

官方下载地址:
https://mirrors.edge.kernel.org/pub/linux/kernel/

国内下载地址:
https://mirror.bjtu.edu.cn/kernel/linux/kernel/centos安装内核后找不到 centos内核路径_linux
国内网站下载速度相对较快,国外网站下载看命

查看当前内核版本信息

uname -a

centos安装内核后找不到 centos内核路径_linux_02

拷贝目录到指定文件夹

将内核源代码拷贝到/usr/local/src目录下

centos安装内核后找不到 centos内核路径_linux_03

开始编译安装过程

解压内核代码

tar xvf linux.xx.xx.tar.gz

centos安装内核后找不到 centos内核路径_centos安装内核后找不到_04

生成内核编译配置文件

从现有的系统中拷贝,主要避免手动选择,最大限度和当前保持一致

现有的系统内核编译配置文件在boot目录下,查看对应的版本就可以了

centos安装内核后找不到 centos内核路径_linux_05

配置内核编译文件

执行make menuconfig

centos安装内核后找不到 centos内核路径_运维_06

编译环境构建

如上图,会有报错,不能打开编译配置界面,是因为缺少库,根据报错,少什么,装什么就可以

ncurse-devel (make menuconfig 文本界面窗口依赖包)

centos安装内核后找不到 centos内核路径_内核启动_07

flex找不到

centos安装内核后找不到 centos内核路径_linux_08


安装flex

centos安装内核后找不到 centos内核路径_内核启动_09

bison 找不到

centos安装内核后找不到 centos内核路径_运维_10


安装bison

centos安装内核后找不到 centos内核路径_运维_11

gcc版本太老

centos安装内核后找不到 centos内核路径_centos安装内核后找不到_12

查看gcc当前版本

centos安装内核后找不到 centos内核路径_运维_13

升级gcc版本

centos7里面
devtoolset-3对应gcc4.x.x版本
devtoolset-4对应gcc5.x.x版本
devtoolset-6对应gcc6.x.x版本
devtoolset-7对应gcc7.x.x版本
devtoolset-8对应gcc8.x.x版本
devtoolset-9对应gcc9.x.x版本
devtoolset-10对应gcc10.x.x版本

centos8里面有修改名字
gcc-toolset-9对应gcc9.x.x版本
gcc-toolset-10对应gcc10.x.x版本
gcc-toolset-11对应gcc11.x.x版本

执行如下命令

yum install devtoolset-9

source /opt/rh/devtoolset-9/enable

gcc更新成功

centos安装内核后找不到 centos内核路径_内核启动_14

配置内核编译配置文件

开启IPv6

centos安装内核后找不到 centos内核路径_centos安装内核后找不到_15


这里并没有修改任何内容,退出保存后,如下:

centos安装内核后找不到 centos内核路径_centos安装内核后找不到_16

编译内核

执行make就可以了

编译错误处理

centos安装内核后找不到 centos内核路径_运维_17


centos7 没有 libssl-dev

方法一、直接安装

yum install openssl openssl-devel

方法二、下载源码编译安装

访问OpenSSL官网资源

官网资源地址:https://www.openssl.org/source

1、下载

wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz

2、解压并切换目录

tar -zxvf openssl-1.1.1.tar.gz

cd openssl-1.1.1

3、设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下

./config --prefix=/usr/local/openssl

4、执行命令

./config -t

5、执行make、make install,编译Openssl

make & make install

编译命令

1、make
2、make module_install
make modules_install 是安装到/lib/modules/version下面, version就是新编译内核的版本,而且不会更新/lib下的文件
3、make install

make modules_install

是把编译好的模块拷贝到系统目录下(一般是/lib/modules/)。

也可自己指定ko安装路径:

make ARCH=arm64 modules_install INSTALL_MOD_PATH=yourpath

如:make ARCH=arm64 modules_install INSTALL_MOD_PATH=“modules_install_path”

在交叉编译的情况下,需要将ko模块安装到rootfs。

centos安装内核后找不到 centos内核路径_内核启动_18


make install

安装内核二进制映像, 生成并安装boot初始化文件系统映像文件

centos安装内核后找不到 centos内核路径_linux_19

启动新的Linux内核

修改内核启动顺序

centos7修改内核启动顺序

1、执行如下命令,查看系统内部有多少个内核。
cat /boot/grub2/grub.cfg |grep menuentry
2、参考如下命令,配置从默认内核启动。内核名称根据系统内部查到的实际名称来替换。
grub2-set-default “CentOS Linux (3.10.0-123.9.3.el7.x86_64) 7 (Core)”
3、执行如下命令,确认配置成功。
grub2-editenv list

centos6修改内核启动顺序

1、查看/etc/grub.conf文件,确认系统内核的情况,如下图所示系统存在2个内核的现象。
从上往下内核版本依次是2.6.32-573.18.1.el6.x86_64和2.6.32-431.23.3.el6.x86_64。
2、在grub.conf文件中决定开机使用哪个内核版本做启动的参数是default,默认值为0,代表从最新的内核启动。代表启动的内核版本从上往下依次是0、1、2等。
3、如果要选择从旧版内核,即系统最开始的内核启动,则把default值改为1 ,然后重启服务器从新的内核进行引导。

centos8修改内核启动顺序

1、查看默认内核
grubby --default-kernel
2、 查看所有内核
grubby --info=ALL
3、修改默认启动内核
grubby --set-default /boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64

Ubuntu修改内核启动顺序

1、查看当前内核的启动顺序
cat /boot/grub/grub.cfg |grep menuentry
2、修改grub文件
假设要修改为3.13.0-166内核启动, 修改文件/etc/default/grub
$ sudo vim /etc/default/grub
GRUB_DEFAULT=0 ##修改为
GRUB_DEFAULT=“Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-31-generic”
3、更新修改后的grub
update-grub

参考:https://cloud.tencent.com/developer/article/2086777

我们是centos7,所以参考上述文档

当前没有make install完成的情况,默认有两个启动选项

centos安装内核后找不到 centos内核路径_centos安装内核后找不到_20


安装完成以后,有三个启动选项了:

centos安装内核后找不到 centos内核路径_运维_21


开机后如下:选择5.12.10启动就可以了

centos安装内核后找不到 centos内核路径_centos安装内核后找不到_22

进入系统后,uname -a结果如下,成功

centos安装内核后找不到 centos内核路径_内核启动_23