Skip to content

Commit

Permalink
Fix grammer/spelling issues in README
Browse files Browse the repository at this point in the history
Signed-off-by: Christopher Obbard <[email protected]>
  • Loading branch information
obbardc committed Jan 12, 2024
1 parent 51537f1 commit f5e2283
Show file tree
Hide file tree
Showing 2 changed files with 164 additions and 83 deletions.
93 changes: 52 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# debos - Debian OS images builder
# debos - Debian OS image builder

## Synopsis

Expand Down Expand Up @@ -27,14 +27,15 @@ Application Options:

debos is a tool to make the creation of various Debian-based OS images
simpler. While most other tools focus on specific use-cases, debos is
more meant as a tool-chain to make common actions trivial while providing
enough rope to do whatever tweaking that might be required behind the scene.
designed to be a toolchain making common actions trivial while providing
enough rope to do whatever tweaking which might be required behind the
scenes.

debos expects a YAML file as input and will run the actions listed in the
debos expects a YAML file as input and runs the actions listed in the
file sequentially. These actions should be self-contained and independent
of each other.

Some of the actions provided by debos to customize and produce images are:
Some of the actions provided by debos to customise and produce images are:

* apt: install packages and their dependencies with 'apt'
* debootstrap: construct the target rootfs with debootstrap
Expand All @@ -57,14 +58,14 @@ https://godoc.org/github.com/go-debos/debos/actions

## Installation (Docker container)

Official debos container is available:
An official debos container is available:
```
docker pull godebos/debos
```

See [docker/README.md](https://github.com/go-debos/debos/blob/master/docker/README.md) for usage.

## Installation (under Debian)
## Installation from source (under Debian)

sudo apt install golang git libglib2.0-dev libostree-dev qemu-system-x86 \
qemu-user-static debootstrap systemd-container
Expand All @@ -74,9 +75,9 @@ See [docker/README.md](https://github.com/go-debos/debos/blob/master/docker/READ

## Simple example

The following example will create a arm64 image, install several
The following example will create an arm64 image, install several
packages in it, change the file /etc/hostname to "debian" and finally
make a tarball.
make a tarball of the complete system.

{{- $image := or .image "debian.tgz" -}}

Expand Down Expand Up @@ -107,8 +108,8 @@ To run it, create a file named `example.yaml` and run:
debos example.yaml

The final tarball will be named "debian.tgz" if you would like to modify
this name, you can provided a different name for the variable image like
this:
the fileame, you can provided a different name for the variable image
like this:

debos -t image:"debian-arm64.tgz" example.yaml

Expand All @@ -120,59 +121,69 @@ https://github.com/go-debos/debos-recipes

## Environment variables

debos read a predefined list of environment variables from the host and
propagates it to fakemachine. The set of environment variables is defined by
environ_vars on cmd/debos/debos.go. Currently the list of environment variables
includes the proxy environment variables as documented at:
debos reads a predefined list of environment variables from the host and
propagates them to the fakemachine build environemnt. The set of
environment variables is defined by `environ_vars` in
`cmd/debos/debos.go`. Currently the list of environment variables includes
the proxy environment variables documented at:

https://wiki.archlinux.org/index.php/proxy_settings

The list of environment variables currently exported to fakemachine is:

http_proxy, https_proxy, ftp_proxy, rsync_proxy, all_proxy, no_proxy

While the elements of environ_vars are in lower case, for each element both
lower and upper case variants are probed on the host, and if found propagated
to fakemachine. So if the host has the environment variables HTTP_PROXY and
no_proxy defined, both will be propagated to fakemachine respecting the case.
While the elements of `environ_vars` are in lower case, for each element
both lower and upper case variants are probed on the host and if found
propagated to fakemachine. So if the host has the environment variables
HTTP_PROXY and no_proxy defined, both will be propagated to fakemachine
respecting the case.

The command line options --environ-var and -e can be used to specify,
overwrite, and unset environment variables for fakemachine with the syntax:
The command line options `--environ-var` and `-e` can be used to specify,
overwrite and unset environment variables for fakemachine with the syntax:

$ debos -e ENVIRONVAR:VALUE ...

To unset an enviroment variable, or in other words, to prevent an environment
variable to be propagated to fakemachine, use the same syntax without a value.
debos accept multiple -e simultaneously.
To unset an environment variable, or in other words, to prevent an
environment variable being propagated to fakemachine, use the same syntax
without a value. debos accepts multiple -e simultaneously.

## Proxy configuration

While the proxy related environment variables are exported from the host to
fakemachine, there are two known sources of issues:
While the proxy related environment variables are exported from the host
to fakemachine, there are two known sources of issues:

* Using localhost will not work from fakemachine. Prefer using an address that is valid on your network. debos will warn if environment variables contain localhost.
* Using localhost will not work from fakemachine. Use an address which
is valid on your network. debos will warn if the environment variables
contain localhost.

* In case you are running applications and/or scripts inside fakemachine you may need to check which are the proxy environment variables they use. Different apps are known to use different environment variable names and different case for environment variable names.
* In case you are running applications and/or scripts inside fakemachine
you may need to check which are the proxy environment variables they
use. Different apps are known to use different environment variable
names and different case for environment variable names.

## Fakemachine Backend

debos (unless running debos with the `--disable-fakemachine` argument) creates
and spawns a virtual machine using [fakemachine](https://github.com/go-debos/fakemachine)
and executes the actions defined by the recipe inside the virtual machine. This
helps ensure recipes are reproducible no matter the host environment.
debos (unless running debos with the `--disable-fakemachine` argument)
creates and spawns a virtual machine using [fakemachine](https://github.com/go-debos/fakemachine)
and executes the actions defined by the recipe inside the virtual machine.
This helps ensure recipes are reproducible no matter the host environment.

Fakemachine can use different virtualisation backends to spawn the virtualmachine,
for more information see the documentation under the [fakemachine repository](https://github.com/go-debos/fakemachine).
Fakemachine can use different virtualisation backends to spawn the virtual
machine, for more information see the [fakemachine documentation](https://github.com/go-debos/fakemachine).

By default the backend will automatically be selected based on what is supported
on the host machine, but this can be overridden using the `--fakemachine-backend` / `-b`
option. If no backends are supported, debos reverts to running the recipe on the
host without creating a fakemachine.
By default the backend will automatically be selected based on what is
supported by the host machine, but this can be overridden using the
`--fakemachine-backend` / `-b` option. If no backends are supported,
debos reverts to running the recipe on the host without creating a
fakemachine.

Performance of the backends is roughly as follows: `kvm` is faster than `uml` is faster than `qemu`.
Using `--disable-fakemachine` is slightly faster than `kvm`, but requires root permissions.
Performance of the backends is roughly as follows: `kvm` is faster than
`uml` is faster than `qemu`. Using `--disable-fakemachine` is slightly
faster than `kvm`, but requires root permissions.

Numbers for running [pine-a64-plus/debian.yaml](https://github.com/go-debos/debos-recipes/blob/9a25b4be6c9136f4a27e542f39ab7e419fc852c9/pine-a64-plus/debian.yaml) on an Intel Pentium G4560T with SSD:
Benchmark times for running [pine-a64-plus/debian.yaml](https://github.com/go-debos/debos-recipes/blob/9a25b4be6c9136f4a27e542f39ab7e419fc852c9/pine-a64-plus/debian.yaml)
on an Intel Pentium G4560T with SSD:

| Backend | Wall Time | Prerequisites |
| --- | --- | --- |
Expand Down
Loading

0 comments on commit f5e2283

Please sign in to comment.