bentobox is a 64-bit SMP-enabled operating system targeting x86_64 and aarch64.
- SMP capable preemptive modular kernel with full multi-architecture support
- POSIX compatibility
- IPC: Pipes, UNIX domain sockets, signals
- Ports: Xorg, bash, coreutils, vim, fastfetch & more
- Filesystems: ext2, devfs, tmpfs, procfs
- Block devices: AHCI
- Interrupt controllers: APIC (x86_64), GICv2 (aarch64)
- ACPI table parsing & full ACPI mode using uACPI
- PCI & PCIe support
- Input devices: PS/2 (x86_64), virtio-input (aarch64)
- Elf64 modules & binaries, VMM with CoW support
Packages required:
- git
- gcc
- binutils
- base-devel
Start by sourcing the environment. Run . build/mlibc-root.
Note
To build an aarch64 toolchain, run . build/mlibc-root aarch64 instead.
Now build binutils. Run ./util/binutils.sh.
Then, install mlibc headers for the GCC cross compiler. Run make -f build/mlibc.mk headers.
Now you can build the GCC cross compiler. Run ./util/gcc.sh.
Packages required:
- git
- meson
- rsync
Start by building mlibc. Run make -f build/mlibc.mk resetup build install.
Note
To build mlibc for aarch64, append ARCH=aarch64 to the make command.
Afterwards, rebuild libgcc. Run ./util/libgcc.sh.
Now proceed to build the ports below.
Tip
Run ./build/strip-bin after building the ports to reduce their size.
Finally, run make hdd -j$(nproc) to make the HDD image (or make livecd -j$(nproc) if you prefer an initrd).
Run ./ports/bash.sh.
Packages required:
- autoconf
- automake
- gettext
- 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.
Run ./ports/doomgeneric.sh.
Packages required:
- cmake
Run ./ports/fastfetch.sh.
Run ./ports/ncurses.sh.
Dependencies:
- ncurses
Run ./ports/vim.sh.
Dependencies:
- ncurses
Run ./ports/cmatrix.sh.
Run ./ports/nyancat.sh.
Run ./ports/Xorg.sh to build all Xorg-related libraries and xorg-server.
Dependencies:
- Xorg
Run ./ports/twm.sh.
Dependencies:
- Xorg
Run ./ports/xev.sh.
Dependencies:
- Xorg
Run ./ports/xeyes.sh.
Dependencies:
- Xorg
Run ./ports/xclock.sh.
Dependencies:
- Xorg
Run ./ports/nes_emu.sh.
Dependencies:
- Xorg
Run ./ports/dwm.sh.
Run ./ports/ttf-ibm-plex.
Dependencies:
- Xorg
- ttf-ibm-plex
Run ./ports/st.sh.
Dependencies:
- Xorg
Note
This port may fail to start when running the kernel with SMP.
Run ./ports/fvwm3.sh.
Packages required:
- git
- gmake
- xorriso
- nasm
- qemu-system-x86
First run make kernel-deps to get the dependencies, then run make run -j$(nproc) to run it in QEMU.
Packages required:
- git
- gmake
- xorriso
- qemu-system-aarch64
Run make kernel-deps to get the dependencies, then run make run -j$(nproc) ARCH=aarch64 to run it in QEMU.