All Projects â†’ vinc â†’ moros

vinc / moros

Licence: MIT license
MOROS: Obscure Rust Operating System 🦉

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language
NewLisp
63 projects
shell
77523 projects
Makefile
30231 projects
assembly
5116 projects
HTML
75241 projects

Projects that are alternatives of or similar to moros

KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-96.85%)
Mutual labels:  x86-64, os, osdev, hobby-os
duckOS
Yet another hobby x86 UNIX-like operating system written in C and C++. Features a dynamically linked userspace, an in-house c standard library, and more! And yes, it runs DOOM.
Stars: ✭ 250 (-50.79%)
Mutual labels:  os, osdev, hobby-os
Macaron
A sweet hobby made operating system written in C++ for x86 CPUs with GUI
Stars: ✭ 34 (-93.31%)
Mutual labels:  os, osdev, hobby-os
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (-89.57%)
Mutual labels:  x86-64, os, osdev
MoonOS
MoonOS (just a kernel atm) is a micro kernel designed for the x86_64 and arm architecure.
Stars: ✭ 82 (-83.86%)
Mutual labels:  x86-64, os, osdev
Monkos
an experimental 64-bit operating system
Stars: ✭ 100 (-80.31%)
Mutual labels:  x86-64, os, osdev
Cyjon
A simple, clean code, multi-tasking operating system written in pure assembly language for 64-bit processors from the AMD64 family.
Stars: ✭ 184 (-63.78%)
Mutual labels:  x86-64, os, osdev
AhnTri
Super-simple OS
Stars: ✭ 54 (-89.37%)
Mutual labels:  os, osdev, hobby-os
utero
The Operating System (for x86_64) written in Crystal as much as possible
Stars: ✭ 55 (-89.17%)
Mutual labels:  x86-64, os, osdev
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 (+822.64%)
Mutual labels:  x86-64, os, osdev
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 (-90.75%)
Mutual labels:  x86-64, os, osdev
Os2
x86_64 OS kernel with completely async userspace and single address space [WIP; but basic kernel functionality implemented]
Stars: ✭ 25 (-95.08%)
Mutual labels:  x86-64, os, osdev
SynnixOS
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.
Stars: ✭ 40 (-92.13%)
Mutual labels:  x86-64, osdev, hobby-os
Wingos
a little 64bit operating system written in c++ with smp support
Stars: ✭ 361 (-28.94%)
Mutual labels:  x86-64, os, osdev
kora-kernel
Kernel for my operating system KoraOS
Stars: ✭ 15 (-97.05%)
Mutual labels:  os, osdev, hobby-os
Dgos
Operating System
Stars: ✭ 90 (-82.28%)
Mutual labels:  x86-64, osdev
Ktf
Kernel Test Framework
Stars: ✭ 93 (-81.69%)
Mutual labels:  x86-64, os
Chrysalisp
Parallel OS, with GUI, Terminal, OO Assembler, Class libraries, C-Script compiler, Lisp interpreter and more...
Stars: ✭ 1,205 (+137.2%)
Mutual labels:  x86-64, os
Axel
Operating System
Stars: ✭ 96 (-81.1%)
Mutual labels:  x86-64, os
lf-os amd64
Hobby operating system for amd64 with high ambitions - mirror
Stars: ✭ 30 (-94.09%)
Mutual labels:  osdev, hobby-os

MOROS: Obscure Rust Operating System

screenshot

MOROS is a hobby operating system written in Rust by Vincent Ollivier.

It targets computers with a x86-64 architecture and a BIOS, so mostly from 2005 to 2020, but it also runs well on most emulators (Bochs, QEMU, and VirtualBox).

This project started from the seventh post of the second edition of Writing an OS in Rust by Philipp Oppermann and by reading the OSDev wiki along with many open source kernels.

Travis Crates.io

Features

  • External bootloader (using bootloader)
  • x86 CPU support (using x86_64)
  • Hardware interrupts (using pic8259)
  • PS/2 Keyboard with customizable layout (using pc-keyboard)
  • VGA Text mode with customizable font and color palette
  • Serial output (using uart_16550)
  • Paging
  • Heap allocation (using linked_list_allocator)
  • ACPI shutdown (using acpi and aml)
  • RTC clock
  • PCI devices
  • ATA PIO mode
  • Random number generator (using rand_hc)
  • RTL8139 network card
  • AMD PCNET network card
  • DHCP/IP/TCP/UDP/DNS/HTTP network protocols (using smoltcp)
  • Basic filesystem
  • Basic shell
  • Basic text editor
  • Basic lisp interpreter
  • Basic file and network commands
  • Basic userspace for NASM and Rust programs without alloc
  • Multitasking
  • C standard library port

Documentation

Documentation is available here

Setup

Clone the repo:

$ git clone https://github.com/vinc/moros
$ cd moros

Install the required tools with make setup or the following commands:

$ curl https://sh.rustup.rs -sSf | sh
$ rustup install nightly
$ rustup default nightly
$ cargo install bootimage

Usage

Build the image to disk.img:

$ make image output=video keyboard=qwerty

Run MOROS in QEMU:

$ make qemu output=video nic=rtl8139

Run natively on a x86 computer by copying the bootloader and the kernel to a hard drive or USB stick (but there is currently no USB driver so the filesystem will not be available in that case):

$ sudo dd if=target/x86_64-moros/release/bootimage-moros.bin of=/dev/sdx && sync

MOROS will open a console in diskless mode after boot if no filesystem is detected. The following command will setup the filesystem on a hard drive, allowing you to exit the diskless mode and log in as a normal user:

> install

Be careful not to overwrite the hard drive of your OS when using dd inside your OS, and install or disk format inside MOROS if you don't use an emulator.

Tests

Run the test suite in QEMU:

$ make test

License

MOROS is released under MIT.

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