Linux.LCC

  • Aumentar tamanho da fonte
  • Tamanho da fonte padrão
  • Diminuir tamanho da fonte

Compilando o kernel do linux (2.6.x)

E-mail Imprimir

Compilar o kernel do linux é mais simples do que parece. O segredo para uma compilação bem sucedida é conhecer bem o hardware da máquina em questão. Neste artigo, veremos algumas dicas sobre como compilar um kernel, utilizando algumas ferramentas presentes na maioria das distribuições linux para obtermos as informações necessárias.

Obtendo uma imagem do kernel.

Existem várias fontes para imagens do kernel. Uma bastante confiável é www.kernel.org. Então, vamos baixar um fonte do kernel para iniciarmos a compilação:
Antes do download propriamente dito, vamos mudar para o diretório adequado para executarmos a compilação. Como root,

# cd /usr/src/

Caso não exista este diretório, crie-o

# mkdir /usr/src/

Agora, vamos obter o fonte do kernel usando o wget:

# wget 'http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2'

Aqui vamos utilizar o linux-2.6.28.tar.bz2 como referência.
Feito isto, é hora de descompactar o fonte:

# bzip2 -dc linux-2.6.28.tar.bz2 | tar -xvf -

ou

# tar -xjvf linux-2.6.28.tar.bz2

Agora, configurar as opções desejadas para a compilação. Façamos

# cd linux-2.6.28
# make menuconfig

Devemos observar um menu semelhante ao da imagem seguinte:

General setup

Agora, vamos passo-a-passo varrer os principais ítens para a compilação do kernel. Não abordaremos todos, apenas os essenciais.

General Setup

Em General setup, duas opções são importantes, System V IPC e BSD Process Accounting.

General setup

Aconselho fortemente habilitar pelo menos estas duas opções.

Enable loadable module support

A próxima opção, Enable loadable module support possui outra opção interessante a se considerar, Module unload. Também aconselho habilitá-la.

Loadable module support

Processor type and features

Aqui vamos configurar as opções do processador.

Processor type features

Agora, para descobrir qual o processador utilizado, podemos fazer

# cat /proc/cpuinfo

No meu caso, este comando retorna:

processor : 0
vendor_id : GenuineIntel?
cpu family : 15
model : 1
model name : Intel(R) Pentium(R) 4 CPU 1.70GHz
stepping : 3
cpu MHz : 1700.154
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pebs bts
bogomips : 3402.03
clflush size : 64

Com esta saída, somos capazes de informar ao kernel a família do processador (no caso um pentium 4) e que este processador possui suporte à hyper threading (flag ht). Com isto em mãos, podemos marcar as seguintes opções:

Subarchitecture Type (PC-compatible)
Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon)
MTRR (Memory Type Range Register) support
Processor family

esta última deve ser habilitada sempre que se utiliza processadores que fazem uso do MTRR (Memory Type Range Register), tal como o pentium 4.
Agora, vamos às opções de barramento.

Bus options (PCI etc.)

Bus options

Para saber que tipo de barramento PCI temos, vamos usar o comando lspci

# lspci

Para a máquina onde estou agora, ele retorna

00:00.0 Host bridge: Silicon Integrated Systems SiS SiS645DX Host & Memory & AGP Controller (rev 01)

00:01.0 PCI bridge: Silicon Integrated Systems SiS Virtual PCI-to-PCI bridge (AGP)

00:02.0 ISA bridge: Silicon Integrated Systems SiS SiS962 MuTIOL Media IO (rev 25)

00:02.1 SMBus: Silicon Integrated Systems SiS SiS961/2 SMBus Controller

00:02.5 IDE interface: Silicon Integrated Systems SiS 5513 IDE

00:02.7 Multimedia audio controller: Silicon Integrated Systems SiS AC'97 Sound Controller (rev a0)

00:03.0 USB Controller: Silicon Integrated Systems SiS USB 1.0 Controller (rev 0f)

00:03.1 USB Controller: Silicon Integrated Systems SiS USB 1.0 Controller (rev 0f)

00:03.3 USB Controller: Silicon Integrated Systems SiS USB 2.0 Controller

00:04.0 Ethernet controller: Silicon Integrated Systems SiS SiS900 PCI Fast Ethernet (rev 91)

00:0e.0 VGA compatible controller: ATI Technologies Inc 3D Rage LT Pro (rev dc)

00:10.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

Com esta informação em mão, podemos por exemplo notar que esta máquina não possui pci-express. Então, não marcaremos esta opção. Mas ela possui um barramento ISA, que habilitamos.

