[Linux] 開啟 kdump 來保留 kernel crash dump

[Linux] 開啟 kdump 來保留 kernel crash dump

一樣是因為在準備公司 Debug Hacks 的讀書會報告,所以碰到了 kdump 這個東西~

一直以來我都是在應用程式層開發居多,沒有去碰過 kernel,

所以雖然有聽過 kdump,但並不知道要如何使用它~

藉著讀書會的機會,學習了一下如何開啟 kdump,

之後應該也會學到如何去看 kernel dump,這次的讀書會感覺不錯呢~^^

 

參考資料:

CONFIGURING KDUMP ON THE COMMAND LINE

 

1. 編輯 /etc/default/grub

在 /etc/default/grub 檔案裡,找到 GRUB_CMDLINE_LINUX 這一行,

如果裡面沒有 crashkernel 的字的話,加上 crashkernel=128M,

表示要保留 128 MB 的記憶體供 kdump 使用:

GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet crashkernel=128M"
GRUB_DISABLE_RECOVERY="true"

 

接著執行 grub2-mkconfig 根據我們的修改,產生新的設定檔:

grub2-mkconfig -o /boot/grub2/grub.cfg

 

設定檔產生後,要記得重開機,才能繼續下一步~

要注意修改 grub 這一步是必須的,不然接下來就算啟動 kdump service,

也一樣會報告錯誤喔~ 

 

2. 啟動 kdump 服務

執行下面的指令,讓 kdump service 除了現在啟動之外,之後也會自動啟動:

systemctl enable kdump.service
systemctl start kdump.service

 

3. 測試 kdump 是否設定成功

要測試 kdump 是否設定成功,最準確的方法就是產生一個 kernel crash,

看看 kdump 是不是會捕捉到錯誤並產生 dump 檔~

執行下面的指令,讓 kernel 立刻產生一個 crash,

會看到 console 畫面上秀出一些 kdump 的訊息,

當 dump 建立好之後,就會重開機了~

echo "c" > /proc/sysrq-trigger

 

重開機後,到 /var/crash 目錄,

如果有看到接近現在時間的目錄,應該就有成功產生 kernel dump 了,

目錄裡面的 vmcore 就是 kernel dump 檔:

[root@localhost ~]# ll /var/crash/127.0.0.1-2015.09.20-02\:23\:55/
total 24016
-rw-------. 1 root root 24553243 Sep 20 02:23 vmcore
-rw-r--r--. 1 root root    35823 Sep 20 02:23 vmcore-dmesg.txt

 

至於要如何從這個 dump 檔裡面查出 crash 的原因…

現在還沒學到,之後學到了再來分享吧 XD~

 

(本頁面已被瀏覽過 6,991 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料