bentobox
July 1, 2026 ยท View on GitHub
bentobox is a 64-bit SMP-enabled operating system targeting x86_64 and aarch64, on which I work on in my free time.
Features
- SMP capable preemptive modular kernel with full multi-architecture support
- POSIX compatibility
- IPC: Pipes, UNIX domain sockets, PTYs, signals
- Ports: Xorg, openbox, fvwm3, gcc, st, bash, coreutils, vim, fastfetch & more
- Filesystems: ext2, devfs, tmpfs, ustar, procfs
- Block devices: AHCI
- Interrupt controllers: APIC (x86_64), GICv2 (aarch64)
- ACPI table parsing & full ACPI mode using uACPI
- PCI(e) support
- Input devices: PS/2 (x86_64), Virtio, Wacom W8001 penabled touchscreen (x86_64)
- Elf64 modules & binaries, dynamic linking, CoW
Building the userspace
Packages required:
- build-essential
- git
- pkg-config
Start by running make jinx to download and patch jinx. Append ARCH=aarch64 if building for ARM64.
Then cd bootstrap/build-x86_64 (or build-aarch64 if targeting aarch64), and run jinx host-build '*' to build the toolchain. This will also build mlibc and its headers as gcc and libstdc++-v3 require them.
Now you can build the base system. Run jinx build base to build a minimal system (or jinx build '*' to build a full distro), followed by jinx install base base (or jinx install base '*' if building a full distro).
Note
Building a full distro may take a while; might be a good time to make some coffee!
If you do not want to build a full distro but still get extra functionality like Xorg, simply jinx install base [package] (package names in bootstrap/recipes).
Finally, run make hdd -j$(nproc) to make a hard disk image (or make livecd -j$(nproc) if you prefer an initrd). Append ARCH=aarch64 if building for ARM64.
Building the kernel
x86_64
Packages required:
- build-essential
- git
- xorriso
- nasm
- qemu-system-x86
To build and run bentobox in QEMU run make run -j$(nproc). If your machine doesn't support KVM overwrite QEMUFLAGS: QEMUFLAGS="-display sdl.
Otherwise, run make -j$(nproc) to build the kernel and write bin/x86_64/image.iso to a USB drive and give it a try on real hardware!
aarch64
Packages required:
- build-essential
- git
- xorriso
- qemu-system-aarch64
Start by running . build/activate.sh to source the toolchain, then run make run -j$(nproc) ARCH=aarch64 to run the kernel and run it in QEMU.