https://github.com/omarazizi/echoos
Operating System and Kernel
https://github.com/omarazizi/echoos
32-bit c kernel kernel-development low-level-programming operating-system x86-assembly
Last synced: 4 months ago
JSON representation
Operating System and Kernel
- Host: GitHub
- URL: https://github.com/omarazizi/echoos
- Owner: OmarAzizi
- Created: 2024-02-23T21:31:55.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-24T12:53:43.000Z (about 1 year ago)
- Last Synced: 2024-12-03T22:09:21.690Z (6 months ago)
- Topics: 32-bit, c, kernel, kernel-development, low-level-programming, operating-system, x86-assembly
- Language: C
- Homepage:
- Size: 48.8 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# EchoOS

I'm trying to build my own Operating System and its kernel (Project still in progress). So far I implemented:
- The bootloader
- Global Descriptor Table (GDT), so I can switch to 32-bit Protected mode
- Simple LBA driver to read from disk in protected mode (Because we can't use __INT 0x13__ from BIOS anymore)
- VGA 16-color text mode
- Interrupt Descriptor Table (IDT)
- Simple memset function
- Remapped Master & Slave PICs
- Dynamic memory (.e.g heap memory & malloc like functions)
- Memory paging## Testing Interrupts
This screenshot shows the output in qemu after I devided by zero in to trigger the interrupt 0 in IDT
This screenshot shows the output after pressing a key on the keyboard (This is after remapping the PICs so the interrupt called here is 0x21)
## Clone & Run
Clone the repository
```bash
git clone https://github.com/OmarAzizi/EchoOS.git && cd EchoOS
```Building the source and running it
```bash
./build.sh && make run
```### Note
To build the code successfully, you need to set up:
1. [QEMU emulator](https://www.qemu.org/)
2. [GCC Cross-Compiler](https://wiki.osdev.org/GCC_Cross-Compiler)
3. A tree structure that looks like this (in the root of the project):
```bash
.
├── bin
├── build
│ ├── disk
│ ├── idt
│ ├── io
│ └── memory
│ ├── heap
│ └── paging```