summaryrefslogtreecommitdiff
path: root/debian/bugscript
diff options
context:
space:
mode:
authorMichael Tokarev <mjt@tls.msk.ru>2014-10-04 17:14:09 +0400
committerMichael Tokarev <mjt@tls.msk.ru>2014-10-04 20:32:00 +0400
commit68114aa1e6bf57e236d124c929fc37b0e37455e0 (patch)
treedf8f084d7d906bb6146cffd8598525c4d52b75eb /debian/bugscript
parent604e7b423366f41c820989ff7b2e7b7323861406 (diff)
do not embed $VERSION to mkconf and bugscript
Diffstat (limited to 'debian/bugscript')
-rwxr-xr-xdebian/bugscript219
1 files changed, 219 insertions, 0 deletions
diff --git a/debian/bugscript b/debian/bugscript
new file mode 100755
index 00000000..dcb88ebd
--- /dev/null
+++ b/debian/bugscript
@@ -0,0 +1,219 @@
+#!/bin/bash
+#
+# mdadm bug submission control script
+#
+# allows Debian's bug tools to include relevant information in bug reports.
+#
+# Copyright © martin f. krafft <madduck@debian.org>
+# distributed under the terms of the Artistic Licence 2.0
+#
+# we need /bin/bash for readline and -n capabalities in the prompt(s)
+#
+
+# maximise information output even in the case of errors
+set +eu
+
+if ! command -v yesno >/dev/null; then
+ if [ -r /usr/share/reportbug/handle_bugscript ]; then
+ exec /usr/share/reportbug/handle_bugscript ". $0" /dev/stdout
+ fi
+ yesno() {
+ read -n1 -p"$1" REPLY
+ case "$REPLY" in
+ [yY]) REPLY=yep;;
+ [nN]) REPLY=nop;;
+ ('') REPLY="$2";;
+ esac
+ }
+ exec 3>&1
+fi
+
+# do not let people ctrl-c out of the bugscript
+trap : INT
+
+if [ $(id -u) != 0 ]; then
+ if [ -x "$(command -v sudo)" ]; then
+ yesno "Gather system information as root using sudo? (Y/n) " yep
+ if [ "$REPLY" = yep ]; then
+ echo running sudo "$0" "$@"...
+ sudo "$0" "$@" >&3 && exit 0
+ echo "sudo invocation failed, trying /bin/su..."
+ fi
+ fi
+
+ yesno "Gather system information as root using su? (Y/n) " yep
+ if [ "$REPLY" = yep ]; then
+ ARGS=
+ for i in "$@"; do ARGS="${ARGS:+$ARGS }'$1'"; shift; done
+ echo "running su root -s '/bin/sh -c $0${ARGS:+ $ARGS}'..."
+ su root -s /bin/sh -c "$0 $ARGS" >&3 && exit 0
+ unset ARGS
+ echo "su invocation failed."
+ fi
+
+ # arrive here only if neither sudo nor su worked:
+ yesno "Will you provide system information in the bug report yourself? (N/y) " nop
+ if [ "$REPLY" = yep ]; then
+ cat <<_eof >&3
+
+IMPORTANT:
+ please do not forget to include all relevant system information with this
+ bug report. You could run
+ /usr/share/bug/mdadm/script 3>&1
+ as root and attach or include the output.
+
+_eof
+ exit 0
+ fi
+
+ # try our best
+ cat <<_eof >&3
+
+WARNING:
+ the following output was not generated by the root user. If you can, please
+ replace the following up until "-- System Information:" with the output of
+ /usr/share/bug/mdadm/script 3>&1
+ run as root. Thanks!
+
+_eof
+fi
+
+if [ ! -r /proc/mdstat ]; then
+ echo "The local system does not have MD (RAID) support: no drivers loaded."
+ echo "Without MD support, I cannot collect as much information as I'd like."
+
+ #yesno "Are you sure you want to report a bug at this time? " yep
+ yesno "Hit any key to continue..." yep
+ #[ "$REPLY" = yep ] || exit 1
+fi
+
+echo "--- mdadm.conf" >&3
+if [ -r /etc/mdadm/mdadm.conf ]; then
+ grep '^[^#]' /etc/mdadm/mdadm.conf >&3
+elif [ -r /etc/mdadm.conf ]; then
+ grep '^[^#]' /etc/mdadm.conf >&3
+else
+ echo no mdadm.conf file. >&3
+fi
+echo >&3
+
+echo "--- /etc/default/mdadm" >&3
+if [ -r /etc/default/mdadm ]; then
+ grep '^[^#]' /etc/default/mdadm >&3
+else
+ echo no /etc/default/mdadm file. >&3
+fi
+echo >&3
+
+echo "--- /proc/mdstat:" >&3
+cat /proc/mdstat >&3 2>&3 || :
+echo >&3
+
+echo "--- /proc/partitions:" >&3
+cat /proc/partitions >&3 2>&3 || :
+echo >&3
+
+echo "--- LVM physical volumes:" >&3
+if [ -x "$(command -v pvs)" ]; then
+ pvs >&3
+else
+ echo "LVM does not seem to be used." >&3
+fi
+
+echo "--- mount output" >&3
+mount >&3
+echo >&3
+
+echo "--- initrd.img-$(uname -r):" >&3
+if [ -r /boot/initrd.img-$(uname -r) ]; then
+ TEMPDIR=$(mktemp -d)
+ OLDPWD="$PWD"
+ cd "$TEMPDIR"
+ zcat /boot/initrd.img-$(uname -r) 2>&3 | cpio -i 2>&3
+ find -regex '.*/md[a/].+' -type f -exec md5sum {} \; >&3
+
+ echo >&3
+ echo "--- initrd's /conf/conf.d/md:" >&3
+ if [ -r conf/conf.d/md ]; then
+ cat conf/conf.d/md >&3
+ else
+ echo "no conf/md file." >&3
+ fi
+
+ cd "$OLDPWD"
+ rm -rf "$TEMPDIR"
+ unset TEMPDIR
+else
+ echo "no initrd.img-$(uname -r) found." >&3
+fi
+echo >&3
+
+if [ -r /proc/modules ]; then
+ echo "--- /proc/modules:" >&3
+ egrep '(dm_|raid|linear|multipath|faulty)' < /proc/modules >&3 || :
+ echo >&3
+fi
+
+if [ -f /var/log/syslog ]; then
+ if [ -r /var/log/syslog ]; then
+ echo "--- /var/log/syslog:" >&3
+ egrep "^\w{3} [ :[:digit:]]{11} ($(hostname)|localhost) (kernel: md|mdadm): " /var/log/syslog >&3 || :
+ echo >&3
+ else
+ echo "syslog not readable by user." >&3
+ fi
+fi
+
+echo "--- volume detail:" >&3
+for dev in /dev/[hsv]d[a-z]*; do
+ [ ! -r $dev ] && echo "$dev not readable by user." && continue
+ mdadm -E $dev 2>/dev/null && echo -- || echo "$dev is not recognised by mdadm."
+done >&3
+echo >&3
+
+if [ -r /proc/cmdline ]; then
+ echo "--- /proc/cmdline" >&3
+ cat /proc/cmdline >&3
+ echo >&3
+fi
+
+if [ -f /boot/grub/grub.cfg ]; then
+ echo "--- grub2:" >&3
+ if [ -r /boot/grub/grub.cfg ]; then
+ egrep '^[^#].*\<(root=|raid)' /boot/grub/grub.cfg >&3 || :
+ else
+ echo grub.cfg file not readable. >&3
+ fi
+ echo >&3
+fi
+
+if [ -f /boot/grub/menu.lst ]; then
+ echo "--- grub legacy:" >&3
+ if [ -r /boot/grub/menu.lst ]; then
+ grep '^[^#].*\<root=' /boot/grub/menu.lst >&3 || :
+ else
+ echo menu.lst file not readable. >&3
+ fi
+ echo >&3
+fi
+
+if [ -f /etc/lilo.conf ]; then
+ echo "--- lilo:" >&3
+ if [ -r /etc/lilo.conf ]; then
+ egrep '^([^#].*)?root=' /etc/lilo.conf >&3 || :
+ else
+ echo lilo.conf file not readable. >&3
+ fi
+ echo >&3
+fi
+
+echo "--- udev:" >&3
+COLUMNS=70 dpkg -l udev | grep '\<udev\>' >&3
+md5sum /etc/udev/rules.d/*md* /lib/udev/rules.d/*md* >&3 2>/dev/null
+echo >&3
+
+echo "--- /dev:" >&3
+ls -l /dev/md* /dev/disk/by-* >&3
+echo >&3
+
+echo "Auto-generated on $(date -R) by mdadm bugscript" >&3