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)
- 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
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
Current:
- None
Planned:
- GUI Server
- Network Server
Current:
- Debug Console
Planned:
- Telnet Server
Current:
- None
Planned:
- UNIX Shell
Current:
- None
Planned:
- LibC
- LibM
- LibNet
- LibGUI
Current:
- None
Planned:
- Git
- DOOM
- Bash
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