Skip to content

A small x86 32-bit operating system.

License

Notifications You must be signed in to change notification settings

eylon-44/Buzz-OS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Buzz Operating System πŸš€

Buzz Logo Buzz is a hobby operating system built for learning purposes. Buzz is probably the best operating system in the world (as of 1918 A.D.). Buzz Demo

Table of Contents 🀸

The operating system can only be compiled on Unix machines. If you happen to be using a different system, you can download the binary from here.

Make sure you have all of the listed bellow installed before continuing to the next step.

Requirement Installation
Qemu sudo apt install qemu-system
GCC sudo apt install build-essential
Make sudo apt install build-essential
Python3 sudo apt install python3

Clone the repository into your machine and compile with Make.

git clone https://github.com/eylon-44/Buzz-OS
cd Buzz-OS
make

Inside the project's root directory, enter make run. The system will boot up and greet you with a terminal program.

Quick Tips
β€’ Use the help command to get information about available commands β€’ Execute a program by inputing its path β€’ Open a tab with Ctrl+Shift+T, close it with Ctrl+Shift+W, and switch to a different one with Alt+[tab index] β€’

In the terminal, use the help command to list available commands. For more details on a specific command, use help followed by the command's name.

Help Command


Execute a program by inputting its path. Use the ls command followed by a file name to check if it's executable.

Execute Programs


Open a tab with Ctrl+Shift+T, close it with Ctrl+Shift+W, and switch to a different one with Alt+[tab index].

Tab Manipulation

Buzz supplies an easy interface for writing your own user programs in C and Assembly languages.

A custom build system and C standard library is provided, so you can focus on writing awesome code. The Buzz C standard library implements more than 70 functions you can use to write your code better and faster, and the Buzz user Makefile allows you to build Buzz compatible programs with a single command.

All user programs reside in the usr/exe directory within the project. Each program is a directory containing a Makefile, a .path file, a source code directory, and an include directory. The most basic user program structure can be defined as follows:

β”œβ”€β”€ inc
β”œβ”€β”€ makefile
β”œβ”€β”€ .path
└── src
    └── main.c

You can easily generate it by copying the _busy process.

cd usr/exe
cp -r _busy MyCoolProgram
cd MyCoolProgram
mkdir inc   # _busy doesn't have an include directory

You can now write your code under the src directory and your header files under the inc directory.

When it's time to compile, enter make. The build system will compile all .c and .S files under the src directory, include the inc directory, and link the program with the Buzz C standard library.

Note that in each user program, a .path file can be found. This file defines the path that will lead to your program once in the system. Make sure to set this file with a valid path before compiling.

echo /home/apps/MyCoolProgram.elf > .path

For available functions and header files from the C standard library, check out the library's interface.

Buzz allows you to configure the file system already at compile time.

The usr/file directory within the project acts as the file system's root directory. Any file placed in this directory will later appear in the operating system's file system at the same relative location.

Creating Files


The terminal allows you to add your own custom commands.

Any executable placed in the /bin directory within the operating system's file system can be used as a terminal command. Please note that the terminal must be restarted for the changes to take effect.

Creating New Commands
  • First-stage bootloader that sets up the environment, loads the second stage bootloader and jumps to it
  • Second-stage bootloader that loads the kernel from the file system and jumps to it
  • Hardware, exception, and software interrupt handling
  • Protected memory management
  • Process management
  • Priority-based multiprocessing scheduling
  • File system
  • Standard streams and multi-tab textual display implementation
  • More than 25 system call
  • Keyboard driver
  • Timer driver
  • Screen driver (VGA)
  • Hard disk driver (PATA)
  • Custom C standard library with more than 70 functions
  • Custom build system for user programs
  • More than 15 user programs and commands included

If my code sucks, please open an issuse and let me know!

Buzz GIF

Like the work? 😍

Consider giving the repository a star 😎