Próbuję skompilować jądro dla 32-bitowej jedno-rdzeniowej maszyny Intel Atom. Nie trzeba dodawać, że kompilacja zajmuje nadmiernie dużo czasu. Trwa od 2 godzin i wciąż jest dopiero w połowie modułów sterownika.
Kompilacja jądra na głównym pulpicie zajmuje tylko 15 minut, ale jest to 64-bitowa maszyna. Czy mogę krzyżować kompilację, aby wygenerować 32-bitowy pakiet jądra z lepszej maszyny?
Odpowiedzi:
Podczas gdy jądro może być kompilowane krzyżowo, najprostszym sposobem jest utworzenie 32-bitowego (i386) chroota i tam go wbudować.
Zainstaluj
ubuntu-dev-tools
:Utwórz chroot i386:
(Prawdopodobnie będziesz musiał uruchomić to dwa razy. Za pierwszym razem instaluje się
schroot
itp.mk-sbuild
)Następnie wprowadź chroot:
I zbuduj jądro, jak zwykle.
źródło
Afaik, w gcc, możesz ustawić
-m32
flagę, aby kompilowała źródła linuksowe do 32-bitowych plików wykonywalnych. Nie mam szerokiej wiedzy na temat Makefiles, ale możesz je ulepszyć.edycja: Chciałem tutaj dodać pytanie z stackoverflow , w którym powiedziano, aby ustawić cflags:
A z repozytorium linuxa na koncie github Torvaldsa znalazłem następującą sekcję na głównym makefile, która może ci się przydać, ponieważ mówi, że możesz ustawić architekturę docelową poprzez ustawienie zmiennej środowiskowej. Przeczytaj komentarze, obecnie te wiersze pochodzą z tego pliku , między wierszami 174–196 :
źródło