Compilação e instalação do kernel 2.6.xx no Slackware

Como configurar e compilar o kernel 2.6.xx sem "traumas". O autor do artigo defende a compilação dos módulos na forma built-in, porém para esse tipo de compilação cada caso é um caso. Aqui veremos como descobrir o hardware que temos na máquina e como escolher os módulos adequados na configuração do kernel.

[ Hits: 40.260 ]

Por: Perfil removido em 17/03/2005


O que é necessário



Para se compilar o kernel corretamente são necessários:
  • Fonte do kernel que será compilado;
  • Informação do hardware da máquina que vai rodar o kernel.

OBS: Todos os passos do processo de compilação são feitos com o root.

A página oficial do kernel é esta:
Aqui o fonte do kernel 2.6.10:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.bz2

Para obter informação do hardware da máquina use o comando:

$ lspci

No meu caso o resultado do lspci é este:

00:00.0 Host bridge: Intel Corp. 82865G/PE/P DRAM Controller/Host-Hub Interface (rev 02)
00:01.0 PCI bridge: Intel Corp. 82865G/PE/P PCI to AGP Controller (rev 02)
00:1d.0 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #1 (rev 02)
00:1d.1 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #2 (rev 02)
00:1d.2 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #3 (rev 02)
00:1d.3 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #4 (rev 02)
00:1d.7 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corp. 82801BA/CA/DB/EB/ER Hub interface to PCI Bridge (rev c2)
00:1f.0 ISA bridge: Intel Corp. 82801EB/ER (ICH5/ICH5R) LPC Bridge (rev 02)
00:1f.1 IDE interface: Intel Corp. 82801EB/ER (ICH5/ICH5R) Ultra ATA 100 Storage Controller (rev 02)
00:1f.2 IDE interface: Intel Corp. 82801EB (ICH5) Serial ATA 150 Storage Controller (rev 02)
00:1f.3 SMBus: Intel Corp. 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 MX 440] (rev a3)
02:02.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
02:02.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
02:03.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 08)
02:03.1 Input device controller: Creative Labs SB Live! MIDI/Game Port (rev 08)
02:04.0 Ethernet controller: 3Com Corporation 3c905 100BaseTX [Boomerang]

A partir dessa listagem o usuário deve anotar o hardware que é efetivamente importante.

Chipset da placa mãe


00:00.0 Host bridge: Intel Corp. 82865G/PE/P DRAM Controller/Host-Hub Interface (rev 02)
00:01.0 PCI bridge: Intel Corp. 82865G/PE/P PCI to AGP Controller (rev 02)

Placa de som


02:03.1 Input device controller: Creative Labs SB Live! MIDI/Game Port (rev 08)

Placa de rede


02:04.0 Ethernet controller: 3Com Corporation 3c905 100BaseTX [Boomerang]

Placa de tv


02:02.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
02:02.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)

OBS: A placa de vídeo não é "tão" importante porque o suporte a ela será feita pelos drivers do X ou pelo driver do fabricante da placa, no meu caso:

01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 MX 440] (rev a3)
é um gforce 4 (nvidia) , e eu instalo o driver da própria nvidia

    Próxima página

Páginas do artigo
   1. O que é necessário
   2. Preparação do kernel
   3. Configuração do kernel
   4. Compilação do kernel
   5. Configuração do lilo
Outros artigos deste autor

Site Survey Plan

Desknotes e Walkpcs

Introduzindo um pouco mais a fundo o shell script

Os Mistérios da Fonte Wingdings do Windows

Conexão wireless ad-hoc no Ubuntu - relato de experiência

Leitura recomendada

Placas NVIDIA com kernel 2.6.8

O kernel do Linux: A definição, importância e funcionalidades

Compilando um novo kernel em distribuições RPM-like

Compilando kernel 2.6 no Slackware 11

Experimento com Linux: Misturando Sabayon com Gentoo

  
Comentários
[1] Comentário enviado por removido em 18/03/2005 - 04:20h

Eu utilizo um processo meio "inverso". Até o lspci/lsusb vai tudo certo mas eu sempre tinha problemas quando tinha de escolher os ítens a serem compilados e alguma coisa ficava de fora e eu dançava.
Agora sigo uma dica nota 10 do Morimoto que é carregar o arquivo de configuração do kernel original existente em /boot e geralmente tem o nome config.não_sei_o_que_lá ou não_sei_o_que_lá.config e partir deste arquivo ir retirando o que não desejo.
Aprendi muita coisa sobre o kernel retirando partes dele que não conhecia e depois vendo no que dava.
A melhor distro até hoje que encontrei para recompilar o kernel foi o fedora e o próprio slackware, sendo que neste último o nome dos dispositivos mudam. Por exemplo: /dev/cdrom deve ser lincado para /dev/sr0 mesmo que tenha um leitor de cd simples ou dvd como meu caso.
==========================
É interessante também que o cidadão salve um arquivo de configuração das mudanças que está fazendo. No make xconfig basta ir em "salvar como" e fazê-lo num local qualquer com o nome que desejar. Caso queira ir avançando na compilação, basta carregar o arquivo onde parou, retirar mais alguma coisa, salvar outro arquivo - de preferência como nome diferente - e recompilar o kernel. Consegue-se assim um ótimo resultado na dieta do kernel.
Outra importante mudança, mais do que retirar módulos ou embutí-los no kernel, é fazer a otimização do mesmo para a arquitetura de seu processador.
Mas ao se fazer esta escolha há uma explicação bem clara lá no kernel de que esta mudança será efetiva na compilação de novos programas. Como já instalamos pacotes pré-compilados para arquitetura i386, NÃO SEI se esta mudança realmente fará alguma diferença com os já instalados. Quem tiver alguma experiência nesta parte poderia dizer aqui...
======================
É bom deixar sempre um módulo extra compilado para algum recurso alternativo por exemplo: os módulos da placa realtek (caso tenha alguma de reserva em casa) se a sua der problemas; o driver de uma placa de som de reserva também (na minha casa, tenho uma realtek e um som c-media para qqr eventualidade).
Para vcs terem uma idéia, quando instalei uma placa usb via slot pci não consegui carregar o módulo ohci. Depois de muita cabeçada percebi que tinha desabilitado o mesmo na compilação pois só usava os uhci (chipset VIA) e o ehci (usb 2.0). Resultado? Tive de recompilar tudo de novo...
Tem certas coisas que realmente NÃO se deve abrir mão mesmo que não se tenha instalado...
O problema da otimização do kernel é justamente a perda do horizonte amplo para hardware que se tem...
======================
É isso aí, o artigo tá muito claro e fornecendo mais informações a cada dia que passa...

[2] Comentário enviado por pflynn em 18/03/2005 - 11:45h

Um comentário simples, relativo a opção High Memory Suport: essa opção deve ser ativada também por quem possui 1 GB de memória, e não apenas para quem tiver mais de 1 GB de memória, caso contrário, o kernel não vai reconhecer todo o 1 GB.

[3] Comentário enviado por ygorth em 18/03/2005 - 11:45h

Legal o artigo e muito legal o comentario do acvsilva, vou suar hoje pra compilar.

[4] Comentário enviado por removido em 18/03/2005 - 11:53h

e o diretório /usr/src/ linux-XXX-ZZZ é possivel apaga-lo após termos criado o arquivo de imagem e compilados todos o módulos?

[5] Comentário enviado por hdoria em 18/03/2005 - 13:37h

# lspci | grep audio
00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 50)

Se eu coloco como built-in .. o alsaconf não detecta minha placa.
Qdo coloco como modulo, o alsaconf detecta minha placa normalmente, porém qdou dou o alsamixer eu tenhgo esse erro:


$ alsamixer
alsamixer: function snd_ctl_open failed for default: No such file or directory

Não consigo usar outro mixer também.

E ta assim no kernel:

<*> Sound card support

ADVANCED LINUX SOUND ARCHITETURE:
<*> Advanced Linux Sound Architecture
<*> Sequencer support
< > Sequencer dummy client
<*> OSS Mixer API
<*> OSS PCM (digital audio) API
[*] OSS Sequencer API
[ ] Verbose printk
[ ] Debug

Minha placa:

<M> VIA 82C686A/B, 8233/8235 AC97 Controller


Sabe o que pode estar errado?






[6] Comentário enviado por infoman23 em 19/03/2005 - 10:07h

Discordo com alguns pontos cruciais do artigo. Olhem o link abaixo e vejam o que o próprio Linus diz sobre essa questão de utilizar o diretório /usr/src:

http://uwsg.iu.edu/hypermail/linux/kernel/0007.3/0587.html
ou leia o próprio README que acompanha o kernel src (2.6.x)

E outra questão, o System.map do kernel foi parar aonde?

[7] Comentário enviado por flavioc em 20/03/2005 - 20:22h

Eu compilei o kernel no 2.6.10 no meu Mandrake 10.1 community. Ta tudo funcionando e em cima.

[8] Comentário enviado por leucas em 20/03/2005 - 22:42h

discordo tbm em muitos aspectos do seu artigo...

a exemplo do link simbolico em /usr/src... ele nao precisa ser mais utilizado na serie 2.6

[9] Comentário enviado por infoman23 em 21/03/2005 - 03:14h

Não é que não precisa usar o /usr/src. Não se DEVE utilizar o /usr/src. Leia o link que mencionei acima!

[10] Comentário enviado por removido em 21/03/2005 - 07:11h

já ví trocentos artigos sobre compilação de kernel ...
cada um diz uma coisa diferente ...
no próprio readme do kernel 2.6.10 os procedimentos são diferentes
do que o a "maioria" faz ....
bem ... não sou especialista em compilação do kernel ...
o que eu digo no texto é o que eu fiz no meu slack e funcionou ....
está certo ???... está errado ???.... os "especialistas" que o digam ....
o que sei é o seguinte : o que eu digo no texto funcionou comigo ... portanto :
os que seguirem o texto e tiverem sucesso : excelente ... se não tiverem sucesso : aqui no vol tem muitos outros textos ... leiam os outros ....

:0)

[11] Comentário enviado por infoman23 em 21/03/2005 - 11:38h

Pois seu procedimento está, em parte, incorreto!
Não substituindo o System.map pelo do novo kernel, alguns softwares podem apresentar problemas, como o dosemu.
A questão do /usr/src, você leu o link que mencionei no comentário acima? O "especialista" (Linus) disse que está incorreto...

[12] Comentário enviado por agk em 21/03/2005 - 20:09h

Parabéns Megatron seu artigo está excelente, partindo do princípio de colocar só hardaware que você possui que eu consegui fazer um kernel da série 2.6.x funcionar 100% com a minha placa A7N8X-X chitpset Nfornce2, placa de video radeon 9200se 128mb, placa de tv bttv series.
Agora estou plenamente satisfeito com meu linux e ainda por cima aumentou muito a performance do sistema, que, antes era muito inferior ao windows por causa das "configurações genéricas" que vem na maioria dos kerneis (não sei se é assim que escreve) das distribuições linux.
[ ]'s a todos.

[13] Comentário enviado por removido em 21/03/2005 - 20:51h

novamente devo dizer : o que eu digo no texto é o que eu fiz na minha máquina ..
e funcionou perfeitamente pra mim ....
se o procedimento que eu fiz e que deu certo pra mim está "errado" , então deixa eu ser "errado" que estou muito feliz ....
entendam , o texto é relativo a algo que eu fiz em minha máquina e funcionou pra mim .... outras receitas de compilação de kernel , que os "especialistas" diriam ser "corretas" , não funcionaram comigo ...
portanto : tirem suas próprias conclusões e façam o que acharem "correto" ....
:0)

[14] Comentário enviado por vandeco em 01/06/2007 - 21:53h

po entao galera voçes poderiam me maandar alguma coisa no meu e-mail por que to sem tempo

[15] Comentário enviado por xkillerrx em 12/11/2010 - 10:02h

Ola, o seu site www.planetacybertron.cjb.net esta fora do ar ?

[16] Comentário enviado por removido em 12/11/2010 - 10:11h

exato , minha página não existe mais


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts