Kdump 与 grub2 操作
Kdump 与 grub2 操作
我们在调试kernel的时候,经常会出现kernel panic。这时我们system全部按键失灵,无法查看dmesg信息。
这时我们就要使用kdump工具。他会在system 重启前,将dmesg和vmcore信息保存到默认路径/var/crash/下
[root@localhost lzz]# vim /var/crash/127.0.0.1-2014.10.24-20\:22\:03/vmcore
vmcore vmcore-dmesg.txt
[root@localhost lzz]# vim /var/crash/127.0.0.1-2014.10.24-20\:22\:03/vmcore
vmcore vmcore-dmesg.txt
kdump工具主要是面向redhat产品,由于我使用的是fedora,比较好的兼容了redhat5.
最主要是安装 yum install –enablerepo=fedora-debuginfo –enablerepo=updates-debuginfo kexec-tools crash kernel-debuginfo kdump
然后在使用systemctl start kdump 启动服务
[root@localhost 127.0.0.1-2014.10.24-20:22:03]# systemctl status kdump
kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled)
Active: active (exited) since 五 2014-10-24 20:23:01 CST; 2min 5s ago
Process: 641 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
Main PID: 641 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/kdump.service
10月 24 20:23:01 localhost.localdomain kdumpctl[641]: kexec: loaded kdump kernel
10月 24 20:23:01 localhost.localdomain kdumpctl[641]: Starting kdump: [OK]
10月 24 20:23:01 localhost.localdomain systemd[1]: Started Crash recovery kernel arming.
PS:由于在linux发行版中,各大发行版逐渐开始使用systemctl ,所以chkconfig/service 命令都会在不久以后移除。
学习system systemd-vs-sysVinit-cheatsheet.pdf
在配置linux kernel for mce-inject中
我们要在grub2中进行一些配置:
在grub2中,/boot/grub2/grub.cfg是脚本自动生成的(使用grub2-mkconfig命令)
我们需要在[root@localhost 127.0.0.1-2014.10.24-20:22:03]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
RUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.md=0 rd.dm=0 $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-p aram || :)" class="wp-smiley"> rd.luks=0 vconsole.keymap=us rd.lvm.lv=fedora/root rhgb quiet crashkernel=240M"
GRUB_DISABLE_RECOVERY="true"
GRUB_THEME="/boot/grub2/themes/system/theme.txt"
在RUB_CMDLINE_LINUX中,我们在最后家一个crashkernel=240M ,这个240M是根据1GB-80M来计算的,太小的内存会造成kdump service 启动失败!
然后使用
# grub2-mkconfig -o /boot/grub2/grub.cfg
会自动更新grub2启动脚本,我们在/boot/grub2/grub.cfg看到生成的grub信息。
然后启动之后我们通过free -m /top命令看memory都会变小!也就意味着内存有一部分被分出去作crashkernel内存区域!
其实这个kdump实质就是在kernel crash掉后,system启动了crashkernel 来收集信息。
参考:
http://blog.csdn.net/sabalol/article/details/7043313