The AtmanOS includes a Vagrantfile whch describes a development Xen environment. To use this development environment, you'll need:
- Vagrant: https://www.vagrantup.com/
- VirtualBox: https://www.virtualbox.org/
If you're on OS X and use Homebrew, you can get these with:
$ brew cask install vagrant virtualbox
If you've just downloaded the AtmanOS project, run bin/setup
to download the
required dependencies and build AtmanOS.
Once you've run bin/setup
, rebuilding AtmanOS can be done with make build
.
From the root directory of the AtmanOS project, run:
$ vagrant up
The first time you run this, it will take a while, as it needs to install Xen and reboot the virtual machine.
Once the command completes, you should be able to connect to the machine by
running vagrant ssh
.
At any time you can use vagrant halt
to shut down the virtual machine, or
vagrant pause
to pause it for faster boot later.
For this section, we'll be using the hello program from the repository of AtmanOS example programs.
Download the program with:
$ go get github.com/atmanos/example/hello
You can run hello
locally to see that it first prints "Hello, world", and
then prints the current time every few seconds.
But we want to run the hello
program on Xen!
To do that, we'll first need to build a kernel image with atman
:
$ bin/atman build -o vagrant/images/hello \
github.com/atmanos/example/hello
We told atman
to put the built image in vagrant/images
. That allows up to
transfer the image to the Vagrant environment with:
$ vagrant rsync
Finally, we can run our hello
kernel with:
$ vagrant ssh -- startvm hello
The startvm
command is a wrapper for a few Xen
commands, stopping any existing machine with the same name, and then starting a
new machine with the default template.
To see the output of hello
, attach to the console with another Xen
wrapper:
$ vagrant ssh -- console hello
Hello, world
The current time is 2016-04-23 23:53:05.651799283 +0000 UTC
The current time is 2016-04-23 23:53:10.651806585 +0000 UTC
The current time is 2016-04-23 23:53:15.651807123 +0000 UTC
Success!
Now we can stop the hello
machine with:
$ vagrant ssh -- sudo xl destroy hello