Este artigo traz uma abordagem bem detalhada sobre a compilação do kernel do Linux. Um enfoque maior foi dado à etapa de escolha dos módulos do kernel, onde a maioria dos itens foi detalhada.
Antes de começar, faço as seguintes considerações: todo o processo descrito neste artigo foi feito como usuário root e no Slackware 10.1 com kernel 2.4.29. Agora vamos ao que interessa.
O primeiro passo pra se compilar o kernel, é baixar o código-fonte dele. Sugiro o site oficial www.kernel.org. Lá você encontrará várias versões para download. Sugiro a mais nova e estável existente. A versão que foi usada neste guia foi a 2.6.12.3.
Após baixar a sua versão do kernel, descompacte-a no diretório /usr/src e renomeie o diretório criado pela descompactação para um nome mais sugestivo como "linux-suaversão". Ajuste o link simbólico contido neste diretório chamado linux para que ele aponte para o diretório do novo kernel que você acabou de baixar.
Entre no diretório do seu novo kernel. Agora entra a parte que eu considero a mais complexa e complicada desse processo: a configuração. Aqui você deverá escolher quais módulos estarão presentes no seu kernel e como eles serão "acoplados" ao kernel. Existem três formas de se acoplar um módulo ao kernel: através da opção Y, ele estará acoplado diretamente ao kernel, inflando o tamanho do mesmo; com a opção M, ele será acoplado como um módulo do kernel (bom para drivers de som, vídeo e etc); ou N, onde o módulo não estará presente no kernel.
Para que seja feita esta escolha, existem três interfaces disponíveis: config onde serão feitas perguntas e você irá respondendo qual ação tomar (como Y, M, N ou ? - para uma ajuda); menuconfig onde você escolherá os módulos via menu no modo texto; ou xconfig onde você escolherá os módulos via menu no modo gráfico. Sempre sugiro que as compilações sejam feitas totalmente em modo texto para se economizar memória e evitar problemas, por isso sugiro que você use a opção menuconfig. Para acessar qualquer uma das opções, estando dentro do diretório do kernel, digite:
make <sua_opção>
Exemplo:
# make menuconfig
Você será levado a uma tela onde poderá fazer as escolhas necessárias ao seu driver. Sugiro que tenha as informações sobre o seu hardware em mãos como processador, placa-mãe, placa de vídeo, placa de som, placa de rede, placa de fax-modem, teclado, mouse e etc. Lembre-se também que a qualquer momento você poderá pedir ajuda sobre determinada opção pressionando a tecla ?. Tenha bastante atenção ao selecionar as opções aqui, mas lembre de que se você se esquecer de alguma, poderá voltar depois para adicioná-la e compilar novamente o kernel.
Lembre-se de que após configurar o seu kernel, você deve sair do menu de configuração e salvar as alterações que foram feitas. Elas serão gravadas num arquivo no mesmo diretório do kernel chamado ".config". As próximas seções nos trarão uma visão da maioria das opções de configuração que você encontrará neste menu. Lembre-se que apesar de ajudar, isto não substituirá a ajuda do kernel (tecla ?).
[1] Comentário enviado por fernoliv em 27/10/2005 - 03:25h
Caro José, obrigado pelo excelente artigo e por sua dedicação em nos passar de forma minunciosa um tema que deixa muitos usuários com receio de alterar em suas distros padrão. É sempre bom utilizar um kernel mais novo pois há suporte a hardwares mais novos, além da correção de bugs encontrados em versões anteriores. É isso aí, agradeço pelo empenho, seu artigo está de parabéns!
[6] Comentário enviado por a.fernando em 28/10/2005 - 11:02h
Parabens pelo artigo
Conciso e completo.
Já compilei o kernel da minha distro algumas vezes, mas muitas coisas eram feitas as cegas, principalmente com relação a parte de módulos, mas com esse artigo posso afirmar que uma luz foi lançada sobre o assunto.
[7] Comentário enviado por PCMasterPB em 29/10/2005 - 15:50h
Um artigo bem completo e será muito útil aos que estão querendo entender algumas opções de configuração do kernel. Apenas queria lhe atentar para duas opções em especial:
Symmetric multi-processing support => Caso alguém use Pentium IV com HT (Hyper-Threading) e este estiver ativado é bom marcar isso com Y. Foi o meu caso.
High Memory Support (4GB) => aqui vc falou pra se marcar Y, porém não disse aonde, aqui tem três opções (off, 4G e 64G) e resumindo em miúdos, se vc tiver menos de 1G coloque off, entre 1G e 4G coloque 4G e se vc tiver mais de 4G (nossa!!!) coloque 64G.
[9] Comentário enviado por jbalestrim em 02/05/2007 - 19:49h
Parabens por esse excelente explicação se possivel se voce pudesse colocar mais detalhes ainda pra que ele fique ainda mais completo ainda e se torne um excelente referencia acima de todos ficariamos muito grato, isso nao significa que ja nao seja bom o suficiente, sao profissionais como voce que falta em nossa area pessoas que realmente tem o conhecimento e ajudam o melhor que pode nessa area so existe gratificações quando encontramos pessoas que nem voce e é um prazer em lhe dizer voce esta de parabens mas se puder complementar ainda mais deixar com mais riqueza no detalhes nossa seria mais fantastico do que é foi um prazer deixar esse elogio que isso sirva de exemplos a todos que se empenham ao maximo em ajudar os demais.
[10] Comentário enviado por forkd em 03/05/2007 - 14:16h
Primeiramente, obrigado pelos comentários à todos. Mais de 35000 hits nesse artigo eu, sinceramente, não esperava...
Ao amigo jbalestrim, adoraria continuar com este artigo, citando mais opções de compilação, atualizando-o para uma versão mais nova do Kernel ou até mesmo criando uma versão traduzida do Kernel (imagina poder ter todas as opções em português? Seria bom para muitos!). Infelizmente (ou felizmente) sou novo no meu emprego e estou concluindo minha pós-graduação (coincidências à parte, estou pra começar a estudar a disciplina KERNEL). Além disso tenho minha monografia para concluir, além de outros projetos pessoais... Por isso, estou sem tempo pra escrever artigos.
Contudo, há muitas pessoas nessa comunidade tão ou mais qualificadas do que eu para levar adiante este assunto. Fica a sugestão e o voto de incentivo.
Mais uma vez, obrigado por tudo!
Um grande abraço!
[11] Comentário enviado por kenshisk em 01/06/2007 - 01:15h
cara parabéns mesmo, esse concerteza vai para os meus favoritos, muito bem explicado, sou novo na comunidade linux e se tiver mais artigos como esse acho que vou acabar aprendendo alguma coisa. :-)
Abraços.
[12] Comentário enviado por GilsonDeElt em 30/12/2007 - 12:16h
Cara, esse artigo tá de +!!!
Há tempos procuro material assim
(é sério, tem quase um ano que tento achar algo assim, e como não achava, compilava o kernel meio às cegas mesmo)
Ainda não li tudo, pq tô arrumando uns trem aqui no meu PC
Mas pelo que já li, vi que tá tudo muito bem detalhado.
Vlww!!!
utilizei este without pra compilar mais rapido, porem parece q ele esta tora hora repetindo a compilacao, qto tempo -+ demora uma compilacao? oq vc acha q estou fazendo d errado?
estou compilando somente para aprender e tentar colocar um driver q eu alterei, o evdev,
[20] Comentário enviado por dendriel em 20/08/2011 - 15:04h
Uma coisa que senti falta logo no começo (na verdade estou escrevendo o comentário enquanto avanço no tutorial) foi referências de pacotes que auxiliam na instalação do kernel. Tenho que interromper o tutorial e buscar soluções para estas faltas. ^^
Uma delas é a ncurses. #sudo apt-get install ncurses-dev (coloque assim, aqui instalou automaticamente o ncurses5-dev, acho eu). Ah, claro, acabei de formatar a máquina, então faltam umas coisas mesmo.
Deixo meus agradecimentos pelo post. Muito legal e tudo funcionou. Mesmo entendo no máximo 10% das opções que estava configurando, achei bastante interessante todo o processo. Obrigado por seu esforço!