TCCBOOT Projekt ist ein Bootloader in der Lage, direkt aus ihren Quellcode zu kompilieren und starten Sie einen Linux-Kernel.
TCCBOOT ist nur 138 KB groß (unkomprimiert Code), und es kann kompilieren und ausführen eine typische Linux-Kernel in weniger als 15 Sekunden auf einem 2,4 GHz Pentium 4.
TCCBOOT ist auf der TinyCC Compiler, Assembler und Linker beruht. TinyCC ist ein Experiment, um eine sehr kleine und einfache C-Compiler mit dem GNU C Compiler und Binär-Utilities kompatibel zu produzieren.
TCCBOOT Stiefel der gleichen Weise wie ein Linux-Kernel, so dass jeder Bootloader, der eine "bzImage" Linux Kernel-Image kann TCCBOOT ausführen können. Getestet habe ich es nur mit ISOLINUX, aber LILO oder GRUB sollten auch funktionieren.
TCCBOOT liest C oder Assembler-Quellen von einer gzipped romfs Dateisystem in einer Initial RAM-Disk (initrd) gespeichert. Es liest zuerst die Datei "boot / tccargs", die die TinyCC Kommandozeile (gleiche Syntax wie die ausführbare tcc) enthält. Die TinyCC Aufruf ausgeben soll ein binäres Bild 'kernel'. Dieses Bild wird an der Adresse 0x00100000 geladen. TCCBOOT macht dann einen Sprung auf die Adresse 0x00100000 in 32-Bit-Flat-Modus. Dies ist mit der ABI der "vmlinux" Kernel-Image-kompatibel.
Zusammenstellung:
TCCBOOT nur mit Linux 2.4.26 getestet. Um TCCBOOT bauen, müssen Sie zunächst eine 2.4.26 Kernel zu kompilieren, weil der Einfachheit halber TCCBOOT verwendet einige Binär-Dateien und Header von der Linux-Kernel. TCCBOOT muss auch den Quellcode der TinyCC (mit TinyCC Version 0.9.21 getestet). Sie können das Makefile, um die benötigten Pfade zu geben.
Beispiel:
Ein "Hallo Welt" romfs Partition ist im Preis inbegriffen (initrd.img). Sie können es aus dem Beispiel / Verzeichnis neu zu erstellen. Sie können es mit dem PC-Emulator QEMU mit dem "qemu-tccboot 'Skript testen.
Kernel-Kompilierung:
Zu Ihrer Information, die patch 'linux-2.4.26-tcc.patch' gibt die notwendigen Änderungen, um einen Linux-Kernel mit TCCBOOT bauen (Hinweis: Es ist nicht süffisant, den Kernel mit eigenen Makefiles zu bauen - Ich habe nie versucht). Die entsprechende Kernel-Konfiguration ist in der Datei linux-2.4.26-config. Patches sind aus folgenden Gründen erforderlich:
- Nicht unterstützten Montagerichtlinien: .rept, .endr, .subsection
- '#define __ASSEMBLY__' In Montagequellen erforderlich
- Statische Variablen kann nicht aus dem Inline-Assembler-Code zu sehen
- Typisierung / L-Wert Probleme mit '? : '
- Keine lange lange Bit-Felder
- '' Ausgerichtet Attribut nicht für die gesamten Strukturen unterstützt werden, nur für Felder
- Obscur Präprozessor bug
Einige dieser Probleme können leicht behoben werden, aber ich bin jetzt zu faul. Es ist sicher, dass es immer noch viele Fehler in der von TinyCC / TCCBOOT erzeugt Kernel, aber zumindest ist zu booten und starten Sie eine Shell.
Softwarebeschreibung:
Version: 0.1
Upload-Datum: 3 Jun 15
Lizenz: Shareware
Preis: 0.00 $
Popularität: 58
Kommentare nicht gefunden