Recompilando o Kernel

Um simples artigo tentando explicar como recompilar o kernel a partir de seus fontes. Usa LILO como gerenciador de boot.

[ Hits: 24.897 ]

Por: Bruno Morato Barberis em 05/12/2007 | Blog: http://k33p.webng.com/


Kernel passo a passo



(02) Kernel passo a passo

Baixando os fontes:

É esse tem que ser o primeiro passo. Você pode pegar direto do seu cd-rom ou se preferir outra versão do kernel vá até www.kernel.org e baixe.

Descompacte ele no dir /usr/src/ e crie o link "/usr/src/linux", onde por padrão ficam armazenados os fontes do kernel.

# cd /usr/src/linux

Tá, estamos dentro do /usr/src/linux.

NOTA: Existe uma pasta chamada "Documentation", seria interessante ler ela toda, mas enfim, duvido que você venha a fazer isso, afinal levaria muito tempo. (rs)

Configurando:

Existem três formas para configurar o kernel.
  • Modo texto "make config";
  • Utilizando menus "make menuconfig";
  • Modo gráfico "make xconfig".

Dependendo da escolha vai ser a mesma surpresa: Nossa, que diabos é isso?

O usuário que está recompilando o kernel deve conhecer bem o equipamento, caso ele remova alguma opção do kernel como suporte a IDE, por exemplo, o sistema não voltará a funcionar se o HD for IDE.

Também é muito importante conhecer o comportamento do kernel referente aos seus módulos (drivers).

É possível utilizar esses módulos de duas maneiras:
  • Modular: Somente carrega o módulo quando este for requisitado pelo sistema operacional.
  • Embutido no kernel: Esse estará carregando desde o momento de carga do OS.

Basta teclar:

< M > Módulo < Y > para incluir < N > para remover

Tá, você agora já deixou daquele jeitinho seu novo kernel.

Lembrete: não vá esquecer de escolher o sistema de arquivos em built-in, senão vai dar em kernel panic.

Feito suas alterações, *Just* "Save and Exit".

Vamos queimar o kernel agora (compilar).

Agora deve-se criar as dependências com os arquivos fontes e remover todos os objetos de compilação anteriores.

NOTA: Ao recompilar um kernel da série 2.4 é necessário rodar também o comando "make dep", que verifica a cadeia de interdependências do kernel.

Para fazer isso digite:

# make clean
(serve para limpar configurações anteriores)

O tempo de compilação varia de máquina para máquina e da quantidade de módulos que se adicionou ao kernel. Quanto menos módulos o kernel tiver, mais rápido ficara o seu sistema, tanto no boot como no uso.

# make bzImage
(este é o comando que vai gerar o executável principal do kernel, o arquivo que vai na pasta /boot)

# make modules
(compila todos os componentes marcados como módulos)

# make modules_install
(instala os módulos na pasta "/lib/modules/")

NOTA: É recomendável renomear o diretório /lib/modules/versão_do_kernel para /lib/modules/versão_do_kernel.old, isto será útil para restauração completa dos módulos antigos caso alguma coisa dê errado).

Você pode ter mais de 1 kernel. Então se quiser manter o outro (caso venha acontecer algum desastre):

Copie a imagem do diretório ../linux/arch/i386/boot/bzImage para o diretório /boot:

# cp ../linux/arch/i386/boot/bzImage /boot/meu-novo-kernel

Página anterior     Próxima página

Páginas do artigo
   1. Breve introdução
   2. Kernel passo a passo
   3. Chegou a hora do Lilo
   4. About
Outros artigos deste autor

Guerra Santa

Leitura recomendada

Compilação de Kernel baseado na versão 2.6 para o LTSP 4.2

Kernel atualizado no Debian - Parte II

O kernel Linux está inchado... Mas, calma, não é bem assim!

Compilação do Kernel Linux para máquinas locais Debian

OpeniBoot - Seu iPhone com Linux!

  
Comentários
[1] Comentário enviado por tenchi em 05/12/2007 - 14:09h

Embora já existam muitos tutoriais aqui mesmo no VOL tratando do assunto, este foi um bom texto, pois abordou de forma explicativa para quê serve cada passo ;-)

Só acrescento algumas informações:
- Desde o kernel 2.6.11 (acho) o comando xconfig não abre mais um programa que usa a innterface Tk, mas agora usa Qt, o que exige que o usuário tenha esta lib instalada no sistema.
- Há outro configurador gráfico, que usa interface gtk+, que pode ser chamado pelo comando make gconfig
- Não é obrigatório renomear a pasta antiga dos módulos do kernel. Basta só compilar o novo kernel com um "nome" diferente. Para isso, basta modificar o arquivo Makefile. Fica legal além de "bonitinho" ;-)


[2] Comentário enviado por SMarcell em 05/12/2007 - 15:09h

Legal o artigo! Ainda me lembro da primeira vez que tentei compilar o kernel aqui no meu Slack, nossa apanhei que nem cachorro sem dono! mas após tentativas e mais tentativas consegui, e hoje compilar um kernel pra mim é a coisa mais natural do mundo. Só pra constar:
- Meu Slack com kernel compilado todo bacaninha, sobe em menos de 20 segundos!

[3] Comentário enviado por gnomo_dead em 05/12/2007 - 16:24h

"O kernel é o sistema operacional"
Parei de ler por aqui

[4] Comentário enviado por Brunonormandia em 05/12/2007 - 18:15h

dúvida:
tenho um kernel que baixei aqui há algum tempo. Mas por ter trocado de máquina gostaria de saber: posso usar o mesmo kernel ou tenho de baixar ele em nova arquitetura outra vez?

outra dúvida: é possível eu recompilar o kernel trocando no caso de arquitetura do slack sem mandar meu sistema pro saco?

off:SMarcell menos de 20 segundos mesmo??? no meu pc que tá bem potente gasta na média de 30 segundos!!

[5] Comentário enviado por elgio em 05/12/2007 - 18:48h

Oi gnomo_dead:

O que tem de errado com a frase "O kernel é o Sistema Operacional".

Consideras equivoca esta afirmação?
Eu considero-a corretíssima dentro do conceito científico do que é um Sistema Operacional.

[6] Comentário enviado por fco em 06/12/2007 - 00:18h

Ótimo artigo!!!

Para os que ainda não fizeram... compilem!!!

SMarcell -> o meu também!!! Hehehhehehhehe....

gnomo_dead -> desculpa, mas você foi bem infeliz.... Pense! Antes de dizer bobagem.

[7] Comentário enviado por k33p em 06/12/2007 - 02:32h

<<!

ah sim obrigado pelo complemento! tenchi

- Não é obrigatório renomear a pasta antiga dos módulos do kernel. Basta só compilar o novo kernel com um "nome" diferente. Para isso, basta modificar o arquivo Makefile. Fica legal além de "bonitinho" ;-)

# cd /usr/src/linux/
vim Makefile
----------------(exemplo)
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 21
EXTRAVERSION = -5rc01
NAME=nome_do_kernel
----------------:wq

fazer isso é bem mais util tbm concordo..

>>!

ah e desculpe usar o termo "kernel é o sistema operacional [Linux]".
deveria ter me referido a ele. como o nucleo.. do sistema operacional GNU!

um kernel para 386 funcionará em todas as máquinas suportadas pelo Linux.

http://correrianaesquina.wikidot.com/kernel-linux-embarcado

ah sim a quem estiver recompilando o kernel, pela primeira vez.. eu recomendo somente alterar a arquitetura.. e mais a frente ir aprimorando e entendendo as opções... não se preocupe em receber um kernel panic.. afinal faz tudo parte do aprendizado... melhor errar e aprender.. do que nunca tentar..

"nunca deixe de marcar o tipo de sistema de arquivos que vai usar.. tip: ext3, ext2, xfs etc.."

E0F-

[8] Comentário enviado por hugoalvarez em 06/12/2007 - 14:40h

Bom artigo principalmente para você autor, que por muitas vezes vai poder consultá-lo como fonte de referência, ora ou outra eu faço isso com os meus também.

Não considere minhas palavras uma critica negativa, nos próximos artigos tente ser mais detalhista, eu parei de publicar minhas dicas e passei a armazená-las somente para consultá-las quando necessário depois que parei para analisar algo que me disseram.

Isso também não é uma crítica ao site:

"Antigamente o vivaolinux era o melhor de site linux do país, hoje é um grande armário de receitas para os mais diversos tipos de bolo sem nenhum estudo de como esses bolos foram feitos, eles apenas alteram ou copiam outras receitas mais antigas"

Quem me disse isso foi um amigo que eu sempre respeitei mto no mundo linux, e parei para pensar, o que ele disse é verdade!!!

Se eu fosse um leigo executando os passos do seu artigo provavelmente teria sucesso, mas o que são todas aquelas opções que aparecem ao executar o make menuconfig?

Nem faço idéia, só sei que se eu mexer é perigoso!!! dizem que eu posso até danificar meu hardware, é melhor não arriscar!!!

Até aí em cima era uma opinião, agora é a parte da crítica, só duas:

1. Indique a seus usuarios a utilização do lspci para eles listarem o hardware e poderem saber o que ativar ou não,

2. Ao invés de colocar a frase cuidado ao alterar essas opções pois, você pode parar o funcionamento de seu LINUX, isso está escrito em 99% das receitas de bolo, estude a funcionalidade de cada uma das opções por exemplo Code maturity level options, e após saber para que ele serve escreva em seu artigo, concluindo esse estudo você terá ajudado muito mais quem realmente quer aprender, pois, se você não estudou para que serve essa opção por exemplo, o usuário que está utilizando o seu artigo com certeza também não vai estudar.

Por enquanto é isso, não se preocupe com os pontos dos artigos e sim com seu próprio conhecimento, escrever artigos é uma forma de praticar o que você já sabe, continue assim e não se chateie comigo ou pelas minhas palavras.

Não perca a magia e o gosto que você tem pelo vivaolinux como eu perdi!!!

Depois que me mostraram esse ponto de vista de um angulo diferente passei a raramente visitar o vivaolinux.

Na próxima você acerta.

Até mais.


[9] Comentário enviado por k33p em 06/12/2007 - 15:23h

Bem entendi suas criticas estão corretas..
porem fui claro no fato de ser um "artigo.. teste" ou melhor dizendo simples, não fui completo nas explicações queria mais dar uma introdução "muito breve.." pois afinal existem diversos artigos ótimos aqui no viva o linux.. falando sobre o kernel..

se fosse descrever para que serve cada opção introduzida no kernel esse artigo iria me consumir muito tempo. sabe ate tenho interesse em fazer, algo assim.. mas só com ajuda de outros membros.. iria ser possivel..

realmente meu artigo ficou um tanto incompleto, para aqueles que procuram realmente ajuda...

[10] Comentário enviado por Laís OLiveira em 06/12/2007 - 21:58h

Sistema Operacional = Linux
Kernel = Linux
logo, Sistema operacional = kernel
(y)
Parabéns pelo artigo! (lê-se sarcasmo aqui =])

[11] Comentário enviado por k33p em 07/12/2007 - 00:00h

correto. Laís

[12] Comentário enviado por gnomo_dead em 09/12/2007 - 19:34h

Bom caras, oq eu quis dizer em meu comentário foi o seguinte, vc não pode jamais chamar um kernel de Sistema Operacional, pq seu sistema nunca será operacional somente com um kernel, o kernel eh sim a parte mais importante do S.O., mas soh com ele vc nunca vai conseguir operar o sistema, por isso q no GNU/Linux por ex. existem todas as parafernalhas da GNU pra q vc possa ter um sistema operacional, então o Kernel não eh o Sistema Operacional, pq o S.O. eh um conjunto de ferramentas, o kernel eh apenas um programa q se comunica com o hardware da máquina...
Então escolha bem suas palavras ao se referir a um Sistema Operacional.
Repito, o Kernel não eh o Sistema Operacional, ele faz parte de um.

[13] Comentário enviado por elgio em 10/12/2007 - 09:48h

Oi gnomo_dead!

Eu realmente odeio estas polêmicas tão úteis quanto discutir a cor da asa do TUX.

Esta polêmica se deu porque tu ironizou o comentário do autor deste artigo como se ele tivesse falado a maior bobagem do mundo.

Como isto é "quase" um mero jogo de palavras onde o contexto é muito mais importante que uma definição solta, ambos estão certos. Para o usuário um SO é um todo, com suas aplicações. Mas isto não dá o direito de rotular como "bobagem" a definição de que o kernel é o SO.

[14] Comentário enviado por tenchi em 12/12/2007 - 15:56h

Elgio, você está errado. A asa do Tux não é nem uma nem outra cor. Na verdade depende do ângulo que você olha. Isso vem do fato de as asas dos pingüins conterem uma substância chamada...hauahau

Gente, querem uma definição do que o Linux realmente é?

Linux is a free Unix-type operating system originally created by Linus Torvalds with the assistance of developers around the world. Developed under the GNU General Public License , the source code for Linux is freely available to everyone.

Retirado de: http://www.linux.org/

Ali diz que o Linux é um sistema operacional, que é o que o Linux é. Mas um sistem aoperacional não consegue se comunicar sozinho com o usuário - só Chuck Norris e o Capitão Nascimento conseguem tal façanha ;-). Aì entram toda a parafernália dos gerenciadores de boot, interpretadores, etc, que fazem parte do projeto GNU.

Prova disso é que nos primeiros segundos do boot - antes de o init ser executado - temos só a presença do Linux. Tanto que normalmente é nessa hora que acontece o kernel panic.

E essas discussões não levam à nada, como sempre.

[15] Comentário enviado por luan tavares em 22/12/2007 - 19:19h

o Artigo esta bom apesar de conter alguns erros.

[16] Comentário enviado por asdf2 em 29/12/2007 - 22:44h

uma correção:

Sistema Operacional = GNU
Kernel = Linux
logo, Sistema operacional = GNU/Linux

esse é o correto pois pode exister outros "kerneis" para o GNU, exemplo:

GNU/BSD = sistema GNU com kernel BSD

GNU/HURD = sistema GNU com kernel HURD

[17] Comentário enviado por drash em 03/01/2008 - 19:28h

?comentario=Opa tuto mais facil que eu axei ate agora pra compilar o kernel!
sou neebi e ajudou muitoo
vlw!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts