-# get main packages from a debian-mirror
-if [ -n "$ARCH" ] ; then
- ARCHCMD="--arch $ARCH"
- ARCHINFO=" (${ARCH})"
-fi
-einfo "Running $DEBOOTSTRAP for release ${RELEASE}${ARCHINFO} using mirror $MIRROR"
-$DEBOOTSTRAP $ARCHCMD $RELEASE $MNTPOINT $MIRROR
-eend $?
+# create filesystem {{{
+mkfs() {
+ if [ -n "$MKFS" ] ; then
+ einfo "Running $MKFS on $TARGET"
+ $MKFS $TARGET
+ eend $?
+ fi
+}
+# }}}
+
+# modify filesystem settings {{{
+tunefs() {
+ if [ -n "$TUNE2FS" ] ; then
+ einfo "Disabling automatic filesystem check on $TARGET via tune2fs"
+ $TUNE2FS $TARGET
+ eend $?
+ fi
+}
+# }}}
+
+# mount the new partition or if it's a directory do nothing at all {{{
+mount_target() {
+ if [ -n "$DIRECTORY" ] ; then
+ einfo "Running grml-debootstrap on a directory, nothing to mount."
+ else
+ if grep -q $TARGET /proc/mounts ; then
+ eerror "$TARGET already mounted, exiting."
+ else
+ [ -n "$MNTPOINT" ] || MNTPOINT='/mnt/test'
+ [ -d "$MNTPOINT" ] || mkdir -p "$MNTPOINT"
+ einfo "Mounting $TARGET to $MNTPOINT"
+ mount -o rw,suid,dev $TARGET $MNTPOINT
+ eend $?
+ fi
+ fi
+ if [ -n "$ISODIR" ] ; then
+ einfo "Mounting Debian image loopback to $MNTPOINT/$ISODIR."
+ mkdir -p "$MNTPOINT/$ISODIR"
+ mount --bind "$ISODIR" "$MNTPOINT/$ISODIR"
+ eend $?
+ fi
+}
+# }}}
+
+# install main chroot {{{
+debootstrap_system() {
+ if ! grep -q $MNTPOINT /proc/mounts ; then
+ mount_target
+ fi
+ if grep -q $MNTPOINT /proc/mounts ; then
+ einfo "Running $DEBOOTSTRAP for release ${RELEASE}${ARCHINFO} using ${MIRROR}${ISO}"
+ [ -n "$MIRROR" ] && $DEBOOTSTRAP $ARCHCMD $RELEASE $MNTPOINT $MIRROR || \
+ $DEBOOTSTRAP $ARCHCMD $RELEASE $MNTPOINT $ISO
+ eend $?
+ else
+ eerror "Error: $MNTPOINT not mounted, can not continue."
+ eend 1
+ fi
+}
+# }}}