Página 1 de 5 123 ... ÚltimoÚltimo
Resultados 1 a 10 de 44
  1. #1
    Hacker
    Data de Ingresso
    May 2005
    Localização
    /etc/init.d/brain restart
    Posts
    927

    Kernel - Compilação - Empacotamento!

    Compilação de Kernel REAL TIME, e empacotamento Debian.

    Bom. Faz tempo que venho testando o kernel, e por sugestão do amigo Douglas Almeida, vou abrir o tópico com o assunto.

    O que é o kernel?
    O Kernel Linux é o centro do Sistema Operacional, e sem ele seria impossível fazer um gerenciamento entre software e hardware.

    Por que é tão importante compilar/recompilar o Kernel?
    De modo geral para deixar o processamento das informações adequadas ao seu uso do processamento. Ou seja, se você necessita de melhor desempenho nada melhor que otimizar ao processamento do Kernel, ou inserir novos suportes de dispositivos de hardware. Além de poder eliminar "processos" do Kernel que apenas degradam o desempenho.

    Inicialmente será abordado 2 assuntos diferentes.

    :arrow: A compilação de Kernel para distros Debian-based;
    :arrow: Kernel REAL TIME.

    Prometo depois dar uma pesquisada em como compilar e empacotar em .RPM o Kernel, para que usuãrios Fedora/openSUSE/Mandriva também possam seguir o tutorial

    Primeiro, o que é um Kernel REAL TIME?
    É um Kernel totalmente preemptivo. Dentro do Linux, qualquer processo trabalha com prioridades, porém, processos com prioridades podem ficar mais tempo do que deveriam dentro do processador. Isso é algo útil para servidores, mas em desktops por exemplo. O Kernel Real time, faz mais trocas de contexto que um kernel normal(Troca de qual processo fica no processador), dando uma fatia menor de tempo, para que esta troca seja rápida, e todos os processos consigam utilizar o processador.

    O patch Real Time do Kernel, possui uma latência mais baixa que o kernel Low-Latency(já incluso no Kernel), pois ele dimiui a latência(tornando "mais preemptivo") de códigos básicos do Linux como gerenciador de interrupções, sequencias de códigos com interrupção desabilitada.
    Bom, vamos ao que interessa.

    Aplicando o patch;

    1) Baixe o Kernel do Linux(Farei com exemplo, o Kernel 2.6.26.5)


    2) Baixe o PATCH, do kernel "Real Time". Dentro da URL http://www.kernel.org/pub/linux/kernel/projects/rt/ ,temos todos os patches para os Kernels, então, baixarei aquele que é do Kernel 2.6.26.5


    3) Mova estes 2 arquivos para /usr/src, que é o local onde normalmente compilamos kernel(e logue como ROOT)...

    Código:
    # mv linux-2.6.26.5.tar.bz2 /usr/src
    # mv patch-2.6.26.5-rt9.bz2 /usr/src
    # cd /usr/src
    (trabalharemos neste diretório a partir de agora)

    4) Descompacte o Kernel
    Código:
    # tar -xjvf linux-2.6.26.5.tar.bz2
    5) Faça um Link simbólico para /usr/src/linux
    Código:
    # ln -s linux-2.6.26.5/ linux
    (Motivo: Muitas coisas que vc precisa compilar, os programas buscarão os "headers" do kernel, apontando para este diretório, como por exemplo, o Script de instalação do módulo proprietário da Nvidia)

    6) Aplique o patch
    Código:
    # cd /usr/src/linux
    # bzcat ../patch-2.6.26.5-rt9.bz2 | patch -p1
    Pronto. A partir de agora, o patch ja está aplicado. Não entrarei em detalhes sobre "o que" enxugar no seu Kernel, pois cada computador tem hardware diferente, então, abordarei apenas como ativar o kernel RT, e compilá-lo empacotando em .deb. Fiz algumas otimizações como remover suporte a hardware que tenho CERTEZA que nunca entrará no meu notebook, e colocar o Processador como Core 2, ao invés de Pentium "Genérico. Ai, cabe a vcs fuçar e desabilidar(COM CUIDADO) o que vcs julgam desnecesário aos seus computadores

    Compilação do kernel
    O comando que iremos usar para compilar o kernel ao invés dos clássicos "make bzImage, make modules, make modules_install", será o utilitário de empacotamento "make-kpkg".

    1) Primeiro, vamos instalar tal pacote(o make-kpkg, está dentro do pacote kernel-package)

    Código:
    # apt-get update
    # apt-get install build-essential kernel-package libncurses5-dev tar gzip bzip2
    2) Agora, retorne para o diretório do Kernel com o patch aplicado

    Código:
    # cd /usr/src/linux
    3) Copie o seu arquivo de configuração do Kernel antigo. Ele se encontra em /boot, caso os comandos abaixo não funcionem. Geralmente ele possui a seguinte sintaxe: config-<nome_do_kernel>.

    Código:
    # cp /boot/config-$(uname -r) ./.config
    O Arquivo de configuração se chama .config, pois é um arquivo ocluto.


    4) Agora, que já possuimos o arquivo antigo de compilação, vamos apenas fazer uns "ajustes" para o RealTime.

    Código:
    # make menuconfig
    Estamos no menuconfig da compilação do Kernel. temos a opção do make xconfig, mas eu prefiro esta interface
    Entre no menu:
    Código:
     Processor type and features  --->
    Procure agora o menu:
    Código:
    Preemption Mode (<TIPO_DE_PREEMPÇÃO>)  --->
    Aparecerá o seguinte menu:
    Código:
    ( ) No Forced Preemption (Server)
    (X) Voluntary Kernel Preemption (Desktop)
    ( ) Preemptible Kernel (Low-Latency Desktop)
    ( ) Complete Preemption (Real-Time)
    Marque
    Código:
     (X ) Complete Preemption (Real-Time) com a tecla ENTER
    Caso vc possua um micro DUAL CORE, ou um PENTIUM 4, mude também a seguinte opção
    Código:
    Processor family (<MODELO_DO_PROCESSADOR>)  --->
    No caso do meu micro do trabalho ficou assim, por ser um Pentium D(Familia do Processador P4)
    Código:
    Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon)  --->
    e no meu notebook
    Código:
    Processor family (Core 2/newer Xeon)  --->
    Se vc não sabe o que fazer, apenas deixe Pentium GENERIC. Se vc tem certeza de seu processador mude, pois isso dã um bom ganho de performance

    Depois, com a seta para o Lado de um EXIT, para sair para o menu principal, depois, seta para o lado de novo, EXIT. Ele vai perguntar se vc deseja salvar as configurações, diga YES!.

    Pronto, vc aplicou o patch, e fez a troca do tipo de preempção do seu processador para FULL. Basta compilar com o make-kpkg

    Código:
    # make-kpkg --append-to-version "-tunado-rt" --initrd --us --uc kernel_image
    O make-kpkg fará todo o trabalho de criar os módulos, o initial ramdisk, a imagem do kernel, e empacotar em um .deb, mas, e as outras opções para que servem?

    --append-to-version "-tunado-rt" : Colocarã ao final do pacote, um nome que vc especificar dentro das aspas duplas. Pode botar seu nome aqui..hehehehhehehehe
    --initrd : Diz que vc quer um initial ramdisk, junto da compilação do Kernel
    --us --uc : Não cria changelog nem assinatura, para este pacote

    Ao vc dar este comando pode aparecer a seguinte mensagem

    Código:
      Warning: You are using the initrd option, that may not
      work unless you have applied the initrd cramfs patch to
      the kernel, or modified mkinitrd not to use cramfs by
      default. The  cramfs initrd patch, is included in the
      Debian supplied kernel sources, but is not present in
      pristine kernel sources.
      By default, I assume you know what you are doing, and I
      apologize for being so annoying. Should I abort[Ny]?
    Digite N para NÃO ABORTAR!!!!!!!!!!

    Comece a compilar o Kernel...hehehehe...PODE TOMAR UM CAFÉ. Possuo uma mãquina relativamente boa(Core 2 Duo, 2MB Cache, 2Gb RAM), e demorou um tantinho....hhehehehehe

    Pronto. Depois de muitos minutos, kernel compilado e empacotado. Veja dentro do /usr/src/, terá um pacote do tipo
    kernel-image-<VERSAO_DO_KERNEL>-<APPEND_TO_VERSION>.Custom_i386.deb


    Desempacote-o(no meu caso, o nome do pacote ficou assim)
    Código:
    # dkpg -i kernel-image-2.6.26.5-tunado-rt_9.00.Custom_i386.deb
    Reinicie a máquina, e boote no Kernel novo: Pronto. You Have full power now!
    Depois de reiniciar, bootar no Kernel novo se certificando de que tudo funciona(vai que vc desabilitou algo que não devia na compilação), digite no console:

    Código:
    # uname -a
    Aparecerá algo do tipo SMP PREEMPT RT
    resultado no meu notebook:
    Código:
    Linux unborn 2.6.26.3-rt3-real-tuned #1 SMP PREEMPT RT Thu Aug 28 12:23:52 BRT 2008 i686 GNU/Linux

    Vc poderá pelo comando "ps faux", diferenciar os processos de Interrupção do kernel REAL TIME, pois os mesmos estão dentro de colchetes

    Código:
    # ps ax 
    PID TTY      STAT   TIME COMMAND 
    1 ?        S      0:00 init [2] 
    2 ?        S      0:00 [softirq-high/0] 
    3 ?        S      0:00 [softirq-timer/0] 
    4 ?        S      0:00 [softirq-net-tx/] 
    5 ?        S      0:00 [softirq-net-rx/] 
    6 ?        S      0:00 [softirq-block/0] 
    7 ?        S      0:00 [softirq-tasklet] 
    8 ?        S      0:00 [softirq-hrtreal] 
    9 ?        S      0:00 [softirq-hrtmono] 
    10 ?        S<     0:00 [desched/0] 
    11 ?        S<     0:00 [events/0] 
    12 ?        S<     0:00 [khelper] 
    13 ?        S<     0:00 [kthread] 
    15 ?        S<     0:00 [kblockd/0] 
    58 ?        S      0:00 [pdflush] 
    59 ?        S      0:00 [pdflush] 
    61 ?        S<     0:00 [aio/0] 
    60 ?        S      0:00 [kswapd0] 
    647 ?        S<     0:00 [IRQ 7] 
    648 ?        S<     0:00 [kseriod] 
    651 ?        S<     0:00 [IRQ 12] 
    654 ?        S<     0:00 [IRQ 6] 
    675 ?        S<     0:09 [IRQ 14] 
    /  687 ?        S<     0:00 [kpsmoused] 
    689 ?        S      0:00 [kjournald] 
    691 ?        S<     0:00 [IRQ 1] 
    769 ?        S<s    0:00 udevd --daemon 
    871 ?        S<     0:00 [khubd] 
    882 ?        S<     0:00 [IRQ 10] 
    2433 ?        S<     0:00 [IRQ 11]

    Agora, basta usar, e sentir a diferença de performance
    Não esqueça de guardar o .deb com o Kernel que vc compilou em algum lugar seguro(como seu /home, que presumo eu, vc é um usuário prevenido, e tem o seu HOME em uma partição separada), para que vc não precise refazer todo o processo.
    Pesquisarei como gerar .RPM para o kernel também, e postarei mais tarde aqui.



    Referências:
    http://www.dicas-l.com.br/dicas-l/20071023.php
    http://www.dicas-l.com.br/dicas-l/20031121.php
    http://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

    __________________________________________________ __________________________________________________ ______________________

    Como dito anteriormente pelo nosso camarada Ironmaniaco. Após uma breve conversa sobre compilação de Kernel e busca de novos resultados, decidimos que seria uma boa se a área tivesse um tópico que tratasse deste assunto tão apreciado no mundo Open Source. Então decidimos dar manutenção especial a este tópico, contribuindo com dicas e informações importantes sobre o assunto. Lógico que todos estão convidados a nos ajudar, afinal estamos todos aqui para aprender.

    @br4¢0§ :!:

    by Douglas Almeida

  2. #2
    Moderador Avatar de M4CK
    Data de Ingresso
    Jul 2007
    Posts
    2.752
    Ironmaniaco
    Simplesmente demais

    Parabéns mesmo !
    []`r

  3. #3
    Gray Hat Avatar de DELL_
    Data de Ingresso
    Sep 2006
    Posts
    2.162
    Ironmaniaco.


    Muito bom cara.

    Esperando sobre o pacote .RPM

    Navegue mais rápido com o Firefox + Adblock: Click Aqui


    Faça sua doação para o Fórum


    I'm not a perfect person

  4. #4
    Hacker
    Data de Ingresso
    May 2005
    Localização
    /etc/init.d/brain restart
    Posts
    927
    Aqui tem informações de como fazer no OpenSUSE
    http://mirandamaster.blogspot.com/2007/ ... el-no.html

    Aplique o PATCH RT, e faça o indicado no tutorial acima

  5. #5
    Gray Hat Avatar de DELL_
    Data de Ingresso
    Sep 2006
    Posts
    2.162

    Re:

    Citação Postado originalmente por Ironmaniaco
    Aqui tem informações de como fazer no OpenSUSE
    http://mirandamaster.blogspot.com/2007/ ... el-no.html

    Aplique o PATCH RT, e faça o indicado no tutorial acima
    Sempre me ajudando.

    Navegue mais rápido com o Firefox + Adblock: Click Aqui


    Faça sua doação para o Fórum


    I'm not a perfect person

  6. #6
    Administrador Avatar de souzadc
    Data de Ingresso
    Jan 2005
    Localização
    BA - Salvador Capital City
    Posts
    5.856
    Cara,

    Show mano, parabéns.

    Sem mais!!!!!
    :arrow:

    Dúvidas somente no fórum, NÃO respondo via MP's, MSN, Orkut, E-mail e afins. Obrigado!

  7. #7
    Hacker
    Data de Ingresso
    May 2005
    Localização
    /etc/init.d/brain restart
    Posts
    927
    Massa
    eu abordaria isto em uma revista do invaders, mas acho mais interessante aqui, com opinióes do pessoal, e testes, se mais alguém se habilitar a fazer esta compilação..

    ...e aos elogios, obrigado

    EDIT:Bom, habilitei algumas coisas a mais(Descobri que o Core2Duo também tem suporte ao HyperThreading do P4 - flag ht, e mais algumas coisas de processador. Módulos de rede, só tem o Wireless e o Gigabit do meu notebook), e as que eu desabilitei, me renderam 4MB a menos no pacote do kernel. Coloquei o append de "stormbringer" nele....hehehh


    Código:
    nicolas@unborn:~/Pacotes/Kernel Linux$ ls -lh
    total 31M
    drwxr-xr-x 23 root root 4,0K Set 23 08:19 linux-2.6.26.5/
    -rw-r--r--  1 root src   18M Ago 28 12:59 linux-image-2.6.26.3-rt3-real-tuned.deb
    -rw-r--r--  1 root root  14M Set 23 01:00 linux-image-2.6.26.5-stormbringer.deb

  8. #8
    Membro
    Data de Ingresso
    Sep 2006
    Posts
    200

    Re:

    desculpem minha ignorancia mas sou iniciante em linux.

    isso dai da para fazer no meu ubunto 7.10???

    obrigada!

  9. #9
    Hacker
    Data de Ingresso
    May 2005
    Localização
    /etc/init.d/brain restart
    Posts
    927

    Re: Re:

    Citação Postado originalmente por tatiana23
    desculpem minha ignorancia mas sou iniciante em linux.

    isso dai da para fazer no meu ubunto 7.10???

    obrigada!
    Pode fazer em qq distribuição "Debian Based"(isso inclui o Ubuntu 8) )

  10. #10
    Ótima matéria, guardarei para qualquer hora tentar compilar meu kernel.




    Visão do "MadDog" sobre Software Livre Nacional: "Tem muitos caciques para poucos indios".

Tópicos Similares

  1. Kernel do Linux
    Por ÐarkScorpion no fórum Linux / Unix / FreeBSD
    Respostas: 0
    Último Post: 26 Sep 2006, 23:36

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •