Skip to content
/ stevia Public

hobby bootloader written in assembly. This repo is a mirror of my Gitea repo and is sync'ed every 24 hours.

License

Notifications You must be signed in to change notification settings

Nivirx/stevia

Repository files navigation

Stevia Bootloader

Stevia is a lightweight, hobby bootloader written in Assembly and C, designed for educational purposes. It targets 686+ and aims to be simple, approachable, and understandable, focusing on minimalism and core functionality.

Features

Currently Implemented

  • Stage 1 Bootloader: Loads from the Master Boot Record (MBR) and prepares the system for Stage 2.
  • Stage 2 Bootloader: Loads the kernel into memory and passes control.
  • Basic Filesystem Support: Initial filesystem recognition (details depend on implemented filesystem support).
  • Memory Map Parsing: Detects available memory regions via BIOS interrupts.
  • GDT Initialization: Sets up the Global Descriptor Table for protected/unreal mode.

Planned Features

  • Interrupt Descriptor Table (IDT) Setup: Setting up basic interrupt handling.
  • Basic Keyboard Input: Initial support for capturing keystrokes.
  • Filesystem Expansion: Support for additional filesystems.

Installation

Prerequisites

To build and run Stevia, you will need the following tools installed on your system:

  • Assembler: NASM for assembling bootloader components, you could use a compatible assembler but YMMV.
  • GNU make: For building the project.
  • mtools: To access the FAT partition
  • fdisk: To create disk images and setup partition tables
  • dosfstools: FAT32 creation
  • an x86 Emulator: Bochs is the primary dev target, but stevia should run on any x86 emulator/hardware with at least a Pentium 3 and 640KiB of memory.

Building and Running

  1. Clone the repository:

    git clone https://github.com/Nivirx/stevia.git
    cd stevia
  2. Build the bootloader and create a bootable disk image:

    make
  3. Run using Bochs:

    bochs -q -f bochsrc.txt

Project Goals

Stevia is intended to be a learning tool for those interested in low-level programming, focusing on understanding the basics of how a computer starts up and manages early system resources.

License

This project is licensed under the GPLv3 License. See the LICENSE or COPYING file for more details.

About

hobby bootloader written in assembly. This repo is a mirror of my Gitea repo and is sync'ed every 24 hours.

Topics

Resources

License

Stars

Watchers

Forks