1 #!/bin/sh /etc/rc.common
6 EXTRA_COMMANDS
="status"
7 EXTRA_HELP
=" status Print crashkernel status"
16 config_get_bool enabled
"$cfg" enabled
1
17 config_get_bool save_dmesg
"$cfg" save_dmesg
1
18 config_get_bool save_vmcore
"$cfg" save_vmcore
0
20 [ "$enabled" -gt 0 ] ||
return 2
22 [ "$save_dmesg" -gt 0 ] ||
[ "$save_vmcore" -gt 0 ] ||
return 2
24 config_get path
"$cfg" path
"/"
26 [ -d "$path" ] || mkdir
-p "$path" 2>/dev
/null ||
return 1
36 config_get_bool enabled
"$cfg" enabled
1
37 [ "$enabled" -gt 0 ] ||
return
39 config_get_bool save_dmesg
"$cfg" save_dmesg
1
40 config_get_bool save_vmcore
"$cfg" save_vmcore
0
41 config_get path
"$cfg" path
"/"
43 timestamp
=$
(date "+%Y%m%dT%H%M%S")
45 if [ "$save_vmcore" -eq 1 ]; then
46 # would like 'sparse' but busybox doesn't support it
47 dd if=/proc
/vmcore of
="$path/vmcore-$timestamp" conv
=fsync bs
=1M
50 if [ "$save_dmesg" -eq 1 ]; then
51 vmcore-dmesg
/proc
/vmcore
> "$path/dmesg-$timestamp"
63 if [ -r "$kernel" ]; then
68 kernel
="$(find_mtd_part kernel)"
69 if [ -r "$kernel" ]; then
74 for voldir
in /sys
/class
/ubi
/ubi
*_
*; do
75 [ ! -e "$voldir" ] && continue
76 if [ "$(cat "${voldir}/name
")" = "kernel" ]; then
77 kernel
="/dev/$(basename "$voldir")"
90 kernel
="$(find_kernel)"
91 [ $?
-gt 0 ] && return 1
95 grep -q "crashkernel=" /proc
/cmdline ||
return 1
96 append_cmdline
="1 irqpoll reset_devices maxcpus=1"
99 append_cmdline
="1 maxcpus=1 reset_devices"
102 kexec
-p "$kernel" --reuse-cmdline --append="$append_cmdline"
109 if [ ! -e /sys
/kernel
/kexec_crash_loaded
]; then
113 if [ -e /proc
/vmcore
]; then
115 config_foreach run_kdump kdump
118 config_foreach verify_kdump kdump
120 [ $retval = 1 ] && return 1
121 [ $retval = 0 ] && load_crashkernel
127 [ "$(cat /sys/kernel/kexec_crash_loaded)" = "1" ] ||
return
129 if [ -e "$BOOT_IMAGE" ]; then
130 kexec
-p -u "$BOOT_IMAGE"
137 if [ ! -e /sys
/kernel
/kexec_crash_loaded
]; then
138 echo "crashdump not supported by kernel"
142 if [ $
(cat /sys
/kernel
/kexec_crash_size
) -eq 0 ]; then
143 echo "memory for crashdump kernel not reserved!"
144 echo "check crashkernel= kernel cmdline parameter"
145 echo "(a reboot is required after installing kdump)"
149 kernel
="$(find_kernel)"
150 if [ $?
-gt 0 ]; then
151 echo "cannot find kernel image"
154 echo "using kernel image $kernel"
157 echo -n "kdump configuration is "
160 if [ $retval = 0 ]; then
161 if [ "$(config_foreach echo kdump)" ]; then
162 config_foreach verify_kdump kdump
169 if [ $retval = 0 ]; then
171 elif [ $retval = 2 ]; then
177 echo -n "kexec crash kernel "
178 if [ "$(cat /sys/kernel/kexec_crash_loaded)" = "0" ]; then