Skip to content

Supercip971/WingOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Banner

Wingos

WingOS is a small hobbyist 64 bit kernel made with <3 in C++

latest milestone - blog - old branch

What the project is about

The project is about creating an operating system that is easy to program for, with a simple and clean API.

  • It tries to experiment with new ideas and API, ditching old and legacy concepts when possible.
  • WingOS is a microkernel based operating system, currently targetting x86_64. It tries to be a capability based OS, with a focus on security and stability.
  • The userspace is beginning to be fleshed out, with a VFS+ext4+nvme support.

Wingos-doom

Wingos screenshot running DOOM in userspace

Milestones

Feature list

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)

Dependencies

  • The project uses the cutekit build system.
  • The project uses limine as a bootloader.

Roadmap

  • 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

Building the project

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).