Configuração, compilação e instalação do Kernel.

Todos comandos foram realizados utilizando a distribuição Debian7

1) Para relalizar a compilação de um kernel é necessário instalar algumas ferramentas:

 
# apt-get install make
# apt-get install gcc
# apt-get install libncurses5-dev
# apt-get install bc
 
make: Utilitário para realizar a configuração, manutenção e instalação de um grupo de programas. Determina quais partes de um programa necessita ser recompilado além de emitir comandos para recompilar os mesmos.
 
gcc: Compilador de códigos C e C++.
 
libncurses5-dev: Possui rotinas para atualizar caracteres, contém arquivos de cabeçalho, bibliotecas estáticas e links simbólicos necessário para a compilação.
 
bc: Linguagem que suporta números de precisão arbitrária com execução inter-ativa de declarações.
 

2) Entrar no diretório "/user/src/", local onde fica o código fonte do kernel.

# cd /usr/src/
 

3) Fazer download do kernel. Neste caso vamos utilizar o kernel 3.10.8

# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.8.tar.xz
 

4) Descompactar o arquivo "linux-3.10.8.tar.xz"

# tar xvf linux-3.10.8.tar.xz 
 

5) Entrar no diretório "linux-3.10.8". Diretório criado na descompactação é neste diretório que encontra-se o código fonte do kernel.

# cd linux-3.10.8
 

6) Realizar a confiuração do kernel. Nesta fase podemos realizar as customizações necessárias ou simplemente salvar o arquivo sem alterações.

# make menuconfig (via menu)
ou
#make config (via texto)
ou
#make xconfig (Qt-based GUI)
ou
#make gconfig (GTK-based GUI)
 

7) Verificar o arquivo de configuração. Após a configuração o arquivo ".config" e geredo . Este arquivo contem todas as informações sobre a configuração realizada com o "menuconfig" no passo acima.

# ls -la .config
 

8) Realizar a compilação do kernel. A opção -j4 acelera a compilação, esta opçao utiliza 04 (quatro) processos simultâneos para compilaçao. A informação "bzImage" gera uma imagem do tido bzImage do kernel

# make -j4 bzImage
ou
# make bzImage
 
Se a compilação do kernel tiver sucesso e nenhuma mensagen de erro for mostrada, aparecerá a seguinte mensagem:
Kernel: arch/x86/boot/bzImage is ready (#1)
 

9) Realizar a compilação dos módulos.

# make -j4 modules
ou
# make modules
 

10) Realizar a instalação dos módulos. 

# make -j4 modules_install 
ou
# make modules_install 
 
Este comando irá criar um subdiretório em "/lib/modules" com o nome da versão do kernel no caso "/lib/modules/3.10.8" e copiar os módulos (arquivos .ko) do kernel dentro deste subdiretório. Ao final ele invoca o comando "depmod" que cria uma lista de dependências dos módulos no arquvio "modules.dep"
 
As dependências são armazenadas no arquvio modules.dep
#ls /lib/modules/3.10.8/modules.dep
#cat /lib/modules/3.10.8/modules.dep
 
Caso necessário, você pode gerar o arquvio "modules.dep" para o kernel em execução pelo comando "depmod".
# depmod
 

11) Realziar a instalação do kernel.

# make -j4 install 
ou
# make install 
 
No procedimento acima 03 (três) coisas acontecem:
11.1) Copia o arquivo do kernel compilado para "/boot" com o nome vmlinuz-3.10.8
11.2) Geraçao da imagem "initrd" e copia a mesma para "/boot" com o nome initrd.img-3.10.8
11.3) E invocado o comando "update-grub" que reescreve um novo arquivo "/boot/grub/grub.cfg" colocando o kernel compilado no processo de boot.
 
Os procedimentos de copia do arquvio do kernel para "/ boot", instalação dos módulos do kernel, preparação de um disco RAM inicial (initramdisk) e modificação da configuração do GRUB para apontar para o novo kernel podem ser feitos manualmente.
 

12)Reinicie a máquina e selecione o kernel compilado.

#reboot
 
13) Comandos que podem ser utilizados no processo de configuração, compilação e instalação de um kernel.
 
Apaga as configurações e os arquivos temporários gerados durante uma compilação anterior.
#make mrproper
 
Apaga apenas os arquivos compilados anteriormente mas preserva a configuração.
#make clean
 
Lista de comandos do make.
#make help
 
Recupera todas as configurações do arquivo ".config" pré-existente e pergunta apenas sobre novas opções.
# make oldconfig 
ou
# make silentoldconfig 
 
Cria um arquivo de configuração ".config" usando os valores padrão para a sua plataforma.
#make defconfig 
 
Constroi um kernel imediatamente com o maior número de recursos e módulos.
#make allmodconfig 
 
Utilização do make com grep para procurar um erro
# make | grep -iw “error“
 
 
Autor: Rodrigo Salvo

 

Comentários via Twitter