LiVM is a minimal Linux in a Virtual Machine. It is created to automate testing of low-level utilities like setfont.
It consists of:
There is nothing more inside, but glibc and scp is a good foundation to bootstrap anything you want. :)
$ wget https://github.com/dmage/livm/releases/download/v0.2.0/livm-0.2.0.tar.gz
$ tar -xf livm-0.2.0.tar.gz -C /usr/local
$ livm start ./vm1
$ touch foo && livm scpto ./vm1 ./foo .
$ livm ssh ./vm1 'exec >/dev/tty0; clear; ls -la'
$ livm screenshot ./vm1 screenshot.ppm
$ livm stop ./vm1
$ if [ "$(uname -s)" == "Darwin" ]; then eval `docker-machine env`; fi
$ make
$ ./bin/livm start ./vm1
$ ./bin/livm ssh ./vm1
$ ./bin/livm stop ./vm1
By default, it binds to the host port 2222. If it's already in use by another program or you want to run multiple machines simultaneously, you can choose a different port:
$ LIVM_SSH_PORT=8022 livm start ./vm
Yes, all you need is a POSIX shell and QEMU.
Yes, but you need Docker.
$ LIVM_DEBUG=1 livm start ./vm
$ LIVM_VGA=0x303 livm start ./vm
$ LIVM_DEBUG=1 LIVM_VGA=ask livm start ./vm
$ make kernel-menuconfig
$ make
Upgrading to X.Y:
$ sed -i.bak -e 's/^\(KERNEL_VERSION =\).*/\1 X.Y/' ./mkinclude/kernel.mk
$ make kernel-menuconfig KERNEL_MENUCONFIG=oldconfig
$ make share/boot/vmlinuz