summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-09-27 14:51:44 +0300
committerLars Wirzenius <liw@liw.fi>2018-09-27 14:51:44 +0300
commit59b28e322eaef12b2f9f86f6b97f4ccc7f17032d (patch)
tree15321d6df3dd362428c031be9b84eca034dded33
parent0720948fced6f3a904a32a6a64723424adceb84d (diff)
downloadvmdb2-59b28e322eaef12b2f9f86f6b97f4ccc7f17032d.tar.gz
Drop: obsolete start of manual
-rw-r--r--doc/Makefile10
-rw-r--r--doc/en/000.mdwn217
-rwxr-xr-xdoc/format-html15
-rwxr-xr-xdoc/format-pdf19
-rw-r--r--doc/vmdb2.css79
5 files changed, 0 insertions, 340 deletions
diff --git a/doc/Makefile b/doc/Makefile
deleted file mode 100644
index 04e9486..0000000
--- a/doc/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-formats: vmdb2.en.html vmdb2.en.pdf
-en_srcs = $(wildcard en/*)
-
-all: $(formats)
-
-vmdb2.en.html: $(en_srcs) vmdb2.css
- ./format-html "$@" ${en_srcs}
-
-vmdb2.en.pdf: $(en_srcs)
- ./format-pdf "$@" ${en_srcs}
diff --git a/doc/en/000.mdwn b/doc/en/000.mdwn
deleted file mode 100644
index 87d7e76..0000000
--- a/doc/en/000.mdwn
+++ /dev/null
@@ -1,217 +0,0 @@
----
-title: Building Debian system images with vmdb2
-author: Lars Wirzenius
-date: work-in-progress
-...
-
-# Introduction
-
-`vmdb2` installes [Debian][] **system images**. The image may be in a
-disk image file or a block device, such as a real hard disk, a
-partition, a logical volume, or similar.
-
-Other similar software exists, such as `vmdebootstrap`, an earlier
-attempt by the same author.
-
-[Debian]: https://www.debian.org
-
-## Why vmdb2 given vmdebootstrap already existed
-
-`vmdebootstrap` was the first attempt by Lars Wirzenius to write a
-tool to build system images. It turned out to not be well designed.
-Specifically, it was not easily extensible to be as flexible as a tool
-of this sort should be.
-
-## Why vmdb2 given other tools already exist
-
-Lars likes to write tools for himself and had some free time. He
-sometimes prefers to write his own tools rather than spend time and
-energy evaluating existing tools.
-
-Also, he felt ashamed of how messy `vmdebootstrap` turned out to be.
-
-If nobody else likes `vmdb2`, that just means Lars had some fun on his
-own.
-
-# Installation
-
-You can install `vmdb2` from a .deb package on [code.liw.fi/debian][],
-Lars's personal APT repository. You can also get the source code with
-git from [vmdb2 git][], and run `./vmdb2` from the source tree: the
-program doesn't need to be installed anywhere.
-
-[code.liw.fi/debian]: http://code.liw.fi/debian/
-[vmdb2 git]: http://git.liw.fi/vmdb2
-
-# Quick start
-
-- sample .vmdb2
-- command to run vmdb2 and produce an image
-- command to run vm using image
-
-`vmdb2` requires an **image specification file** as input. Here is a
-small example:
-
-~~~
-steps:
- - mkimg: "{{ output }}"
- size: 4G
-
- - mklabel: msdos
- device: "{{ output }}"
-
- - mkpart: primary
- device: "{{ output }}"
- start: 0%
- end: 100%
- part-tag: root-part
-
- - mkfs: ext4
- partition: root-part
-
- - mount: root-part
- fs-tag: root-fs
-
- - unpack-rootfs: root-fs
-
- - debootstrap: stretch
- mirror: http://deb.debian.org/debian
- target: root-fs
- unless: rootfs_unpacked
-
- - apt: linux-image-amd64
- fs-tag: root-fs
- unless: rootfs_unpacked
-
- - cache-rootfs: root-fs
- unless: rootfs_unpacked
-
- - chroot: root-fs
- shell: |
- apt -y install python
-
- - shell: |
- printf '[pc]\n%s hostname=pc\n' "$ROOT" > pc.inventory
- ansible-playbook -i pc.inventory -c chroot pc.yml
- root-fs: root-fs
-
- - grub: bios
- root-fs: root-fs
- root-part: root-part
- device: "{{ output }}"
-~~~
-
-It's a bit of a mouthful, and needs to be unpacked to be understood,
-though every part is really quite simple. First of all, the file is in
-[YAML][] format, which is a standard format not specific to `vmdb2` at
-all. The top level is the `steps` key, which has as its value a list
-of **steps**. The steps instruct `vmdb2` what it should do, and in
-which order, to build the image.
-
-[YAML]: https://en.wikipedia.org/wiki/YAML
-
-The previous `vmdebootstrap` program hard coded the sequence of steps
-to build an image, and provided command line options to vary the steps
-in minor ways. The `vmdb2` approach gives more flexibility with less
-complexity, and is more easily testable.
-
-Each step consists of a set of key/value pairs. For example, the first
-step creates a disk image file:
-
- - mkimg: "{{ output }}"
- size: 4G
-
-`mkimg` identifies the step. The value is a [Jinja2][] template. In
-this case, the template expands to the value of the `output` variable,
-which contains the value of the `--output` command line option,
-meaning the name of the output file. Jinja2 is a powerful templating
-engine, and `vmdb2` uses it, amongst other reasons, to avoid
-implementing a custom language for using variables.
-
-[Jinja2]: http://jinja.pocoo.org/
-
-The `size` key specifies the size of the disk image file that gets
-created. `vmdb2` uses the `qemu-img` tool to create the image file and
-the size value can be anything that `qemu-img` accepts.
-
-The rest of the steps create a partition table (`mklabel`), a
-partition (`mkpart`), and a filesystem (`mkfs`), as well as mount the
-filesystem as the root filesystem. Partitions and mount points get
-assigned **tags**, which allow later steps to refer to them, without
-having to hardcode a directory or device name. Those tend to be a bit
-random and vary from run to run, so hardcoding wouldn't work anyway.
-
-The `debootstrap` step runs `debootstrap`, i.e., actually installs
-Debian into the image. This can take a while, so `vmdb2` provides a
-caching mechanism, to speed up iterations (unlike you, Lars never gets
-things right the first one). This caching is done by using the
-`--rootfs-tarball` command line option and the `unpack-rootfs` step,
-and the `unless: rootfs_unpacked` key/value pair in selected steps.
-Caching works like this: the filename given to `--rootfs-tarball` is
-the cache filename. The `unpack-rootfs` looks for the cache file; if
-it exists, it unpacks it, and sets the `rootfs_unpacked` variable to a
-Boolean true value. Any other step can be tagged with `unless`, and if
-the named value is true, the step is skipped. Thus, if the cache file
-exists, the `debootstrap` step is skipped. Finally, the `cache-rootfs`
-step creates a compressed tar archive of the filesystem, and that step
-is also skipped if the `unless` tells `vmdb2` to skip it.
-
-At the end, the `grub` step installs the GRUB bootloader. The example
-installs a version compatible with traditional PC BIOS systems, which
-works fine with virtual machine providers. A variabnt to support UEFI
-systems is also available.
-
-To run `vmdb2` with the above example, run a command like this:
-
- vmdb2 pc.vmdb --output foo.img --rootfs-tarball foo.tar.gz
-
-This tells `vmdb2` to read the image specification file from
-`pc.vmdb`, place the output in `foo.img` and use `foo.tar.gz` as the
-cache tar archive.
-
-
-# Configuration
-
-- command line options, list them and give summary of use
-- cliapp config files, ini and yaml, and the fact that a long
- option is always an acceptable variable in a config file
-
-`vmdb2` has a number of command line options. Run `vmdb2 --help` to
-see them all, or look at the manual page (`man vmdb2`).
-
-Each long option (`--output` for example) can be a **configuration
-variable** in a configuration file. The program looks up and reads
-several configration files, such as `~/.config/vmdb2/*.conf` and
-`*.yaml` in the same directory. `.yaml` files use a YAML syntax,
-everything else uses INI file syntax.
-
-Example: Store the following as `~/.config/vmdb2/vmdb2.yaml`:
-
- config:
- output: /tmp/vmdb2.img
- log: /tmp/vmdb2.log
- rootfs-tarball: /tmp/vmdb2.tar.gz
-
-This is equivalent of running `vmdb2--output=/tmp/vmdb2.img
---log=/tmp/vmdb2.log --rootfs-tarball=/tmp/vmdb2.tar.gz`.
-
-See **cliapp**(5) for more detailed information about configuration
-files. cliapp is a Python library that `vmdb2` uses for command line
-handling, configuration files, and such things.
-
-# List of available steps and their configuration
-
-- list each step
-- what is the step for? examples of how it could be used
-- what mandatory and optional key/value pairs does it
- understand? examples of their use
-- the tag concept
-
-# Examples
-
-- various spec files, explained in detail
-- simple image to run under kvm, qemu, or similar, boots with
- normal grub (bios)
-- same but with uefi boot
-- same but software installed with ansible
-- an LVM enabled image with encrypted / but cleartext /boot
diff --git a/doc/format-html b/doc/format-html
deleted file mode 100755
index 88147e8..0000000
--- a/doc/format-html
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-output="$1"
-shift
-
-pandoc -H vmdb2.css\
- --smart \
- --toc \
- --chapters \
- --number-sections \
- --standalone \
- --self-contained \
- -o "$output" "$@"
diff --git a/doc/format-pdf b/doc/format-pdf
deleted file mode 100755
index 6915245..0000000
--- a/doc/format-pdf
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-output="$1"
-shift
-
-pandoc --smart \
- --toc \
- --chapters \
- --number-sections \
- -Vdocumentclass:report \
- -Vgeometry:a4paper \
- -Vfontsize:12pt \
- -Vmainfont:FreeSans \
- -Vsansfont:FreeSans \
- -Vmonofont:FreeMonoBold \
- --latex-engine=xelatex \
- -o "$output" "$@"
diff --git a/doc/vmdb2.css b/doc/vmdb2.css
deleted file mode 100644
index 78cd374..0000000
--- a/doc/vmdb2.css
+++ /dev/null
@@ -1,79 +0,0 @@
-<style>
-html {
- background: white;
- font-family: serif;
- margin-left: 3em;
- margin-right: 2em;
- margin-top: 2em;
-}
-
-form#searchform {
- font-family: monospace;
- text-align: right;
-}
-
-div.actions {
- font-family: monospace;
- text-align: right;
-}
-
-div.actions ul, div.actions li {
- display: inline;
-}
-
-div.pageheader {
- font-family: monospace;
- margin-bottom: 2em;
-}
-
-div.pageheader span.title {
- display: block;
- font-size: 200%;
- font-weight: bold;
- font-family: sans-serif;
- margin-top: 0.5em;
-}
-
-div#pagebody {
-}
-
-div.pagefooter {
- font-family: monospace;
- margin-top: 3em;
-}
-
-div#pagebody {
-}
-
-div#TOC ul {
- list-style: none;
-}
-
-h1, h2, h3, h4, h5, h6 {
- font-family: sans-serif;
- font-weight: bold;
- margin-top: 2em;
-}
-
-h1 {
- font-size: 150%;
-}
-
-h2 {
- font-size: 120%;
-}
-
-h3 {
- font-size: 100%;
-}
-
-ul li, ol li {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-pre {
- margin-left: 4em;
-}
-
-</style>