Balanceamento de carga com Iptables

Setembro 15, 2009

Balanceamento de Carga com Iptables
===================================

Colaboração: Everson de Oliveira

Neste artigo vamos mostrar um modo simples e rapido de balanceamento de carga utilizando regras de IPTABLES.

Cenário:
========
user > Firewall IPTables >

> Server Apache A

> Server Apache B

Obs: Vale lebrar que o conteúdo deverá ser igual nos dois servidores, isto é, caso queira colocar isso em produção.

Vamos ao que interesa. Apenas faça o seguinte:

# Regra 1
$IPTABLES -A PREROUTING -t nat -d 200.xxx.xxx.1 -j DNAT –to 192.168.1.1-192.168.1.2

# Regra 2
$IPTABLES -A POSTROUTING -t nat -s 192.168.1.1 -j SNAT –to 200.xxx.xxx.1

# Regra 3
$IPTABLES -A POSTROUTING -t nat -s 192.168.1.2 -j SNAT –to 200.xxx.xxx.1

Repare que utilizei –to 192.168.1.1-192.168.1.2 (dois hosts). Poderia usar –to 192.168.1.1-192.168.1.10 (que significa que estarei dispondo de um range de 10 hosts no load balance).

Everson de Oliveira é Analista de Redes da Escola do Futuro – USP

Fonte: http://www.dicas-l.com.br/dicas-l/20090915.php


Gerando hash MD5 dos arquivos no linux

Julho 30, 2009

Uma forma bastante interessante de se manter um controle sobre os arquivos, principalmente os de sistema, é gerar o hash dos principais arquivos e guardar em uma tabela para futuras pesquisas.

Gerando o hash de um arquivo, se houver qualquer tipo de alteração nele, ao rodar novamente o cálculo do hash MD5, o resultado do hash será diferente do resultado original.

No linux, você pode gerar o hash MD5 de um arquivo digitando o seguinte comando:

md5sum arquivo

Por exemplo, um cálculo de hash em um arquivo ficaria assim o resultado:

md5sum dic.txt

8f1d3d9518b9a09acf68c9db12ef29ac  dic.txt

Vamos alterar esse arquivo, acrescentando uma linha e após salvar, gerando novamente a função hash, teremos um novo resultado:

md5sum dic.txt

49526713e47393a7ffcb532fcff8fe9a  dic.txt

Ou seja, dessa forma, você poderá fazer um hash md5 de seus arquivos e quando precisar, verificar o hash para saber se ocorreu alguma alteração.


Problema no wireless após atualização do Kernel no Ubuntu 9.04

Julho 15, 2009

Eu tive um sério problema no meu notebook, depois que me “aventurei” na atualização do mais novo Kernel para o Ubuntu 9.04, a versão 2.6.28-13-generic.

A primeira consequência, nada agradável, foi a imediata parada no funcionamento da minha wireless. Ao rebootar a máquina, percebi que meu wireless lia os drivers, o Kernel atribuia o Firmware corretamente conforme o módulo do meu Bradcom43, mas não conseguia detectar as redes wireless.

De posse dos logs (syslog e message – ambos em /var/log), verifiquei que quando meu noteboot tentava conectar a rede da minha empresa e em minha casa, ambas configurações eu utilizo WPA2 – PKS, acontecia um erro, conforme listado abaixo:

