Skip to content

NaviOSS/NaviOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NaviOS

badly written open-source generic operating system made for fun written in rust! i am attempting to make something like ChromeOS with native wasm support this is my first OS!

star the repo!

building and running

you need a linux system with bash, git, xorriso, make, cargo and qemu-system-x86_64 (you need kvm otherwise run with no-kvm argument) to run do

cargo run

to build do

cargo build

this will make an iso navios.iso to run without kvm do

cargo run -- no-kvm

current features:

  • basics (x86_64: IDT, GDT, interrupts, ACPI, APIC, APIC keyboard, APIC timer, ...)
  • pmm (bitmap allocator)
  • linked-list heap allocator
  • generic keyboard driver
    • ps/2 scancode set 1 support
  • basic ring0 framebuffer terminal
  • scheduler with one-thread processes
  • VFS with RamFS (ustar unpacking support)
  • init ramdisk
  • userspace:
    • resources
    • userspace elf executing
    • argc && argv
    • C stdlib
    • alot of syscalls (TODO: make a list)
    • program break and (sbrk (untested))

currently using the limine bootloader

roadmap

note: i dont know much about osdev (this is my first OS), stuff prefixed with ? is missing info and more stuff may be added in the feature

next:

  • sync
    • improve the peformance of the frame_allocator it takes 5 seconds to map 7*4 mbs without kvm?
  • replace the current linked list allocator with a good buddy allocator

roadmap

  • x86_64 basics
    • GDT
    • interrupts
    • APIC
    • framebuffer terminal
  • framebuffer terminal
    • scrolling
    • locking the terminal (threading, context switching)
    • maybe try to RWLock the terminal instead of just locking the viewport?
    • terminal shell process
  • ACPI parsing
    • RSDT parsing
    • XSDT parsing
    • MADT parsing
    • FADT parsing
    • DSDT parsing (not planned, acpi sucks)
  • ACPI powermangment
  • keyboard
    • ps/2 keyboard interrupt handling
    • usb keyboard handling
    • keyboard driver
    • key mapping
  • memory
    • pagging
    • kernel heap
    • a slab allocator
    • move more stuff to linked list and rely more on the slab allocator
    • figure out how should i give apps memory?
    • higher half kernel
  • fs
    • basic vfs
    • ramfs
    • fat32
  • networking
    • OSI Model
      • Layer 1:
        • Manage Network Driver (NIC)
      • Layer 2:
        • Manage data from the layer 1:
          • NIC (Manage the physical network)
          • Ethernet frame
          • ARP (For the ip adress)
      • Layer 3:
        • IPv4
        • ICMP (For commande like ping)
      • Layer 4:
        • TCP
        • UDP
  • GUI
    • ?
  • apps
    • context switching, and simple processes
    • more advanced context switching, (pid, name, each process has it's own page table)
    • process resources
    • the ability for each process to have multiple threads
    • userspace
    • ELF support
    • wasm VM
    • more wasm

About

an opensource operating system made for fun

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages