Centos内核更换&Kdump开启

0X1 序章

        在某些情况下,可能需要对操作系统的内核进行必要的升降,本文提供几个内核更换的方式,以期帮助到各位朋友进行内核的更换,本文以CentOS Linux release 7.9.2009 (Core)系统为例进行参数,对Oracle Linux、Ubuntu、Red Hat等操作系统亦有参考的作用。本文以一个全新的CentOS Linux release 7.9.2009 (Core)系统为例,从换源开始一一进行讲解,重点包含多种内核的升降级的方式以及内核崩溃转储服务kdump的开启。

所有操作的均需要保证有网络。

0X2 换源

        由于Centos的镜像源是国外的,因此我们在下载东西的时候极为不变,为了提高速度,建议更换为国内的源,比较好的国内的镜像源有阿里云、清华、中科大的源。这里笔者参考阿里云的换源教程进行换源。

2.1 对原有源进行备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2.2 下载新源到 /etc/yum.repos.d/下

        正常来说,由于操作系统是Centos7,所以这里一般换Centos7的源,这个命令的意思是下载来自阿里云网站的repo文件,使用-O参数是指定文件的保存路径和名字

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

2.3 生成缓存

yum makecache

2.4 更新软件包

yum -y update

0X3 内核更换

        首先确定系统的内核版本,然后确定要更换的内核版本,内核的更换主要有三重方式,第一种是下载源码进行编译;第二种是通过添加内核源,然后使用yum进行安装;第三种是通过下载rpm包,然后通过rpm来进行安装。

        三种方法各有优缺点,第一种,通过源码进行编译按安装,他的优点是可以去网站找内核的代码进行编译,对于大佬来说比较友好(作者是小菜鸡,比不了各位大佬),但是缺点也是非常的明显,就是需要耗费大量的时间去编译,还有的情况就是编译后的内核还是无法使用,额…,这就很搞心态了;第二种,通过添加内核源,然后使用yum去安装,操作简单,对于笔者这种小白非常友好,但是存在的问题是,只能下载源内存在的内核,非源内存在的内核是无法下载的,对于官网不再维护的内核,大部分是下载不了的;而第三种就可以解决这种问题,直接从网上对需要的内核包进行查找,然后下载rpm包,使用rpm包管理器进行安装。由于第一种源码编译很费时,本文将不会阐述此种方式。

3.1 序幕

使用以下命令可查看当前系统的内核版本

[root@localhost ~]# uname -r
3.10.0-1160.el7.x86_64

列出可用内核软件包,

[root@localhost ~]#yum list kernel --showduplicates

在这里插入图片描述

        但是目前均是只能升级,对于降级或者更换过期的内核极不友好,所以第二种方法夭折,继而从事第三种方式,也是笔者比较推崇的一种,使用rpm包进行安装。

        此种方式的安装的困难点在于如何找到对应内核版本的rpm包,本文提供两种查找方法帮助大家进行查找。

3.2 rpm包查找

1 方法1

        使用搜索引擎的语法进行快速查找,此方法简便,各家搜索语法各有差异。个人推荐使用Google进行查找,以kernel-3.10.0-123.el7.x86_64.rpm 查找为例,Google的进去就可以查找下载了,百度就,额…,就各种网站套娃,付费下载,博客转载等。

​ 以下是对比效果

在这里插入图片描述

在这里插入图片描述

----百度----

在这里插入图片描述
在这里插入图片描述

2 方法2

        通过查找各发行版本对应的内核,然后找到各发行版本的仓库,然后下载rpm包。还是以kernel-3.10.0-123.el7.x86_64.rpm为例。看到有篇博客总结了一部分,这里贴上链接,有需要的可以去看看,centos 各版本发行时间和内核对应列表

在这里插入图片描述

        可以看到,要找的内核时centos7.0版本的,这是我们去centos的官网镜像站进行下载。这里提供两个网站,当然从前边一个网站时可以到达后边一个的。

        第一个是Centos官网不再支持的内核或者操作系统,会将其移到一个叫vault的镜像库去:
https://vault.centos.org/

        第二个是现阶段还是维护的内核或者操作系统均放到这个网站去:
https://mirrors.edge.kernel.org/centos/

        当然了如果从下边这个网站访问过时的内核,还是会找到上边的网站去,因为现维护的里边只有一个readme.txt文件,文件内容如下

在这里插入图片描述

内核存在的路径一般为

版本号/os/x86_64/Packages/

到达此页面后可使用"ctr+f"对内核进行快速查找

在这里插入图片描述

        这样我们就能下载rpm包了,接下来就是下载包,然后将包上传到操作系统上,至于怎么上传,有xshell的可以直接拖拽或者使用xftp进行上传。

        如果都不能上传,这里推荐一种方法,前提是两者网络互通,可以直接连接:在下载的内核路径上使用python启动一个server服务,然后服务器使用wget进行下载

文件路径下使用python启动一个服务

python -m http.server

在这里插入图片描述

浏览器打开,右键复制地址

在这里插入图片描述

服务器使用wget 下载

[root@localhost opt]# wget http://192.168.195.1:8000/kernel-3.10.0-123.el7.x86_64.rpm
--2024-02-02 22:03:02--  http://192.168.195.1:8000/kernel-3.10.0-123.el7.x86_64.rpm
Connecting to 192.168.195.1:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 30267120 (29M) [application/octet-stream]
Saving to: ‘kernel-3.10.0-123.el7.x86_64.rpm’

100%[=======================================================================================================>] 30,267,120   191MB/s   in 0.2s   

2024-02-02 22:03:02 (191 MB/s) - ‘kernel-3.10.0-123.el7.x86_64.rpm’ saved [30267120/30267120]

3.3 内核安装

直接安装

rpm -ivh [your_rpm_name.rpm]

如果上边命令报错,可以换成此命令

yum install -y  [your_rpm_name.rpm]

1. 报错解决

有可能在安装过程报错的问题汇总

报错1

大概是此错误

[root@localhost opt]# rpm -ivh kernel-name.rpm 
warning:kernel-name.rpm : Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
error: Failed dependencies:
	linux-firmware >= 999:20200124-999.4.git1eb2408c is needed by kernel-name.rpm .el7uek.x86_64

        如果是第一次使用rpm,可能会出现这个错误,大概意思就是缺少依赖,安装他给的提示版本,进行依赖安装即可

yum install -y linux-firmware

安装完此依赖后再次执行安装命令

rpm -ivh [your_rpm_name.rpm]
报错2
[root@localhost opt]# rpm -ivh kernel-3.10.0-123.el7.x86_64.rpm
warning: kernel-3.10.0-123.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
	package kernel-3.10.0-1160.el7.x86_64 (which is newer than kernel-3.10.0-123.el7.x86_64) is already installed

        这是因为我们已经安装了较新的内核。但是现在却要安装过时的内核的报错。

先卸载kernel-firmware

yum -y remove kernel kernel-firmware

然后再次使用此命令进行安装

yum -y install [your_rpm_name.rpm]

2. 安装完成验证

ll /boot/
[root@localhost ~]# ll /boot/
total 178468
-rw-r--r--. 1 root root   153591 Oct 19  2020 config-3.10.0-1160.el7.x86_64
-rw-r--r--. 1 root root   122059 Jun 30  2014 config-3.10.0-123.el7.x86_64
drwx------. 3 root root       17 Jul 29  2020 efi
drwxr-xr-x. 2 root root       27 Feb  2 21:49 grub
drwx------. 5 root root       97 Feb  2 21:57 grub2
-rw-------. 1 root root 79723849 Feb  2 10:36 initramfs-0-rescue-e1a6989617b64edd93098d94b4ca65a1.img
-rw-------. 1 root root 31987003 Feb  2 10:39 initramfs-3.10.0-1160.el7.x86_64.img
-rw-------. 1 root root 13938404 Feb  2 22:00 initramfs-3.10.0-1160.el7.x86_64kdump.img
-rw-------. 1 root root 31361413 Feb  2 21:21 initramfs-3.10.0-123.el7.x86_64.img
-rw-r--r--. 1 root root   320648 Oct 19  2020 symvers-3.10.0-1160.el7.x86_64.gz
-rw-r--r--. 1 root root   228562 Jun 30  2014 symvers-3.10.0-123.el7.x86_64.gz
-rw-------. 1 root root  3616707 Oct 19  2020 System.map-3.10.0-1160.el7.x86_64
-rw-------. 1 root root  2840084 Jun 30  2014 System.map-3.10.0-123.el7.x86_64
-rwxr-xr-x. 1 root root  6769256 Feb  2 10:36 vmlinuz-0-rescue-e1a6989617b64edd93098d94b4ca65a1
-rwxr-xr-x. 1 root root  6769256 Oct 19  2020 vmlinuz-3.10.0-1160.el7.x86_64
-rwxr-xr-x. 1 root root  4902656 Jun 30  2014 vmlinuz-3.10.0-123.el7.x86_64

3. 修改默认启动项的内核

查看内核的启动顺序

awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
[root@localhost opt]#  awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (3.10.0-123.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-e1a6989617b64edd93098d94b4ca65a1) 7 (Core)

        **V123的内核时排在第一个,由于索引是从0开始计算的,我们的V123版本的内核索引就是0,**接下来就是修改默认启动的配置文件即可;

设置启动序号

[root@localhost opt]#  grub2-set-default 0

然后重启电脑

reboot now
[root@localhost ~]# uname -r
3.10.0-123.el7.x86_64

0X4 开启Kdump

        如果在装系统的时候,没有做过特别的设置,这一项默认是开启的,如果没有开启,可按照此方法进行安装

4.1 安装kdump

[root@localhost ~]# yum install -y kexec-tools

4.2 修改配置文件

        如果不修改配置文件是无法启动成功的,原因是分配的内存不足

[root@localhost ~]# systemctl start kdump.service
Job for kdump.service failed because the control process exited with error code. See "systemctl status kdump.service" and "journalctl -xe" for details.
[root@localhost ~]# systemctl status kdump.service
● kdump.service - Crash recovery kernel arming
   Loaded: loaded (/usr/lib/systemd/system/kdump.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2024-02-02 21:52:23 EST; 6s ago
  Process: 2432 ExecStart=/usr/bin/kdumpctl start (code=exited, status=1/FAILURE)
 Main PID: 2432 (code=exited, status=1/FAILURE)

Feb 02 21:52:23 localhost.localdomain systemd[1]: Starting Crash recovery kernel arming...
Feb 02 21:52:23 localhost.localdomain kdumpctl[2432]: No memory reserved for crash kernel
Feb 02 21:52:23 localhost.localdomain kdumpctl[2432]: Starting kdump: [FAILED]
Feb 02 21:52:23 localhost.localdomain systemd[1]: kdump.service: main process exited, code=exited, status=1/FAILURE
Feb 02 21:52:23 localhost.localdomain systemd[1]: Failed to start Crash recovery kernel arming.
Feb 02 21:52:23 localhost.localdomain systemd[1]: Unit kdump.service entered failed state.
Feb 02 21:52:23 localhost.localdomain systemd[1]: kdump.service failed.

修改配置文件,在倒数第二行quit的后边加上 crashkernel=512M

修改前:

[root@localhost ~]# cat /etc/default/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

修改后:

[root@localhost ~]# cat /etc/default/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet crashkernel=512M"
GRUB_DISABLE_RECOVERY="true"

刷新配置文件

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-123.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-123.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-e1a6989617b64edd93098d94b4ca65a1
Found initrd image: /boot/initramfs-0-rescue-e1a6989617b64edd93098d94b4ca65a1.img
done

最后重启即可

reboot now

进来之后可能还是无法启动,手动启动即可

[root@localhost ~]# systemctl start kdump.service
  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值