Home > Uncategorized > Compilando o kernel no Ubuntu Linux

Compilando o kernel no Ubuntu Linux

Do que vale possuirmos um sistema livre no maior sentido da palavra e não podermos usufrir de um dos pré-requisitos mais valiosos que existe na GPL que é a liberdade de adaptar o código fonte de um programa de acordo com nossas necessidades.

Este artigo irá ajudar você a adaptar o kernel do linux as suas necessidades.

Inicialmente vamos alterar o link do shell padrão para o /bin/sh já que por default ele aponta para /bin/dash

sudo rm -f /bin/sh

sudo ln -s /bin/bash /bin/sh

Instale os pacotes necessários para a compilação do kernel

sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

Baixe a fonte do kernel e o patch para o vserver

cd /usr/src

sudo wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.2.tar.bz2

sudo wget http://www.13thfloor.at/vserver/d_rel26/v2.1.1/patch-2.6.18.2-vs2.1.1.diff.bz2

Descompate o arquivo e crie um link para o diretório linux

sudo tar xjf linux-2.6.18.2.tar.bz2

sudo ln -s linux-2.6.18.2 linux

cd /usr/src/linux

Aplique o patch para habilitar o uso do vserver no kernel. O primeiro comando irá simular a aplicação do patch, não havendo nenhum erro use o segundo comando.

sudo bzip2 -dc /usr/src/patch-2.6.18.2-vs2.1.1.diff.bz2 | patch -p1 –dry-run

sudo bzip2 -dc /usr/src/patch-2.6.18.2-vs2.1.1.diff.bz2 | patch -p1

Aproveite a configuração do kernel atual como base para o nosso kernel customizado

sudo cp /boot/config-`uname -r` ./.config

Agora inicie o menu de configuração do kernel

make menuconfig

No menu acesse a opção Load an Alternate Configuration File e pressione OK, para escolher o arquivo com a atual configuração do kernel

Navegue nas opções do kernel e escolha as configurações desejadas.

Eu por exemplo modifiquei os seguintes itens:

Processador de 486 para Athlon

Desabilitei o suporte a:

– Firewire
– Pcmcia
– MCA
– EISA
– ISA
– Drivers de placas de rede 10000/1000 e WAN
– Telefonia
– Fibra
– RAID
– Kernel Hacking

Após fazer as alterações desejadas salve e saia

Vamos agora compilar e instalar o novo kernel. Após o –append-to-version você pode adiconar seu nome ou qualquer string que facilite a identificação, por exemplo eu escolhi alex.

sudo make-kpkg clean

sudo fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers

Agora vá tomar um banho, tomar café, ler a wiki page do Time de Documentação por que o processo demora.

Se não surgir nenhum erro 2 ( dois ) arquivos serão criados no diretório /usr/src

cd /usr/src

ls -l

linux-headers-2.6.18.2-vs2.1.1-alex_2.6.18.2-vs2.1.1-alex-10.00.Custom_i386.deb

linux-image-2.6.18.2-vs2.1.1-alex_2.6.18.2-vs2.1.1-alex-10.00.Custom_i386.deb

Agora só precisamos instalar os pacotes .deb com o velho e bom dpkg

sudo dpkg -i linux-headers-2.6.18.2-vs2.1.1-alex_2.6.18.2-vs2.1.1-alex-10.00.Custom_i386.deb

sudo dpkg -i linux-image-2.6.18.2-vs2.1.1-alex_2.6.18.2-vs2.1.1-alex-10.00.Custom_i386.deb

Ao finalizar a instalação dos pacotes reinicie o micro

sudo shutdown -r now

Após a inicialização confirme o kernel que está em execução

uname -r

2.6.18.2-vs2.1.1-alex

Pronto agora você está rodando um kernel customizado para sua arquitetura.

