Overview
The Redox OS build system is highly configurable through environment variables, Make variables, and TOML configuration files. This reference documents all available configuration options.Build Configuration Variables
These variables are set in.config, mk/config.mk, or via environment variables.
Architecture Configuration
ARCH
Target architecture for Redox OS.Target architecture:
x86_64, i586, aarch64, or riscv64gcDefaults to the host architecture. Set to
i586 instead of i686 for 32-bit x86.BOARD
Sub-device type for architecture-specific boards.Board identifier (e.g.,
raspi3bp for Raspberry Pi 3 B+)CONFIG_NAME
Filesystem configuration profile name.Configuration profile:
desktop, server, demo, minimal, etc.config/ directory.
FILESYSTEM_CONFIG
Path to the filesystem configuration file.Path to filesystem TOML configuration. Auto-detected from ARCH, BOARD, and CONFIG_NAME.
config/$(ARCH)/$(BOARD)/$(CONFIG_NAME).tomlconfig/$(ARCH)/$(CONFIG_NAME).tomlconfig/$(CONFIG_NAME).toml
Toolchain Configuration
PREFIX_BINARY
Use prebuilt cross-compiler toolchain.Download and use binary toolchain packages instead of building from source
Binary toolchains are much faster to set up. Set to
0 to build the toolchain from source.PREFIX_USE_UPSTREAM_RUST_COMPILER
Use official Rust nightly compiler.Use upstream Rust nightly instead of Redox-patched version. Experimental.
Repository Configuration
REPO_BINARY
Use binary packages instead of building from source.Download and install binary packages instead of compiling recipes
COOKBOOK_HOST_SYSROOT and passes --repo-binary to repo tool.
REPO_APPSTREAM
Build AppStream metadata.Generate AppStream metadata for package repositories
COOKBOOK_APPSTREAM=true.
REPO_NONSTOP
Continue building after failures.Keep building remaining packages even if some fail
COOKBOOK_NONSTOP=true. Useful for CI builds.
REPO_OFFLINE
Build without network access.Prevent internet access during builds. Requires pre-fetched sources.
COOKBOOK_OFFLINE=true. Run make cargo-fetch first.
REPO_DEBUG
Enable debug builds.Build with debug symbols and disable stripping
COOKBOOK_NOSTRIP=true and COOKBOOK_DEBUG=true.
Filesystem Configuration
FILESYSTEM_SIZE
Size of the filesystem image in megabytes.Filesystem size in MB. Defaults to value from FILESYSTEM_CONFIG.
REDOXFS_MKFS_FLAGS
Flags passed to redoxfs-mkfs.Additional flags for filesystem creation. Use
--encrypt for encryption.Container Configuration
PODMAN_BUILD
Build inside Podman container.Execute builds inside Podman container for reproducibility
Set to
0 to build directly on the host system. Required for native Redox builds.FSTOOLS_IN_PODMAN
Build filesystem tools in container.Build redoxfs and installer tools inside Podman instead of on host
FSTOOLS_NO_MOUNT
Disable FUSE mounting.Build without FUSE support. Required when FUSE is unavailable (e.g., in containers).
SCCACHE_BUILD
Enable sccache for Cargo builds.Use sccache to speed up Cargo compilation. Auto-enabled inside Podman.
CONTAINERFILE
Path to Containerfile for base image.Containerfile used to build the Podman base image
Derived Variables
These are automatically computed and should not normally be set manually:Computed Build Variables
Computed Build Variables
- TARGET: Full target triple (e.g.,
x86_64-unknown-redox) - BUILD: Build directory path (
build/$(ARCH)/$(CONFIG_NAME)) - PREFIX: Toolchain prefix directory
- MOUNT_DIR: Filesystem mount point
- INSTALLER: Path to redox_installer binary
- REDOXFS: Path to redoxfs binary
- REPO_BIN: Path to repo tool binary
Filesystem Configuration Files
Filesystem configurations are TOML files in theconfig/ directory that specify which packages to include in images.
Location
Structure
General Section
filesystem_size
Size of the filesystem in megabytes
repo_binary
Whether to use binary packages by default
Packages Section
Specifies which packages to include and how to build them.Package Rules
Package configuration. Can be
{}, "source", "binary", "local", or "ignore"Build Modes
source
source
Build the package from source code. Downloads sources and compiles them.
binary
binary
Download and install pre-built binary package from the repository.
local
local
Build from local source without updating from remote. Useful for development.
ignore
ignore
Skip this package entirely. Used to exclude packages from included configs.
Include Directive
Load packages from other configuration files.Later includes and local definitions override earlier ones. Package rules are merged.
Example Configurations
Minimal Desktop
Full Desktop
Server Configuration
Development Configuration
QEMU Configuration Variables
These variables control QEMU emulation behavior.Hardware Emulation
kvm
Enable KVM/HVF hardware acceleration
gpu
Graphics adapter type
vga: Standard VGA adapter (x86 only)virtio: VirtIO GPU (better performance)virtio-gl: VirtIO GPU with OpenGL accelerationramfb: RAM framebuffer (ARM/RISC-V)multi: Multiple displaysno: No graphics (serial only)
audio
Audio device type
hda: Intel High Definition Audioac97: AC’97 audio (i586 default)no: No audio
net
Network adapter type
e1000: Intel E1000 (default, best compatibility)rtl8139: Realtek RTL8139virtio: VirtIO network (better performance)usb-net: USB network adapterredir: E1000 with port forwardingbridge: Bridge to host networkno: No network
disk
Disk controller type
nvme: NVMe controller (default, fastest)ata: ATA/AHCI controllerusb: USB storagevirtio: VirtIO block devicesdcard: SD card (ARM boards)cdrom: Boot from ISO as CD-ROM
System Configuration
QEMU_SMP
Number of CPU cores
QEMU_MEM
Memory size in megabytes
serial
Enable serial console
gdb
GDB debugging support
live
Boot from live ISO
uefi
Use UEFI boot (x86_64/aarch64)
iommu
Enable IOMMU
usb
Enable USB controllers
Advanced Options
qemu_serial_logfile
Log serial output to file
bridge
Bridge network adapter to host bridge
netboot
Enable network boot
redoxer
Enable Redoxer exit codes
Per-Host Variables
These are automatically detected based on the host OS:macOS
FUMOUNT=umountSED=gsedFIND=gfindVB_AUDIO=coreaudio
FreeBSD
FIND=gfindFUMOUNT=sudo umountVB_AUDIO=pulse
Linux
FUMOUNT=fusermount3 -u(orfusermount -u)VB_AUDIO=pulse
Redox
PODMAN_BUILD=0HOSTED_REDOX=1
See Also
Make Commands
All available Makefile targets
Repo Tool
Command-line tool for package management