https://github.com/i5-650/turb-os
A small OS made in C/C++, made for a supervized project ! This project is NOT an example
https://github.com/i5-650/turb-os
c cpp operating-system os school-project
Last synced: about 1 year ago
JSON representation
A small OS made in C/C++, made for a supervized project ! This project is NOT an example
- Host: GitHub
- URL: https://github.com/i5-650/turb-os
- Owner: i5-650
- License: mit
- Created: 2022-01-09T21:21:14.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-09-01T00:07:44.000Z (over 1 year ago)
- Last Synced: 2025-01-05T16:09:50.383Z (about 1 year ago)
- Topics: c, cpp, operating-system, os, school-project
- Language: C
- Homepage:
- Size: 25.4 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# Turb-OS
This project was done to be a school projet, it's NOT an example... About why and how, everything is explained bellow.
There is an `image.iso` which is the last working Turb-OS' ISO.
You can try to compile it by yourself, but Turb-OS is based on an old version of `limine`.
## What's the goal ?
Have a "usable" OS that can be used on embedded systems.
Meaning we want to implement:
- dynamic allocation
- scheduling / multitasking
- minimal display
## Tools used:
- clang
- lld
- LLVM
- Make
- nasm
- qemu
- xorriso
- wget
- tar
You may encounter problems while compiling on the asm files, an error about reference. Using development version of those tools may solve it (I used to be on manjaro and have development version tools, didn't find yet where the bug comes from)
### Install tools
```
sudo apt-get install clang lld make nasm xorriso wget tar qemu-system-x86
```
if you're on windows, you need to compile with a WSL and run it with qemu ON WINDOWS
After cloning the repo, you can compile and run the OS by using:
```
make all
```
or to go faster and use multiple cores
```
make -j$(nproc --all)
```
# TODO LIST
- [x] minimal display
- [x] dynamic allocation
- [x] interruptions
- [x] keyboard input (PS/2)
- [x] mouse input (PS/2)
- [x] SMP
- [x] UBSAN
- [x] serial debugging
- [x] kernel panic
- [x] HPET (not tested)
- [x] scheduler
- [x] VFS
## Quick preview
### Starting and Commands

### Filesystem

### Drawing with the mouse

### Multitasking
