X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=809e9e45de3aca2f2beaaccafb7d53567cf13289;hp=86923ea19c6bf5c57e0ba7a3fef7f58ab4433b15;hb=cd3d55ee26fe37bf59927e9b6526a5db329e72a0;hpb=aaa4b0e3748c67c5f68a24af4ce1db79ad07a878 diff --git a/grml-debootstrap b/grml-debootstrap index 86923ea..809e9e4 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -11,6 +11,7 @@ set -e # exit on any error # variables {{{ PN="$(basename $0)" +prog_real=`readlink -f -- $0` VERSION='0.23' MNTPOINT="/mnt/debootstrap.$$" @@ -34,26 +35,42 @@ usage() { Usage: $PN [options] - -h|--help Print this usage information and exit. - -v|--version Show summary of options and exit. - - -c|--config Use specified configuration file, - defaults to /etc/debootstrap/config - --hostname Hostname of Debian system - -i|--iso Mountpoint where a Debian ISO is mounted to, - for use instead of fetching packages from a mirror - -m|--mirror Mirror which should be used for apt-get/aptitude. - -p|--mntpoint Mountpoint used for mounting the target system. - -r|--release Release of new Debian system (default: stable) - -t|--target Target partition (/dev/...) or directory. - - --boot_append Add specified appendline to kernel whilst booting - --groot Root device for usage in grub, corresponds with - \$TARGET in grub syntax, like hd0,0 for /dev/sda1 - --grub Target for grub installation. Use grub syntax - for specifying, like hd0 for /dev/sda - --interactive Use interactive mode (frontend) - --password Use specified password as password for user root. +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 + 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. + --interactive Use interactive mode (frontend). + +Configuration options: + + + -d, --confdir=path Place of config files for debootstrap, defaults to + /etc/debootstrap + -c, --config=file Use specified configuration file, defaults to + /config + --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. + --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. + --groot=device 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 + specifying, like hd0 for /dev/sda. + +Other options: + + -h, --help Print this usage information and exit. + -v, --version Show summary of options and exit. Send bugreports to the grml-team: bugs@grml.org || http://grml.org/bugs/ " @@ -84,73 +101,40 @@ fi # }}} # cmdline handling {{{ +# source external command line parameter-processing script +. $prog_real.clp + +# business-logic of command line parameter-processing +[ "$_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_confdir" ] && CONFFILES=$_opt_confdir +[ "$_opt_config" ] && CONFIGFILE=$_opt_config +[ "$_opt_packages_set" ] && PACKAGES='yes' +[ "$_opt_debconf_set" ] && DEBCONF='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_help" ] && { + usage ; eend 0 + eend 0 + exit 0 +} -while [ "$#" -gt "0" ] ; do - case $1 in - -c|--config) - shift - CONFIGFILE=$1 - ;; - --grub) - shift - GRUB=$1 - ;; - --groot) - shift - GROOT=$1 - ;; - -h|--help) - usage ; eend 0 - eend 0 - exit 0 - ;; - --hostname) - shift - HOSTNAME=$1 - ;; - --interactive) - INTERACTIVE=1 - ;; - -i|--iso) - shift - [ -n "$MIRROR" ] && unset MIRROR - ISO=$1 - ;; - -m|--mirror) - shift - MIRROR=$1 - CHROOTMIRROR=$1 - ;; - -p|--mntpoint) - shift - MNTPOINT=$1 - ;; - --password) - shift - ROOTPASSWORD=$1 - ;; - -r|--release) - shift - RELEASE=$1 - ;; - -t|--target) - shift - TARGET=$1 - ;; - -v|--version) - einfo "$PN - version $VERSION" - einfo "Send bug reports to bugs@grml.org or http://grml.org/bugs/" - eend 0 - exit 0 - ;; - *) - eerror "Syntax error." - usage ; eend 1 - exit 1 - ;; - esac - shift -done +[ "$_opt_version" ] && { + einfo "$PN - version $VERSION" + einfo "Send bug reports to bugs@grml.org or http://grml.org/bugs/" + eend 0 + exit 0 +} # }}} # welcome screen {{{ @@ -739,14 +723,16 @@ preparechroot() { sed -i "s#GRUB=.*#GRUB=\"$GRUB\"#" $MNTPOINT/etc/debootstrap/config sed -i "s#GROOT=.*#GROOT=\"$GROOT\"#" $MNTPOINT/etc/debootstrap/config - cp /etc/debootstrap/packages $MNTPOINT/etc/debootstrap/packages - [ -f /etc/debootstrap/debconf-selections -a "$DEBCONF" = 'yes' ] && \ - cp /etc/debootstrap/debconf-selections $MNTPOINT/etc/debootstrap/ + cp ${_opt_packages:-/etc/debootstrap/packages} \ + $MNTPOINT/etc/debootstrap/packages + _opt_debconf=${_opt_debconf:-/etc/debootstrap/debconf-selections} + [ -f $_opt_debconf -a "$DEBCONF" = 'yes' ] && \ + cp $_opt_debconf $MNTPOINT/etc/debootstrap/debconf-selections # notice: do NOT use $CHROOT_VARIABLES inside chroot but statically file instead! cp $CHROOT_VARIABLES $MNTPOINT/etc/debootstrap/variables - cp -a /etc/debootstrap/extrapackages/ $MNTPOINT/etc/debootstrap/ + cp -a -L /etc/debootstrap/extrapackages/ $MNTPOINT/etc/debootstrap/ # make sure we can access network [relevant for cdebootstrap] [ -f "$MNTPOINT/etc/resolv.conf" ] || cp /etc/resolv.conf $MNTPOINT/etc/resolv.conf