segunda-feira, 26 de março de 2012

Tutorial Instalando Codecs proprietários no Debian


Olá, estou aqui, postando sobre uma tarefa simples e corriqueira, para todos os usuários linux.
A instalação de codecs não livres no Debian. São tantos que a gente sempre esquece de alguns.
Neste tutorial, ensino a instalar apenas os mais comuns.
Primeiro, iremos habilitar os repositórios que contém os pacotes que desejamos (multimídia).
Em nosso caso, os repositórios non-free.
Veja abaixo, os repositórios que eu utilizei:


" deb http://http.us.debian.org/debian/ squeeze main contrib non-free

  deb http://security.debian.org/ squeeze/updates main contrib non-free
  deb http://ftp.br.debian.org/debian/ squeeze-updates main
  deb-src http://ftp.br.debian.org/debian/ squeeze-updates main
  deb http://ftp.br.debian.org/debian/ squeeze main contrib non-free
  deb http://www.debian-multimedia.org squeeze main non-free "

Use o editor de texto de sua preferência, para incluir os repositórios no arquivo
/etc/apt/source.list.
Como podemos ver, na figura abaixo:



Obs: Notem, que no meu caso, usei o editor vim para editar o arquivo  /etc/apt/source.list.




Aqui temos a pegadinha: O repositório
"deb http://www.debian-multimedia.org squeeze main non-free " Precisa de uma "PUBKEY" para funcionar. Ai você me pergunta, onde diabos eu 
arranjo uma PUBKEY ? Ora, muito simples é só fazer download com o comando baixo:




"wget -c http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2010.12.26_all.deb"

Como podemos ver na figura abaixo: 



Após baixarmos o pacote com o wget,  instalamos ele como o comando abaixo:

# dpkg -i debian-multimedia-keyring_2010.12.26_all.deb

Como vemos na figura:


Após adicionarmos os repositórios nós devemos habilita-los
Com o comando # apt-get update
veja figura abaixo:


Após a configurarmos os repositórios, agora podemos, instalar os codecs e os players propriamente ditos.
conforme você pode observar,  não instalei todos os pacotes de uma vez. Pois quando, estava fazendo a instalação dos codecs, não pensava em escrever este tutorial e  não gosto
de instalar muitos pacotes de uma vez. Gosto de testar  o funcionamento de cada pacote, ou uma pequena quantidade pois, se der algum problema, fica mais fácil identificar e resolver.
Começaremos  instalando primeiro o comando abaixo:


# apt-get install w64codecs
Como vemos na figura abaixo.

Em seguida, instalaremos o pacote ffmpeg com o comando:
#apt-get install ffmpeg
O pacote ffmpeg, provê suporte a vídeo e áudio  mpeg, para vários players.
Em seguida, instalamos o pacote lame. Ele provê, suporte ao formato mp3
Instalaremos também os pacotes vlc ( player de áudio e vídeo), audacios (player de áudio), audacios-plugins, mplayer (o nome já diz :.) ) totem-xine(player padrão do gnome), totem-plugins  Instalamos ele com o comando:
#apt-get install lame vlc audacious audacious-plugins mplayer totem-xine totem-plugins 
Veja figura abaixo:



Em seguida, não ocorrendo erros instalamos o pacote x264, que prove suporte melhorado a vídeos
em formato avi. Instalamos ele com o comando:
# Apt-get install x264

Veja figura abaixo:



Por último, mas não menos importante, instalaremos o smplayer. Um player, baseado no mplayer mas que, vem com suporte a mais formatos de áudio vídeo incluindo, o famoso rmvb. Instalamos ele com o comando:
#apt-get install smplayer
Como podemos observar na figura abaixo:


 Caros Leitores,  finalmente acabamos de instalar suporte aos mais diversos codecs e formatos de audío e vídeo espero que este tutorial seja útil a vocês. Gostaria que vocês comentasse, sugerissem mais opções de
formatos e player. desde já agradeço a todos.



domingo, 18 de março de 2012

Opções de comandos para compilação e gerenciamento de módulos de kernel

Conforme prometido, postarei sobre algumas opções do comando make e outros comandos que podem facilitar o processo de compilação de kernel no Debian e em outras distribuições.
Então chega de conversa,  mãos ao teclado.
Começaremos falando primeiramente sobre o que é o kernel.
O kernel Linux é o núcleo do sistema operacional, na maioria das vezes é confundido com o próprio sistema como um todo. Mas, o correto de ser dizer é o Sistema GNU/Linux. Uma vez que o kernel  é utilizável devido a ser acompanhado, por diversos aplicativos do projeto GNU.
O kernel é composto por diversos módulos. Sendo que, cada módulo gerência um ou mais recursos da maquina e do sistema.
Obtendo o kernel:
Há varias maneiras de obter o código fonte do kernel para compilação mas, as duas mais comuns são:
Primeira maneira: baixar o source do kernel através do gerenciador de pacotes da sua distribuição.
Exemplos: apt, yum , synaptic etc. Através do gerenciador de pacotes da sua distribuição você encontrara
diversas opções de kernel para download com várias customizações.
Segunda maneira: baixar: uma imagem oficial do kernel Vanilla, em: http://www.kernel.org lá você encontrará a imagem oficial do kernel  linux e também patches de correção e atualização. Distribuídos sobre a forma de código fonte.
Numeração da versão do kernel:
A numeração do kernel é  composta por 04 números no formato no formato A.B.C.D sendo que D nem sempre está presente. os números indicam se o kernel é recente.
Os números no exemplo abaixo representam
3.  -Versão Principal
2.  - Numero de Revisão Principal, até a versão 2.4 um número par, representava uma versão
estável e um impar uma versão instável.
7  - Número de revisão secundário, nas versões antigas determinava correções e patches de segurança.
hoje determina a adição de novos recursos exemplo: drivers de dispositivos.
D - Nem sempre utilizado mais indica a revisões de segurança urgentes que alteram detalhes das revisões secundárias. 
Alem da numeração a versão do kernel pode ter sufixos que informam que o kernel é diferente do oficial.
Os mais comuns São rc (release candidate) e mm.

Comando make principais opções: 


Opções de interface de compilação:


# make menuconfig: Provê uma interface de modo texto baseada na biblioteca ncurses para configuração das opções de compilação do kernel .
# make nconfig Provê uma interface de menus de configuração baseada em ncurses  muito similar, a opção
menuconfig
# make config: Provê uma interface de configuração em modo texto orientada a linha baseada em perguntas e respostas  (intermináveis...) para configuração das opções de compilação do kernel
# make gconfig:  Provê uma interface de menus de configuração baseada em GTK ideal para quem tem trauma do famigerado modo texto
# make xconfig: Provê uma interface de menus de configuração baseada em Qt .
Opções para compilação
# make  oldconfig: gera um novo .config utilizando um antigo fornecido como base ideal para quem
salvou um .config de uma compilação anterior já marcando as opções selecionadas anteriormente.


Opções  básicas para utilizar antes da compilação:


# make clean Opção para limpar arquivos temporários gerados por uma compilação anterior
ideal para compilar em seguida módulos de terceiros.
# make mrproper Remove todos os arquivos gerados por uma compilação anterior inclusive o .config 

Opções  básicas de compilação:

# make bzImage Opção que gera a opção a imagem de kernel propriamente dita
com o nome de bzImage
#  make - j4  bzimage a opção -j numero divide a compilação em 04 processos simultâneos
agilizando a compilação ideal para que tem processadores com mais de um núcleo
# make install  Instala a imagem do kernel em /boot 
# make modules  Compila os módulos do kernel
# make modules_install    Instala os módulos compilados


Opções personalizadas de configuração:


#  make rpm-pkg  Gera um pacote rpm do kernel compilado com o código fonte
#  make binrpm-pkg Gera um pacote rpm do kernel compilado sem o código fonte
#  make deb-pkg  Gera um pacote .deb do kernel compilado
As 03 opções acima, são ideais para quem precisa replicar o kernel em diversas maquinas com o mesmo
hardware.
# make tar-pkg  Gera um arquivo tar do kernel sem compressão.

Gerando imagem initrd.


O comando  mkinitramfs:

Outro comando, muito importante para compilação é o mkinitramfs.
Este comando, cria a Initial Ram disk  (initrd) ou seja, uma imagem de disco para inicialização que é montada inicialmente como um sistema de arquivos temporários. O qual fornece, o suporte inicial aos dispositivos básicos do hardware e sistemas de arquivos. Como ext2, ext3, reiserfs. Todas as configurações deles estão definidas no arquivo /etc/initramfs-tools/initramfs.conf.  Neste arquivo são definidos quais módulos incluídos individualmente ou em grupos. Seu uso no Debian é:
# mkinitramfs -o initrd.img-3.2.7C01  3.2.7C01
No Red Hat e Fedora é usado o comando :
# Mkinitrd -c -k 3.2.7C01 -o /boot/initrd-3.2.7C01
Ele possui mais opções de configuração,  por exemplo: a opção -m  módulo1:modulo2    que determina  que os módulos desejados sejam incluídos na imagem.

Aplicando patches ao kernel:
Aplicar um patch ao kernel é um procedimento muito simples, para isso usa-se o comando patch.
Antes de aplicarmos um patch, devemos verificar com atenção se o patch que aplicaremos é o patch para o referido kernel pois, cada kernel tem seu referido patch.
O comando bzcat  deve ser aplicado dentro deve ser aplicado dentro do diretório padrão de compilação
no caso /usr/scr/linux
como no exemplo abaixo:
bzcat pacth-2.6.30.3.bz2 | patch  -p1


Removendo um patch aplicado:
Para remover um patch aplicado usamos o comando :
# bzcat pacth-2.6.30.3.bz2 | patch  -p1 -R

Um detalhe muito importante é que não podemos aplicar 02 patches ao mesmo kernel.
Então, para aplicarmos um novo patch, necessitamos remover o patch aplicado antes.

Gerenciamento de módulos do kernel:

Temos uma série de comandos e arquivos de configuração, que controlam o funcionamento do kernel e seus
módulos. Seja os carregando, impedindo seu carregamento ou descarregando da memória, ou passando parâmetros para a execução dos mesmos. Falaremos sobre os principais comandos para gerenciamento dos módulos do kernel.

# lsmod:  O comando lsmod, lista os módulos de kernel em execução.
vejo o exemplo de saída do lsmod:

root@notebookhp:/home/ricardo# lsmod
Module                  Size  Used by
pci_stub                1309  1
vboxpci                11721  0
vboxnetadp              4667  0
vboxnetflt             14085  0
vboxdrv              1762739  3 vboxpci,vboxnetadp,vboxnetflt
ipt_MASQUERADE          1554  1
iptable_nat             4299  1
nf_nat                 13388  2 ipt_MASQUERADE,iptable_nat
nf_conntrack_ipv4       9833  3 iptable_nat,nf_nat
nf_conntrack           46535  4 ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4
nf_defrag_ipv4          1139  1 nf_conntrack_ipv4
ip_tables              13915  1 iptable_nat
x_tables               12845  3 ipt_MASQUERADE,iptable_nat,ip_tables
parport_pc             18855  0
------------------------------------------------------------------------------------------------------------
Saída do comando cortada devido ao tamanho

A primeira coluna da saída do comando,  indica o nome dos módulos atualmente em execução.
A segunda coluna, mostra o tamanho em bytes ocupados pelos módulos na memória.
A terceira coluna, mostra o numero de  recursos ou módulos ou que estão utilizando o módulo indicado
na primeira coluna. Quando os módulos listados não apresenta módulos dependentes é porque,
eles provavelmente foram compilados internamente no kernel.


# insmod: O comando insmod carrega na memória o módulo desejado
Seu uso é : #  insmod  caminho_completo_modulo  opções.
A desvantagem do comando insmod é que ele não carrega as dependência necessárias
para o carregamento do módulo sendo necessário subir as dependências manualmente.
Fato que as vezes pode ser complicado.

# rmmod: O comando rmmod  descarrega da memória sua sintaxe é
# rmmod  nome_do_módulo o comando rmmod  só consegue descarregar módulos que não
estão sendo utilizados. Módulos em uso não são descarregados.

# modprobe:  Com o comando modprobe gerência a carga e descarga de módulos na memória.
Com ele podemos passar parâmetros para a execução dos módulos que queremos carregar.
Formas de uso:
Carregar módulos de kernel na memória:
# modprobe nome_do_modulo parâmetro(opcional)
O comando modprobe carrega inclusive as dependências dos módulos os quais foram solicitados
o carregamento.
Descarregar módulos:


# modprobe -r nome_do_módulo descarrega o módulo desde que não esteja sendo utilizado.
o comando descarrega também sua dependências se elas não estiverem sendo utilizadas por outros
recursos.


# modinfo: O comando modinfo provê informações detalhas sobre sobre os módulos do kernel.
Informações como caminho para o módulo, autor, versão, hardware suportado, parâmetros de configuração suportados e muitos outros.

Abaixo vemos um exemplo  de saída do comando modinfo.


root@notebook:/home/ribeiro# modinfo libata
filename:       /lib/modules/2.6.32-5-amd64/kernel/drivers/ata/libata.ko


version:        3.00
license:        GPL
description:    Library module for ATA devices
author:         Jeff Garzik
srcversion:     762274E81373BA6D34D663D
depends:        scsi_mod
vermagic:       2.6.32-5-amd64 SMP mod_unload modversions
parm:           acpi_gtf_filter:filter mask for ACPI _GTF commands, set to filter out (0x1=set xfermode, 0x2=lock/freeze lock, 0x4=DIPM, 0x8=FPDMA non-zero offset, 0x10=FPDMA DMA Setup FIS auto-activate) (int)
parm:           force:Force ATA configurations including cable type, link speed and transfer mode (see Documentation/kernel-parameters.txt for details) (string)
parm:           atapi_enabled:Enable discovery of ATAPI devices (0=off, 1=on [default]) (int)
parm:           atapi_dmadir:Enable ATAPI DMADIR bridge support (0=off [default], 1=on) (int)
parm:           atapi_passthru16:Enable ATA_16 passthru for ATAPI devices (0=off, 1=on [default]) (int)
parm:           fua:FUA support (0=off [default], 1=on) (int)
parm:           ignore_hpa:Ignore HPA limit (0=keep BIOS limits, 1=ignore limits, using full disk) (int)
parm:           dma:DMA enable/disable (0x1==ATA, 0x2==ATAPI, 0x4==CF) (int)
parm:           ata_probe_timeout:Set ATA probing timeout (seconds) (int)
parm:           noacpi:Disable the use of ACPI in probe/suspend/resume (0=off [default], 1=on) (int)
parm:           allow_tpm:Permit the use of TPM commands (0=off [default], 1=on) (int)
parm:           atapi_an:Enable ATAPI AN media presence notification (0=0ff [default], 1=on) (int)


#################################################################################


Obs:Para listar apenas as opções de parâmetros configuração utiliza-se a opção -p.
Segue abaixo exemplo de saída do comando modinfo com a opção -p


root@notebook:/home/ribeiro# modinfo libata -p
atapi_an:Enable ATAPI AN media presence notification (0=0ff [default], 1=on)


allow_tpm:Permit the use of TPM commands (0=off [default], 1=on)
noacpi:Disable the use of ACPI in probe/suspend/resume (0=off [default], 1=on)
ata_probe_timeout:Set ATA probing timeout (seconds)
dma:DMA enable/disable (0x1==ATA, 0x2==ATAPI, 0x4==CF)
ignore_hpa:Ignore HPA limit (0=keep BIOS limits, 1=ignore limits, using full disk)
fua:FUA support (0=off [default], 1=on)
atapi_passthru16:Enable ATA_16 passthru for ATAPI devices (0=off, 1=on [default])
atapi_dmadir:Enable ATAPI DMADIR bridge support (0=off [default], 1=on)
atapi_enabled:Enable discovery of ATAPI devices (0=off, 1=on [default])
force:Force ATA configurations including cable type, link speed and transfer mode (see Documentation/kernel-parameters.txt for details)
acpi_gtf_filter:filter mask for ACPI _GTF commands, set to filter out (0x1=set xfermode, 0x2=lock/freeze lock, 0x4=DIPM, 0x8=FPDMA non-zero offset, 0x10=FPDMA DMA Setup FIS auto-activate)


################################################################################
Obs:  O comando #  lspci não gerencia ou  interage diretamente com os módulos mas é uma ótima ferramenta para levantamento do hardware e consequentemente seus módulos

Comando uname principais opções:
 O comando uname fornece varias informações sobre o kernel em execução e a máquina que o
está executando. Veja como exemplo a saída deste comando com a opção -a


root@notebook:/home/ribeiro# uname -a
Linux notebook 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 GNU/Linux

 A opção -a fornece todas a informações sobre o kernel atual em execução.
Porém podemos obter informações isoladas utilizando outras opções como as opções abaixo:

uname  -n nome da maquina (hostname)
uname -o Sistema operacional
uname  -p  Processador da máquina 
uname -r Versão do kernel em execução
uname -s Nome do kernel
uname -v Versão de compilação do kernel

Obs: comando uname  dependendo da opção usada pode apresentar valores escrito como unknow
como na saida abaixo:

root@notebook:/home/ribeiro# uname -p
unknown

Isto ocorre devido ao kernel ter sido compilado de forma genérica, sem informação especifica.
Neste caso, sobre o processador, o comando uname extrai sua informações dos arquivos existentes em:
/proc/sys/kernel/ 



Espero que este texto seja útil para vocês. Aceito alias desejo, criticas positivas ou negativas sobre o texto, o assunto e eventuais erros por favor comente poste aqui seu comentário.
Assim, poderei corrigir o mais rápido possível.
Desde já agradeço a todos os leitores a colaboração.

Referências:
Guia foca linux, Linux ManPages dos comandos lsmod, insmod, uname, modprobe, make e etc
Documentção do kernel e www.kernel.org





domingo, 26 de fevereiro de 2012

Links para download Do Fedora, Debian e Ubuntu.

A pedidos de amigos, estou postando hoje, links de download de algumas distribuições linux.
Poderia postar aqui, uma centena de ótimas distribuições. Porém, vou postar somente 03 das mais conhecidas. As quais, Eu tenho um pouco de vivência no seu uso. Seguem, alguns comentários:
A primeira distribuição, a Fedora Linux Antigamente chamado de Fedora Core. Distribuição que existe desdes 2003 . Desenvolvida originalmente a partir da distribuição Red Hat. Hoje, a distribuição é desenvolvida por uma comunidade de  milhares de voluntários ao redor do mundo. Servindo atualmente, como base ao desenvolvimento do Red Hat Enterprise linux,  como informam no site do projeto. Vale a pena ressaltar que seu instalador o Anaconda é um dos mais fáceis de usar.  Fato que a torna, uma boa opção para quem quer iniciar o aprendizado do sistema GNU/Linux. Conta com uma comunidade enorme, muito receptiva à usuários iniciantes, fornecendo um ótimo suporte. Disponível para várias arquiteturas na pagina em português do projeto. Lá, alem dos links para download, você encontra diversas informações sobre o  fedora sua origem, ciclo de lançamento e muitas outras informações.
O endereço do site do projeto é:
 http://fedoraproject.org/pt/about-fedora

A segunda distribuição, a Debian GNU/linux  existe desde 1993. Seu fundador foi Ian Murdok. Atualmente, encontra-se em sua versão estável 6.0 (squeeze).
Atualmente, o Debian é o maior projeto livre que eu conheço. Mantido por uma comunidade de voluntários, mantém uma das políticas mais conservadoras no que tange a liberdade de software, mantendo assim, a distribuição mais livre possível. Por ter como foco um sistema estável, tem um ciclo de desenvolvimento relativamente "longo"  aproximadamente, 2 anos entre as versões estáveis.  Possui suporte a maiorias das arquiteturas de computadores existentes. O ciclo de desenvolvimento das versões do Debian Baseia-se em 03 etapas:
1ª. "Unstable" - instável 2ª. "Testing" - teste 3ª. "Stable" - estável
Altamente customizável, estável e segura . Essas razões, tornam a Debian, uma distribuição muito usada em servidores. Indicada principalmente para usuários mais experientes. Mas nada impede que usuários iniciantes a utilizem. Afinal, minha primeira distribuição linux foi a Debian. Mas creio, que existem distribuições mais focadas no usuário final. Atualmente a Debian é a distribuição com mais distribuições derivadas dela eu conheço cerca de 02 dezenas  aproximadamente. Algumas chegam a ser tão ou mais conhecidas, que a Debian. Caso do Ubuntu por exemplo. 
Na pagina do projeto, você encontrara disponíveis mais informações sobre a distribuição Debian, fóruns, how-tos, etc e  links para download da distribuição para as mais diversas arquiteturas.
Link do projeto:
http://www.debian.org/

