When booting a virtual machine with a kernel/initrd it is possible
to pass command line arguments using the <cmdline>...args...</cmdline>
element in the guest XML. These appear to the kernel / init process
in /proc/cmdline.
When booting a container we do not have a custom /proc/cmdline,
but we can easily set an environment variable for it. Ideally
we could pass individual arguments to the init process as a
regular set of 'char *argv[]' parameters, but that would involve
libvirt parsing the <cmdline> XML text. This can easily be added
later, even if we add the env variable now
* docs/drvlxc.html.in: Document env variables passed to LXC
* src/conf/domain_conf.c: Add <cmdline> to be parsed for
guests of type='exe'
* src/lxc/lxc_container.c: Set LIBVIRT_LXC_CMDLINE env var
</p>
+<h2>Environment setup for the container init</h2>
+
+<p>
+When the container "init" process is started, it will be given several useful
+environment variables.
+</p>
+
+<dl>
+<dt>LIBVIRT_LXC_NAME</dt>
+<dd>The name assigned to the container by libvirt</dd>
+<dt>LIBVIRT_LXC_UUID</dt>
+<dd>The UUID assigned to the container by libvirt</dd>
+<dt>LIBVIRT_LXC_CMDLINE</dt>
+<dd>The unparsed command line arguments specified in the container configuration</dd>
+</dl>
+
+
<h3>Example config version 1</h3>
<p></p>
<pre>
goto error;
}
}
+ def->os.cmdline = virXPathString("string(./os/cmdline[1])", ctxt);
}
if (STREQ(def->os.type, "xen") ||
virCommandAddEnvString(cmd, "TERM=linux");
virCommandAddEnvPair(cmd, "LIBVIRT_LXC_UUID", uuidstr);
virCommandAddEnvPair(cmd, "LIBVIRT_LXC_NAME", vmDef->name);
+ if (vmDef->os.cmdline)
+ virCommandAddEnvPair(cmd, "LIBVIRT_LXC_CMDLINE", vmDef->os.cmdline);
return cmd;
}