当前位置:网站首页 > 技术博客 > 正文

linux用什么软件



kdump是Linux中的一个内核转储机制,主要用于当Linux内核发生崩溃时,将该内核相关的信息和崩溃原因通过转储的形式保留下来,在debian系统中,相关信息会存储在dump文件中,在OpenEuler和CentOS等系统中则是vmcore文件中,以供后期开发人员通过crash工具进行相关的分析。

在kdump中,构成转储运行环境大致由三个部分构成,即生产内核、捕捉内核和ramdisk,其相关概念如下:

  • 生产内核(production kernel)——指当前Linux系统运行的内核;
  • 捕捉内核(crash kernel)——当生产内核发生崩溃时,用于转储生产内核各类信息的内核;
  • ramdisk——部分运存(RAM)模拟出来的虚拟磁盘,因为这个虚拟磁盘是通过RAM模拟出来的,而非物理磁盘,因此其读写速度非常快。

基于这三个部分,转储的过程可以简单描述为——当生产内核发生崩溃时,捕捉内核会随之启动,同时RAM中的一部分会被模拟为虚拟磁盘ramdisk,从而构成一个简单的运行环境,因ramdisk读写速度很快的特点,生产内核在崩溃时的相关信息会通过捕捉内核快速写入ramdisk中,然后由ramdisk将转储信息生成为ELF格式的文件,并输出到物理磁盘中,文件生成的过程全部结束后,系统将进行重启。

  • kexec_load——在生产内核正常启动时,将捕捉内核加载到指定的地址;
  • kexec_tools——将捕捉内核的地址传递给生产内核,以便生产内核崩溃时,能快速寻址到捕捉内核,实现捕捉内核的启动。

每个Linux发行版安装kdump的思路是相同的,如下:

  1. 安装kdump本身组件(kexec-tools、kdump-tools)、crash工具和kernel-debuginfo;
  2. 然后是通过修改文件中的参数来定义分配给捕捉内核的运存(RAM)大小;
  3. 更新grub后重启系统。

而针对于需要安装的组件,说明如下:

  • kexec-tools和kdump-tools——kdump本身的组件;
  • crash——用于结合vmlinux文件对转储文件(dump或vmcore)进行分析的工具;
  • kernel-debuginfo——用于生成当前版本内核vmlinux文件的debug安装包;

kernel-debuginfo在各个发行版的名称不一样,部分发行版名称如下(均以amd64架构为例):

Linux发行版名称kernel-debuginfo名称获取方式debianlinux-image-amd64-dbgapt包管理器获取OpenEulerkernel-debuginfoyum包管理器获取CentOS 7/CentOS-Stream 8kernel-debuginfo在debuginfo.centos.org手动搜索下载对应内核版本CentOS-Stream 9kernel-debug*yum包管理器获取,但安装完成后未生成vmlinux文件,编译内核源码也暂未成功

(1)确保软件下载、安全更新和系统更新的apt源是一致的(/etc/apt/sources.list)
在这里插入图片描述
之所以强调debian系统中需要三个源保持一致,是因为debian系统在最初的安装过程中,虽然有让用户自行选择镜像源的选项,但这个镜像源只会改变软件下载和系统更新两个源,而安全更新仍旧是设置的debian的官方源,这会导致两个问题——一是在国内网络环境里下载linux-image-amd64-dbg十分缓慢;二是debian在全球的镜像源缓存官方源存在一个时间差的问题,可能会导致从官方安全源上获取到的linux-image-amd64-dbg和镜像源更新到的Linux内核出现版本不一致的情况,从而致使crash无法通过vmlinux文件解析到dump转储文件内容。

(2)通过命令“”安装相应组件
在这里插入图片描述
(3)通过命令“”修改参数,设定捕捉内核的RAM大小
在这里插入图片描述

 

(4)输入“”命令,更新grub

(5)输入“”命令,重启操作系统

(6)输入“”或者“”命令,查看kdump是否成功开启
在这里插入图片描述
(7)通过命令“”,人为制造一个内核崩溃,此命令会触发kdump转储机制,转储完成后,操作系统会自动重启,重启完成后,/var/crash目录下会生成转储日志和转储文件
在这里插入图片描述
(8)通过命令“”下载debian的kernel-debuginfo工具,此命令会生成当前版本内核的vmlinux文件,用于crash工具去解析生成的dump转储文件,一般来说,debian系统在安装linux-image-amd64-dbg后,vmlinux文件会在以下类似目录:
在这里插入图片描述
(9)通过命令“”,利用crash工具解析dump转储文件,可看到内核崩溃时的大体信息,如果要深入进行分析,则可以利用crash工具中的命令进行查看,crash工具的命令可自行查阅
在这里插入图片描述

 

(1)OpenEuler本身已经内置并启用了kdump,因此不用单独下载,通过“”或者“”检查kdump状态即可
在这里插入图片描述
(2)通过命令“”修改参数,设定捕捉内核的RAM大小
在这里插入图片描述
(3)输入“”命令,更新grub

(4)输入“”命令,重启操作系统

(5)通过命令“”,人为制造一个内核崩溃,此命令会触发kdump转储机制,转储完成后,操作系统会自动重启,重启完成后,/var/crash目录下会生成转储日志和转储文件
在这里插入图片描述
(6)通过命令“”安装crash工具

(7)通过命令“” 下载OpenEuler的kernel-debuginfo工具,此命令会生成当前版本内核的vmlinux文件,用于crash工具去解析生成的vmcore转储文件,一般来说,OpenEuler系统在安装kernel-debuginfo后,vmlinux文件会在以下类似目录:
在这里插入图片描述
(8)通过命令“”,利用crash工具解析dump转储文件,可看到内核崩溃时的大体信息,如果要深入进行分析,则可以利用crash工具中的命令进行查看,crash工具的命令可自行查阅
在这里插入图片描述

下图展示的是Linux内核源码编译安装的大致过程,一般以来说,当源码编译安装成功进行到“”后,vmlinux就会编译生成至kernel编译目录下,这里的vmlinux可用于crash工具的解析:
在这里插入图片描述

(1)kdump的配置过程中,最费精力的一个步骤是kernel-debuginfo的安装和vmlinux文件的获取,因为每个发行版对于kernel-debuginfo的安装方式是不同的,因此需要具体查阅对应发行版的官方手册;
(2)正如3.2章节的第一个步骤那样,如果是debian系统,需要在配置前检查软件下载、系统更新和安全更新三个源是否一致,以防止vmlinux和dump转储文件不一致的情况出现;
(3)vmlinux和vmlinuz这两个文件均是Linux内核运行文件,区别在于vmlinuz是压缩之后的文件,而vmlinux没有压缩,在各个Linux发行版中,如果内核不是自行通过编译方式安装的话,vmlinux通常不会附带在系统中,需要通过安装kernel-debuginfo生成。

  • 上一篇: css中button属性
  • 下一篇: 简述uboot的作用
  • 版权声明


    相关文章:

  • css中button属性2024-12-10 19:00:59
  • 数据库开发实战2024-12-10 19:00:59
  • 用idea创建java项目2024-12-10 19:00:59
  • sqlmap注入漏洞2024-12-10 19:00:59
  • 如何打开全局代理2024-12-10 19:00:59
  • 简述uboot的作用2024-12-10 19:00:59
  • 原生js post2024-12-10 19:00:59
  • python怎么打包exe2024-12-10 19:00:59
  • spi(SPI接口通信协议详解:SPI时序、2线、3线、4线SPI及4种常用工作模式)2024-12-10 19:00:59
  • ftp下载文件命令2024-12-10 19:00:59