bentobox is a 64-bit SMP-enabled operating system targeting x86_64 and aarch64.
- SMP capable preemptive kernel with full multi-architecture support
- POSIX compatibility
- IPC: Pipes, UNIX domain sockets, signals
- Ports: bash, coreutils, vim, fastfetch & more
- Filesystems: ext2, devfs, tmpfs, procfs
- Interrupt controllers: APIC (x86_64), GICv2 (aarch64)
- ACPI table parsing & full ACPI mode using LAI
- PCI scanning
- Input devices: PS/2 (x86_64), virtio-input (aarch64)
- Elf64 modules & binaries, VMM with CoW support
- Debian Trixie
- Arch Linux (latest rolling release)
- Ubuntu Server 24.04 LTS
- Ubuntu 25.04
Packages required:
- git
- meson
- clang
Start by building mlibc. Run make -f build/mlibc.mk setup build install.
Now you can build the ports. Run . build/mlibc-root to source the environment.
Tip
Run ./build/strip-bin to strip the binaries and reduce the image size.
Now copy /etc/localtime to base/etc/localtime.
Finally, run make hdd -j$(nproc) to make the HDD image (or make livecd -j$(nproc) if you prefer an initrd).
Packages required:
- git
- meson
- aarch64-linux-gnu-gcc
Start by building mlibc. Run make -f build/mlibc.mk setup build install ARCH=aarch64.
Now you can build the ports. Run . build/mlibc-root aarch64 to source the environment.
Tip
Run ./build/strip-bin to strip the binaries and reduce the image size.
Now copy /etc/localtime to base/etc/localtime.
Finally, run make livecd -j$(nproc) ARCH=aarch64 to make the initrd.
Note
HDD images are not supported on ARM yet, only live CD images.
Run ./ports/bash.sh.
Packages required:
- autoconf
- automake
- gettext
- autopoint
- m4
- wget
Run ./ports/gnulib.sh.
Packages required:
- bison
- gperf
- texinfo
Dependencies:
- gnulib
Run ./ports/coreutils.sh.
Run ./ports/lua.sh.
Run ./ports/figlet.sh.
Get an IWAD, then run ./ports/doomgeneric.sh.
Packages required:
- cmake
Run ./ports/fastfetch.sh.
Run ./ports/ncurses.sh.
Dependencies:
- ncurses
Run ./ports/vim.sh.
Run ./ports/nyancat.sh.
Packages required:
- git
- gmake
- gcc
- binutils
- xorriso
- nasm
First run make kernel-deps to get the dependencies, then run make run -j$(nproc) to run it in QEMU.
Packages required:
- git
- gmake
- aarch64-none-elf-gcc
- aarch64-none-elf-binutils
- xorriso
Run make kernel-deps to get the dependencies, then run make run -j$(nproc) ARCH=aarch64 to run it in QEMU.