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
|
#!/bin/sh -eu
# Copyright © 2001-2004 Mario Jou/3en <joussen@debian.org>
# Copyright © 2006 martin f. krafft <madduck@debian.org>
# Distributable under the terms of the GNU GPL version 2.
set +u # workaround for #369953
. /usr/share/debconf/confmodule
set -u
CONFIG=/etc/mdadm/mdadm.conf
ALTCONFIG=/etc/mdadm.conf
[ ! -f $CONFIG ] && [ -f $ALTCONFIG ] && CONFIG=$ALTCONFIG
DEBIANCONFIG=/etc/default/mdadm
DEBIANCONFIG_OLD=/etc/mdadm/debian.conf
if [ ! -e "$DEBIANCONFIG" ]; then
if [ -e "$DEBIANCONFIG_OLD" ]; then
DEBIANCONFIG="$DEBIANCONFIG_OLD"
fi
fi
INITRDSTART=''
if [ -s $DEBIANCONFIG ] ; then
AUTOSTART=true
AUTOCHECK=true
START_DAEMON=true
MAILADDR=root
[ -f $DEBIANCONFIG ] && . $DEBIANCONFIG
if [ -f $CONFIG ]; then
MAILADDR=$(sed -rne 's,^MAILADDR[[:space:]]*([^[:space:]]+).*,\1,p' $CONFIG)
fi
# if $MAIL_TO from $DEBIANCONFIG is set, give it priority. This is because
# it was used in the command line invocation of the mdadm monitor, and thus
# overruled any existing setting in /etc/mdadm/mdadm.conf.
# There's a slight chance of loss of a configuration setting (MAILADDR in
# /etc/mdadm/mdadm.conf), but it's only an email address, and it is likely
# unused anyway, thus we run the risk.
[ -n "${MAIL_TO:-}" ] && MAILADDR="$MAIL_TO"
[ -n "$AUTOSTART" ] && db_set mdadm/autostart "$AUTOSTART"
[ -n "$AUTOCHECK" ] && db_set mdadm/autocheck "$AUTOCHECK"
[ -n "$START_DAEMON" ] && db_set mdadm/start_daemon "$START_DAEMON"
[ -n "$MAILADDR" ] && db_set mdadm/mail_to "$MAILADDR"
fi
db_input high mdadm/warning || true
db_go
if [ -z "$INITRDSTART" ]; then
ROOTRAIDDEV="$(df / | sed -ne 's,^\(/dev/[^[:space:]]\+\).*,\1,p')"
if ! mdadm --detail $ROOTRAIDDEV >/dev/null 2>&1; then
# you are using some funky setup. Let's be save...
INITRDSTART=all
else
INITRDSTART="$ROOTRAIDDEV"
fi
fi
[ -n "$INITRDSTART" ] && db_set mdadm/initrdstart "$INITRDSTART"
while true; do
db_input low mdadm/initrdstart || true
db_go
db_get mdadm/initrdstart
INITRDSTART=$RET
case "$INITRDSTART" in
''|none) INITRDSTART=none; break;;
all) break;;
/dev/md*|md*)
ARRAYS=''
ERROR=0
for i in $INITRDSTART; do
case "$i" in
/dev/md*)
t=${i%,} # just in case people use commas between devices
[ -b "$t" ] && ARRAYS="${ARRAYS:+$ARRAYS }$t" && continue
echo "E: invalid device: $i" >&2
ERROR=1; break
;;
md*)
t=/dev/${i%,} # just in case people use commas between devices
[ -b "$t" ] && ARRAYS="${ARRAYS:+$ARRAYS }$t" && continue
echo "E: invalid device: $i" >&2
ERROR=1; break
;;
*)
echo "E: unrecognised device string: $i" >&2
ERROR=1; break
;;
esac
done
[ $ERROR -eq 0 ] && INITRDSTART="$ARRAYS" && break
;;
*) :;;
esac
done
db_set mdadm/initrdstart "$INITRDSTART"
if [ "$INITRDSTART" != all ]; then
db_input high mdadm/autostart || true
db_go
fi
db_input medium mdadm/autocheck || true
db_go
db_input medium mdadm/start_daemon || true
db_go
db_get mdadm/start_daemon
if [ "$RET" = true ]; then
db_input medium mdadm/mail_to || true
db_go
fi
|