Skip to content

9xbt/bentobox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bentobox

bentobox is a 64-bit SMP-enabled operating system targeting x86_64 and aarch64.

Features

  • 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

Tested build environments

  • Debian Trixie
  • Arch Linux (latest rolling release)
  • Ubuntu Server 24.04 LTS
  • Ubuntu 25.04

Building the userspace

x86_64

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).

aarch64

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.

Ports

bash

Run ./ports/bash.sh.

gnulib

Packages required:

  • autoconf
  • automake
  • gettext
  • autopoint
  • m4
  • wget

Run ./ports/gnulib.sh.

coreutils

Packages required:

  • bison
  • gperf
  • texinfo

Dependencies:

  • gnulib

Run ./ports/coreutils.sh.

lua

Run ./ports/lua.sh.

figlet

Run ./ports/figlet.sh.

doomgeneric

Get an IWAD, then run ./ports/doomgeneric.sh.

fastfetch

Packages required:

  • cmake

Run ./ports/fastfetch.sh.

ncurses

Run ./ports/ncurses.sh.

vim

Dependencies:

  • ncurses

Run ./ports/vim.sh.

nyancat

Run ./ports/nyancat.sh.

Building the kernel

x86_64

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.

aarch64

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.

Screenshots

image image image

About

64-bit SMP-enabled operating system targeting x86_64 and aarch64

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published