diff --git a/tiny-os/README.md b/tiny-os/README.md new file mode 100644 index 0000000000000000000000000000000000000000..623a23c446ff6f834e28d9b630ca8fa67740f3b5 --- /dev/null +++ b/tiny-os/README.md @@ -0,0 +1,49 @@ +# **Tiny OS Development Project** + +This project focuses on creating a minimal operating system that can boot, execute simple C functions, and display text using a framebuffer driver. It follows **Worksheet 2 Part 1** and references **The Little Book of OS Development**. + +--- + +## **1. Project Overview** + +The project's primary objectives are: +1. Develop a bootloader to load the kernel. +2. Transition from assembly to C for kernel functionality. +3. Implement a framebuffer driver for text output, cursor positioning, and screen clearing. +4. Test the operating system in QEMU and document the outcomes. + +--- + +## **2. Directory Structure** + +The directory structure is organized as follows: + +```plaintext +tiny-os/ +├── source/ +│ ├── loader.asm # Bootloader in assembly +│ ├── kernel.c # Main kernel logic +│ ├── fb.c # Framebuffer driver +│ ├── io.c # Low-level I/O functions +│ └── link.ld # Linker script +├── include/ +│ ├── fb.h # Framebuffer driver header +│ └── io.h # I/O functions header +├── iso/ +│ └── boot/ +│ └── grub/ +│ ├── stage2_eltorito # GRUB bootloader file +│ └── menu.lst # GRUB configuration +├── Makefile # Automates build processes +└── README.md # Project documentation + +--- + +## **3. Features** + +Key features of this project include: + +1. Bootloader: +- GRUB is used to load the kernel. +- The kernel starts execution at the entry point defined in loader.asm. +