gentoo: use /var/run for new /run compatibility
[util-vserver.git] / doc / configuration.xml
index d9f7c55..fc7416f 100644 (file)
@@ -37,10 +37,10 @@ the 'barrier' attribute. Else, common chroot(2) exploits are possible.
       </description>
     </boolean>
 
-    <boolean id="global-namespace-cleanup" name="namespace-cleanup">
+    <boolean id="global-nonamespace-cleanup" name="nonamespace-cleanup">
       <description>
-Enable namespace cleanup globally. It can be overridden for a single vserver
-by setting the <optionref ref="global-nonamespace-cleanup">nonamespace-cleanup</optionref> flag
+Disable namespace cleanup globally. It can be overridden for a single vserver
+by setting the <optionref ref="namespace-cleanup">namespace-cleanup</optionref> flag
 there.
       </description>
     </boolean>
@@ -62,6 +62,34 @@ NOTE: this link exists in 0.30.202+ only; in previous versions it was
 a vserver specific setting.
       </description>
     </link>
+
+    <scalar name="shell">
+      <description>
+Contains the pathname of the shell which will be used by the "vserver
+... enter" command. Can be overridden by the
+<optionref ref="shell">per-guest shell</optionref>.
+      </description>
+    </scalar>
+
+    <data name="fstab">
+      <description>
+The default fstab file to put in newly built guests.
+      </description>
+    </data>
+
+    <boolean name="context.dynamic">
+      <description>
+If this file exists, kernel-side dynamic contexts will be used by the "vserver
+... build" command. Otherwise a context will be generated, based on the
+contents of <optionref>context.next</optionref>.
+      </description>
+    </boolean>
+
+    <scalar id="context.next" name="context.next">
+      <description>
+The context id to use for the next guest created by "vserver ... build".
+      </description>
+    </scalar>
     
     <collection name="apps">
       <collection name="pkgmgmt">
@@ -89,6 +117,33 @@ from this uri and install it at a temporary place.
        </scalar>
       </collection>
 
+      <collection name="vdevmap">
+        <collection name="x" type="sybmolic">
+          <description>'x' is an arbitrary name, replace it with e.g. device names</description>
+          <boolean name="open">
+            <description>When this file exists, the device can be opened</description>
+          </boolean>
+          <boolean name="create">
+            <description>When this file exists, the device can be created (if the guest has <optionref ref="bcapabilities">CAP_MKNOD</optionref>)</description>
+          </boolean>
+          <boolean id="vdevmap-remap" name="remap">
+            <description>
+When this file exists, <optionref ref="vdevmap-target">target</optionref> will
+have to exist as well and opening the device will in fact open the target device
+            </description>
+          </boolean>
+          <scalar name="flags">
+            <description>This file will let you specify unimplemented flags manually</description>
+          </scalar>
+          <scalar name="device">
+            <description>Contains the name of a device node</description>
+          </scalar>
+          <scalar id="vdevmap-target" name="target">
+            <description>Contains the device node of the target node to open instead of the device when <optionref ref="vdevmap-remap">remap</optionref> is set</description>
+          </scalar>
+        </collection>
+      </collection>
+
       <collection name="vshelper">
        <link name="logfile">
          <description>
@@ -101,7 +156,7 @@ is invoked from the kernel. This should point somewhere e.g. into
        <collection name="vshelper-methods">
          <program name="handler" type="symbolic">
            <description>
-See vshelper/action.
+See <optionref ref="vshelper-action">vshelper/action</optionref>.
             </description>
          </program>
        </collection>
@@ -204,6 +259,14 @@ When this file exists, vlogin isn't used on vserver &lt;guest&gt; enter.
          </description>
        </boolean>
       </collection>
+
+      <collection name="build">
+        <list name="options">
+          <description>
+A list of default options to supply to vserver ... build, one option per line.
+          </description>
+        </list>
+      </collection>
     </collection>
 
     <collection name="interfaces" use="optional">
@@ -214,6 +277,79 @@ interface will be executed.
        </description>
       </boolean>
     </collection>
+
+    <collection name="files">
+      <description>This directory contains some files which will be copied to the guests during build.</description>
+      <data name="hosts">
+        <description>The default /etc/hosts file.</description>
+      </data>
+      <data name="nsswitch.conf">
+        <description>The default /etc/nsswitch.conf file.</description>
+      </data>
+      <data name="krb5.conf">
+        <description>The default /etc/krb5.conf file.</description>
+      </data>
+      <data name="krb.conf">
+        <description>The default /etc/krb.conf file.</description>
+      </data>
+      <data name="krb.realms">
+        <description>The default /etc/krb.realms file.</description>
+      </data>
+      <data name="ldap.conf">
+        <description>The default /etc/ldap.conf file.</description>
+      </data>
+      <data name="localtime">
+        <description>The default /etc/localtime file.</description>
+      </data>
+      <data name="resolv.conf">
+        <description>The default /etc/resolv.conf file.</description>
+      </data>
+    </collection>
+
+    <collection name="cgroup" use="optional" since="0.30.216" id="global-cgroup">
+      <description>
+This directory contains cgroup settings which should be applied to all guests.
+See your kernel documentation for what settings are valid with your
+configuration.
+      </description>
+      <scalar name="mnt">
+        <description>
+The directory to mount the cgroup hierarchy at. The default is /dev/cgroup.
+        </description>
+      </scalar>
+      <list name="subsys">
+        <description>
+List of subsystems to enable on the cgroup mount point. The default is "all".
+        </description>
+      </list>
+      <list name="inherit">
+        <description>
+Some subsystems start out with clean slates, making it impossible to use the
+cgroup before certain things have been set. This is true for e.g. the cpuset
+subsystem. This file contains a list of filenames which should be explicitly
+inherited from the parent (root) cgroup, if not overridden elsewhere.
+The default is cpuset.cpus and cpuset.mems.
+        </description>
+      </list>
+      <scalar name="name" id="global-cgroup-name">
+        <description>
+If this file exists, all guests will be put in one cgroup named after the
+contents of this file. The default is to put each guest in a cgroup named the
+same thing as the guest.
+        </description>
+      </scalar>
+      <scalar name="base">
+       <description>
+If this file exists, all cgroups will be created underneath this directory
+in the cgroup mount point.
+        </description>
+      </scalar>
+      <boolean name="per-ss">
+        <description>
+If this file exists, each subsystem will have its own mount point.
+        </description>
+      </boolean>
+    </collection>
   </collection>
     
   <collection name=".distributions" use="optional">
@@ -321,6 +457,11 @@ this distribution.
         </description>
       </link>
     </collection>
+    <link name="template">
+      <description>
+Symlink to the default template for this distribution.
+      </description>
+    </link>
   </collection>
   
   <!-- Vserver configuration -->
@@ -364,6 +505,20 @@ url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/ccaps-v13.c">lib/cc
 for possible values.
       </description>
     </list>
+    <list name="ncapabilities" since="0.30.212">
+      <description>
+Contains the network capabilities. See <ulink
+url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/ncaps-net.c">lib/ncaps-net.c</ulink>
+for possible values.
+      </description>
+    </list>
+    <list name="umask" since="0.30.216">
+      <description>
+Contains the namespaces allowed to be unshared. See <ulink
+url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/umask-v23.c">lib/umask-v23.c</ulink>
+for possible values.
+      </description>
+    </list>
 
     <boolean id="global-namespace" name="namespace">
       <description>
@@ -381,30 +536,24 @@ the 'barrier' attribute. Else, common chroot(2) exploits are possible.
       </description>
     </boolean>
 
-    <boolean id="global-nonamespace-cleanup" name="nonamespace-cleanup">
+    <boolean id="namespace-cleanup" name="namespace-cleanup">
       <description>
-Overrides the global <optionref ref="global-namespace-cleanup">namespace-cleanup</optionref> flag and disables
+Overrides the global <optionref ref="global-nonamespace-cleanup">nonamespace-cleanup</optionref> flag and enables
 namespace cleanup for the current vserver.
       </description>
     </boolean>
 
-    <boolean name="namespace-cleanup">
-      <description>
-Enable namespace cleanup for the current vserver.
-      </description>
-    </boolean>
-
     <list name="namespace-cleanup-skip">
       <description>
-List of paths to skip during namespace cleanup. This overrides the 
-<optionref ref="global-namespace-cleanup-skip">global namespace-cleanup-skip</optionref>
+List of paths to skip during namespace cleanup. This overrides the global
+<optionref ref="global-namespace-cleanup-skip">namespace-cleanup-skip</optionref>
 file.
       </description>
     </list>
 
     <hash name="schedule">
       <description>
-[experimental; name is subject of possible change] Contains the
+[deprecated; use <optionref ref="sched">sched</optionref> instead] Contains the
 scheduler parameters, one per line.
 
 The Hard CPU limit uses a mechanism called a Token Bucket.  the
@@ -470,7 +619,7 @@ Contains per line a capability. This file is used for the 2.4 kernel
 only; for 2.6 use <optionref>bcapabilities</optionref>.
       </description>
     </list>
-    <scalar name="shell">
+    <scalar id="shell" name="shell">
       <description>
 Contains the pathname of the shell which will be used by the "vserver
 ... enter" command.
@@ -484,57 +633,40 @@ is the personality-type followed by flags (one item per line). See
 values.
       </description>
     </list>
-    <list name="flags">
+    <list name="cflags" id="cflags" since="0.30.216">
       <description>
 Contains per line a flag. See <ulink
 url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/cflags-v13.c">lib/cflags-v13.c</ulink>
 for possible values.
       </description>
-      <!--
-      <elements>
-       <element name="fakeinit">
-         <description>
-The new process will believe it is process number 1. Useful to run a
-real /sbin/init in a vserver. Warning: this flag should not be used
-unless you know what you are doing. Often, it is better to use the
-'plain' initstyle.
-          </description>
-       </element>
-       <element name="lock">
-         <description>
-The new process is trapped and can't use chcontext anymore.
-          </description>
-       </element>
-       <element name="sched">
-         <description>
-The new process and its children will share a common
-          </description>
-       </element>
-       <element name="nproc">
-         <description>
-Limit the number of process in the vserver according to
-ulimit setting. Normally, ulimit is a per user thing.
-With this flag, it becomes a per vserver thing.
-          </description>
-       </element>
-       <element name="private">
-         <description>
-No one can join this security context once created.
-          </description>
-       </element>
-       <element name="ulimit">
-         <description>
-Apply the current ulimit to the whole context
-          </description>
-       </element>
-      </elements>
-      -->
+    </list>
+    <list name="flags">
+      <description>
+Old name for <optionref>cflags</optionref>. Deprecated.
+      </description>
+    </list>
+    <list name="nflags" since="0.30.212">
+      <description>
+Contains a network flag per line. See <ulink
+url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/nflags-net.c">lib/nflags-net.c</ulink>
+for possible values.
+      </description>
     </list>
     <scalar name="context">
       <description>
-Contains the context which shall be used for the vserver.
+Contains the context id which shall be used for the vserver. Valid range is 2 through 49151.
         </description>
     </scalar>
+    <scalar name="ncontext">
+      <description>
+Contains the network context id which shall be used for the vserver. Valid range is 2 through 49151.
+      </description>
+    </scalar>
+    <scalar name="tag">
+      <description>
+Contains the filesystem tag which shall be used for the vserver. Valid range is 2 through 49151.
+      </description>
+    </scalar>
     <data id="fstab" name="fstab">
       <description>
 The fstab file for the vserver. Entries in this file will be mounted
@@ -547,11 +679,16 @@ the 'fstab' file should be used.
     <data id="fstab.remote" name="fstab.remote">
       <description>
 The fstab file for the vserver. Entries in this file will be mounted
