do not use multiline sed expressions anymore; instead of, assign and
[util-vserver.git] / util-vserver / scripts / vserver-setup.functions
index 236f214..36f6ab4 100644 (file)
@@ -21,41 +21,42 @@ SETUP_NETMASK=
 SETUP_NETPREFIX=
 SETUP_NETBCAST=
 SETUP_LOCKFILE=
-SETUP_LOCKREVDIR=
 SETUP_CONFDIR=
 SETUP_CONTEXT=
+SETUP_INITSTYLE=
 
 declare -a SETUP_INTERFACES=()
 declare -a SETUP_FLAGS=()
 
-declare -r SETUP_OPTIONS="confdir:,lockfile:,lockrevdir:,hostname:,netdev:,netmask:,netprefix:,netbcast:,interface:,flags:,context:"
+declare -r SETUP_OPTIONS="confdir:,lockfile:,hostname:,netdev:,netmask:,netprefix:,netbcast:,interface:,flags:,context:,initstyle:"
 declare -r SETUP_HELPMSG=$"
     --context   ...  the static context of the vserver [default: none; a dynamic
                      context will be assumed]
-    --confdir   ...  [default: $CONFDIR/<name>]
+    --confdir   ...  [default: $__CONFDIR/<name>]
     --lockfile <filename>
-               ...  [default: $RUNDIR/<name>]
-    --lockrevdir <dirname>
-               ...  [default: $CONFDIR/.defaults/run.rev]
+               ...  [default: $__RUNDIR/<name>]
     --hostname <hostname>
     --netdev   <device>
     --netbcast <broadcast>
-    --netmask <netmask>|--netprefix <prefix>
-                ...  sets the  default netmask  (a.b.c.d quadruple)  or prefix
+    --netmask <netmask>|--netprefix <prefixlen>
+                ...  sets the  default netmask  (a.b.c.d quadruple)  or prefixlen
                     (length of the interface)
-    --interface [<name-suffix>=][<device>:]<ip>[/<mask|prefix>]
+    --interface [<name-suffix>=][<device>:]<ip>[/<mask|prefixlen>]
                 ...  declares an network-interface;  this option can be specified
                     multiple times
     --flags <flags>+
                 ...  sets comma-separated list of flags; possible flags are
                     lock:  Prevent the vserver from setting new security context
                     sched: Merge  scheduler priority  of all processes in the
-                           vserver so that it acts a like a single one.
+                           vserver so that it acts a like a single
+                           one (kernel 2.4 only).
                      nproc: Limit the number of processes in the vserver
                            according to ulimit  (instead of a per user limit,
                            this becomes a per vserver limit)
                     private: No other process can join this security context.
                            Even root
+    --initstyle <style>
+                ...  configures the initstyle (e.g. minit,sysv,plain)
 "
 
 function setup_setOption2
@@ -64,13 +65,13 @@ function setup_setOption2
        (--context)     SETUP_CONTEXT=$2;;
        (--confdir)     SETUP_CONFDIR=$2;;
        (--lockfile)    SETUP_LOCKFILE=$2;;
-       (--lockrevdir)  SEUTP_LOCKREVDIR=$2;;
        (--hostname)    SETUP_HOSTNAME=$2;;
        (--netdev)      SETUP_NETDEV=$2;;
        (--netmask)     SETUP_NETMASK=$2;;
        (--netprefix)   SETUP_NETPREFIX=$2;;
        (--netbcast)    SETUP_NETBCAST=$2;;
        (--interface)   SETUP_INTERFACES=( "${SETUP_INTERFACES[@]}" "$2" );;
+       (--initstyle)   SETUP_INITSTYLE=$2;;
        (--flags)       old_IFS=$IFS
                        IFS=,
                        set -- $2
@@ -121,31 +122,34 @@ function _setup_writeInterface
     _setup_writeSingleOption "$ip"     $d/ip
     _setup_writeSingleOption "$mask"   $d/mask
     _setup_writeSingleOption "$prefix" $d/prefix
+
+    test -n "$dev" -o -n "$SETUP_NETDEV" || \
+       echo $"No device specified for interface '$idx'; do not forget to set the 'nodev' option" >&2
 }
 
 function setup_setDefaults
 {
-    : ${SETUP_CONFDIR:=$CONFDIR/$1}
-    : ${SETUP_LOCKFILE:=$RUNDIR/$1}
-    : ${SETUP_LOCKREVDIR:=$CONFDIR/.defaults/run.rev}
-    findFile SETUP_FSTAB "$CONFDIR"/.defaults/fstab "$PKGLIBDEFAULTDIR"/fstab
+    : ${SETUP_CONFDIR:=$__CONFDIR/$1}
+    : ${SETUP_LOCKFILE:=$__RUNDIR/$1}
+    findFile SETUP_FSTAB "$__CONFDIR"/.defaults/fstab "$__PKGLIBDEFAULTDIR"/fstab
 }
 
 function setup_writeOption
 {
     local name=$1
-    local cfgdir=$SETUP_CONFDIR
+    local cfgdir=${SETUP_CONFDIR:?}
     local i
 
-    mkdir -p "$cfgdir/interfaces"
+    mkdir -p "$cfgdir"/interfaces "$cfgdir"/apps/init "$cfgdir"/uts
 
     _setup_writeSingleOption "$name"            "$cfgdir"/name
     _setup_writeSingleOption "$SETUP_CONTEXT"   "$cfgdir"/context
-    _setup_writeSingleOption "$SETUP_HOSTNAME"  "$cfgdir"/hostname
+    _setup_writeSingleOption "$SETUP_HOSTNAME"  "$cfgdir"/uts/nodename
     _setup_writeSingleOption "$SETUP_NETDEV"    "$cfgdir"/interfaces/dev
     _setup_writeSingleOption "$SETUP_NETMASK"   "$cfgdir"/interfaces/mask
     _setup_writeSingleOption "$SETUP_NETPREFIX" "$cfgdir"/interfaces/prefix
     _setup_writeSingleOption "$SETUP_NETBCAST"  "$cfgdir"/interfaces/bcast
+    _setup_writeSingleOption "$SETUP_INITSTYLE" "$cfgdir"/apps/init/style
 
     local idx=0
     for i in "${SETUP_INTERFACES[@]}"; do
@@ -157,13 +161,12 @@ function setup_writeOption
        echo "$i"
     done >"$cfgdir"/flags
 
-    ln -s "$SETUP_LOCKFILE"   "$cfgdir/run"
-    ln -s "$SETUP_LOCKREVDIR" "$cfgdir/run.rev"
+    ln -s "$SETUP_LOCKFILE"   "$cfgdir"/run
 }
 
 function setup_writeInitialFstab
 {
-    cat "$SETUP_FSTAB" >"$SETUP_CONFDIR"/fstab
+    cat "${SETUP_FSTAB:?}" >"${SETUP_CONFDIR:?}"/fstab
 }
 
 function setup_test