Estou tentando compilar um kernel para uma máquina Intel Atom de núcleo único de 32 bits. Escusado será dizer que a compilação está demorando quantidades excessivas de tempo. Já dura 2 horas e ainda está na metade dos módulos de driver.
Compilar um kernel na minha área de trabalho principal leva apenas 15 minutos, mas é uma máquina de 64 bits. Posso fazer a compilação cruzada para gerar um pacote de kernel de 32 bits a partir da máquina melhor?
Respostas:
Embora o kernel possa ser compilado de forma cruzada, a maneira mais fácil é criar um chroot de 32 bits (i386) e construí-lo lá.
Instalar
ubuntu-dev-tools
:Crie um chroot i386:
(Você provavelmente precisará executá-lo duas vezes. Na primeira vez, ele instala
schroot
etc. e configuramk-sbuild
)Em seguida, digite o chroot:
E construa o kernel, como faria normalmente.
fonte
Depois, no gcc, você pode configurar o
-m32
sinalizador para permitir que ele compile fontes linux para executáveis de 32 bits. Eu não tenho um amplo conhecimento sobre Makefiles, mas você pode ajustá-los.edit: Eu queria adicionar uma pergunta do stackoverflow aqui, na qual é solicitado que você defina cflags:
E no repositório linux da conta do github do Torvalds , encontrei a seção a seguir no makefile principal que você pode achar útil, pois indica que você pode definir uma arquitetura de destino definindo uma variável de ambiente. Leia os comentários, atualmente, estas linhas são deste arquivo , entre as linhas 174-196 :
fonte