Skip to content
AresRebattoPublic

About

A tiny and educational x86 bootloader, built from scratch

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

17 Commits

Folders and files

Repository files navigation

RabBoot

Un bootloader x86 didattico, sviluppato da zero.

Architettura x86 Assembly NASM Firmware BIOS Emulatore QEMU


Introduzione

RabBoot è un progetto didattico dedicato allo studio del processo di avvio di un computer, dal passaggio di controllo da parte del BIOS all'esecuzione del codice del nostro bootloader.

Il progetto combina lo sviluppo pratico in Assembly x86 con una raccolta di appunti tecnici che documentano i concetti affrontati durante il percorso.

L'obiettivo non è trattare il processo di avvio come una scatola nera, ma comprenderne i meccanismi, capire perché funzionano in un determinato modo e verificarli sperimentalmente.

Obiettivi didattici

  • Assembly x86 — registri, istruzioni, indirizzamento e real mode.
  • Processo di avvio — BIOS, boot sector, organizzazione della memoria e MBR.
  • I/O a basso livello — interrupt BIOS e operazioni fondamentali di input/output.
  • Debugging — analisi dell'esecuzione e dello stato della CPU con GDB e QEMU.
  • Sviluppo del bootloader — realizzazione progressiva del codice necessario a caricare ed eseguire gli stadi successivi.

Indice

📚 Teoria e sperimentazione

Lezione Argomento Descrizione
L1 Primo boot sector Scrittura e assemblaggio di un boot sector minimale capace di stampare un messaggio.
L2 Inizializzazione e debugging Preparazione dello stato iniziale della CPU e analisi dell'esecuzione con GDB.

⚙️ Sviluppo del bootloader

Lezione Argomento Descrizione
L3 Implementazione del bootloader Prosecuzione dello sviluppo, con codice sorgente e spiegazioni dei meccanismi implementati. In questa lezione si affronta solo lo stadio 1.
L4 Testing del primo stadio Lezione breve relativa all'implementazione di un brevissimo stadio 2 per verificarne il caricamento.
L5 Prima parte dell'implementazione del secondo stadio Inizio del secondo stadio con la definizione delle prime procedure ed uso di fali sorgente differenti per rendere il bootloader più modulare.

Le prime lezioni introducono concetti ed esperimenti isolati. A partire da L3, l'attenzione si sposta sulla realizzazione del bootloader vero e proprio.

Struttura del progetto

RabBoot/
├── knowledge_base/    # Lezioni e appunti tecnici
├── L1.2/              # Primi esperimenti in Assembly
├── bootloader_st1.asm # Primo stadio del bootloader
├── bootloader_st2.asm # Secondo stadio del bootloader
├── modules/           # Moduli usati nel secondo stadio
└── README.md

Requisiti

Per sperimentare con il codice sono necessari:

  • NASM — per assemblare il codice sorgente.
  • QEMU — per emulare la macchina e verificare il funzionamento del bootloader.
  • GDB — per analizzare l'esecuzione e ispezionare lo stato della CPU.

È utile avere una conoscenza di base dell'Assembly e dell'architettura x86, ma i concetti necessari vengono introdotti progressivamente nelle singole lezioni.

Per i comandi di compilazione, esecuzione e debugging, consulta le lezioni corrispondenti.

Stato del progetto

RabBoot è un progetto in evoluzione: il codice e la documentazione vengono sviluppati parallelamente, man mano che vengono approfonditi nuovi aspetti del processo di avvio.

La finalità principale è didattica: comprendere i meccanismi alla base dell'avvio di un sistema attraverso la loro implementazione pratica e la documentazione delle scelte effettuate.

About

A tiny and educational x86 bootloader, built from scratch

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages