From: Michael Prokop Date: Thu, 20 Nov 2008 13:39:21 +0000 (+0100) Subject: Merge branch 'chrootscripts' X-Git-Tag: v0.23~11 X-Git-Url: https://git.grml.org/?a=commitdiff_plain;ds=inline;h=0bb99ec2af1e4383ed819715481257b2ca77d5cd;hp=-c;p=grml-debootstrap.git Merge branch 'chrootscripts' --- 0bb99ec2af1e4383ed819715481257b2ca77d5cd diff --combined grml-debootstrap index 984aa1a,a67e260..7b1bc72 --- a/grml-debootstrap +++ b/grml-debootstrap @@@ -45,34 -45,37 +45,37 @@@ Bootstrap options --debopt=params Extra parameters passed to the debootstrap. --interactive Use interactive mode (frontend). --nodebootstrap Skip debootstrap, only do configuration to the target. - - Configuration options: - - - -c, --config=file Use specified configuration file, defaults to - /etc/debootstrap/config - -d, --confdir=path 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. - --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. + \$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. + Configuration options: + + -c, --config=file Use specified configuration file, defaults to + /etc/debootstrap/config + -d, --confdir=path 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. + --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. + Other options: -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/ " } @@@ -104,7 -107,14 +107,14 @@@ f # cmdline handling {{{ # source external command line parameter-processing script - . /usr/share/grml-debootstrap/functions/cmdlineopts.clp + if [ -r /usr/share/grml-debootstrap/functions/cmdlineopts.clp ] ; then + . /usr/share/grml-debootstrap/functions/cmdlineopts.clp + elif [ -r ./cmdlineopts.clp ] ; then + . ./cmdlineopts.clp + else + echo "Error: cmdline function file not found, exiting.">&2 + exit 1 + fi # == business-logic of command line parameter-processing @@@ -133,6 -143,8 +143,8 @@@ [ "$_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 @@@ -729,7 -741,6 +741,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 @@@ -746,14 -757,22 +758,22 @@@ sed -i "s#GRUB=.*#GRUB=\"$GRUB\"#" $MNTPOINT/etc/debootstrap/config sed -i "s#GROOT=.*#GROOT=\"$GROOT\"#" $MNTPOINT/etc/debootstrap/config + # package selection: cp $VERBOSE ${_opt_packages:-$CONFFILES/packages} \ $MNTPOINT/etc/debootstrap/packages + + # debconf preseeding: _opt_debconf=${_opt_debconf:-$CONFFILES/debconf-selections} [ -f $_opt_debconf -a "$DEBCONF" = 'yes' ] && \ 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/ + # notice: do NOT use $CHROOT_VARIABLES inside chroot but statically file instead! - cp $VERBOSE $CHROOT_VARIABLES $MNTPOINT/etc/debootstrap/variables + cp $VERBOSE $CHROOT_VARIABLES $MNTPOINT/etc/debootstrap/variables cp $VERBOSE -a -L $CONFFILES/extrapackages/ $MNTPOINT/etc/debootstrap/ @@@ -791,6 -810,19 +811,19 @@@ } # }}} + # 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 [ -x "$script" ] ; then + einfo "Executing script $script" + $script ; eend $? + fi + done + fi + } + # }}} + # execute chroot-script {{{ chrootscript() { if ! [ -r "$MNTPOINT/bin/chroot-script" ] ; then @@@ -864,7 -896,8 +897,8 @@@ fscktool() # now execute all the functions {{{ for i in mkfs tunefs mount_target debootstrap_system preparechroot \ - chrootscript grub_install umount_chroot fscktool ; do + chrootscript execute_scripts grub_install umount_chroot \ + fscktool ; do if stage "${i}" ; then $i && ( stage "${i}" done && rm -f "${STAGES}/${i}" ) || bailout 2 "i" fi