TCCBOOT project is een bootloader in staat om direct uit de broncode te compileren en start een Linux kernel.
TCCBOOT is slechts 138 KB groot (niet-gecomprimeerde code) en het kan samenstellen en uitvoeren van een typische Linux-kernel in minder dan 15 seconden op een 2,4 GHz Pentium 4.
TCCBOOT is gebaseerd op de TinyCC compiler, assembler en linker. TinyCC is een experiment om een zeer kleine en eenvoudige C compiler verenigbaar met de GNU C compiler en binaire hulpmiddelen produceren.
TCCBOOT laarzen op dezelfde manier als een Linux kernel, dus elke boot loader die een afbeelding 'bzImage' Linux kernel kan TCCBOOT draaien kan draaien. Ik heb alleen getest met ISOLINUX, maar LILO of GRUB moeten ook werken.
TCCBOOT leest C of montage bronnen uit een gzipped romfs bestandssysteem opgeslagen in een Initial Ram Disk (initrd). Het eerste leest het bestand 'boot / tccargs' waarin de TinyCC command line (zelfde syntax als de TCC uitvoerbare) bevat. De TinyCC aanroeping moet geven een binair beeld 'kernel'. Dit beeld is op het adres 0x00100000 geladen. TCCBOOT doet vervolgens een sprong naar het adres 0x00100000 in 32 bit vlakke stand. Dit is compatibel met de ABI van het beeld 'vmlinux' kernel.
Compilatie:
TCCBOOT werd alleen getest met Linux 2.4.26. Om te bouwen TCCBOOT, moet u eerst een 2.4.26 kernel te compileren, omdat eenvoud TCCBOOT maakt gebruik van een aantal binaire bestanden en headers van de Linux kernel. TCCBOOT moet ook de broncode van TinyCC (getest met TinyCC versie 0.9.21). U kunt de Makefile wijzigen om de benodigde paden te geven.
Voorbeeld:
Een "Hello World" romfs partitie is opgenomen (initrd.img). U kunt het herbouwen van het voorbeeld / directory. Je kunt het testen met de QEMU PC emulator met de 'qemu-tccboot' script.
Kernel compilatie:
Voor uw informatie, de patch 'linux-2.4.26-tcc.patch' geeft de nodige wijzigingen om een Linux kernel met TCCBOOT bouwen (LET OP: het is niet suffisant de kernel te bouwen met zijn eigen Makefiles - Ik heb nooit geprobeerd). De bijbehorende kernel configuratie is in het bestand linux-2.4.26-config. Patches die nodig zijn om de volgende redenen:
- Ondersteunde montage richtlijnen: .rept, .endr, .subsection
- '#define __ASSEMBLY__' Nodig in de montage bronnen
- Vaste variabelen kunnen niet worden afgeleid uit de inline montagecode
- Typen / lvalue problemen '? : '
- Geen lange lange bitvelden
- 'Gericht' attribuut niet ondersteund voor de hele structuren, alleen voor velden
- Obscur preprocessor bug
Sommige van deze problemen kan eenvoudig worden vastgesteld, maar ik ben te lui nu. Het is zeker dat er nog veel bugs in de kernel wordt gegenereerd door TinyCC / TCCBOOT, maar ten minste het kan booten en start een shell.
Software informatie:
Versie: 0.1
Upload datum: 3 Jun 15
Licentie: Shareware
Prijs: 0.00 $
Populariteit: 58
Reacties niet gevonden