Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rgimad/EOS
EOS is an educational operating system for x86 platform
https://github.com/rgimad/EOS
asm c kernel osdev
Last synced: 2 days ago
JSON representation
EOS is an educational operating system for x86 platform
- Host: GitHub
- URL: https://github.com/rgimad/EOS
- Owner: rgimad
- License: mit
- Created: 2019-08-10T11:50:33.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-01T15:58:50.000Z (almost 2 years ago)
- Last Synced: 2024-08-02T15:34:00.114Z (3 months ago)
- Topics: asm, c, kernel, osdev
- Language: C
- Homepage:
- Size: 4.28 MB
- Stars: 119
- Watchers: 6
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# EOS (Experimental Operating System)
**EOS** is an educational operating system for x86 platform
![Screenshot](https://raw.githubusercontent.com/rgimad/EOS/master/screenshots/screenshot1.png "Screenshot")
## Current status
- GDT and IDT setup
- VESA framebuffer based terminal :D
- PS/2 keyboard and mouse support
- RAM detection and Physical Memory Manager
- Higher Half KernelThe kernel starts at virtual address 0xC0100000
0xC0000000-0xC0400000 and 0x00000000-0x00400000 vitual addresses are mapped to one physical range - to 0x00000000-0x00400000
- Virtual Memory Manager
- Entry based kernel heap manager (kmalloc/kfree/krealloc)
- Very simple kernel command shell (KSH)
- VFS
- Initrd, uses TarFS
- MENUET01 and PE executables loaders
- System call mechanism## TODO
- User-mode and multitasking
- Synchronization (mutex, spinlock)
- FAT32 driver
- HDD driver
- PCI driver
- ACPI driver
- etc.## Building and debugging
Go to src/kernel- Building *release* version:
```Shell
make build-iso
```- Building and running *release* version:
```Shell
make build-iso-run
```- Building *debug* version:
```Shell
make build-iso DEBUG=1
```- Building and running *debug* version:
```Shell
make build-iso-run DEBUG=1
```- Always do following command before switching between debug and release configurations:
```Shell
make clean
```## Thanks to
- Guilherme Samora (psamora)
- Nikita Ivanov, Dmitrii Kychanov, etc. from u365
- wiki.osdev.org
- Arjun Sreedharan
- Stephen Fewer (stephenfewer)
- James Molloy
- levex named user from gihtub
- reddit /r/osdev
- Stackoverflow
- etc.