Overview
The Redox OS build system uses GNU Make with multiple modular configuration files in themk/ directory. This reference documents all available make targets organized by category.
Primary Build Targets
all
Build the default hard drive image.This is the default target when running
make without arguments. It builds $(BUILD)/harddrive.img.image
Clean and rebuild the hard drive image from scratch.- Unmounts any mounted filesystems
- Removes existing
harddrive.imgandredox-live.iso - Builds a fresh image
rebuild
Rebuild the image, clearing the repo tag.$(BUILD)/repo.tag and rebuilds the entire system.
Live ISO Targets
live
Build a bootable live ISO image.$(BUILD)/redox-live.iso that can be booted without installation.
popsicle
Open the Popsicle USB flasher GUI with the live ISO.Requires
popsicle-gtk to be installed on the host system.Repository Management Targets
repo
Build all packages specified in the filesystem configuration.$(BUILD)/repo.tag which triggers package compilation.
repo_clean
Clean all recipe build artifacts.make c.--all.
fetch_clean
Delete all recipe source downloads.make u.--all.
repo-tree
Display the build dependency tree for recipes.image-tree
Display the package installation tree.repo_clean_target
Clean target-specific artifacts for all recipes.Recipe-Specific Targets
These targets operate on individual recipes or comma-separated lists.f.RECIPE
Fetch source for one or more recipes.Recipe name(s), comma-separated for multiple recipes
r.RECIPE
Cook (build) one or more recipes.Recipe name(s) to build
c.RECIPE
Clean build artifacts for one or more recipes.Recipe name(s) to clean, or
--all for everythingu.RECIPE
Unfetch (delete source) for one or more recipes.Recipe name(s) to unfetch
p.RECIPE
Push (install) compiled package into mounted filesystem.Recipe name(s) to push
pp.RECIPE
Push package with its package dependencies.cr.RECIPE
Clean and rebuild recipes.make c.RECIPE && make r.RECIPE.
ucr.RECIPE
Unfetch, clean, and rebuild recipes.uc.RECIPE
Unfetch and clean recipes.ucf.RECIPE
Unfetch, clean, and fetch recipes.rp.RECIPE
Build and push recipes.crp.RECIPE
Clean, rebuild, and push recipes.ucrp.RECIPE
Unfetch, clean, rebuild, and push recipes.rt.RECIPE
Show build tree for recipes.pt.RECIPE
Show push tree for recipes.ppt.RECIPE
Show push tree with package dependencies.find.RECIPE
Find the path to recipe directories.debug.RECIPE
Open gdbgui debugger for a recipe binary.Specific binary name to debug (optional)
Start QEMU with
make qemu kvm=no QEMU_SMP=1 gdb=yes before debugging.Clean Targets
clean
Remove all build artifacts.repo/directory$(BUILD)directory$(PREFIX)directory- Filesystem tools
distclean
Complete clean including source downloads.clean plus recipe source cleanup.
fstools_clean
Clean filesystem tools only.prefix_clean
Remove cross-compiler prefix builds.static_clean
Remove relibc and statically linked recipes.container_clean
Remove Podman container and cached files.Emulation Targets
qemu
Run Redox OS in QEMU.QEMU Configuration Variables
QEMU Configuration Variables
Enable KVM acceleration
Graphics adapter type
Network adapter type
Disk controller type
Audio device type
Enable serial console
Wait for GDB connection on port 1234
Boot from live ISO instead of hard drive
Use UEFI boot (x86_64/aarch64)
Number of CPU cores
Memory in MB
Examples
virtualbox
Create and run VirtualBox VM.Filesystem Targets
mount
Mount the hard drive image.$(BUILD)/harddrive.img to $(BUILD)/filesystem/.
mount_extra
Mount the extra disk image.mount_live
Mount the live ISO image.unmount
Unmount the currently mounted filesystem.Cross-Compiler Targets
prefix
Build the cross-compiler toolchain.With
PREFIX_BINARY=1 (default), downloads prebuilt toolchains instead of building from source.Podman Container Targets
container_shell
Open a shell in the Podman build container.Must be set to 1 in
.config or mk/config.mkcontainer_touch
Mark the container as built without rebuilding.container_kill
Kill the running Podman container.container_push
Push the container image to registry.Development Targets
env
Open a shell with build environment variables set.PATH and compiler variables configured.
setenv
Print environment variables for manual export.pull
Update the repository and filesystem tools.git pull and removes the fstools tag to trigger rebuild.
gdb
Connect GDB to debug the kernel.Start QEMU with
gdb=yes first.gdb-userspace
Debug userspace applications without gdbserver.kernel_debugger
Launch gdbgui in container for kernel debugging.wireshark
Open Wireshark to analyze network traffic.$(BUILD)/network.pcap captured during QEMU execution.
cargo-fetch
Fetch Cargo dependencies for offline builds.REPO_OFFLINE=1.
CI Targets
ci-img
Build standard images for CI/release.Version tag for image names (default: git describe)
Output directory for images
ci-pkg
Build packages for CI.ci-toolchain
Build toolchain archives for distribution.build/toolchain/.
ci-os-test
Run OS tests and collect results.Special Targets
FORCE
Empty target used to force execution of other targets.This is an internal target used by the build system.
Configuration-Specific Targets
server, desktop, demo
Build named configuration images.See Also
Repo Tool
Command-line tool for recipe management
Configuration Options
Build system configuration variables