-within the network context of the host; this means that mount will be
+within the network context of the guest; this means that mount will be
 called as <command>chbind &lt;options&gt; mount ...</command>. See
 <optionref>fstab</optionref> also.
       </description>
     </data>
+    <scalar name="badness">
+      <description>
+Contains the bias to be applied to processes in this guest when the OOM-killer strikes.
+      </description>
+    </scalar>
     
     <collection name="apps">
       <collection name="init">
@@ -666,7 +803,34 @@ pair per line.
          </description>
        </hash>
       </collection>
-      
+
+      <collection name="vdevmap">
+        <collection name="x" type="sybmolic">
+          <description>'x' is an arbitrary name, replace it with e.g. device names</description>
+          <boolean name="open">
+            <description>When this file exists, the device can be opened</description>
+          </boolean>
+          <boolean name="create">
+            <description>When this file exists, the device can be created (if the guest has <optionref ref="bcapabilities">CAP_MKNOD</optionref>)</description>
+          </boolean>
+          <boolean id="guest-vdevmap-remap" name="remap">
+            <description>
+When this file exists, <optionref ref="guest-vdevmap-target">target</optionref> will
+have to exist as well and opening the device will in fact open the target device
+            </description>
+          </boolean>
+          <scalar name="flags">
+            <description>This file will let you specify unimplemented flags manually</description>
+          </scalar>
+          <scalar name="device">
+            <description>Contains the name of a device node</description>
+          </scalar>
+          <scalar id="guest-vdevmap-target" name="target">
+            <description>Contains the device node of the target node to open instead of the device when <optionref ref="guest-vdevmap-remap">remap</optionref> is set</description>
+          </scalar>
+        </collection>
+      </collection>
+  
       <collection name="vshelper">
        <scalar name="sync-timeout">
          <default>30</default>
@@ -677,7 +841,7 @@ assumed.
          </description>
        </scalar>
        
-       <scalar name="action">
+       <scalar id="vshelper-action" name="action">
          <default>restart</default>
          <description>
 The action which is going to be executed when a vshelper event
@@ -734,7 +898,7 @@ skipped.
       <collection id="vshelper-methods" name="vshelper-methods">
        <program name="handler" type="symbolic">
          <description>
-See vshelper/action.
+See <optionref ref="vshelper-action">vshelper/action</optionref>.
           </description>
        </program>
       </collection>
@@ -1107,10 +1271,13 @@ The name of the current vserver.
     
     <collection name="interfaces">
       <scalar name="bcast">
-       <description>The default broadcast address.</description>
+       <description>The guest's broadcast address.</description>
+      </scalar>
+      <scalar name="lback">
+        <description>The guest's loopback address.</description>
       </scalar>
       <scalar name="dev">
-       <description>The default network device.</description>
+       <description>The default network device. See <optionref ref="per-if-dev">iface/dev</optionref> for more information.</description>
       </scalar>
       <scalar name="prefix">
        <description>The default network prefix-length.</description>
@@ -1149,13 +1316,10 @@ numbers like '00' are good names for these directories.
        </boolean>
        
        <scalar name="ip">
-         <description>The ip which will be assigned to this interface.</description>
-       </scalar>
-       <scalar name="bcast">
-         <description>The broadcast address.</description>
+         <description>The IP address which will be assigned to this interface.</description>
        </scalar>
-       <scalar name="dev">
-         <description>The network device.</description>
+       <scalar name="dev" id="per-if-dev">
+         <description>The network device. When this is specified, the IP address will be assigned and removed when starting and stopping the guest.</description>
        </scalar>
        <scalar name="prefix">
          <description>The network prefix-length.</description>
@@ -1195,6 +1359,52 @@ When this file exists, the steps which setup and destroy a VLAN
 interface will be executed.
          </description>
        </boolean>
