Compilando kernel no Debian Squeeze
Veremos como compilar o kernel no Debian. Venho utilizando este tipo de compilação faz anos, com pequenas alterações em um comando ou outro. Ainda temos, no artigo, algumas sugestões de configuração no menuconfig do kernel.
Procedimentos
1. Instalar os pacotes necessários:
# apt-get update
# aptitude safe-upgrade
Tem alguns pacotes a mais do que o necessário, mas neste caso, o que abunda não prejudica.
# aptitude install build-essential module-init-tools kernel-package initramfs-tools libaal-dev wget liblzo2-dev gzip expectk libncurses5-dev dpatch udev
2. Fazer o download do kernel desejado no site kernel.org.
O download pode ser feito via navegador ou pelo terminal. No terminal, utiliza-se o pacote wget:
# wget http://caminho_completo_do_kernel
Exemplo:
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.7.6.tar.bz2
Obs.: O kernel será baixado no diretório/pasta onde você estiver.
# ls #Para ver o arquivo baixado
3. Descompactar o arquivo do kernel:
# tar -jxvf nome_do_arquivo.tar.bz2 #Para arquivos: .tar.bz2
# tar -vzxf nome_do_arquivo.tar.gz #Para arquivos: .tar.gz
# ls #Para ver o arquivo descompactado
4. Copiar o kernel para o diretório /usr/src (diretório/pasta padrão de compilação do kernel no Debian):
# cp -R linux-x.x.x /usr/src
# cd /usr/src #Entrar no diretório
# ls #Verificar se o arquivo foi copiado
5. Nas opções de configuração (make menuconfig), as opções marcadas com "M" indicam que a instalação se dará como módulos, ou seja, não farão parte do bloco monolítico do kernel.
As opções marcadas com "*" (asterisco) indicam que serão instaladas dentro do kernel, ou seja, farão parte do bloco monolítico do kernel, e os drivers e módulos iniciarão junto com o sistema. Em alguns casos, isto é interessante para melhorar o desempenho.
Executar os comandos abaixo em sequência (aguardar o final após cada comando e sempre ler as mensagens de retorno para ver se deu algum erro):
# ln -s linux-x.x.x linux #Cria um link simbólico necessário para a compilação
# ls #Confirmar se o arquivo foi criado
# cd linux #Entra no diretório criado
# make-kpkg clean #Limpa prováveis compilações anteriores
# make mrproper #Limpa prováveis compilações anteriores
# make menuconfig #Entra nas configurações do kernel
Para alterar de "M" para "*" e vice-versa, é só pressionar a barra de espaços.
Vá em "Processor type and features", e marque (barra de espaços) a opção que corresponde ao processador da máquina.
Mais abaixo, vá em "Timer frequency". Se a sua instalação for do tipo servidor marque, a opção 100 HZ (isso melhorará o tempo de resposta do servidor para as requisições). Para Desktop, deixe como está.
Retorne ao menu principal.
Vá em: Networking support → Networking options → Network packet filtering framework (netfilter) → IP: netfilter configuration
Verifique se "IPv4 connection tracking support (required for NAT)" está marcada.
Mais abaixo, marque as opções:
Volte ao menu principal.
Vá em "File Systems", marque os sistemas de arquivo utilizados no particionamento da instalação com: "*"
Mais abaixo, vá em "Native language support" e marque com "*" as opções:
Retorne ao menu principal dando EXIT. Após o último EXIT, aparecerá a janela "Do you wish...", deixe como: "Yes"
# make config_debug_section_mismatch=y #Compila e previne possíveis erros durante a compilação, deverá demorar de uma a duas horas
# make modules #Compila os módulos
# make modules_install #Instala os módulos
# make install #Instala o kernel
# cd /lib/modules #Entrar no diretório
# ls #Confirmar que foi criado o arquivo x.x.x, no caso, 3.7.6
# mkinitramfs -o /boot/initrd.img-x.x.x /lib/modules/x.x.x #Cria a imagem do kernel
# cd /boot #Entrar no diretório /boot e conferir se o arquivo foi criado
# cd #Entra no diretório raiz
# update-grub #Atualiza o GRUB
# shutdown -r now #Reinicia
Ao reiniciar, o novo kernel deverá aparecer nas opções do GRUB.
Depois, atualize o sistema (opcional):
# aptitude update
# aptitude safe-upgrade
Em caso de erro em alguma etapa da compilação:
E seja feliz com seu novo e atualizado kernel.
# apt-get update
# aptitude safe-upgrade
Tem alguns pacotes a mais do que o necessário, mas neste caso, o que abunda não prejudica.
# aptitude install build-essential module-init-tools kernel-package initramfs-tools libaal-dev wget liblzo2-dev gzip expectk libncurses5-dev dpatch udev
2. Fazer o download do kernel desejado no site kernel.org.
O download pode ser feito via navegador ou pelo terminal. No terminal, utiliza-se o pacote wget:
# wget http://caminho_completo_do_kernel
Exemplo:
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.7.6.tar.bz2
Obs.: O kernel será baixado no diretório/pasta onde você estiver.
# ls #Para ver o arquivo baixado
3. Descompactar o arquivo do kernel:
# tar -jxvf nome_do_arquivo.tar.bz2 #Para arquivos: .tar.bz2
# tar -vzxf nome_do_arquivo.tar.gz #Para arquivos: .tar.gz
# ls #Para ver o arquivo descompactado
4. Copiar o kernel para o diretório /usr/src (diretório/pasta padrão de compilação do kernel no Debian):
# cp -R linux-x.x.x /usr/src
# cd /usr/src #Entrar no diretório
# ls #Verificar se o arquivo foi copiado
5. Nas opções de configuração (make menuconfig), as opções marcadas com "M" indicam que a instalação se dará como módulos, ou seja, não farão parte do bloco monolítico do kernel.
As opções marcadas com "*" (asterisco) indicam que serão instaladas dentro do kernel, ou seja, farão parte do bloco monolítico do kernel, e os drivers e módulos iniciarão junto com o sistema. Em alguns casos, isto é interessante para melhorar o desempenho.
Executar os comandos abaixo em sequência (aguardar o final após cada comando e sempre ler as mensagens de retorno para ver se deu algum erro):
# ln -s linux-x.x.x linux #Cria um link simbólico necessário para a compilação
# ls #Confirmar se o arquivo foi criado
# cd linux #Entra no diretório criado
# make-kpkg clean #Limpa prováveis compilações anteriores
# make mrproper #Limpa prováveis compilações anteriores
# make menuconfig #Entra nas configurações do kernel
Para alterar de "M" para "*" e vice-versa, é só pressionar a barra de espaços.
Vá em "Processor type and features", e marque (barra de espaços) a opção que corresponde ao processador da máquina.
Mais abaixo, vá em "Timer frequency". Se a sua instalação for do tipo servidor marque, a opção 100 HZ (isso melhorará o tempo de resposta do servidor para as requisições). Para Desktop, deixe como está.
Retorne ao menu principal.
Vá em: Networking support → Networking options → Network packet filtering framework (netfilter) → IP: netfilter configuration
Verifique se "IPv4 connection tracking support (required for NAT)" está marcada.
Mais abaixo, marque as opções:
IPv4 NAT
MASQUERADE target support
NETMAP target support
REDIRECT target support
Volte ao menu principal.
Vá em "File Systems", marque os sistemas de arquivo utilizados no particionamento da instalação com: "*"
Mais abaixo, vá em "Native language support" e marque com "*" as opções:
Codepage 860 (Portuguese)
ASCII (United...)
NLS 8859-1 (Latin 1, ...)
NLS UTF-8
Retorne ao menu principal dando EXIT. Após o último EXIT, aparecerá a janela "Do you wish...", deixe como: "Yes"
Compilação
6. Compile:# make config_debug_section_mismatch=y #Compila e previne possíveis erros durante a compilação, deverá demorar de uma a duas horas
# make modules #Compila os módulos
# make modules_install #Instala os módulos
# make install #Instala o kernel
# cd /lib/modules #Entrar no diretório
# ls #Confirmar que foi criado o arquivo x.x.x, no caso, 3.7.6
# mkinitramfs -o /boot/initrd.img-x.x.x /lib/modules/x.x.x #Cria a imagem do kernel
# cd /boot #Entrar no diretório /boot e conferir se o arquivo foi criado
# cd #Entra no diretório raiz
# update-grub #Atualiza o GRUB
# shutdown -r now #Reinicia
Ao reiniciar, o novo kernel deverá aparecer nas opções do GRUB.
Depois, atualize o sistema (opcional):
# aptitude update
# aptitude safe-upgrade
Em caso de erro em alguma etapa da compilação:
- Apague os arquivos criados do novo kernel dentro dos diretórios: /boot e /lib/modules
- Recomece a partir do comando: make-kpkg clean (estando dentro do link: linux)
E seja feliz com seu novo e atualizado kernel.
Bom artigo, bem didático.