X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=10dbb5b83f32b6d8eaec0ab042b6c2e876d9343e;hp=a67e260b1c46051a1882b5b8542355e924678e38;hb=d588c3ae1d3aac0c0deccd25fdce37930e9d1019;hpb=4040ae3e3763818f6002af85aec8e9ed7c905c56 diff --git a/grml-debootstrap b/grml-debootstrap index a67e260..10dbb5b 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -11,7 +11,7 @@ set -e # exit on any error # variables {{{ PN="$(basename $0)" -VERSION='0.23' +VERSION='0.24' MNTPOINT="/mnt/debootstrap.$$" # inside the chroot system locales might not be available, so use minimum: @@ -36,47 +36,43 @@ Usage: $PN [options] Bootstrap options: - -m, --mirror=URL Mirror which should be used for apt-get/aptitude. - -i, --iso=mnt Mountpoint where a Debian ISO is mounted to, for use + -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=name Release of new Debian system (default: stable). - -t, --target=target Target partition (/dev/...) or directory. - -p, --mntpoint=mnt Mountpoint used for mounting the target system. - --debopt=params Extra parameters passed to the debootstrap. + -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. --interactive Use interactive mode (frontend). --nodebootstrap Skip debootstrap, only do configuration to the target. - --groot=device Root device for usage in grub, corresponds with + --groot Root device for usage in grub, corresponds with \$TARGET in grub syntax, like hd0,0 for /dev/sda1. - --grub=device Target for grub installation. Use grub syntax for + --grub Target for grub installation. Use grub syntax for specifying, like hd0 for /dev/sda. Configuration options: - -c, --config=file Use specified configuration file, defaults to + -c, --config Use specified configuration file, defaults to /etc/debootstrap/config - -d, --confdir=path Place of config files for debootstrap, defaults + -d, --confdir Place of config files for debootstrap, defaults to /etc/debootstrap - --packages[=f] Install packages defined in /packages. - Option arg: alternative package list file. - --debconf[=f] Pre-seed packages using /debconf-selections. - Option arg: alternative pre-seed db file. + --packages Install packages defined in specified list file. + --debconf Pre-seed packages using specified pre-seed db file. --keep_src_list Do not overwrite user provided apt sources.list. - --hostname=name Hostname of Debian system. - --password=pwd Use specified password as password for user root. - --bootappend=line Add specified appendline to kernel whilst booting. - --chroot-scripts[=f] Execute scripts from /chroot-scripts/ - Option arg: alternative chroot-scripts directory. - --scripts[=d] Execute scripts from /scripts/. - Option arg: alternative scripts directory. + --hostname Hostname of Debian system. + --password Use specified password as password for user root. + --bootappend Add specified appendline to kernel whilst booting. + --chroot-scripts Execute chroot scripts from specified directory. + --scripts Execute scripts from specified directory. Other options: - -v, --verbose Increase verbosity. - -h, --help Print this usage information and exit. - -V, --version Show summary of options and exit. + -v, --verbose Increase verbosity. + -h, --help Print this usage information and exit. + -V, --version Show summary of options and exit. Usage examples can be found in the grml-debootstrap manpage. -Send bugreports to the grml-team: bugs@grml.org || http://grml.org/bugs/ +Send bugreports to the grml-team: bugs (at) grml.org || http://grml.org/bugs/ " } @@ -272,7 +268,7 @@ prompt_for_hostname() { HOSTNAME="$(dialog --stdout --title "${PN}" --inputbox \ "Please enter the hostname you would like to use for installation:" \ - 0 0 grml)" + 0 0 $HOSTNAME)" } # }}} @@ -302,7 +298,7 @@ prompt_for_mirror() { MIRROR="$(dialog --stdout --title "${PN}" --inputbox \ "Please enter Debian mirror you would like to use for installing packages." \ - 0 0 http://ftp.de.debian.org/debian)" + 0 0 $MIRROR)" } # }}} @@ -741,6 +737,7 @@ preparechroot() { [ -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 [ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD=$ROOTPASSWORD" >> $CHROOT_VARIABLES [ -n "$TARGET" ] && echo "TARGET=$TARGET" >> $CHROOT_VARIABLES [ -n "$TARGET_UUID" ] && echo "TARGET_UUID=$TARGET_UUID" >> $CHROOT_VARIABLES @@ -767,9 +764,11 @@ preparechroot() { cp $VERBOSE $_opt_debconf $MNTPOINT/etc/debootstrap/debconf-selections # copy scripts that should be executed inside the chroot: - _opt_chroot_scripts=${_opt_chroot_scripts:-$CONFFILES/chroot_scripts/} - [ -f $_opt_chroot_scripts -a "$CHROOT_SCRIPTS" = 'yes' ] && \ - cp -a $VERBOSE $_opt_chroot_scripts $MNTPOINT/etc/debootstrap/ + _opt_chroot_scripts=${_opt_chroot_scripts:-$CONFFILES/chroot-scripts/} + [ -d $_opt_chroot_scripts -a "$CHROOT_SCRIPTS" = 'yes' ] && { + mkdir -p $MNTPOINT/etc/debootstrap/chroot-scripts + cp -a $VERBOSE $_opt_chroot_scripts/* $MNTPOINT/etc/debootstrap/chroot-scripts/ + } # notice: do NOT use $CHROOT_VARIABLES inside chroot but statically file instead! cp $VERBOSE $CHROOT_VARIABLES $MNTPOINT/etc/debootstrap/variables @@ -782,7 +781,6 @@ preparechroot() { # provide system's /etc/hosts to the target: if ! [ -f "$MNTPOINT/etc/hosts" ] ; then cp $VERBOSE /etc/hosts $MNTPOINT/etc/hosts - sed -i "s#127.0.0.1 .*#127.0.0.1 localhost $HOSTNAME#" /etc/hosts fi # setup default locales @@ -812,8 +810,9 @@ preparechroot() { # execute all scripts in /etc/debootstrap/scripts/ {{{ execute_scripts() { - if [ -f $_opt_scripts -a "$SCRIPTS" = 'yes' ] ; then - for script in /etc/debootstrap/scripts/* ; do + if [ -d "$_opt_scripts" ] || [ "$SCRIPTS" = 'yes' ] ; then + [ -d "$_opt_scripts" ] && scripts="$_opt_scripts" || scripts="$CONFFILES/scripts/" + for script in ${scripts}/* ; do if [ -x "$script" ] ; then einfo "Executing script $script" $script ; eend $?