You are on page 1of 49

8A.

PARTE:

O KERNEL E A
COMPILAO

Copyright (c) 2002-2005 Ednei Pacheco de Melo.

Permission is granted to copy, distribute and/or modify this document


under the terms of the GNU Free Documentation License, version 1.1 or
any later version published by the Free Software Foundation; a copy of the
license is included in the section entitled GNU Free Documentation
License.

NDICE
ABERTURA...............................................................6
I. VISO GERAL.........................................................7
Introduo.......................................................................................7
Particularidades..............................................................................7
Tipos e adaptaes..........................................................................7
Monoltico..............................................................................................7
Modular..................................................................................................7
Semi-monoltico?....................................................................................8
As verses........................................................................................8
O armazenamento...........................................................................9
Os binrios.............................................................................................9
O cdigo-fonte........................................................................................9
Desenvolvimento...........................................................................10
Concluso......................................................................................11

II. BONS

MOTIVOS PARA A COMPILAO........................12

Introduo.....................................................................................12
Bons motivos.................................................................................12
Suporte a perifricos e programas......................................................12
Otimizao e personalizao................................................................12
Suporte especfico para cada arquitetura...........................................13
Compatibilidade...................................................................................13
Experincia e aprendizado...................................................................13
Concluso......................................................................................13

III. PREPARATIVOS

INICIAIS.......................................14

Introduo.....................................................................................14
Procedimentos necessrios..........................................................14
Cpia de segurana dos dados do sistema..........................................14
Disquetes de inicializao....................................................................14
Cpia de segurana da compilao anterior.......................................15
Manuteno da verso anterior do kernel..........................................15
Requerimentos bsicos.................................................................15
Obtendo o cdigo-fonte do kernel.......................................................16
Preparando a compilao.............................................................16
Instalao do novo cdigo-fonte..........................................................16
Mantendo ou removendo as definies de parmetro anteriores......17
Concluso......................................................................................17

IV. CONFIGURAO

DE SUPORTE E PARMETROS..............18

Introduo.....................................................................................18

Utilitrios de configurao...........................................................18
make xconfig........................................................................................18
make menuconfig.................................................................................19
make config..........................................................................................20
Sobre a habilitao de parmetros e suportes............................20
Mdulos: quando utilizar?...................................................................21
Ajustando os parmetros de configurao..................................21
Code maturity level option...................................................................21
Loadable module support....................................................................22
Processor type and features................................................................22
General setup.......................................................................................22
Memory Technology Devices (MTD)....................................................23
Parallel port support............................................................................23
Plug and Play Configuration................................................................23
Block devices........................................................................................23
Multi-device support (RAID and LVM)................................................24
Networking options..............................................................................24
Telephony Support...............................................................................24
ATA/IDE/MFM/RLL support................................................................24
SCSI support........................................................................................25
Fusion MPT device support.................................................................25
IEEE 1394 (FireWire) support (EXPERIMENTAL).............................25
I2O device support...............................................................................25
Network device support.......................................................................26
Amateur radio support.........................................................................26
IrDA (infrared) support........................................................................26
ISDN subsystem...................................................................................26
Old CD-ROM drivers (not SCSI, not IDE)............................................26
Input core support...............................................................................26
Character devices.................................................................................26
Multimedia devices..............................................................................27
File systems..........................................................................................27
Console drivers....................................................................................27
Sound...................................................................................................
.27
USB support.........................................................................................27
Bluetooth support.................................................................................28
Cryptographic options.........................................................................28
Kernel hacking / Library routines........................................................28
Salvando as alteraes realizadas................................................29
Concluso......................................................................................29

V. A

COMPILAO..............................................
......30

Introduo.....................................................................................30
Iniciando a compilao.................................................................30
Construindo a imagem compactada do kernel....................................30
Opo automatizada.......................................................... .......................30

Compilao e instalao dos mdulos.................................................31


Suporte aos mdulos em kernels da mesma verso..................................31

Iniciando a compilao...................................................... .......................32

Ajustes necessrios.......................................................................32
Copiando a imagem do kernel.............................................................32
Alterando a configurao do LILO......................................................33
Concluso......................................................................................34

VI. MANIPULAO

DE MDULOS E PENDNCIAS................35

Introduo.....................................................................................35
As ferramentas..............................................................................35
lsmod....................................................................................................35
modprobe.............................................................................................35
insmod..................................................................................................36
depmod.........................................................................................
........36
modinfo................................................................................................37
rmmod..................................................................................................37
Manipulao manual.....................................................................37
Arquivos de configurao.............................................................38
Localizao padro dos mdulos.........................................................38
Sobre o arquivo /etc/rc.d/rc.modules..................................................38
Concluso......................................................................................38

VII. CIRCUNSTNCIAS

ESPECIAIS.................................40

Introduo.....................................................................................40
Kernel............................................................................................40
Mantendo mltiplas verses personalizadas do kernel......................40
Aplicando correes ao cdigo-fonte do kernel..................................42
Os comandos diff e patch............................................................. .............42

Compilao....................................................................................43
Compilando o cdigo-fonte em outros processadores........................43
Configurao.................................................................................43
Restaurando as definies anteriores.................................................43
Concluso......................................................................................44

VIII. PROBLEMAS

MAIS FREQENTES............................45

Introduo.....................................................................................45
Resolvendo problemas..................................................................45
Antes....................................................................................................45
Parmetros errados sendo definidos na configurao..................... ..........45
Erros durante a verificao de pendncias com o comando make dep......45

Durante................................................................................................
.45
Falha na execuo dos comandos make bzImage e make modules...........45

Depois............................................................................................
.......46
O sistema no inicializa...................................................................... .......46
O sistema apresenta a mensagens de erro "Unresolved symbols".............46
Kernel enorme............................................................................ ...........47
Comportamento anormal do kernel.................................................. .........47
Algumas aplicaes no funcionam corretamente................................ .....47

Recomendaes gerais.................................................................47
Concluso......................................................................................48

ENCERRAMENTO......................................................49

ABERTURA
Conforme enfatizado na 1a. Parte Os sistemas GNU/Linux, todas as
distribuies baseadas nos sistemas GNU/Linux existentes so compatveis,
graas ao uso de um kernel nico desenvolvido por uma equipe de
excelentes e restritos programadores, onde Linus Torvalds o
coordenador.
Outra situalizao analisada est no fato do Slackware, em comparao
maioria das demais distribuies, ter o diferencial de possui vrios kernels
customizados para o uso em situaes especficas. Ainda assim, existiro
circunstncias em que necessitaremos de ter habilitadas algumas
funcionalidades especficas, bem como outras que no tero necessidade de
estarem presentes, ocupando memria e carga do processador.
Pelo fato do cdigo-fonte ser aberto e da existncia de diversos recursos
para a sua modificao, o kernel possui uma grande flexibilidade para ser
adaptado e recompilado com o intuito de atender os mais variados motivos.
justamente por isso que iremos estudar o kernel e detalhar como
funciona o processo de compilao do kernel, para que o usurio possa
obter suporte determinadas tecnologias ou perifricos, alm de otimizar o
sistema para obter uma melhor performance.
Existem inmeras funcionalidades ao qual o kernel pode ser adaptado. Para
ns, simples usurios desktops, apesar deste processo no ser to
necessrio, e na maioria das vezes dispensvel, nos interessar apenas
conhecer suas caractersticas e possivelmente realizar algumas
intervenes caso necessrias para o uso dos sistemas GNU/Linux em nosso
cotidiano. E para isto, nos prximos captulos iremos conhecer as
caractersticas e particularidades do kernel Linux, alm de obter
informaes necessrias para personaliz-lo de forma atender as mais
variadas necessidades conforme dito anteriormente. &;-D

6/49

I. VISO

GERAL

INTRODUO

<http://www.kernel.org/>.

Como todos j devem saber, o kernel considerado o corao do sistema;


ele quem coordena todo o trabalho de gerenciamento e acesso aos
principais recursos do sistema. Ao acessarmos a memria principal, ao
executarmos aplicaes, ao exibirmos informaes no vdeo, ao gravarmos
arquivos, enfim, todos os eventos inerentes de um sistema operacional,
acreditem: o kernel que entra em cena.
Neste captulo iremos apenas conhecer um pouco sobre o kernel Linux,
suas caractersticas, particularidades e aplicaes para o uso em desktops.

PARTICULARIDADES
O kernel Linux possui diversas caractersticas e particularidades tcnicas,
que por sua vez associado diretamente s distribuies; por isto, optamos
inserir estas informaes na 1a. Parte: Os sistemas GNU/Linux -> Linux.

TIPOS

E ADAPTAES

Existem diversos tipos e adaptaes possveis para o kernel, mas para ns


simples usurios, o que ser necessrio conhecer so suas caractersticas e
funcionalidades bsicas.

MONOLTICO
Um kernel considerado monoltico quando os drivers e/ou programas de
controle dos dispositivos so compilados diretamente no kernel. Estes
kernels so utilizados para a inicializao de sistemas para os mais variados
tipos de hardware. Porm em contrapartida exigem um consumo muito
maior de memria RAM que o kernel modular, onde diversos destes drivers
e/ou programas so compilados como mdulos.

MODULAR
Ao contrrio do kernel monoltico, no kernel modular os programas de
controle de dispositivos so compilados separadamente como mdulos ao
invs de serem inclusos no kernel. A principal vantagem deste processo
est no fato de se obter um kernel leve, rpido e bem enxuto. Porm,
dependendo das operaes serem realizadas e dos possveis mdulos
existentes, possivelmente ocorrer uma perda de performance face ao
carregamento destes mdulos durante a utilizao intensa dos dispositivos
do sistema. Este o principal motivo pelo qual determinadas tecnologias
7/49

devem ser compiladas diretamente (uso constante), enquanto outras devem


ser compiladas como mdulos (usos ocasionais).

SEMI-MONOLTICO?
Tanto o kernel monoltico quanto o kernel modular so temas de debates e
discusses entre vrios especialistas em desenvolvimento de sistemas
operacionais. Com os desenvolvedores do kernel Linux, com certeza no
seria diferente: enquanto alguns defendem a utilizao do kernel modular
em argumento sua simplicidade e formato compacto, outros defendem a
utilizao do kernel monoltico, tendo como principal argumento a
dificuldade em obter trocas de informaes confiveis entre os
desenvolvedores, pelo fato destes estarem divididos em numerosos grupos
para a administrao de seus respectivos mdulos.
Para intermediar estas circunstncias, foi incorporado ao kernel Linux
algumas caractersticas do kernel modular, onde estas apresentam as suas
principais qualidades sem apresentar suas limitaes, como a perda de
desempenho e simplicidade.

AS

VERSES

Tecnicamente existem duas verses do kernel: A verso de desenvolvimento


e a verso estvel.
A verso de desenvolvimento composta por um nmero de srie cujo o
2o. termo sempre mpar (2.1.x, 2.3.x, 2.5.x), onde so acrescentadas
melhorias e modificaes para que no futuro venha ser largamente
utilizado. Ao chegar um certo grau de amadurecimento, este kernel se
tornar a verso estvel, onde alterada a sua composio numrica para
uma nova srie, onde este 2o. termo passa ser par (2.2.x, 2.4.x, 2.6.x).
partir da verso estvel, inicia-se novamente o trabalho para
desenvolvimento de uma nova verso do kernel, e isto gera um ciclo de
desenvolvimento contnuo:

A verso em desenvolvimento gera a verso estvel 2.1.x -> 2.2.x;

A nova verso estvel torna-se a base para o novo desenvolvimento


2.2.x -> 2.3.x;

Onde continua o ciclo de aperfeioamento 2.3.x -> 2.4.x -> 2.5.x


-> 2.6.x -> ...

Dependendo das circunstncias, algumas modificaes so includas no


kernel estvel para que ele possa suportar novas tecnologias que sejam
bastante necessrias, procedimento este que geralmente implementado
no kernel de desenvolvimento para que esteja presente no novo kernel
estvel. Para exemplo, partir da verso 2.0.31, o kernel passou a suportar
nomes extensos do Windows nas parties VFAT; j acima da verso 2.4.16,
passou a suportar o sistema de dados ReiserFS.

8/49

ARMAZENAMENTO

OS

BINRIOS...

Conforme as instrues da norma FHS e respectivamente da LSB, os


arquivos de inicializao e o kernel Linux do sistema dever estar instalado
no diretrio /boot da estrutura de diretrios. Ao checarmos este diretrio,
encontraremos o seguinte conjunto de arquivos:
# ls -l
total 2912
-rw-r--r-1 root
-rw-r--r-1 root
lrwxrwxrwx
1 root
ide-2.4.20
-rw-r--r-1 root
-rw------1 root
lrwxrwxrwx
1 root
System.map-ide-2.4.20
-rw-r--r-1 root
2.4.20
-r-------1 root
-rw-r--r-1 root
# _

root
root
root

512 Jun 28 17:14 boot.0300


226 Jun 28 17:14 boot_message.txt
17 Jun 28 17:01 config -> config-

root
root
root

36222 Mar 18 03:03 config-ide-2.4.20


28672 Ago 17 21:05 map
21 Jun 28 17:01 System.map ->

root
root
root

563791 Mar 18 03:03 System.map-ide1170308 Jun 28 17:13 vmlinuz


1170308 Mar 18 03:03 vmlinuz-ide-2.4.20

A imagem do kernel principal corresponde ao arquivo vmlinuz-ide[VERSO], ao passo que o arquivo System.map-ide-[VERSO] utilizado
pelas ferramentas de manipulao de mdulos. J o config-ide-[VERSO]
refere-se s opes de configurao padro da distribuio que foram
utilizados na compilao do kernel correspondente ao .config situado no
pacote do cdigo-fonte.

CDIGO-FONTE

J o cdigo-fonte do kernel Linux dever estar disponibilizado em /usr/src,


onde dever existir o diretrio linux-[VERSO]. Dentro deste diretrio,
poderemos ver a seguinte rvore de diretrios:
# ls -l
total 211
drwxr-xr-x
-rw-r--r--rw-r--r-drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
-rw-r--r--rw-rw-r-drwxr-xr-x

19
1
1
30
41
46
26
2
2
2
4
1
1
2

573
573
573
573
573
573
573
573
573
573
573
573
573
573

573
573
573
573
573
573
573
573
573
573
573
573
573
573

456
18691
79594
3416
1032
2240
696
136
192
736
536
42744
18780
608

Nov
Ago
Nov
Nov
Nov
Nov
Nov
Nov
Nov
Nov
Nov
Nov
Nov
Nov

28
2
28
28
28
28
28
28
28
28
28
28
28
28

2002
2002
2002
2002
2002
2002
2002
2002
2002
2002
2002
2002
2002
2002

arch
COPYING
CREDITS
Documentation
drivers
fs
include
init
ipc
kernel
lib
MAINTAINERS
Makefile
mm

9/49

drwxr-xr-x
-rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x
# _

28
1
1
1
4

573
573
573
573
573

573
573
573
573
573

888
14239
2815
9291
928

Nov 28
Ago 2
Abr 6
Ago 2
Nov 28

2002
2002
2001
2002
2002

net
README
REPORTING-BUGS
Rules.make
scripts

Este cdigo-fonte compe-se da seguinte estrutura:

Cdigo-fonte do kernel Linux


arch/

Cdigos independente de arquitetura.

documentation/ Documentao relativa ao kernel.


drivers/

Diversos cdigos de drivers de dispositivos.

fs/

Sistema de arquivos.

include/

Definies e prottipos de funes (linguagem C).

init/

Definies de inicializao.

ipc/

Comunicao entre processos.

kernel/

Cdigo-base do kernel.

lib/

Funes bsicas (bibliotecas).

mm/

Definies de gerenciamento de memria.

modules/

Mdulos compilados (verses anteriores 2.4).

net/

Interligao em redes.

scripts/

Scripts diversos para configurao.

Alm do subdiretrio /Documentation, existem diversos documentos para


consulta, como o README, o REPORTING-BUGS, o COPYING e o
CREDITS. Sempre que puderem, gastem alguns minutos e d uma olhada
neles ou pelo menos no arquivo README. &;-D
Poderemos armazenar diversas verses do kernel, apenas atribuindo aos
seus respectivos diretrios o nome e a verso corrente destes para que, na
eminncia de uma necessidade, estes estejam sempre disponibilidade.

DESENVOLVIMENTO
Conforme brevemente comentado na 1a. Parte: Os sistemas GNU/Linux ->
O Linux, o kernel desenvolvido graas ajuda de milhares de
colaboradores, que tendo em mos o seu cdigo-fonte, ajudam nas mais
diversas formas: sejam aperfeioando o prprio cdigo, analizando,
comunicando erros, dando sugestes, etc., enfim, colaboraes que hoje o
tornam um dos maiores projetos de cdigo-aberto atualmente.
Encabeado por Linus Torvalds e com grande apoio de seu brao direito
Alan Cox, o kernel Linux possui um grupo de desenvolvedores, subdividido
10/49

por uma rgida hierarquia, onde as sugestes enviadas so avaliadas pelos


membros da equipe, porm em casos de opinies adversas, somente os
lderes de cada hierarquia que do a palavra final.
Tendo um grupo de desenvolvedores formado por programadores de
diversos pases do mundo inteiro, fica a pergunta no ar: ser que no tem
nenhum representante brasileiro neste grupo? Ah, tem sim! Este
representante o gaucho Martelo Tosatti, que faz parte do grupo de
desenvolvedores do kernel Linux. H pouco tempo, ele era somente o
responsvel pela manuteno da verso corrente do kernel, porm em
virtude de um convite do prprio Linus Torvalds, Tosatti passar a
desenvolver outros componentes importantes deste sistema operacional.

CONCLUSO
Enfim, aps a leitura de todo este captulo, acreditamos que os usurios
estejam pensando que aprenderam praticamente tudo sobre o kernel Linux,
correto? Errado. De acordo com a viso e a necessidade de cada usurio ou
entidade, o kernel Linux possui aspectos e particularidades tais que
poderiam render um livro inteiro se tivssemos que detalh-lo por
completo. Aqui apenas colocamos as consideraes mais bsicas e
importantes para obtermos uma viso geral. Com estas informaes, o
usurio apenas ter um entendimento bsico, porm suficiente para
entender a mais importante pea do sistema operacional no toa que
chamado de ncleo! &;-D

11/49

II. BONS

MOTIVOS PARA A COMPILAO

INTRODUO
A compilao do kernel est entre as maiores vantagens para a adoo de
sistemas operacionais livres como o GNU/Linux e BSDs em comparao aos
outros proprietrios existentes, justamente por ser possvel realizar a
otimizao de seus recursos em virtude de se encontrar disponivel o seu
cdigo-fonte para a realizao desta operao. Este motivo, por si s, j o
suficiente para justificar o uso deste processo. Mas especificamente para
ns, simples usurios, quais motivos poderemos ter para realizar este
procedimento? Quais so suas vantagens? Em qu mais especficamente
ns iremos nos beneficiar? Quais so os riscos?
Enfim, para estas e muitas outras perguntas, elaboramos um captulo
especial parte para o esclarecimento das dvidas mais comuns dos
usurios iniciantes que se decidiram em usar deste processo.

BONS

MOTIVOS...

SUPORTE

A PERIFRICOS E PROGRAMAS

Um dos principais motivos que levam os usurios a recompilarem o kernel


est na necessidade de suporte novos perifricos e tecnologias,
habilitando-as conforme necessrio. Em virtude da imensa variedade
mquinas com perfis de hardwares existentes, os sistemas GNU/Linux
geralmente reconhecem a grande maioria destes, porm ainda existem
muitos componentes que, por mais variados motivos, no so suportados
pelo kernel ou seu suporte no se encontram habilitados. O mesmo se d
para determinados programas; determinadas tecnologias devero estar
habilitadas no kernel do sistema para que esses programas funcionem
corretamente, como o caso dos sistemas de gerenciamento de hardware.

OTIMIZAO E

PERSONALIZAO

Por padro e de acordo com cada kernel disponibilizado pelas mais diversas
distribuies, existem recursos diversos que so disponibilizados para
atender a grande maioria dos usurios; porm, por mais exticos que
sejam tais usurios, a grande maioria dos recursos presentes sero
desnecessrios para seu uso. A compilao do kernel prov um conjunto de
recursos mais enxuto ao sistema o qual se encontra instalado. Basta apenas
personaliz-lo de acordo com o equipamento utilizado, onde teremos um
novo kernel, mais simples, limpo, rpido, enxuto e mais eficiente.

12/49

SUPORTE

ESPECFICO PARA CADA ARQUITETURA

Em virtude da existncia de diversas arquiteturas, a grande maioria das


distribuies fornecem o kernel pr-compilado para atender as mais
variadas existentes. Por exemplo, o kernel do Slackware compilado para
suportar processadores partir do i386/i486, ao passo que o Mandrake,
com seus vastos recursos, somente suporta processadores i585 em diante
em virtude da demanda de processamento e de hardware.
O kernel pode ser otimizado para suportar os recursos especficos de uma
nica plataforma, habilitando suas extenses e otimizando as instrues do
sistema somente para aquela arquitetura, onde o ganho de desempenho so
sensveis graas este procedimento.

COMPATIBILIDADE
A possibilidade de ajustar o kernel para especficas finalidades o torna
altamente compatvel com as tecnologias e requesitos atuais. Suporte
dispositivos exticos e perifricos desconhecidos so tambm garantidos
com algumas alteraes na configurao do kernel e respectiva utilizao.

EXPERINCIA E

APRENDIZADO

Para os engenheiros, tcnicos de manuteno, profissionais de diversos


ramos e at mesmos simples usurios do sistema, a compilao do kernel
uma tima oportunidade de aprendizado para melhor conhecer os
fundamentos bsicos do funcionamento de um sistema operacional.
Conhecendo fundo este processo, poderemos dominar quaisquer aspectos
referentes s suas particularidades e conseguiremos condicion-lo para as
mais variadas situaes.

CONCLUSO
Apesar de ser at um certo ponto desnecessrio e at mesmo no
recomendvel , existem diversas vantagens oferecidas pela utilizao deste
procedimento. Alm de um pequeno ganho de performance e desempenho
(s vezes sensvel), o aprendizado um dos fatores que consideramos de
suma importncia. Conhecer algumas caractersticas e particularidades do
kernel Linux nos beneficiar muito quando houver necessidade de realizar
intervenes, como a instalao e suporte de um perifrico, a adaptao de
determinados parmetros, entre outros. Alm disso, aprendizado nunca
demais! &;-D

