/AnICA-Artifact

Vagrant VM config for the AnICA aritfact eval

Primary LanguageShellMIT LicenseMIT

Artifact for "AnICA: Analyzing Inconsistencies in Microarchitectural Code Analyzers"

This repository provides the scripts used to generate the Vagrant Virtual Machine of the AnICA research artifact. Usage without the VM is possible, but might require you to apply some steps from vm_setup/setup/bootstrap.sh and vm_setup/setup/post_install.sh.

You can find a pre-built version of this artifact on Zenodo.

Context: The AnICA Project

This repo is a part of the AnICA project. Here are more related resources, for some context:

  • The project page provides general information on the project.
  • AnICA, the repo for the implementation of the core AnICA algorithm. Start there if you want to work with AnICA without the artifact VM and don't want to use the browser-based user interface.
  • AnICA-UI, the repo for the accompanying browser-based user interface for inspecting discovered inconsistencies. Start there if you want to work with AnICA without the artifact VM and you want to use the UI.
  • iwho, a subcomponent of AnICA that provides a convenient abstraction around instructions, which in this project greatly eases the task of randomly sampling valid basic blocks. Start there if you only want to use the instruction schemes abstraction, independent of AnICA.
  • AnICA-Artifact (this repository), which provides the scripts used to generate the AnICA research artifact.
  • The pre-built artifact on Zenodo, including a Vagrant VM and a guide to reproduce our results.

Setting up the VM

The artifact is provided as a Vagrant Virtual Machine using the Virtual Box provider. To run it, you will need to install Vagrant as described here:

https://www.vagrantup.com/intro/getting-started/install.html

and also Virtual Box as available here:

https://www.virtualbox.org/

Depending on your hardware platform, it might be necessary to enable virtualization options in your system's BIOS to use virtual box.

First, fetch all the code and data:

./make_vm.sh

Use the following command to build the VM:

cd vm_setup
vagrant up

Once this is done, ssh to the VM and run the post-install scripts:

vagrant ssh
./setup/post_install.sh
./setup/reduce_size.sh

Next, leave the VM and package it up:

exit
vagrant package --output ../anica-artifact.box

Take the resulting box and put it into an archive together with the shipping vagrant file:

cd ..
tar -czvf anica-artifact.tgz Vagrantfile anica-artifact.box

Done!