From: Michael Prokop Date: Tue, 10 Apr 2007 09:11:18 +0000 (+0200) Subject: Rewrite code into seperate function() X-Git-Tag: 0.6~7 X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=commitdiff_plain;h=62bac19425425e3f5d8481563d1dc6f2caeaf73e Rewrite code into seperate function() --- diff --git a/chroot-script b/chroot-script index f735d40..ee6fbb0 100644 --- a/chroot-script +++ b/chroot-script @@ -4,152 +4,166 @@ # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Mon Apr 09 23:27:30 CEST 2007 [mika] +# Latest change: Die Apr 10 11:11:02 CEST 2007 [mika] ################################################################################ set -e # exit on any error . /etc/debootstrap/config || exit 1 +[ -r /proc/1 ] || mount -t proc none /proc + +# variable checks {{{ if [ -z "$STAGES" ] ; then STAGES='/etc/debootstrap/stages' [ -d "$STAGES" ] || mkdir -p "$STAGES" fi +# }}} +# helper functions {{{ stage() { - # error handling - if [ -z "$1" ] ; then - eerror 'Error: stage() requires at least one argument.' - eend 1 - return 1 - fi - if [ -z "$STAGES" ] ; then - eerror 'Error: $STAGES not set.' - eend 1 - return 1 - fi - # main function if grep -q done "$STAGES/$1" 2>/dev/null ; then ewarn "Notice: stage $1 has been executed already, skipping execution therefore." ; eend 0 + return 1 else echo "$2" > "$STAGES/$1" + return 0 fi } +# }}} -[ -r /proc/1 ] || mount -t proc none /proc - -if [ -n "$CHROOTMIRROR" ] ; then - stage chrootmirror - echo "deb $CHROOTMIRROR $RELEASE main contrib non-free" > /etc/apt/sources.list - stage chrootmirror done -fi +# define chroot mirror {{{ +chrootmirror() { + if [ -n "$CHROOTMIRROR" ] ; then + echo "deb $CHROOTMIRROR $RELEASE main contrib non-free" > /etc/apt/sources.list + fi +} +# }}} -if [ -n "$GRMLREPOS" ] ; then - stage grmlrepos - echo 'deb http://grml.org/repos/ ./' >> /etc/apt/sources.list - stage grmlrepos done -fi +# set up grml repository {{{ +grmlrepos() { + if [ -n "$GRMLREPOS" ] ; then + echo 'deb http://grml.org/repos/ ./' >> /etc/apt/sources.list + fi +} +# }}} -if ! [ -r /etc/kernel-img.conf ] ; then - stage kernelimg.conf - echo "Setting up /etc/kernel-img.conf" - cat > /etc/kernel-img.conf << EOF +# set up kernel-img.conf {{{ +kernelimg_conf() { + if ! [ -r /etc/kernel-img.conf ] ; then + echo "Setting up /etc/kernel-img.conf" + cat > /etc/kernel-img.conf << EOF # Kernel Image management overrides # See kernel-img.conf(5) for details do_initrd = Yes do_symlinks = Yes EOF - stage kernelimg.conf done -fi + fi +} +# }}} -# create default devices -if ! [ -r /dev/hda20 ] ; then - stage makedev - echo "Creating generic devices in /dev - this might take a while..." - cd /dev && MAKEDEV generic - stage makedev done -fi +# create default devices {{{ +makedev() { + if ! [ -r /dev/hda20 ] ; then + echo "Creating generic devices in /dev - this might take a while..." + cd /dev && MAKEDEV generic + fi +} +# }}} -# install additional packages -if [ "$PACKAGES" = 'yes' ] ; then - stage packages - if ! [ -r /etc/debootstrap/packages ] ; then - echo "Error: /etc/debootstrap/packages not found, exiting." - exit 1 - else - apt-get update - apt-get --force-yes -y install $(cat /etc/debootstrap/packages) $GRMLPACKAGES - fi - stage packages done -fi +# install additional packages {{{ +packages() { + if [ "$PACKAGES" = 'yes' ] ; then + if ! [ -r /etc/debootstrap/packages ] ; then + echo "Error: /etc/debootstrap/packages not found, exiting." + exit 1 + else + apt-get update + apt-get --force-yes -y install $(cat /etc/debootstrap/packages) $GRMLPACKAGES + fi + fi +} +# }}} -# sarge specific stuff -if [ "$RELEASE" = 'sarge' ] ; then - stage mkinitrd - sed -i "s#ROOT=probe#ROOT=$TARGET#" /etc/mkinitrd/mkinitrd.conf - stage mkinitrd done -fi +# sarge specific stuff: mkinitrd {{{ +mkinitrd() { + if [ "$RELEASE" = 'sarge' ] ; then + sed -i "s#ROOT=probe#ROOT=$TARGET#" /etc/mkinitrd/mkinitrd.conf + fi +} +# }}} -if [ -n "$KERNEL" ] ; then - stage kernel - apt-get update - if [ "$RELEASE" = 'sarge' ] ; then - KERNELPACKAGES="kernel-image-$KERNEL kernel-headers-$KERNEL" - else - KERNELPACKAGES="linux-image-$KERNEL linux-headers-$KERNEL" - fi - apt-get --force-yes -y install $KERNELPACKAGES - stage kernel done -fi +# install kernel packages {{{ +kernel() { + if [ -n "$KERNEL" ] ; then + apt-get update + if [ "$RELEASE" = 'sarge' ] ; then + KERNELPACKAGES="kernel-image-$KERNEL kernel-headers-$KERNEL" + else + KERNELPACKAGES="linux-image-$KERNEL linux-headers-$KERNEL" + fi + apt-get --force-yes -y install $KERNELPACKAGES + fi +} +# }}} -if [ -n "$RECONFIGURE" ] ; then - stage reconfigure - for package in $RECONFIGURE ; do - dpkg --list $package 1>/dev/null 2>/dev/null && dpkg-reconfigure $package || echo "Warning: $package does not exist, can not reconfigure it." - done - stage reconfigure done -fi +# reconfigure packages {{{ +reconfigure() { + if [ -n "$RECONFIGURE" ] ; then + for package in $RECONFIGURE ; do + dpkg --list $package 1>/dev/null 2>/dev/null && dpkg-reconfigure $package || echo "Warning: $package does not exist, can not reconfigure it." + done + fi +} +# }}} -# set password of user root -stage passwords -echo "Activating shadow passwords." -shadowconfig on -echo "Setting password for user root:" -set +e # do not exit if passwd returns error due to missmatching passwords -passwd -echo "" -set -e # restore default behaviour again -stage passwords done - -if ! [ -f /etc/hosts ] ; then - stage hosts - echo "Setting up /etc/hosts" - echo "127.0.0.1 localhost $HOSTNAME" > /etc/hosts - stage hosts done -fi +# set password of user root {{{ +passwords() { + echo "Activating shadow passwords." + shadowconfig on + echo "Setting password for user root:" + set +e # do not exit if passwd returns error due to missmatching passwords + passwd + echo "" + set -e # restore default behaviour again +} +# }}} -if ! [ -f /etc/network/interfaces ] ; then - stage interfaces - echo "Setting up /etc/network/interfaces" - cat >> /etc/network/interfaces << EOF +# set up /etc/hosts {{{ +hosts() { + if ! [ -f /etc/hosts ] ; then + echo "Setting up /etc/hosts" + echo "127.0.0.1 localhost $HOSTNAME" > /etc/hosts + fi +} +# }}} + +# set up /etc/network/interfaces {{{ +interfaces() { + if ! [ -f /etc/network/interfaces ] ; then + echo "Setting up /etc/network/interfaces" + cat >> /etc/network/interfaces << EOF iface lo inet loopback iface eth0 inet dhcp auto lo auto eth0 EOF - stage interfaces done -fi + fi +} +# }}} -# adjust timezone -if [ -n "$TIMEZONE" ] ; then - stage timezone - echo "Adjusting /etc/localtime" - ln -sf /usr/share/zoneinfo/$TIMEZONE /etc/localtime - stage timezone done -fi +# adjust timezone {{{ +timezone() { + if [ -n "$TIMEZONE" ] ; then + echo "Adjusting /etc/localtime" + ln -sf /usr/share/zoneinfo/$TIMEZONE /etc/localtime + fi +} +# }}} +# helper function for fstab() {{{ createfstab(){ - echo "Setting up /etc/fstab" + echo "Setting up /etc/fstab" cat > /etc/fstab << EOF $TARGET / auto defaults,errors=remount-ro 0 1 /sys /sys sysfs rw,nosuid,nodev,noexec 0 0 @@ -163,87 +177,122 @@ proc /proc proc defaults 0 0 # tmpfs /tmp tmpfs size=300M 0 0 EOF } +# }}} -# set up /etc/fstab if file is not present (cdebootstrap) -if [ ! -f /etc/fstab ] ; then - stage fstab - createfstab - stage fstab done -fi +# generate /etc/fstab {{{ +fstab() { + # set up /etc/fstab if file is not present (cdebootstrap) + if [ ! -f /etc/fstab ] ; then + createfstab + fi -# set up /etc/fstab if file is UNCONFIGURED (debootstrap) -if grep -q UNCONFIGURED /etc/fstab ; then - stage fstab - createfstab - stage fstab done -fi + # set up /etc/fstab if file is UNCONFIGURED (debootstrap) + if grep -q UNCONFIGURED /etc/fstab ; then + createfstab + fi +} +# }}} -# set up hostname -if [ -n "$HOSTNAME" ] ; then - stage hostname - echo "Setting hostname to ${HOSTNAME}." - echo "$HOSTNAME" > /etc/hostname - stage hostname done -fi +# set up hostname {{{ +hostname() { + if [ -n "$HOSTNAME" ] ; then + echo "Setting hostname to ${HOSTNAME}." + echo "$HOSTNAME" > /etc/hostname + fi +} +# }}} -# assume the first available kernel as our main kernel -KERNELIMG=$(ls -1 /boot/vmlinuz-* | head -1) -KERNELVER=${KERNELIMG#/boot/vmlinuz-} - -# generate initrd -if [ -n "$INITRD" ] ; then - stage initrd - if [ "$RELEASE" = 'sarge' ] ; then - echo "Release sarge detected, will not create an initrd." - else - echo "Generating initrd." - update-initramfs -c -t -k $KERNELVER - if [ -f "/boot/initrd.img-$KERNELVER" ] ; then - GRUBINITRD="initrd /boot/initrd.img-$KERNELVER" - LILOINITRD=" initrd=/boot/initrd.img-$KERNELVER" - fi - fi - stage initrd done -fi +# generate initrd/initramfs {{{ +initrd() { + # assume the first available kernel as our main kernel + KERNELIMG=$(ls -1 /boot/vmlinuz-* | head -1) + KERNELVER=${KERNELIMG#/boot/vmlinuz-} -if [ -z "$GROOT" ] ; then - echo "Warning: \$GROOT is not defined, will not adjust grub configuration therefore." -else - stage grub - echo "Adjusting grub configuration for use on ${GROOT}." - - # copy stage-files to /boot/grub/ - [ -d /boot/grub/ ] || mkdir /boot/grub - if [ -d /usr/lib/grub/i386-pc/ ] ; then - cp /usr/lib/grub/i386-pc/* /boot/grub/ - else - # sarge ships grub files in another directory - cp /lib/grub/i386-pc/* /boot/grub/ - fi - - # finally install grub - update-grub -y - sed -i "s/^# groot=.*/# groot=(${GROOT})/g" /boot/grub/menu.lst - sed -i "s|^# kopt=root=.*|# kopt=root=${TARGET} ro|g" /boot/grub/menu.lst - # not sure why savedefault does not work for me; any ideas? - sed -i "s/^savedefault.*/# &/g" /boot/grub/menu.lst - update-grub -y - stage grub done -fi + # generate initrd + if [ -n "$INITRD" ] ; then + if [ "$RELEASE" = 'sarge' ] ; then + echo "Release sarge detected, will not create an initrd." + else + echo "Generating initrd." + update-initramfs -c -t -k $KERNELVER + if [ -f "/boot/initrd.img-$KERNELVER" ] ; then + GRUBINITRD="initrd /boot/initrd.img-$KERNELVER" + LILOINITRD=" initrd=/boot/initrd.img-$KERNELVER" + fi + fi + fi +} +# }}} + +# grub configuration/installation {{{ +grub() { + if [ -z "$GROOT" ] ; then + echo "Warning: \$GROOT is not defined, will not adjust grub configuration therefore." + else + echo "Adjusting grub configuration for use on ${GROOT}." + + # copy stage-files to /boot/grub/ + [ -d /boot/grub/ ] || mkdir /boot/grub + # i386 specific: + [ -d /usr/lib/grub/i386-pc ] && cp /usr/lib/grub/i386-pc/* /boot/grub/ + # amd64 specific: + [ -d /usr/lib/grub/x86_64-pc ] && cp /usr/lib/grub/x86_64-pc/* /boot/grub/ + # sarge ships grub files in another directory + [ "$RELEASE" = 'sarge' ] && cp /lib/grub/i386-pc/* /boot/grub/ + + # finally install grub + update-grub -y + sed -i "s/^# groot=.*/# groot=(${GROOT})/g" /boot/grub/menu.lst + sed -i "s|^# kopt=root=.*|# kopt=root=${TARGET} ro|g" /boot/grub/menu.lst + # not sure why savedefault does not work for me; any ideas? + sed -i "s/^savedefault.*/# &/g" /boot/grub/menu.lst + update-grub -y + fi +} +# }}} + +# make sure we don't have any running processes left {{{ +services() { + for service in ssh mdadm mdadm-raid ; do + [ -x "/etc/init.d/$service" ] && "/etc/init.d/$service" stop + done +} +# }}} -# make sure we don't have any running processes left -for service in ssh mdadm mdadm-raid ; do - [ -x "/etc/init.d/$service" ] && "/etc/init.d/$service" stop -done +# unmount all filesystems in chroot, make sure nothing is left {{{ +finalize() { + umount -a 1>/dev/null 2>/dev/null || true + umount /proc 1>/dev/null 2>/dev/null || true + umount /proc 1>/dev/null 2>/dev/null || true + umount -a 1>/dev/null 2>/dev/null || true +} +# }}} -# unmount all filesystems in chroot, make sure nothing is left... -umount -a 1>/dev/null 2>/dev/null || true -umount /proc 1>/dev/null 2>/dev/null || true -umount /proc 1>/dev/null 2>/dev/null || true -umount -a 1>/dev/null 2>/dev/null || true +# execute the functions {{{ + stage chrootmirror && chrootmirror && stage chrootmirror done + stage grmlrepos && grmlrepos && stage grmlrepos done + stage kernelimg_conf && kernelimg_conf && stage kernelimg_conf done + stage makedev && makedev && stage makedev done + stage packages && packages && stage packages done + stage mkinitrd && mkinitrd && stage mkinitrd done + stage kernel && kernel && stage kernel done + stage reconfigure && reconfigure && stage reconfigure done + stage passwords && passwords && stage passwords done + stage hosts && hosts && stage hosts done + stage interfaces && interfaces && stage interfaces done + stage timezone && timezone && stage timezone done + stage fstab && fstab && stage fstab done + stage hostname && hostname && stage hostname done + stage initrd && initrd && stage initrd done + stage grub && grub && stage grub done + stage services && services && stage services done + stage finalize && finalize && stage finalize done +# }}} -# finally exit the chroot -echo "Finished chroot installation, exiting." -exit 0 +# finally exit the chroot {{{ + echo "Finished chroot installation, exiting." + exit 0 +# }}} ## END OF FILE ################################################################# +# vim: ai tw=80 expandtab foldmethod=marker diff --git a/debian/changelog b/debian/changelog index 8c75d82..74c32ec 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ grml-debootstrap (0.6) unstable; urgency=low + * Split all the code into separate functions. * Export LANG=C and LC_ALL=C as we don't have the locales inside the chroot when running grml-debootstrap. (Just a cosmetic change as there aren't any errors but warning messages from diff --git a/grml-debootstrap b/grml-debootstrap index 5d9b699..126e09e 100644 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -4,21 +4,25 @@ # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Mon Apr 09 23:23:18 CEST 2007 [mika] +# Latest change: Die Apr 10 10:51:26 CEST 2007 [mika] ################################################################################ # http://www.debian.org/releases/stable/i386/index.html.en set -e # exit on any error +VERSION='0.6' + +# source core functions {{{ . /etc/grml/lsb-functions . /etc/grml/script-functions +# }}} -# inside the chroot system the locales might not be available, so use minimum: -export LANG=C -export LC_ALL=C - -VERSION='0.6' +# make sure we have what we need {{{ +check4progs debootstrap || exit 1 +check4root || exit 1 +# }}} +# cmdline handling {{{ case $* in -h*|--h*) einfo "$0 - wrapper around debootstrap for installing plain Debian via grml" @@ -33,29 +37,65 @@ case $* in exit 0 ;; esac +# }}} -check4progs debootstrap || exit 1 -check4root || exit 1 - -# without config file it won't work +# without config file it won't work {{{ if [ -r /etc/debootstrap/config ] ; then . /etc/debootstrap/config else - echo "/etc/debootstrap/config could not be read, exiting." + eerror "/etc/debootstrap/config could not be read, exiting." ; eend 1 exit 1 fi +# }}} + +# set/check variables {{{ + +# inside the chroot system the locales might not be available, so use minimum: +export LANG=C +export LC_ALL=C if [ -z "$STAGES" ] ; then STAGES='/etc/debootstrap/stages' [ -d "$STAGES" ] || mkdir -p "$STAGES" fi +PARTITION='' +DIRECTORY='' + +case $TARGET in + /dev/*) + PARTITION=1 + ;; + *) + # assume we are installing into a directory, don't run mkfs and grub related stuff therefore + DIRECTORY=1 + MNTPOINT="$TARGET" + MKFS='' + TUNE2FS='' + FSCK='' + GRUB='' + GROOT='' + ;; +esac + +if [ -n "$ARCH" ] ; then + ARCHCMD="--arch $ARCH" + ARCHINFO=" (${ARCH})" +else + ARCH="$(dpkg --print-architecture)" + ARCHCMD="--arch $ARCH" + ARCHINFO=" (${ARCH})" +fi + # make sure at least $TARGET is set [the partition for the new system] if [ -z "$TARGET" ] ; then eerror "Please adjust /etc/debootstrap/config before running ${0}" ; eend 1 exit 1 fi +# }}} +# helper functions {{{ +# we want to exit smoothly and clean: bailout(){ # make sure $TARGET is not mounted when exiting grml-debootstrap if [ -n "$TARGET" ] ; then @@ -63,8 +103,8 @@ bailout(){ # make sure nothing is left inside chroot so we can unmount it [ -x "$TARGET"/etc/init.d/ssh ] && "$TARGET"/etc/init.d/ssh stop [ -x "$TARGET"/etc/init.d/mdadm ] && "$TARGET"/etc/init.d/mdadm stop - chroot "$TARGET" umount /sys 1>/dev/null 2>&1 - chroot "$TARGET" umount /proc 1>/dev/null 2>&1 + chroot "$TARGET" umount /sys 1>/dev/null 2>&1 + chroot "$TARGET" umount /proc 1>/dev/null 2>&1 echo "Unmounting $TARGET" umount "$TARGET" fi @@ -72,49 +112,21 @@ bailout(){ [ -n "$1" ] && EXIT="$1" || EXIT="1" exit "$EXIT" } +trap bailout 1 2 3 15 +# we want to execute all the functions only once, simple check for it: stage() { - # error handling - if [ -z "$1" ] ; then - eerror 'Error: stage() requires at least one argument.' - eend 1 - return 1 - fi - if [ -z "$STAGES" ] ; then - eerror 'Error: $STAGES not set.' - eend 1 - return 1 - fi - # main function if grep -q done "$STAGES/$1" 2>/dev/null ; then ewarn "Notice: stage $1 has been executed already, skipping execution therefore." ; eend 0 + return 1 else echo "$2" > "$STAGES/$1" + return 0 fi } +# }}} -trap bailout 1 2 3 15 - -PARTITION='' -DIRECTORY='' - -case $TARGET in - /dev/*) - PARTITION=1 - ;; - *) - # assume we are installing into a directory, don't run mkfs and grub related stuff therefore - DIRECTORY=1 - MNTPOINT="$TARGET" - MKFS='' - TUNE2FS='' - FSCK='' - GRUB='' - GROOT='' - ;; -esac - -# user should recheck his configuration +# user should recheck his configuration {{{ einfo "$0 - Please recheck configuration before execution:" echo " Target: $TARGET" @@ -129,58 +141,57 @@ if ! [ "$a" = 'y' -o "$a" = 'Y' ] ; then eerror "Exiting as requested." ; eend 1 exit 1 fi +# }}} -if [ -n "$MKFS" ] ; then - stage mkfs - einfo "Running $MKFS on $TARGET" - $MKFS $TARGET - eend $? - stage mkfs done -fi - - -if [ -n "$TUNE2FS" ] ; then - stage tune2fs - einfo "Disabling automatic filesystem check on $TARGET via tune2fs" - $TUNE2FS $TARGET - eend $? - stage tune2fs done -fi - +# create filesystem {{{ +mkfs() { + if [ -n "$MKFS" ] ; then + einfo "Running $MKFS on $TARGET" + $MKFS $TARGET + eend $? + fi +} +# }}} -# now mount the new partition or if it's a directory do nothing at all -if [ -n "$DIRECTORY" ] ; then - einfo "Running grml-debootstrap on a directory, nothing to mount." -else - if grep -q $TARGET /proc/mounts ; then - eerror "$TARGET already mounted, exiting." - else - [ -n "$MNTPOINT" ] || MNTPOINT='/mnt/test' - [ -d "$MNTPOINT" ] || mkdir -p "$MNTPOINT" - einfo "Mounting $TARGET to $MNTPOINT" - mount -o rw,suid,dev $TARGET $MNTPOINT +# modify filesystem settings {{{ +tunefs() { + if [ -n "$TUNE2FS" ] ; then + einfo "Disabling automatic filesystem check on $TARGET via tune2fs" + $TUNE2FS $TARGET eend $? - fi -fi + fi +} +# }}} -# get main packages from a debian-mirror -if [ -n "$ARCH" ] ; then - ARCHCMD="--arch $ARCH" - ARCHINFO=" (${ARCH})" -else - ARCH="$(dpkg --print-architecture)" - ARCHCMD="--arch $ARCH" - ARCHINFO=" (${ARCH})" -fi +# mount the new partition or if it's a directory do nothing at all {{{ +mount_target() { + if [ -n "$DIRECTORY" ] ; then + einfo "Running grml-debootstrap on a directory, nothing to mount." + else + if grep -q $TARGET /proc/mounts ; then + eerror "$TARGET already mounted, exiting." + else + [ -n "$MNTPOINT" ] || MNTPOINT='/mnt/test' + [ -d "$MNTPOINT" ] || mkdir -p "$MNTPOINT" + einfo "Mounting $TARGET to $MNTPOINT" + mount -o rw,suid,dev $TARGET $MNTPOINT + eend $? + fi + fi +} +# }}} -stage debootstrap -einfo "Running $DEBOOTSTRAP for release ${RELEASE}${ARCHINFO} using mirror $MIRROR" -$DEBOOTSTRAP $ARCHCMD $RELEASE $MNTPOINT $MIRROR -stage debootstrap done -eend $? +# install main chroot {{{ +debootstrap_system() { + einfo "Running $DEBOOTSTRAP for release ${RELEASE}${ARCHINFO} using mirror $MIRROR" + $DEBOOTSTRAP $ARCHCMD $RELEASE $MNTPOINT $MIRROR + eend $? +} +# }}} -stage preparechroot -einfo "Preparing chroot system" +# prepare chroot via chroot-script {{{ +preparechroot() { + einfo "Preparing chroot system" cp $CONFFILES/chroot-script $MNTPOINT/bin/chroot-script chmod 755 $MNTPOINT/bin/chroot-script mkdir $MNTPOINT/etc/debootstrap/ @@ -201,48 +212,68 @@ einfo "Preparing chroot system" [ -d /etc/debootstrap/share ] && cp -a /etc/debootstrap/share/* $MNTPOINT/share/ [ -d /etc/debootstrap/usr ] && cp -a /etc/debootstrap/usr/* $MNTPOINT/usr/ [ -d /etc/debootstrap/var ] && cp -a /etc/debootstrap/var/* $MNTPOINT/var/ -eend 0 -stage preparechroot done - -stage chrootscript -einfo "Executing chroot-script now" -chroot "$MNTPOINT" /bin/chroot-script -eend $? -stage chrootscript done - -# einfo "Removing chroot-script" -# rm -f $MNTPOINT/bin/chroot-script -# rm -rf $MNTPOINT/etc/debootstrap/ -# eend $? - -if [ -z "$GRUB" -o -z "$GROOT" ] ; then - echo "Notice: \$GRUB or \$GROOT not defined, will not install grub therefor." -else - stage grubinstall - einfo "Installing grub on ${GRUB}:" - grub-install --root-directory="$MNTPOINT" "(${GRUB})" - eend $? - stage grubinstall done -fi + eend 0 +} +# }}} -if [ -n "$PARTITION" ] ; then - einfo "Unmount $MNTPOINT" - umount $MNTPOINT - eend $? -fi +# execute chroot-script {{{ +chrootscript() { + einfo "Executing chroot-script now" + chroot "$MNTPOINT" /bin/chroot-script + eend $? +} +# }}} -if [ "$FSCK" = 'yes' ] ; then - stage fscktool - [ -n "$FSCKTOOL" ] || FSCKTOOL="fsck.${MKFS#mkfs.}" - einfo "Checking filesystem on $TARGET using $FSCKTOOL" - $FSCKTOOL $TARGET - eend $? - stage fscktool done -fi +# install booloader grub {{{ +grub_install() { + if [ -z "$GRUB" -o -z "$GROOT" ] ; then + echo "Notice: \$GRUB or \$GROOT not defined, will not install grub therefor." + else + einfo "Installing grub on ${GRUB}:" + grub-install --root-directory="$MNTPOINT" "(${GRUB})" + eend $? + fi +} +# }}} -# finally remove stages on main system so grml-deboostrap can be reexecuted +# unmount $MNTPOINRT {{{ +umount_chroot() { + if [ -n "$PARTITION" ] ; then + einfo "Unmount $MNTPOINT" + umount $MNTPOINT + eend $? + fi +} +# }}} + +# execute filesystem check {{{ +fscktool() { + if [ "$FSCK" = 'yes' ] ; then + [ -n "$FSCKTOOL" ] || FSCKTOOL="fsck.${MKFS#mkfs.}" + einfo "Checking filesystem on $TARGET using $FSCKTOOL" + $FSCKTOOL $TARGET + eend $? + fi +} +# }}} + +# now execute all the functions {{{ + stage mkfs && mkfs && stage mkfs done + stage tunefs && tunefs && stage tunefs done + stage mount_target && mount_target && stage mount_target done + stage debootstrap_system && debootstrap_system && stage debootstrap_system done + stage preparechroot && preparechroot && stage preparechroot done + stage chrootscript && chrootscript && stage chrootscript done + stage grub_install && grub_install && stage grub_install done + stage umount_chroot && umount_chroot && stage umount_chroot done + stage fscktool && fscktool && stage fscktool done +# }}} + +# finally remove stages on main system so grml-deboostrap can be reexecuted {{{ rm -rf "$STAGES" +# }}} -einfo "Finished execution of $0 - enjoy your Debian system." ; eend 0 + einfo "Finished execution of $0 - enjoy your Debian system." ; eend 0 ## END OF FILE ################################################################# +# vim: ai tw=80 expandtab foldmethod=marker