]> git.pld-linux.org Git - packages/kexec-tools.git/blame - kexec.init
- updated to 2.0.9
[packages/kexec-tools.git] / kexec.init
CommitLineData
27c9cb5d
ER
1#!/bin/sh
2#
3# kexec-load Load kernel image with kexec
4#
5# chkconfig: 345 99 01
6#
7# description: This tool is used to load a kernel in memory and reboot into the kernel \
8# loaded in memory using the kexec system call.
9#
10# $Id$
11
12# Source function library
13. /etc/rc.d/init.d/functions
14
15LOAD_KEXEC=yes
16KERNEL_IMAGE="/boot/vmlinuz"
17INITRD="/boot/initrd"
18APPEND=""
19
20# Get service config - may override defaults
21[ -f /etc/sysconfig/kexec ] && . /etc/sysconfig/kexec
22
f2a36ab9
ER
23load() {
24 if [ -z "$APPEND" ]; then
85c44bfd
ER
25 local a
26 for a in $(cat /proc/cmdline); do
27 case "$a" in
28 kexec_*=)
29 # skip entries like:
30 # kexec_jump_back_entry=0x01000201a4814e49
31 ;;
32 *)
33 APPEND="$APPEND $a"
34 esac
35 done
f2a36ab9
ER
36 fi
37
38 # convert to real file for readability
39 if [ -L "$KERNEL_IMAGE" ]; then
40 KERNEL_IMAGE=$(readlink -f "$KERNEL_IMAGE")
41 fi
8fdbb5f2
ER
42 if [ -L "$INITRD" ]; then
43 INITRD=$(readlink -f "$INITRD")
44 fi
f2a36ab9 45
f2a36ab9 46 if [ -z "$INITRD" ]; then
8fdbb5f2 47 show "Loading kernel image: %s, args [%s]" "$KERNEL_IMAGE" "$APPEND"
f2a36ab9
ER
48 kexec -l "$KERNEL_IMAGE" --append="$APPEND"
49 else
8fdbb5f2 50 show "Loading kernel image: %s, initrd %s, args [%s]" "$KERNEL_IMAGE" "$INITRD" "$APPEND"
f2a36ab9
ER
51 kexec -l "$KERNEL_IMAGE" --initrd="$INITRD" --append="$APPEND"
52 fi
b353d825
ER
53 RETVAL=$?
54 [ $RETVAL = 0 ] && ok || fail
f2a36ab9
ER
55}
56
afc73c4d
ER
57start() {
58 if [ -f /var/lock/subsys/kexec ]; then
59 return
60 fi
61 touch /var/lock/subsys/kexec
62}
63
27c9cb5d
ER
64stop() {
65 if ! is_yes "$LOAD_KEXEC" || [ ! -f /sys/kernel/kexec_loaded ]; then
66 return
67 fi
68
69 # skip if already loaded something
f2a36ab9 70 if [ "$(cat /sys/kernel/kexec_loaded 2>/dev/null)" = "1" ]; then
27c9cb5d
ER
71 return
72 fi
73
f2a36ab9 74 load
afc73c4d
ER
75 rm -f /var/lock/subsys/kexec
76}
77
78status() {
f2a36ab9
ER
79 if [ "$(cat /sys/kernel/kexec_loaded 2>/dev/null)" = "1" ]; then
80 show "Kexec image loaded"; ok
afc73c4d 81 else
f2a36ab9 82 show "Kexec image is not loaded"; fail
afc73c4d 83 fi
f2a36ab9
ER
84 if [ "$(cat /sys/kernel/kexec_crash_loaded 2>/dev/null)" = 1 ]; then
85 show "Kexec image for kernel crash loaded"; ok
afc73c4d 86 else
f2a36ab9 87 show "Kexec image for kernel crash is not loaded"; fail
afc73c4d 88 fi
ccadf75c
ER
89
90 # convert to real file for readability
91 if [ -L "$KERNEL_IMAGE" ]; then
92 KERNEL_IMAGE=$(readlink -f "$KERNEL_IMAGE")
93 fi
94 if [ -L "$INITRD" ]; then
95 INITRD=$(readlink -f "$INITRD")
96 fi
97 INIT_COL=0 show "Configured kernel: %s" "$KERNEL_IMAGE"; echo
98 if [ -n "$INITRD" ]; then
99 INIT_COL=0 show "Configured initrd: %s" "$INITRD"; echo
100 fi
27c9cb5d
ER
101}
102
103RETVAL=0
104# See how we were called.
105case "$1" in
106 start)
afc73c4d 107 start
27c9cb5d
ER
108 ;;
109 stop)
110 stop
111 ;;
afc73c4d 112 restart)
f2a36ab9 113 stop
afc73c4d
ER
114 start
115 ;;
f2a36ab9
ER
116 load)
117 load
118 ;;
afc73c4d
ER
119 status)
120 status
121 ;;
27c9cb5d 122 *)
f2a36ab9 123 msg_usage "$0 {start|stop|load|restart|status}"
27c9cb5d
ER
124 exit 3
125esac
126
127exit $RETVAL
This page took 0.042037 seconds and 4 git commands to generate.