Giter Club home page Giter Club logo

melvix's Introduction

Melvix

„A lightweight unix-unlike operating system“

Disclaimer

This project is somewhat of a coding playground for me. It doesn't have any useful functionality (yet?). Be aware that the installation on real hardware is not recommended and may break your computer.

Inactive

I've stopped developing Melvix because it wasn't interesting anymore. As I've rewritten Melvix many times, the following features may not all be available in the dev branch but scattered around all other branches and commits - sorry :P

Features

  • From scratch (no POSIX/UNIX compatibility at all)
  • Multitasking
  • VFS with EXT2, DEVFS and PROCFS
  • Minimal GUI
  • Fast boot time (< 1s)
  • TCP/IP stack and rtl8139 driver
  • Small size (< 100KiB)
  • Sandboxed processes (paging, ring 3, SMAP/SMEP protections)
  • Full UBSan support
  • Compiles with -Wall -Wextra -Werror -pedantic-errors -std=c99 -Ofast

Screenshot

Melvix screenshot

Documentation

Contributions

If you decide to contribute to this project, these are some ideas that could get you started:

  • Fix some TODOs in the code. While these are often not very well described, most of them should be self-explanatory
  • Fix issues posted on GitHubs issues tab
  • Improve the size/speed of the system or the overall performance of libraries and functions
  • Find/fix security issues and potentially write an exploit
  • Add new features (whatever you like, really)
  • Huge parts of the code are kind of a mess to be honest. Feel free to make the code more beautiful :)
  • I'm not very good in design and frontend, so feel free to improve these kind of things too
  • Write more tests for the test suite (which is extremely incomplete at the moment)
  • Write/improve documentation - either in code or in the README, wiki or manuals.

Just remember to pass the test suite and follow the code formatting guidelines (.clang-format).

Contributors ❤️

Licenses

Melvix is released under the MIT License and uses parts of the following 3rd party projects:

Inspiration/usage (documented in the respective files):

Resources:

Libraries:

melvix's People

Contributors

imgbotapp avatar larsvommars avatar marvinborner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

melvix's Issues

Support QEMU q35 machine

The -machine q35 flag should result in a more efficient and performant system. Unfortunately, the q35 machine lacks support of IDE/ATA disk detection and relies on AHCI stuff instead (which many real PCs do, too).

Therefore we either need to implement AHCI support in both the bootloader and the kernel or we use real mode BIOS interrupts in boot/entry.asm instead of the IDE/ATA loader in boot/load.c and only implement AHCI support in the kernel.
The problem with the first solution is - obviously - the amount of repetition we'd need to achieve AHCI support in the bootloader (e.g. PCI, IDE/ATA (as a fallback), AHCI drivers, ...). This would almost result in a small kernel itself and would give up the original idea of a bloat-free and minimalist bootloader.
The problem with the second solution is mainly that BIOS interrupts are not very future-proof and kind of slow but furthermore that the ASM implementation of the current ELF-relocation support wouldn't be easy (at least for me) and very hard to cramp into the current 1024B real mode bootloader size limit.

There is another solution though: Third-party bootloaders like GRUB and the support for the multiboot2 protocol - while making the resulting disk image huge - implement everything to make the kernel future-proof and make it boot on a wide range of devices without me having to re-implement/duplicate features myself.

I'd love to hear other thoughts about this -- I know that I've thought about this way too much.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.