Compilando ou atualizando um kernel Linux

Antes de Compilar

Olá,

Antes de personalizar um kernel, nós precisamos obter algumas informações, além dos pacotes necessários e o kernel. Com este método, podemos instalar qualquer versão, e ainda personalizar com o nome desejado.

Neste exemplo, foi utilizando o Debian 6 x86.

1. Verificação do kernel instalado, pacotes necessários, download do kernel desejado e descompactação.

1.1. Verificando a versão do kernel instalada.

Primeiro, devemos verificar qual a versão do kernel estamos rodando. Para isso, basta rodar o comando:

# uname -r

Meu resultado foi a versão:

2.6.26-2

Obs.: Caso você pergunte, o que cada um deste números significa, aqui vai uma revisão:

  • 1º campo (2)   -> versão maior
  • 2º campo (6)   -> versão menor
  • 3º campo (26) -> patch level
  • 4º campo (2)   -> extra version

1.2. Baixando os pacotes necessários

Precisamos de 4 pacotes, são eles: make, gcc, build-essential e libncurses5-dev.

# apt-get install make gcc build-essential libncurses5-dev

1.3. Baixar a versão do kernel desejada

Vá em kernel.org, e baixe a versão desejada.

Nesse exemplo, instalarei a versão 2.6.28, porém, o mesmo método pode ser utilizado por outras versões. Já instalei, em testes, a versão 3.5 sem problemas.

* Vale a pena lembrar que, a versão estável mais recente no dia da criação do artigo, é a 3.4.7.

Após feito o download, você terá um arquivo assim: linux-2.6.28-5.tar.bz2

Ou, o arquivo correspondente à versão escolhida.

* Para facilitar,salvei o arquivo em /root.

1.4. Após baixado, precisamos descompactar e colocar estes arquivos no lugar ideal.

Primeiro descompacte o arquivo:

# tar -xf linux-2.6.28.tar.bz2 -C /usr/src

Com este comando, estamos extraindo o arquivo e já apontando o destino dele.

Detalhando as seguintes opções utilizadas:

  • -x : Indica que você deseja extrair o arquivo;
  • -f : Aponta para o aquivo desejado.

    A opção ‘-f’ precisa ser a última quando utilizamos o ‘.tar’. Podemos acrescentar outras opções, como o ‘-v’ (verbose), porém o ‘-f’ será a ultima opção independente das que você estiver usando;

  • -C (maiúsculo) : Esta opção é utilizada para apontar o caminho de destino desejado.

Feito isso, você terá uma pasta chamada ‘linux-2.6.28’ em /usr/src: /usr/src/linux-2.6.28

Na próxima etapa, iremos personalizar nosso kernel e criar sua imagem.

Personalizando/compilando o kernel – Módulos

Personalizando e compilando o kernel

Chegamos à segunda etapa.

Nesse momento, você irá aprender a personalizar e compilar um kernel.

2. Assuntos desta segunda etapa:

  • Resolvendo dependências;
  • Criar o arquivo .config;
  • Editando o nome da distribuição;
  • Criando o bzImage.

2.1. Para iniciar, iremos rodar um comando rápido e verificar nossas dependências.

Primeiro, entre na pasta onde foi descompactado o kernel (no meu caso: /usr/src/linux-2.6.28):

# cd /usr/src/linux-2.6.28

Depois:

# make dep

Obs.: Caso você receba uma mensagem que não é necessário executar esta tarefa, está tudo OK.

2.2. Agora, iremos começar a personalizar de verdade nosso kernel, com o comando:

# make menuconfig

Com este comando, iremos entrar no modo de edição do kernel.

Aqui você irá ver todas as opções do kernel. Use as opções para navegar nos menus, adicione ou remova conforme desejado, porém, tome cuidado, pois toda modificação sem o conhecimento devido, pode causas erros.

É extremamente recomendável testar este método em uma máquina virtual, antes de por em prática no seu GNU/Linux.

Navegação:

  • [ENTER] – Entra num submenu
  • [N] ou [ESPAÇO] – Desmarca a opção onde está o cursor
  • [SETAS] – Navegação

Após terminadas as modificações desejadas, vá em: SAVE AN ALTERNATE CONFIGURATION FILE

E salve como: .config

2.3. Coloque agora, o seu nome no kernel

Você pode editar o arquivo Makefile para adicionar o seu nome a esta compilação do kernel.

# vim Makefile

Na linha: “EXTRAVERSION =”

Você pode acrescentar “.seunome” e a versão do kernel. Irá aparecer da seguinte forma (no meu exemplo): 2.6.28.luiz

2.4. Agora, precisamos criar a imagem do kernel.

Este processo pode levar algum tempo. Tudo depende do seu hardware:

# make bzImage

Obs.: Fique atento à sintaxe. No GNU/Linux, “bzImage” não é o mesmo que “bzimage”.

Nessa fase, você aprendeu a personalizar um kernel e a criar a sua imagem.

Adiante, vamos criar os módulos.

Criando os módulos

Terceira etapa, vamos criar os módulos.

3.1. Esta etapa é provavelmente a mais demorada. Criar os módulos podem levar horas dependendo do seu equipamento.

Basta digitar o seguinte comando e aguardar:

# make modules

3.2. Agora, vamos à próxima etapa. Mais um comando simples, porém que pode levar um tempinho:

# make modules_install

3.3. Agora iremos copiar a imagem do kernel que criamos para o diretório /boot:

# cp -p arch/x86/boot/bzImage /boot/vmlinuz-2.6.28.luiz

3.4. Na próxima etapa, precisamos criar o sistema ramfs e atualizar o GRUB.

Precisamos criar o sistema ramfs para carregamento de módulos no boot, e fazemos isso com o seguintes comandos:

– Para entrar na pasta /lib/modules:

# cd /lib/modules

-Para criar o sistema:

# mkinitramfs -o /boot/initrd.img-2.6.28.luiz 2.6.28.luiz

E enfim, rodar o update-grub:

# udpate-grub

Neste artigo, você aprendeu a personalizar um kernel.

Lembre-se que, toda modificação no kernel é perigosa.

Recomenda-se fazer backup antes de qualquer modificação, e testar este método em uma máquina virtual, caso você esteja inseguro.

Obrigado, e estou à disposição para dúvidas e sugestões.

Rolar para cima