A Terceira distribuição  a Ubuntu. Distribuição Baseada no Debian desenvolvida pela Canonical. Focada principalmente no usuário final.(desktop)
Possui também, versões desenvolvidas especificamente para servidores.
 Hoje, uma das mais utilizadas no mundo.  Tem um ciclo de desenvolvimento muito mais rápido se comparado com o Debian (semestral). Tem servido como distribuição inicial muitos usuários linux.
 Devido, a simplicidade e facilidade de instalação e configuração através de ferramentas gráficas intuitivas como o synaptics e outras. Conta com um suporte padrão completo a arquivos multimídia, que de certa forma é "mais limitado" no Debian e outras distribuições. Devido as suas politicas de usar sempre software livre por padrão.
Um fato que cabe ressaltar, é o espirito colaborativo da comunidade Ubuntu,  destaca-se entre muitas comunidades. Principalmente com os usuário iniciantes fornecendo o na minha opinião, o ambiente mais amigável  ao usuário linux iniciante.
O Ubuntu como demais informações, suporte e links para download estão disponíveis em:
http://www.ubuntu-br.org/

"Quero deixar bem claro que, a escolha da distribuição a se usar é bem pessoal .
Não existe uma distribuição melhor que a outra,  sim a que nós nos adaptamos melhor, para fazer determinadas tarefas."

Referências : 
http://www.debian.org/
http://fedoraproject.org/pt/about-fedora
http://pt.wikipedia.org/wiki/Debian
http://pt.wikipedia.org/wiki/Fedora_Linux
http://www.ubuntu-br.org/
http://pt.wikipedia.org/wiki/Ubuntu









quarta-feira, 22 de fevereiro de 2012

Compilando um kernel 3.2.7 no Debian Squeeze

Bom, para inaugurar o Dia a dia linux,  vamos começar com um assunto que interessa a vários usuários linux.
A vezes cercado de mito. Visto como um tarefa complexa. Mas, devemos concordar, o processo de compilação exige de fato conhecimento sobre o hardware da maquina, para que ocorra uma melhora no real no desempenho do equipamento. Porém não se assustem é uma ótima oportunidade para apreender sobre o hardware de sua maquina. No entanto no Debian squeeze o procedimento é  relativamente simples.
Neste tutorial  não abordaremos como coletar informações do hardware, ou configurar repositórios da maquina. Presumiremos que você já tenha um desktop previamente configurado com todas as informações do hardware da sua maquina.
Prometo em breve postar sobre o assunto.
Agora é só seguir alguns passos:
Primeira etapa instalar os pacotes necessários para compilação no Debian

Primeiro vamos logar como usuário root no prompt de comando aparecera o caracter #  o comando é:

1ª Passo instalar pacotes necessários  para compilação:
# apt-get install build-essential libncurses5-dev

2º Passo baixar o kernel do site: http://www.kernel.org  no diretório /usr/src/ com o comando:
# wget -c http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.7.tar.bz2
Neste  site encontraremos a ultima imagem do kernel no nosso caso a versão 3.2.7

3º passo:   Descompactamos o kernel baixado em /usr/src/ com o comando:
# tar -jxvf linux-3.2.7.tar.bz2


Dica: " Recomendo quando descompactar o kernel dar uma olhada dentro dos diretórios
lá você encontra diretórios como o /usr/src/linux/Documentation que contém muita documentação sobre o kernel parâmetros de compilação, nomes de livros para referência 
bem como links para diversos sites sobre o assunto assim como alguns how-tos "

4º passo:  Criar um link simbólico com o nome de linux dentro de /usr/src/  para o diretório criado pelo arquivo descompactado no caso  linux-3.2.7/ com o comando:
# ln -s linux-3.2.7 linux

5º Passo: Com o comando cd  mudamos para a  pasta do arquivo do kernel descompactado
# cd  linux

6º Passo utilizar o comando:
 # make menuconfig
