FuzzyOS
FuzzyOS copied to clipboard
32-bit x86 multiprocessing OS capable of running console or graphical user applications.
FuzzyOS

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