#!/bin/bash
-# Filename: /etc/grml/fai/config/hooks/updatebase.GRMLBASE
+# Filename: ${GRML_FAI_CONFIG}/hooks/updatebase.GRMLBASE
# Purpose: Updates the base packages of the system, prepare chroot for instsoft
# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
## we want to use our own sources.list:
skiptask updatebase
- ## taken from FAI's lib/updatebase:
+ ## based on FAI's lib/updatebase:
# some packages must access /proc even in chroot environment
- mount -t proc proc $FAI_ROOT/proc
+ if ! [ -d $FAI_ROOT/proc/1 ] ; then
+ mount -t proc proc $FAI_ROOT/proc || true
+ fi
# some packages must access /sys even in chroot environment
- mount -t sysfs sysfs $FAI_ROOT/sys
+ if ! [ -d $FAI_ROOT/sys/kernel ] ; then
+ mount -t sysfs sysfs $FAI_ROOT/sys
+ fi
# if we are using udev, also mount it into $FAI_ROOT
- [ -f /etc/init.d/udev ] && mount --bind /dev $FAI_ROOT/dev
- mount -t devpts devpts $FAI_ROOT/dev/pts
-
- ## make sure we don't start any daemons - removed
- ## later on via /etc/grml/fai/config/scripts/GRMLBASE/98-clean-chroot
- if ! [ -r $target/usr/sbin/policy-rc.d ] ; then
- cat > $target/usr/sbin/policy-rc.d << EOF
-#!/bin/sh
-# FAI_ACTION=updatebase
-exit 101
-EOF
- chmod 755 $target/usr/sbin/policy-rc.d
+ if [ -f /etc/init.d/udev ] ; then
+ mount --bind /dev $FAI_ROOT/dev || true
fi
- # skip the task if we want to build a new ISO only:
- [ -n "$BUILD_ONLY" ] && skiptask instsoft || /bin/true
+ mount -t devpts devpts $FAI_ROOT/dev/pts || true
+
+ # skip the task if we want to build a new ISO only,
+ # this means we do NOT update any packages
+ if [ -n "$BUILD_ONLY" ] ; then
+ skiptask instsoft || true
+ fi
exit # make sure we don't continue behind the following "fi"
fi
-# no softupdate but updating chroot e.g. based on /etc/grml/fai/config/basefiles/*
+if [ -n "$BOOTSTRAP_ONLY" ] ; then
+ echo "Skipping task configure in hooks/updatebase.GRMLBASE as BOOTSTRAP_ONLY environment is set."
+ skiptask configure
+fi
+
+# no softupdate but updating chroot e.g. based on ${GRML_FAI_CONFIG}/basefiles/*
echo "Action $FAI_ACTION of FAI (hooks/updatebase.GRMLBASE) via grml-live running"
+# work around #632624: udev fails to install on systems with old kernel versions
+if ! [ -e ${target}/etc/udev/kernel-upgrade ] ; then
+ echo "Working around udev package bug, creating /etc/udev/kernel-upgrade"
+ echo "# installed via updatebase.GRMLBASE" > ${target}/etc/udev/kernel-upgrade
+fi
+
# install all apt related files
-fcopy -r /etc/apt
+fcopy -v /etc/apt/grml.key
+fcopy -v /etc/apt/preferences
+fcopy -v /etc/apt/apt.conf.d/20pdiffs
+fcopy -v /etc/apt/apt.conf.d/15grml-live
-# remove grml-live's notice file from chroot:
-if [ -r $target/etc/apt/important_note.txt ] ; then
- grep -q GRML_LIVE_SOURCES $target/etc/apt/important_note.txt && rm $target/etc/apt/important_note.txt
-fi
+# this is the auto-generated sources.list file by grml-live,
+# will be overriden by $GRML_FAI_CONFIG/scripts/GRMLBASE/33-aptsetup
+fcopy -v -c GRML_LIVE_SOURCES_LIST /etc/apt/sources.list
-# install grml gpg key:
-fcopy /etc/apt/grml.key
+# install Grml gpg key:
$ROOTCMD apt-key add /etc/apt/grml.key
## END OF FILE #################################################################
-# vim:ft=sh expandtab ai tw=80 tabstop=4 shiftwidth=3
+# vim:ft=sh expandtab ai tw=80 tabstop=4 shiftwidth=2