Após digitar o comando acima  você entrara no menu de configuração do kernel
em outra oportunidade comentaremos suas opções a fundo.
No menu de configuração do kernel você  habilita o suporte do seu kernel a determinados tipos de hardware ou recursos.
o comando make menuconfig gera o arquivo .config o qual fornece os parâmetros para compilação do kernel.



Dica: "Uma medida que adianta tempo para futuras compilações é salvar o arquivo .config para futuras compilações, ou usar um arquivo .config,  do kernel que roda atualmente em sua maquina. Assim, quando você abrir o menu de configuração com o comando: make menuconfig as opções básicas de seu hardware já estarão selecionadas. um bom local para guardar seu arquivo .config é o diretório /boot  com o nome de: config.sua_versão_de Kernel."


7º passo  editar o arquivo Makefile com o editor de texto de sua preferência no meu caso o editor vi
# vi /usr/src/linux/Makefile

VERSION = 3
PATCHLEVEL = 2
SUBLEVEL = 7
EXTRAVERSION = C01

Vamos editar  o arquivo Makefile nas 04 primeiras linhas desse arquivo encontraremos  as 04 variáveis que armazenam o nome do kernel
Vamos editar a linha que contém a variável " EXTRAVERSION =  " nela colocaremos a versão de
de nossa compilação indicando a personalização do kernel.
Em nosso exemplo para fins didáticos, colocamos C01 de primeira compilação. Note que você pode por
o valor que achar melhor.
Obs: O arquivo Makefile é enorme com diversos parâmetros mas hoje, vamos nos concentrar nas 4 primeiras linhas.

8º Passo gerar a imagem do kernel propriamente dita com o o comando :
# make bzImage
o comando acima gera um arquivo de imagem de kernel com o nome de bzImage do diretório:
/usr/src/linux/arch/x86/boot/bzImage
O  diretório pode variar de x86 para x86_64 ou outro dependendo da arquitetura de sua maquina.
Esse processo dependendo da maquina costuma demorar um pouco, sabe aquele café ?  melhor ir tomar ele agora :-)

9º passo compilar os módulos  usando o comando:
# make modules
Isso também pode demorar um pouco...
Esse comando costuma demorar um pouco também, dependendo da sua maquina.
O comando acima, compila os módulos dos dispositivos do seu kernel.  

Obs: Para maquinas com mais de um processador pode ser usado o comando:
# make -j4 modules  (Opcional)
Acelerando o processo de compilação realizando em 04 processos simultâneos


10 º passo instalar os módulos compilados com o comando:
# make modules_install 
O comando acima instala os módulos criando o diretório /lib/modules/sua_versão_de _kernel 
em nosso caso o diretório: 
/lib/modules/3.2.3C01



11º passo: instalar o kernel com o comando:
# make install


12º passo: agora vamos para o diretório /boot com o comando:
# cd /boot/      
Dentro deste diretório geraremos a imagem inicial do kernel initrd (de initial ram disk)


13º passo:  gerar a imagem inicial do kernel com o comando:
# mkinitramfs -o initrd.img-3.2.7C01  3.2.7C01
Atenção na parte sublinhada pois nome deve ser igual o da pasta gerada em /lib/modules/
pois é daqui que o comando mkinitramfs  linka e extrai o módulos necessários para inicializar 
a maquina. Se não, na hora de iniciar a maquina o kernel não carregara completamente.
Apresentando o clássico erro : "Kernel Panic"

Agora, tenho uma notícia boa e uma ruim para quem teve a paciência de ler este post até aqui.
Bom a boa notícia é que se você seguiu todos os passos e não teve erros até aqui você já compilou seu kernel. A notícia ruim é que ainda não da para usa-lo. Devemos adiciona-lo no seu gestor de inicialização no caso de quem usa Debian o gestor padrão é o grub então vamos lá:


Peguei você no Debian squeeze esse processo é muito  simples é só digitar o comando:
# update-grub
Depois e só reiniciar a maquina selecionar o kernel compilado e partir para o abraço:

Nos próximos posts comentarei mais detalhes sobre a  compilação como opções do comando make, compilação de módulos de terceiros e etc...
Qualquer duvida é só postar aqui .