Skip to content
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.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
.vscode update c_cpp_properties Apr 11, 2019
boot Implemented support for headless mode to support cloud development us… Feb 27, 2019
cmake Hopefully optimized how we do the fenv setup and how we initialize th… Apr 15, 2019
config Disable smp for now, as there are some issues with ipi synchronizatio… Apr 23, 2019
docs Fix remaining issues with process-manager, it now seems to run. Disco… Jan 30, 2019
kernel Disable smp for now, as there are some issues with ipi synchronizatio… Apr 23, 2019
librt Fixed resolvement of process paths, fixed interrupts handling for inp… Apr 18, 2019
modules Fixed resolvement of process paths, fixed interrupts handling for inp… Apr 18, 2019
resources More updates to alumni, almost finished, improved build system for us… Sep 17, 2018
services Fixed resolvement of process paths, fixed interrupts handling for inp… Apr 18, 2019
tests Hopefully optimized how we do the fenv setup and how we initialize th… Apr 15, 2019
tools fixed #196 however it seems its not running the new threads Apr 10, 2019
.gitattributes Initial Commit May 31, 2014
.gitignore
.gitmodules Now building the c++ runtime using cmake, both shared libraries and s… Apr 2, 2019
CMakeLists.txt Updates to cmake system, still need to figure out how to force clang … Feb 21, 2019
CMakeSettings.json Updates to cmake system, still need to figure out how to force clang … Feb 21, 2019
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Feb 21, 2019
LICENSE Create LICENSE Feb 21, 2019
README.md fixed #196 however it seems its not running the new threads Apr 10, 2019
makefile Hopefully optimized how we do the fenv setup and how we initialize th… Apr 15, 2019
revision.h Removed unused folder, updated version to 0.6 Apr 23, 2019

README.md

The Mollen(/Vali) Operating System

Build Configuration Status
I386 Build Status
AMD64 Build Status

Download

Build Configuration Image Version Download Link
I386 .Img Latest Download
I386 .Vmdk Latest Download
AMD64 .Img Latest Download
AMD64 .Vmdk Latest Download

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 commands
    6. Known issues
  2. Contributing
    1. Submitting issues
    2. PRs
  3. Roadmap
  4. Features
    1. Bootloader
    2. Kernel
    3. Drivers
  5. Documentation
    1. 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_ARCH Yes* Which architecture you will build the OS and applications for.
VALI_SDK_PATH No** Points to where the SDK should be installed for app development.
VALI_DDK_PATH No** Points to where the DDK should be installed for driver development.
VALI_APPLICATION_PATH No*** Points to where the Vali applications/libraries are built.

* The supported platforms targets right now are i386 and amd64

** Can be supplied to enable make install_sdk and make install_ddk

*** 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

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 the make install_sdk/ddk commands, you will need all the not required environment variables. Then follow the instructions located here to get the sources for the applications.

The build commands

There is a series of build commands available.

Command Description
make Builds the operating system and support libraries
make install_sdk Installs the SDK to the location VALI_SDK_PATH points. This is needed for app and driver development.
make install_ddk Installs the DDK to the location VALI_DDK_PATH points. This is needed for 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 phailmollen@gmail.com.

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

Progress so far is that the kernel has succesfully been converted to a hybrid micro-kernel. Drivers have all been fitted to the new driver framework and are compiling. The new toolchain has also been taken into use (llvm/clang/lld) and i am currently working on a native port of said toolchain. The focus for 2019 will be the userspace, and stability/robustness of the operating system. No new kernel features are planned for the OS at this moment, and no new drivers unless I should reach a point where they are highly required.

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 advanced bootloader, which can be found in the /boot directory. mBoot is written specifically for MollenOS, and supports booting from both FAT32 & MFS.

Kernel

MollenOS supports a wide array of features and has implementation for VFS, Processes, Pipes, an advanced PE loader (which is used as the file format in MollenOS), ACPICA built in and MollenOS natively uses UTF-8 in it's kernel. UTF-8 Is implemented in a library called MString which is written for MollenOS.

Drivers

- AHCI
- ACPICA
- MFS
- HPET
- USB Stack (OHCI, UHCI, EHCI)
- 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.

Project structure

  • /boot (Contains bootloaders and anything boot-related)
  • /cmake (CMake configuration files required to build the OS with cmake)
  • /config (Make configuration files required to build the OS with make)
  • /docs (Documentation and related resources about the project and the OS)
  • /kernel (Contains the MollenOS kernel source code)
  • /librt (Contains all support and runtime libraries needed for MollenOS)
  • /modules (Contains drivers for MollenOS)
  • /releases (Full releases of the OS)
  • /services (Contains system services like the filemanager for MollenOS)
  • /resources (Contains the deploy folder for installing the OS)
  • /tools (Contains tools for building and manipulating)

Screenshots

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

Boot

Custom bootloader loading mollenos

The usb stack enumerating an usb-port

Usage

The mesa/llvmpipe/gallium port for the OS running The mesa/llvmpipe/gallium port for the OS running The mesa/llvmpipe/gallium port for the OS running

You can’t perform that action at this time.