解决CentOS配置kdump失败的问题

本文详细记录了解决CentOS配置kdump失败的过程。在尝试最小安装和手动配置失败后,通过完全安装CentOS,使用图形界面的system-config-kdump命令,并在界面中点击reload和apply,最终成功启动kdump服务。测试后,确认在/var/crash目录下生成了core文件,证明配置成功。

  Kdump是一个内核崩溃转储机制,在系统崩溃的时候,Kdump将捕获系统信息,这对于针对崩溃的原因非常有帮助。注意,Kdump需要预留一部分系统内存,而且这部分内存对于其他用户是不可用的。因为最近在开发一个内核模块,在测试的时候有时会导致内核崩溃,但是在虚拟机中没法看到完整的oops信息,所以不知道是在哪个位置崩溃。即使在代码中加了打印调试信息的语句,有时也会看不到。因此,决定在CentOS上配置一个kdump环境,这样可以更快地定位问题。但是安装之路真是崎岖啊。

  我安装CentOS时总是最小安装,很多包都是在用的时候通过yum或者在安装盘中找包安装,当然也没有图形界面。在网上找个一个教程,然后按照上面的步骤配置,重启系统,但是kdump服务启动失败,报下面的错误:


 但是我已经明明在/etc/grub.conf中指定了crashkernel参数,而且也是按照提示的错误的格式配置的,通过cat /proc/cmdline命令也能看到配置的crashkernel项。在google上搜索了很久,也找到了一些别人解决这个问题的办法,但是不适用我的这个,不知道怎么回事,试遍了都不行。

  遇到这种问题,真是蛋都碎了!!!而且现在还比较着急,没办法只能暂时搁置kdump,用printk来定位错误了,但是总是要修改、编译,实在是折磨的不行。在同事的建议下,尝试在图形界面下配置试试看能不能成功。

  第二次安装的时候我选择完全安装,也就是在下面这个界面选择“现在自定义”,然后在选择包的界面把所有的都选了(我之前是没选数据库之类的,也没有成功,所以还是全选吧,反正空间也不是问题)。

 

在安装完成重启后开始进行一些初始化的配置,在最后一项是配置Kdump,但是蛋疼的问题又出现了。


看到这个“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”),但是我后来分配了4G内存给虚拟机,但是还是提示这个错误。后来想起kdump还有一个图形界面配置的命令,所以在终端下输入system-config-kdump命令,会弹出下面的界面:


选择Target settings,会弹出下面的界面:


我第一次点开的时候没有红色圈住的那部分,后来就点了那个“Reload”按钮,然后再点击了“apply”按钮,在终端下输入service kdump restart终于启动成功了!真是太爽了!

 赶紧测试一下,输入echo "c">/proc/sysrq-trigger,界面会出现一些信息,类似下面一样:


过一会系统就会自动重启,这个时候就说明你的kdump已经配置成功了,重启之后/var/crash目录下就可以看到有一个文件夹,文件夹的名字是日期,里面就是你需要的core文件。至此终于神奇的误打误撞成功了。如果你还没成功,就把那几个“apply”、“reload”,“enable”,“disable”按钮来回点,多试几次,说不定也像我一样成功了。

最后总结一下整个过程:

1、完全安装CentOS 6.2,所有的包都选,一个也不要落下。

2、安装按成后忽略“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”)这个错误,进入系统后打开终端输入system-config-kdump命令,如果没有,先安装。

3、在界面中先点击reload按钮,然后在点击“apply”让配置生效,重启系统,测试看是否成功。

### 安装和配置 kdump 对于较新的Linux发行版,如CentOS 7,安装和配置`kdump`相对简单。然而,在较为老旧的版本如CentOS 4上操作可能会遇到更多挑战,因为该操作系统已经不再被官方支持,并且软件包可能不是最新的。 #### 准备工作 由于CentOS 4已停止维护多年,建议先更新系统的yum源到第三方仓库来获取必要的工具和支持[^1]。 #### 安装依赖库 在尝试安装`kdump`之前,需要确保系统中有足够的空间用于保存崩溃转储文件(通常至少需要2GB)。接着通过YUM安装所需的组件: ```bash yum install kernel-debuginfo kernel-debuginfo-common elfutils-libelf-devel libuuid-devel binutils-devel newt-devel python-devel audit-libs-devel numactl-devel perl-ExtUtils-Embed ``` 这些命令会下载并安装编译内核模块以及处理核心转储所必需的各种开发库和实用程序。 #### 获取适合旧版本的 kdump 软件包 考虑到CentOS 4非常陈旧,直接从其默认存储库中找到合适的`kdump` RPM包可能性不大。可以考虑寻找针对RHEL/CentOS 5或更早时期的兼容版本,或者自行构建适用于特定硬件架构的rpm包。 #### 编辑配置文件 `/etc/kdump.conf` 创建或编辑此文件以指定vmcore的目标位置和其他选项: ```bash path /var/crash # 设置vmcore存放路径 default reboot # 当捕获失败时执行的动作 ``` 请注意,默认情况下,`/var/crash`目录结构为`%HOST-%DATE`,其中包含两个重要文件:`vmcore` 和 `vmcore-dmesg.txt`[^4]。 #### 启动与启用服务 如果能够成功安装了`kdump`服务,则可以通过如下方式启动它并将其设为随系统一起加载: ```bash service kdump start # 手动启动服务 chkconfig --level 345 kdump on # 设定开机自启 ``` 最后一步是验证服务的状态和服务是否已被设置成自动启动[^3]。 #### 测试配置有效性 为了确认一切正常运作,可利用`echo c > /proc/sysrq-trigger`指令模拟一次内核panic事件来进行测试。这将触发一次系统崩溃并将内存映像写入先前定义的位置。完成之后记得检查目标目录下是否有新生成的核心转储文件存在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值