WingOS is a small hobbyist 64 bit kernel made with <3 in C++
I am currently working on this rewrite. If you want to see the original version, you can checkout the old branch. Please note that I wrote the old version when I was a beginner in C++ and OS development 3-4 years ago, and I have learned a lot since then.
If you are interested in seeing much more advanced, working, and cool projects, you should visit the brutal project or skift.
Please be aware that this rewrite is a work in progress. And due to my current schedule and my engineering school exams, I don't have much time to work on it. I'm no longer 14 years old, and I am a lot more busy now :⁽.
The project is about creating a small hobbyist kernel that is simple, easy to understand, and fun to work on. It is not meant to be a production-ready kernel, but it doesn't mean that coding should not be taken seriously. Everything should be done with care, and the code should aim to be fast, while being simple and easy to understand.
For now the kernel is still in development, but it has a few key features:
- is 64 bit
- is SMP capable (multiple CPU support)
- has a basic scheduler with SMP support, priority, and CPU affinity support (and support cpu tree for NUMA systems)
- Nvme (NVMe) disk support (in userspace)
- Ext4 filesystem support (in userspace)
- VFS support (in userspace)
- Boot
- x86 basic support (interrupt, paging, ...)
- SMP support (apic, ...)
- Scheduler (with SMP support, priority, and cpu affinity support)
- Loading user space app
- User space (ring 3)
- Syscalls
- Spaces and handles
- Userspace objects
- Memory management (physical)
- Memory management (virtual)
- IPC endpoint
- Services and IPC (inter process communication)
- PCI support (scan, devices, ...) (in userspace)
- Hello File!
- Nvme disk support
- Partition support (GPT)
- Filesystem support (ext4)
- VFS support
- Blocking IPC
- Graphics support (VESA, framebuffer, ...)
- Input support (keyboard, mouse, ...)
- Interrupt handling in userspace
- Port DOOM
- Signals
- Create a shell
- Above and beyond
For now I don't have a complete dependency list, but you will need:
- cutekit
- Clang cross compiler for x86_64
- Everything needed to build a cross compiler
Run bash meta/build/make_cross_compiler.sh to build the Wingos specific version of gcc.
Now do ck s to start the build and run.
Do ck p to build ports (now no ports are buildable, do a git clone recursive to get all ports).
