Skip to content

Commit

Permalink
Generate make-fai-nfsroot.conf and nfsroot.conf on-the-fly
Browse files Browse the repository at this point in the history
FAI 4 uses nfsroot.conf instead of make-fai-nfsroot.conf without
providing any backwards compatibility. :( So while at it rework
the way how make-fai-nfsroot.conf is handled:

* No longer ship /etc/grml/fai/make-fai-nfsroot.conf at all
* Generate nfsroot.conf based on default settings (can be overriden
  by $FAI_DEBOOTSTRAP + $FAI_DEBOOTSTRAP_OPTS) on the fly
* Provide symlink make-fai-nfsroot.conf pointing to nfsroot.conf
  to support old and new FAI versions at the same time
* After execution copy generated nfsroot.conf file to log directory
  and get rid of make-fai-nfsroot.conf and nfsroot.conf in
  $GRML_FAI_CONFIG (/etc/grml/fai/ by default) afterwards

Note: existing make-fai-nfsroot.conf files will be moved
to make-fai-nfsroot.conf.outdated to avoid possible data loss.

Closes: #4
  • Loading branch information
mika committed May 20, 2012
1 parent 193203a commit 4bc598a
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 54 deletions.
6 changes: 0 additions & 6 deletions docs/grml-live.txt
Original file line number Diff line number Diff line change
Expand Up @@ -400,12 +400,6 @@ GRML_FAI_CONFIG=/etc/grml/fai/config - both pointing to a directory shipped by
grml-live out-of-the-box so you shouldn't have to configure anything in this
file.
${GRML_FAI_CONFIG}/make-fai-nfsroot.conf
This file is used by make-fai-nfsroot(8) only. Usually you don't have to change
anything inside this file. If you want to modify NFSROOT though you can adjust
it there.
${GRML_FAI_CONFIG}/NFSROOT
This file specifies the package list for creating the NFSROOT.
Expand Down
31 changes: 0 additions & 31 deletions etc/grml/fai/make-fai-nfsroot.conf

This file was deleted.

3 changes: 0 additions & 3 deletions etc/grml/grml-live.conf
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,6 @@
# APT_PROXY="http://localhost:3142/"

# Which Debian suite and which mirror do you want to use for debootstrapping?
# Unless specified the default from /etc/grml/fai/make-fai-nfsroot.conf will be
# taken. If you specify a value then the file /etc/grml/fai/make-fai-nfsroot.conf
# will be updated by grml-live on-the-fly.
# Usage: "<suite> <mirror>"
# FAI_DEBOOTSTRAP="squeeze http://cdn.debian.net/debian"

Expand Down
47 changes: 33 additions & 14 deletions grml-live
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,11 @@ bailout() {
[ -n "${CHROOT_OUTPUT}" -a -d "${CHROOT_OUTPUT}" ] && rm -r "${CHROOT_OUTPUT}"
eend 0
fi

# get rid of automatically generated conffiles
rm -f ${GRML_FAI_CONFIG}/nfsroot.conf
rm -f ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf

if [ -n "$CHOWN_USER" ]; then
log "Setting ownership"
einfo "Setting ownership"
Expand Down Expand Up @@ -365,7 +370,6 @@ fi
[ -n "$GRML_NAME" ] || GRML_NAME='grml'
[ -n "$HOSTNAME" ] || HOSTNAME='grml'
[ -n "$HYBRID_METHOD" ] || HYBRID_METHOD='isohybrid'
[ -n "$NFSROOT_CONF" ] || NFSROOT_CONF="${GRML_FAI_CONFIG}/make-fai-nfsroot.conf"
[ -n "$RELEASENAME" ] || RELEASENAME='grml-live rocks'
[ -n "$SQUASHFS_EXCLUDES_FILE" ] || SQUASHFS_EXCLUDES_FILE="${GRML_FAI_CONFIG}/config/grml/squashfs-excludes"
[ -n "$SUITE" ] || SUITE='testing'
Expand Down Expand Up @@ -560,9 +564,6 @@ extract_iso
# }}}

# on-the-fly configuration {{{
if [ -n "$FAI_DEBOOTSTRAP" ] ; then
sed "s#^FAI_DEBOOTSTRAP=.*#FAI_DEBOOTSTRAP=\"$FAI_DEBOOTSTRAP\"#" "$NFSROOT_CONF" | sponge "$NFSROOT_CONF"
fi

# does this suck? YES!
# /usr/share/debootstrap/scripts/unstable does not exist, instead use 'sid':
Expand All @@ -572,12 +573,6 @@ case $SUITE in
esac
export SUITE # make sure it's available in FAI scripts

for file in "$LIVE_CONF" "$LOCAL_CONFIG" "$NFSROOT_CONF" ; do
if [ -n "$file" ] ; then
sed "s|^FAI_DEBOOTSTRAP=\"[a-z]* |FAI_DEBOOTSTRAP=\"$SUITE |" "$file" | sponge "$file"
fi
done

# validate whether the specified architecture class matches the
# architecture (option), otherwise installation of kernel will fail
if echo $CLASSES | grep -qi i386 ; then
Expand All @@ -598,11 +593,31 @@ elif echo $CLASSES | grep -qi amd64 ; then
fi
fi

if grep -q -- 'FAI_DEBOOTSTRAP_OPTS.*--arch' "$NFSROOT_CONF" ; then
sed "s/--arch [a-z0-9]* /--arch $ARCH /" "$NFSROOT_CONF" | sponge "$NFSROOT_CONF"
else
sed "s|^FAI_DEBOOTSTRAP_OPTS=\"\(.*\)|FAI_DEBOOTSTRAP_OPTS=\"--arch $ARCH \1|" "$NFSROOT_CONF" | sponge "$NFSROOT_CONF"
# generate nfsroot configuration for FAI on the fly
if [ -z "$FAI_DEBOOTSTRAP" ] ; then
FAI_DEBOOTSTRAP="$SUITE http://cdn.debian.net/debian"
fi

if [ -z "$FAI_DEBOOTSTRAP_OPTS" ] ; then
FAI_DEBOOTSTRAP_OPTS="--exclude=info,tasksel,tasksel-data --arch $ARCH"
fi

# create backup of old (not yet automatically generated) config file
if [ -f "${GRML_FAI_CONFIG}/make-fai-nfsroot.conf" ] ; then
if ! grep -q 'This is an automatically generated file by grml-live' "${GRML_FAI_CONFIG}/make-fai-nfsroot.conf" ; then
ewarn "Found old ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf - moving to ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf.outdated"
mv "${GRML_FAI_CONFIG}/make-fai-nfsroot.conf" "${GRML_FAI_CONFIG}/make-fai-nfsroot.conf.outdated"
eend $?
fi
fi

echo "# This is an automatically generated file by grml-live.
# Do NOT edit this file, your changes will be lost.
FAI_DEBOOTSTRAP=\"$FAI_DEBOOTSTRAP\"
FAI_DEBOOTSTRAP_OPTS=\"$FAI_DEBOOTSTRAP_OPTS\"
# EOF " > "${GRML_FAI_CONFIG}/nfsroot.conf"
# support FAI <=3.4.8, versions >=4.0 use nfsroot.conf
( cd ${GRML_FAI_CONFIG} && ln -sf nfsroot.conf make-fai-nfsroot.conf )
# }}}

# CHROOT_OUTPUT - execute FAI {{{
Expand Down Expand Up @@ -672,6 +687,10 @@ else
mkdir -p "$LOG_OUTPUT"/fai/
cp -r "$CHROOT_OUTPUT"/var/log/fai/"$HOSTNAME"/last/* "$LOG_OUTPUT"/fai/
rm -rf "$CHROOT_OUTPUT"/var/log/fai

# store copy of autogenerated configuration file
cp ${GRML_FAI_CONFIG}/nfsroot.conf "$LOG_OUTPUT"/fai/

# copy fai package list
cp "$CHROOT_OUTPUT"/var/log/install_packages.list "$LOG_OUTPUT"/fai/
# fixup owners
Expand Down

0 comments on commit 4bc598a

Please sign in to comment.