Este documento fornece instruções passo a passo para manipular o kernel Linux, incluindo como compilar e empacotar alterações feitas ao código-fonte do kernel e instalar a nova versão compilada.
2. MMaanniippuullaaççããoo ddee KKeerrnneell LLiinnuuxx
- Pré requisitos para manipulação de uma Kernel Linux
- Linux pré-instalado (No exemplo, um Debian-like)
- Arquivo fonte da Kernel (linux source)
- libncurses5-dev; make; gcc
- kernel-package; build-essential; initramfs-tools
- Manipulação da Kernel (make menuconfig)
- Compilação e empacotamento
- Instalação da Kernel
- Mapa da Kernel Linux
3. LLiinnuuxx SSoouurrccee
Podemos utilizar um “Linux Source” de qualquer origem, desde que o “source”
possua os módulos que sejam compatíveis com o ambiente em uso. Exemplo:
- Ambiente Debian-Like
- Podemos usar “Linux Source” da kernel.org
- Podemos usar “Linux Source” do ubuntu
- Podemos usar “Linux Source” do debian
- Entre outras fontes... (procure fontes confiáveis!!)
4. LLIIBBNNCCUURRSSEESS55--DDEEVV
Conjunto de bibliotecas de funções da família ncurses (new curses), que
gerenciam programas, extensões, lib's e manuais para programação, sob GNU/GPL.
Oferece um método independente para atualizar caracteres na tela.
5. MMAAKKEE
O objetivo do utilitário MAKE é determinar automaticamente quais partes de um
grande programa precisam ser recompiladas e executar os comandos para
recompilá-los. O MAKE pode ser utilizado com qualquer linguagem de
programação, cujo compilador possa ser executado com um comando. O MAKE
pode ser usado para descrever qualquer tarefa em que alguns arquivos possam
ser atualizados automaticamente com os outros, sempre que os outros mudarem.
Para usar o MAKE, é necessário escrever um arquivo chamado "makefile", que
descreve as relações entre os arquivos em seu programa, e o estado dos
comandos para atualizar cada arquivo.
6. GGCCCC
O GCC é o compilador padrão para C, C++, Objective-C, Objective-C++, Ada,
Fortran 95, e Java em todas as arquiteturas. O pacote do GCC também provê
libgcc1, libgcc2 (m68k) e libgcc4 (hppa) que contêm as GCC intrinsics e libstdc+
+6.
7. KKEERRNNEELL--PPAACCKKAAGGEE
Um pacote Debian de utilitários para construir uma Kernel Linux. Possui arquivos
“.config” pré-configurados para diversas arquiteturas. O comando para compilação
e empacotamento “make-kpkg” está dentro deste pacote.
11. Compilar KKeerrnneell ee ggeerraarr PPaaccoottee
Após todo o processo de edição, podemos executar o comando abaixo, para
compilar e gerar pacotes de instalação do “fonte” editado (linux-source), da
“imagem” (linux-image) da Kernel e dos “cabeçalhos” (linux-headers) de interação
com a Kernel.
# make-kpkg kernel_image kernel_source kernel_headers
12. AArrqquuiivvoo iinniittrrdd
O arquivo initrd é um bloco de dispositivos somente de leitura. Também é uma
memória RAM virtual que é inicializada pelo gerenciador de boot (grub ou lilo)
antes que a kernel seja inicializada. A kernel então pode usar o conteúdo do initrd
para iniciar o sistema em duas etapas.
Na primeira etapa da inicialização, a kernel inicia-se e monta um sistema de
arquivos raiz inicial, a partir do conteúdo do initrd. Na segunda etapa, os drivers
adicionais e outros módulos são carregados. Depois de carregar os módulos
adicionais, um novo sistema de arquivos root é disponibilizado.
13. IInnssttaallaaççããoo ddaa KKeerrnneell
Com os arquivos gerados, podemos instalar a imagem da kernel e os cabeçalhos,
com o seguinte comando:
# dpkg -i kernel*.deb
Criar o arquivo initrd (caso não seja criado na compilação)
# mkinitramfs -o /boot/initrd.img-3.XX.XX /lib/modules/3.XX.XX
Atualizar o gerenciador de boot (no caso, o grub)
# update-grub