Executable file formats / Emulations

Executable file formats

Recomendo habilitar todas estas opções garantindo assim que o kernel possa trabalhar com todos os tipos de executáveis disponíveis.

Networking --->Networking options --->

Networking options

Aqui são necessárias as opções

Packet socket
Unix domain sockets
TCP/IP networking

Para utilização do iptables, é necessário habilitar

Network packet filtering framework (Netfilter)

e as opções desejadas no menu que segue.

Device drivers

Device Drivers

Em Block devices, as opções mais utilizadas hoje seriam

Loopback device support
Network block device support

e

Normal floppy disk support

Block Devices

no caso que se utilize um floppy disk. Em ATA/ATAPI/MFM/RLL support, temos

ATA support

onde é importante notar

Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
Include IDE/ATA-2 DISK support
Include IDE/ATAPI CDROM support

no caso de discos IDE e cd/dvd rom IDE. Aqui também é onde se configura qual a placa-mãe utilizada. Esta informação foi obtida quando utilizamos o lspci. Neste caso, é umas SiS5513.

Device Drivers ---> Serial ATA (prod) and Parallel ATA (experimental) drivers

Usando discos SATA? Escolha ai o seu.

SATA

Device Drivers ---> Network device support

Network device support

Aqui deve ser escolhida a placa de rede utilizada. Esta informação foi passada pelo lspci.

Device Drivers ---> Input device support

Input device support

Uma opção interessante aqui é habilitar

Event interface

Muito útil principalmente em laptops. Em geral, neste ponto escolhemos, caso utilizemos um mouse ps2,

Provide legacy /dev/psaux device
e habilitamos a sub opção
Mice  --->
Mice

para escolhermos o tipo do mouse utilizado.

Para um funcionamento mínimo, ainda falta dizer para o kernel qual é a placa da vídeo utilizada (vide lspci).

Device Drivers ---> Graphics support

O meu lspci diz sobre o vídeo

00:0e.0 VGA compatible controller: ATI Technologies Inc 3D Rage LT Pro (rev dc)

ou seja, uma placa da ATI. No submenu "/dev/agpgart (AGP Support)" encontra-se a opção "ATI chipset support", que é a que eu preciso.

AGP support

Relembrando aonde estamos

Device Drivers  ---> Graphics support  --->
existe uma opção que recomendo:
Support for frame buffer devices

Frame buffer devices

Estamos quase terminando. Falta agora configurarmos o som e as USB's. Vamos primeiro ao som.

Device Drivers ---> Sound --->

Sound

As chances são muito grandes de o suporte as placas de som mais comuns hoje estarem dentro do submenu "Advanced Linux Sound Architecture" conhecido também como ALSA. Vamos dar uma olhada nele.

ALSA

Lembra da saída do lspci? A placa de som aqui é uma SiS AC'97. Olha ela aí

PCI devices

Agora, vamos ao suporte à USB.

Device Drivers ---> USB support --->

USB

Coisas importantes de se saber aqui: "OHCI HCD support" é o suporte para USB 1.0; "USB Mass Storage support" torna possível utilizar dispositivos de armazenamento , por exemplo um pendrive ou uma gaveta USB no sistema. Caso opte por utilizar estes elementos é necessário habilitar o suporte SCSI. Vamos ver como fazer isto.

Device Drivers ---> SCSI device support --->

SCSI

Agora, habilitamos as opções

SCSI device support
SCSI disk support

Recapitulando...

Até agora, baixamos, descompactamos os fontes do kernel, configuramos o processador, suporte aos barramentos PCI, configuramos a rede, os discos, a placa de rede, mouse, vídeo, som e USB's. Este documento não tem intensão de ser um documento detalhista. Neste ponto, grande parte dos dispositivos necessários para o funcionamento de um computador usando Linux foram abordados. Naturalmente, as especificidades de cada sistema devem ser tratadas mas até aqui, garantimos que temos um sistema pronto para ser inicializado. Outros suportes podem ser adicionados como módulos do kernel, caso necessário.

Salvando as configurações:

Vamos agora salvar as configurações realizadas usando o "exit" do menu de configuração:
Exit

Iniciando a compilação:

Então, vamos dar início ap processo de compilação da imagem do kernel. Em /usr/src/linux-2.6.25.3,
# make
# make modules_install
# make install
Pronto. Agora basta configurar o gerenciador de boot (grub ou lilo) para carregar o novo kernel.

 

 

 

Última atualização em Ter, 22 de Dezembro de 2009 19:44  

Comente