X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=9bda8e3bcff78eba1df9e13ff0a5f54da2e1c37b;hp=b11ee7c2f25dc898d55e4a75295cbf13100dd07a;hb=91e412240c9fec18eef9534ed407aeac0e879f9e;hpb=1482c1237c796e651d36f1c8535418c66b9c68ed diff --git a/grml-debootstrap b/grml-debootstrap index b11ee7c..9bda8e3 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -11,7 +11,7 @@ set -e # exit on any error # variables {{{ PN="$(basename $0)" -VERSION='0.27' +VERSION='0.28' MNTPOINT="/mnt/debootstrap.$$" # inside the chroot system locales might not be available, so use minimum: @@ -39,9 +39,11 @@ Bootstrap options: -m, --mirror Mirror which should be used for apt-get/aptitude. -i, --iso Mountpoint where a Debian ISO is mounted to, for use instead of fetching packages from a mirror. - -r, --release Release of new Debian system (default: stable). - -t, --target Target partition (/dev/...) or directory. - -p, --mntpoint Mountpoint used for mounting the target system. + -r, --release Release of new Debian system (default: lenny). + -t, --target Target partition (/dev/...) or directory where the + system should be installed to. + -p, --mntpoint Mountpoint used for mounting the target system, + has no effect if -t is given and represents a directory. --debopt Extra parameters passed to the debootstrap command. --interactive Use interactive mode (frontend). --nodebootstrap Skip debootstrap, only do configuration to the target. @@ -491,10 +493,11 @@ else # if not running automatic installation display configuration and prompt fo echo echo " Target: $TARGET" case "$MNTPOINT" in "$TARGET") ;; *) echo " Mount point: $MNTPOINT" ;; esac - [ -n "$GRUB" ] && echo " Install grub: $GRUB" || echo " Install grub: no" - [ -n "$RELEASE" ] && echo " Using release: $RELEASE" - [ -n "$MIRROR" ] && echo " Using mirror: $MIRROR" - [ -n "$ISO" ] && echo " Using ISO: $ISO" + [ -n "$GRUB" ] && echo " Install grub: $GRUB" || echo " Install grub: no" + [ -n "$RELEASE" ] && echo " Using release: $RELEASE" + [ -n "$MIRROR" ] && echo " Using mirror: $MIRROR" + [ -n "$HOSTNAME" ] && echo " Using hostname: $HOSTNAME" + [ -n "$ISO" ] && echo " Using ISO: $ISO" case "$MNTPOINT" in "$TARGET") ;; *) echo " Important! Continuing will delete all data from ${TARGET}!" ;; esac echo einfon "Is this ok for you? [y/N] " @@ -637,7 +640,12 @@ bailout(){ [ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount /proc 1>/dev/null 2>&1 [ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount /proc 1>/dev/null 2>&1 [ -d "$MNTPOINT/$ISODIR" ] && umount "$MNTPOINT/$ISODIR" 1>/dev/null 2>&1 - einfo "Unmounting $MNTPOINT" ; umount "$MNTPOINT" ; eend $? + + if [ -n "$DIRECTORY" ] ; then + einfo "Not unmounting $MNTPOINT as you requested me to install into a directory of your own choice." ; eend 0 + else + einfo "Unmounting $MNTPOINT" ; umount "$MNTPOINT" ; eend $? + fi if [ -n "$STAGES" ] ; then echo -n "Removing stages directory ${STAGES}: " @@ -675,16 +683,21 @@ stage() { # create filesystem {{{ mkfs() { - if grep -q $TARGET /proc/mounts ; then - eerror "$TARGET already mounted, exiting to avoid possible damage. (Manually unmount $TARGET)" ; eend 1 - exit 1 - fi + if [ -n "$DIRECTORY" ] ; then + einfo "Running grml-debootstrap on a directory, skipping mkfs stage." + else + if grep -q "$TARGET" /proc/mounts ; then + eerror "$TARGET already mounted, exiting to avoid possible damage. (Manually unmount $TARGET)" ; eend 1 + exit 1 + fi + + if [ -n "$MKFS" ] ; then + einfo "Running $MKFS on $TARGET" + $MKFS $TARGET + TARGET_UUID="$(vol_id -u $TARGET 2>/dev/null || echo '')" + eend $? + fi - if [ -n "$MKFS" ] ; then - einfo "Running $MKFS on $TARGET" - $MKFS $TARGET - TARGET_UUID="$(vol_id -u $TARGET 2>/dev/null || echo '')" - eend $? fi } # }}} @@ -724,14 +737,14 @@ mount_target() { # install main chroot {{{ debootstrap_system() { - if ! grep -q $MNTPOINT /proc/mounts ; then + if ! grep -q "$MNTPOINT" /proc/mounts ; then mount_target fi if [ "$_opt_nodebootstrap" ]; then einfo "Skipping debootstrap as requested." return fi - if grep -q $MNTPOINT /proc/mounts || [ -n "$DIRECTORY" ] ; then + if grep -q "$MNTPOINT" /proc/mounts || [ -n "$DIRECTORY" ] ; then einfo "Running $DEBOOTSTRAP $DEBOOTSTRAP_OPT for release ${RELEASE}${ARCHINFO} using ${MIRROR}${ISO}" [ -n "$MIRROR" ] && $DEBOOTSTRAP $ARCHCMD $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $MIRROR || \ $DEBOOTSTRAP $ARCHCMD $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $ISO @@ -767,7 +780,7 @@ preparechroot() { cp $VERBOSE $CONFFILES/chroot-script $MNTPOINT/bin/chroot-script chmod 755 $MNTPOINT/bin/chroot-script - mkdir $MNTPOINT/etc/debootstrap/ + [ -d "$MNTPOINT"/etc/debootstrap/ ] || mkdir "$MNTPOINT"/etc/debootstrap/ # make sure we have our files for later use via chroot-script cp $VERBOSE $CONFFILES/config $MNTPOINT/etc/debootstrap/ @@ -897,6 +910,7 @@ umount_chroot() { eend $? fi fi + if grep -q "$MNTPOINT" /proc/mounts ; then if [ -n "$PARTITION" ] ; then einfo "Unmount $MNTPOINT"