All Projects → Meulengracht → Mollenos

Meulengracht / Mollenos

Licence: gpl-3.0
MollenOS/Vali is a modern operating system that is built with focus on abstraction and a modular design, allowing anyone to port it to any architecture. It currently targets the x86-32 and x86-64 platform.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Mollenos

disfetch
Yet another *nix distro fetching program, but less complex.
Stars: ✭ 45 (-75.27%)
Mutual labels:  kernel, system, os
Reactos
A free Windows-compatible Operating System
Stars: ✭ 10,216 (+5513.19%)
Mutual labels:  kernel, os, drivers
Tofita
🍬 All-new kernel for @GreenteaOS
Stars: ✭ 112 (-38.46%)
Mutual labels:  kernel, os, drivers
Mbp Fedora
Stars: ✭ 129 (-29.12%)
Mutual labels:  kernel, os, system
Sparrow
My Operating System.
Stars: ✭ 71 (-60.99%)
Mutual labels:  kernel, os
Toaru Nih
NOTICE: The ToaruOS-NIH Project has been MERGED UPSTREAM. This repository is now archived.
Stars: ✭ 66 (-63.74%)
Mutual labels:  kernel, os
Zen
Experimental operating system written in Zig
Stars: ✭ 177 (-2.75%)
Mutual labels:  kernel, os
Ktf
Kernel Test Framework
Stars: ✭ 93 (-48.9%)
Mutual labels:  kernel, os
Prettyos
A Preemptive Hard Real Time kernel for embedded devices.
Stars: ✭ 36 (-80.22%)
Mutual labels:  kernel, os
Node Os Monitor
simple OS monitoring for Node.js
Stars: ✭ 83 (-54.4%)
Mutual labels:  os, system
Monkos
an experimental 64-bit operating system
Stars: ✭ 100 (-45.05%)
Mutual labels:  kernel, os
Oneos
oneOS
Stars: ✭ 60 (-67.03%)
Mutual labels:  kernel, os
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (-70.88%)
Mutual labels:  kernel, os
Harmonyos
鸿蒙系统资料。Docs about HarmonyOS.
Stars: ✭ 1,191 (+554.4%)
Mutual labels:  kernel, os
Fiwix
A UNIX-like kernel for the i386 architecture
Stars: ✭ 38 (-79.12%)
Mutual labels:  kernel, os
U Root
A fully Go userland with Linux bootloaders! u-root can create a one-binary root file system (initramfs) containing a busybox-like set of tools written in Go.
Stars: ✭ 1,816 (+897.8%)
Mutual labels:  kernel, system
Emerald
An operating system written in C
Stars: ✭ 118 (-35.16%)
Mutual labels:  kernel, os
Os2
x86_64 OS kernel with completely async userspace and single address space [WIP; but basic kernel functionality implemented]
Stars: ✭ 25 (-86.26%)
Mutual labels:  kernel, os
Ansible Role Munin
Ansible Role - Munin
Stars: ✭ 27 (-85.16%)
Mutual labels:  os, system
Serenity
SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.
Stars: ✭ 16,842 (+9153.85%)
Mutual labels:  kernel, os

The Mollen(/Vali) Operating System

Build Configuration Status
I386 Vali I386 CI
AMD64 Vali AMD64 CI

Table of Contents

  1. Getting started
    1. Environmental variables
    2. Setting up the toolchain
    3. Setting up for OS development
    4. Setting up for application development
    5. The build options for cmake
    6. The build commands
    7. Known issues
  2. Contributing
    1. Submitting issues
    2. PRs
  3. Roadmap
  4. Features
    1. Bootloader
    2. Kernel
    3. Services
    4. Drivers
  5. Documentation
    1. Architecture
    2. Project structure
  6. Screenshots
    1. Boot
    2. Usage

Getting started

Environment variables

Before you setup anything you must setup environmental variables that are used by the project.

Variable Required Description
CROSS Yes Points to where the cross-compiler is installed.
VALI_APPLICATION_PATH No* Points to where the Vali applications/libraries are built.

* Can be supplied to include built applications in the kernel image

Setting up the toolchain

The only thing you need to get started is a succesfully built toolchain of llvm/clang/lld. To help make this easier I have made a fully automated script, which downloads all the neccessary components, and initiates a full build of llvm/lld/clang. Make note that a full build of llvm/clang/lld need to run, and that this takes a couple of hours.

Toolchain scripts are located here. You should run the scripts in this order:

  • depends.sh
  • checkout.sh
  • build-cross.sh

Setting up for OS development

Remember to checkout all the submodules with the command git submodule update --init --recursive

The last step is now to run the depends.sh script that is located in this repository which installs the final pre-requisites (nasm, mono-complete, cmake platform script). The script is located in tools/depends.sh.

After this, you are essentially ready to start developing on the operating system. When/if you make pull requests when contributing, please follow the pull template that is provided.

Setting up for application development

