X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=26ddbf7c13558dcdb31ca21f79841fa52115d170;hp=10dbb5b83f32b6d8eaec0ab042b6c2e876d9343e;hb=e2272afc468270922a68d0a091ec550e8e14bb6e;hpb=d588c3ae1d3aac0c0deccd25fdce37930e9d1019 diff --git a/grml-debootstrap b/grml-debootstrap index 10dbb5b..26ddbf7 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -11,7 +11,7 @@ set -e # exit on any error # variables {{{ PN="$(basename $0)" -VERSION='0.24' +VERSION='0.27' MNTPOINT="/mnt/debootstrap.$$" # inside the chroot system locales might not be available, so use minimum: @@ -129,25 +129,25 @@ fi } # }}} -[ "$_opt_mirror" ] && MIRROR=$_opt_mirror -[ "$_opt_iso" ] && ISO=$_opt_iso -[ "$_opt_release" ] && RELEASE=$_opt_release -[ "$_opt_target" ] && TARGET=$_opt_target -[ "$_opt_mntpoint" ] && MNTPOINT=$_opt_mntpoint -[ "$_opt_debopt" ] && DEBOOTSTRAP_OPT=$_opt_debopt -[ "$_opt_interactive" ] && INTERACTIVE=1 -[ "$_opt_config" ] && CONFIGFILE=$_opt_config -[ "$_opt_packages_set" ] && PACKAGES='yes' -[ "$_opt_debconf_set" ] && DEBCONF='yes' +[ "$_opt_mirror" ] && MIRROR=$_opt_mirror +[ "$_opt_iso" ] && ISO=$_opt_iso +[ "$_opt_release" ] && RELEASE=$_opt_release +[ "$_opt_target" ] && TARGET=$_opt_target +[ "$_opt_mntpoint" ] && MNTPOINT=$_opt_mntpoint +[ "$_opt_debopt" ] && DEBOOTSTRAP_OPT=$_opt_debopt +[ "$_opt_interactive" ] && INTERACTIVE=1 +[ "$_opt_config" ] && CONFIGFILE=$_opt_config +[ "$_opt_packages_set" ] && PACKAGES='yes' +[ "$_opt_debconf_set" ] && DEBCONF='yes' [ "$_opt_scripts_set" ] && SCRIPTS='yes' [ "$_opt_chroot_scripts_set" ] && CHROOT_SCRIPTS='yes' -[ "$_opt_keep_src_list" ] && KEEP_SRC_LIST='yes' -[ "$_opt_hostname" ] && HOSTNAME=$_opt_hostname -[ "$_opt_password" ] && ROOTPASSWORD=$_opt_password -[ "$_opt_bootappend" ] && BOOT_APPEND=$_opt_bootappend -[ "$_opt_groot" ] && GROOT=$_opt_groot -[ "$_opt_grub" ] && GRUB=$_opt_grub -[ "$_opt_verbose" ] && VERBOSE="-v" +[ "$_opt_keep_src_list" ] && KEEP_SRC_LIST='yes' +[ "$_opt_hostname" ] && HOSTNAME=$_opt_hostname +[ "$_opt_password" ] && ROOTPASSWORD=$_opt_password +[ "$_opt_bootappend" ] && BOOT_APPEND=$_opt_bootappend +[ "$_opt_groot" ] && GROOT=$_opt_groot +[ "$_opt_grub" ] && GRUB=$_opt_grub +[ "$_opt_verbose" ] && VERBOSE="-v" [ "$_opt_help" ] && { usage ; eend 0 @@ -177,7 +177,7 @@ prompt_for_target() AVAILABLE_PARTITIONS=$(LANG=C fdisk -l 2>/dev/null | \ sed 's/*//' | \ grep -v 'Extended$' | \ - gawk -v num=0 -v ORS=' ' '/^\/dev\// {print $1}') + gawk -v num=0 -v ORS=' ' '/^\/dev\// {print $1}'; echo /dev/md*); if [ -z "$AVAILABLE_PARTITIONS" ] ; then dialog --title "$PN" --trim \ @@ -254,12 +254,14 @@ prompt_for_bootmanager() # ask for Debian release {{{ prompt_for_release() { - RELEASE="$(dialog --stdout --title "${PN}" --default-item etch --menu \ + [ -n "$RELEASE" ] && DEFAULT_RELEASE="$RELEASE" || DEFAULT_RELEASE='lenny' + RELEASE="$(dialog --stdout --title "${PN}" --default-item $DEFAULT_RELEASE --menu \ "Please enter the Debian release you would like to use for installation:" \ - 0 50 3 \ - etch Debian/stable \ - lenny Debian/testing \ - sid Debian/unstable)" + 0 50 4 \ + etch Debian/old-stable \ + lenny Debian/stable \ + squeeze Debian/testing \ + sid Debian/unstable)" } # }}} @@ -296,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 } # }}} @@ -423,6 +441,19 @@ fi } # }}} +# user should recheck his configuration {{{ +# support full automatic installation: +checkforrun() { + dialog --timeout 10 --title "$PN" \ + --yesno "Do you want to stop at this stage? + +Notice: you are running ${PN} in non-interactive mode. +${PN} will install Debian ${RELEASE} on ${TARGET}. +Last chance to quit. Timeout of 10 seconds running.... + +Do you want to stop now?" 0 0 2>/dev/null +} + # make sure the user is aware of the used configuration {{{ checkconfiguration() { @@ -445,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 @@ -461,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] " @@ -481,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 @@ -508,8 +540,6 @@ interactive_mode() fi prompt_for_mirror - - checkconfiguration } # run interactive mode if we didn't get the according configuration yet @@ -520,6 +550,8 @@ if [ -z "$TARGET" -o -n "$INTERACTIVE" ] ; then fi # }}} +checkconfiguration + # finally make sure at least $TARGET is set [the partition for the new system] {{{ if [ -n "$TARGET" ] ; then SHORT_TARGET="${TARGET##*/}" @@ -641,19 +673,6 @@ stage() { } # }}} -# user should recheck his configuration {{{ -# support full automatic installation: -checkforrun() { - dialog --timeout 10 --title "$PN" \ - --yesno "Do you want to stop at this stage? - -Notice: you are running ${PN} in non-interactive mode. -${PN} will install Debian ${RELEASE} on ${TARGET}. -Last chance to quit. Timeout of 10 seconds running.... - -Do you want to stop now?" 0 0 2>/dev/null -} - # create filesystem {{{ mkfs() { if [ -n "$MKFS" ] ; then @@ -734,7 +753,6 @@ preparechroot() { [ -n "$HOSTNAME" ] && echo "HOSTNAME=$HOSTNAME" >> $CHROOT_VARIABLES [ -n "$ISODIR" ] && echo "ISODIR=$ISO" >> $CHROOT_VARIABLES [ -n "$ISO" ] && echo "ISO=$ISO" >> $CHROOT_VARIABLES - [ -n "$MIRROR" ] && echo "CHROOTMIRROR=$MIRROR" >> $CHROOT_VARIABLES [ -n "$MIRROR" ] && echo "MIRROR=$MIRROR" >> $CHROOT_VARIABLES [ -n "$KEEP_SRC_LIST" ] && echo "KEEP_SRC_LIST=$KEEP_SRC_LIST" >> $CHROOT_VARIABLES [ -n "$PACKAGES" ] && echo "PACKAGES=$PACKAGES" >> $CHROOT_VARIABLES @@ -810,6 +828,8 @@ preparechroot() { # execute all scripts in /etc/debootstrap/scripts/ {{{ execute_scripts() { + # make sure we have $MNTPOINT available for our scripts + export MNTPOINT if [ -d "$_opt_scripts" ] || [ "$SCRIPTS" = 'yes' ] ; then [ -d "$_opt_scripts" ] && scripts="$_opt_scripts" || scripts="$CONFFILES/scripts/" for script in ${scripts}/* ; do