All Projects → V01D-NULL → MoonOS

V01D-NULL / MoonOS

Licence: GPL-3.0 license
MoonOS (just a kernel atm) is a micro kernel designed for the x86_64 and arm architecure.

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects
assembly
5116 projects

Projects that are alternatives of or similar to MoonOS

Toaruos
A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
Stars: ✭ 4,687 (+5615.85%)
Mutual labels:  x86-64, os, osdev, operating-system
kwast
Rust operating system running WebAssembly as userspace in ring 0
Stars: ✭ 83 (+1.22%)
Mutual labels:  x86-64, osdev, operating-system, microkernel
Wingos
a little 64bit operating system written in c++ with smp support
Stars: ✭ 361 (+340.24%)
Mutual labels:  x86-64, os, osdev, operating-system
poplar
Microkernel and userspace written in Rust exploring modern ideas
Stars: ✭ 217 (+164.63%)
Mutual labels:  os, osdev, operating-system, microkernel
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (-42.68%)
Mutual labels:  x86-64, os, osdev, operating-system
utero
The Operating System (for x86_64) written in Crystal as much as possible
Stars: ✭ 55 (-32.93%)
Mutual labels:  x86-64, os, osdev, operating-system
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (-35.37%)
Mutual labels:  x86-64, os, osdev, operating-system
LudOS
A toy monolithic kernel written in C++
Stars: ✭ 38 (-53.66%)
Mutual labels:  os, osdev, operating-system, operating-system-kernel
saturn
A microkernel based operating system developed from scratch. This repository also includes all Saturn services and applications.
Stars: ✭ 21 (-74.39%)
Mutual labels:  x86-64, osdev, operating-system, microkernel
KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-80.49%)
Mutual labels:  x86-64, os, osdev, operating-system
Cyjon
A simple, clean code, multi-tasking operating system written in pure assembly language for 64-bit processors from the AMD64 family.
Stars: ✭ 184 (+124.39%)
Mutual labels:  x86-64, os, osdev, operating-system
ByteOS
A simple hobby operating system for the x86-64 architecture, written in C.
Stars: ✭ 47 (-42.68%)
Mutual labels:  x86-64, os, operating-system
rust os
My hobby operating system microkernel written in Rust
Stars: ✭ 33 (-59.76%)
Mutual labels:  osdev, operating-system, microkernel
FOMOSv2-CL
FOMOS stands for: Free, Open source, Mobile, Operating, System.
Stars: ✭ 24 (-70.73%)
Mutual labels:  x86-64, os, operating-system
zambesii
Non-unix, custom-API hybrid OS kernel written in C++ which can be thought of as an emulated microkernel. The native API is almost fully asynchronous and the kernel is aimed at high-scaling, high-throughput-requiring multiprocessor workloads, with working support for SMP and NUMA already implemented. Join the IRC channel, #zbz-dev on freenode!
Stars: ✭ 13 (-84.15%)
Mutual labels:  os, operating-system, operating-system-kernel
Os2
x86_64 OS kernel with completely async userspace and single address space [WIP; but basic kernel functionality implemented]
Stars: ✭ 25 (-69.51%)
Mutual labels:  x86-64, os, osdev
novusk
A kernel written in Rust
Stars: ✭ 61 (-25.61%)
Mutual labels:  x86-64, os, operating-system-kernel
Cuteos
A 64-bit SMP-safe kernel for the PC architecture.
Stars: ✭ 51 (-37.8%)
Mutual labels:  x86-64, osdev, operating-system
greenteaos.github.io
🏠 Homepage of the @GreenteaOS
Stars: ✭ 16 (-80.49%)
Mutual labels:  os, osdev, operating-system
Axel
Operating System
Stars: ✭ 96 (+17.07%)
Mutual labels:  x86-64, os, operating-system

Moon OS

Moon OS is a modular micro-kernel targeting the x86_64 and armv6 architecture, aiming to be POSIX-like in the future.

Screenshots:

Bootsplash:
Verbose boot:
Kernel panic:

Features

  • Support for multiple architectures:
    • x86_64 PCs with acpi support
      • 4 level paging
      • Stacktrace/symbol backtrace
      • zoned bitmap and slab allocator.
      • System calls via syscall (No support for int based system calls)
    • Nintendo 3ds (armv6)
      • I2C driver
      • Bootrom IVT
      • Render strings to the display

Shared features (both architectures support this):

  • ubsan
  • Parsable boot arguments (quiet/verbose)
  • Elf loader
  • Primitive scheduler (Will be improved overtime, for now the my focus is on getting everything up and running (IPC, servers, libc, etc))

Future features:

  • Threads
  • kasan
  • ACPI
  • SMBIOS
  • Multitasking
  • Many hardware drivers including but not limited to:
    • Network cards
    • Storage drivers
    • GPU's
    • And much more
  • A libc for the userland

Near future todo list

  • Make better use of the APIC (currently it's used for the timer only)
  • virtual memory subsystem
  • New physical memory manager? (Unsure.)

This is currently being working on:

  • Scheduler
  • IPC
  • Porting mlibc
  • Initrd
    • In kernel decompression library to decompress the initrd
    • Native (build machine) program to build and add files (to maintain decent modularity) to the initrd.
    • Load and render an image from the initrd (tga, bmp)
  • New additions to make the armv6 port a lot more usable (SD Card driver, gpu, vblank)

Directory walkthrough:

  • libs/ -- Utilities not strictly related to a kernel (Scheduler, memory manager, etc), but required for it to function.
  • kernel/ -- Kernel source code
  • boot/ -- Everything Moon needs in order to boot
  • daemon/ -- Special micro-kernel servers
  • userspace/ -- Bootloader files, configs, modules, etc. Many files are automatically added at build-time.

Installation

Building: (assuming you are using a debian based distro)

  • Install needed tools:

    • sudo apt update
    • sudo apt install gcc nasm qemu-system-x86 libfuse-dev
  • Build kernel

    • make all -- Build the kernel
    • make run -- Run the kernel in qemu and build it if necessary (x86_64 only)
    • make kvm -- Run the kernel in qemu with kvm and build it if necessary (x86_64 only)
    • Command line options for kvm and run:
      • modern=yes -- Emulate modern features (x86_64 only)
  • Configure architecture:

    • Simply edit two variables in Make.conf:
      • ARCH and BOARD. Permitted values are documented in a comment.

My journey: (Inspiration for newcomers)

I have always wanted to make an OS, so one day I decided to build one. Turns out it is a lot of work and back then it totally overwhelmed me to the point where I took long breaks (for months) because information was so scarce, and what little information there is is outdated.

I have written about 4 "kernels" during my OS development learning experience, and each time I started over because I was far too overwhelmed- none have gotten past a GDT :/ (heck, some where just bootloaders that called a kernel entry and looped)

If you are a beginner looking to understand what this code is doing and how you can write your own kernel with up-to-date information, please do join the OSDEV discord server (linked in the osdev wiki at the bottom) and don't give up when it gets hard at first.

I have started developing kernels about 8 months ago at the time of writing (with multiple month-long of breaks in between), and I still have many things to learn, however my try harder mindset proved useful in helping me get through the struggles and write a kernel for which I did not have to steal or copy code from tutorials or other projects out of a lack of knowledge.

I hope this inspired you to use this mindset when things seem too difficult to manage.

Best of luck ~ V01D (Tim).

Special thanks

  • Thanks go out to websites like lowlevel.eu or the osdev wiki but also some cool and really helpful os developers on github and discord.

Finishing touch (resources I use)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].