blob: c75e769595c56000bda689fc1047b19dc87846a0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
#!/bin/bash
# Test script to validate kexec reboots
kexec_tools_instance=$((RANDOM%99999+10000))
metadata="/home/root/.kexec-test-data"
kernel="/boot/vmlinux.strip"
cmdline="$( cat /proc/cmdline) kexec_tools_instance=$kexec_tools_instance"
dtb="/boot/fdt.dtb"
load_type="--load"
usage(){
echo "Usage:"
echo "kexec-test [--metadata <file>] [--kernel <kernel> --append <command line> --dtb <dtb_file> --panic] [--validate] [--reset] [--help]"
echo
echo "--[m]etadata default - /home/root/.kexec-test-data"
echo "--[k]ernel default - /boot/vmlinux.strip"
echo "--[p]anic load the kernel for use on panic"
echo "--[a]ppend defalut - current /proc/cmdline + KERNEL ID"
echo "--[d]tb default - /boot/fdt.dtb"
echo "--[v]alidate Checks whether recent kexec boot Success or Fail"
echo "--[r]eset Deletes metadata"
echo "--[h]elp Shows this menu"
echo
}
reset(){
rm $metadata
}
validate(){
recent_id=`cat $metadata | grep "BOOTING KERNEL" | tail -1 | cut -d ' ' -f 4`
kexec_success=`cat /proc/cmdline | grep $recent_id | wc -l`
if [ $kexec_success -eq 0 ]
then
echo "kexec-test: KERNEL ID $recent_id REBOOT FAIL"
exit 1
else
echo "kexec-test: KERNEL ID $recent_id REBOOT SUCCESS"
exit 0
fi
}
while [ "$1" ]
do
case $1 in
-m | --metadata ) shift
metadata=$1
;;
-k | --kernel ) shift
kernel=$1
;;
-p | --panic ) load_type="--load-panic"
panic=" PANIC"
;;
-a | --append ) shift
cmdline="$1 kexec_tools_instance=$kexec_tools_instance"
;;
-d | --dtb ) shift
dtb=$1
;;
-v | --validate ) validate
exit 1
;;
-r | --reset ) reset
exit
;;
-h | --help ) usage
exit
;;
* ) usage
exit 1
esac
shift
done
echo "kexec-test: LOADING$panic KERNEL $kexec_tools_instance" | tee -a $metadata
echo "kexec -d $load_type $kernel "--append=$cmdline" --dtb=$dtb" | tee -a $metadata
sleep 3
kexec -d $load_type $kernel "--append=$cmdline" --dtb=$dtb
echo "kexec-test: BOOTING$panic KERNEL $kexec_tools_instance" | tee -a $metadata
sleep 3
if [ $panic ]
then
echo c > /proc/sysrq-trigger
else
kexec -d -e
fi
|