_______ _ ____ _ _ _
|__ __(_) | _ \ | | | | |
| | _ _ __ _ _ ___ | |_) | ___ __| |_ _| | | ___ _ __
| | | | '_ \| | | / __| | _ < / _ \ / _` | | | | | |/ _ \ '__|
| | | | | | | |_| \__ \ | |_) | (_) | (_| | |_| | | | __/ |
|_| |_|_| |_|\__, |___/ |____/ \___/ \__,_|\__,_|_|_|\___|_|
__/ |
|___/
Ein minimaler 2-Stufen-Bootloader fuer x86-Systeme (Real Mode) mit LBA/CHS-Autoerkennung und eingebauter Mini-Kommandozeile.
- 2-Stufen-Architektur: Stage 1 (512 Byte) laedt Stage 2 von der Diskette
- LBA/CHS Auto-Erkennung: Bevorzugt LBA (INT 13h AH=42h), fallback auf CHS
- Mini-Shell: Interaktive Kommandozeile in Stage 2
- 1.44 MB Disketten-Image: Fertig zum Booten in QEMU, VMware, VirtualBox oder auf echter Hardware
- Boot-Laufwerk-Ausgabe: Zeigt an, von welchem Laufwerk gebootet wurde (0x00 = Diskette, 0x80 = HDD)
- NASM (Netwide Assembler) im PATH
build.batOder manuell:
nasm -f bin -o tinyboot.img bootloader.asmErzeugt tinyboot.img (exakt 1.474.560 Byte / 1.44 MB).
run.batOder manuell:
qemu-system-i386 -fda tinyboot.imgbochs -fda tinyboot.imgSchreibe das Image auf einen USB-Stick oder eine Diskette:
:: Windows (als Administrator)
dd if=tinyboot.img of=\\.\X: bs=512 (X = Laufwerksbuchstabe)
:: Linux
dd if=tinyboot.img of=/dev/sdX bs=512| Befehl | Beschreibung |
|---|---|
help |
Zeigt diese Hilfe an |
cls |
Loescht den Bildschirm |
info |
Zeigt RAM, Boot-Laufwerk und Modus an |
hex |
Gibt einen Test-Hex-Wert (0x1A3F) aus |
hello |
Gibt "Hallo Welt!" aus |
reboot |
Startet den Computer neu |
| Adresse | Groesse | Inhalt |
|---|---|---|
0x7C00-0x7DFF |
512 B | Stage 1 (Bootloader) |
0x7E00-0x87FF |
2560 B | Stage 2 (Shell + Code) |
0x8800-0xFFFF |
~30 KB | Stack (abwaerts) + frei |
TinyBootloader/
├── bootloader.asm # Vollstaendiger Bootloader (Stage 1 + 2)
├── build.bat # Build-Skript (NASM)
├── run.bat # Run-Skript (QEMU)
└── README.md # Diese Datei
Sektor 0: Stage 1 (Bootloader, 512 Byte)
Sektoren 1-5: Stage 2 (Shell, 2560 Byte)
Sektoren 6-2879: Frei (Null-Bytes, 1.44 MB komplett)
- Assembler: NASM (Intel-Syntax)
- CPU-Modus: 16-Bit Real Mode
- BIOS-Interrupts:
INT 10h– Video-Ausgabe (Zeichen, Bildschirm steuern)INT 13h– Diskette/Festplatte lesen (LBA + CHS)INT 16h– TastatureingabeINT 12h– Speichergroesse ermittelnINT 19h– System neustarten
MIT License – Frei verwendbar, modifizierbar und verteilbar.