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.
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.
-
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
- Clone AthenX-3.0
git clone https://github.com/KingVentrix007/AthenX-2.0.git
- Enter freshly cloned repository with wsl or other Unix system and run:
bash ./build-cross-compiler.sh
- Add then add /cross/bin to .bashrc or .bash_profile
export PATH=$PATH:/your/new/path
- Compile and run
make run
- Run the OS without recompiling or remaking the disk image. Usefull for testing disk drivers and file operations
make run-no-compile
- Make a new fat32 disk image
bash /scripts/fat32.sh <image_name> <image_size_mb>
-
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
- FAT12/16/32
-
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
- Ethernet cards
-
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)
You can make pull requests, but I do have limited time, so your code might take time to be implemented
- This
README.md
is distributed under the MIT License. SeeMIT.txt
for more information. - This operating system is protected by the
The MIT License
, if you use, redistribute, re-upload or share this code you have to comply withMIT
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. - Licenses specific to files will be stored in the
OtherLicenses
folder - If I have missed any copyright licenses, Please tell me and I will try to fix it as soon as possible
- 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
- Ultraembedded/fat_io_lib: FAT file system library
- mpaland/printf: printf(and other functions) library
- benhoyt/inih: INI file parser library
- gcc-mirror/gcc: Implementations of compliant libc code
- hisahi/scanf: scanf(and other functions) library
- pdoane/osdev: ACPI code
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.