desvendando o misterio de "recompilar o Kernel"

Iniciado por ph_swordman, 07 de Agosto de 2009, 14:30

tópico anterior - próximo tópico

ph_swordman

cara e o seguinte...
eu criei um topico aki mesmo no forum... falando dos problemas q encontrava na hora de recompilar um kernel
http://ubuntuforum-br.org/index.php/topic,54465.0.html
e o Usuario Coruja...  me enviou este link
http://www.vivaolinux.com.br/artigo/Compilando-Kernel-do-Linux-no-Debian

a partir deste link fiz uma otima busca de tutoriais... q realmente me satisfazeram em minhas duvidas cara...(muito obrigado coruja)
masss nenhum tutorial me satisfez por completo... entaooo
resolvi juntar tudo o q pode sanar minhas duvidas num tutorial aki ... tipo.. lembrando q nao fiz nenhum desses tutoriais... nem quero o credito deles.. apenas facilitar a vida de outros usuarios...

a primeira parte foi retirada deste link : http://www.vivaolinux.com.br/artigo/Destrinchando-um-PC-(configurando-um-kernel)?pagina=1

Introduçao

Os motivos iniciais de compilar um novo kernel foram os seguintes:

    * Ter um kernel atualizado, com determinados recursos mais desenvolvidos;
    * Ativar o bootsplash e ter uma inicialização gráfica;
    * Deixar o tempo de boot menor;
    * Desabilitar recursos desnecessários;
    * Falta de mulher;
    * Falta de sexo/amor também! =P

OBS: Mesmo depois da compilação, os dois últimos itens da lista não foram resolvidos (ou satisfeitos), então fica aqui um aviso: compilar o kernel não resolve tudo. =)

Começando (tirando informações, essa parte era a q eu tinha dificuldades)
Essa parte é baseada principalmente nos comandos: lspci e dmesg.

Placa Mãe:

# lspci | grep IDE
00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)

Placa de áudio:

# lspci | grep Multimedia
00:11:5 Multimedia Audio controler: Via technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controler (rev 50)

Placa de rede:

# lspci | grep Ethernet
00:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8180 802.11b MAC (rev 20)
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74)

Neste PC existem duas placas, a primeira listada é uma placa wireless e a outra uma placa de rede onboard.

USB:

# lspci | grep USB
00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82)

Hard Disk:

# dmesg | grep hda

A segunda linha é a que nos interessa:

hda: ST340014, ATA DISK drive

Gravadora de CD:

# dmesg | grep hdb

(no caso, o sistema reconhece a unidade como hdb)

hdb: HL-DT-ST RW/DVD GCC-4521B, ATAPI CD/DVD-ROM drive

OBS: O interesse aqui foi em descobrir que a gravadora no caso é ATAPI, a mesma intenção foi feita no caso do HD, que é um disco do tipo ATA.

