63 lines
1.9 KiB
Markdown
63 lines
1.9 KiB
Markdown
# Aimee OS Build Container Images
|
|
|
|
Prerequisites:
|
|
|
|
* `buildah`
|
|
|
|
|
|
## Gentoo Stage 3 Image
|
|
|
|
This image is used to bootstrap the base layer for Aimee OS build images. To
|
|
build it, use the `gentoo-stage3.sh` build script. This script takes a single
|
|
(optional) positional argument: the name of a Gentoo stage 3 tarball to use to
|
|
produce the container image. If none is specified, the latest
|
|
`stage3-amd64-nomultilib-openrc` tarball is downloaded and used.
|
|
|
|
```sh
|
|
sh image-build/gentoo-stage3.sh
|
|
```
|
|
|
|
|
|
## Base Image
|
|
|
|
The Aimee OS base build image is a minimal environment based on Gentoo. It
|
|
includes Portage and a basic build toolchain. Building it requires a Stage 3
|
|
image to bootstrap the environment. By default,
|
|
_aimee-os.org/gentoo/stage3-amd64-nomultilib-openrc:latest_ is used, but an
|
|
alternative image can be specified using the `-b`/`--base` argument to the
|
|
`base.sh` script.
|
|
|
|
```sh
|
|
sh image-build/base.sh
|
|
```
|
|
|
|
|
|
## Crossdev Image
|
|
|
|
This image includes a cross-compilation toolchain, generated by _crossdev_. It
|
|
is built using the `cross.sh` script. This script takes a `-t`/`--target`
|
|
argument, which specifies the toolchain to generate. The default is
|
|
`aarch64-unknown-linux-gnu`. This image is layered on top of the base image,
|
|
which can be specified using the `-b`/`--base` argument. By default,
|
|
_aimee-os.org/build/base:latest_ is used.
|
|
|
|
```sh
|
|
sh image-build/cross.sh
|
|
```
|
|
|
|
## Build Image
|
|
|
|
The top-level image is based on the Crossdev image, and includes additional
|
|
tools for building an Aimee OS project. It is built using the `build.sh` script.
|
|
As with the Crossdev image build script, this script accepts `-t`/`--target`
|
|
and `-b`/`--build` arguments, which specify the cross-compilation toolchain and
|
|
base image later, respectively.
|
|
|
|
```sh
|
|
sh image-build/build.sh
|
|
```
|
|
|
|
This image is "squashed," meaning it consists of only a single layer. The Base
|
|
and Crossdev image layers are merged into the final layer when the image is
|
|
built. This reduces the final size of the image.
|