Projekt TCCBOOT jest ładowarka stanie skompilować i uruchomienie jądra Linuksa bezpośrednio z jego kodu źródłowego bagażnika.
TCCBOOT jest tylko 138 KB duże (kod nieskompresowane) i można go skompilować i uruchomić typowy jądra Linuksa w mniej niż 15 sekund na Pentium 4 2,4 GHz.
TCCBOOT opiera się na TinyCC kompilatora i linkera, asemblerze. TinyCC jest eksperyment produkować bardzo mały i prosty kompilator C zgodny z kompilatora GNU C i narzędzi binarnych.
TCCBOOT buty samo jak jądra Linuksa, więc każdy boot loader, który można uruchomić "bzImage obrazu jądra Linuxa można uruchomić TCCBOOT. Ja tylko testowałem to z isolinux, LILO lub GRUB-a, ale powinno działać też.
TCCBOOT czyta źródła C lub montażu z plików przechowywanych ROMFS zgzipowanego w Początkowa RAM Disk (initrd). Najpierw czyta plik 'boot / tccargs', który zawiera wiersz polecenia TinyCC (samej składni co wykonywalnego TCC). TinyCC wywołanie powinien wypisać jeden binarny obraz "kernel". Ten obraz jest załadowany pod adresem 0x00100000. TCCBOOT to robi skok do adresu w 32 0x00100000 bitowym trybie płaskim. Jest to zgodne z ABI w "vmlinux" obrazu jądra.
Kompilacja:
TCCBOOT był testowany tylko z Linuksem 04.02.26. W celu zbudowania TCCBOOT, należy najpierw skompilować jądro 04.02.26 bo dla prostoty TCCBOOT korzysta z niektórych plików binarnych i nagłówki z jądra Linux. TCCBOOT potrzebuje również kod źródłowy TinyCC (testowane z wersji 0.9.21) TinyCC. Możesz zmodyfikować Makefile dać potrzebne trasy.
Przykład:
Partycja "Hello World" ROMFS jest wliczone (initrd.img). Można odbudować ją od np / katalogu. Można przetestować go z emulatora PC QEMU z "qemu-tccboot" skryptu.
Kernel kompilacji:
Dla Twojej informacji, łatka "linux-2.04.26-tcc.patch" daje niezbędnych zmian do budowy jądra z TCCBOOT (Uwaga: to nie jest suffisant zbudować jądro z własną Makefile - Nigdy nie próbowałem). Odpowiednia konfiguracja jądra w pliku linux-4.2.26-config. Naszywki są konieczne z następujących powodów:
- Wytyczne montażowe nieobsługiwane: .rept, .endr, .subsection
- "__ASSEMBLY__ #define" W źródłach montażu potrzebne
- Zmienne statyczne nie widać z kodem montażu inline
- Problemy z pisania / lwartości z "? : '
- nie długo, długie pola bitowe
- "Wyrównany" nie atrybut dla całych strukturach obsługiwane tylko dla pól
- Obscur preprocesor błąd
Niektóre z tych problemów może być łatwo ustalony, ale jestem zbyt leniwy teraz. Jest pewien, że nadal istnieje wiele błędów w jądrze generowanego przez TinyCC / TCCBOOT, ale przynajmniej można go uruchomić i uruchomić powłokę.
Szczegóły programowe:
Wersja: 0.1
Filmu: 3 Jun 15
Licencja: Shareware
Cena: 0.00 $
Popularność: 58
Komentarze nie znaleziono