NetworkManager: nm_setting_802_1x_get_pkcs11_engine_path: assertion `NM_IS_SETTING_802_1X (setting)’ failed

Pesquisando na internet, o problema era em respeito a um bug no NetworkManager sobre o módulo que gerencia as conexões wireless com criptografia WAP.

Solução:

Basta instalar o pacote “linux-backports-modules-jaunty” com o apt-get e depois, reiniciar o computador.  Digite o comando:

sudo apt-get install linux-backports-modules-jaunty


Pronto, minha rede wireless com WPA voltou a funcionar normalmente.

Até a próxima.


Mapeamento passivo no Linux: p0f

Abril 30, 2009

Achei interessante um capítulo do Livro “Segurança em rede sem fios” de Nelson Rufino, no tocante ao assunto de mapeamento passivo. Existem várias ferramentas para visualizar as movimentações de dados pela rede, sem necessariamente está autenticado à rede alvo.

Testei e gostei muito da ferramenta “p0f” (letra P, número zero, letra F). Tem no repositório do ubuntu e para instalar, basta digitar o seguinte comando como root:

apt-get install p0f

Para executar a ferramenta, basta digitar o comando abaixo, logado como root:

p0f

Ou se preferir, pode informar em qual interface você quer “escutar” a rede alvo:

p0f -i wlanO

Essa técnica é muito interessante quando se quer observar os possíveis alvos, sem ser notado.

Roney Médice

Analista de Sistemas e Bacharel em Direito


Como remover servicos do boot no linux

Abril 24, 2009

Estava configurando um servidor proxy no  linux (Squid), com autenticação no AD (Windows Server) através do Winbind. Verificando os serviços que estavam sendo iniciados no servidor linux, observei que um daemon ‘Bluetooth” estava sendo inicializado também no boot de forma desnecessária, porque eu não uso nenhum device (dipositivo) de bluetooth no servidor.

Com isso, tentei alterar as configurações de iniciação desse serviço com o seguinte comando (logado como root):

chkconfig –level 35 bluetooth off

Ou seja, tentei setar para que ao inciar o linux com o boot na opção do init em nivel 3 ou 5, esse daemon estaria desligado (off) e não seria carregado o módulo.

Porém, ao executar esse comando, apresentou a seguinte lista de erros:

insserv: warning: script ‘S01linux-restricted-modules-common’ missing LSB tags and overrides
insserv: warning: script ‘K01gdm’ missing LSB tags and overrides
insserv: warning: script ‘K20acpi-support’ missing LSB tags and overrides
insserv: warning: script ‘S10powernowd.early’ missing LSB tags and overrides
insserv: warning: script ‘S28NetworkManager’ missing LSB tags and overrides
insserv: warning: script ‘S10xserver-xorg-input-wacom’ missing LSB tags and overrides
insserv: warning: script ‘S05vbesave’ missing LSB tags and overrides
insserv: warning: script ‘S10udev’ missing LSB tags and overrides
insserv: warning: script ‘S08loopback’ missing LSB tags and overrides
insserv: warning: script ‘S37udev-finish’ missing LSB tags and overrides
insserv: warning: script ‘vbesave’ missing LSB tags and overrides
insserv: warning: script ‘NetworkManager’ missing LSB tags and overrides
insserv: warning: script ‘udev’ missing LSB tags and overrides
insserv: warning: script ‘acpi-support’ missing LSB tags and overrides
insserv: warning: script ‘udev-finish’ missing LSB tags and overrides
insserv: warning: script ‘xserver-xorg-input-wacom’ missing LSB tags and overrides
insserv: warning: script ‘loopback’ missing LSB tags and overrides
insserv: warning: script ‘powernowd.early’ missing LSB tags and overrides
insserv: warning: script ‘linux-restricted-modules-common’ missing LSB tags and overrides
insserv: warning: script ‘gdm’ missing LSB tags and overrides
insserv: There is a loop between service mountall and checkfs
insserv:  loop involving service checkfs at depth 8
insserv:  loop involving service checkroot at depth 7
insserv: There is a loop between service mountall and checkfs
insserv:  loop involving service mtab at depth 8
insserv: There is a loop between service udev and hwclockfirst
insserv:  loop involving service hwclockfirst at depth 7
insserv:  loop involving service mountdevsubfs at depth 6
insserv:  loop involving service networking at depth 2
insserv:  loop involving service mountall at depth 1
insserv:  loop involving service hwclock at depth 15
insserv:  loop involving service udev at depth 22
insserv: exiting without changing boot order!
/sbin/insserv failed, exit code 1

Resultado, parti para o meio mais radical, e executei o seguinte comando (logado como root):

update-rc.d -f bluetooth remove

Quanta tranquilidade!! Na hora, resolveu o meu problema:

Removing any system startup links for /etc/init.d/bluetooth …
/etc/rc0.d/K74bluetooth
/etc/rc1.d/K74bluetooth
/etc/rc2.d/S25bluetooth
/etc/rc3.d/S25bluetooth
/etc/rc4.d/S25bluetooth
/etc/rc5.d/S25bluetooth
/etc/rc6.d/K74bluetooth

Espero ter ajudado aos desesperados com mais essa solução resolutiva.

Roney Médice

Analista de Sistemas e Bacharel em Direito


Fazendo rotate do Squid automaticamente

Abril 9, 2009

Fazendo rotate do Squid automaticamente
==============================

=========

Colaboração: Sérgio Abrantes

Data de Publicação: 09 de April de 2009

Mostrarei como fazer um rodízio dos arquivos de log do Squid que crescem
enormemente ao final de todo o mês, colocando-os na crontab para fazer esse
trabalhinho sujo. : D

O arquivo de log do Squid (access.log) cresce enormemente devido aos acessos
externos. O próprio Squid tem sistema de rotacionamento dos logs através
do comando “squid -k rotate”. Com esse comando, os arquivos vão ficando no
seguinte formato:

access.log.0
access.log.1

A idéia é fazer um rotacionamento ao final de todo o mês, criando um arquivo
de log com o mês e gerar um relatório mensal utilizando o SARG.

Porque fazer isso? Assim tiramos um relatório com o acesso de todo o mês
e geramos um arquivo com os acessos daquele mês. Caso seja necessário um
relatório de todo o mês, basta apenas juntar os logs e gerar.

Crontab
=======

Devemos inserir as datas e o script na crontab para realizar a tarefa. Segue
abaixo o conteúdo da crontab:

# Faz um logrotate do Squid
59 23 31 1 * /home/bkp_server/scripts/rotate_squid
59 23 28 2 * /home/bkp_server/scripts/rotate_squid
59 23 31 3 * /home/bkp_server/scripts/rotate_squid
59 23 30 4 * /home/bkp_server/scripts/rotate_squid
59 23 31 5 * /home/bkp_server/scripts/rotate_squid
59 23 30 6 * /home/bkp_server/scripts/rotate_squid
59 23 31 7 * /home/bkp_server/scripts/rotate_squid
59 23 31 8 * /home/bkp_server/scripts/rotate_squid
59 23 30 9 * /home/bkp_server/scripts/rotate_squid
59 23 31 10 * /home/bkp_server/scripts/rotate_squid
59 23 30 11 * /home/bkp_server/scripts/rotate_squid
59 23 31 12 * /home/bkp_server/scripts/rotate_squid

Ele executará o script que está em /home/bkp_server/scripts/rotate_squid ao
final do último dia de cada mês.

Script rotate_squid
===================

Segue o conteúdo do script:

#!/bin/bash
data=`date +%m`
ano=`date +%y`

if [ $data == "01" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/01/$ano-31/01/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-janeiro
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-janeiro
cp -p /var/log/squid/store.log /var/log/squid/store.log-janeiro
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi

if [ $data == "02" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/02/$ano-28/02/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-fevereiro
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-fevereiro
cp -p /var/log/squid/store.log /var/log/squid/store.log-fevereiro
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi

if [ $data == "03" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/03/$ano-31/03/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-marco
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-marco
cp -p /var/log/squid/store.log /var/log/squid/store.log-marco
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi
if [ $data == "04" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/04/$ano-30/04/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-abril
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-abril
cp -p /var/log/squid/store.log /var/log/squid/store.log-abril
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi

if [ $data == "05" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/05/$ano-31/05/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-maio
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-maio
cp -p /var/log/squid/store.log /var/log/squid/store.log-maio
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi

if [ $data == "06" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/06/$ano-30/06/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-junho
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-junho
cp -p /var/log/squid/store.log /var/log/squid/store.log-junho
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi

if [ $data == "07" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/07/$ano-31/07/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-julho
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-julho
cp -p /var/log/squid/store.log /var/log/squid/store.log-julho
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi
if [ $data == "08" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/08/$ano-31/08/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-agosto
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-agosto
cp -p /var/log/squid/store.log /var/log/squid/store.log-agosto
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi

if [ $data == "09" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/09/$ano-30/09/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-setembro
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-setembro
cp -p /var/log/squid/store.log /var/log/squid/store.log-setembro
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi

if [ $data == "10" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/10/$ano-31/10/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-outubro
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-outubro
cp -p /var/log/squid/store.log /var/log/squid/store.log-outubro
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi

if [ $data == "11" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/11/$ano-30/11/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-novembro
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-novembro
cp -p /var/log/squid/store.log /var/log/squid/store.log-novembro
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi
if [ $data == "12" ] ;then
/usr/bin/sarg -f /usr/local/sarg/sarg.conf -d 01/12/$ano-31/12/$ano
cp -p /var/log/squid/access.log /var/log/squid/access.log-dezembro
cp -p /var/log/squid/cache.log /var/log/squid/cache.log-dezembro
cp -p /var/log/squid/store.log /var/log/squid/store.log-dezembro
cat /dev/null > /var/log/squid/access.log
cat /dev/null > /var/log/squid/cache.log
cat /dev/null > /var/log/squid/store.log

fi

Logs
====

Agora veremos como os LOGs ficam após serem rotacionados.

# cd /var/log/squid
# ls -lrth
total 1.2G
-rwxr-xr-x 1 nobody users 22K 2008-02-28 16:35 cache.log-fevereiro*
-rwxr-xr-x 1 nobody users 111M 2008-02-28 22:59 store.log-fevereiro*
-rwxr-xr-x 1 nobody users 109M 2008-02-28 22:59 access.log-fevereiro*
-rwxr-xr-x 1 nobody users 46K 2008-03-31 16:50 cache.log-marco*
-rwxr-xr-x 1 nobody users 136M 2008-03-31 22:59 store.log-marco*
-rwxr-xr-x 1 nobody users 121M 2008-03-31 22:59 access.log-marco*
-rwxr-xr-x 1 nobody users 64K 2008-04-30 18:12 cache.log-abril*
-rwxr-xr-x 1 nobody users 160M 2008-04-30 23:58 store.log-abril*
-rwxr-xr-x 1 nobody users 102M 2008-04-30 23:58 access.log-abril*
-rwxr-xr-x 1 nobody users 229M 2008-06-12 17:17 store.log*
-rwxr-xr-x 1 nobody users 42K 2008-06-12 17:17 cache.log*
-rwxr-xr-x 1 nobody users 184M 2008-06-12 17:17 access.log*

Assim fica mais tranquilo para o SARG trabalhar também e os teus logs mais
organizados. : )

Conclusão
=========

Cuidar dos logs sempre é triste. Os scripts vão surgindo conforme a necessidade
de administração do servidor.

Esta foi uma alternativa que achei mais interessante para o meu caso. Caso
tentam sugestões de melhoria ou outras alternativas para solucionar este caso,
todas serão bem vindas.

Vivendo e aprendendo!

Roney Médice
Analista de Sistemas e Bacharel em Direito

Variante do Conficker cria mofo virtual em MP3

Abril 1, 2009

Pesquisadores de universidades norte-americanas revelaram o resultado de um estudo conjunto que confirma a existência de um novo tipo de praga virtual, que não pode ser classificada de vírus nem de cavalo de Troia.

Professores de ciência da computação na Universidade Livre do Oeste da Califórnia batizaram a descoberta de “fungo de computador“, e ela pode estar associada ao vírus Conficker, que deve atacar milhões de computadores nesta quarta-feira (01).

De uma maneira análoga ao que acontecia com os fungos, mofos e bolores que atacavam as fotos em filme e fitas cassete no século passado, o fungo virtual degrada os arquivos de imagem, som e vídeo armazenados no computador. “O problema acontece até mesmo com arquivos de backup que nunca são acessados”, alerta Antonio de Marco, pesquisador adjunto da Universidade Presbiteriana de Michigan, o descobridor da ameaça. “Ninguém pode ficar tranquilo só por ter tudo copiado em DVDs.”

Os cientistas apuraram uma perda média de qualidade de 7% por ano para imagens JPEG, 15% para arquivos TIFF e 4% para áudio MP3. Quanto mais baixo o bitrate do MP3, mais rápida é a deterioração. Outros arquivos atingidos são os vídeos QuickTime MOV, com 14%, seguidos dos AVI em DiVX, com 9%.

Arjun Radhakrishnan, doutor em Ciência da Computação em Stanford, explica que o fungo virtual não tinha sido claramente detectado até agora porque seus efeitos são graduais e insidiosos. “O usuário típico de computador nunca pensou muito sobre esses fenômenos, porque a perda de desempenho do próprio sistema operacional é considerada um fato trivial.” Segundo ele, as pessoas acham normal e compreensível que a música pirateada do Napster em 2000 tenha vocais abafados e percussão indistinta, assim como as imagens pornográficas baixadas da Internet ficam visivelmente menores e mais sujas com o tempo. Arquivos de

Photoshop abrem com as cores inexplicavelmente erradas, escurecem e desbotam. Outros tipos de arquivos perdem seus ícones característicos. Até textos podem se deteriorar, abrindo com os caracteres acentuados trocados. Tudo isso seria uma variedade de sintomas do fungo digital.

O problema pode ser confirmado ao comparar arquivos com cópias salvas em outros computadores há alguns anos, assim como fotos digitais com cópias impressas da época em que elas eram novas, ou gravações de áudio digitais com seus correspondentes em fitas analógicas. “Houve uma degradação notável e progressiva de quase todos esses materiais, e muitos deles poderão não resistir em forma aproveitável até a próxima década”, alerta Bogus McCall, professor de filosofia cibernética da Universidade Cornell.

Ainda não se descobriu uma causa clara para a doença virtual atingir mais alguns computadores e arquivos do que outros, nem o método de transmissão do mal, que parece não ser causado por crackers ou hackers. Aparentemente, existem fatores ambientais.

O que fazer para evitar o fungo eletrônico? Segundo os cientistas, enquanto não surge uma solução comercial em software, a recomendação é fazer pelo menos três cópias diárias de todos seus arquivos e guardá-los em mídias mais antigas e duráveis, como CD-R ou disquete; transcrever todos os vídeos ripados de DVD para a boa e velha fita VHS; enviar todas as suas fotografias para o laboratório para serem copiadas em papel. “É a única maneira garantida de assegurar maior longevidade para os seus dados digitais”, afirma Rockwell.

É, claro, se você leu tudo isso e acreditou, parabéns, você caiu na nossa pegadinha de primeiro de abril.

Roney Médice

Analista de Sistemas e Bacharel em Direito


Apagando o histórico de comandos digitados na shell: bash_history

Março 13, 2009

Quero esclarecer que não estou fazendo apologia para encobrir certas atitudes reprováveis mas, estou indicando uma forma de como apagar os rastros deixados ao digitar comandos na shell (Sistema Linux). Não me pergutem qual seria o motivo para tal ação, apenas estou disponibilizando a informação que, para alguns, podem ter seus motivos para executar tal procedimento.

Toda vez que entramos na shell do linux (console) para executarmos comandos, o linux vai gravando um histórico dentro do arquivo ~/bash.history, funcionamento esse idêntico ao antigo Doskey (Sistema Windows). Isso visa facilitar aos administadores de sistemas, a otimizar o tempo e buscar no histórico, os comandos que são mais executados e evitar perda de tempo para redigitá-los.

Assim, nesse momento, você deve ter em seu arquivo bash_history, todos os comandos que você executou nos ultimos tempos, lógico que depende do tamanho de buffer que esse arquivo irá suportar e armazenar os comandos digitados. Mas vamos ao propósito do artigo.

Para visualizar o conteúdo do history, você pode salvar em arquivo com o comando “cat ~/bash_history > log” (não digite com as aspas) e depois visualize o conteúdo do arquivo log  “cat log” (sem as aspas).

Agora, para apagar o histórico dos comandos, digite “rm ~/bash_history” (sem as aspas) e pronto.  Uma dica para os administradores de sistemas: rode no cron, um script para que de tempo em tempo, seja armazenado o conteúdo do arquivo bash_history em um  arquivo de log para futuras auditorias.

Roney Médice

Analista de Sistemas e Bacharel em Direito.


Compilando o Kernel 2.6.x

Agosto 18, 2008

este artigo vou ensinar a compilar o kernel do linux da versão 2.6.x e mostrar as diferenças desta versão para a anterior, 2.4.x.

Compilar o kernel do linux é uma tarefa que se aprende com o tempo, depois de várias tentativas. Mas os problemas geralmente se resumem à configuração e nao à compilação. Vou tentar dar umas dicas referentes ? configuração, mas lembre-se que cada maquina usa uma configuração diferente por isso tenha em mãos toda a configuração do seu computador e não desista na primeira tentativa.

Para compilar você vai precisar do gcc (A documentação do kernel recomenda a versão 2.95 do gcc, mas eu tenho compilado com sucesso o kernel com as versões 3.2 e 3.3 e muitas distros fazem isso também, a dica é tentar compilar com a versão mais atual do gcc, se der algum problema compile com a 2.95), do Ncurses (geralmente um pacote chamado libncurses-dev ou Ncurses-devel), do make e do module-init-tools.

Qualquer dúvida sobre os pacotes necessários para compilar o kernel, leia o arquivo /usr/src/linux/Documentation/Changes.

Vou usar como referência o kernel da versão 2.6.4 baixado do kernel.org.

Baixe o source do kernel (clique no ‘F’ ao lado da versão do kernel que você deseja baixar. O ‘F’ significa ‘Full source’). Copie o arquivo baixado para /usr/src:

[root@host] # cp linux-2.6.4.tar.bz2 /usr/src

e decompacte-o:

[root@host] # cd /usr/src

[root@host] # tar jxvf linux-2.6.4.tar.bz2

Para facilitar, crie um link simbólico para o diretório que foi criado chamado ‘linux’. Se já existir, remova e crie novamente:

[root@host] # rm /usr/src/linux

[root@host] # ln -s /usr/src/linux-2.6.4 /usr/src/linux

Agora vamos ? configuração. Estando em /usr/src/linux, digite

[root@host] # make mrproper

para limpar as configurações e depois

[root@host] # make menuconfig

Existem outras maneiras de configurar o kernel, inclusive em modo gráfico, mas aqui vou me referir apenas ao menuconfig.

Como disse anteriormente, esta parte depende muito da máquina em questão. É necessário que você selecione todas as opções referentes ao seu hardware e os sistemas de arquivo que você usa. No menuconfig um ‘*’ significa que a opção será compilada dentro da imagem do kernel, um ‘M’ significa que será compilado como um módulo externo.

O sistema de arquivos que a sua partição linux usa deve ser marcado como ‘*’, bem como suporte a IDE (ou SCSI se for o caso). O restante das opções podem ser escolhidas como módulo, você escolhe.

Lembre-se que se você selecionar alguma opção como módulo, deve marcar a opção

Loadable Module Support -> Enable loadable module support,

Loadable Module Support -> Module unloading

e

Loadable Module Support -> Automatic kernel module unloading.

Depois publicarei um artigo mostrando com mais detalhes a configuração.

Salve a configuração. Agora vamos compilar.

A compilação dos kernels da versão 2.6 é um pouco diferente da 2.4. Não existe mais o comando make dep e tem alguns outros alvos (make help exibe as opções disponíveis).

Vamos por partes:

A primeira coisa a fazer é criar a imagem ‘bootável’ do kernel:

[root@host] # make bzImage

Este comando pode demorar bastante tempo dependendo da máquina usada. Se a sua máquina for antiga arrume algo pra fazer pois é tedioso ficar assistindo ? compilação.

Após terminado esse comando a imagem do kernel gerada é gravada em /usr/src/linux/arch/i386/boot/bzImage

O próximo passo é compilar os módulos (aquelas opções selecionadas como ‘M’ na configuração). Se você nao selecionou nada como ‘M’ (o que não é comum), pode pular essa parte.

[root@host] # make modules

E agora instale os módulos criados:

[root@host] # make modules_install

Se você não tiver instalado o pacote module-init-tools, vai receber uma mensagem de erro ao final do make modules_install. Se isso acontecer, instale o module-init-tools pois sem ele o kernel 2.6 nao vai funcionar.

Tudo certo até aqui? Parabéns, o seu kernel está compilado. Vamos agora configurar o nosso sistema para poder ‘bootar’ este novo kernel.

Copie os arquivos de imagem, configuração e o System.map para /boot

[root@host] # cp /usr/src/linux/arch/i386/boot/bzImage
/boot/vmlinuz-2.6.4

[root@host] # cp /usr/src/linux/.config /boot/config-2.6.4

[root@host] # cp /usr/src/linux/System.map /boot/System.map-2.6.4

Vamos configurar agora o gerenciador de boot para usar esse novo kernel. É importante que você mantenha a versão antiga do kernel intocada para poder inicializar o linux em caso de erros no kernel novo.

Se você usa o LILO, edite o arquivo /etc/lilo.conf com o seu editor de textos preferido.

Saiba qual a partição onde seu linux está instalado. É algo como /dev/hdax, onde x é um número. Olhe no lilo.conf na parte referente ao outro kernel e use a mesma partição na nova configuração. Vou usar /dev/hda2 como referência:

A configuração ficará assim:

image /boot/vmlinuz-2.6.4
    root=/dev/hda2
    label=Linux-2.6.4
    read-only

Salve o arquivo e execute o comando /sbin/lilo para gravar a nova configuração

[root@host] # /sbin/lilo

Se o seu gerenciador de boot é o GRUB, edite o arquivo /boot/grub/grub.conf ou /boot/grub/menu.lst. Veja qual a partição onde seu linux está instalado. O GRUB usa uma configuração um pouco diferente, do tipo (hdx,y), onde x é a interface IDE e o y é o numero da partição. Neste caso /dev/hda2 = (hd0,1). Vou usar /dev/hda2 como exemplo mas lembre-se de trocar para a partição que você usa.

A entrada no arquivo ficará assim:

title Linux-2.6.4

root (hd0,1)

kernel /boot/vmlinuz-2.6.4 root=/dev/hda2 ro

Salve o arquivo e pronto. O GRUB nao necessita que seja rodado nenhum comando apos a alteração.

Roney Médice

Analista de Sistemas e Bacharel em Direito


OpenSuse 11: Instale os Drivers 3D da ATI e nVidia com um clique!

Agosto 14, 2008

Com a chegada do OpenSuse 11 a instalação dos drivers proprietário da ATI e nVidia estão a apenas 1 clique de distância, nenhuma configuração manual do xorg.conf é necessária!

Vamos ao passo a passo:

1a. Clique no ícone que corresponde à sua placa de vídeo:

Driver ATI

Driver nVidia

1b. Ou você pode instalá-lo manualmente utilizando os seguintes comandos:

Para Placas ATI:

su -c “OCICLI http://opensuse-community.org/ati.ymp”

Para Placas nVidia:

su -c “OCICLI http://opensuse-community.org/nvidia.ymp”

1c. Ainda temos mais uma maneira, usando o novo comando Zypper:

Para Placas ATI:

zypper sa http://www2.ati.com/suse/11.0 ati

zypper in x11-video-fglrxG01

Para Placas nVidia:

zypper sa http://download.nvidia.com/opensuse/11.0 nvidia

zypper in x11-video-nvidiaG01

Se, por algum motivo o servidor X não detectar a presença dos novos drivers mesmo que você tenha reiniciado o seu ambiente desktop:

Placas ATI:
Abra um terminal e digite: sudo aticonfig –initial Isto irá configurar o X para usar o driver da ATI, em seguida reinicie o X pressionando CTRL + ALT + BACKSPACE.

Placas nVidia:

Como root, digite: sax2-r em uma janela do terminal, o sax irá detectar o chipset NVIDIA e permitir que você possa configurar sua resolução.

2. Compiz:

O openSUSE 11.0 já vem com Compiz e Compiz Fusion 0.7.4 pré-instalados. Para utilizar o Compiz basta inicia-lo com: simple-ccsm e ai ligar o Compiz, uma vez que o driver já estiver instalado.

Isso é ótimo, pois como instalar drivers de vídeo e configurar o Compiz tem sido uma área problemática, todos esperamos que estes novos recursos tornem muito mais agradável a utilização do OpenSuse. Devemos agradecre tambem a Jigish Gohil, por sempre disponibilizar a última versão do Compiz e Compiz Fusion no repositório X11: XGL ou em seu repositório pessoal onde você também pode ter acesso direto a uma infinidade de plugins extras desenvolvido pelos desenvolvedores da propria Compiz Fusion.

Para obter mais informações atualizadas, confira os links: ATI ou nVidia

Livremente adaptado de http://blog.linuxoss.com

Roney Médice

Analista de Sistema e Bacharel em Direito