Bug#516802: Does not use debconf-preseeded value for mdadm/initrdstart
Daniel Richard G.
skunk at iSKUNK.ORG
Tue Feb 24 22:31:50 UTC 2009
On Tue, 2009 Feb 24 20:30:30 +0100, martin f krafft wrote:
>
> I forget debconf details, but does this work for other settings for
> you? I.e. are you sure that "seen false" doesn't cause it to ignore
> the preseeded value and use the default anyway?
Positive. For most packages, if the question comes up, and there's an
existing value in debconf, then that gets shown instead of the default
value. I'm aware of about only fix or six packages that don't do this, and
have been filing bugs against them (e.g. #515848).
> This means that INITRDSTART only gets initialised to 'all' if $RET
> was not set. Either $RET is 'all', in which case debconf is at
> fault, or there are gnomes in your PC.
This is on a test system for disk-image deployment. I'm starting with a
minimal Debian install, and going up from there. In other words, it's a
fairly antiseptic/clean environment that is producing this behavior.
> Do you think you could try to reproduce this on a new machine in the
> following order:
>
> 1. use debconf-set-selections as you would
> 2. use dpkg --unpack mdadm_*.deb to merely unpack the package
> 3. change set -eu at the top of /var/lib/dpkg/info/mdadm.postinst to
> set -euvx
> 4. insert echo $RET between the two lines of code shown above
> 5. run dpkg --configure mdadm
> 6 paste the output to me?
The output is attached. One thing that it doesn't show, however---the
debconf question comes up *before* the postinst terminal output. (I
double-checked this by redoing the above with the readline frontend; sure
enough, it asks immediately after "Setting up mdadm (2.6.7.2-1) ...".)
(Also, in case it matters: The attached run was with the dialog frontend,
and accepting the default value of "all".)
-------------- next part --------------
# dpkg --configure mdadm
Setting up mdadm (2.6.7.2-1) ...
case "${1:-}" in
configure|reconfigure)
if [ ! -f /proc/mdstat ] && [ -x $(command -v modprobe 2>/dev/null) ]; then
modprobe -k md >/dev/null 2>&1 || :
fi
if [ ! -f /proc/mdstat ]; then
echo 'W: mdadm: failed to load MD subsystem.' >&2
fi
if [ ! -e /dev/md15 ] \
&& [ ! -e /dev/.static/dev/md15 ] \
&& [ ! -e /dev/.devfsd ]; then
echo -n 'Generating array device nodes... ' >&2
cd /dev
if /dev/MAKEDEV md >&2 >/dev/null; then
echo 'done.' >&2
else
echo 'failed.' >&2
fi
fi
DEBIANCONFIG=/etc/default/mdadm
CONFIG=/etc/mdadm/mdadm.conf
ALTCONFIG=/etc/mdadm.conf
MDADM=/sbin/mdadm
if [ -z "${2:-}" ] && [ -s /etc/mdctl/mdctl.conf ] \
&& [ ! -f /etc/mdadm/mdadm.conf ]; then
cp -a /etc/mdctl/mdctl.conf /etc/mdadm/mdadm.conf
fi
# load current settings, most of which will be overwritten.
[ -f $DEBIANCONFIG ] && . $DEBIANCONFIG
db_get mdadm/mail_to
MAILADDR="${RET:-root}"
[ ! -f $CONFIG ] && [ -f $ALTCONFIG ] && CONFIG=$ALTCONFIG
if [ ! -f $CONFIG ]; then
echo -n 'Generating mdadm.conf... ' >&2
# pass the MAILADDR variable into the script
MDADM_MAILADDR__="$MAILADDR"; export MDADM_MAILADDR__
if /usr/share/mdadm/mkconf generate $CONFIG 2>/dev/null; then
echo done. >&2
else
echo "done (failed to scan arrays; /proc probably not mounted)." >&2
fi
elif dpkg --compare-versions "${2:-2.5.3-1}" le 2.5.3-1; then
# we're upgrading from before 2.5.3-1 and there's apparently already
# a configuration file which we cannot verify. We'll use the sentinel
# during initramfs creation.
md5sum $CONFIG > /var/lib/mdadm/CONF-UNCHECKED
fi
if [ -w $CONFIG ] && [ -z "${MDADM_MAILADDR__:-}" ]; then
# if the configuration is writeable but has not been written just
# before, then edit it to reflect the MAILADDR preference
if grep -q '^MAILADDR' $CONFIG; then
sed -i -e "s/^MAILADDR.*/MAILADDR $MAILADDR/" $CONFIG
else
echo "MAILADDR $MAILADDR" >> $CONFIG
fi
fi
unset MDADM_MAILADDR__
db_get mdadm/initrdstart
echo "RET = '$RET'"
INITRDSTART="${RET:-all}"
db_get mdadm/autostart
AUTOSTART="${RET:-true}"
db_get mdadm/autocheck
AUTOCHECK="${RET:-true}"
db_get mdadm/start_daemon
START_DAEMON="${RET:-true}"
#db_get mdadm/daemon_options
[ -n "${DAEMON_OPTIONS:-}" ] || DAEMON_OPTIONS='--syslog'
cat <<_eof > $DEBIANCONFIG
# mdadm Debian configuration
#
# You can run 'dpkg-reconfigure mdadm' to modify the values in this file, if
# you want. You can also change the values here and changes will be preserved.
# Do note that only the values are preserved; the rest of the file is
# rewritten.
#
# INITRDSTART:
# list of arrays (or 'all') to start automatically when the initial ramdisk
# loads. This list *must* include the array holding your root filesystem. Use
# 'none' to prevent any array from being started from the initial ramdisk.
INITRDSTART='$INITRDSTART'
# AUTOSTART:
# should mdadm start arrays listed in /etc/mdadm/mdadm.conf automatically
# during boot?
AUTOSTART=$AUTOSTART
# AUTOCHECK:
# should mdadm run periodic redundancy checks over your arrays? See
# /etc/cron.d/mdadm.
AUTOCHECK=$AUTOCHECK
# START_DAEMON:
# should mdadm start the MD monitoring daemon during boot?
START_DAEMON=$START_DAEMON
# DAEMON_OPTIONS:
# additional options to pass to the daemon.
DAEMON_OPTIONS="$DAEMON_OPTIONS"
# VERBOSE:
# if this variable is set to true, mdadm will be a little more verbose e.g.
# when creating the initramfs.
VERBOSE=${VERBOSE:-false}
# MAIL_TO:
# this variable is now managed in /etc/mdadm/mdadm.conf (MAILADDR).
# Please see mdadm.conf(5).
_eof
db_stop
# try to undo udev rules (installed by 2.5.2-10, see 2.5.3.git200608202239-1
# changelog). Do this before update-initramfs, which copies udev into
# initrd.
V=2.5.3.git200608202239-1~
if [ "${1:-}" = "configure" ] && [ -n "${2:-}" ] \
&& dpkg --compare-versions $2 ge 2.5.2-10 \
&& dpkg --compare-versions $2 lt $V; then
# first, disable the rules
rm -f /etc/udev/rules.d/z60_mdadm.rules
if echo "0843432c9c01ed95c42481eee0cf6fbf /etc/udev/mdadm.rules" \
| md5sum -c >/dev/null; then
# no changes by user, so remove
rm -f /etc/udev/mdadm.rules
else
echo "W: mdadm: I tried to remove /etc/udev/mdadm.rules (see changelog)," >&2
echo "W: mdadm: but you have modified it, so I won't touch it. Please" >&2
echo "W: mdadm: remove the file at your leisure." >&2
fi
fi
command -v update-initramfs >/dev/null 2>&1 && update-initramfs -u
;;
esac
+ case "${1:-}" in
+ '[' '!' -f /proc/mdstat ']'
command -v modprobe 2>/dev/null
++ command -v modprobe
+ '[' -x /sbin/modprobe ']'
+ modprobe -k md
+ '[' '!' -f /proc/mdstat ']'
+ '[' '!' -e /dev/md15 ']'
+ '[' '!' -e /dev/.static/dev/md15 ']'
+ '[' '!' -e /dev/.devfsd ']'
+ echo -n 'Generating array device nodes... '
Generating array device nodes... + cd /dev
+ /dev/MAKEDEV md
+ echo done.
done.
+ DEBIANCONFIG=/etc/default/mdadm
+ CONFIG=/etc/mdadm/mdadm.conf
+ ALTCONFIG=/etc/mdadm.conf
+ MDADM=/sbin/mdadm
+ '[' -z '' ']'
+ '[' -s /etc/mdctl/mdctl.conf ']'
+ '[' -f /etc/default/mdadm ']'
+ db_get mdadm/mail_to
+ _db_cmd 'GET mdadm/mail_to'
+ IFS=' '
+ printf '%s\n' 'GET mdadm/mail_to'
+ IFS='
'
+ read -r _db_internal_line
+ RET=root
+ case ${_db_internal_line%%[ ]*} in
+ return 0
+ MAILADDR=root
+ '[' '!' -f /etc/mdadm/mdadm.conf ']'
+ '[' -f /etc/mdadm.conf ']'
+ '[' '!' -f /etc/mdadm/mdadm.conf ']'
+ echo -n 'Generating mdadm.conf... '
Generating mdadm.conf... + MDADM_MAILADDR__=root
+ export MDADM_MAILADDR__
+ /usr/share/mdadm/mkconf generate /etc/mdadm/mdadm.conf
+ echo done.
done.
+ '[' -w /etc/mdadm/mdadm.conf ']'
+ '[' -z root ']'
+ unset MDADM_MAILADDR__
+ db_get mdadm/initrdstart
+ _db_cmd 'GET mdadm/initrdstart'
+ IFS=' '
+ printf '%s\n' 'GET mdadm/initrdstart'
+ IFS='
'
+ read -r _db_internal_line
+ RET=all
+ case ${_db_internal_line%%[ ]*} in
+ return 0
+ echo 'RET = '\''all'\'''
RET = 'all'
+ INITRDSTART=all
+ db_get mdadm/autostart
+ _db_cmd 'GET mdadm/autostart'
+ IFS=' '
+ printf '%s\n' 'GET mdadm/autostart'
+ IFS='
'
+ read -r _db_internal_line
+ RET=false
+ case ${_db_internal_line%%[ ]*} in
+ return 0
+ AUTOSTART=false
+ db_get mdadm/autocheck
+ _db_cmd 'GET mdadm/autocheck'
+ IFS=' '
+ printf '%s\n' 'GET mdadm/autocheck'
+ IFS='
'
+ read -r _db_internal_line
+ RET=false
+ case ${_db_internal_line%%[ ]*} in
+ return 0
+ AUTOCHECK=false
+ db_get mdadm/start_daemon
+ _db_cmd 'GET mdadm/start_daemon'
+ IFS=' '
+ printf '%s\n' 'GET mdadm/start_daemon'
+ IFS='
'
+ read -r _db_internal_line
+ RET=false
+ case ${_db_internal_line%%[ ]*} in
+ return 0
+ START_DAEMON=false
+ '[' -n '' ']'
+ DAEMON_OPTIONS=--syslog
+ cat
+ db_stop
+ echo STOP
+ V=2.5.3.git200608202239-1~
+ '[' configure = configure ']'
+ '[' -n '' ']'
+ command -v update-initramfs
+ update-initramfs -u
update-initramfs: deferring update (trigger activated)
# remove S04 installed as a fix to #294404 as it does not work
# we only remove the startup links if the previous version was 1.9.0-2.1 (the
# one with the erroneous fix) and the S04 link exists to make sure that
# chances are minimised to overwrite admin changes (even though this would
# not affect woody upgraders)
if [ "${1:-}" = "configure" ] && [ "${2:-}" = "1.9.0-2.1" ] \
&& test -L /etc/rcS.d/S04mdadm-raid;
then
update-rc.d -f mdadm-raid remove
fi
+ '[' configure = configure ']'
+ '[' '' = 1.9.0-2.1 ']'
if [ "${1:-}" = "configure" ] && dpkg --compare-versions ${2:-2.6.7-1} lt 2.6.7-1; then
# stop RAIDs a bit later, see #486012
for i in 0 6; do
test -L /etc/rc${i}.d/S50mdadm-raid && test ! -L /etc/rc${i}.d/S60mdadm-raid \
&& mv /etc/rc${i}.d/S50mdadm-raid /etc/rc${i}.d/S60mdadm-raid
done
fi
+ '[' configure = configure ']'
+ dpkg --compare-versions 2.6.7-1 lt 2.6.7-1
# See #369953
set +u
+ set +u
# Automatically added by dh_installdocs
if [ "$1" = configure ] && which install-docs >/dev/null 2>&1; then
install-docs -i /usr/share/doc-base/mdadm-jd-rebuild-raid
fi
+ '[' configure = configure ']'
+ which install-docs
# End automatically added section
# Automatically added by dh_installdocs
if [ "$1" = configure ] && which install-docs >/dev/null 2>&1; then
install-docs -i /usr/share/doc-base/mdadm-raid5-vs-10
fi
+ '[' configure = configure ']'
+ which install-docs
# End automatically added section
# Automatically added by dh_installdocs
if [ "$1" = configure ] && which install-docs >/dev/null 2>&1; then
install-docs -i /usr/share/doc-base/mdadm-superblock-formats
fi
+ '[' configure = configure ']'
+ which install-docs
# End automatically added section
# Automatically added by dh_installdocs
if [ "$1" = configure ] && which install-docs >/dev/null 2>&1; then
install-docs -i /usr/share/doc-base/mdadm-md-txt
fi
+ '[' configure = configure ']'
+ which install-docs
# End automatically added section
# Automatically added by dh_installdocs
if [ "$1" = configure ] && which install-docs >/dev/null 2>&1; then
install-docs -i /usr/share/doc-base/mdadm-readme-recipes
fi
+ '[' configure = configure ']'
+ which install-docs
# End automatically added section
# Automatically added by dh_installdocs
if [ "$1" = configure ] && which install-docs >/dev/null 2>&1; then
install-docs -i /usr/share/doc-base/mdadm-root-on-raid
fi
+ '[' configure = configure ']'
+ which install-docs
# End automatically added section
# Automatically added by dh_installdocs
if [ "$1" = configure ] && which install-docs >/dev/null 2>&1; then
install-docs -i /usr/share/doc-base/mdadm-faq
fi
+ '[' configure = configure ']'
+ which install-docs
# End automatically added section
# Automatically added by dh_installinit
if [ -x "/etc/init.d/mdadm-raid" ]; then
update-rc.d mdadm-raid start 25 S . start 60 0 6 . >/dev/null || exit $?
fi
+ '[' -x /etc/init.d/mdadm-raid ']'
+ update-rc.d mdadm-raid start 25 S . start 60 0 6 .
# End automatically added section
# Automatically added by dh_installinit
if [ -x "/etc/init.d/mdadm" ]; then
update-rc.d mdadm defaults 25 >/dev/null
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
invoke-rc.d mdadm start || exit $?
else
/etc/init.d/mdadm start || exit $?
fi
fi
+ '[' -x /etc/init.d/mdadm ']'
+ update-rc.d mdadm defaults 25
which invoke-rc.d 2>/dev/null
++ which invoke-rc.d
+ '[' -x /usr/sbin/invoke-rc.d ']'
+ invoke-rc.d mdadm start
# End automatically added section
# Automatically added by dh_installudev
if [ "$1" = configure ]; then
if [ -e "/etc/udev/mdadm.vol_id.rules" ]; then
echo "Preserving user changes to /etc/udev/rules.d/65_mdadm.vol_id.rules ..."
if [ -e "/etc/udev/rules.d/65_mdadm.vol_id.rules" ]; then
mv -f "/etc/udev/rules.d/65_mdadm.vol_id.rules" "/etc/udev/rules.d/65_mdadm.vol_id.rules.dpkg-new"
fi
mv -f "/etc/udev/mdadm.vol_id.rules" "/etc/udev/rules.d/65_mdadm.vol_id.rules"
fi
fi
+ '[' configure = configure ']'
+ '[' -e /etc/udev/mdadm.vol_id.rules ']'
# End automatically added section
set -u
+ set -u
# do start mdadm-raid, but don't use dh_installinit to do so, to prevent
# stopping raids on remove/upgrade.
if [ -x /etc/init.d/mdadm-raid ]; then
if [ -x "$(command -v invoke-rc.d)" ]; then
invoke-rc.d mdadm-raid start || exit $?
else
/etc/init.d/mdadm-raid start || exit $?
fi
fi
+ '[' -x /etc/init.d/mdadm-raid ']'
command -v invoke-rc.d
++ command -v invoke-rc.d
+ '[' -x /usr/sbin/invoke-rc.d ']'
+ invoke-rc.d mdadm-raid start
Assembling MD arrays...done (disabled in /etc/default/mdadm).
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.26-1-686
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
W: mdadm: no arrays defined in configuration file.
#
More information about the pkg-mdadm-devel
mailing list