Este trabalho tem como objetivo mostrar aos usuários como é simples recompilar um kernel, graças à grande evolução dos sistemas Linux e ao grande esforço da comunidade. Espero que este artigo ajude quem ainda não recompilou um kernel e acha que é um bicho de sete cabeças.
Dentro do diretório /usr/src/linux-2.6.x devemos selecionar o que será incluído no kernel e o que será adicionado como módulo, essa é uma tarefa demorada e que exige um pouco de paciência, além do conhecimento do hardware utilizado.
Para a configuração podemos usar a ferramenta "xconfig", que exibe uma interface gráfica:
# make xconfig
Existe também a ferramenta "menuconfig", que oferece as mesmas opções, porém com uma interface em modo texto:
# make menuconfig
Após a configuração, iniciaremos a compilação.
Caso você tenha realizado alguma compilação anterior, é aconselhável que se execute um comando para limpar restos de compilações ou módulos desnecessários, o comando é:
# make clean
e para iniciar a compilação, execute:
# make-kpkg --initrd kernel_image
A compilação gera um arquivo ".deb" no diretório /usr/src, neste arquivo está tudo o que precisamos os arquivos "vmlinuz" e o "initrd" que vão no diretório /boot, o novo kernel e um script de instalação. A compilação demora algum tempo, pra vocês terem ideia a minha máquina com um processador "Core 2 Duo" levou em torno de uma 1 hora.
Agora realizaremos a instalação do novo kernel, como no exemplo abaixo:
IMPORTANTE: Não remova o kernel antigo, pois é necessário testar o novo kernel antes.
Pronto, seu novo kernel está instalado. Agora é só reiniciar e testar o novo kernel. Neste momento você deve estar pensando, no quanto é simples compilar um kernel, bastando praticamente conhecimento do hardware utilizado.
Espero ter ajudado com este material, qualquer dúvida pode postar, tentarei esclarecer o mais rápido possível.
--append-to-version "-apelido" : 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
kernel_image = Gerar .deb do Kernel
kernel_source = Gerar .deb com o Source do Kernel
[3] Comentário enviado por removido em 05/08/2009 - 16:13h
>>> isso é recomendavel fazer em que situação?
Hardware não suportado(por exemplo, a minha webcam só teve suporte completo na 2.6.22), alteração do kernel para "real time" ou "low-latency", para aquela sensação de maior performance ;), e até mesmo para ter um pacote de Kernel mais "enxuto".
o .config, por exemplo do meu Kernel(específico para meu notebook), eu arranquei suporte a quase todas as placas wireless(deixando apenas a 3945 da intel), a NIC deixei apenas a e1000e, compilei para a minha família de processador específica(Core 2 e não pentium genérico). Tudo isso dá um aumento de performance, e o pacote .deb do kernel que era de 22Mb caiu para 16Mb =)
[10] Comentário enviado por GustavinhoO em 28/09/2011 - 17:12h
consegui executar make menuselect make clean...
mas quando executei make-kpkg --initrd kernel_image
deu esse erro aki:
from arch/i386/kernel/process.c:17:
include/asm/mpspec_def.h:78: warning: âpackedâ attribute ignored for field of ty pe âunsigned char[6]â
arch/i386/kernel/process.c: In function âshow_regsâ:
arch/i386/kernel/process.c:252: warning: pointer targets in passing argument 2 o f âshow_traceâ differ in signedness
include/asm/processor.h:498: note: expected âlong unsigned int *â but argument i s of type âlong int *â
arch/i386/kernel/process.c: Assembler messages:
arch/i386/kernel/process.c:378: Error: operand type mismatch for `mov'
arch/i386/kernel/process.c:379: Error: operand type mismatch for `mov'
arch/i386/kernel/process.c:455: Error: operand type mismatch for `mov'
arch/i386/kernel/process.c:456: Error: operand type mismatch for `mov'
include/linux/elfcore.h:92: Error: operand type mismatch for `mov'
include/linux/elfcore.h:92: Error: operand type mismatch for `mov'
arch/i386/kernel/process.c:577: Error: operand type mismatch for `mov'
arch/i386/kernel/process.c:578: Error: operand type mismatch for `mov'
arch/i386/kernel/process.c:585: Error: operand type mismatch for `mov'
arch/i386/kernel/process.c:586: Error: operand type mismatch for `mov'
make[2]: *** [arch/i386/kernel/process.o] Error 1
make[1]: *** [arch/i386/kernel] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.9'
make: *** [debian/stamp/build/kernel] Error 2