summaryrefslogtreecommitdiffstats
path: root/debian/kexec-tools.postinst
blob: 2f282a664c1c2ee2bc0b1a03536d21805ebe5f47 (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#! /bin/sh
# postinst script for kexec-tools
#
# see: dh_installdeb(1)

set -e

update_param() {                                                               
        eval old=\"'$'$1\"
        eval new=\"'$'new_$1\"

        if test "$old" = "$new"; then
                return
        fi

        if test -z "$old"; then
                grep -Eq "^ *$1=" "$INITCONFFILE" || echo "$1=" \
                       >> "$INITCONFFILE"
        fi

	sed -e "s/^ *$1=.*/$1=$new/" < $INITCONFFILE > $INITCONFFILE.$$
	mv -f $INITCONFFILE.$$ $INITCONFFILE
}

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#

# Handle debconf
. /usr/share/debconf/confmodule

INITCONFFILE=/etc/default/kexec
 
# We generate several files during the postinst, and we don't want
#       them to be readable only by root.
umask 022

case "$1" in
    configure)
    ;;

    install|upgrade)
    ;;

    upgrade)
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    exit 0	
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# Generate configuration file if it does not exist, using
# default values.
[ -r "${INITCONFFILE}" ] || {
	echo Generating ${INITCONFFILE}... >&2
	cat >${INITCONFFILE} <<'EOFMAGICNUMBER1234'
# Defaults for kexec-tools

# Kernel and initrd image
KERNEL_IMAGE="/vmlinuz"
INITRD="/initrd.img"

# If empty, use current /proc/cmdline
APPEND=""

# Load the default kernel from grub config (true/false)
USE_GRUB_CONFIG=false
EOFMAGICNUMBER1234
}

# Add USE_GRUB_CONFIG parameter to config file if it does not exist
. ${INITCONFFILE}
if test -z "$USE_GRUB_CONFIG" ; then
	echo "" >> ${INITCONFFILE}
	echo "# Load the default kernel from grub config (true/false)" >> ${INITCONFFILE}
	echo "USE_GRUB_CONFIG=" >> ${INITCONFFILE}
fi

# Remove discontinued LOAD_KEXEC option
if test -n "$LOAD_KEXEC" ; then
	sed -i "s/Defaults for kexec initscript/Defaults for kexec-tools/" ${INITCONFFILE}
	sed -i "/sourced by/d" ${INITCONFFILE}
	sed -i "/Load a kexec kernel/d" ${INITCONFFILE}
	sed -i "/LOAD_KEXEC/d" ${INITCONFFILE}
	sed -i '/^$/N;/^\n$/D' ${INITCONFFILE}
fi

# Detect if system is configured to place kernel link under /boot instead of /
# If yes, update kernel and initrd image locations in config file
if [ -f /etc/kernel-img.conf ]; then
	LINK_IN_BOOT=`grep link_in_boot /etc/kernel-img.conf | cut -f2 -d= | tr -d '[:blank:]'`
	if [ "$LINK_IN_BOOT" = "yes" ]; then
		sed -e "s/KERNEL_IMAGE=\"\/vmlinuz\"/KERNEL_IMAGE=\"\/boot\/vmlinuz\"/" < ${INITCONFFILE} > ${INITCONFFILE}.$$
		mv -f ${INITCONFFILE}.$$ $INITCONFFILE
		sed -e "s/INITRD=\"\/initrd.img\"/INITRD=\"\/boot\/initrd.img\"/" < ${INITCONFFILE} > ${INITCONFFILE}.$$
		mv -f ${INITCONFFILE}.$$ $INITCONFFILE
	else
		sed -e "s/KERNEL_IMAGE=\"\/boot\/vmlinuz\"/KERNEL_IMAGE=\"\/vmlinuz\"/" < ${INITCONFFILE} > ${INITCONFFILE}.$$
		mv -f ${INITCONFFILE}.$$ $INITCONFFILE
		sed -e "s/INITRD=\"\/boot\/initrd.img\"/INITRD=\"\/initrd.img\"/" < ${INITCONFFILE} > ${INITCONFFILE}.$$
		mv -f ${INITCONFFILE}.$$ $INITCONFFILE
	fi
fi

# ------------------------- Debconf questions start ---------------------

if [ -d /boot/grub ]
then
	db_get kexec-tools/use_grub_config
	new_USE_GRUB_CONFIG="${RET}"
else
	new_USE_GRUB_CONFIG="false"
	db_set kexec-tools/use_grub_config "false"
fi
update_param USE_GRUB_CONFIG
                                                                                                                              
# ------------------------- Debconf questions end ---------------------

#DEBHELPER#

exit 0