summaryrefslogtreecommitdiff
path: root/README.md
blob: 63a2c0f15dd7cf77f2f6bd9d71cb165e1bfe92db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
What is debvm?
==============

The purpose of this tool is creating and running simple virtual machines based
on Debian releases. A typical application is testing. Consequently, this has
been designed to work without root privileges[^1]. Rather than do thing itself,
it builds primarily on
[mmdebstrap](https://gitlab.mister-muffin.de/josch/mmdebstrap/) and
[qemu](http://www.qemu.org/).

How do you use it?
==================

The first tool is `debvm-create`. It creates a rootfs ext4 raw filesystem
image. This image has configurable architecture, hostname, root's ssh key,
Debian mirror, and release as well as image size and included packages. In
essence, it is a wrapper constructing a complex `mmdebstrap` invocation.

Given such an image, `debvm-run` can be used to run it. It extracts the kernel
and initrd from the filesystem image and constructs a suitable `qemu`
invocation.

What do I need?
===============

A regular user account[^1] suffices. The following Debian packages should be
installed:
 * `arch-test` (when running foreign images)
 * `e2fsprogs`
 * `genext2fs` (used by `mmdebstrap`)
 * `mmdebstrap`
 * `qemu-system-something`
 * `qemu-user-static` (when creating foreign images)

What is this image format precisely?
====================================

The image is a sparse ext4 file system image. It contains the root filesystem
of a (Debian) installation including an init system and a kernel. There is no
partition table or bootloader. The following paths are assumed inside:
 * `/bin/true` is used to detect the architecture of an image
 * `/vmlinuz` must be a symbolic link pointing to a regular file containing
   the kernel.
 * `/initrd.img` must be a symbolic link pointing to a regular file containing
   the initrd image.

License
=======

The debvm tools are licensed under the MIT license.

Contributors
============

 * Helmut Grohne (main author)
 * Johannes Schauer Marin Rodrigues (main author of `mmdebstrap`)

[^1] This technically is a lie. It employs user namespaces and thus requires
     the setuid binary `newuidmap` as well as a suitable subuid allocation.