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 124 125 126
|
#!/bin/sh
set -e
. /usr/share/debconf/confmodule
save_logs () {
save_to="$1"
dir="$save_to/install" # dir name under 8 letters in case FS is fat
c=1
if [ -d "$dir" ]; then
c=$(expr $c + 1)
dir="$save_to/install.$c"
fi
mkdir "$dir"
for file in \
/etc/lsb-release \
/var/log/messages \
/var/log/syslog \
/var/log/partman \
/var/lib/dpkg/status \
/var/log/hardware-summary \
/var/log/package-versions \
/var/log/*.ppm \
/usr/share/save-logs/install-report.template; do
if [ -e "$file" ]; then
if ! cp "$file" "$dir"; then
db_progress STOP
exit 1
fi
fi
done
}
db_capb backup
IPADDR=$(ip addr | grep '^[[:space:]]*inet ' | grep -v "127\.0\." | \
head -n 1 | sed 's/.*inet \([0-9.]*\).*/\1/')
if [ -n "$IPADDR" ]; then
db_set save-logs/menu web
fi
db_input critical save-logs/menu || true
if ! db_go; then
exit 10 # back to menu
fi
db_get save-logs/menu
METHOD="$RET"
# TODO: no state machine, so can't sanely backup after this point
db_capb
db_progress START 0 2 debian-installer/save-logs/title
report-hw > /var/log/hardware-summary
db_progress STEP 1
case "$METHOD" in
"serve over network")
# The httpd serves files from /var/log, where almost
# everything of interest is. Link a few other useful files to
# there.
ln -sf /etc/lsb-release /var/log
ln -sf /var/lib/dpkg/status /var/log
ln -sf /usr/share/save-logs/install-report.template /var/log
# Kill existing server if one is already running
: >/var/lib/httpd_stop # Blocks new listener processes from starting
sleep 1
for PID in $(pidof nc); do
if grep -q "httpd" /proc/$PID/cmdline ; then
# The server may already have gone if hit
kill $PID 2>/dev/null || true
fi
done
rm /var/lib/httpd_stop
httpd
db_progress STEP 1
db_progress STOP
if [ -z "$IPADDR" ]; then
db_input critical save-logs/no_network || true
else
db_subst save-logs/httpd_running ADDRESS "$IPADDR"
db_input critical save-logs/httpd_running || true
fi
db_go || true
;;
"mounted file system")
if [ -e "/hd-media" ]; then
db_set save-logs/directory "/hd-media"
fi
db_input critical save-logs/directory || true
db_go || true
db_get save-logs/directory
if [ ! -d "$RET" ]; then
db_subst save-logs/bad_directory DIR "$RET"
db_input critical save-logs/bad_directory || true
db_go || true
db_progress STOP
else
save_logs "$RET"
db_progress STEP 1
db_progress STOP
fi
;;
floppy)
test -d /media || mkdir /media
umount /media 2>/dev/null || true
db_input critical save-logs/insert_floppy || [ $? -eq 30 ]
db_go
if mountmedia floppy ; then
save_logs /media
umount /media
db_progress STEP 1
db_progress STOP
else
db_progress STEP 1
db_progress STOP
db_input critical save-logs/floppy_mount_failed || [ $? -eq 30 ]
db_go
fi
;;
esac
|