#!/bin/sh # # mkconf -- outputs valid mdadm.conf contents for the local system # # Copyright © martin f. krafft # distributed under the terms of the Artistic Licence 2.0 # # $Id$ # set -eu ME="${0##*/}" MDADM=/sbin/mdadm DEBIANCONFIG=/etc/default/mdadm CONFIG=/etc/mdadm/mdadm.conf test -r $DEBIANCONFIG && . $DEBIANCONFIG if [ -n "${MDADM_MAILADDR__:-}" ]; then # honour MAILADDR from the environment (from postinst) MAILADDR="$MDADM_MAILADDR__" else # preserve existing MAILADDR MAILADDR="$(sed -ne 's,MAILADDR ,,p' $CONFIG 2>/dev/null || echo root)" fi generate=0 [ "${1:-}" = force-generate ] && rm -f $CONFIG case "${1:-}" in generate|force-generate) [ -n "${2:-}" ] && CONFIG=$2 # only barf if the config file specifies anything else than MAILADDR if egrep -qv '^(MAILADDR.*|#.*|)$' $CONFIG 2>/dev/null; then echo "E: $ME: $CONFIG already exists." >&2 exit -1 fi mkdir --parent ${CONFIG%/*} exec >$CONFIG generate=1 ;; esac cat <<_eof # mdadm.conf # # Please refer to mdadm.conf(5) for information about this file. # # by default, scan all partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions # auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes # automatically tag new arrays as belonging to the local system HOMEHOST # instruct the monitoring daemon where to send mail alerts MAILADDR $MAILADDR _eof error=0 if [ ! -r /proc/mdstat ]; then echo W: $ME: MD subsystem is not loaded, thus I cannot scan for arrays. >&2 error=1 elif [ ! -r /proc/partitions ]; then echo W: $ME: /proc/partitions cannot be read, thus I cannot scan for arrays. >&2 error=2 else echo "# definitions of existing MD arrays" if ! $MDADM --examine --scan --config=partitions; then error=$(($? + 128)) echo W: $ME: failed to scan for partitions. >&2 echo "### WARNING: scan failed." else echo fi fi if [ $generate -eq 1 ]; then cat <<_eof # This file was auto-generated on $(date -R) # by mkconf \$Id$ _eof mkdir -p /var/lib/mdadm md5sum $CONFIG > /var/lib/mdadm/mdadm.conf-generated fi exit $error