+       <boolean name="tun" since="0.30.215">
+         <description>
+When this file exists, a tun interface will be created when the guest
+starts, and removed when the guest stops.
+         </description>
+       </boolean>
+       <boolean name="tap" since="0.30.215">
+         <description>
+When this file exists, a tap interface will be created when the guest
+starts, and removed when the guest stops.
+         </description>
+       </boolean>
+       <boolean name="nocsum" since="0.30.215">
+         <description>
+If a tun or tap interface is created, the presence of this file will
+disable checksumming on it.
+         </description>
+       </boolean>
+       <boolean name="shared" since="0.30.215">
+         <description>
+When this file exists, the tun/tap interface created will not be
+owned by this particular guest.
+         </description>
+       </boolean>
+       <scalar name="uid" since="0.30.215">
+         <description>
+Sets the ownership of tun/tap interfaces. Requires a user id, not a
+username.
+         </description>
+       </scalar>
+       <scalar name="gid" since="0.30.215">
+         <description>
+Sets the group ownership of tun/tap interfaces. Requires a group id,
+not a group name.
+         </description>
+       </scalar>
+       <scalar name="linktype" since="0.30.215">
+         <description>
+Sets the link type of tun/tap interfaces.
+         </description>
+       </scalar>
+       <scalar name="peer" since="0.30.216">
+         <description>
+Sets the peer for a point-to-point link, such as a tun interface.
+         </description>
+       </scalar>
       </collection>
     </collection>
     
@@ -1211,13 +1421,13 @@ in the first line. The special keyword 'inf' is recognized.
       </scalar>
       <scalar name="resource.hard" type="symbolic">
        <description>
-A file which contains the hard- of the given resource in the first
+A file which contains the hard-limit of the given resource in the first
 line. The special keyword 'inf' is recognized.
        </description>
       </scalar>
       <scalar name="resource.soft" type="symbolic">
        <description>
-A file which contains the soft- of the given resource in the first
+A file which contains the soft-limit of the given resource in the first
 line. The special keyword 'inf' is recognized.
        </description>
       </scalar>
@@ -1226,7 +1436,8 @@ line. The special keyword 'inf' is recognized.
     <collection name="rlimits">
       <description>
 A directory with resource limits. Possible resources are cpu, fsize,
-data, stack, core, rss, nproc, nofile, memlock, as and locks. This
+data, stack, core, rss, nproc, nofile, memlock, as, locks, msgqueue,
+nsock, openfd, anon, shmem, semary, nsems and dentry. This
 configuration will be honored for kernel 2.6 only.
       </description>
       <scalar name="resource" type="symbolic">
@@ -1237,19 +1448,19 @@ in the first line. The special keyword 'inf' is recognized.
       </scalar>
       <scalar name="resource.hard" type="symbolic">
        <description>
-A file which contains the hard- of the given resource in the first
+A file which contains the hard-limit of the given resource in the first
 line. The special keyword 'inf' is recognized.
        </description>
       </scalar>
       <scalar name="resource.soft" type="symbolic">
        <description>
-A file which contains the soft- of the given resource in the first
+A file which contains the soft-limit of the given resource in the first
 line. The special keyword 'inf' is recognized.
        </description>
       </scalar>
       <scalar name="resource.min" type="symbolic">
        <description>
-A file which contains the guaranted minimum of the given resource in
+A file which contains the guaranteed minimum of the given resource in
 the first line. The special keyword 'inf' is recognized.
         </description>
       </scalar>
@@ -1284,7 +1495,11 @@ tools and can *not* be modified.
     </collection>
 
     <collection name="dlimits" since="0.30.210">
-      <collection name="dlimit" type="symbolic">
+      <description>
+Note that all entries are required for the disk limit to be applied.
+      </description>
+      <collection name="x" type="symbolic">
+        <description>'x' is an arbitrary name, replace it with e.g. integers</description>
         <scalar name="directory">
           <description>The directory to which the limit should be applied</description>
         </scalar>
@@ -1300,7 +1515,22 @@ tools and can *not* be modified.
       </collection>
     </collection>
 
