SupportedSystems - GaloisInc/HaLVM GitHub Wiki

Supported Systems

Galois does its primary HaLVM development work on Fedora.

Typically, you can expect that we're using 64-bit machines running either the latest version of Fedora or the version prior. For example, at the moment (4Dec2016) we support anything from Fedora 23 on, but will probably stop testing Fedora 23 versions in the next couple months.

We also have build slaves running builds for these (Fedora RELEASE and RELEASE-1), for 32-bit PAE Fedora systems (RELEASE and RELEASE-1), and for whatever Ubuntu LTS is most recent. However, these only do build testing, not actual testing.

Every once and awhile, we'll also do a test or three on Arch. Usually it's when someone reminds us to do it, though, or files a bug.

Multi-CPU Systems

In prior versions of the HaLVM, we supported multi-vCPU HaLVMs. Since those releases, we have found various instabilities whose source would require deep changes to the underlying infrastructure. We strongly recommend against using multi-vCPU systems for now.

Potentially Useful Xen Modifications

When developing HaLVMs inside Galois, we make two small-in-text but drastic-in-effect changes to Xen. These changes make it much easier for us to develop HaLVMs, at the expense of slowing the system down in one case and throwing out a whole security mechanism in another.

Turn On The Verbose Flag

Firstly, when building Xen, we turn on the verbose flag. We usually do this by simply modifying the file xen/Rules.mk to change verbose ?= n to verbose ?= y; but you can do this in several possible ways depending on your preferences (for example, make debug=y in the root directory would probably suffice).

We suspect that this slows the kernel down, but we haven't done any testing to confirm or quantify this.

If you want to work with Fedora, then we have a yum repository all set up and ready to go for you. If you are viewing this wiki page on your development machine, you should be able to click here for Fedora 24 or click here for Fedora 25. Otherwise, you can download and install the package from the command line, as follows:

For Fedora 24:

 dnf install http://repos.halvm.org/fedora-24/x86_64/halvm-yum-repo-24-3.fc24.noarch.rpm

For Fedora 25:

 dnf install http://repos.halvm.org/fedora-25/x86_64/halvm-yum-repo-25-3.fc25.noarch.rpm

Then run yum update and yum install halvm-xen halvm-xen-devel. Eventually we should probably put pre-packaged versions of the HALVM, there.

For those not using Fedora, then all you need to do is add 'verbose=y' to whatever make command your packaging system uses.

... And then make it do something.

Once you've built a version of Xen with the verbose flag on, you then actually have to tell Xen to push data out in a way that you can reach it. To do so, you need to add this line to /etc/default/grub:

 GRUB_CMDLINE_XEN="console_to_ring loglvl=all guest_loglvl=all"

Then regenerate your grub configuration. Typically, this is the command you want, but consult your operating system's documentation to be sure:

 % grub2-mkconfig -o /boot/grub2/grub.cfg

Once rebooted, you'll now have a version of Xen that's much handier for debugging. Using the HaLVM function writeDebugConsole will do a (mostly) buffer-free write to an internal log, which you can access via the Xen command:

 % sudo xl dmesg

One way to verify that you have done all the preceding steps correctly is to run a HaLVM; somewhere in the output, you should see something like this:

 (d99) Starting 1-CPU HaLVM