Skip to content

KingVentrix007/AthenX-3.0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AthenX-3.0

Copyright 2024 Tristan Kuhn(KingVentrix007)

A new and improved version of AthenX-2.0. With realistic goals,better code,and more features.

About

AthenX-3.0 is the successor of AthenX-2.0. It aims to support more features then AthenX-2.0 as well as use the lessons learned from the previous versions of AthenX to be faster and cleaner.

Getting Started

Prerequisites

  • Unix based operating system

    • WSL(Ubuntu)
    • Linux
    • Ubuntu
  • grub

sudo apt install grub-common
sudo apt install grub-pc-bin
  • nasm
sudo apt install nasm
  • gcc
sudo apt install gcc
  • qemu
sudo apt install qemu-system
  • xorriso
sudo apt install xorriso
  • fdisk
sudo apt install fdisk

Installation

  1. Clone AthenX-3.0
git clone https://github.com/KingVentrix007/AthenX-2.0.git
  1. Enter freshly cloned repository with wsl or other Unix system and run:
bash ./build-cross-compiler.sh
  1. Add then add /cross/bin to .bashrc or .bash_profile
export PATH=$PATH:/your/new/path
  1. Compile and run
make run

More Commands

  1. Run the OS without recompiling or remaking the disk image. Usefull for testing disk drivers and file operations
    make run-no-compile
  2. Make a new fat32 disk image
    bash /scripts/fat32.sh <image_name> <image_size_mb>

Roadmap

  • Boot with Grub

  • VESA/VBE display

  • Keyboard support

    • PS/2(legacy) Keyboard driver
    • USB keyboard support
  • HDD/SSD driver

    • ATA/ATAPI driver
    • AHCI driver
    • USB storage driver
    • NVME driver
  • File system support

    • FAT12/16/32
      • Read/Write/Format
    • ext2/3/4
    • NTFS
    • ISO 9660
  • Memory support

    • Physical memory manager
    • Virtual memory manager
    • Pageing and mapping support
    • Page swap with Disk
    • Variable page size support (Current is 4096)
  • Multiprocessing / Threading support

    • Context switching
    • Scheduling support
      • Round-robin
      • Priority or unfair (I can't decide if it is really necessary)
  • Program loading

    • Load elf file (Incredibly limited, requires Scheduler to be disabled)
    • Load mulitple files at once
  • Debugging system

    • Second screen with some debug information(Press F2, not much there)
    • com1 port, location logging
    • Dwarf support and fully featured debug terminal
  • ACPI support

    • Power on/off (limited)
    • Reboot
    • Power button support
  • UI

    • Basic shell (Virtually no commands)
    • Screen scrolling (limited to the size of the screen)
    • Unlimited scroll back
  • PCI support (Basic bus scan)

  • PCI Express support

  • Network drivers

    • Ethernet cards
      • Intel Ethernet i217
      • RTL8139
      • RTL8169
      • Intel 8254x
    • Wireless Network driver
  • libc

  • Other

    • stdin/stdout/stderr
    • Special files
      • /dev/null
      • /dev/fmb
      • /dev/random
      • /dev/tty(Pretty much just printf)
      • /dev/ Devices generated at runtime(Currently hardcoded)

Contributions

You can make pull requests, but I do have limited time, so your code might take time to be implemented

License

  1. This README.md is distributed under the MIT License. See MIT.txt for more information.
  2. This operating system is protected by the The MIT License, if you use, redistribute, re-upload or share this code you have to comply with MIT and any other Licenses specified within the source code files. I would also appreciate it if credit would be given to me if you use this project.
  3. Licenses specific to files will be stored in the OtherLicenses folder
  4. If I have missed any copyright licenses, Please tell me and I will try to fix it as soon as possible
  5. Some code, mainly older parts of libk, are from AthenX-2.0, meaning that that part of the code can be treated as GNU General Public License v3.0

Libraries and external code used used

Acknowledgments

I would like to say thank you to people and websites that have helped me learn about OS development

  • araujo88 / primus-os: I used his project as a model to learn from

  • GitHub: Free code

  • othneildrew / Best-README-Template This README

  • OsDev.org: Lots if informative pages and articles

  • OS: I used A LOT of his code, ATA driver, VESA, FPU, etc

  • My mom: she did all my editing and made sure my grammar was correct

  • And lastly: Anyone else that I have missed, thank you.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages