X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver-build.fai;h=6e2333fc92f17f0948edebe7076705116e04eaf9;hb=05f8e8a30aa7c113890e3d28341a010c0f994dac;hp=7890aaaf7212d16ccd702c2160aa7e4895fe0bfb;hpb=5e3b218917be924b67bd355a37b8f0cb6ac3c8c2;p=util-vserver.git diff --git a/scripts/vserver-build.fai b/scripts/vserver-build.fai index 7890aaa..6e2333f 100644 --- a/scripts/vserver-build.fai +++ b/scripts/vserver-build.fai @@ -25,6 +25,7 @@ DISTRIBUTION=: FAI_VSERVER= FAI_NFSROOT=/usr/lib/fai/nfsroot FAI_DIR=/usr/local/share/fai +AUTO=1 use_pkgmgmt= while true; do @@ -32,7 +33,7 @@ while true; do -f) FAI_VSERVER=$2; shift; ;; -n) FAI_NFSROOT=$2; shift; ;; -d) FAI_DIR=$2; shift; ;; - -a) AUTO=1; ;; + -a) AUTO=;; --debug) DEBUG=1; SH_DEBUG=-x; set -x;; --) shift; break ;; *) echo "vserver-build.fai: internal error: unrecognized option '$1'" >&2 @@ -90,8 +91,9 @@ fi if ! grep -qw VIRTUAL "$FAI_NFSROOT/usr/sbin/fai" then panic $"\ -*** Looks like you don't have the patched FAI. -*** get it from svn://svn.debian.org/svn/fai/people/mugwump/vserver" +ERROR: Looks like you don't have the patched FAI. +See http://faiwiki.informatik.uni-koeln.de/index.php/Using_FAI_as_a_vserver_build_method +for information on where to get it." fi set -e @@ -100,33 +102,38 @@ set -e # state. console=dummy -# set up interfaces, so that the vserver can be built with restricted -# network access. -generateOptions "$SETUP_CONFDIR" -enableInterfaces "$SETUP_CONFDIR" - -# last chance to abort! -if [ -z "$AUTO" ] -then - echo -n "Press ENTER to begin, or Ctrl+C to cancel: " - read junk -fi - killprocs() { - base.__cleanup - S_CONTEXT=$($_CAT "$SETUP_CONFDIR"/run 2>/dev/null) - if [ $? -eq 0 -a -d "/proc/virtual/$S_CONTEXT" ] + set +e + S_CONTEXT= + if isVserverRunning "$SETUP_CONFDIR" S_CONTEXT then $_VKILL -c "$S_CONTEXT" -s 15 sleep 2 $_VKILL -c "$S_CONTEXT" -s 9 + sleep 2 + isVserverRunning "$SETUP_CONFDIR" && warning $"\ +Vserver '$VSERVER_NAME' still running unexpectedly; please investigate it +manually." fi - set -x - disableInterfaces "$SETUP_CONFDIR" + [ -n "$HAVE_INTERFACES" ] && disableInterfaces "$SETUP_CONFDIR" + base.__cleanup } trap killprocs INT EXIT +# last chance to abort! +if [ -z "$AUTO" ] +then + echo -n "Press ENTER to begin, or Ctrl+C to cancel: " + read junk +fi + +# set up interfaces, so that the vserver can be built with restricted +# network access. +generateOptions "$SETUP_CONFDIR" +enableInterfaces "$SETUP_CONFDIR" +HAVE_INTERFACES=1 + rwpaths="/var/lock /var/log /dev /var/run /etc/sysconfig" [ -d "$FAI_NFSROOT/etc/network/run" ] && rwpaths="$rwpaths /etc/network/run" @@ -134,10 +141,11 @@ export VDIR ROOTDIR FAI_VSERVER FAI_DIR FAI_NFSROOT FAI_ROOT console [ -z "$AUTO" ] && FINAL_SHELL="exec /bin/sh -i" -$_SECURE_MOUNT -n -o ro --bind "$FAI_NFSROOT" /mnt +# set up /mnt with all the mounts required +$_SECURE_MOUNT -n -o ro,dev --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 +$_SECURE_MOUNT -n -o rw,dev --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 @@ -148,9 +156,10 @@ $_SECURE_MOUNT -n -o ro --bind "$FAI_DIR" /mnt/fai $_SECURE_MOUNT -n -t proc proc /mnt/proc cd /mnt -$_CHBIND "${CHBIND_OPTS[@]}" \ +"${CHBIND_CMD[@]}" \ $_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \ - $_VUNAME --xid self --set -t nodename="${SETUP_HOSTNAME:-fai-build}" -- \ + $_VUNAME --xid self --set -t nodename="${SETUP_HOSTNAME:-fai-build}" \ + -t context="$SETUP_CONFDIR" -- \ $_VATTRIBUTE --set --xid self "${OPTS_VATTRIBUTE[@]}" --ccap secure_mount \ $_SAVE_CTXINFO "$SETUP_CONFDIR" \ $_VCONTEXT --migrate-self --endsetup --chroot $SILENT_OPT \