BenOS is a small, hand-written, free and open-source 64-bit operating system.
BenOS is a small, hand-written, free and open-source 64-bit operating system still in active development. The goal of BenOS is not to become the new most used operating system in the world but to work. If it works, it is good.
This repository is very simple. It contains 3 branches:
- Main (the last stable version)
- Indev (the last unstable version)
- Tofix (code that contains bugs that need to be fixed)
Every stable versions (and unstable versions since the 0.0.9-Indev1) can be downloaded as raw images (excepted after the 0.0.9-Indev2, which provides an ISO file) directly from the (releases)[https://github.com/thebenos/benos/releases].
If the repository structure looks simple, the project structure is more complex.
boot/
: this directory contains all the files required for the system to boot (excepted the GRUB configuration file, which is iniso/
)drivers/
: this directory contains all the kernel drivers (used in the klibc or directly in the kernel)iso/
: this directory is used to makebenos.iso
. It containsgrub.cfg
kernel/
: this directory contains all the files directly related to the kernelklibc/
: this directory contains the headers of the klibcklibdef/
: this directory contains the source files of the klibcbuild.sh
: this file is used to compile BenOS and makebenos.iso
BenOS uses the following programming languages:
- x86_64 NASM
- C
- BASH
Building BenOS is a very simple process.
Make sure you have the following tools installed on your system:
- gcc
- nasm
- ld
- grub-mkrescue
- grub-efi
- Clone this repository:
git clone https://github.com/thebenos/benos
- Go into the BenOS directory:
cd benos
- Go inside the
scripts/
folder:
cd scripts
- Execute the build script:
chmod +x build.sh
./build.sh
Congratulations! benos.iso
should appear!
BenOS has not been tried on real hardware!
You can run BenOS in an emulator. In this example, we will use qemu
(from scripts/
).
qemu-system-x86_64 -m 512 -cdrom ../benos.iso -bios /usr/share/OVMF/OVMF_CODE.fd
If you want to contribute to the project, please read CONTRIBUTING.md first!