#!/bin/sh
-# Filename: grml-bootstrap
-# Purpose: wrapper around debootstrap for installing plain Debian via grml
+# Filename: grml-debootstrap
+# Purpose: wrapper around debootstrap for installing plain Debian via Grml
# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2.
+# License: This file is licensed under the GPL v2+
################################################################################
# http://www.debian.org/releases/stable/i386/index.html.en
# variables {{{
PN="$(basename $0)"
-VERSION='0.36'
+VERSION="$(dpkg --list $PN 2>/dev/null| awk '/^i/ {print $3}')"
+VERSION="${VERSION:-unknown}"
MNTPOINT="/mnt/debootstrap.$$"
# inside the chroot system locales might not be available, so use minimum:
check4root || exit 1
# }}}
-# source configuration file {{{
+# source main configuration file {{{
if [ -r /etc/debootstrap/config ] ; then
- if [ -n "$CONFIGFILE" ] ; then
- einfo "Using config file $CONFIGFILE."
- if ! . "$CONFIGFILE" ; then
- eerror "Error reading config file $CONFIGFILE" ; eend 1 ; exit 1
- fi
- else
- . /etc/debootstrap/config
- fi
+ . /etc/debootstrap/config
fi
# }}}
}
# }}}
+# source specified configuration file {{{
+if [ -n "$CONFIGFILE" ] ; then
+ einfo "Reading specified config file $CONFIGFILE."
+ if ! . "$CONFIGFILE" ; then
+ eerror "Error reading config file $CONFIGFILE" ; eend 1 ; exit 1
+ fi
+fi
+# }}}
+
# backwards compability checks {{{
if [ -n "$GROOT" ] ; then
echo "Error: you seem to have \$GROOT configured." >&2
MIRROR="$(dialog --stdout --title "${PN}" --inputbox \
"Please enter Debian mirror you would like to use for installing packages." \
0 0 $MIRROR)"
- else # CHROOT_VARIABLES == local
+ else # CHOOSE_MIRROR == local
[ -n "$ISO" ] || ISO='/mnt/mirror'
ISO="$(dialog --stdout --title "${PN}" --inputbox \
"Please enter directory name you would like to use for installing packages." \
NUM_PARTITIONS=$((${NUM_PARTITIONS}+1))
done
+# force metadata version 0.90 for lenny so old grub can boot from this array.
+METADATA_VERSION=""
+if [ $RELEASE = "lenny" ]; then
+ METADATA_VERSION="-e0"
+fi
+
ERRORFILE=$(mktemp)
set +e
# TODO: better error handling?
yes | mdadm --create "${TARGET}" --level="${RAIDLEVEL}" \
- --raid-devices="${NUM_PARTITIONS}" ${SELECTED_PARTITIONS} >/dev/null 2>$ERRORFILE
+ --raid-devices="${NUM_PARTITIONS}" ${METADATA_VERSION} ${SELECTED_PARTITIONS} >/dev/null 2>$ERRORFILE
RC=$?
set -e
{
welcome_dialog
+ prompt_for_release
+
prompt_for_swraid
prompt_for_target
prompt_for_bootmanager
- prompt_for_release
-
prompt_for_hostname
prompt_for_password
[ -x "$MNTPOINT"/etc/init.d/ssh ] && "$MNTPOINT"/etc/init.d/ssh stop
[ -x "$MNTPOINT"/etc/init.d/mdadm ] && "$MNTPOINT"/etc/init.d/mdadm stop
# ugly, but make sure we really don't leave anything (/proc /proc is intended)
- for ARG in /sys -a /proc /proc ; do
+ for ARG in /sys /proc /proc ; do
[ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount $ARG >/dev/null 2>&1 || true
done
umount "$MNTPOINT"/dev >/dev/null 2>&1 || true
# make sure /dev/disk/by-uuid/... is up2date, otherwise grub
# will fail to detect the uuid in the chroot
- blockdev --rereadpt "${TARGET%%[0-9]*}"
+ if echo "$TARGET" | grep -q "/dev/md" ; then
+ blockdev --rereadpt "${TARGET}"
+ else
+ blockdev --rereadpt "${TARGET%%[0-9]*}"
+ fi
# give the system 2 seconds, otherwise we might run into
# race conditions :-/
sleep 2
# }}}
# finalize {{{
-if [ -n "$ISODIR" ] ; then
- einfo "Unmounting Debian image loopback from $MNTPOINT/$ISODIR."
- umount "$MNTPOINT/$ISODIR"
- eend $?
-fi
-
einfo "Removing ${CHROOT_VARIABLES}" ; rm "$CHROOT_VARIABLES" ; eend $?
einfo "Removing ${STAGES}" ; rmdir "$STAGES" ; eend $?