Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Make targets and variables

make help prints this list from the Makefile itself.

Targets

TargetProducesNotes
checkverifies host tools, prints install hints
releasebuild/out, build/rootfsDocker: sysroot, cross OTP, native OTP, Elixir, mix release, /init
initramfs (all)build/initramfs.cpio.gzgzip newc cpio of the rootfs, owner root
m0-kernelbuild/vmlinux-m0downloads the Firecracker CI Linux 6.1 kernel
asterinasbuild/asterinas/aster-nix-osdk-binclones Asterinas at ASTERINAS_REF, applies builder/asterinas-patches/*.patch, builds in the upstream dev container
run-m0, run-m0-appboot on Linux into IEx / the app
run-m1, run-m1-appboot on Asterinas into IEx / the app
smoke-m0, smoke-m1build/logs/automated assertions
smokesmoke-m0 smoke-m1 sizes
ec2-kernelbuild/vmlinux-ec2Linux 6.1 with ENA, NVMe and EFI stub for the Linux AMI
amibuild/disk-<KERNEL>[-iex].raw1 GiB GPT disk with an EFI partition: GRUB, kernel, initramfs, command line
run-disk, smoke-diskboot / test the disk under OVMF with an NVMe root
databuild/data.rawempty 64 MB ext2 data volume image (scripts/mkdata.sh)
ami-publishan AMI idEBS direct upload and register-image (UEFI, ENA); idempotent by name
smoke-ec2build/logs/ec2-*.logpublish AMI and data snapshot, launch a t3.small with data volume and IAM role, 18 assertions incl. reboot and CloudWatch, terminate
ami-cleanderegister this version’s AMIs and delete their snapshots
sizesimage sizes against the 40 MB budget
distdist/versioned bundle with checksums
docs, docs-servebuild/book/the manual via mdBook in Docker
sitebuild/site/landing page plus manual
cleanremoves build/ and dist/

Variables

VariableDefaultMeaning
OTP_TAGOTP-29.1.1Erlang/OTP git tag
ELIXIR_TAGv1.20.4Elixir git tag
ASTERINAS_REFec5bb9eAsterinas commit or tag
ALPINE3.22Alpine version for the builder and the x86-64 sysroot (OpenSSL, zstd, musl versions follow from it)
JOBS8parallelism inside the builder
PLATFORMDocker server’scontainer platform; the build is native on arm64 and x86-64
QEMU_ACCELkvm if /dev/kvm is writable, else tcg
M0_MEM, M1_MEM128M, 160Mguest RAM for the two kernels
QEMU_SMP, M1_SMP2, 2vCPUs
TLS_HOSTwww.erlang.orgDNS and TLS probe target
HOST_PORT_TCP/UDP/TLS14000/14001/14443host side of the port forwards
SMOKE_TIMEOUT, SMOKE_BOOT_TIMEOUT, SMOKE_ATTEMPTS240, 60, 5smoke test timing (environment variables)
KERNELasterinaskernel for ami, run-disk, smoke-disk, ami-publish, smoke-ec2 (asterinas or linux)
DISK_MODEappuniapp.mode baked into the disk image (app or iex)
DISK_LOGLEVELerrorAsterinas log level baked into the disk image
DISK_MEM256Mguest RAM for the OVMF boot (GRUB needs more than the kernels)
OVMFauto-detectedpath to edk2-x86_64-code.fd
AMI_FLAGSextra flags for ami-publish, e.g. --force
ENA_ARGSENA driver knobs baked into the Asterinas disk, e.g. ena.queues=auto
HOST_PORT_HTTP18088host side of the /healthz port forward
AWS_PROFILE, AWS_REGIONfrom the environmentcredentials and region for the EC2 targets

Files

PathRole
VERSIONproject version, used by dist and help
builder/Dockerfilethe whole toolchain and release build
builder/xcomp/erl-xcomp-x86_64-alpine-linux-musl.confOTP cross-compilation config
builder/cross-smoke.shruns the cross-built beam.smp under qemu-user as a build check
builder/asterinas-patches/kernel patches applied before building Asterinas
init/init.cPID 1
app/the sample release
scripts/rootfs assembly, initramfs, kernel fetch/build, smoke test, dist, disk image, EC2 publish and smoke