add capability for f15 guests
[build.git] / vbuild-init-vserver.sh
index 311e751..808e02d 100755 (executable)
@@ -1,6 +1,5 @@
 #!/bin/bash
 # -*-shell-*-
-# $Id$
 
 #shopt -s huponexit
 
@@ -83,7 +82,7 @@ EOF
 function package_method () {
     fcdistro=$1; shift
     case $fcdistro in
-       f[0-9]*|centos[0-9]*) echo yum ;;
+       f[0-9]*|centos[0-9]*|sl[0-9]*) echo yum ;;
        lenny|etch) echo debootstrap ;;
        *) echo Unknown distro $fcdistro ;;
     esac 
@@ -154,26 +153,43 @@ function setup_vserver () {
        fi
     fi
 
+    BCAPFILE=/etc/vservers/$vserver/bcapabilities
+    touch $BCAPFILE
     if [ -n "$VBUILD_MODE" ] ; then 
        ### capabilities required for a build vserver
         # set up appropriate vserver capabilities to mount, mknod and IPC_LOCK
-       BCAPFILE=/etc/vservers/$vserver/bcapabilities
-       touch $BCAPFILE
-       cap=$(grep ^CAP_SYS_ADMIN /etc/vservers/$vserver/bcapabilities | wc -l)
-       [ $cap -eq 0 ] && echo 'CAP_SYS_ADMIN' >> /etc/vservers/$vserver/bcapabilities
-       cap=$(grep ^CAP_MKNOD /etc/vservers/$vserver/bcapabilities | wc -l)
-       [ $cap -eq 0 ] && echo 'CAP_MKNOD' >> /etc/vservers/$vserver/bcapabilities
-       cap=$(grep ^CAP_IPC_LOCK /etc/vservers/$vserver/bcapabilities | wc -l)
-       [ $cap -eq 0 ] && echo 'CAP_IPC_LOCK' >> /etc/vservers/$vserver/bcapabilities
+       grep -q ^CAP_SYS_ADMIN $BCAPFILE || echo CAP_SYS_ADMIN >> $BCAPFILE
+       grep -q ^CAP_MKNOD $BCAPFILE || echo CAP_MKNOD >> $BCAPFILE
+       grep -q ^CAP_IPC_LOCK $BCAPFILE || echo CAP_IPC_LOCK >> $BCAPFILE
+       # useful for f15 guests that use set_cap_file 
+       grep -q ^CAP_SETFCAP $BCAPFILE || echo CAP_SETFCAP >> $BCAPFILE
     else
        ### capabilities required for a myplc vserver
        # for /etc/plc.d/gpg - need to init /dev/random
-       cap=$(grep ^CAP_MKNOD /etc/vservers/$vserver/bcapabilities | wc -l)
-       [ $cap -eq 0 ] && echo 'CAP_MKNOD' >> /etc/vservers/$vserver/bcapabilities
-       cap=$(grep ^CAP_NET_BIND_SERVICE /etc/vservers/$vserver/bcapabilities | wc -l)
-       [ $cap -eq 0 ] && echo 'CAP_NET_BIND_SERVICE' >> /etc/vservers/$vserver/bcapabilities
+       grep -q ^CAP_MKNOD $BCAPFILE || echo CAP_MKNOD >> $BCAPFILE
+       grep -q ^CAP_NET_BIND_SERVICE $BCAPFILE || echo CAP_NET_BIND_SERVICE >> $BCAPFILE
+       # useful for f15 guests that use set_cap_file 
+       grep -q ^CAP_SETFCAP $BCAPFILE || echo CAP_SETFCAP >> $BCAPFILE
     fi
 
+    # Set persistent for the network context
+    # Thierry: Daniel's kernels come with single_ip turned off by default, let's make this explicit 
+    echo "persistent,lback_allow,~single_ip" > /etc/vservers/$vserver/nflags
+
+    # Set cflags
+    echo -e "persistent\n~info_init" > /etc/vservers/$vserver/cflags
+
+    # Enable cgroup
+    mkdir /etc/vservers/$vserver/cgroup
+
+    # Start Vserver automatically on boot
+    echo "default" > /etc/vservers/$vserver/apps/init/mark
+
+    # Set the init style of your vserver to plain for f13 and higher
+    case $fcdistro in 
+       f1[3-9]) echo plain > /etc/vservers/$vserver/apps/init/style ;;
+    esac
+
     if [ "$pkg_method" = "yum" ] ; then
        $personality vyum $vserver -- -y install yum
         # ditto