Compilar o kernel linux via linha de comando

Para compilar e instalar o kernel do Linux dentro de um arquivo de imagem, é necessário copiar algumas ferramentas para o diretório onde a imagem foi montada. São elas:

  • Kernel source code: o código-fonte do kernel do Linux precisa ser copiado para o diretório “/usr/src”. É possível baixá-lo diretamente do site oficial do kernel, ou copiá-lo de um sistema Linux já instalado;
  • Compilador: o compilador GCC (GNU Compiler Collection) é necessário para compilar o kernel. Ele pode ser copiado para o diretório “/tools”, juntamente com as demais ferramentas que serão usadas para compilar o kernel;
  • Utilitários de sistema: algumas ferramentas de sistema são necessárias para compilar o kernel, como o utilitário “make” e o utilitário “bc”. Eles podem ser copiados para o diretório “/tools” juntamente com o compilador;
  • Módulos: caso você deseje compilar módulos para o kernel, é necessário copiar os headers do kernel para o diretório “/usr/include”. Eles podem ser encontrados no diretório “/usr/src/linux-headers-<versão do=”” kernel=””>/include”.</versão>

Após copiar essas ferramentas para o arquivo de imagem, você pode acessá-lo com o comando “chroot” e iniciar o processo de compilação e instalação do kernel do Linux.

Instalação do GCC e outras ferramentas para compilar o kernel no Linux

Para compilar o kernel do Linux, é necessário instalar algumas ferramentas. A seguir, listamos as ferramentas necessárias para compilar o kernel e a ordem em que elas devem ser instaladas:

  1. Binutils: as ferramentas binutils incluem o assembler, o linker e outros utilitários que são necessários para criar programas e bibliotecas. Eles podem ser instalados com os comandos abaixo:
    			./configure --prefix=/tools --with-sysroot=$LFS --with-lib-path=/tools/lib
    			make
    			make install
    
  2. GCC: o GCC é o compilador C/C++ padrão para sistemas baseados em Linux. Ele pode ser instalado com os comandos abaixo:
    			./configure --prefix=/tools --with-local-prefix=/tools --with-native-system-header-dir=/tools/include --enable-languages=c,c++
    			make
    			make install
    
  3. Linux API Headers: os headers da API do kernel Linux são necessários para compilar alguns programas e bibliotecas. Eles podem ser instalados com os comandos abaixo:
    			make mrproper
    			make headers
    			find usr/include -name '.*' -delete
    			rm usr/include/Makefile
    			cp -rv usr/include/* /tools/include
    
  4. Glibc: a GNU C Library é uma biblioteca de propósito geral que é necessária para executar a maioria dos programas em um sistema Linux. Ela pode ser instalada com os comandos abaixo:
    			./configure --prefix=/tools --host=$LFS_TGT --build=$(../scripts/config.guess) --enable-kernel=3.2 --with-headers=/tools/include --without-gd --without-cvs --disable-profile --without-glibc-ld --enable-multi-arch --enable-stack-protector=strong
    			make
    			make install
    
  5. Libstdc++: a biblioteca padrão do C++ é necessária para compilar programas em C++ no Linux. Ela pode ser instalada com os comandos abaixo:
    			mkdir build
    			cd build
    			../libstdc++-v3/configure --prefix=/tools --host=$LFS_TGT --build=$(../config.guess) --disable-multilib --disable-nls --disable-libstdcxx-threads --disable-libstdcxx-pch --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/11.2.0
    			make
    			make install
    

Com essas ferramentas instaladas, você já pode compilar o kernel do Linux dentro de uma imagem do disco. Basta montar a imagem em um diretório acessado com o comando chroot e seguir as instruções de compilação do kernel.