This project is a simple operating system implementation, designed to provide a hands-on learning experience for understanding the fundamentals of operating system development. It includes components such as a bootloader, kernel, and basic system utilities.
The project is organized into several key components:
- Boot Sector (
source/boot
) - Loader (
source/loader
) - Kernel (
source/kernel
) - Common Utilities (
source/comm
)
- 16-bit real mode bootloader
- Transition to 32-bit protected mode
- Basic memory detection
- Simple kernel initialization
This project uses CMake for build management. To build the project:
-
Create a build directory:
mkdir build && cd build
-
Run CMake:
cmake ..
-
Build the project:
make
The project includes scripts for running the OS using QEMU:
- For macOS: Use
script/qemu-debug-osx.sh
- For Linux: Use
script/qemu-debug-linux.sh
- For Windows: Use
script/qemu-debug-win.bat
The boot sector is responsible for loading the loader into memory and transferring control to it. It's implemented in assembly and C.
The loader sets up the environment for the kernel, including:
- Detecting system memory
- Entering protected mode
- Loading the kernel into memory
The kernel is the core of the operating system. In its current state, it performs basic initialization tasks.
This section includes shared definitions and utility functions used across different parts of the project.
This project is a work in progress and is intended for educational purposes. Contributions and improvements are welcome!
This project is inspired by various OS development tutorials and resources available online.