13/49

III. PREPARATIVOS

INICIAIS

INTRODUO
Como qualquer outra operao que envolve riscos de perdas de dados, ser
necessria a realizao de alguns preparativos iniciais que visam dar
assistncia ao desenvolvimento do processo e ao mesmo tempo resguardar
o usurio contra possveis falhas e sinistros que podero ocorrer sob os
mais variados motivos. Por se tratar da compilao do kernel justamente
o ncleo do sistema operacional lgico que toda a ateno dada este
aspecto no mnimo... merecida! &;-D

PROCEDIMENTOS

NECESSRIOS

Segue os principais preparativos bsicos e essenciais para a realizao


deste procedimento com segurana e praticidade, lembrando ainda que
poder haver a necessidade de realizao de outras atividades durante a
compilao do kernel. Enfim, estejam preparados! &;-D

CPIA

DE SEGURANA DOS DADOS DO SISTEMA

Na verdade, no so muito comuns os casos em que os processos de


compilao do kernel feitos incorretamente produzem perdas de dados,
porm, de acordo com o nosso nvel de conhecimento e a possibilidade de
no termos mais acesso ao sistema, ser mais cmodo a utilizao desta
operao para resgate. Caso algo no d certo, bastar apenas realizarmos
a reinstalao do sistema, restaurando todas as definies anteriores e os
dados previamente salvaguardados.
Para esta atividade, consultem a 2a. Parte: Conhecimentos Gerais ->
Manipulao de arquivos e diretrios, para obterem maiores informaes
para a realizao da cpia de segurana com segurana e praticidade.1

DISQUETES

DE INICIALIZAO

A utilizao de disquetes de inicializao necessria especialmente


quando ocorrem erros no processo de compilao que possam resultar a
no inicializao do sistema, o qual somente poder ser feito utilizando-se
este recurso. Este tipo de ocorrncia bastante comum o que torna
praticamente indispensvel a sua disponibilidade.
Para isto, bastar inserir uma mdia no drive e digitar...
$ mkbootdisk --device /dev/[DISQUETE] [KERNEL]

Utilizem os processos que desejarem, porm dem preferncia s ferramentas


nativas do sistema, como o empacotador TAR e os compactadores bzip2 e gzip, ou
que ainda utilizem estes formatos. Em situaes mais drsticas, ser mais fcil
intervirmos com estes utilitrios mo.

14/49

Para obterem maiores informaes, consultem a 2a. Parte: Conhecimentos


Bsicos: -> Unidades, parties e formatos.

CPIA

DE SEGURANA DA COMPILAO ANTERIOR

Ao realizarmos a compilao do kernel e o sistema estiver rodando sem


maiores problemas, poderemos optar por realizar uma cpia de segurana
do arquivo de configurao gerado pela compilao anterior. Este arquivo
se encontra na raiz deste diretrio e se chama .config. Salvem-o em um
local adequado, caso venha ocorrer algum problema.
Se por algum motivo no o encontrarem, entrem no diretrio do antigo
cdigo-fonte do kernel e executem o programa de configurao...
# make xconfig
# make gconfig
# make menuconfig

... com qualquer uma das trs opes acima.


Em todas elas haver uma opo para salvarmos a configurao padro em
um arquivo separado. Utilizem-na, definindo o nome .config e salvem-no em
um local adequado, de preferncia junto com os demais dados.
Se preferirem, podem tambm copiar o arquivo config.in disponvel em
/usr/src/linux/arch/i386 para /usr/src/linux, renomeando-o para .config.

MANUTENO DA

VERSO ANTERIOR DO KERNEL

opcional, porm recomendada a manuteno da antiga verso do cdigofonte do kernel compilado anteriormente no sistema. Evitem exclu-lo, pois
dependendo das circunstncias, poderemos necessitar dele. Isto ocorre
muito com as novas verses do kernel, logo aps que estas so lanadas.
Caso o cdigo-fonte esteja armazenado em um diretrio simplesmente
chamado linux e no um atalho deveremos renome-lo para a verso o
qual pertence, no seguinte formato:
# mv linux linux-[VERSO]

Caso no saibam qual a verso do kernel utilizado pelo sistema...


# uname -r
2.4.18
# _

Utilizem os dados exibidos e renomeiem o diretrio, conforme solicitado.


# mv linux linux-2.4.18

REQUERIMENTOS

BSICOS

Dentre os principais requerimentos bsicos, destacam-se a satisfao das


seguintes pendncias:

15/49

O compilador GCC e a biblioteca padro GNU C;

As ferramentas GNU que acompanham a distribuio;

Os pacotes TCL/Tk e o servidor XFree86 e/ou X.org instalados para


a opo xconfig. J no kernel 2.6, esta opo requer a biblioteca Qt;

O pacote ncurses para a opo menuconfig;

O arquivador TAR e os compactadores gzip e bzip2;

O cdigo-fonte do kernel lgico... &;-D

Todas as pendncias necessrias encontram-se disponveis no CD-ROM de


instalao em qualquer distribuio GNU/Linux, onde estas so requeridas
durante a instalao para o perfeito funcionamento do sistema.

OBTENDO

O CDIGO-FONTE DO KERNEL

<http://www.kernel.org/>.

<ftp://ftp.kernel.org/pub/linux/kernel/>.

O cdigo-fonte do kernel pode tambm ser obtido diretamente no prprio


FTP ou na pgina eletrnica oficial do projeto, onde poderemos encontrar
as verses estvel (srie 2.4.x) ou de desenvolvimento (srie 2.5.x). Aps o
trmino da operao, copiem-no para a pasta /usr/src, onde por padro
devero ser armazenados os fontes do kernel. No FTP, os cdigos-fontes
so armazenados no diretrio /pub/linux/kernel/v.x.y/, onde v.x.y
corresponde verso do kernel que desejamos utilizar.
Existem diversos endereos eletrnicos e espelhos os quais poderemos
baixar o cdigo-fonte do kernel, caso os endereos eletrnicos disponveis
estejam sobrecarregados.

PREPARANDO
INSTALAO

A COMPILAO

DO NOVO CDIGO-FONTE

Aps obtermos o novo cdigo-fonte, descompactem-no no local indicado


conforme a norma FHS neste caso, em /usr/src.
# tar -xpzvf linux-[VERSO].tar

Aps descompact-lo, criem um atalho denominado linux para apontar para


o diretrio onde se encontra o novo kernel do sistema.
# ln -s /usr/src/linux-[VERSO] linux

Possivelmente podero existir casos em que encontremos outras verses do


kernel disponveis em /usr/src, alm do respectivo atalho linux apontando
para um destes diretrios. Neste caso excluam o antigo atalho e recriem-no
novamente conforme exemplo abaixo:
# rm linux

16/49

# ln -s /usr/src/linux-[VERSO] linux

A necessidade da criao do atalho simblico caracteriza-se pelo fato da


existncia de inmeros programas que necessitam acessar as instrues
contidas no cdigo-fonte do kernel operante.

MANTENDO

OU REMOVENDO AS DEFINIES DE PARMETRO ANTERIORES

Quando resolvemos realizar a recompilao de um mesmo kernel utilizado


anteriormente, poderemos utilizar as mesmas definies realizadas na
compilao anterior. Para isto basta apenas dar continuidade ao processo
de compilao, iniciando os programas de configurao necessrios. Isto
tambm vlido para os kernels da mesma verso com correo de bugs
(por exemplo, 2.4.10 -> 2.4.18, etc.).
Porm, quando desejamos realizar um novo perfil de configurao,
deveremos ento limpar as definies de arquivos de configuraes
anteriores. Para isto, faz-se necessrio a utilizao do comando make
mpromper...
# make mpromper

... o qual se encarregar de realizar a excluso das definies contidas na


rvore de diretrios onde se situa as definies anteriores.

CONCLUSO
A realizao de preparativos iniciais em processos complexos e crticos
fator de fundamental importncia para o seu sucesso. Na compilao do
kernel, com certeza no seria diferente. Para isto, solicitamos uma certa
ateno na utilizao das instrues contidas neste captulo, pois de acordo
com suas necessidades, elas sero fatores preponderantes no sucesso da
compilao do kernel.
Existiro tambm diversos outros aspectos importantes serem
observados, como tambm estes aspectos devero variar de acordo com o
equipamento utilizado; aqui citamos apenas as situaes mais comuns. &;-D

17/49

IV. CONFIGURAO

DE SUPORTE E PARMETROS

INTRODUO
Chegamos uma nova etapa para a realizao da compilao do kernel.
Trata-se da configurao de suporte e parmetros especficos para a
mquina o qual desejamos utilizar. Neste captulo, iremos conhecer os
principais utilitrios de configurao para o ajuste de parmentros do
kernel, alm de tecer breves comentrios sobre as principais categorias de
opes existentes, visto que ser praticamente invivel descrever item-aitem em virtude da sua imensa quantidade.

UTILITRIOS

DE CONFIGURAO

Aps esta operao ser necessrio iniciar os programas de configurao


para que possamos habilitar os parmetros de configurao do kernel.
Felizmente dispomos trs excelentes opes:

make xconfig;

make menuconfig;

make config.

Todos estes trs utilitrios fornecem um menu de acesso e, apesar de


possurem diferentes telas de apresentao, todas as opes do kernel se
encontram disponibilizadas. Atendem perfeitamente bem s expectativas,
porm cada um possui um melhor rendimento em circunstncias
especficas, das quais iremos analisar.
MAKE XCONFIG

Esta opo fornece aos usurios, que podem disponibilizar a interface


grfica X, um menu grfico simples e bem organizado, onde com apenas
alguns cliques do mouse poderemos ter acesso todos as categorias.

18/49

Xconfig utilizando a biblioteca TK (Kernel srie 2.4).

Na verso atual (2.6) dispomos somente da opo make xconfig, onde o


mesmo utiliza a biblioteca Qt para a construo da caixa de dilogo.

xconfig utilizando a biblioteca Qt (Kernel srie 2.6).

Para equipamentos com razoveis recursos de hardware e quantidade de


memria, estas so as opes mais indicada, pelas facilidades e confortos
proporcionados aos administradores.
MAKE MENUCONFIG

A opo menuconfig tambm oferece um menu prtico, porm em modo


texto, onde a seleo dos tens feita utilizando-se o teclado.

19/49

Menuconfig utilizando a biblioteca ncurses

recomendado o uso deste utilitrio principalmente quando ocorre algum


problema que impea o uso da interface grfica ou quando se deseja
sobrecarregar o mnimo possvel os recursos do sistema. Realizar a
compilao do kernel com equipamentos de pouco recurso e ainda no modo
texto, onde existe a necessidade de uma boa quantidade de memria
realmente esta a opo mais recomendvel.
MAKE CONFIG

Por ltimo, a opo config somente utilizada quando existe algum


problema que impea a utilizao das demais opes citadas.
* Linux Kernel Configuration
*
*
* Code maturity level options
*
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?]
_

Esta opo vista por muitos tcnicos experientes como espartana, pois
alm de ser a menos amigvel, infelizmente apresenta as opes de forma
seqencial, onde impossibilita alterar qualquer configurao realizada
previamente, ou seja, no existe a possibilidade de retornar para uma opo
anterior para corrigir. Outro grande inconveniente que, quando se utiliza
os demais utilitrios (menuconfig e xconfig), de acordo com tens
especficos que por ventura sejam desabilitados, suas sub-opes, exibidas
de forma identadas, ficam indisponveis, porm podemos visualiz-las; j
esta opo simplesmente pula estes tens, dos quais infelizmente sequer
poderemos ter noo do que deixamos para trs.

SOBRE

A HABILITAO DE PARMETROS E SUPORTES

Para habilitar e/ou desabilitarmos as opes disponveis durante a


configurao do kernel, teremos que redefinir como estes sero utilizados
pelo prprio kernel. Para isto, deveremos marcar as opes presentes no
20/49

menu com as seguintes siglas:

Opes & Finalidades


Y

Yes Habilita as opes selecionadas para que sejam embutidas no


kernel principal (monoltico).

M Modules Habilita a opes selecionadas, porm somente sero


carregadas sob demanda, conforme a necessidade do sistema para o
seu uso (modular).
N No Desabilita as opes selecionadas.
Em muitas circunstncias no teremos disponvel a opo de habilitao
ora como mdulos (M), ora embutidos (Y), de diversas recursos e
tecnologias de acordo com suas caractersticas e utilizao.

MDULOS:

QUANDO UTILIZAR?

somente recomendada a habilitao das opes como mdulos todos e


quaisquer dispositivos que so utilizados ocasionalmente, pois alm de
mantermos o kernel enxuto, utilizaremos menor carga de processamento e
hardware, ganhando com isto melhor performance geral em sua utilizao.

AJUSTANDO

OS PARMETROS DE CONFIGURAO

Ao acessarmos a interface de configurao para a compilao do Kernel,


