# 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.
-# Latest change: Mon Apr 16 18:39:21 CEST 2007 [mika]
+# Latest change: Mon Apr 23 12:02:03 CEST 2007 [mika]
################################################################################
set -e # exit on any error
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
}
# set up grml repository {{{
grmlrepos() {
if [ -n "$GRMLREPOS" ] ; then
- echo 'deb http://grml.org/repos/ ./' >> /etc/apt/sources.list
+ cat >> /etc/apt/sources.list << EOF
+
+# grml: stable repository:
+ deb http://deb.grml.org/ grml-stable main
+ deb-src http://deb.grml.org/ grml-stable main
+
+# grml: testing/development repository:
+ deb http://deb.grml.org/ grml-testing main
+ deb-src http://deb.grml.org/ grml-testing main
+
+EOF
+ # 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
+ # why it's necessary, sometimes we get an error even though it works [mika]
+
+ # make sure we install packages from grml's pool only if not available
+ # from Debian!
+ if ! grep -q grml /etc/apt/preferences 2>/dev/null ; then
+ cat >> /etc/apt/preferences << EOF
+// debian pool (default):
+Package: *
+Pin: release o=Debian
+Pin-Priority: 996
+
+// main grml-repository:
+Package: *
+Pin: origin deb.grml.org
+Pin-Priority: 991
+EOF
+ fi
fi
}
# }}}
}
# }}}
-# sarge specific stuff: mkinitrd {{{
+# install extra packages {{{
+extrapackages() {
+ if [ "$EXTRAPACKAGES" = 'yes' ] ; then
+ PACKAGELIST=$(find /etc/debootstrap/extrapackages -type f -name '*.deb')
+ if [ -n "$PACKAGELIST" ]; then
+ dpkg -i $PACKAGELIST
+ # run apt again to resolve any deps
+ DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL
+ fi
+ fi
+}
+# }}}
+
+# sarge specific stuff: mkinitrd {{{
mkinitrd() {
if [ "$RELEASE" = 'sarge' ] ; then
sed -i "s#ROOT=probe#ROOT=$TARGET#" /etc/mkinitrd/mkinitrd.conf
# set up /etc/network/interfaces {{{
interfaces() {
- if ! [ -f /etc/network/interfaces ] ; then
+ touch /etc/network/interfaces
+ # make sure we add the entries only once
+ if ! grep -q eth0 /etc/network/interfaces ; then
echo "Setting up /etc/network/interfaces"
cat >> /etc/network/interfaces << EOF
+
+# loopback device:
iface lo inet loopback
-iface eth0 inet dhcp
auto lo
-auto eth0
+
+# eth0:
+# iface eth0 inet dhcp
+# auto eth0
+
EOF
fi
}
$UPDATEGRUB -y
if [ -f /boot/grub/menu.lst ] ; then
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
+ sed -i "s|^# kopt=root=.*|# kopt=root=${TARGET} ro ${BOOT_APPEND}|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
$UPDATEGRUB -y
# }}}
# 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 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 passwords && passwords && stage passwords done
- stage services && services && stage services done
- stage finalize && finalize && stage finalize done
+ for i in chrootmirror grmlrepos kernelimg_conf makedev packages extrapackages \
+ mkinitrd kernel reconfigure hosts interfaces timezone fstab hostname \
+ initrd grub passwords services finalize ; do
+ if stage $i ; then
+ $i && stage $i done || exit 1
+ fi
+ done
# }}}
# finally exit the chroot {{{