1 #!/bin/sh /etc/rc.common
6 BOOT_IMAGE
=/boot
/vmlinuz
8 EXTRA_COMMANDS
="status"
9 EXTRA_HELP
=" status Print crashkernel status"
18 config_get_bool enabled
"$cfg" enabled
1
19 config_get_bool save_dmesg
"$cfg" save_dmesg
1
20 config_get_bool save_vmcore
"$cfg" save_vmcore
0
22 [ "$enabled" -gt 0 ] ||
return 2
24 [ "$save_dmesg" -gt 0 ] ||
[ "$save_vmcore" -gt 0 ] ||
return 2
26 config_get path
"$cfg" path
"/"
28 [ -d "$path" ] || mkdir
-p "$path" 2>/dev
/null ||
return 1
38 config_get_bool enabled
"$cfg" enabled
1
39 [ "$enabled" -gt 0 ] ||
return
41 config_get_bool save_dmesg
"$cfg" save_dmesg
1
42 config_get_bool save_vmcore
"$cfg" save_vmcore
0
43 config_get path
"$cfg" path
"/"
45 timestamp
=$
(date "+%Y%m%dT%H%M%S")
47 if [ "$save_vmcore" -eq 1 ]; then
48 echo -n "Saving vmcore (this may take a while)..."
49 # would like 'sparse' but busybox doesn't support it
50 dd if=/proc
/vmcore of
="$path/vmcore-$timestamp" conv
=fsync bs
=1M
54 if [ "$save_dmesg" -eq 1 ]; then
55 vmcore-dmesg
/proc
/vmcore
> "$path/dmesg-$timestamp"
67 if [ -r "$kernel" ]; then
72 kernel
="$(find_mtd_part kernel)"
73 if [ -r "$kernel" ]; then
78 for voldir
in /sys
/class
/ubi
/ubi
*_
*; do
79 [ ! -e "$voldir" ] && continue
80 if [ "$(cat "${voldir}/name
")" = "kernel" ]; then
81 kernel
="/dev/$(basename "$voldir")"
94 kernel
="$(find_kernel)"
95 [ $?
-gt 0 ] && return 1
99 grep -q "crashkernel=" /proc
/cmdline ||
return 1
100 append_cmdline
="1 irqpoll reset_devices maxcpus=1"
103 append_cmdline
="1 maxcpus=1 reset_devices"
106 kexec
-p "$kernel" --reuse-cmdline --append="$append_cmdline"
113 if [ ! -e /sys
/kernel
/kexec_crash_loaded
]; then
117 if [ -e /proc
/vmcore
]; then
119 config_foreach run_kdump kdump
122 config_foreach verify_kdump kdump
124 [ $retval = 1 ] && return 1
125 [ $retval = 0 ] && load_crashkernel
131 [ "$(cat /sys/kernel/kexec_crash_loaded)" = "1" ] ||
return
133 if [ -e "$BOOT_IMAGE" ]; then
134 kexec
-p -u "$BOOT_IMAGE"
141 if [ ! -e /sys
/kernel
/kexec_crash_loaded
]; then
142 echo "crashdump not supported by kernel"
146 if [ $
(cat /sys
/kernel
/kexec_crash_size
) -eq 0 ]; then
147 echo "memory for crashdump kernel not reserved!"
148 echo "check crashkernel= kernel cmdline parameter"
149 echo "(a reboot is required after installing kdump)"
153 kernel
="$(find_kernel)"
154 if [ $?
-gt 0 ]; then
155 echo "cannot find kernel image"
158 echo "using kernel image $kernel"
161 echo -n "kdump configuration is "
164 if [ $retval = 0 ]; then
165 if [ "$(config_foreach echo kdump)" ]; then
166 config_foreach verify_kdump kdump
173 if [ $retval = 0 ]; then
175 elif [ $retval = 2 ]; then
181 echo -n "kexec crash kernel "
182 if [ "$(cat /sys/kernel/kexec_crash_loaded)" = "0" ]; then