1f08c3bdfSopenharmony_ci#!/bin/bash -ex
2f08c3bdfSopenharmony_ci#
3f08c3bdfSopenharmony_ci# Setup for kdump test driver.
4f08c3bdfSopenharmony_ci#
5f08c3bdfSopenharmony_ci# This file is copied from kdump test case of LTP.
6f08c3bdfSopenharmony_ci#
7f08c3bdfSopenharmony_ci# This file is released under the GPLv2.
8f08c3bdfSopenharmony_ci#
9f08c3bdfSopenharmony_ci
10f08c3bdfSopenharmony_ciconf=${1}
11f08c3bdfSopenharmony_ciarch=$(uname -m)
12f08c3bdfSopenharmony_cikver=$(uname -r)
13f08c3bdfSopenharmony_ci
14f08c3bdfSopenharmony_ci. "${conf}"
15f08c3bdfSopenharmony_ci
16f08c3bdfSopenharmony_ciecho "Verify Kernel version >= 2.6.16."
17f08c3bdfSopenharmony_ci# Kernel might in the following format.
18f08c3bdfSopenharmony_ci# x.y.z-1.el
19f08c3bdfSopenharmony_ci# x.y.z.1.el
20f08c3bdfSopenharmony_cikx=${kver%%.*}
21f08c3bdfSopenharmony_citmp=${kver#*.}
22f08c3bdfSopenharmony_ciky=${tmp%%.*}
23f08c3bdfSopenharmony_citmp=${tmp#*.}
24f08c3bdfSopenharmony_citmp=${tmp%%.*}
25f08c3bdfSopenharmony_cikz=${tmp%%-*}
26f08c3bdfSopenharmony_ci
27f08c3bdfSopenharmony_ciif [ "${kx}" -lt 2 ]; then
28f08c3bdfSopenharmony_ci    error=1
29f08c3bdfSopenharmony_ci
30f08c3bdfSopenharmony_cielif [ "${kx}" -eq 2 ]; then
31f08c3bdfSopenharmony_ci    if [ "${ky}" -lt 6 ]; then
32f08c3bdfSopenharmony_ci        error=1
33f08c3bdfSopenharmony_ci
34f08c3bdfSopenharmony_ci    elif [ "${ky}" -eq 6 ]; then
35f08c3bdfSopenharmony_ci        if [ "${kz}" -lt 16 ]; then
36f08c3bdfSopenharmony_ci            error=1
37f08c3bdfSopenharmony_ci        fi
38f08c3bdfSopenharmony_ci    fi
39f08c3bdfSopenharmony_cifi
40f08c3bdfSopenharmony_ci
41f08c3bdfSopenharmony_ciif [ "${error}" ]; then
42f08c3bdfSopenharmony_ci    echo "Fail: kernel version ${kver} is less than 2.6.16."
43f08c3bdfSopenharmony_cifi
44f08c3bdfSopenharmony_ci
45f08c3bdfSopenharmony_ci
46f08c3bdfSopenharmony_ciecho "Verify user is root."
47f08c3bdfSopenharmony_ciif [ $(id -u) != 0 ]; then
48f08c3bdfSopenharmony_ci    echo "Fail: root is required."
49f08c3bdfSopenharmony_ci    error=1
50f08c3bdfSopenharmony_cifi
51f08c3bdfSopenharmony_ci
52f08c3bdfSopenharmony_ci
53f08c3bdfSopenharmony_ciecho "Verify prerequisite."
54f08c3bdfSopenharmony_ciif [ ! -x "/sbin/kexec" ]; then
55f08c3bdfSopenharmony_ci    echo "Fail: kexec-tools not found."
56f08c3bdfSopenharmony_ci    error=1
57f08c3bdfSopenharmony_cifi
58f08c3bdfSopenharmony_ci
59f08c3bdfSopenharmony_ciif [ ! -d "/lib/modules/${kver}/build" ]; then
60f08c3bdfSopenharmony_ci    echo "Fail: kernel-devel not found."
61f08c3bdfSopenharmony_ci    error=1
62f08c3bdfSopenharmony_cifi
63f08c3bdfSopenharmony_ci
64f08c3bdfSopenharmony_ciif [ "${CRASH}" ] && [ "${CRASH}" -eq 1 ]; then
65f08c3bdfSopenharmony_ci    if [ ! -x "/usr/bin/crash" ]; then
66f08c3bdfSopenharmony_ci        echo "Fail: crash not found."
67f08c3bdfSopenharmony_ci        error=1
68f08c3bdfSopenharmony_ci    fi
69f08c3bdfSopenharmony_ci
70f08c3bdfSopenharmony_ci    if [ ! -f "${VMLINUX}" ]; then
71f08c3bdfSopenharmony_ci        echo "Fail: kernel-debuginfo not found."
72f08c3bdfSopenharmony_ci        error=1
73f08c3bdfSopenharmony_ci    fi
74f08c3bdfSopenharmony_cifi
75f08c3bdfSopenharmony_ci
76f08c3bdfSopenharmony_ci# Final result.
77f08c3bdfSopenharmony_ciif [ "${error}" ]; then
78f08c3bdfSopenharmony_ci    echo "Please fixed the above failures before continuing."
79f08c3bdfSopenharmony_ci    exit 1
80f08c3bdfSopenharmony_cifi
81f08c3bdfSopenharmony_ci
82f08c3bdfSopenharmony_ciecho "Modify Boot Loader."
83f08c3bdfSopenharmony_ciif [ "${arch}" = "ppc64" ]; then
84f08c3bdfSopenharmony_ci    args="crashkernel=256M@32M xmon=off"
85f08c3bdfSopenharmony_cielif [ "${arch}" = "i686" ]; then
86f08c3bdfSopenharmony_ci    args="crashkernel=128M@16M nmi_watchdog=1"
87f08c3bdfSopenharmony_cielif [ "${arch}" = "ia64" ]; then
88f08c3bdfSopenharmony_ci    args="crashkernel=512M@256M"
89f08c3bdfSopenharmony_cielse
90f08c3bdfSopenharmony_ci    args="crashkernel=128M@16M"
91f08c3bdfSopenharmony_cifi
92f08c3bdfSopenharmony_ci
93f08c3bdfSopenharmony_ciif [ -x "/sbin/grubby" ]; then
94f08c3bdfSopenharmony_ci    /sbin/grubby --default-kernel |
95f08c3bdfSopenharmony_ci     xargs /sbin/grubby --args="${args}" --update-kernel
96f08c3bdfSopenharmony_ci
97f08c3bdfSopenharmony_cielse
98f08c3bdfSopenharmony_ci    echo "Warn: please make sure the following arguments are in Boot\
99f08c3bdfSopenharmony_ci Loader:"
100f08c3bdfSopenharmony_ci    echo "$args"
101f08c3bdfSopenharmony_ci    echo "Hit any key when ready."
102f08c3bdfSopenharmony_ci    read
103f08c3bdfSopenharmony_cifi
104f08c3bdfSopenharmony_ci
105f08c3bdfSopenharmony_ciexit 0
106