+    <collection name="sysctl" since="0.30.213">
+      <collection name="x" type="symbolic">
+        <description>'x' is an arbitrary name, replace it with e.g. integers</description>
+        <scalar name="setting">
+          <description>The sysctl setting</description>
+        </scalar>
+        <scalar name="value">
+          <description>The value</description>
+        </scalar>
+      </collection>
+    </collection>
+
     <collection name="cpuset" since="0.30.211">
+      <description>
+Puts the guest in a cpuset. Required entries are name, cpus and mems.
+      </description>
       <scalar name="name">
         <description>The name of the cpuset for this vserver</description>
       </scalar>
@@ -1321,7 +1551,7 @@ tools and can *not* be modified.
       </scalar>
     </collection>
 
-    <collection name="sched" since="0.30.212">
+    <collection id="sched" name="sched" since="0.30.212">
       <scalar id="global-tokens" name="tokens">
         <description>The initial amount of tokens to put in the bucket</description>
       </scalar>
@@ -1361,24 +1591,24 @@ tools and can *not* be modified.
           <description>The bucket's size</description>
         </scalar>
         <scalar name="fill-rate">
-          <description>Amount of tokens to add each <optionref ref="interval">interval</optionref></description>
+          <description>Amount of tokens to add each <optionref ref="local-interval">interval</optionref></description>
         </scalar>
-        <scalar name="interval">
+        <scalar id="local-interval" name="interval">
           <description>The interval between refills of the bucket</description>
         </scalar>
         <scalar name="priority-bias">
           <description>Bias added to priorities calculated within the guest (result is clamped to -20/+19)</description>
         </scalar>
         <scalar name="fill-rate2">
-          <description>Amount of tokens to add each <optionref ref="interval2">interval2</optionref> when advancing idle time</description>
+          <description>Amount of tokens to add each <optionref ref="local-interval2">interval2</optionref> when advancing idle time</description>
         </scalar>
-        <scalar name="interval2">
+        <scalar id="local-interval2" name="interval2">
           <description>The interval between refills of the bucket when advancing idle time</description>
         </scalar>
         <boolean name="idle-time">
           <description>When this file exists, advancing idle time is activated</description>
         </boolean>
-        <scalar name="cpu-id">
+        <scalar id="cpu-id" name="cpu-id">
           <description>The CPU to apply these settings to</description>
         </scalar>
         <scalar name="bucket-id">
@@ -1386,5 +1616,50 @@ tools and can *not* be modified.
         </scalar>
       </collection>
     </collection>
+
+    <collection name="spaces" since="0.30.215">
+      <boolean name="pid">
+        <description>Enables pid virtualization for this guest</description>
+      </boolean>
+      <boolean name="net">
+        <description>Enable network virtualization for this guest</description>
+      </boolean>
+      <scalar name="mask">
+        <description>Contains a mask of spaces to clone/enter</description>
+      </scalar>
+    </collection>
+
+    <collection name="ionice" since="0.30.216">
+      <scalar name="class">
+        <description>The IO scheduling class to use for this guest (see ionice(1)).</description>
+      </scalar>
+      <scalar name="priority">
+        <description>The IO scheduling priority to use for this guest (see ionice(1)).</description>
+      </scalar>
+    </collection>
+
+    <collection name="cgroup" use="optional" since="0.30.216" id="guest-cgroup">
+      <description>
+This directory contains cgroup settings to be applied to this guest.
+See your kernel documentation for what settings are valid with your
+configuration.
+      </description>
+      <scalar name="name">
+        <description>
+If this file exists, the guest will be put in a cgroup named after the
+contents of this file. The default is to name the cgroup the same thing as the
+guest, unless
+<optionref ref="global-cgroup-name">.defaults/cgroup/name</optionref> says
+otherwise.
+        </description>
+      </scalar>
+    </collection>
+    <scalar name="nocgroup" since="0.30.216">
+      <description>
+If this file exists,
+<optionref ref="global-cgroup">.defaults/cgroup</optionref> will be ignored
+for this guest.
+      </description>
+    </scalar>
   </collection>
   </database>