Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alandoescs/waffleos
An open source operating system written in NASM and C, with the goal of demystifying how operating systems work.
https://github.com/alandoescs/waffleos
c nasm osdev visualization
Last synced: 8 days ago
JSON representation
An open source operating system written in NASM and C, with the goal of demystifying how operating systems work.
- Host: GitHub
- URL: https://github.com/alandoescs/waffleos
- Owner: AlanDoesCS
- License: mit
- Created: 2024-07-10T19:16:34.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-10-13T01:00:35.000Z (3 months ago)
- Last Synced: 2024-11-07T19:06:34.961Z (about 2 months ago)
- Topics: c, nasm, osdev, visualization
- Language: C
- Homepage:
- Size: 228 KB
- Stars: 12
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WaffleOS
A Unix-like open source operating system written in NASM and C, with the goal of demystifying how operating systems work.![Hack Club arcade 2024 finalist](https://img.shields.io/badge/Hack%20Club%20arcade%202024-showcase%20finalist-gold?logo=https%3A%2F%2Fassets.hackclub.com%2Ficon-rounded.png&logoSize=auto&labelColor=orange)
[![CodeFactor](https://www.codefactor.io/repository/github/alandoescs/waffleos/badge)](https://www.codefactor.io/repository/github/alandoescs/waffleos)
![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/AlanDoesCS/WaffleOS)
![GitHub commit activity](https://img.shields.io/github/commit-activity/t/AlanDoesCS/WaffleOS)
![GitHub contributors](https://img.shields.io/github/contributors/AlanDoesCS/WaffleOS)
![GitHub Repo stars](https://img.shields.io/github/stars/AlanDoesCS/WaffleOS)
![GitHub forks](https://img.shields.io/github/forks/AlanDoesCS/WaffleOS)---
# Table of contents
1) [Current Features](#features)
2) [Installation Guide](#installation)
3) [Command List](#commands)---
## Features
- Bootloader
- Boots into 32 bit protected mode, and loads the C kernel
- Disk driver
- A simple ATA PIO mode disk read/write driver
- CLI
- VGA text mode to display information
- FAT12 Support (WIP)
- Interrupt descriptor table
- Memory management
- allows memory management with malloc(), calloc() and free()
- Programmable Interval Timer
- allow precise time delays
- HTTP client (WIP)
- RFC 3986 compliant URI parsing---
## Installation
*WaffleOS is currently very early stages, so it may be prone to errors*### (For users) Virtual Machine (QEMU)
*This guide requires you to be on a Linux based system, if on Windows, then it is recommended to install the "Windows Subsystem for Linux" (WSL)*
*To install the WSL, simply run the command:* `wsl --install` *and follow the on-screen prompts, before restarting your system.*1) `sudo apt update`
2) `sudo apt install qemu-system-i386`
- Download the latest OS image from the releases page, or from builds/bin/...
3) `qemu-system-i386 -drive format=raw,file=PATH/TO/os-image.bin`
4) Enjoy your emulated WaffleOS experience! 🎉🎉### (For developers) Virtual Machine (QEMU)
*This guide requires you to be on a Linux based system, if on Windows, then it is recommended to install the "Windows Subsystem for Linux" (WSL)*
*To install the WSL, simply run the command:* `wsl --install` *and follow the on-screen prompts, before restarting your system.*1) First you will need to clone this repository before you can proceed with the installation
2) Locate the installation script, "`setup-gcc-debian.sh`" and run `chmod +x setup-gcc-debian.sh` from the same directory in your terminal, before using `./setup-gcc-debian.sh`
- This will install QEMU, NASM, GCC and a bunch of other things needing for compiling the OS
3) To verify your installation:
- You should see something like this after running the setup
![Terminal output](https://github.com/AlanDoesCS/WaffleOS/assets/95879019/72d8dc06-bd04-4357-9046-aeb43f707513)
- Then run:
```shell
qemu-system-i386 --version
nasm -v
gcc --version
```
4) Next, add the new directory ("/usr/local/i386elfgcc/bin") to the path variable:
- Run `vim ~/.bashrc`
- Add "`export PATH="$PATH:/usr/local/i386elfgcc/bin"`" to the end of the file
- Add "`export PATH="$PATH:/usr/local/i386elfld/bin"`" to the end of the file
- Save and exit (`:x`)
5) Restart your system
6) Locate `source/run.sh` and run `chmod +x run.sh` then `./run.sh`
7) Enjoy your emulated WaffleOS experience! 🎉🎉### x86 based device
1) *Guide in progress*
---
## Commands
*This list is subject to change*- `help`
- Prints a list of available commands
- `clear`
- Clears the screen
- `shutdown` (not yet implemented, but will use ACPI)
- Shuts down the system### Fun
- `hello`
- Prints "Hello, World!" to the screen
- `waffle`
- Prints "WaffleOS" to the screen, along with a waffle in ascii
---## WIP
These features have NOT YET BEEN IMPLEMENTED (hence WIP)### WIP Commands
- Filesystem:
- `ls`
- `cd`
- `mkdir`
- `mv`
- `touch`
- `rm`
- `cat`
- Miscellaneous:
- `webster`
- Graphics
- `graphics -enable/disable` (enables or disables vesa graphics)