Giter VIP home page Giter VIP logo

remi356 / max-os Goto Github PK

View Code? Open in Web Editor NEW

This project forked from maxtyson123/maxos

0.0 0.0 0.0 4.7 MB

MaxOS is an operating system written in c++ for x86. It has pre-emptive multitasking, device drivers, networking and a FAT32 filesystem, with aims to bring a GUI and program loading.

License: GNU General Public License v3.0

Shell 0.93% C++ 96.64% Assembly 0.71% Makefile 1.03% CMake 0.68%

max-os's Introduction

Max Os

Max os following: OS Dev Wiki, YouTube WYOOS

This is a hobby OS developed in mainly C++, the aim of this project is to setup a functional operating system that supports programs, has a GUI and is POSIX compatible.

In the future I aim to have it run on a raspberry PI, include its very own in house web browser and a custom game engine.

The codebase is well commented with additional notes in the docs directory. Contribution is welcome, however it would be ideal once the basics are set up and I begin on the extended features. (See projects)

(BUGGY) Now with custom build toolchain (binutils, gcc, g++, make, etc) and a custom that can optionally be installed via the make_toolchain.sh file located in toolcahin. The OS can be built using this (build_via_tc.sh) or built via the make file (see below.) The toolchain will become more mainstream with the release of the c libraries.

MaxOS now has support for hardrives (Fat32 filesytem) and can be booted from an ATA drive. The makefile will mount MaxOS onto mnt/maxOS_img_1, however it is not ideal to directly copy files onto the mount point as upon build the folders are wiped and instead you should interact with the folders in the "filesystem" directory. (Note: when you reboot your device you need to run toolchain/create_disk_img.sh to remount the disk)

wakatime maxOS

Screenshots

Screenshot

Whats working:

  • Bootloader
  • Global Descriptor Table
  • Interrupt Descriptor Table
  • Keyboard and Mouse Drivers
  • PCI Communication (for drivers)
  • Basic GUI Framework (will be replaced with a more advanced one later)
  • Process Switching / Multitasking
  • Memory Management
  • Ethernet Networking Drivers
  • Various Internet Protocols (ARP, ICMP, UDP, TCP)
  • Fat32 Filesystem through an ATA driver

Future Plans

Kernel Cleanup

  • Fix VMs
  • VESA Video Mode
  • Usable Desktop / GUI draw rewrite
  • Timer rewrite
  • Console rewrite
  • USB
  • HTTP Protocol, DCHP protocol
  • Codebase cleanup / rewrite
  • Kernel Boot Rewrite
  • Example Telnet Server (GUI) (EMBEDDED)

Road to Userspace

  • New Process Manager / Scheduler
  • Elf Loader
  • Shell
  • More System Calls
  • OS Specific Toolchain
  • LibC
  • LibM
  • Interprocess Communication
  • Services, (GUI Server, Network Server, etc)
  • LibNet
  • Example Telnet Server (GUI) (EXTERNALLY LOADED)

POSIX

  • Unix Filesystem "proc, bin etc"
  • Unix System Calls
  • Other posix stuff

OS Functionality

  • POSIX
  • ext2 Filesystem
  • GUI Theming, More GUI Widgets
  • Game Ports (DOOM etc..)
  • Users & Privileges
  • Virtual Memory
  • More drivers, essential ones etc, wifi maybe
  • Microkernel
  • 64 Bit
  • Game Engine
  • Web Browser
  • M++
  • VNC

Services

Current:

  • None

Planned:

  • GUI Server
  • Network Server

GUI Programs

Current:

  • Debug Console

Planned:

  • Telnet Server

CLI Programs

Current:

  • None

Planned:

  • UNIX Shell

Libraries

Current:

  • None

Planned:

  • LibC
  • LibM
  • LibNet
  • LibGUI

Ports

Current:

  • None

Planned:

  • Git
  • DOOM
  • Bash

Run Locally

Steps for linux:

Clone the project

  git clone https://github.com/maxtyson123/max-os

Go to the project directory, fix the scripts

  cd max-os
  toolchain/fix_scripts_github.sh

Install Dependencies & build

 make install_dep 
 make build

Run Os In Qemu

make runQ

max-os's People

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.