test -z "$BUILD_INITPRE" || "$BUILD_INITPRE" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS"
+# migrate is a 2.6 feature, we need 2.6 for the secure_mount ccap
+if ! $_VSERVER_INFO - FEATURE migrate; then
+ panic $"\
+The fai build method requires kernel features that are not present
+in your kernel."
+fi
+
# if they specified a vserver where FAI is installed, then prefix its
# root to the FAI_NFSROOT etc (unless they have already specified a
# $ROOTDIR-relative path)
REAL_ROOTDIR=`getPhysicalDir "$ROOTDIR"`
REAL_VDIR=`getPhysicalDir "$VDIR"`
-echo "ROOTDIR is $REAL_ROOTDIR"
-echo "VDIR is $REAL_VDIR"
+echo $"ROOTDIR is $REAL_ROOTDIR"
+echo $"VDIR is $REAL_VDIR"
if [ -n "$FAI_VSERVER" ]
then
echo "FAI_VSERVER is $FAI_VSERVER"
FAI_DIR="$REAL_ROOTDIR/$FAI_VSERVER$FAI_DIR"
fi
fi
-echo "FAI_NFSROOT is $FAI_NFSROOT"
-echo "FAI_DIR is $FAI_DIR"
+echo $"FAI_NFSROOT is $FAI_NFSROOT"
+echo $"FAI_DIR is $FAI_DIR"
FAI_ROOT=/tmp/target
if [ ! -e "$FAI_NFSROOT/usr/sbin/fai" ]
then
- colpanic "NFSROOT not found - did you run fai-setup?"
- exit 1
+ panic $"NFSROOT not found - did you run fai-setup?"
fi
if ! grep -qw VIRTUAL "$FAI_NFSROOT/usr/sbin/fai"
then
- echo "*** Looks like you don't have the patched FAI."
- echo "*** get it from svn://svn.debian.org/svn/fai/people/mugwump/vserver"
- exit 1
+ panic $"\
+*** Looks like you don't have the patched FAI.
+*** get it from svn://svn.debian.org/svn/fai/people/mugwump/vserver"
fi
-# setup a new filesystem namespace
set -e
-#[ -d $FAI_NFSROOT/var/log/fai ] || mkdir $FAI_NFSROOT/var/log/fai
# suppresses color logo, as it does not leave the terminal in a nice
# state.
fi
killprocs() {
- base.__cleanup
- if [ -e "/proc/virtual/$SETUP_CONTEXT" ]
- then
- $_VKILL -c "$SETUP_CONTEXT" -s 15
- sleep 2
- $_VKILL -c "$SETUP_CONTEXT" -s 9
- fi
- set -x
- disableInterfaces "$SETUP_CONFDIR"
+ base.__cleanup
+ S_CONTEXT=$($_CAT "$SETUP_CONFDIR"/run 2>/dev/null)
+ if [ $? -eq 0 -a -d "/proc/virtual/$S_CONTEXT" ]
+ then
+ $_VKILL -c "$S_CONTEXT" -s 15
+ sleep 2
+ $_VKILL -c "$S_CONTEXT" -s 9
+ fi
+ set -x
+ disableInterfaces "$SETUP_CONFDIR"
}
trap killprocs INT EXIT
[ -z "$AUTO" ] && FINAL_SHELL="exec /bin/sh -i"
-mount -n -o ro --bind "$FAI_NFSROOT" /mnt
-mount -n -t tmpfs -o size=64m,mode=1777 vm /mnt/tmp
-mkdir -p /mnt/tmp/target
-mount -n --bind "$VDIR" /mnt/tmp/target
-mkdir -p /mnt/tmp/target/proc
-mount -n -t proc proc /mnt/tmp/target/proc
+$_SECURE_MOUNT -n -o ro --bind "$FAI_NFSROOT" /mnt
+$_SECURE_MOUNT -n -t tmpfs -o size=64m,mode=1777 vm /mnt/tmp
+$_MKDIR -p /mnt/tmp/target
+$_SECURE_MOUNT -n --bind "$VDIR" /mnt/tmp/target
+$_MKDIR -p /mnt/tmp/target/proc
+$_SECURE_MOUNT -n -t proc proc /mnt/tmp/target/proc
for x in $rwpaths
do
/mnt/usr/lib/fai/mkrw -n "/mnt$x"
done
-mount -n -o ro --bind "$FAI_DIR" /mnt/fai
-mount -n -t proc proc /mnt/proc
+$_SECURE_MOUNT -n -o ro --bind "$FAI_DIR" /mnt/fai
+$_SECURE_MOUNT -n -t proc proc /mnt/proc
cd /mnt
$_CHBIND "${CHBIND_OPTS[@]}" \
$_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \
- $_VUNAME --xid self --set -t nodename="$SETUP_HOSTNAME" -- \
+ $_VUNAME --xid self --set -t nodename="${SETUP_HOSTNAME:-fai-build}" -- \
$_VATTRIBUTE --set --xid self "${OPTS_VATTRIBUTE[@]}" --ccap secure_mount \
+ $_SAVE_CTXINFO "$SETUP_CONFDIR" \
$_VCONTEXT --migrate-self --endsetup --chroot $SILENT_OPT \
"${OPTS_VCONTEXT_MIGRATE[@]}" "${OPTS_VCONTEXT_ENTER[@]}" -- \
/bin/sh -c "/bin/sh $SH_DEBUG /etc/init.d/rcS -N vschild_build; $FINAL_SHELL"