ns teremos disposio uma srie de opes estruturadas por categorias,
onde basta apenas navegarmos por estas estruturas e marcar e/ou
desmarcar as opes que desejarmos habilitar e/ou desabilitar. Dada as
circunstncias, talvez necessitaremos atribuir valores para configuraes
especficas, mas nada que a consulta de seu respectivo help (mesmo que
em ingls) no possa ajudar. &;-D
Utilizaremos somente as principais opes onde encontra-se disponibilizado
pelo xconfig / gconfig, pois alm de ser mais fcil de visualizar, nos
sentiremos mais confortveis com apenas a realizao de alguns simples
cliques. Mas nada impede que utilizemos as demais opes existentes.
Segue abaixo a descrio das principais categorias para ajustes e
configurao, onde descrevemos instrues bsicas sobre as opes mais
importantes do sistema. Conforme dito anteriormente, em virtude da
extensa possibilidade de configurao, ser invivel uma descrio mais
detalhada das opes subseqentes, pois o excesso de informaes poder
comprometer o bom aprendizado ao invs de auxiliar. &;-(

CODE

MATURITY LEVEL OPTION

Suporte cdigos imaturos e experimentais. No existe muito mistrio.


Basta apenas informar ao utilitrio se deseja habilitar as opes que se

21/49

encontram disponveis ao kernel em carter experimental, como diversos


drivers existentes para o suporte de recentes perifricos e tecnologias.
Quando desabilitada, as demais opes disponveis em outras categorias de
carter experimental permanecem sombreadas e/ou indisponveis, sendo
impossvel habilit-las.
IMPORTANTE: CASO TENHAM ESCOLHIDO A OPO Y (SIM), A HABILITAO DE
SUPORTE EXPERIMENTAL PODER TORNAR O KERNEL INSTVEL E SUJEITO
FALHAS COM GRAU DE RISCOS VARIVEIS. UTILIZEM-NAS SOMENTE SE
HOUVER REAL NECESSIDADE.

LOADABLE MODULE

SUPPORT

Suporte mdulos. Habilita/desabilita o suporte ao carregamento de


mdulos dinmicos ao kernel. de grande importncia e extremamente
necessrio que esta opo esteja habilitada para se sejam utilizados os
mdulos para a utilizao de diversos dispositivos do sistema.

PROCESSOR

TYPE AND FEATURES

Tipos de processador e implementaes. Realiza a compilao do kernel


ajustando-o com os recursos e caractersticas tcnicas do processador
processador selecionado. Lembrem-se que, quando configurada esta opo,
o novo kernel suportar somente o modelo do processador instalado na
mquina em uso, no servindo praticamente para nenhum outra
arquitetura. Como muito provavelmente no iremos utilizar o novo kernel
em outras mquinas, esta restrio tem pouca importncia.
Nesta categoria encontra-se tambm o suporte SMP opo Symetric
multi-processing support que habilita o recurso de suporte mltiplos
processadores de uma nica mquina. Utilizem-na somente se possurem
um equipamento dotado de 2 processadores centrais ou se possurem
processadores de ncleo duplo, como o Pentium HT.
Tambm poderemos realizar a emulao do processador matemtico,
atravs da opo Math emulation. Recomenda-se manter desabilitada esta
opo, pois somente processadores 386 e 486 SX no possuem processador
matemtico, o que provavelmente no ser o caso.

GENERAL

SETUP

Opes gerais de configurao, onde a maior parte se encontram aqui.


Dentre as opes de destaque, encontra-se a ISA bus support. Nesta opo,
muitos usurios donos das mais recentes placas-mes tendem desabilitlo. Isto porque estes julgam que, pelo fato destas no utilizarem mais o slot
ISA, acreditam que ser desnecessrio habilitar este suporte. No
confundam barramento com interface, pois o termo barramento refere-se
implementao das vias de comunicao dos dispositivos com a BIOS, ao
contrrio do termo interface, que refere-se apenas ao encaixe existentes
22/49

para antigos perifricos. O barramento ainda utilizado para ter acesso


alguns dispositivos do computador, como as portas seriais e controladores
do drive de disquetes. Sem esta opo, simplesmente no poderemos fazer
o de perifricos que utilizam esses canais, como o caso do drive de
disquete, por exemplo.

MEMORY TECHNOLOGY DEVICES (MTD)


A seo Memory Technology Devices refere-se ao tratamento dado ao
kernel aos dispositivos de memria eletrnica (RAM, flash, etc.) usados
como sistema de arquivos em dispositivos embutidos. Para os usurios
desktops, no h parmetros especficos para serem alterados, visto que
por padro esta se encontra desabilitada.

PARALLEL

PORT SUPPORT

Especificaes gerais para o suporte porta paralela. A porta paralela


necessrio para a utilizao muitos dispositivos e perifricos, em especial
as impressoras, onde encontram-se opes que podero melhorar a
integrao e performance destes perifricos no sistema. Recomenda-se
habilit-la como mdulo, face sua pouca utilizao.

PLUG

AND

PLAY CONFIGURATION

As opes contidas nesta seo so extremamente importantes para a


deteco de diversos hardwares disponveis.
Das opes importantes, destaca-se a Plug and Play Support, que refere-se
ao suporte dispositivos Plug-and-Play. Pelo fato da maioria dos perifricos
suportarem esta tecnologia, recomendvel a sua habilitao.
Tambm de importante crdito a opo ISA Plug and Play support, o qual
habilita o suporte dispositivos Plug-and-Play que utilizam interfaces ISA.
recomendado especialmente para perifricos antigos, como as antigas
placas de som SoundBlaster AWE32/64 e hardmodens de 33.6 kbps.

BLOCK

DEVICES

Em Block devices encontram-se as opes de configurao para o suporte


diferentes unidades, controladoras e chipsets do sistema, que vo desde
uma simples unidade de disquete, passado por diferentes controladoras de
discos rgidos, chipset especficos s unidades SCSI.
Nesta seo apenas deveremos conferir se esto habilitadas todas as
opes referente s unidades do sistema em uso (disquete, disco rgido,
CD-ROM, etc.), onde as demais podero ser desabilitadas desde que tenham
certeza de que no fazem uso, pois caso contrrio o sistema no dar
suporte leitura e gravao nestas unidades.

23/49

MULTI-DEVICE

SUPPORT

(RAID

AND

LVM)

Nesta seo encontraremos suporte s tecnologias RAID e LVM.


O RAID Redundant Array of Inexpensive Disks um recente recurso
utilizado para garantir a confiabilidade de dados em unidades de disco
rgido, o qual consiste em espelhar os dados de um sistema
simultaneamente duas simples unidades (sem grandes garantias de
qualidade), de forma que, na iminncia de uma destas apresentarem
problemas de funcionamento, teremos disponvel outra unidade com os
mesmos dados armazenados, possibilitando assim a substituio da unidade
defeituosa sem maiores perdas. J o LVM Logical Volume Manager
uma metodologia de gerenciamento de parties de disco rgido que visa
melhorar a utilizao do espao disponvel atravs de definies lgicas
(no reais) de tamanho.
Geralmente os usurios comuns sequer necessitam destes recursos, onde a
maioria das distribuies optam por deix-los desabilitados.

NETWORKING

OPTIONS

Como o prprio ttulo da seo indica, nesta categoria estaro inclusas as


opes gerais de configurao para suporte rede, pois mesmo que o
equipamento esteja isolado de quaisquer outro, ser necessria a
habilitao de algumas opes aqui descritas (por exemplo o acesso
Internet). L tambm se encontra o suporte ao PPP, necessrio para
realizar a conexo com a Internet. Marquem-na como mdulo.

TELEPHONY SUPPORT
A seo Telephony Support serve unicamente para habilitar aplicaes
especficas voz-sobre-IPs. No se enganem ao pensar que este recurso
ser necessrio para a configurao da Internet; podemos desabilit-lo sem
maiores preocupaes, se assim desejarmos.

ATA/IDE/MFM/RLL

SUPPORT

Suporte controladoras necessrias para a utilizao das unidades de


discos rgidos e leitores de CD-ROM que utilizam a interface ATAPI/IDE.
Basta manter as opes padres, visto que praticamente todas as
distribuies mantm estas opes habilitadas por padro. Na subseo
IDE, ATA and ATAPI Block devices encontra-se uma srie de opes que
visam habilitar determinados recursos e perifricos especficos. Verifiquem
cautelosamente e se assim desejarem tenham cuidados com os quais
devero ser redefinidos ou no. Para isto, deveremos conhecer
profundamente as placas-me e controladoras das unidades em uso.

24/49

SCSI

SUPPORT

Esta seo referente ao suporte todos os perifricos SCSI.


Uma ateno importante est na utilizao de dispositivos dotados de
memria eletrnica e de gravadores de CD-R/RW, pois apesar de no
utilizarem uma interface SCSI, estes perifricos necessitam da emulao
SCSI para que possam ser utilizados nos sistemas GNU/Linux.2 Em virtude
da grande popularidade dos gravadores de CD-R/RW, se encontram
habilitadas por padro em praticamente todas as distribuies.

FUSION MPT

DEVICE SUPPORT

Suporte ao barramento SCSI para a melhora de desempenho em perifricos


compatveis com Fusion MPT. Habilitem-no, se estiverem providos destes
perifricos. Caso contrrio, mantenham as definies padres.

IEEE 1394 (FIREWIRE)

SUPPORT

(EXPERIMENTAL)

Suporte ao barramento serial FireWire, tambm conhecido como IEEE


1394. Com os recursos e conceitos similares ao USB, sua principal
diferena est possibilidade de intercomunicao entre os dispositivos
conectados, alm de obter uma taxa de transferncia superior3.
Para os micros e especialmente os notebooks dotados de portas
FireWire, que por sua vez possibilita a conexo com perifricos que utilizam
esta tecnologia, estes necessitaro de ter o suporte do kernel habilitado,
levando-se em considerao que esta implementao encontra-se em fase
EXPERIMENTAL. Exemplos de dispositivos que utilizem esta conexo esto
queles que trabalham com grande volume de dados, como discos rgidos,
cmeras digitais e algumas placas de som para uso profissional.

I2O

DEVICE SUPPORT

O I2O Intelligent Input/Output uma arquitetura de hardware que


possibilita CPU central deixar cargo de um perifrico o processamento
de endereos I/O, deixando-o livre para a realizao de outras atividades e
conseqentemente melhorando a performance geral do sistema.
Para utilizar este recurso, ser necessrio a obteno de uma placa especial
dotada de um processador exclusivo para esta funo. A mesma utiliza um
slot PCI, e para habilitar o funcionamento desta, ser necessrio ter o
suporte I2O do kernel. Neste caso, estas opes devero estar habilitadas.

2
3

Estas consideraes so vlidas somente para o kernel 2.4. A verso 2.6 dispensa
o uso do recurso de emulao SCSI para o uso dessas unidades.
Isto era at antes do lanamento da verso 2.0 do barramento USB.

25/49

NETWORK

DEVICE SUPPORT

Aqui se encontraro diversas opes referentes tecnologias, recursos,


protocolos e perifricos de uso exclusivo para redes e Internet. Sem
maiores detalhes, deveremos manter habilitada a opo principal
Network device support , alm de checar cuidadosamente as demais
opes conforme sua utilizao.

AMATEUR RADIO

SUPPORT

Suporte recursos gerais para rdio amador. Como pouqussimos usurios


desktops utilizam estes recursos, poderemos desabilitar estas opes.

IRDA (INFRARED)

SUPPORT

Suporte dispositivos infravermelhos. Sem maiores explicaes, somente


deveremos utilizar este suporte para perifricos que utilizem este recurso,
como o caso de alguns teclados e mouses, entre outros perifricos.

ISDN

SUBSYSTEM

O ISDN Integrated Services Digital Network outra modalidade de


conexo discada para a Internet, onde a velocidade de conexo dobrada
128 kbps: a linha dividida em dois canais de 64 kbps independentes, os
quais possibilitam a utilizao da linha telefnica tanto para uso normal
quanto para a Internet simultaneamente. Para isto, ser necessrio a
utilizao de placas de rede que suporte a tecnologia. Por padro
mantenham esta opo ativada.

OLD CD-ROM

DRIVERS

(NOT SCSI,

NOT

IDE)

Suporte antigos drives de CD-ROM que no utilizam conectores IDE e


SCSI. Lembram-se daqueles antigos kits multimdia com placa de som,
microfone e drive de CD-ROM, onde este ltimo conectado placa de som
para a transferncia de dados? Pois bem, estes somente podero ser
suportados pelo kernel quando habilitadas estas opes.

INPUT

CORE SUPPORT

Necessrio para a habilitao de dispositivos USB, tais como mouses,


teclados, josticks, etc. Mantenha habilitada, caso utilize-los.

CHARACTER

DEVICES

Suporte diversos perifricos do sistema.


Importante: na seo referente aos chipsets das placas-me, no habilite o
suporte para queles fabricados pela SiS, pois ainda existem alguns
26/49

problemas que impediro a sua correta compilao.


Dentre outras opes importantes, destaca-se a Virtual terminal dever
permanecer habilitada, para que possamos trabalhar com mltiplos
terminais (consoles) no sistema, a Direct Rendering Manager (X.org DRI),
necessrio para algumas aceleradoras grficas, como a srie GeForce /
nVidia, o suporte a Framebuffer e VESA e uma categoria especial para
suporte joysticks e placas de som.

MULTIMEDIA DEVICES
Nesta seo encontraremos as opes Video for Linux e Radio Adapters,
para a habilitao de captura de vdeo e rdio amador respectivamente. Se
a estao de trabalho do usurio se encontra nesta categoria o que bem
raro , mantenha estas opes habilitadas.

FILE

SYSTEMS

Seleo e habilitao de diferentes sistemas de arquivos suportados pelo


kernel Linux. Alm dos sistemas de arquivos tradicionais do ambiente ( ext2,
ext3, ReiserFS, swap, etc.) os sistemas de arquivos MSDOS e VFAT devero
ser habilitados para o uso de outros dispositivos, como os disquetes
(devero ser habilitados como mdulos, face pouca utilizao).

CONSOLE

DRIVERS

Mais algumas configuraes e suportes para a placa de vdeo no modo


texto, especialmente para os terminais. Dentre diversas opes de suma
importncia, asseguintes devero estar marcadas:

Console drivers
VGA text console Suporte ao modo texto para a inicializao do sistema.
Video mode
Ajuste de diferentes modo de vdeo de acordo com as
selection support personalizaes do LILO.

SOUND
Suporte s tecnologias e recursos de udio em geral. No s ativaremos o
suporte do kernel determinadas placas de som como tambm seus
recursos, como suporte joystick, canais de udio, mdulos do projeto OSS,
etc. Recomendamos cuidados para a manipulao destas opes.

USB

SUPPORT

Sem grandes mistrios, aqui se encontram os principais parmetros para a


habilitao e suporte das portas USB do sistema. Como poderemos ver em
sua subseo, existe uma infinidade de perifricos que utilizam o
27/49

barramento USB, o que implica a necessidade de sua habilitao para evitar


maiores inconvenientes. Caso optemos por desabilit-la, deveremos
tambm desabilitar o barramento na configurao da BIOS do sistema.
Das principais opes existentes, merecem destaque o USB MIDI support
para suporte joystick USB e USB Mass Storage support para suporte s
memrias eletrnicas (flash memory), disponveis nos famosos pendrives e
cmeras fotogrficas digitais.

BLUETOOTH

SUPPORT

Bluetooth uma recente tecnologia que tem como finalidade conectar


diversos equipamentos e componentes eletrnicos sem a utilizao das
tradicionais fiaes e cabos eltricos. A transmisso de dados se d por
ondas de rdio de curto alcance.
No kernel encontramos estas opes centralizadas em seu menu de opes,
bastando apenas defini-las conforme necessrio.

CRYPTOGRAPHIC

OPTIONS

Opes gerais para a utilizao de recursos de criptografia. Disponvel


partir da verso 2.4.22 do kernel, este recurso necessrio para a
utilizao do VPN em redes internas, por exemplo. Como as instrues
deste livro enfoca o sistema para o uso em desktops, no h grande
importncia nesta seo, ficando critrio dos usurios a edio das
opes aqui descritas.

KERNEL

HACKING

/ LIBRARY ROUTINES

Segue as instrues do prprio Linus Torvalds sobre esta categoria:

Os detalhes de configurao utilizados no kernel hacking


resultam em geral num kernel maior ou mais lento (ou ambos) e,
podem tornar o kernel mais instvel, pela criao de elementos de
cdigo agressivo e cujo objetivo a deteco de erros do kernel
(kmalloc()). Deveria pois, provavelmente, responder 'n' a todas as
perguntas se quer criar um kernel de 'produo'. -> [Linus
Torvalds, O Linux Kernel HOWTO].
Sem maiores detalhes, as opes desta seo somente devero ser
habilitadas para os propsitos acima mencionados.
Da mesma forma que o kernel hacking, as opes disponveis em Library
routines so para o uso de programadores do kernel, das quais pouca
influncia benfica faro ao sistema ao editarmos. Portando recomendamos
mant-las em seu estado original.

28/49

SALVANDO

AS ALTERAES REALIZADAS

Aps concluir a seleo das opes desejadas na configurao do novo


kernel, encontraremos no final da janela quatro opes para finalizar o
utilitrio e retornar linha de comando para dar continuidade ao processo
de compilao.

Salvando as alteraes realizadas


Save and Exit

Salvas as alteraes realizadas.

Quit Without Saving

Sai do menu sem salvar as alteraes.

Load Configuration from File Carrega uma configurao j existente.


Store Configuration to File

Restaura as alteraes realizadas de um


arquivo previamente gravado.

Caso tenham utilizado os demais menus de configurao, as opes para


salvar e carregar o arquivo de configurao gerado sero diferentes, mas
os mesmos conceitos aqui descritos estaro presentes.
Ao salvarem as alteraes realizadas, estas sero gravadas por padro em
um arquivo chamado .config, situado em /usr/src/linux, que ser a base
para que as ferramentas de compilao criem o que ser o novo kernel do
sistema e seus respectivos mdulos.

CONCLUSO
A grande maioria dos erros e complicaes que ocorrem durante e aps a
execuo deste processo encontra-se justamente na configurao de
suportes e parmetros do kernel. A omisso, a incorreta definio ou ainda
a utilizao de parmetros que vo alm do suportado pelo sistema trazem
diversos tipos de inconvenientes, como mau funcionamento, instabilidade,
travamentos, perdas de dados, entre diversas outras ocorrncias
indesejadas, alm da impossibilidade da inicializao do sistema.
Ao realizarem a criao do novo kernel, optem por realiz-las com calma,
tranqilidade e conscincia, as personalizaes necessrias sobre as
definies disponveis, reservando tambm o tempo necessrio para estas
atividades. Teremos menos aborrecimentos com a perda de alguns bons
minutos no desenvolvimento deste processo ter que realizar a restaurao
do sistema, pois de acordo com as anomalias apresentadas, este ltimo
processo poder ser bastante desgastante, no tendo ainda com isto pouco
ou nenhum ganho efetivo. Conforme diz o velho ditado, a pressa inimiga
da perfeio.... &;-D

29/49

V. A

COMPILAO

INTRODUO
Aps o trmino das operaes de ajustes e configurao das opes
disponveis do kernel, chegamos finalmente parte mais importante: a
realizao da compilao propriamente dita.

INICIANDO

A COMPILAO

Para iniciar o processo de compilao, digitem na linha de comando...


# make dep

O comando make dep realizar a checagem das pendncias necessrias e


condicionar o cdigo-fonte para a compilao do kernel.
Caso j tenha sido feito o processo de compilao, deveremos utilizar...
# make clean

... para que seja feito uma limpeza dos arquivos temporrios e de instalao
criados durante a compilao anterior. Apesar de opcional, recomendada
a sua utilizao, pois eliminar quaisquer resduos deixados por outras
compilaes, alm de ser uma operao bastante rpida.

CONSTRUINDO

A IMAGEM COMPACTADA DO KERNEL

Para realizarmos a compilao propriamente dita, deveremos utilizar...


# make bzImage

Este comando realizar a compilao do kernel baseando-se nas definies


previamente realizadas durante o processo de configurao. Dependendo
da capacidade de carga para o processamento, ser necessrio
aguardarmos alguns preciosos minutos para o trmino da operao.
Podemos tambm utilizar os trs ltimos comandos citados neste captulo
em uma nica linha para a construo da imagem compactada do kernel, se
desejarmos. Neste caso necessitaremos digitar apenas...
# make dep clean bzImage

OPO

AUTOMATIZADA

Uma opo interessante disponvel em diversas pginas da Internet para a


compilao do kernel, a utilizao do comando make bzlilo.
# make bzlilo

Este procedimento, ao ser utilizado com o LILO corretamente configurado,


compilar o kernel da mesma forma que make bzImage, porm logo em
seguida os arquivos System.map e vmlinuz sero copiados para o diretrio
30/49

/boot, e o kernel padro anterior ser renomeado para vmlinuz.old. Isso


tudo ser feito de forma automtica, e assim bastar apenas recondicionar
o arquivo de configurao lilo.conf para habilitar o kernel recentemente
compilado como padro.

COMPILAO

E INSTALAO DOS MDULOS

Os mdulos do kernel atualmente em uso se encontram no diretrio


/lib/modules/[VERSO]. Porm, dependendo da escolha do kernel, poder
haver a necessidade de renome-lo de acordo com as necessidades.
Existem 2 pontos importantes para serem analisados:

Se optarmos por suportar os mdulos, alm de marcar diversas


outras opes para suporte como mdulos;

Se o kernel ser compilado uma nova verso ou apenas a


recompilao da verso corrente do sistema.

Se optarmos por no suportar os mdulos (o que algo raro), no ser


necessrio realizarmos a recompilao e reinstalao os mdulos, bastando
apenas no serem executados os comandos make modules e make
modules_install. Caso contrrio, se tivermos optado por compilar uma nova
verso do kernel, no se preocupem com a permanncia dos mdulos
antigos, pois ser criado um novo diretrio com o nomenclatura da nova
verso compilada. Porm, caso tenham preferido compilar o mesmo kernel
corrente do sistema...

SUPORTE

AOS MDULOS EM KERNELS DA MESMA VERSO

Existem 2 opes para serem consideradas:


1.

Renomeando o diretrio que contm os mdulos;

2.

Editando o arquivo Makefile.

Caso optem por utilizar a 1a. opo, deveremos utilizar a sintaxe...


# mv /lib/modules/[VERSO]/lib/modules/[NOVA_NOMENCLATURA]

Mantenham as definies da verso do diretrio antigo, acrescentando


apenas alguns caracteres para facilitar o entendimento em futuras
consultas:
# mv /lib/modules/2.4.16 /lib/modules/2.4.16-original

Aps isto, retornem ao diretrio padro do cdigo-fonte do kernel para que


possamos dar continuidade ao processo.
# cd /usr/src/linux/

A recomendao que utilizem a 2a. opo: editando o arquivo Makefile.


Este Makefile se encontra presente no diretrio /usr/src/linux, onde a
modificao necessria dever ser feita com a criao de um parmetro
especial na seo Extraversion. Vejam o exemplo abaixo:
31/49

VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION =
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

Bastar acrescentarmos o parmetro na linha do Extraversion aps o sinal


=. Ficar ento assim:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -[NOMENCLATURA_ESPECIAL]
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

A executar o comando make modules_install, ser criado o diretrio com a


nova nomenclatura para armazenamento dos mdulos neste caso, o
diretrio /lib/modules/2.4.20-[NOMENCLATURA_ESPECIAL] .
Novamente reforando, utilizem a 2a. opo, pois caso algo no d certo,
ser necessrio reiniciar a mquina com o kernel antigo. Se vissemos
utilizar o mtodo anterior, a inicializao no encontrar os antigos
mdulos do sistema, j que eles estariam em um diretrio diferente
(renomeado).

INICIANDO

A COMPILAO

Para concluir a compilao do novo Kernel, basta agora executarmos os


comandos necessrios para iniciar a compilao dos mdulos.
# make modules
# make modules_install

O comando make modules construir os mdulos necessrios de acordo


com as especificaes feitas durante a configurao da compilao do
kernel. J o comando make modules_install instalar os mdulos para o
diretrio /lib/modules/[NOVA_VERSO]-[EXTRA_VERSO] .
O processo de compilao dos mdulos tambm um pouco demorado,
dependendo da capacidade do processador da quantidade de memria
disponibilizada; haver necessidade de um pouco de pacincia. Ento
aproveite novamente o momento e vo esticar um pouco as pernas e tomar
um bom caf! &;-D

AJUSTES
COPIANDO

NECESSRIOS
A IMAGEM DO KERNEL

Aps a compilao do kernel, ser criada uma imagem do kernel em


/usr/src/linux/arch/i386/boot/bzImage. Devemos copi-la para o diretrio
raiz e renome-la da seguinte forma:

32/49

# cd /
# mv /usr/src/linux/arch/i386/boot/bzImage
# mv bzImage vmlinuz-[VERSO_ATUAL]

Em caso da necessidade de manter mltiplas verses compiladas,


deveremos renome-lo para a data atual, para que possamos ter um melhor
controle sobre as verses personalizadas do kernel. Observem que no
poderemos utilizar espao entre os caracteres para a atribuio do novo
nome do arquivo.
Utilizando a linha de comando, ficar assim:
# mv bzImage vmlinuz-[VERSO_ATUAL]-[DATA_ATUAL]

Uma boa dica utilizar o formato [ANO-MS-DIA] (p. ex. 2003-31-01) como
padro, para um melhor controle. Muitos utilizam o formato [MS-ANO]
(jan-2003) ou [DIA-MS-ANO] (31-01-2003), mas ao visualiz-los em
qualquer gerenciador de arquivos, a tendncia que fique fora de ordem
cronolgica, podendo enganar os usurios mais despercebidos.

ALTERANDO

A CONFIGURAO DO

LILO

Edite o arquivo /etc/lilo.conf e veja a seo Linux bootable partition


config:
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda5
label = Linux
read-only
# Linux bootable partition config ends

Aps o termo read-only, pulem uma linha e adicionem os seguintes cdigos


para disponibilizarmos uma nova opo de kernel para o sistema. No
exemplo abaixo, ficaria da seguinte forma:
image=/boot/vmlinuz-[DATA_ATUAL]
root=/dev/hda5
label=[NOME_DO_KERNEL_PERSONALIZADO]
read-only

O novo escopo do arquivo de configurao do LILO dever ser editado para


que fique desta forma:
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda5
label = Linux
read-only
image=/boot/vmlinuz-[DATA_ATUAL]
root=/dev/hda5
label=[NOME_DO_KERNEL_PERSONALIZADO]
read-only
# Linux bootable partition config ends

importante notar que a nomenclatura adotada para o novo kernel (label


= [NOME_DO_KERNEL_PERSONALIZADO]) no poder ter espaos.
33/49

Se preferirem, o arquivo boot_messages.txt poder ser alterado para que


este exiba a nova opo de kernel disponibilizada, apesar que as opes
estaro presentes no menu principal do utilitrio.
Welcome to the LILO Boot Loader!
Please enter the name of the partition you would like to boot
at the prompt below. The choices are:
Linux
[NOVO]

- Linux (Linux native partition)


- [DADOS_SOBRE_O_NOVO_KERNEL_COMPILADO]

Basta apenas rodar o LILO para que sejam aceitas as alteraes efetuadas:
# lilo
Added
Linux *
[NOME_DO_KERNEL_PERSONALIZADO]

Observem que, ao utilizarmos mltiplas opes de inicializao para


kernels de mesma verso, estes utilizaro o mesmo diretrio
/lib/modules/[VERSO], o que poder ocasionar problemas tais como
incompatibilidade ou falta de mdulos. Para isto, consultem o captulo
Circunstncias especiais -> Mantendo mltiplas verses personalizadas do
kernel para conhecerem a aplicao de melhores tcnicas e procedimentos.

CONCLUSO
A realizao do processo de compilao, apesar da necessidade de ter
ateno alguns aspectos e outras intervenes necessrias, um processo
relativamente simples e fcil de gerenciar. O maior incmodo que
poderemos encontrar em sua realizao ser a possvel demora do
andamento do processo: a atividade poder demandar um certo tempo e,
dependendo da carga de processamento do computador, exigir bastante
da CPU, da memria, alm de um bom espao disponvel no disco rgido.
Estejam atentos nas ocorrncias e informaes exibidas na tela de vdeo,
pois a incidncia de erros e falhas durante a operao. Tendo em mo estes
dados, poderemos analisar uma depurao mais eficiente da ocorrncia
encontrada e assim corrigir e/ou encontrar a soluo desejada. Tendo todas
as opes de configurao ajustadas corretamente (no captulo
Configurao de suporte e parmetros), o desenrolar do processo seguir
sem maiores problemas. &;-D

34/49

VI. MANIPULAO

DE MDULOS E PENDNCIAS

INTRODUO
Os mdulos do kernel so componentes que auxiliam a interao do kernel
com os dispositivos do sistema. grosso modo, poderemos dizer que eles
nos sistemas GNU/Linux possuem funes eqivalentes aos drivers do
tradicional Windows. Neste captulo iremos conhecer as principais
ferramentas para a sua manipulao, bem como seus recursos e mtodos
de utilizao para o bom aprendizado e obter melhor aproveitamento nas
atividades de administrao e manuteno do kernel e respectivos mdulos.

AS

FERRAMENTAS...

LSMOD

A funo do comando lsmod listar os mdulos que se encontram


carregados no sistema. Para uma utilizao simples e rpida basta digitar...
# lsmod
Module
lp
apm
usb-storage
radeon
parport_pc
parport
uhci
usbcore
emu10k1
ac97_codec
usbcore
soundcore
emu10k1-gp
gameport
ide-scsi
# _

Size
6752
9608
65536
96932
14724
23264
24560
58144
61288
9512
58400
3332
1352
1452
8048

Used by
Not tainted
0 (unused)
0 (unused)
0 (unused)
0
1
1 [lp parport_pc]
0 (unused)
1 [uhci]
0
0 [emu10k1]
1 [usb-storage uhci ehci-hcd]
4 [emu10k1]
0 (unused)
0 [emu10k1-gp]
0

Por possuir uma sintaxe bsica, sua sada tambm bastante simples, onde
ser apresentada uma listagem de todos os mdulos carregados no sistema.
MODPROBE

O responsvel pelo carregamento dos mdulos disponveis no sistema.


Sintaxe:
# modprobe [MDULO]

Para este comando existem parmetros e funcionalidades extras, porm na


maioria das vezes apenas o utilizaremos para o carregamento de mdulos.

35/49

Por exemplo, para carregar os mdulos USB para habilitar um mouse


USB...
# modprobe usbmouse

INSMOD

Da mesma forma que modprobe, carrega os mdulos disponveis do


sistema.
Sintaxe:
# modprobe [MDULO]

Porm, sua diferena est no fato de que o modprobe carrega as


pendncias necessrias para o funcionamento do mdulo, ao passo que o
insmod to somente carrega o mdulo. Veja um exemplo prtico (apenas
para demonstrao):
# insmod usb-storage
Using /lib/modules/2.4.22/kernel/drivers/usb/storage/usb-storage.o.gz
# _

Para certificarmos de que foi corretamente carregado...


# lsmod | grep usb
usb-storage
usbcore
# _

65536
58400

0
1

(unused)
[usb-storage uhci ehci-hcd]

Em algumas circunstncias poder ser necessrio um carregamento


forado de um determinado mdulo. Para isto utilize...
# insmod -f [MDULO]

Isto ocorre muito quando h necessidade de carregar um mdulo


compilado de uma verso diferente do kernel. Apesar desta operao no
ser recomendvel, poder ser a nica sada para diversas situaes &;-(
DEPMOD

O comando depmod utilizado para checar as pendncias dos mdulos,


onde estas so verificadas em /etc/init.d.
Sintaxe:
# depmod [PARMETROS]

Onde:

depmod
-a Checa as pendncias de mdulo necessrias pelo kernel.
-b Define o caminho de um mdulo especfico que no esteja armazenado
no diretrio padro (/lib/modules/[KERNEL]/ ).
-e Verifica se determinado mdulo compatvel com o kernel em uso.

36/49

Para realizarmos uma simples checagem, deveremos utilizar...


# depmod -a

Os resultados deste comando so armazenados em um arquivo-texto


chamado modules.dep, situado em seu diretrio padro.
MODINFO

Exibe informaes bsicas sobre determinados mdulos.


Sintaxe:
# modinfo [PARMETROS] [MDULO]

Onde:

modinfo
-a Exibe o autor.
-d Exibe um breve resumo.
-l

Exibe a licena.

-p Exibe parmetros especficos.


Exemplo:
# modinfo -d /lib/modules/2.4.22/kernel/drivers/hotplug/pci_hotplug.o.gz
"PCI Hot Plug PCI Core"
# _

Experimentem os demais parmetros e vejam os resultados.


RMMOD

Sem grandes mistrios, o comando rmmod serve unicamente para


descarregar um determinado mdulo do sistema.
Sintaxe:
# rmmod [MDULO]

Lembrem-se de que estaremos apenas DESCARREGANDO o mdulo da


memria, e no EXCLUINDO-O. Poderemos ento ficar sossegados... &;-D
Segue um simples exemplo para descarregar o mdulo responsvel pelo
acesso s memrias flash (Pendrive):
# rmmod usb-storage

MANIPULAO

MANUAL

Em muitos casos so disponibilizados mdulos pr-compilados de


determinados dispositivos, onde os mesmos devero ser ativados
manualmente para que o sistema possa reconhec-lo. Exemplos tpicos de
perifricos que necessitam de ter tais mdulos so os softmodens.
37/49

Para realizarmos esta operao, deveremos inicialmente obter o mdulo


(lgico), onde este dever ter uma extenso .o ou .o.gz no final de sua
nomenclatura. Em seguida, deveremos copi-lo para o diretrio-padro do
sistema. Neste caso, o endereo-destino ser...
# cp [MDULO] /lib/modules/[VERSO_DO_KERNEL]/kernel

Em seguida, para ativarmos deveremos evocar o comando modprobe...


# modprobe /lib/modules/[VERSO_DO_KERNEL]/kernel/[MDULO]

Por ltimo, bastar apenas atualizar a listagem de mdulos do sistema.


Utilizem na linha de comando...
# depmod -a

Incluam o comando modprobe e sua sintaxe no arquivo /etc/rc.modules


para que este mdulo esteja sempre disponvel a partir da inicializao.

ARQUIVOS

DE CONFIGURAO

LOCALIZAO

PADRO DOS MDULOS

Os mdulos encontram-se localizados por padro no diretrio...


$ ls -l /lib/modules/[VERSO]/kernel/
total 5
drwxr-xr-x
3 root
root
drwxr-xr-x
2 root
root
drwxr-xr-x
24 root
root
drwxr-xr-x
23 root
root
drwxr-xr-x
3 root
root
drwxr-xr-x
21 root
root
drwxr-xr-x
11 root
root
$ _

72
432
592
656
112
528
264

2003-08-28
2003-09-02
2003-08-28
2003-09-02
2003-09-02
2003-08-28
2003-08-29

17:08
23:03
17:08
23:03
23:03
17:08
04:39

arch/
crypto/
drivers/
fs/
lib/
net/
sound/

Cada subdiretrio armazena cada um de acordo com sua categoria.

SOBRE

O ARQUIVO

/ETC/RC.D/RC.MODULES

Todos os mdulos, para serem carregados diretamente na inicializao do


sistema, devero estar especificados no arquivo /etc/rc.d/rc.modules, onde
normalmente basta apenas descomentar os comandos abaixo descritos para
carreg-los.4 Para obterem maiores informaes, consulte a 2a. Parte:
Conhecimentos Gerais -> Inicializao.

CONCLUSO
Os mdulos do kernel esto entre as maiores fontes de insucesso na
4

Para facilitar a nossa vida, encontra-se incluso no kernel uma grande quantidade
de mdulos pr-compilados para o suporte diversos perifricos, bastando apenas
descomentar as linhas referentes. Por sua vez, estas linhas esto subdivididas por
vrias sees, os quais facilitaro muito a nossa procura.

38/49

utilizao do novo kernel personalizado. So vrios os possveis erros de


ajustes e configuraes que trazem diversos e inconvenientes transtornos.
Diversos dispositivos e perifricos passam ser suportados de forma
incorreta e instveis ou at mesmo, na maioria dos casos, deixam de ser
suportados, ocasionando tambm o travamento geral do sistema. Este um
dos principais motivos pelo qual merecem ateno especial, onde o
conhecimento de ferramentas e procedimentos so fundamentais para o
sucesso das operaes afins realizadas. &;-D

39/49

VII. CIRCUNSTNCIAS

ESPECIAIS

INTRODUO
Enfim, aps realizarmos todos os procedimentos necessrios para a
compilao do kernel, enganam-se queles que consideram que no h
mais nada fazer. Para provar isto, este captulo prope estudar os
necessrios e possveis ajustes para que seja garantido o perfeito
funcionamento do novo kernel customizado.

KERNEL
MANTENDO MLTIPLAS

VERSES PERSONALIZADAS DO KERNEL

Uma das recomendaes mais importantes para a compilao o kernel


trabalhar com mltiplas verses para um melhor controle das operaes
realizadas, pois quando utilizamos uma nova verso e/ou correo do
kernel, os mdulos compilados sero armazenados em um novo diretrio.
# ls -l /lib/modules/
total 2
drwxr-xr-x
4 root
drwxr-xr-x
4 root
# _

root
root

416 Mar 13 15:36 2.4.18/


416 Set 17 17:20 2.4.20/

Mas se viermos utilizar a mesma verso do kernel corrente? Neste caso,


os mdulos compilados iro sobrescrever os antigos j existentes pelo fato
de utilizarem a mesma nomenclatura da verso.
# ls -l /lib/modules/
total 1
drwxr-xr-x
4 root
# _

root

416 Set 17 17:20 2.4.20/

Para evitarmos este tipo de inconveniente, deveremos editar o arquivo


/usr/src/linux/Makefiles gerado aps a configurao das opes do kernel.
As primeiras linhas deste arquivo fornecem as especificaes para a criao
de uma nova nomenclatura para o novo kernel ser compilado. Deveremos
redefinir uma nova nomenclatura:
VERSION = X
PATCHLEVEL = X
SUBLEVEL = XX
EXTRAVERSION =
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

Levem em conta que nem sempre bom alterar os valores padres de


verso, pois poder haver a necessidade do conhecimento desta em futuras
ocasies.
Prefiram
condicionar
alguns
caracteres
na
opo
EXTRAVERSION para gerar uma nova extenso para a verso j existente.

40/49

EXTRAVERSION = Darkstar

Tambm poderemos alterar o formato desta nova nomenclatura conforme


melhor nos vier. Observem que colocamos um ponto para separar as
informaes de SUBLEVEL para EXTRAVERSION, evitando assim que a
correo fique colada com a nomenclatura extra.
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL).$(EXTRAVERSION)

Agora deveremos dar continuidade ao processo de compilao e, quando


terminarmos de compilar e instalar os mdulos, estes estaro armazenados
em seu respectivo diretrio onde foram definidas a nova nomenclatura.
# l /lib/modules/
total 1
drwxr-xr-x
4 root
drwxr-xr-x
4 root
# _

root
root

416 Set 17 17:20 2.4.20/


416 Set 21 18:42 2.4.20.Darkstar/

Editem o arquivo /etc/lilo.conf e reorganizem as imagens de inicializao,


porm sempre procurem manter a imagem original (obtida durante a
instalao do sistema) e uma entrada no menu para a imagem recm
criada.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=Atual
image=/boot/vmlinuz-2.4.20
label=Original
read-only
root=/dev/hda5
image=/boot/vmlinuz-2.4.20.Darkstar
label=Darkstar
read-only
root=/dev/hda5
image=/boot/bzImage-2.6.0
label=kernel_2.6.0
root=/dev/hda5
read-only
image=/usr/src/linux/arch/i386/boot/bzImage
label=Experimental
root=/dev/hda5
read-only

Neste caso batizamos a nova imagem de Experimental, onde apenas


apontamos para a localizao onde esta foi criada neste caso no diretrio
arch/i386/boot/bzImage do cdigo-fonte do kernel. Caso o procedimento
tenha dado certo, copiem-na para o diretrio padro /boot e renomeiemna conforme os termos utilizados para definir a nova nomenclatura.
Observem que utilizamos como exemplo tanto as verses personalizadas do
41/49

mesmo kernel do sistema vmlinuz-2.4.20.Darkstar quanto uma nova


verso recentemente liberada bzImage-2.6.0.
image=/boot/vmlinuz-2.4.20.Darkstar
image=/boot/bzImage-2.6.0

No existe problema ao utilizar os termos vmlinuz e bzImage. Fica


critrio. Realizamos estas modificaes apenas para melhor exemplificar.
Aps o trmino da edio do arquivo de configurao, executem novamente
o LILO para sejam salvas as alteraes no setor MBR, para que estejam
disponveis na prxima inicializao.
# lilo
Added Original *
Added Darkstar
Added Kernel_2.6.0
Added Experimental

APLICANDO

CORREES AO CDIGO-FONTE DO KERNEL

Devido ao alto grau de evoluo do kernel, os erros encontrados so


rapidamente corrigidos, onde em pouco tempo se encontram disponveis
novas verses destes programas prontos para baixar. Mas o que fazer com
pacotes extremamente grandes, como o caso do kernel?
Ao invs de obtermos a mesma verso do kernel com todas as correes
necessrias, poderemos baixar apenas um pacote especfico com estas
correes, conhecidos popularmente como patches5. Estas correes
atualizam o cdigo-fonte do kernel corrente, deixando-o em dia como a
ltima verso (correo). Baixem a correo do kernel desejado, porm
procure, realizar antes uma cpia de segurana do kernel original.

OS

COMANDOS DIFF E PATCH

Os comandos diff e patch so utilizados respectivamente para comparar


arquivos e modificar as diferenas encontradas entre eles. Este ltimo
utiliza o diff para realizar as devidas mudanas no arquivo original, quando
encontradas as diferenas desejadas.
A aplicao do comando patch bem simples, onde sua sintaxe bsica :
# patch [PARMETROS] [ARQUIVO_ORIGINAL] [CORREO]

Existem diversos parmetros, porm demonstraremos logo abaixo somente


aqueles que sero necessrios para o nosso aprendizado.
Conforme recomendado anteriormente, deveremos realizar uma cpia de
segurana do cdigo-fonte do kernel. Para as distribuies que possuem o
pacote disponvel nos CDs de instalao, esta tarefa faz-se desnecessria.
# cd /usr/src/linux-[VERSO]
# make clean
-//-

Conhecidos tambm como remendo.

42/49

# tar -cvf kernel-[VERSO].tar *


-//# gzip kernel-[VERSO].tar
# mv kernel-[VERSO].tar.gz /usr/src/

Copiem o pacote que contenha o patch dentro do diretrio /usr/src/. Aps


isto, segue a sintaxe do comando, necessrios para atualizar o antigo
kernel:
# patch -p1 -d [PATCH_DO_KERNEL]

Em poucos instantes o comando patch ir atualizar o pacote desejado,


utilizando a correo fornecida. Lembrem-se de que os pacotes devero
estar dentro do diretrio principal onde se encontram os fontes do kernel.
# cd /usr/src/linux-[VERSO]

Caso exista no sistema uma verso muito antiga do kernel, deveremos


aplicar os patches de acordo com a seqncia das verses disponveis. Por
exemplo, para atualizar um kernel da verso 2.4.20 para 2.4.26, deveremos
atualizar de 2.4.20 -> 2.4.21; em seguida de 2.4.21 -> 2.4.22; 2.4.22 ->
2.4.23... e assim por diante at chegar verso desejada. Dem
preferncias em utilizar o cdigo-fonte da verso mais nova do kernel atual
ao invs de aplicar um patch, pois nestas circunstncias a ocorrncia de
erros tender a ser maior.
Para remover uma aplicao do patch, deveremos utilizar...
# patch -R [PATCH_APLICADO]

COMPILAO
COMPILANDO

O CDIGO-FONTE EM OUTROS PROCESSADORES

Em virtude da lentido da utilizao deste processo em computadores


obsoletos, existe a possibilidade da compilao do kernel em mquinas mais
possantes, bastando apenas certificar-se que que as opes que sero
configuradas correspondam mquina o qual se pretende utilizar o kernel
compilado. Para isto, aps a realizao do processo, copiem a imagem do
kernel compilado obtido de /usr/src/linux/arch/i386/boot/ e seus mdulos
referentes de /lib/modules/[VERSO] e transfiram-os para a mquina final,
bastando copi-los para os mesmos diretrios e ajustando os arquivos
/etc/lilo.conf com os novos parmetros de inicializao.

CONFIGURAO
RESTAURANDO

AS DEFINIES ANTERIORES

Infelizmente existiro diversos casos onde o processo de compilao poder


no atender s necessidades dos usurios, e para piorar, ser estritamente
necessrio a reutilizao do kernel anterior para disponibilizar o sistema

43/49

para uso. Inicialmente recomendamos a manuteno das duas verses do


kernel, a original e a customizada, pois caso ocorra quaisquer problema
que impossibilite utilizar o sistema ou funcionalidade dele, poderemos
reinciar o sistema normalmente utilizando a verso original do kernel,
bastando remover as entradas do novo kernel compilado e realizando
novamente o processo de compilao. Executem novamente o menu de
configurao do sistema que contenha a opo para recarregar as
definies anteriores do kernel utilizado. Esta opo somente se encontra
disponvel nos menus habilitados pelo comando make xconfig / gconfig
(Load configuration from file) e make menuconfig (Load an alternative
configuration file). Indiquem corretamente o arquivo de configurao.

CONCLUSO
Alm da aplicao dos mtodos tradicionais de compilao do cdigo-fonte,
existiro muitas circunstncias especficas das quais a grande maioria dos
tutoriais existem no apresentam, ou apresentam informaes incompletas.
Nesta seo apenas abordamos as principais necessidades extraordinrias
referentes compilao do kernel. Caso existam outras circunstncias de
ocorrncia no rara, seremos gratos aos leitores em nos notificar para que
possamos disponibilizar nas prximas verses deste guia as instrues
necessrias para estes eventos. &;-D

44/49

VIII. PROBLEMAS

MAIS FREQENTES

INTRODUO
Enfim, chegamos mais uma (possvel) etapa (embora indesejada) do
processo de compilao do kernel. Trata-se do entendimento e soluo dos
problemas e questes mais freqentes referentes ao processo.
Infelizmente, em conseqncia de uma realizao incorreta das medidas e
intervenes necessrias para a customizao do novo kernel, poderemos
ter diversos inconvenientes que venham comprometer o uso do sistema
operacional. Nesta seo descreveremos as principais anomalias existentes
e algumas dicas para a solucion-las.

RESOLVENDO

PROBLEMAS...

ANTES...
PARMETROS

ERRADOS SENDO DEFINIDOS NA CONFIGURAO

Em alguma circunstncia poderemos ter erros de configurao das opes


do arquivo .config do kernel. Sero exibidas mensagens do tipo...
config: line 128: syntax error

Felizmente sero apontadas as linhas das quais ocorrem o erro, onde uma
simples interveno corretiva com um editor de textos eliminar o
problema.

ERROS

DURANTE A VERIFICAO DE PENDNCIAS COM O COMANDO MAKE DEP

Para evitar que este erro ocorra, deveremos nos certificar de todas as
pendncias necessrias para a compilao do kernel foram atendidas. Para
isto, consultem nesta parte o captulo Preparativos iniciais.

DURANTE...
FALHA

NA EXECUO DOS COMANDOS MAKE BZIMAGE E MAKE MODULES

Em algumas circunstncias teremos talvez a possibilidade da falha de


compilao do kernel ao utilizarmos estes comandos. Isto geralmente
ocorre quando o kernel recompilado diversas vezes e o comando make
clean no realiza uma limpeza eficiente. Caso isto ocorra, repitam os passos
realizados para a checagem das pendncias (make dep) e limpeza dos
arquivos temporrios (make clean); ao final deles utilizem o comando...
make mpromper

45/49

Para se certificarem de que realmente ser feita uma eficiente limpeza,


onde deveremos lembrar de salvaguardar uma cpia de segurana do
arquivo de configurao o .config.
#
#
#
#
#
#
#

make dep
make clean
cp .config /root
make mpromper
make bzImage
make modules
make modules_install

Aps isto, deveremos dar continuidade ao processo normalmente.

DEPOIS...
O

SISTEMA NO INICIALIZA

Isto poder ocorrer por variados motivos; o mais freqente est justamente
na definio de parmetros do gerenciador de inicializao LILO.
Consultem a configurao do LILO e verifique na seo de parties os
parmetros existentes.
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda6
label = Linux
read-only
# Linux bootable partition config ends

Para estas circunstncias recomendada a manuteno do kernel original,


alm do kernel personalizado. Consultem o captulo Circunstncias
especiais para obteremo maiores informaes para proceder.

SISTEMA APRESENTA A MENSAGENS DE ERRO

"UNRESOLVED

SYMBOLS"

Isto ocorre porque algum mdulo do kernel no foi compilado


corretamente. Reiniciem a compilao dos mdulos do kernel novamente,
rodando o comando tail -f nohup.out +<ENTER> para a monitorao do
processo:
#
#
#
#
#
#
#

cd /usr/src/linux
make dep
make clean
nohup make bzImage &
tail -f nohup.out
make modules
make modules_install

Caso estes problemas ocorram novamente, consultem o arquivo nohup.out


gerado para verificar quais foram as anomalias ocorridas.

46/49

KERNEL ENORME
Nestas situaes geralmente o kernel foi compilado com suporte uma
srie de drivers e parmetros desnecessrios. Ao realizarem a configurao
do kernel, procurem habilitar SOMENTE os recursos de dispositivos
suportados (ou que tero necessidade de suportar) pela mquina em uso.
Alm disso apenas definam as opes como Y (Yes embutido) apenas
aquelas essenciais e de uso constante do sistema. As demais devero ficar
como mdulos. Consultem nesta parte o captulo Configurao de suporte e
parmetros para maiores detalhes.

COMPORTAMENTO

ANORMAL DO KERNEL

Entende-se como comportamento anormal travamentos aleatrios, erros de


entrada e sada, performance alterada, entre outras anomalias. Isto pode
ocorrer quando o kernel compilado mais de uma vez, sendo que na ltima
no foi utilizado o comando make clean para realizar uma limpeza geral nas
definies anteriores. Por este motivo recomendamos novamente rodar...
# make clean

... toda vez que realizar uma nova recompilao do kernel.

ALGUMAS

APLICAES NO FUNCIONAM CORRETAMENTE

Isto bastante comum quando da substituio de uma verso antiga do


kernel (2.2.x -> 2.4.x ou 2.4.x -> 2.6.x). Neste caso recomenda-se consultar
a documentao do kernel e verificar quais aplicativos e bibliotecas devero
ser atualizados. Geralmente solicitado uma verso X ou superior.

RECOMENDAES

GERAIS

Segue algumas recomendaes gerais para evitarmos algumas ocorrncias


indesejadas ao processo de compilao do kernel, alm de obtermos os
melhores resultados possveis.

Mantenham sempre a verso original do kernel instalado no


sistema. Caso ocorra algum inconveniente, poderemos reutiliz-lo
para retornar com as configuraes anteriores.

Utilizem sempre a verso estvel e atualizada do kernel. Em casos


especiais optem por utilizar a verso de testes somente se esta
atender propsitos especficos.

Evitem baixar diversos patches para atualizar kernels muito


antigos. Alm da possvel demora, poder ser um processo no
muito seguro. Ser mais seguro baixar um novo kernel.

Outro questo bastante importante a criao de disquetes de inicializao


para a soluo de eventuais problemas. Haver situaes em que a
inicializao do sistema estar impossibilitada, seja por algum erro de
47/49

configurao do LILO ou por qualquer outro.

CONCLUSO
Dentre as possveis causas para diversas anomalias, a errnea definio de
parmetros durante o processo de configurao constitui a maior parte das
ocorrncia de erros durante o processo de compilao do kernel. Esse um
dos principais motivos pelo fato de recomendarmos no captulo anterior
a realizao dessas definies de configurao de forma tranqila.
Caso ocorra algum erro que impea do sistema funcionar ou acarrete o seu
mau funcionamento, inicialmente recomendamos checar o sistema para
descobrir o motivos que o causaram. Ser uma tima oportunidade de
aprendizado desvendar as origens do problemas. No tendo nada mais
fazer, uma boa pesquisa pela Internet ajudar. Caso ainda no consigam
resolver a questo, redijam uma mensagem para uma lista de discusso
especializada no assunto, contando os detalhes pormenores destas
ocorrncias. L com certeza encontraro apoio de outros usurios que
conhecem melhor este problema, onde os mesmos iro propor solues
para este inconveniente. &;-D

48/49

ENCERRAMENTO

<http://br.kernelnewbies.org/>.

Conforme podemos ver, foi dada uma ateno minuciosa para que este
captulo fosse desenvolvido com o objetivo de prover todas as informaes
possveis e necessrias para a realizao deste procedimento com
eficincia, segurana e riqueza de detalhes. Se por algum acaso existirem
informaes especficas e/ou especiais que no se encontrem aqui inclusas,
favor contacte-nos para que possamos atualiz-las.
A realizao de buscas pela Internet interessante e estimula o esprito de
investigao dos usurios, facilitando a assimilao de diversas
informaes. Ao nosso modo de ver, esta a opo mais recomendada. Este
livro foi escrito basicamente utilizando estes recursos: mescla de
conhecimentos adquiridos com consultas diversas endereos eletrnicos
especializados em sistemas GNU/Linux. Mas para dar um pontap inicial,
recomendamos uma visita ao endereo eletrnico abaixo relacionado. L
encontraremos dicas e informaes diversas que nos sero bastante teis.
O kernel dos sistemas GNU/Linux continua sendo ativamente desenvolvido
pela sua equipe, com o apoio de milhares de usurios entusiastas e
corporaes. Graas isto, poderemos contar mais adiante com melhorias
contnuas que por sua vez nos traro benefcios enormes de performance e
estabilidade do sistema. Se no presente o kernel atual nos encanta com
suas caractersticas e qualidades nicas, mal podemos esperar o que ele
nos reserva no futuro. &;-D

49/49

You might also like