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