X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=23cf187cee819644f6cddd869f333bebdfdbd1e0;hp=761945d94a84d55f36e6f019bc960c0e7ea9f12a;hb=1c65ca6d6854e48535f9b18a5d6f3e82606c433f;hpb=edb714ea01d5094f37966a00fd279f8c97b504e7 diff --git a/grml-debootstrap b/grml-debootstrap index 761945d..23cf187 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: @@ -42,7 +42,7 @@ Bootstrap options: -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. - --debopt Extra parameters passed to the debootstrap. + --debopt Extra parameters passed to the debootstrap command. --interactive Use interactive mode (frontend). --nodebootstrap Skip debootstrap, only do configuration to the target. --groot Root device for usage in grub, corresponds with @@ -298,9 +298,25 @@ prompt_for_password() # ask for Debian mirror {{{ prompt_for_mirror() { - MIRROR="$(dialog --stdout --title "${PN}" --inputbox \ - "Please enter Debian mirror you would like to use for installing packages." \ - 0 0 $MIRROR)" + [ -n "$ISO" ] && DEFAULT_MIRROR='local' || DEFAULT_MIRROR='net' + + CHOOSE_MIRROR=$(dialog --stdout --title "$PN" --default-item $DEFAULT_MIRROR \ + --menu "Where do you want to install from?" 0 0 0 \ + net "install via network (downloading from mirror)" \ + local "install from local directory/mirror" + ) + + if [ "$CHOOSE_MIRROR" = 'net' ] ; then + [ -n "$MIRROR" ] || MIRROR='ftp://ftp.de.debian.org/debian' + 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 + [ -n "$ISO" ] || ISO='/mnt/mirror' + ISO="$(dialog --stdout --title "${PN}" --inputbox \ + "Please enter directory name you would like to use for installing packages." \ + 0 0 $ISO)" + fi } # }}} @@ -460,6 +476,8 @@ elif [ -n "$INTERACTIVE" ] ; then Using hostname $HOSTNAME" [ -n "$MIRROR" ] && INFOTEXT="$INFOTEXT Using mirror: $MIRROR" + [ -n "$ISO" ] && INFOTEXT="$INFOTEXT + Using ISO: $ISO" INFOTEXT="$INFOTEXT @@ -476,7 +494,7 @@ else # if not running automatic installation display configuration and prompt fo [ -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 "$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] " @@ -496,8 +514,7 @@ interactive_mode() prompt_for_swraid - # do not prompt for partition dialog if swraid has been configured already - [ -n "$TARGET" ] || prompt_for_target + prompt_for_target prompt_for_bootmanager @@ -658,6 +675,11 @@ 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 "$MKFS" ] ; then einfo "Running $MKFS on $TARGET" $MKFS $TARGET @@ -683,7 +705,7 @@ mount_target() { einfo "Running grml-debootstrap on a directory, nothing to mount." else if grep -q $TARGET /proc/mounts ; then - eerror "$TARGET already mounted, exiting." + ewarn "$TARGET already mounted, continuing anyway." ; eend 0 else [ -d "$MNTPOINT" ] || mkdir -p "$MNTPOINT" einfo "Mounting $TARGET to $MNTPOINT"