xen: fixes (authored by michalpalka)

Xen required a few changes in order to be usable:
* Include xenfs module in initrd as loading it in the activation
script was failing.
* Include /etc/default/xendomains, which is needed by
xen-domains service.
* Create /var/log/xen and /var/lib/xen directories in
the xen-store service, which are needed by the xl command.
The directories could be created by any other script as long as
they are guaranteed to exist before xl is called.
* Fix a reference to /bin/ls in the xendomains script.

Changed files
+12 -1
nixos
modules
virtualisation
pkgs
applications
virtualization
+9 -1
nixos/modules/virtualisation/xen-dom0.nix
···
"xenfs"
];
+
# The xenfs module is needed in system.activationScripts.xen, but
+
# the modprobe command there fails silently. Include xenfs in the
+
# initrd as a work around.
+
boot.initrd.kernelModules = [ "xenfs" ];
# The radeonfb kernel module causes the screen to go black as soon
# as it's loaded, so don't load it.
···
{ source = "${pkgs.xen}/etc/xen/scripts";
target = "xen/scripts";
}
+
{ source = "${pkgs.xen}/etc/default/xendomains";
+
target = "default/xendomains";
+
}
];
# Xen provides udev rules.
···
rm -f "$XENSTORED_ROOTDIR"/tdb* &>/dev/null
mkdir -p /var/run
-
${optionalString cfg.trace "mkdir -p /var/log/xen"}
+
mkdir -p /var/log/xen # Running xl requires /var/log/xen and /var/lib/xen,
+
mkdir -p /var/lib/xen # so we create them here unconditionally.
grep -q control_d /proc/xen/capabilities
'';
serviceConfig.ExecStart = ''
+3
pkgs/applications/virtualization/xen/generic.nix
···
--replace /etc/xen/scripts/hotplugpath.sh $out/etc/xen/scripts/hotplugpath.sh \
--replace /bin/ls ls
+
substituteInPlace tools/hotplug/Linux/xendomains \
+
--replace /bin/ls ls
+
# Xen's tools and firmares need various git repositories that it
# usually checks out at time using git. We can't have that.
${flip concatMapStrings xenConfig.toolsGits (x: let src = fetchgit x.git; in ''