summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorHelmut Grohne <helmut@subdivi.de>2022-12-20 14:29:17 +0100
committerHelmut Grohne <helmut@subdivi.de>2022-12-20 14:29:17 +0100
commite3258ab831172b3760577507b0437365f343cc5e (patch)
tree9a007fca948beb324dc4ea5acd10382665d73586 /README.md
downloaddebvm-e3258ab831172b3760577507b0437365f343cc5e.tar.gz
initial checkin
Diffstat (limited to 'README.md')
-rw-r--r--README.md59
1 files changed, 59 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..63a2c0f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,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.