Requirements
| Tool | Used for |
|---|---|
| GNU Make | Configuration, dependency generation and build targets |
| Python 3 | Kconfig, inventories, generated tables and image tools |
| GCC/binutils | x86_64 kernel objects and ELF linking |
| AArch64 cross tools | aarch64-elf-gcc, ld and objcopy |
| Clang/LLVM and LLD | AArch64 PE/COFF UEFI image, vDSO and bridge objects |
| NASM | x86 assembly sources |
| GRUB and xorriso | x86_64 bootable ISO generation |
| mtools | AArch64 FAT ESP images |
| QEMU and EDK2 | Local UEFI boot tests |
Configuration
x86_64 uses .config. AArch64 uses .config.arm64. The interactive targets edit each architecture independently.
make defconfig
make arm64_defconfig
# Interactive configuration
make menuconfig
make arm64-menuconfigAfter Kconfig defaults change, use make olddefconfig or make arm64-olddefconfig to update an existing configuration.
Kernel images
x86_64
make defconfig
make -j"$(getconf _NPROCESSORS_ONLN)" kernelOutput: out/edgeos.bin
AArch64 UEFI
make arm64_defconfig
make -j"$(getconf _NPROCESSORS_ONLN)" arm64-kernelOutput: out/arm64/BOOTAA64.EFI
Initramfs and boot media
INITRAMFS_SOURCE_DIR points to an existing root filesystem tree. The image builder applies the base manifest, normalizes ownership and timestamps, and uses the compression selected in Kconfig.
make INITRAMFS_SOURCE_DIR=/path/to/rootfs initramfs
make INITRAMFS_SOURCE_DIR=/path/to/rootfs x86-initramfs-iso
make INITRAMFS_SOURCE_DIR=/path/to/rootfs arm64-initramfs-uefi- Generic initramfs
out/initramfs.img- x86_64 ISO
out/edgeos-x86_64-initramfs.iso- AArch64 ESP
out/edgeos-arm64-initramfs.img
Run with QEMU
# x86_64 UEFI
make INITRAMFS_SOURCE_DIR=/path/to/rootfs run-x86-initramfs
# AArch64 UEFI
make INITRAMFS_SOURCE_DIR=/path/to/rootfs run-arm64-initramfs-uefiThe x86 target reads UEFI firmware from EDGEOS_X86_UEFI_CODE and defaults to KVM. The AArch64 target reads EDGEOS_AARCH64_EFI and defaults to HVF. Set EDGEOS_QEMU_ACCEL or EDGEOS_QEMU_MEM to change the accelerator or guest memory.
Raspberry Pi images
make INITRAMFS_SOURCE_DIR=/path/to/rootfs arm64-rpi4
make INITRAMFS_SOURCE_DIR=/path/to/rootfs arm64-rpi5- Raspberry Pi 4
out/edgeos-arm64-rpi4.img- Raspberry Pi 5
out/edgeos-arm64-rpi5.img
A Pi 5 card also needs Raspberry Pi boot firmware, an AArch64 U-Boot binary named u-boot.bin and bcm2712-rpi-5-b.dtb in the FAT filesystem.
Repository checks
make kconfig-check
make syscall-inventory-check
make linux-uapi-inventory-check
make cross-arch-unity-check
make bsd-driver-build-plan-check
make bsd-driver-package-registry-check
make bsd-driver-manifest-check
make bsd-driver-interface-checkFocused unit targets
Use the host-side test targets for the subsystem being changed.
make scheduler-runtime-unit
make mm-runtime-unit
make mount-api-unit
make socket-runtime-unit
make bpf-runtime-unit
make drm-runtime-unitOutput directories
| Path | Contents |
|---|---|
obj/ | Architecture object trees and dependency files |
out/ | Kernel images, media, generated plans and host tests |
include/generated/ | Kconfig headers and generated architecture settings |