X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=chroot-script;h=b5f1abe3c7e551f0c884db7809c2fac0e7873b88;hp=f221d500aa4eccae6760becbd62936057b5ece56;hb=8e9c9cb1f148d1eac5bcea9f5f325a72d219df86;hpb=df0f07e25b7de55740c79376b65cf962ffb3833f diff --git a/chroot-script b/chroot-script index f221d50..b5f1abe 100755 --- a/chroot-script +++ b/chroot-script @@ -36,14 +36,17 @@ stage() { echo "$2" > "$STAGES/$1" return 0 elif grep -q done "$STAGES/$1" 2>/dev/null ; then - echo "[*] Notice: stage $1 has been executed already, skipping execution therefore.">&2 + echo " [*] Notice: stage $1 has been executed already, skipping execution therefore.">&2 return 1 fi + echo " Executing stage ${1}" + return 0 } # }}} # define chroot mirror {{{ chrootmirror() { + [ -n "$KEEP_SRC_LIST" ] && return if [ -n "$ISO" ] ; then echo "deb $ISO $RELEASE main contrib" > /etc/apt/sources.list [ -n "$CHROOTMIRROR" ] && echo "deb $CHROOTMIRROR $RELEASE main contrib non-free" >> /etc/apt/sources.list @@ -58,7 +61,9 @@ chrootmirror() { # set up grml repository {{{ grmlrepos() { if [ -n "$GRMLREPOS" ] ; then - cat >> /etc/apt/sources.list << EOF + # user might have provided their own apt sources.list + if ! grep -q grml /etc/apt/sources.list 2>/dev/null ; then + cat >> /etc/apt/sources.list << EOF # grml: stable repository: deb http://deb.grml.org/ grml-stable main @@ -69,6 +74,8 @@ grmlrepos() { deb-src http://deb.grml.org/ grml-testing main EOF + fi + # make sure we have the keys available for aptitude gpg --keyserver subkeys.pgp.net --recv-keys F61E2E7CECDEA787 gpg --export F61E2E7CECDEA787 | apt-key add - || /bin/true # not yet sure @@ -133,8 +140,10 @@ EOF packages() { # Pre-seed the debconf database with answers. Each question will be marked # as seen to prevent debconf from asking the question interactively. - [ -f /etc/debootstrap/debconf-selections ] && \ + [ -f /etc/debootstrap/debconf-selections ] && { + echo "Preseeding the debconf database, some lines might be skipped..." cat /etc/debootstrap/debconf-selections | debconf-set-selections + } if [ "$PACKAGES" = 'yes' ] ; then if ! [ -r /etc/debootstrap/packages ] ; then @@ -249,7 +258,7 @@ hosts() { # set up /etc/network/interfaces {{{ interfaces() { - if ! [ -r /etc/network/interfaces ] ; then + if ! [ -r /etc/network/interfaces ] || ! grep -q "auto lo" /etc/network/interfaces ; then echo "Setting up /etc/network/interfaces" cat >> /etc/network/interfaces << EOF @@ -317,6 +326,11 @@ hostname() { if [ -n "$HOSTNAME" ] ; then echo "Setting hostname to ${HOSTNAME}." echo "$HOSTNAME" > /etc/hostname + + # adjust postfix configuration + if [ -r /etc/postfix/main.cf ] ; then + sed -i "s/grml/$HOSTNAME/g" /etc/postfix/main.cf + fi fi } # }}} @@ -381,6 +395,17 @@ grub() { } # }}} +# execute all scripts present in /etc/debootstrap/chroot-scripts/ {{{ +custom_scripts() { + [ -d /etc/debootstrap/chroot-scripts/ ] || return 0 + + for script in /etc/debootstrap/chroot-scripts/* ; do + echo "Executing script $script" + $script && echo "done" || echo "failed" + done +} +# }}} + # make sure we don't have any running processes left {{{ services() { for service in ssh mdadm mdadm-raid ; do @@ -406,11 +431,13 @@ finalize() { # execute the functions {{{ for i in chrootmirror grmlrepos kernelimg_conf makedev install_policy_rcd \ packages extrapackages mkinitrd kernel reconfigure hosts interfaces \ - timezone fstab hostname initrd grub passwords services finalize ; do - if stage $i ; then + timezone fstab hostname initrd grub passwords custom_scripts services ; do + if stage $i ; then $i && stage $i done || exit 1 - fi + fi done + # always execute the finalize stage: + finalize # }}} # finally exit the chroot {{{