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.
O que é necessário
Para se compilar o kernel corretamente são necessários:
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.
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)
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]
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
- 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
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...