32-bit x86 multiprocessing OS capable of running console or graphical user applications.
Please find all releases at https://github.com/scopeInfinity/FuzzyOS/releases
The boot image can be found under Assets
for the corresponding release.
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 |
---|
![]() |
- Download image from one of the Release.
- Or directly build image using
make images
after cloning the repository.
- Create VM with
FuzzyOS.vdi
as storage.
- Create VM with
FuzzyOS.vmdk
as storage.
- Use
dd
orscripts/burn.sh
to burn image into the disk (potentially destructive). bash scripts/burn.sh build/FuzzyOS.raw /path/to/devicefile
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 |
✔️ |
bash before_install.sh
make clean
make qemu
Use make to build binaries and image files.
make
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
Execute QEMU in debug mode and setup GDB server.
make qemu_debug
And then connect to GDB Server.
make qemu_debug_connect