Categories: Uncategorized Tags:
  1. 11/15/2006 at 6:59 AM

    Cara, soh me explique uma coisa.

    Pq vc mudou o shell de bash para sh? o que essa modificação vai afeta no meu sistema depois?

  2. 11/15/2006 at 8:08 AM

    Olá Marcus,

    O link foi alterado de dash para bash, apenas por causa daa limitações do dash.

    Não irá mudar nada em seu sistema.

  3. 11/15/2006 at 10:31 AM

    Onde fico sabendo os tipos de suporte (o que cada um faz), pra poder escolher aqueles que não desejo ter?

  4. 11/15/2006 at 10:58 AM

    Olá Marcus,

    Pressione no botão , lá você terá a descrição de cada opção do kernel.
    Aconselho inicialmente que você altere somente o processador e o kernel hacking.
    Depois você vai alterando aos poucos os outros módulos.

    Forte abraço

  5. 11/16/2006 at 12:16 PM

    sudo bzip2 -dc /usr/src/patch-2.6.18.2-vs2.1.1.diff.bz2 | patch -p1

    Sobre esse comando; eu fiz isso e le perguntou alguma coisa sobre o caminho do arquivo varias vezes o que eu coloco ?

    E sobre o iptables, eu tenho um script de firewall no /etc/init.d/

    E com o novo kernel que o mesmo que está no seu link 2.6.18.2 e ele diz que o modulo não está presente no kernel, pede para eu recompilar o kernel, no kernel onde encontra a opção de ativar o iptables ou eu tenho que baixar o patch neste link
    http://www.netfilter.org/projects/iptables/downloads.html#iptables-1.3.6

    E como eu coloco esse patch ?

    Em vez de você responder faz um tutorial legal dessas perguntas que eu fiz ?

    Pois tentei compilar o kernel 2 vezes mas não consegui adicionar os patchs nem do iptables nem vserver onde estou errando.

    Mas kernel compilou legal, só faltou algumas coisas o boot load do ubuntu, fica uma tela preta e depois entra no gdm; tem como mudar isso.

    Olha se vc tiver tempo de fazer um tutorial desses ia ser muito bom.

    Desculpe esse monte de perguntas.

    Fora essas questões o kenel ficou bem legal e instalou tudo. PS fico rapido esse meu sempron 3000+ 64Bit

    Adorei seu tutorial vc é fera cara ! Parabens
    Ass: Jose Nilton

  6. 02/06/2007 at 9:48 AM

    Orra cara valeu mesmo pelo tuto!

  7. David
    02/26/2007 at 1:54 PM

    Estou com um problema que está me deixando maluco. Após o make menuconfig eu executo o comando sudo make-kpkg clean, e a menesagem que aparece é essa: *** Error. I do not know where the kernel image goes to [kimagedest undefined] The usual case for this is that I could not determine which arch or subarch tihs machine belongs to. Please specify a subarch, and try again.. Pare.

    e o que me deixa mais intrigado é que eu conseguia compilar o kernel numa boa no Debian.

    O que será que está errado?

  8. Vitor
    03/10/2007 at 9:25 PM

    Tipo, no finalzinho, ao tentar essa etapa:

    sudo fakeroot make-kpkg –initrd –append-to-version=-vitor kernel_image kernel_headers

    aparece isso

    Error: Unknown target –initrd Unknown target –append-to-version=-vitor
    use –targets to display help on valid targets.

  9. Vitor
    03/10/2007 at 9:35 PM

    Epa, consegui, em alguns lugares na hora de mandar copiar os “-” foram sustituidos, resolvido

  10. francitonio nogueira dias
    05/12/2007 at 12:32 PM

    Oi amigo, tem um comando que foi escrito errado, em vez de “sudo fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers” e
    “sudo fakeroot make-kpkg –initrd –append-to-version=-teste kernel_image kernel_headers”.

  11. francitonio nogueira dias
    05/12/2007 at 12:36 PM

    Oi amigo, tem um comando que foi escrito errado, em vez de “sudo fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers” e
    “sudo fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers”.

  12. francitonio nogueira dias
    05/12/2007 at 12:38 PM

    Oi amigo, tem um comando que foi escrito errado, em vez de “sudo fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers” e
    “sudo fakeroot make-kpkg *initrd *append-to-version=-teste kernel_image kernel_headers”.

    *Obs: e igual a — .

  13. francitonio nogueira dias
    05/12/2007 at 12:39 PM

    Oi amigo, tem um comando que foi escrito errado, em vez de “sudo fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers” e
    “sudo fakeroot make-kpkg –initrd –append-to-version=-teste kernel_image kernel_headers”.

    *Obs: e igual a – – .

  14. francitonio nogueira dias
    05/12/2007 at 12:40 PM

    Oi amigo, tem um comando que foi escrito errado, em vez de “sudo fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers” e
    “sudo fakeroot make-kpkg *initrd *append-to-version=-teste kernel_image kernel_headers”.

    *Obs: e igual a – – .

  15. francitonio nogueira dias
    05/12/2007 at 12:40 PM

    Oi amigo, tem um comando que foi escrito errado, em vez de “sudo fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers” e
    “sudo fakeroot make-kpkg –initrd –append-to-version=-teste kernel_image kernel_headers”.

    Obs: * igual a – – .

  16. Elton Andrade
    10/11/2007 at 3:38 PM

    Alex, fiz os passos aqui.
    Ficou show.
    A documentação ta muito boa.

  17. 10/13/2007 at 8:56 PM

    O comando:

    sudo fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers

    Esta correto, o problema que mtos nao notaram o sinal (–)

    no caso fincando assim:

    sudo fakeroot make-kpkg -initrd -append-to-version=-alex kernel_image kernel_headers
    🙂

  18. 12/22/2007 at 2:46 PM

    Olá!
    Não seria viável fazer um backup? Qual software para backups você me recomandaria?

    Ah, belo post!

  19. Ronai Lisboa
    01/04/2008 at 3:21 PM

    Muito bem. Ótimo e simples tutorial, mas não encontrei como gerar os .deb para os restricted drivers como o nvidia, intel wifi etc.

    Geralmente quando se segue estes passos, há dependências não satisfeitas para os módulos das placas de drivers da nvidia, intel etc.

    Como proceder para gerar os restricted drivers com o mesmo nome do nosso kernel customizado?

    Obrigado.

  20. Rodrigo
    06/29/2008 at 3:19 PM

    Alex,

    vc esqueceu de colocar a fonte cara:
    http://www.howtoforge.com/kernel_compilation_ubuntu_p2

    Abraço

  21. 10/12/2008 at 12:58 AM

    Alex,

    Obrigado pelo post! Super didático… Fiz algumas adaptações mas foi numa boa…

    Just FYI, compilei o kernel 2.6.22.19 no ubuntu Hardy com o múdulos do Lustre File System [1].

    Depois instalei o mesmo e montei meu sistema de arquivos clusterizado. Para quem tiver interesse em saber como eu fiz isso, entrem no meu blog…(está na versão beta ainda, mas dá pra ter uma noção).

    Abraços,
    Renato
    [1] http://www.sun.com/lustre

  22. Danillo
    11/02/2008 at 11:20 PM

    Ai grande, vi numa das perguntas que te fazem pediram pra tu fazer um tutorial.
    E depois eu vejo ele agradecendo o tutorial, tu mandou pra ele? pode me mandar? ou vc disponibilizou onde???

    valeu em
    obrigadão

  23. Alexandre Pereira Menezes
    04/18/2009 at 2:14 AM

    Ola, por favor me ajude. Fiz todo o processo corretamente so que quando chegou na hora de compilar o kernel deu um erro:
    dei o comando: fakeroot make-kpkg –initrd –append-to-version=-alero kernel_image kernel_headers
    dai apareceu: Error: Unknown target –initrd Unknown target –append-to-version=-alero
    use –targets to display help on valid targets.

    • 04/18/2009 at 2:20 AM

      Olá Alexandre,

      Onde tem – entenda como – -.

      Então ficará assim:

      fakeroot make-kpkg –initrd –append-to-version=-alex kernel_image kernel_headers

  24. Alexandre Pereira Menezes
    04/18/2009 at 11:56 AM

    Bom dia, coloquei: fakeroot make-kpkg –initrd –append-to-version=-alero kernel_image kernel_header
    e deu a mesma mensagem.

  25. Alexandre Pereira Menezes
    04/18/2009 at 11:57 AM

    fakeroot make-kpkg – -initrd – -append-to-version=-alero kernel_image kernel_header

  26. Alexandre Pereira Menezes
    04/18/2009 at 11:58 AM

    sem espaço entre os – -(coloquei na mensagem anterior pois ficou como um traço)

  27. Alexandre Pereira Menezes
    04/18/2009 at 12:02 PM

    kkkk, desculpa : tava faltando um s no final.

  28. Alexandre Pereira Menezes
    04/18/2009 at 12:04 PM

    Desculpe o incomodo, mas estou necessitando compilar um kernel. Bem deu o seguinte erro:
    scripts/mod/sumversion.c:384: error: ‘PATH_MAX’ undeclared (first use in this function)
    scripts/mod/sumversion.c:384: error: (Each undeclared identifier is reported only once
    scripts/mod/sumversion.c:384: error: for each function it appears in.)
    scripts/mod/sumversion.c:384: warning: unused variable ‘filelist’
    make[3]: ** [scripts/mod/sumversion.o] Erro 1
    make[2]: ** [scripts/mod] Erro 2
    make[1]: ** [scripts] Erro 2
    make[1]: Saindo do diretório `/usr/src/linux-2.6.18.2′
    make: ** [debian/stamp-build-kernel] Erro 2

  29. Alexandre Pereira Menezes
    04/18/2009 at 12:45 PM

    Outra coisa, teve uma parte que foi meio esquisita. Os comandos:
    sudo bzip2 -dc /usr/src/patch-2.6.18.2-vs2.1.1.diff.bz2 | patch -p1 –dry-run

    sudo bzip2 -dc /usr/src/patch-2.6.18.2-vs2.1.1.diff.bz2 | patch -p1

    O primeiro rodou beleza mas o segundo apareceu:
    diff.bz2 | patch -p1
    The next patch would create the file Documentation/vserver/debug.txt,
    which already exists! Assume -R? [n]
    Dai eu dei enter e apareceu:
    Apply anyway? [n]
    Skipping patch.
    1 out of 1 hunk ignored — saving rejects to file Documentation/vserver/debug.txt.rej
    patching file Makefile
    Reversed (or previously applied) patch detected! Assume -R? [n]
    Dai fui dando enter até parar.

  30. 07/17/2010 at 12:33 PM

    estou com uma duvida.
    tenho dois processadores
    que não aparecem na listagem
    da compliação do kernel.

    são eles:
    turion64
    turion64 x2

    qual seria os relativos
    na relação do kernel
    que devo escolher?

    antecipadamente agradeço,
    gpr.

  31. 09/06/2012 at 7:39 AM

    oi amigo,tenho xpkdu 1.99 dizem que é uma modificação do ubuntu,uso só para internet wlan e wan, o desenvolvedor postou no site que inicia em 10 segundos, eu cai nessa,instalei tirei meu xp que iniciava em 45,instalei xpkdu e demora 1,17minutos para iniciar,falei com ele e disse que é porcausa que inicia todos os programas juntos e ficou por isso sem suporte,será que essa configuração que vc passou ai em cima da pra fazer nesse kduxp?pra melhorar o tempo de boot?estou sem suporte o cara não ajuda muito,se poder me ajudar nessa porfavor,sou iniciante no linux e não sei quase nada…desde já obrigado!

  32. 02/13/2013 at 11:22 AM

    Touche. Outstanding arguments. Keep up the good spirit.

  33. Fran
    07/05/2013 at 7:45 PM

    esse e o camando que eu uso …
    INSTALL_MOD_STRIP=1 CONCURRENCY_LEVEL=3 fakeroot make-kpkg –initrd –append-to-version=-debian-64bits-fran –revision=1975 kernel_image kernel_headers

    tem um script facil para compilar

    https://dl.dropboxusercontent.com/u/77507267/D/compilar_kernel

  34. 07/21/2013 at 11:56 AM

    Hello, I desire to subscribe for this website to obtain most recent updates, thus where can i do
    it please help.

  1. 03/13/2007 at 3:31 PM
  2. 12/26/2007 at 11:57 AM
  3. 02/09/2008 at 10:09 PM
  4. 07/31/2009 at 2:23 PM
  5. 07/28/2011 at 2:17 PM

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: