Skip to content

32-bit x86 multiprocessing OS capable of running console or graphical user applications.

License

Notifications You must be signed in to change notification settings

scopeInfinity/FuzzyOS

Repository files navigation

FuzzyOS CI Hits

32-bit x86 multiprocessing OS capable of running console or graphical user applications.

Release

Please find all releases at https://github.com/scopeInfinity/FuzzyOS/releases

The boot image can be found under Assets for the corresponding release.

Screenshots

The screenshots can be located as Artifacts under completed run on Actions/CI.

Bootloader Kernel Turnup
image image
Simple Shell cat
image image
fork() TicTacToe Game
image image
PingPong Game Logo Programming
gif gif
Desktop
image

Boot OS

How to get boot image?

  • Download image from one of the Release.
  • Or directly build image using make images after cloning the repository.

Boot on VirtualBox

  • Create VM with FuzzyOS.vdi as storage.

Boot on VMware

  • Create VM with FuzzyOS.vmdk as storage.
Boot on a real machine
  • Use dd or scripts/burn.sh to burn image into the disk (potentially destructive).
  • bash scripts/burn.sh build/FuzzyOS.raw /path/to/devicefile

Features

Feature Exists
Boot: Legacy BIOS ✔️
Boot: UEFI
Disk partitioning style: MBR ✔️
Disk partitioning style: GPT
Exported disk image: vmdk ✔️
Exported disk image: vdi ✔️
Exported disk image: raw ✔️
kernel <-> app and app <-> app isolation ✔️
opearating-mode: real mode (boot-loader + realmode-library) ✔️
opearating-mode: protected mode (kernel + user application) ✔️
driver: disk IO ✔️
driver: PIC ✔️
driver: PIT ✔️
driver: Keyboard ✔️
file-system: FFS (in-house) (read-only) ✔️
interrupt handler ✔️
syscall: text console IO ✔️
syscall: graphics ✔️
syscall: keyboard ✔️
syscall: file handlers ✔️
process-scheduler: Round Robin ✔️
file-system: FFS (custom) (read-only) ✔️
display: text-mode ✔️
display: graphics-vga 320x200 256 colors ✔️
concurrency: Multiprocessing ✔️
concurrency: Multithreading
parallelism
security in scope
networking
app-build: Support C ✔️
app-build: Support C++ ✔️
app-build: C/C++ Standard Libraries (as needed) ✔️
app-runtime: Heap memory allocation ✔️
application: calculator ✔️
application: cat ✔️
application: desktop ✔️
application: echo ✔️
application: forkbomb ✔️
application: logo ✔️
application: ls ✔️
application: ping-pong ✔️
application: sh (terminal) ✔️
application: simplecpp (example) ✔️
application: more ✔️
application: multiprocessing (example) ✔️
application: tictactoe ✔️
application: Your's? Yes, raise a PR ✔️

Development

Prerequisite

bash before_install.sh
make clean

QEMU Quick Launch

make qemu

Build

Use make to build binaries and image files.

make
Tests

At this moment tests works by injecting predefined ASM in the source code which halts the execution at the point of interest. After that tests can make use of QEMU monitor to verify the current state with expected state.

make test
Debug

Execute QEMU in debug mode and setup GDB server.

make qemu_debug

And then connect to GDB Server.

make qemu_debug_connect

Want to Contribute?

CONTRIBUTING.md