Baixando kernel ( retirada deste link:

entre como root
$ su
#cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.2.tar.bz2

Vamos descompactar o novo kernel:

# tar xjf linux-2.6.30.2.tar.bz2
# ln -s linux-2.6.30.2 linux
#chmod -R a-s /usr/src/
# cd /usr/src/linux

Configurando kernel... ooo partezinha demorada credu... e dificil de acerrtar viu... tipo vc vai usar as configuraçoes q vc tirou na primeira parte... a ideia de enxugar o kernel e colocar so aquilo o q vai usar... bem... isso e bem dificil mesmo de acertar  mais ai vai uma ideia de como fazer isso...

(retirado deste site http://www.vivaolinux.com.br/artigo/Destrinchando-um-PC-(configurando-um-kernel)?pagina=4)

make xconfig  (modo grafico, mais pratico)
ou
make menuconfig (modo texto)

estes proximos passos estao para o menuconfig, mas eu vou colocar uma legenda pra vc poder entender de como fazer no xconfig 
Legenda:  <*> = carregado (corresponde ao sinal de certo no xconfig), <M> = modulo ( corresponde a um pontinho no xconfig), < >= desativado (corresponde a um quadradinho vazio no xconfig)

esta e uma configuraçao mais geral, mais se vc entender bem o seu pc pode fazer uma mais personalizada
Placa Mãe:
Device Drivers --->
<*> ATA/ATAPI/MFM/RLL support

<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

  • PCI IDE chipset support

  • Generic PCI bus-master DMA support
  • Use PCI DMA by default when available

    <*> VIA82CXXX chipset support

    OBS: Inclui o suporte a DMA (para os discos), compilado como built-in.

    Placa de Áudio:

    Device Drivers --->
    Sound --->
    <M> Sound card support
    Advanced Linux Sound Architecture -->
    <M> Advanced Linux Sound Architecture
    <M> OSS Mixer API
    <M> OSS PCM (digital audio) API
    PCI devices --->
    <M> VIA 82C686/B, 8233/8235 AC97 Controller

    Placa(s) de Rede(s):

    Placa de rede:
    Device Driver --->
    Network device support --->
  • Network device support
    <M> Dummy net driver support

    Ethernet (10 or 100Mbit)--->
  • Ethernet (10 or 100Mbit)
    <M> Generic Media Independent Interface device support

  • EISA, VLB, PCI and on board controllers
    <M> VIA Rhine support

    Placa de rede Wireless:

    Device Driver --->
    Network device support --->

    Wireless LAN (non-hamradio) --->
  • Wireless LAN drivers (non-hamradio) & Wireless Extensions

    OBS: Somente a placa de rede Wireless é usada nessa máquina, sendo a outra desativada posteriormente para seguir a regra "ativar somente o que se vai usar". Mas foi incluída no artigo mesmo assim (uma forma demonstrativa).

    USB:

    Device Drivers --->
    USB support --->
    <M> Support for Host-side USB

  • USB device filesystem

    <M> EHCI HCD (USB 2.0) support
    <M> UHCI HCD (most Intel and VIA) support

    <M> USB Human Interface Device (full HID) support
  • HID imput layer support

    Habilite somente se for usar, mais uma vez a velha regra...

    Hard Disk:

    Device Drivers --->
    ATA/ATAPI/MFM/RLL support --->
    <*> ATA/ATAPI/MFM/RLL support
    <*> Enhnced IDE/MFM/RLL disk/cdrom/take/floppy support
    <*> Include IDE/ATA-2 DISK support

    Gravadora de CD:

    Device Drivers --->
    ATA/ATAPI/MFM/RLL support --->
    <*> ATA/ATAPI/MFM/RLL support
    <*> Enhnced IDE/MFM/RLL disk/cdrom/take/floppy support
    <*> Include IDE/ATAPI CDROM support

    agora esata parte de compilaçao veio deste link e acredito q foi a melhor forma de compilar q encontrei... :

    Iniciar compilação (retirado deste site : http://diamondmax.wordpress.com/2009/07/06/instalacao-do-kernel-diamondmax/)

    primeiro precisamos instalar  as bibliotecas

    sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev wget libncurses5 libncurses5-dev

    # make-kpkg clean

    # INSTALL_MOD_STRIP=1 make-kpkg –initrd –revision=i686 kernel_image kernel_headers kernel_source

    Observação: antes de initrd e revision devem ser colocados dois traços ( - ) e não apenas um. Por questões de formatação, o wordpress coloca apenas um traço.

    Se você possui um processador Dual Core ou Quad Core, use o comando abaixo para reduzir o tempo de compilação:

    # INSTALL_MOD_STRIP=1 CONCURRENCY_LEVEL=2 make-kpkg –initrd –revision=i686 kernel_image kernel_headers kernel_source

    Serão gerados 3 arquivos  .deb na pasta /usr/src/, instale-os, antes de instalar retire os drivers Nvidia ou ATI para poder instalar... eles podem dar conflito com o sitema ...:

    #sudo nautilus
    agora entre no diretorio  /usr/src/ e instale os .deb

    depois de instalados...
    reinicio o sistema... como vc retirou os drivers NVidia vc vai entrar com um drive generico...

    baixe seu drive da Nvidia, o usado aki foi o seguinte
    http://us.download.nvidia.com/XFree86/Linux-x86/180.51/NVIDIA-Linux-x86-180.51-pkg1.run

    agora vc tem q sair do X para poder instalar o driver
    /etc/init.d/gdm stop

    agora vc ta em mode texto, entao entre no diretorio em q vc baixoi o driver, e procure por ele usando o seguinte comando

    ls | grep NVIDIA
    vai aparecer o nome do driver q vc baixou... agora vc tem q dar permiçao para executar o driver.. use este comando


    chmod +x NVIDIA-Linux-x86-180.51-pkg1.run ( no caso, chmod +x nomedodriver.run, este foi so um exemplo)


    agora execute o driver
    ./NVIDIA-Linux-x86-180.51-pkg1.run (no caso, ./nomedodriver.run)

    o primeiro passo depois disso ,( cara c vc chegou ate aki.. e a parte mais intuitiva a c fazer e ler... os passos podem variar.. mas c vc esta muito enseguro olhe mais ou menos como se faz, obs: nao baixe o kernel para recompilar q eles pedem.. ja e um começo de intuiçao)

    "no", depois "aceppt" e por ultimo "no" e se tiver outra opçao "yes"

    /etc/init.d/gdm start

    pronto seu drive esta instalado e seu pc deve estar funcionando corretamente

    uma boa ideia e usar kernel modificado... tipo... com as configuraçoes do hqxriven , e do diamondmax

    espero ter ajudado vcs...
    e bem funciou aki muito bem
    abraço

    ahh foi "meu primeiro" tutorial...
    me corrijam se estiver errado
    abraço




Mero_

#1
 ph_swordman , ainda não li seu tutorial todo, mas parece uma excelente dica. Parabéns pela contribuição amigo.
Citar* Falta de mulher;
   * Falta de sexo/amor também! =P
Muitas das coisas mais interessantes que temos hoje também tinham esses motivos.. kkk Muito boa.
O verdadeiro Capitalismo não está no sistema, mas sim na mente e no coração das pessoas. (By Myself)

ph_swordman

kkkk bixo esse negocio ai da falta de mulher.. nao foi eu q escrevi ... foi o cara do link da primeira parte... la do vivaolinux...kkkk
mais achei muito engraçado tbm
kkkk
ah e vlw pelos parabens

platao

Muito bacana esse topico, estou experimentando.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

renato.ostapiuk


velox256

Sem querer ser chato qto à parte de enxugar o kernel de módulos desnecessários, mais tais módulos no kernel não só são ativados caso haja o hardware para eles? Ou seja, não havendo hardware que o utilize, os mesmos não são carregados e então não pesam no sistema, não?
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

Mero_

#6
 Realmente velox256, vc tem razão.
Quanto a esse ponto, o tutorial ficou mais para efeitos didáticos, ou para pessoas que tenham PCs com "hatdware desnecessário" (que é o meu caso, apesar de usar Slack).

Modo Verbose:
Possuo um hardware bastante modesto, com uma placa de rede SiS900 on-board (10Mbps o.O ), muito antinga, ela não tem um encaixe RJ45 comum, deve usar alguma porta serial, não tenho como utilizar essa placa, então minha Via Rhine III sempre ficava como eth1, o que apesar de não ser problemático, era bastante chato.. Isso abriu margem pro "bug do slack" (na verdade não sei se isso acontece só nele, quem usa a distro me perdôe se eu estiver falando besteira, talvez "bug das placas ethernet" ficasse mais fiel), que faz com que sempre que uma nova placa Ethernet é adicionada, "bagunce" os nomes ( SiS 900 = eth1 e Via Rhine = eth_rename) das mesmas na detecção do Kernel (isso aconteceu no meu PC e em um servidor), fazendo com que eu tivesse que fazer o udev renomear as placas de rede após o boot via  /etc/udev/rules.d/70-persistent-net.rules ou criando o rc.mec para renomear via script usando o MEC Address ou o nome do módulo que cada uma usava. Esse "bug" sim era chato :(, pois havia uma alternância aleatória na hora da detecção, o que fazia com que às vezes a Via Rhine ainda ficasse como eth1, e a conexão normalizada, o que me fez demorar algum tempo pra resolver (só "parti pra briga" num dia que fiquei 2 horas sem conexão por conta disso).
Modo Short:
Apesar de ser um problema simples de se resolver, essa SiS900 era uma placa desnecessária pra mim.

velox256, minha intenção não era parecer o "cara chato", só resolvi responder pois percebi que vc havia perguntado com gentileza, desculpe se pareceu diferente.
Abraço amigo.
O verdadeiro Capitalismo não está no sistema, mas sim na mente e no coração das pessoas. (By Myself)

velox256

Longe de mim considerar ou chamá-lo de chato, mesmo pq vc pode mudar muitos parâmetros ativos na compilação de kernel de modo que ele possa ficar mais leve ou mais rápido do que o kernel genérico. O kernel compilado do Mint é diferente do Sidux que é diferente do Ubuntu, só quis ilustrar sobre os módulos, mas há outros parâmetros qu epodem ser alterados para uma melhor personalização do kernel à máquina em que ele vai ser usado.
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.