If you want to build applications for Vali, you will need to install the sdk and ddk by using make install. This will install the required headers and libraries in a shared location that you specify during cmake configuration by using the CMAKE_INSTALL_PREFIX.

Then follow the instructions located here to get the sources for the applications.

The build option for cmake

These are highlighted build configuration options for the cmake generation, there are more options, but these are the most often configured.

Option Default Value Description
VALI_ARCH i386 Which architecture you will build the OS and applications for. Supported are i386 and amd64.
VALI_ENABLE_KERNEL_TRACE ON Enable debug tracing in the kernel.
VALI_ENABLE_SMP ON Enable multicore support in the kernel.

The build commands

There is a series of build commands available.

Command Description
make Builds the operating system and support libraries
make install Installs the SDK and DDK to the location pointed by CMAKE_INSTALL_PREFIX. This is needed for app and driver development.
make install_img Creates a harddisk image with bootloader, kernel, libraries and built apps of format .img
make install_vmdk Creates a harddisk image with bootloader, kernel, libraries and built apps of format .vmdk

Known issues

Bochs

The uhci driver in bochs (2.6.9) defers packages when communicating with MSD devices to fake a seek delay, however this results in issues with reading from the harddisk, since bochs does not correctly store the number of deferred packages. See this issue description here.

Contributing

I appreciate any form for contribution you want to make to the project! The project is purely driven by passion, and I dedicate any and all available spare time to this project. But to take this project to the next level I need support! Contributions of any kind are deerly welcome, but should follow the below guidelines.

You can start contributing on any aspect of the operating system, and if you should ever be in doubt, feel free to send me an email at [email protected].

Submitting issues

When submitting issues, please take care that the issue is not a dublicate of an already existing, open issue. Please follow the templates specified for issues. Issues can be either a bug report or a feature request. If you feel like the feedback/issue you have does not fall into either category, pick the one you feel it fits the most.

Pull Requests

If you want to contribute as a developer on the project please fork the repository, and contribute via pull requests. There is a pull request template you can use when creating a pull request. Please allow for a day or two for me to review the pull request before accepting, as I will take a look as quickly as possible and submit your pull request.

Roadmap

The basic features of the kernel is completed, and the road to the 0.7 release will include mostly bugfixes to kernel or any missing implementations. Some implementations in relation to cleanup of resources and coordination of cleanup are postponed and we now seem to slowly encounter those issues as we continue to port applications and functionality to the operation system. The goal for the 0.7 release are described in the milestone 0.7 Pearl.

Features

Bootloader

MollenOS uses it's own filesystem (MFS), it is not booted by the more traditional way of GRUB. Instead it has it's own faily complete bootloader for BIOS (only atm, we are planning to implement UEFI soon), which can be found in the /boot directory. mBoot is written specifically for MollenOS, and supports booting from both FAT32 & MFS.

Kernel

The Vali kernel is far from feature-complete, but it currently is in a state where it supports our use-cases. The kernel itself provides some of the basic system management functions like;

  • Memory management
  • Thread management
  • IPC
  • Module support system
  • ACPI

Rest of the system functionality exists as drivers and services.

Services

The current services that are implemented (and at some point when we implement RiscV/ARM architectures) should be included as configurable in the build system, so we can choose exactly which services are relevant for the platform.

  • Device manager (Handles discovery and management of devices on the platform)
  • File manager (Is responsible for both storage and file management)
  • Net manager (Network stack and management of sockets)
  • Process manager (Provides the process protocol that allows spawning and management of processes on the system)
  • Session manager (Provides management of user sessions)
  • Usb manager (The usb stack implementation that manages usb devices, hubs and controllers)

Drivers

- AHCI
- ACPICA
- MFS
- HPET
- USB Stack (OHCI, UHCI, EHCI)
- USB Hub
- USB MSD
- USB HID
- (x86) PCI/PCIe
- (x86) CMOS
- (x86) PIT
- (x86) RTC
- (x86) PS2 Mouse & Keyboard
- (x86) APIC

Documentation

All documentation about design and implementation, and the theory behind is stored in the /docs folder. Right now there isn't any documentation, but it'll all come with the Documentation milestone.

Architecture

Project structure

  • /boot (Contains bootloaders and anything boot-related)
  • /cmake (CMake configuration files required to build the OS with cmake)
  • /docs (Documentation and related resources about the project and the OS)
  • /kernel (Contains the Vali kernel source code)
  • /librt (Contains all support and runtime libraries needed for Vali)
  • /modules (Contains drivers for Vali)
  • /protocols (All the libgracht protocols used in the OS for services and modules)
  • /services (Contains system services like the filemanager for Vali)
  • /resources (Contains the deploy folder for installing the OS)
  • /tools (Contains tools for building and manipulating)
  • /tests (Contains example applications for the OS)

Screenshots

Showcase of Vali to get an idea of how the userspace will be once it's finished.

BIG UPDATE TO LAYOUT AND FEATURES - NEW IMAGES COMING SOON

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