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“