-#!/bin/sh
-# Filename: grml-bootstrap
-# Purpose: wrapper around debootstrap for installing plain Debian via grml
+#!/bin/bash
+# Filename: grml-debootstrap
+# Purpose: wrapper around debootstrap for installing plain Debian via Grml
# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2.
+# License: This file is licensed under the GPL v2+
################################################################################
# http://www.debian.org/releases/stable/i386/index.html.en
# variables {{{
PN="$(basename $0)"
-VERSION='0.37'
+VERSION="$(dpkg --list $PN 2>/dev/null| awk '/^i/ {print $3}')"
+VERSION="${VERSION:-unknown}"
MNTPOINT="/mnt/debootstrap.$$"
# inside the chroot system locales might not be available, so use minimum:
"
}
-if [ "$1" = '-h' ] || [ "$1" = '-help' ] ; then
+if [ "$1" = '-h' ] || [ "$1" = '-help' ] || [ "$1" = "--help" ] ; then
usage
echo 'Please notice that this script requires root permissions!'
exit 0
# make sure we have what we need {{{
check4progs debootstrap dialog || exit 1
-check4root || exit 1
# }}}
# source main configuration file {{{
}
# }}}
+# check for root permissions {{{
+if ! check4root ; then
+ echo "For usage instructions please execute '$PN --help'."
+ exit 1
+fi
+# }}}
+
# source specified configuration file {{{
if [ -n "$CONFIGFILE" ] ; then
einfo "Reading specified config file $CONFIGFILE."
NUM_PARTITIONS=$((${NUM_PARTITIONS}+1))
done
+# force metadata version 0.90 for lenny so old grub can boot from this array.
+METADATA_VERSION=""
+if [ $RELEASE = "lenny" ]; then
+ METADATA_VERSION="-e0"
+fi
+
ERRORFILE=$(mktemp)
set +e
# TODO: better error handling?
yes | mdadm --create "${TARGET}" --level="${RAIDLEVEL}" \
- --raid-devices="${NUM_PARTITIONS}" ${SELECTED_PARTITIONS} >/dev/null 2>$ERRORFILE
+ --raid-devices="${NUM_PARTITIONS}" ${METADATA_VERSION} ${SELECTED_PARTITIONS} >/dev/null 2>$ERRORFILE
RC=$?
set -e
{
welcome_dialog
+ prompt_for_release
+
prompt_for_swraid
prompt_for_target
prompt_for_bootmanager
- prompt_for_release
-
prompt_for_hostname
prompt_for_password
[ -x "$MNTPOINT"/etc/init.d/ssh ] && "$MNTPOINT"/etc/init.d/ssh stop
[ -x "$MNTPOINT"/etc/init.d/mdadm ] && "$MNTPOINT"/etc/init.d/mdadm stop
# ugly, but make sure we really don't leave anything (/proc /proc is intended)
- for ARG in /sys -a /proc /proc ; do
+ for ARG in /sys /proc /proc ; do
[ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount $ARG >/dev/null 2>&1 || true
done
umount "$MNTPOINT"/dev >/dev/null 2>&1 || true
[ -n "$INSTALL_NOTES" ] && echo "INSTALL_NOTES=$INSTALL_NOTES" >> $CHROOT_VARIABLES
[ -n "$ISODIR" ] && echo "ISODIR=$ISO" >> $CHROOT_VARIABLES
[ -n "$ISO" ] && echo "ISO=$ISO" >> $CHROOT_VARIABLES
- [ -n "$MIRROR" ] && echo "MIRROR=$MIRROR" >> $CHROOT_VARIABLES
[ -n "$KEEP_SRC_LIST" ] && echo "KEEP_SRC_LIST=$KEEP_SRC_LIST" >> $CHROOT_VARIABLES
+ [ -n "$MIRROR" ] && echo "MIRROR=$MIRROR" >> $CHROOT_VARIABLES
[ -n "$PACKAGES" ] && echo "PACKAGES=$PACKAGES" >> $CHROOT_VARIABLES
+ [ -n "$RM_APTCACHE" ] && echo "RM_APTCACHE=$RM_APTCACHE" >> $CHROOT_VARIABLES
[ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD=$ROOTPASSWORD" >> $CHROOT_VARIABLES
+ [ -n "$SELECTED_PARTITIONS" ] && echo "SELECTED_PARTITIONS=$SELECTED_PARTITIONS" >> $CHROOT_VARIABLES
[ -n "$TARGET" ] && echo "TARGET=$TARGET" >> $CHROOT_VARIABLES
[ -n "$TARGET_UUID" ] && echo "TARGET_UUID=$TARGET_UUID" >> $CHROOT_VARIABLES
- [ -n "$RM_APTCACHE" ] && echo "RM_APTCACHE=$RM_APTCACHE" >> $CHROOT_VARIABLES
cp $VERBOSE $CONFFILES/chroot-script $MNTPOINT/bin/chroot-script
chmod 755 $MNTPOINT/bin/chroot-script
}
# }}}
-# install booloader grub {{{
-grub_install() {
- if [ -z "$GRUB" ] ; then
- echo "Notice: \$GRUB not defined, will not install grub therefore."
- return 0
- fi
-
- if ! [ -x "$(which grub-install)" ] ; then
- echo "Error: grub-install not available. (Error while installing grub package?)"
- return 1
- fi
-
- if [ -n "$SELECTED_PARTITIONS" ] ; then # using sw-raid
- for device in $SELECTED_PARTITIONS ; do
- GRUB="${device%%[0-9]}"
- einfo "Installing grub on ${GRUB}:"
- grub-install --no-floppy --root-directory="$MNTPOINT" "$GRUB"
- eend $?
- done
- else
- einfo "Installing grub on ${GRUB}:"
- grub-install --no-floppy --root-directory="$MNTPOINT" "$GRUB"
- eend $?
- fi
-}
-# }}}
-
# unmount $MNTPOINT {{{
umount_chroot() {
# now execute all the functions {{{
for i in mkfs tunefs mount_target debootstrap_system preparechroot \
- execute_pre_scripts chrootscript execute_scripts grub_install umount_chroot \
+ execute_pre_scripts chrootscript execute_scripts umount_chroot \
fscktool ; do
if stage "${i}" ; then
$i && ( stage "${i}" done && rm -f "${STAGES}/${i}" ) || bailout 2 "i"