Page 1


Governo e SL

Expediente editorial Diretor Geral Rafael Peregrino da Silva rperegrino@linuxmagazine.com.br

Kemel Zaidan kzaidan@linuxmagazine.com.br Laura Loenert Lopes llopes@linuxmagazine.com.br Editora de Arte Larissa Lima Zanini llima@linuxmagazine.com.br Editor Online Felipe Brumatti Sentelhas fsentelhas@linuxmagazine.com.br Colaboradores Alexandre Borges, Alexandre Santos, Augusto Campos, Charly Kühnast, Chris Binnie, Erik Bärwaldt, Eva-Katharina Kunst, Florian Effenberger, Jon ‘maddog’ Hall, Jürgen Quade, Klaus Knopper, Konstantin Agouros, Kurt Seifried, Martin Loschwitz, Thilo Uttendorfer, Tim Schürmann, Udo Seidel, Valentin Höbel, Vincze-Aron Szabo, Zack Brown. Tradução Rodrigo Garcia, Sebastião Luiz da Silva Guerra. Revisão Cristiana Ferraz Coimbra. Editores internacionais Uli Bantle, Andreas Bohle, Jens-Christoph Brendel, Hans-Georg Eßer, Markus Feilner, Oliver Frommel, Marcel Hilzinger, Mathias Huber, Anika Kehrer, Kristian Kißling, Jan Kleinert, Daniel Kottmair, Thomas Leichtenstern, Jörg Luther, Nils Magnus. Anúncios: Rafael Peregrino da Silva (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 3675-2600 Penny Wilby (Reino Unido e Irlanda) pwilby@linux-magazine.com Amy Phalen (América do Norte) aphalen@linuxpromagazine.com Hubert Wiest (Outros países) hwiest@linuxnewmedia.de Diretor de operações Claudio Bazzoli cbazzoli@linuxmagazine.com.br Na Internet: www.linuxmagazine.com.br – Brasil www.linux-magazin.de – Alemanha www.linux-magazine.com – Portal Mundial www.linuxmagazine.com.au – Austrália www.linux-magazine.es – Espanha www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido www.linuxpromagazine.com – América do Norte Apesar de todos os cuidados possíveis terem sido tomados durante a produção desta revista, a editora não é responsável por eventuais imprecisões nela contidas ou por consequências que advenham de seu uso. A utilização de qualquer material da revista ocorre por conta e risco do leitor. Nenhum material pode ser reproduzido em qualquer meio, em parte ou no todo, sem permissão expressa da editora. Assume-se que qualquer correspondência recebida, tal como cartas, emails, faxes, fotografias, artigos e desenhos, sejam fornecidos para publicação ou licenciamento a terceiros de forma mundial não-exclusiva pela Linux New Media do Brasil, a menos que explicitamente indicado. Linux é uma marca registrada de Linus Torvalds. Linux Magazine é publicada mensalmente por: Linux New Media do Brasil Editora Ltda. Rua São Bento, 500 Conj. 802 – Sé 01010-001 – São Paulo – SP – Brasil Tel.: +55 (0)11 3675-2600 Direitos Autorais e Marcas Registradas © 2004 - 2012: Linux New Media do Brasil Editora Ltda. Impressão e Acabamento: IBEP Gráfica. Atendimento Assinante www.linuxnewmedia.com.br/atendimento São Paulo: +55 (0)11 3675-2600 Rio de Janeiro: +55 (0)21 3512 0888 Belo Horizonte: +55 (0)31 3516 1280 ISSN 1806-9428

Linux Magazine #91 | Junho de 2012

Impresso no Brasil

No editorial da edição anterior da Linux Magazine, abordei a questão dos ataques ao Software Livre (e às iniciativas do Governo Brasileiro a seu favor) proferidos por representantes da Associação Brasileira das Empresas de Software (ABES), da Federação Nacional da Informática (Fenainfo) e da Associação das Empresas Brasileiras de Tecnologia da Informação (Assespro) . Em que pesem os interesses dessas associações em manter o status-quo do (velho) modelo de comercialização de software proprietário, gostaria de deixar aqui minha modesta opinião a respeito do modo como o governo poderia apoiar o desenvolvimento e a disseminação do Software Livre enquanto opção tecnológica no mercado nacional. Em questões estratégicas, é óbvio ululante que o governo pode e deve se reservar o direito de desenvolver soluções próprias, ainda que com auxílio da iniciativa privada e de organizações não-governamentais, sejam elas com base em sistemas de código aberto ou não. No que tange entretanto a tecnologias ditas “comoditizadas”, ou seja, já existentes tanto em variantes de código aberto quanto proprietárias, acredito que a melhor abordagem dentro da máquina pública seja a especificação pelo governo do tipo de solução de que necessita em Software Livre, que deve perfilar a partir daí o caminho da licitação pública com pregão eletrônico, deixando a cargo da iniciativa privada o fornecimento dos serviços de instalação, configuração e suporte à solução. Para evitar a entrada de “aventureiros” nesse tipo de processo, deveria ser necessária a comprovada atuação no segmento da solução a ser oferecida, bem como a disponibilidade de profissionais devidamente providos de competência na área em questão. O Portal do Software Público Brasileiro é uma iniciativa que tem buscado esse tipo de posicionamento, enquanto outras iniciativas no governo, por questões como falta de mão de obra especializada e a busca por um controle mais ostensivo do desenvolvimento da solução, optaram pelo desenvolvimento interno de soluções, usando como base para isso sistemas de código aberto. Estou convencido de que uma abordagem mais inclusiva de empresas de mercado é a mais adequada em praticamente todos esses casos, já que ela estimula a criação de competências em Software Livre na iniciativa privada, um mercado que permanece “acanhado” no Brasil até o momento, infelizmente. Isso também, se não garante, pelo menos assegura a continuidade desse tipo de projeto dentro do governo, uma vez que as soluções de código aberto “fornecidas” pelas empresas que ganharam um processo licitatório, podem fazer valer seus contratos, mesmo no caso da mudança para governos que preferem abordagens proprietárias no que concerne às soluções em software. O governo poderia manter seus especialistas em Software Livre em suas lides para fiscalizar a implementação das soluções contratadas e garantir entregas dentro do prazo e no nível de qualidade necessários. Essa abordagem evitaria ainda qualquer tipo de aprisionamento a determinado fornecedor, uma vez que as soluções permaneceriam de código aberto, mas ao mesmo tempo, estimularia toda uma cadeia produtiva em torno do Software Livre, que estaria também disponível para oferecê-lo à própria iniciativa privada. Com tudo isso, inclusive, ABES & Cia. não teriam do que reclamar, certo? ■

EDITORIAL

Editores Flávia Jobstraibizer fjobs@linuxmagazine.com.br

Rafael Peregrino da Silva Diretor de Redação

3


ÍNDICE

CAPA Da machadinha às máquinas que pensam

31

A automação de sistemas é algo que não pode ser ignorado, pois além de evitar que erros sejam cometidos, propiciam que os recursos humanos fiquem livres para serem utilizados naquilo que realmente são imprescindíveis: análise e raciocínio Análise automatizada

32

Arquivos de log contém registros do que acontece em um sistema Linux e nos serviços que ele executa. Ferramentas como o Logcheck e Logsurfer encontram os eventos mais importantes para o administrador, e podem até disparar ações apropriadas automaticamente.

Esteja presente (sem estar)

36

Quando um nó de cluster falha, a ferramenta de alta disponibilidade Pacemaker inicia os serviços em outro nó. Um recurso menos conhecido é a habilidade do Pacemaker de restaurar serviços que falharam.

Entrega de pacotes

40

Números podem enganar. Tenha a certeza de que está olhando para os números certos quando mede o desempenho do seu servidor.

Eureka!

45

Pedimos a alguns dos nossos autores para compartilhar seus truques favoritos de automação

4

www.linuxmagazine.com.br


Linux Magazine 91 | ÍNDICE

ANÁLISE

COLUNAS Klaus Knopper

08

Charly Kühnast

10

Augusto Campos

12

Alexandre Borges

14

Zack Brown

16

Kurt Seifried

18

Caixa de areia

52

NOTÍCIAS Geral

22

➧ Destaques do Ubuntu Developer Summit ➧ Debian Administrator’s Handbook ➧ Robótica em código aberto

Faça você mesmo

➧ Microsoft ataca igualdade de navegadores

56

Testamos o mini-pc Zotac ZBOX HD-ID11 e descobrimos que o aparelho pode ser uma excelente central multimidia e também um computador completo para uso pessoal.

CORPORATE Notícias

O LXC é totalmente integrado ao kernel e oferece uma abordagem rápida e fácil para virtualizar programas individuais e sistemas inteiros no Linux sem a necessidade de patches ou módulos adicionais.

24

➧ Certificação para fornecedores de serviços LibreOffice

TUTORIAL

➧ Uma decisão confusa para o caso Android

Em busca de pistas

Entrevista com Bill Nitzberg

26

Coluna: Jon “maddog” Hall

28

Coluna: Alexandre Santos

30

66

ANDROID Robô remoto

48 Os programadores e administradores Linux apreciam os benefícios dos logs de eventos. A ferramenta Glogg é a escolha perfeita para pesquisar até mesmo em grandes arquivos de log. O poder da depuração

69

Depurar o kernel de um sistema operacional em funcionamento sempre foi uma coisa traiçoeira, mas com o emulador Qemu, isso pode não ser mais uma tarefa tão árdua.

REDES Pacote de estatísticas

61

Deixou seu sistema funcionando? Esqueceu de iniciar um backup crítico? Controle seu computador Linux a partir de qualquer local com um telefone Android.

SEGURANÇA Em guarda!

74 Para verificar a saúde de um sistema Linux, os administradores podem recorrer ao vmstat, ao iostat, ao netstat e ao ifstat. Ou você pode simplesmente usar o versátil dstat, que combina as características de várias ferramentas em um único pacote.

SERVIÇOS

O PortSentry monitora suas portas e detecta quando alguém está tentando procurar por alguma aberta.

Linux Magazine #91 | Junho de 2012

Editorial

03

Emails

06

Linux.local

78

Preview

82

5


SEÇÃO | Matéria

Entrevista: Bill Nitzberg da Altair

CORPORATE

Hardware ou Cloudware? A Altair produz aplicativos para sistemas de computação de alto desempen (HPC) e também fornece serviços de HPC através da nuvem. Perguntamos a Bill Nitzberg, diretor técnico da divisão PBS Works da Altair, sobre as mudanças no mercado e os benefícios da nuvem versus HPC. por Joe Casad Linux Magazine » Os principais produ-

tos da Altair são suas ferramentas de software baseadas em simulação para engenharia e design. No passado, vocês eram uma empresa de software convencional, que vendia a outros usuários software licenciado para ser executado em sistemas locais – o que ainda fazem, é claro. Mas o que estão fazendo agora para enfrentar o desafio da nuvem? Bill Nitzberg » Ah a nuvem... Sou um pouco cético. Deixe-me dizer primeiro a minha visão do que é nuvem e, em seguida, em que trabalhamos na nuvem. De certa forma, a computação na nuvem é realmente nova, e de outra não é. Desde os anos 1960 as pessoas queriam conectar computadores em conjunto para criar facilmente a ilusão de que todos eles eram na verdade somente um computador. E isso passou por várias interações – nos anos 1970 com a computação distribuída, nos 1980 com a rede de computadores, nos 1990 com as estações de rede Sparc e computação em cluster, e depois, na primeira década de 2000, com a computação em grid – e agora temos a computação em nuvem. A grande imagem da computação na nuvem, que deixa todo mundo super animado, é muito mais centrada na computação empresarial tradicional: data center, email, web, aplicativos cor-

26

porativos. O impacto real e as grandes oportunidades estão no lado do data center da nuvem. O data center típico, em uma empresa qualquer, estará usando umas duas máquinas para servidor de emails com talvez 20% do tempo – ou seja, 20% de utilização – gerando um enorme desperdício. Consolidar isso é uma grande oportunidade. O espaço da HPC é um pouco diferente, e a Altair trabalha nesse espaço. Computação de alto desempenho significa trabalhar em problemas realmente difíceis e com toneladas e toneladas de computação para fazer o trabalho. Tradicionalmente, quem está fazendo HPC usa seus sistemas com 70%, 80% ou 90% de utilização ou mais. Assim, os benefícios da consolidação não são tão significativos. Mas o outro lado da nuvem é essa bela e abstrata interface entre usuários e desenvolvedores, implementada como portais. Então, quando você pensa em nuvem no lado do negócio, realmente não se importa com o que está por trás da interface quando a acessa. Pode ser um monte de gente, ou poderia ser um monte de máquinas. Você não tem que saber. E isso na verdade é o que mais se leva do mercado de data center para o mercado da HPC. LM » Não é possível que isso leve uma grande empresa a manter um sistema interno de HPC funcionan-

do 24/7 com novos cálculos de 90% a 95% de uso, e que talvez a nuvem crie uma entrada no mercado para empresas menores que não têm trabalho suficiente para manter um sistema interno de HPC ocupado? BN » Isso é absolutamente verdadeiro. Se você é uma grande empresa, pode construir uma infraestrutura interna mais barata do que a fornecida pela Google ou a Amazon para computação de alto desempenho – ao que parece, quando falo com as pessoas, algo em torno da metade do custo. Se você é um player pequeno, e só um mês do ano – ou, digamos, dois meses do ano – refaz alguma coisa onde só precisa usar a computação HPC em dois meses do ano, então realmente usar computação HPC em nuvem é uma enorme vantagem comparando-se a tentar comprar e manter seu próprio sistema. LM » Visto que a interface é um componente crítico, a Altair lançou dois produtos recentemente: o Compute Manager e o PBS Desktop. Como essas ferramentas se enquadram nesse conceito de uma interface para a nuvem? BN » O Compute Manager na verdade é nosso principal portal – nosso portal da terceira geração – e nós aprendemos bastante com ele. Achamos que ele faz algumas coisas realmente originais. Para

www.linuxmagazine.com.br


Entrevista com Bill Nitzberg | CORPORATE

os engenheiros, ele apresenta um fluxo de trabalho em relação aos tipos de coisas que você precisa fazer. Eu quero apresentar o meu trabalho, tenho alguns trabalhos em execução e quero realmente monitorá-los, e não me refiro apenas a ver quais estão sendo executados e quais não estão, mas estou falando em poder clicar de todas as maneiras nos dados que estão em execução no dispositivo e dizer: “Ei, esta simulação não está convergindo. Deixe-me mudar alguns parâmetros e reenviá-los”, bem no meio de uma execução. Por isso ele é realmente preparado para lhe dar uma visão de sua simulação sem expor todos os detalhes da ciência da computação e fazê-lo aprender os meandros do Linux e do Windows. Isso acontece do lado do usuário. Do lado da administração, fatoramos várias das partes administrativas de uma forma muito denotacional, basicamente descritas em um arquivo XML, de uma maneira muito portátil, de modo que diferentes organizações possam de fato compartilhar o que chamamos de definições de aplicativo, e assim só têm que configurar coisas muito específicas do local para um determinado conjunto de aplicativos. LM » E a ferramenta PBS Desktop? BN » Quando estávamos construindo portais, não conseguimos decidir se a melhor interface que poderíamos apresentar aos nossos clientes era uma interface web, que tem um grande número de vantagens, ou uma interface de aplicativo mais no estilo de um iPhone ou iPad. Então construímos o Compute Manager como uma interface web e, ao mesmo tempo, construímos o PBS Desktop, que é um pouco mais despojado, mas também um pouco mais fácil de usar, para ser executado como um aplicativo cliente no Windows e no Linux. E assim, por exemplo, uma das coisas um pouco difíceis de fazer com uma aplicativo web é arrastar e soltar um arquivo no seu desktop, mas isso é realmente fácil de fazer com um aplicativo cliente. Portanto, se você está

Linux Magazine #91 | Junho de 2012

sentado em frente ao seu desktop Windows ou Linux, pode pegar um arquivo, arrastar e soltar no PBS Desktop. Ele reconhecerá automaticamente qual é o aplicativo, preencherá todos os parâmetros e você pode apenas pressionar “Go”. Então você volta novamente mais tarde para verificar se tudo correu bem. Quando a execução é feita, o PBS Desktop automaticamente copia todos os arquivos para você. LM » O que você diria às pessoas que estão pensando em entrar na HPC agora e tentando decidir se querem seu próprio sistema HPC ou se querem trabalhar em algum tipo de ambiente baseado em nuvem? BN » No mundo da HPC, cada cliente é realmente único, por isso é um pouco difícil elaborar uma regra geral. Um problema é que se você está entrando no mundo da HPC apenas agora, se não tem muita experiência com os aplicativos que está tentando usar, isso é realmente mais importante do que executá-los de fato, pois se você está tentando projetar um novo widget, de fato precisa saber sobre o software de design de widget. Então, se você já passou desse limite, quer saber: devo usar uma nuvem ou devo comprar meus computadores? A única regra geral é: você precisa fazer isso há algum tempo para saber se está caminhando para se adequar a um campo ou outro. Se sua necessidade é realmente a transferência ininterrupta de dados, é um ajuste melhor para uma nuvem. Estou verdadeiramente disposto a comprar metade de um rack de máquinas e colocá-las em meu data center, pagando, digamos, de US$100.000,00 a $250.000,00? Se você pode realmente manter as máquinas ocupadas, vai economizar muito dinheiro fazendo isso. Se não pode mantê-las ocupadas, vai gastar muito dinheiro. LM » Então você teria de começar a trabalhar em algum tipo de base sob demanda adquirindo alguma experiência com as ferramentas antes de tomar uma decisão final?

BN » Se alguém chegasse até mim e dissesse: “Estamos executando a suíte de ferramentas Altair e queremos comprar um cluster. Devemos fazê-lo?” Eu responderia: “Venha para o HyperWorks on demand, experimente-o por um mês, veja o quanto você está usando e decida se faz sentido – se você está usando o suficiente para que valha a pena comprar um cluster ou não”. LM » A Altair descreve o Compute Manager como “...o primeiro bloco fundamental no plano da Altair para construir uma plataforma de simulação empresarial moderna baseada na web.” Você pode contar o que será o próximo bloco? Qual é o grande plano? BN » Posso lhe dizer um pouco. Vemos que há mais para o trabalho de engenharia do que apenas apresentar o trabalho e obter resultados. E o Compute Manager pode lhe permitir ver os resultados e tirar uma amostra do trabalho enquanto está sendo executado. Na engenharia, você quer fazer muito mais. Você deseja gerenciar melhor seus dados. Você deseja obter metadados sobre que tipo de trabalhos está submetendo. Vamos lentamente lançar ferramentas nesta área, dentro da suíte corporativa HyperWorks. Também com relação a resultados e visualização, é bom ser capaz de extrair um dado e mostrá-lo graficamente enquanto um trabalho está sendo executado. Também seria bom interagir com seus dados – talvez você não precise movê-los para fora da nuvem, por exemplo, se estiver usando uma nuvem, você pode visualizá-los ali mesmo. LM » Qual o futuro do PBS Works e da Altair? BN » Este ano é realmente muito empolgante para nós pelo fato de o Compute Manager estar tendo uma recepção melhor do que pensei que teria. Então o futuro para nós é manter um foco muito maior em fazer as coisas mais fáceis de usar para usuários finais, e o Compute Manager é a nossa maneira de fazê-lo. ■

27


Automação de sistemas

CAPA

Da machadinha às máquinas que pensam A automação de sistemas é algo que não pode ser ignorado, pois além de evitar que erros sejam cometidos, propiciam que os recursos humanos fiquem livres para serem utilizados naquilo que realmente são imprescindíveis: análise e raciocínio. por Kemel Zaidan

A

ciência da computação surgiu justamente com o objetivo de automatizar os processos mentais repetitivos e que, por conta disso, tornam-se massantes ao seres humanos. Através da programação, fomos capazes de “ensinar” os computadores a executar tarefas complexas ao dividí-las em procedimentos menores, mas que resultavam em grandes feitos ao serem executadas segundo uma determinada “ordem lógica”. O mais incrível é que ao fazermos isso, permitimos que os computadores apropriem-se de um raciocínio criado pelo gênio humano e processem-no com uma eficiência e uma velocidade que nós, seres humanos, jamais seremos capazes de alcançar. Essa é a beleza oculta por trás dos computadores: máquinas criadas por nós, para pensarem como nós, mas com uma eficácia sobre-humana. O homem que criou o primeiro computador deve ter se sentido, muito provavelmente, igual ao homem que criou a primeira machadinha de pedra lascada; pois os computadores estão para o cérebro, assim como as ferramentas estão para as mãos. Essa atitude é quase uma obsessão humana: tentar automatizar tudo que é possível, para que fiquemos liberados das tarefas monótonas e cotidianas de forma a nos concentrarmos naquilo que é realmente importante e que demanda nossa atenção de forma integral e não previsível.

Linux Magazine #91 | Junho de 2012

É nessa hora que o administrador de sistemas de código aberto sente-se feliz. Afinal, ele tem ao alcance de suas mãos uma infinidade de ferramentas de automação que podem poupar-lhe tempo e esforço. E tudo isso é instalável com uma simples linha de comando (como em um apt-get ou yum install) sem que seja necessário para tal, perder tempo e dinheiro ao pedir ao setor de compras da empresa que adquira licenças onerosas, passando por aprovações, autorizações etc. Estão todas lá, esperando para que você faça uso delas. O preço de tudo isso? Apenas o conhecimento que você adquire em algumas horas de leitura de man pages ou fóruns. E, nesse caso, nós te damos uma ajudinha para acelerar ainda mais o processo. Afinal de contas, você encontra tudo bem explicadinho por aqui mesmo. A experiência do usuário de GNU/ Linux é cheia de possibilidades de automação, uma vez que a linha de comando permite “programar” facilmente um aplicativo, seja com ferramentas fáceis de usar, como o sleep ou com interações mais complexas que podem se dar pelo uso do cron com scripts em bash. Lembro-me da primeira vez que usei um GNU/Linux e fiquei surpreso com a facilidade de programar o computador para se desligar através do uso do comando shutdown. Os leitores hão de convir comigo que a tarefa, apesar de simples,

não é nada fácil de ser executada em outros sistemas operacionais. Além disso, ao automatizarmos as tarefas do ambiente de TI, não só poupamos tempo como também evitamos que erros possam ser cometidos. Nestes casos, ferramentas como o Logcheck e o Logsurfer podem atuar conjuntamente, de forma que determinadas informações de log disparem ações sem nenhuma intervenção humana. Nas próximas páginas da Linux Magazine, você poderá conferir também a comparação que fizemos entre o M23 e o Spacewalk, duas incríveis ferramentas de provisionamento que te ajudarão na árdua tarefa de instalar e manter atualizado sistemas com pacotes deb e rpm. O já conhecido gerenciador de clusters, Pacemaker, mostra sua versatilidade ao restaurar sozinho serviços que falharam. E não deixe de ler o artigo Eureka!, onde pedimos para alguns de nossos principais autores que compartilhassem como você, leitor, as principais dicas e segredos de automação adquiridas por eles através de muitos anos de experiência. Boa leitura! ■

Matérias de capa Análise automatizada

32

Esteja presente (sem estar)

36

Entrega de pacotes

40

Eureka!

45

31


ANÁLISE | Central multimidia Zotac ZBOX

Central multimidia Zotac ZBOX

ANÁLISE

Faça você mesmo Testamos o mini-pc Zotac ZBOX HD-ID11 e descobrimos que o aparelho pode ser uma excelente central multimidia e também um computador completo para uso pessoal. por Felipe Sentelhas

S

e você tem o hábito de montar seus próprios computadores, então também deve conhecer a marca Zotac. A empresa é uma das principais fabricantes de placas gráficas de alto desempenho e possui também braços nos setores de placas-mãe e mini-PCs, equipados com processadores gráficos da NVIDIA.

Apesar de sua presença no Brasil ser notavelmente maior no ramo das placas gráficas, a empresa vem tentando a sorte com uma série de mini-PCs da série ZBOX no mercado brasileiro. A redação da Linux Magazine recebeu um desses aparelhos para testar seu desempenho e compatibilidade com o sistema operacional aberto GNU/Linux.

Quadro 1: Controle o XBMC através do celular Se você não é fã de deixar um teclado e um mouse conectados à sua central multimidia, poderá usar alternativamente, um aplicativo desenvolvido pelos mesmos criadores do XBMC para controlar a plataforma com seu celular Android [7] ou iPhone [8] através da rede local. Esses aplicativos oferecem uma ampla variedade de controles sobre todo o software de mídia, incluindo volume, buscas por nome de artista, título ou gênero, exibição de minituras das capas dos discos, criação de listas de reprodução e outros recursos no próprio aparelho celular. Para que os aplicativos de controle remoto funcionem é necessário habilitar a opção Habilitar controle do XBMC através do HTTP, que pode ser encontrado através do menu Sistema/Rede na própria plataforma XBMC. Nos aparelhos de celular você pode localizar a central multimidia facilmente com um assistente de configuração presente no aplicativo, ou configurar o acesso manualmente.

56

Self-service, mas para poucos A máquina Zotac ZBOX HD-ID11 (figura 1) foi pensada como um sistema “barebone”, ou seja, uma configuração básica de placa-mãe, oferecendo aos usuários a possibilidade de instalar a memória e o disco rígido que desejarem. Sua estrutura foi pensada para essa interação e oferece fácil acesso para a entrada do disco e da memória na placa-mãe (figura 2) com um gabinete que que pode ser aberto facilmente, com parafusos específicos para esse propósito. Sua estrutura é bem compacta, resultado de uma placa-mãe de fabricação própria que consegue agregar todos os seus elementos em uma caixinha de pouco mais de 188mm x 188mm x 44mm. Nessa pequena caixa estão um processador Atom D510, com dois núcleos e operando a uma velocidade de 1,66GHz, uma GPU integrada NVIDIA ION2 [1], com

www.linuxmagazine.com.br


Central multimidia Zotac ZBOX | ANÁLISE

Figura 1 Zotac ZBOX HD-ID11 parcialmente aberta para acesso fácil à placa-mãe.

512MB de memória DDR3 dedicada, e o chipset Intel NM10 Express. Revestindo tudo isso há uma estrutura de plástico resistente e brilhante, que dá um acabamento interessante e discreto para o produto. Originalmente esse produto não vem com memória RAM ou disco instalados. Ele possui um slot para memória SO-DIMM de 200 pinos, capaz de receber um pente de até 4GB de memória DDR2 com uma velocidade de até 800MHz. A entrada para disco rígido segue o padrão SATA-300 [2] e pode receber tanto discos rígidos (HDD) e discos

em estado sólido (SSD) de tamanho padrão para notebooks e outros computadores pequenos (com 2,5 polegadas). Recebemos o ZBOX já equipado com 2GB de memória RAM e um disco de 320GB, o que consideramos suficiente para experimentar o aparelho. Além disso, o mini-PC conta com diversas saídas e entradas para periféricos e dispositivos. São seis portas USB 2.0 ao todo, com duas na parte frontal e quatro na parte traseira, um conector eSATA, um conector de rede Gigabit, um leitor multi-formato para cartões (MC/SD/SDHC/MS/

Figura 2 Interior da ZBOX sem um disco ou pente de memória presentes.

Linux Magazine #91 | Junho de 2012

MS Pro/xD), uma saída analógica de áudio e uma entrada analógica para microfone, uma saída de áudio digital S/PDIF, um conector de vídeo DVI/R e também uma porta HDMI. A ZBOX conta ainda com conectividade WiFi 802.11 b/g/n. Demos por falta de saídas analógicas mais convencionais, tanto de áudio, como de video. Fica evidente que o aparelho foi pensado para monitores e televisões modernas, como um sério concorrente ao mercado de centrais multimidia. Contudo, a falta desses conectores e a exigência de tecnologias mais recentes podem atrapalhar e até impedir seu uso.

ZBOX e sua TV Decidimos por testar o potencial que o ZBOX possui como um centro de entretenimento; para isso decidimos usá-lo com uma TV LCD e com a plataforma de mídia XBMC [3]. O resultado foi bem satisfatório e explicaremos como você mesmo pode fazer a sua central multimidia com o produto. O primeiro passo é conectar os cabos essenciais para que tudo funcione, apareça e soe corretamente. Em muitos casos basta conectar um cabo HDMI na TV e na ZBOX; o próprio NVIDIA ION 2 se encarregará de transmitir o som surround 7.1 através do cabo – certifique-se apenas de que sua TV e o cabo já estão prontos para o padrão HDMI 1.3 [4] –, caso isso não seja possível você também pode usar a saída digital S/PDIF – que opera através de fibra ótica –. Caso nada disso seja opção, o uso da saída frontal de áudio pode quebrar um galho, mas não oferecerá a mesma experiência auditiva. Outra opção para a conexão de video é usar a saída DVI, monitores mais modernos possuem essa entrada por padrão, caso seja necessário também existem conversores DVI/ VGA para usar monitores mais antigos com essa saída.

57


ANÁLISE | Central multimidia Zotac ZBOX

Figura 3 Tela inicial do XBMC.

Não esqueça de um teclado e um mouse para a instalação, e eventual operação da ZBOX. Mais tarde você poderá operar o XBMC com seu celular Android ou iPhone (quadro 1) através da rede local. Você pode conseguir a última versão do XBMCbuntu diretamente na página de download do projeto [5]. A distribuição é uma derivação do Ubuntu Linux 11.10 que foi modificada para oferecer uma experiência “out-of-the-box” para uma grande variedade de hardwares. Já estão inclusos na distribuição os drivers

proprietários para usufruir completamente do potencial da GPU NVIDIA ION2. Em nosso teste usamos a versão 11.0 do XBMCbuntu, batizada de “Eden”. Uma vez de posse da imagem, você pode colocá-la em um pendrive USB com o comando $sudo dd if=xbmcbuntu-11.0.iso of=///dev/sdx//

trocando sdx pelo dispositivo que representa sua unidade de armazenamento, ou através da ferramenta gráfica como o UNetbootin [6].

Figura 4 Ambiente gráfico Xfce do XBMCbuntu.

58

Quando o sistema for inicializado do dispositivo USB, a instalação deve iniciar automaticamente, bastando o usuário fornecer informações como país, idioma, teclado etc. O instalador deve então questionar se você deseja se conectar a alguma rede e qual esquema de particionamento você deseja usar na instalação. Ao passar por toda essa interação, basta esperar que a instalação termine para reiniciar a máquina. Após o reinício você será recebido com a tela principal da plataforma XBMC (figura 3). Caso você deseje usar recursos mais comuns de uma distribuição Linux o XBMCbuntu também oferece um ambiente gráfica Xfce (figura 4), para acessá-lo basta sair do XBMC.

Desempenho além e aquém do esperado O uso do XBMCbuntu com a Zotac ZBOX HD-ID11 correu sem grandes problemas, nenhum hardware ficou sem suporte, com tudo funcionando imediatamente, desde a rede sem fios até a GPU e a porta eSata externa. Como um centro de mídia, o destaque do equipamento está na GPU NVIDIA ION2, com uma arquitetura diferenciada de acesso à memória e ao chipset, o processador gráfico não precisa mais competir com a CPU pela transferência de dados e acesso à memória. Operações que dependem exclusivamente da GPU, como a execução local de videos em alta definição (em 1080p) correram sem nenhum problema, atrasos ou engasgos aparentes. A mesma coisa com a reprodução de música e video através da rede pelos serviços SMB e NFS. O hardware ficou devendo como plataforma de entretenimento mais avançado, pois o hardware não oferece desempenho suficiente para jogos que exigem muitos recursos de

www.linuxmagazine.com.br


Central multimidia Zotac ZBOX | ANÁLISE

renderização 3D. Mesmo não sendo muitos no ambiente Linux, podemos citar alguns jogos de tiro em primeira pessoa e ação, que apresentaram uma taxa de frames por segundo adequadas uma vez que as configurações gráficas foram reduzidas. Jogos em 2D também sofreram alguma demora, o que nos levou a confirmar que o problema não está na GPU, mas sim no desempenho limitado do processador Atom presente na ZBOX. Apesar disso, o sistema reconheceu sem problemas controles de jogos das principais marcas e seu uso foi imediato. Outro ponto positivo foi a aceleração de videos em Flash, outro recurso incluso na GPU, que permitiu que videos dos sites YouTube e Vimeo de alta resolução fossem reproduzidos sem problemas. O uso desse recurso só foi possível, contudo, graças aos drivers proprietários da NVIDIA que estão inclusos no próprio XBMCbuntu. Testes com outras tarefas usuais de um computador caseiro, como o uso do LibreOffice, navegação pela Internet, jogos casuais, troca de emails e bate papo com som e video, correram sem quaisquer problemas ou demora acima do habitual. Um ponto que nos impressionou foi o consumo de energia, ficando

na média de 21W para uso comum e chegando a 27W quando executava videos em alta definição. O que faz com que a plataforma seja incrivelmente econômica no gasto total. Nesse mesmo tópico, porém, notamos que algumas vezes a temperatura geral do aparelho alcançou níveis acima do esperado, e que poderiam chegar a danificar discos rígidos em algumas situações.

Á R E S L L A QU INCIPA TO R N O P ECIME T ? N 2 O 1 C 0 A 2 E D

Conclusão Apesar de contar com um hardware que pode ser considerado datado para o ano de 2012, a Zotac ZBOX HD-ID11 é ainda uma boa compra se você deseja incrementar sua televisão HD com uma central multimidia, oferecendo acima de tudo aquele gostinho especial de montar todo o sistema sozinho, no melhor estilo faça você mesmo. O sistema também não fica devendo nada na execução de tarefas básicas diárias, como navegar na web, escrever um email ou mesmo divertir-se com um jogo casual de Flash. Além disso, seu consumo mínimo de energia é atraente e pode representar uma economia se comparado com outros produtos da área de reprodução multimídia ou computação caseira. O investimento de cerca de US$230.00 vale a pena. ■

Mais informações [1] Next-Generation NVIDIA ION Graphics Processors: http://www.nvidia.com/object/sff_ion.html [2] Serial ATA: http://pt.wikipedia.org/wiki/Serial_ATA

OLIMPÍADAS DE LONDRES FIM DO MUNDO

LANÇAMENTO DO NOVO

GUIAdeTI 2012

[3] XBMC: http://xbmc.org/ [4] High-Definition Multimedia Interface: http://pt.wikipedia. org/wiki/High-Definition_Multimedia_Interface [5] XBMC | Download: http://xbmc.org/download/ [6] UNetbootin: http://unetbootin.sourceforge.net/

AGUARDE!

[7] Official XBMC Remote for Android: http://code. google.com/p/android-xbmcremote/ [8] Unofficial “Official XBMC Remote”: http://itunes.apple.com/us/ app/unofficial-official-xbmc-remote/id520480364?ls=1&mt=8

Linux Magazine #91 | Junho de 2012

59


Conheça a coleção Academy da Linux New Media Os livros da Coleção Academy são roteiros práticos e objetivos, com didática adequada tanto ao profissional quanto ao estudante da área de TI.

Luciano Antonio Siqueira

Infraestrutura de Redes Passo a passo da montagem de uma rede de computadores, desde o cabeamento e roteadores até a configuração das máquinas clientes.

Configuração e manutenção de serviços essenciais como DNS, compartilhamento de arquivos e acesso remoto.

Paulo Henrique Alkmin da Costa

Luciano Antonio Siqueira

Samba:

Máquinas virtuais com VirtualBox

com Windows e Linux Como permitir a comunicação de diferentes sistemas operacionais em rede: Windows, Linux, Mac OS X etc. Definição de compartilhamentos de arquivos, impressoras – incluindo a instalação automática de drivers – e utilização do Samba como controlador de domínio (PDC) também para clientes Windows Vista e Windows 7.

O conteúdo e o formato dos livros foram desenvolvidos a partir da experiência prática e educacional de seus autores, com foco principal no desenvolvimento de competências, através de conceitos, exemplos detalhados e dicas de quem realmente entende do assunto. O material é indicado tanto para autodidatas que desejam se aperfeiçoar quanto para utilização em escolas. O professor irá se sentir confortável para desenvolver as atividades a partir do livro, que procura atender tanto à expectativa do aprendiz quanto à demanda profissional do mercado de TI.

Disponível no site www.LinuxMagazine.com.br

Administração de infraestrutura de máquinas virtuais com Sun VirtualBox®. Como trabalhar com sistemas operacionais – Windows, Linux etc – na mesma máquina e simultaneamente.

Criação de diferentes modalidades de conexões virtuais, exportação/importação de máquinas virtuais e criação de pontos de recuperação (snapshots).


Ferramentas de diagnóstico | REDES

Ajuste seu sistema com ferramentas de diagnóstico

REDES

Pacote de estatísticas

Para verificar a saúde de um sistema Linux, os administradores podem recorrer ao vmstat, ao iostat, ao netstat e ao ifstat. Ou você pode simplesmente usar o versátil dstat, que combina as características de várias ferramentas em um único pacote. por Valentin Höbel

O

s administradores de sistema normalmente usam várias ferramentas para monitorar a carga de recursos em um sistema Linux. Mas para alguns poderosos aplicativos de ponta para monitoramento, a sobrecarga (overhead ou sobrecarga) pode ser bastante elevada, especialmente se você precisar solucionar problemas de desempenho. Algumas ferramentas precisam funcionar durante um período prolongado de tempo e, é claro, utilizam recursos próprios. Este artigo apresenta o vmstat, o iostat, o netstat e o ifstat, quatro programas simples que se encaixam bem em qualquer caixa de ferramentas de administrador. Você também vai aprender sobre a ferramenta multifuncional dstat, que combina muitos recursos de outras ferramentas em um único utilitário.

Conhecimento básico Se você quiser interpretar as métricas do sistema, primeiro precisa entender o que elas significam. Muitas métricas referem-se à memória virtual. A RAM física na forma de blocos

de memória RAM apresenta uma quantidade tangível, mas os limites são mais obscuros no gerenciamento de memória virtual. O sistema de gerenciamento de memória do sistema operacional é um enigma até mesmo para usuários Linux experientes. Todo processo do Linux precisa de memória para lidar com suas tarefas. Para manter este processo, o sistema operacional aloca memória, isto é, reserva uma quantidade de espaço de memória de A para B, que o programa vai provavelmente usar em algum momento posterior. Mas, pelo fato de nem todo processo ativo precisar de toda a memória que lhe é atribuída o tempo todo, o kernel troca essa memória por uma página de memória no disco (paging out), o que permite que o sistema utilize a memória RAM física disponível para necessidades mais imediatas. Se toda a memória reservada para um processo for gravada no disco, este processo é conhecido como swapping (virtualização de memória). Se o kernel só escreve no disco páginas individuais

da RAM alocada, o processo é chamado de paginação (paging). Em contrapartida, o sistema pode carregar essa memória de volta para a RAM em um processo conhecido como paging in. Este processo é absolutamente normal e não é indicativo de uma execução com poucos recursos. Paginar no disco pode ocasionar uma carga pesada em alguns sistemas, com o kernel passando mais tempo gerenciando a memória virtual do que realmente trabalhando nos processos. Munido destas informações, é fácil entender as diferenças entre buffer e cache. Enquanto um buffer contém dados que ainda precisam ser escritos no disco, o cache lê dados já escritos em uma mídia de armazenamento. Troca de contexto (context switching) é outro termo importante que se refere à interrupção de um processo pelo Linux, salvando o contexto de memória para em seguida completar outro processo. Pelo fato de a mudança de contexto ser uma das operações mais custosas em um sistema Linux, se o número de trocas de contexto cresce de alguns

Figura 1 Se o vmstat for executado sem quaisquer parâmetros, mostrará apenas os valores médios.

Linux Magazine #91 | Junho de 2012

61


REDES | Ferramentas de diagnóstico

milhares para mais de 100.000 em um período curto, isso pode indicar o alto uso de recursos desnecessariamente. Munido dessas informações, o administrador Linux pode agora começar a descobrir os problemas de desempenho, executando as ferramentas certas.

O vmstat Muitos administradores de sistemas Linux provavelmente estão familiarizados com o vmstat [1]. Essa poderosa ferramenta mostra uma visualização em forma de tabela para processos, uso de RAM e paginação, I/O (entrada e saída de dados) e atividade da CPU. Se você chamar a ferramenta sem nenhum parâmetro, verá somente uma única linha que reflete os valores médios desde a última reinicialização (figura 1). A saída do vmstat normalmente ocupa seis colunas. A primeira parte, procs, contém os valores r (run time) para o número de processos atualmente à espera do momento de serem processados, enquanto b (blocked processes) significa processos em um estado de espera que não pode ser interrompido. Se você olhar para a coluna memory, verá o total de memória virtual em uso em swpd, enquanto free lhe dá o total de RAM não utilizado, buff o buffer de memória, e cache o cache de memória. A área swap dessa saída contém um valor si para a memória alocada do disco para a RAM (swapped in) Curta

Longa

Função

-c

--cpu

Habilita estatísticas de CPU

-d

--disk

Habilita estatísticas de disco

-g

--page

Habilita estatísticas de paginação

-i

--int

Habilita estatísticas de interrupções

-l

--load

Habilita estatísticas de carga de sistema

-m

--mem

Habilita estatísticas de memória

-n

--net

Habilita estatísticas de rede

-s

--swap

Habilita estatísticas de troca

-y

--sys

Habilita estatísticas de sistema

-v

--vmstat

Saída do vmstat com o dstat

Tabela 1 Opções do dstat.

62

por segundo, e assim so se refere ao processo oposto (swapped out). O io mostra o número de blocos lidos pelo sistema (bi) ou escritos (bo) por segundo. Uma olhada rápida na área system revela o número de interrupções (in) e trocas de contexto (cs) por segundo. A coluna final, chamada cpu, é bastante exaustiva e contém valores percentuais: us é a porcentagem de tempo de processamento que os processos no espaço do usuário exigem; sy é a métrica de tempo de processamento exigido pelo kernel para o processamento de eventos do sistema. O id diz respeito ao tempo de inatividade (idle). O último valor na coluna atual, wa, lhe dá os processos em espera por entrada ou saída. O comando vmstat 1 5 executa o programa com uma taxa de atualização de uma vez a cada segundo e cinco linhas de saída (figura 2). Neste exemplo, os processos tiveram de esperar o tempo de execução duas vezes, e o Linux teve que ler os dados do disco ao mesmo tempo (primeira linha de saída). Outra opção útil é vmstat -d para estatísticas de disco; isso lhe dá uma visão um pouco desordenada dos eventos de I/O na memória RAM e no disco. O comando vmstat -s mostra os valores de eventos de CPU e memória em uma lista, o que torna a saída utilizável para avaliação automática em um script. Outro adicional interessante é a opção vmstat -p, seguida por uma indicação da partição que lhe mostra as

operações de leitura e escrita somente na partição selecionada. O vmstat é extremamente popular no uso diário, mas peca pela legibilidade da saída de dados, bem como por uma falta de clareza geral.

O iostat O iostat [2] foca na entrada e saída de sistemas Linux. A ferramenta fornece estatísticas significativas, mesmo sem opções de linha de comando. A linha avg-cpu (average cpu) contém estatísticas da CPU e dá ideias sobre o estado de carga geral. Na figura 3, o sistema parece ter muito pouco a fazer: os processadores estão 84% ociosos e a porcentagem de processos à espera de I/O é inferior a um. Se seu sistema tem várias CPUs, o iostat mostra os valores médios. A tabela na parte inferior da figura 3 fornece informações sobre os dispositivos de bloco. A coluna tps mostra as transferências por segundo, o que é equivalente ao número de pedidos de I/O para o dispositivo. O parâmetro Blk_read/s (read blocks/s) lhe dá o número de blocos que o Linux lê a partir do dispositivo especificado em 1 segundo. Um bloco normalmente significa 512 bytes. Blk_wrtn/s mostra o acesso de escrita na mesma unidade e as duas últimas colunas, Blk_read e Blk_wrtn, representam as estatísticas globais desde a última inicialização do sistema. Chamar o iostat sem nenhum parâmetro fornece um panorama útil de eventos de I/O. No caso da virtualização, o roubo (steal) também é de interesse para o usuário: ele lhe mostra quanto tempo os processadores virtuais estão gastando ao esperar pelo hypervisor (máquina virtual). Se os números apresentados são muito grandes e portanto difíceis de ler, você pode ajustar a saída para megabytes colocando iostat -m. Para um ajuste mais granular, é possível definir o parâmetro -p e a partição a ser monitorada. O comando iostat

www.linuxmagazine.com.br


Ferramentas de diagnóstico | REDES

-c mostra apenas os valores de CPU. Se você não está interessado em dados dos dispositivos de bloco, pode salvar muitas linhas de saída. Para obter mais visibilidade para os dispositivos de bloco, experimente o iostat -d, que esconde as estatísticas da CPU. Claro, você pode combinar os parâmetros: iostat -d -p drbd4 só mostra o que está ocorrendo atualmente no dispositivo drbd4. O iostat também suporta sistemas de arquivos NFS montados. O iostat -n lhe dá uma visão geral dos diretórios NFS montados e o tráfego atual em blocos e kilobytes por segundo. Se você precisar de mais detalhes sobre as ocorrências de I/O, confira a página do manual, o que mostra detalhes de outras opções úteis, tais como -x, que adiciona mais valores na saída de estatísticas.

O netstat O netstat [3] é uma popular ferramenta de diagnóstico de rede tanto no Windows quanto no mundo Linux. Embora a maioria dos sistemas Linux tenha substituído o netstat pelo o ss, os administradores de sistemas ainda gostam de usar a familiar ferramenta netstat, que remonta a um passado de quase 30 anos. A lista de recursos do netstat é tão longa que este artigo só pode examinar as características mais importantes. Por exemplo, o comando netstat --ip, mostra o número de conexões abertas. Você pode digitar o seguinte

Figura 2 O vmstat com cinco linhas de saída e uma taxa de atualização de uma vez a cada segundo.

Figura 3 O iostat fornece informações sobre CPUs e dispositivos baseados em blocos.

Figura 4 A ferramenta de rede netstat mostra as conexões de escuta (listening).

netstat --ip | wc -l

para contabilizar as conexões. Para mais detalhes da lista de conexões, utilize a opção netstat -l, como mostrado na figura 4 (saída abreviada). A página de manual (man page) do netstat lista outras opções úteis.

O ifstat O ifstat [4] lhe dá um breve panorama do tráfego da rede para todas as interfaces de rede que encontrar. Se você executar o programa com as opções -a -b, terá uma breve visuali-

Linux Magazine #91 | Junho de 2012

Figura 5 É possível monitorar suas interfaces (de rede) com o ifstat.

63


REDES | Ferramentas de diagnóstico

zação geral de todas as suas interfaces, como mostrado na figura 5. O programa mostra os dados enviados e recebidos em kilobytes por segundo. Se os serviços do sistema não estiverem usando todas as interfaces disponíveis, você pode omitir as interfaces não utilizadas com a opção -z. Se você prefere ter a saída do ifstat tão curta quanto possível, digite ifstat -S para restringir a saída para uma linha, que é continuamente atualizada.

O dstat: recursos combinados Se esta lista de ferramentas individuais para análise de sistema é muito longa para o seu gosto, você perceberá que o dstat [5] combina praticamente todos os recursos dessas outras ferramentas em um único utilitário. Além disso o dstat usa cores e fixa a largura da coluna, o que significa que os números são sempre apresentados de forma cla-

Figura 6 O dstat usa tabelas e cores para melhorar a legibilidade.

Figura 7 O dstat sendo executado em uma das partições do disco rígido.

ra. A ferramenta foi criada em 2004, é escrita em Python possui licença GPL e utiliza uma abordagem modular. Cada coluna na saída é criada por um módulo. Esses módulos residem no diretório /usr/share/dstat/. Você precisará instalar o dstat na maioria das distribuições. Chamar a ferramenta sem quaisquer argumentos de linha de comando mostra as semelhanças com o vmstat (figura 6). Como o vmstat, o dstat lhe dá todos os valores em uma tabela. A cor vermelha não indica necessariamente um problema. O dstat muda a cor quando os valores excedem o limite definido em um módulo. Essa mudança de cores é projetada para melhorar a legibilidade de dados e chamar a atenção do administrador para as mudanças no comportamento do sistema. Mas se você realmente não gostar do esquema de cores, pode desativá-lo usando --nocolor, ou pode usar --bw para modificar a exibição para um terminal com uma cor de fundo clara. Os cabeçalhos das colunas correspondem aos do vmstat em sua maior parte, portanto não precisam de nenhuma explicação. O que é interessante é o enorme espaço para personalização na estrutura modular do dstat. Para uma visão geral dos plugins disponíveis, digite o comando dstat --list. Chamar o dstat sem nenhum parâmetro equivale a digitar o seguinte por padrão: dstat -c -d -n -g -y

Figura 8 Caça dos maiores monopolizadores de memória: o dstat identificou o serviço do LDAP neste caso.

Figura 9 Com as opções corretas, você pode usar o dstat como uma espécie de iostat e monitorar a carga da CPU.

64

As opções que podem ser acionadas com um único – dizem respeito às funções embutidas no dstat. As que vêm de módulos externos precisam de dois sinais de menos, --. Os plugins assim podem ser chamados digitando dstat --nome_plugin. Por exemplo, se você digitar dstat --proc-cont, é levado até uma lista de estatísticas permanentemente atualizada com os processos atualmente em execução. Pelo fato de o dstat abranger as versáteis características do vmstat,

www.linuxmagazine.com.br


Ferramentas de diagnóstico | REDES

do iostat, do ifstat e do netstat, mesmo o autor do programa, Dag Wieers, recomenda usar a ferramenta especificamente para determinados casos. Isso significaria, por exemplo, apenas monitorar os discos rígidos e pontos de montagem, o que você poderia fazer com o seguinte comando: dstat -d --disco-util --freespace

A figura 7 mostra os resultados (saída abreviada). O dstat divide a saída mesmo nos discos existentes e em partições. Se ocorrem ações de escrita ou exclusão em segundo plano nas partições especificadas, você automaticamente observa as mudanças no dstat. E se você montar diretórios NFS em seu sistema, também vai encontrá-los nas estatísticas. Os usuários comuns do vmstat podem gostar de se concentrar na análise de memória. O seguinte comando: dstat -g -l -m -s --top-mem

lhe dá uma visão útil para esta finalidade. Na figura 8 é possível ver como o servidor LDAP, slapd, abarca mais e mais recursos no decorrer do tempo. O comando --top-mem revela que esse processo é o consumidor número um de memória. Refletindo o aumento da memória RAM exigida pelo

slapd, o parâmetro memory-usage mos-

tra um aumento na memória cache. Enquanto o dstat estava funcionando, o administrador lançou uma pesquisa complexa no LDAP que disse para o daemon ler informações do disco. Os usuários do dstat também podem se concentrar no monitoramento da CPU em um estilo semelhante ao do iostat. Para revelar o processo que consome mais tempo de CPU, você deve digitar o seguinte (figura 9): dstat -c -y -l --proc-cont --top-cpu

Como o valor para idl em total-cpu-usage mostra, o sistema não está muito carregado. Os administradores de sistemas atentos também executarão o programa em uma rede, como se segue: dstat -n --socket --tcp --udp

Embora os valores medidos para os sockets e o protocolo UDP mostrem pouca mudança neste exemplo, você pode ver na seção net/total que as placas de rede atualmente precisam responder aos pedidos (figura 10). Novamente, o motivo para este aumento de atividade é uma pesquisa LDAP. O dstat usa realce de cor para chamar a atenção sobre a presença de pedidos pendentes.

O dstat é rico em recursos, mas também um monstro em opções. Para ajudá-lo a se localizar, a tabela 1 mostra as opções mais importantes a partir dos exemplos apresentados neste artigo.

Conclusão Depois de ter descoberto os benefícios do dstat, você provavelmente vai considerar escrever seus próprios plugins para suas necessidades específicas. A linguagem de programação usada para criar plugins para o dstat é o Python. Depois de colocar os módulos que você fez em /usr/share/dstat/, pode executá-los como opção de linha de comando digitando dois sinais de menos antes do nome do módulo. Se você estiver procurando um modelo, confira o arquivo dstat_helloworld.py no diretório de módulos. Você pode até mesmo executar esse código digitando dstat --hello, mas note que ele serve apenas como um exemplo. Se você preferir um exemplo mais significativo e prático, dê uma olhada nos outros módulos no diretório /usr/share/dstat. Você encontrará uma gama de exemplos diferentes, que pode modificar para seus próprios fins. ■

Mais informações [1] Vmstat: http://procps. sourceforge.net/ [2] Iostat: http://sebastien. godard.pagesperso-orange. fr/documentation.html [3] Netstat: http://www.tazenda. demon.co.uk/phil/net-tools/ [4] Ifstat: http://gael. roualland.free.fr/ifstat [5] Dstat: http://dag.wieers. com/home-fez/dstat

Gostou do artigo? go?

Figura 10 O dstat monitorando sockets TCP e UDP.

Linux Magazine #91 | Junho de 2012

Queremos ouvir sua ua opinião. op ão. Fale conosco em cartas@linuxmagazine.com.br e.com.b Este artigo no nosso so site: sit http://lnm.com.br/article/6957 articl 957

65


TUTORIAL

TUTORIAL | Pesquisa em grandes arquivos de log

Pesquisa em grandes arquivos de log com Glogg

Em busca de pistas Os programadores e administradores Linux apreciam os benefícios dos logs de eventos. A ferramenta Glogg é a escolha perfeita para pesquisar até mesmo em grandes arquivos de log. por Erik Bärwaldt

O

Linux é um sistema operacional bastante verborrágico, em que muitos serviços geram mensagens para todos os tipos de eventos e as gravam em arquivos de log que normalmente residem no diretório /var/log. Quando um sistema é atingido por falhas e soluços inesperados, investigar os arquivos de log pode ser uma forma relativamente fácil de encontrar o culpado – mesmo se você não for um perito. Mas, como os arquivos de log tendem a crescer ao longo do tempo – e assim fica difícil compreendê-los – as ferramentas embutidas (como o less e o grep) são pouco úteis na leitura dos dados. Felizmente, uma ferramenta auxiliar de pequeno porte pode acabar com as dores de cabeça de ter que realizar buscas em arquivos de log: o Glogg. O Glogg não só procura strings e termos especiais em imensos arquivos de log, mas também oferece uma interface gráfica intuitiva, evitando assim a necessidade de abrir uma janela de terminal sempre que você precisar solucionar algum problema.

66

Instalação O Glogg está presente nos repositórios do Ubuntu há algum tempo. Existem pacotes online [1] pré compilados para o Debian. Lá você também encontrará arquivos RPM para openSUSE e Fedora. O Glogg atualmente não está disponível para o Mandriva e Mageia, mas painéis de controle do sistema de ambas as distribuições, bem como do Linux Unity, incluem uma ferramenta com um escopo de recursos semelhantes ao Glogg. Se você não encontrar o aplicativo nos repositórios de sua distribuição, pode baixar o código fonte do programa [2] e compilá-lo manualmente. Após concluir a instalação, você encontrará um atalho do programa chamado Glogg no menu Aplicativos/Acessórios do Gnome. Clicar no atalho leva você até a janela do programa com dois painéis: a parte superior da janela mostra o conteúdo completo do arquivo de log, enquanto a parte inferior apenas lista as linhas que correspondem aos critérios de pesquisa definidos.

É necessário digitar as chaves da sua pesquisa na linha Text localizada entre os dois painéis da janela do programa. Você pode, então, selecionar convenientemente o arquivo de log que deseja que o aplicativo abra clicando em File/Open ou – o que é ainda mais fácil – clicando no ícone da pasta no canto superior esquerdo da janela do aplicativo e procurar a localização do arquivo de log no gerenciador de arquivos (figura 1). A linha Text não é restrita a um único termo. O Glogg também entende expressões regulares, para que você possa pesquisar simultaneamente dois termos ligados por um pipe. Isso significa que você pode procurar strings alternativas em apenas alguns segundos. Se o Glogg encontra o termo ou as strings que você está procurando no arquivo de log atual, ele marca as correspondências, colocando um pequeno ponto vermelho no início da linha de texto. O programa, então, mostra os resultados na metade inferior da janela na mesma ordem que no original.

www.linuxmagazine.com.br


Pesquisa em grandes arquivos de log | TUTORIAL

Realce em cores Para destacar entradas importantes automaticamente em um arquivo de log e assim melhorar a legibilidade, o Glogg fornece um recurso adicional que lhe permite fazer um realce colorido dessas entradas. Você pode definir um novo filtro em Tools/Filters. Na caixa de diálogo que será exibida, digite a string a ser usada para filtrar o arquivo de log em Matching Pattern. Finalmente, use os menus suspensos Fore Color and Back Color para selecionar as cores do texto e do fundo. Para definir vários filtros, primeiro insira um critério de pesquisa e clique no sinal de adição no canto inferior esquerdo abaixo da lista. O aplicativo mostra os filtros individualmente na parte do lado esquerdo da janela (figura 2). Após clicar no botão Apply, o Glogg destaca as linhas do arquivo de log com os critérios nas cores que você definiu. Ao clicar em OK ele guarda esses filtros permanentemente para que você possa reutilizá-los na

próxima vez que quiser executar a mesma pesquisa. O realce de cores imediatamente lhe dá uma visão clara de onde as entradas relativas a eventos específicos estão localizadas em seus arquivos de log. A janela com os resultados contém as linhas correspondentes nas cores selecionadas. Dependendo do escopo das sequências de pesquisa e do arquivo de log original, você poderá ter uma coleção grande de entradas, o que tornará mais difícil localizá-las no arquivo de log. Para ajudar, o Glogg fornece um recurso simples para localizar uma linha específica no arquivo de log original: apenas clique com o botão esquerdo na linha que você está procurando nos resultados. O Glogg, então, altera a cor da linha e vai para a linha idêntica marcada com a mesma cor na janela do arquivo de log. Esse recurso lhe permite descobrir facilmente quais outros eventos foram registrados no mesmo contexto. Como o aplicativo lê arquivos de log diretamente do disco

sem colocá-los na RAM, a função de busca funciona muito rapidamente, mesmo no maior dos logs (figura 3).

Rastreamento em tempo real Rastrear os arquivos de log em tempo real pode ser muito útil para isolar e resolver problemas. Os programadores gostam de usar esse recurso quando estão depurando aplicativos, mas os administradores de sistema podem também usá-lo quando lhes é dado um novo hardware: o Linux normalmente gera uma entrada no arquivo /var/log/ messages ou /var/log/syslog – dependendo da sua distribuição – quando você liga ou substitui um dispositivo. Se tiver problemas com um novo dispositivo, você pode monitorar as mensagens em tempo real na janela do terminal digitando o comando tail -f /var/log/messages ou tail -f /var/ log/syslog. No entanto, como este método mostra apenas um número limitado de linhas, é fácil perder a noção das coisas. Por outro lado, o Glogg permite visualizar qualquer arquivo de log na íntegra, em tempo real. Para ver o status mais atual do arquivo de log em tempo real, você só precisa habilitar a entrada Follow File no menu View. Se quiser registrar as entradas relevantes na janela de filtro, você pode selecionar a caixa Auto-refresh no canto superior direito acima do painel inferior.

Atalhos de teclado

Figura 1 A janela de dois painéis do Glogg lista o arquivo de log completo e os resultados da pesquisa.

Linux Magazine #91 | Junho de 2012

O programa suporta controle por meio de uma série de atalhos de teclado que lembram o conjunto de comandos do editor vi e a ferramenta less. Por exemplo, você pode pressionar as teclas de seta para deslocar-se coluna por coluna (esquerda/direita) ou linha por linha (para cima/para baixo) através do arquivo de log. Além disso, pode pressionar [G] para ir para o início do arquivo ou [Shift]+[G] para ir até o fim.

67


TUTORIAL | Pesquisa em grandes arquivos de log

nos botões Previous e Next à direita da linha de entrada para continuar a busca no início ou no final do arquivo. Ou então, pressione [N] ou [Shift]+[N] para procurar para frente e para trás, ou pressione * (asterisco) e # para navegar para frente ou para trás no arquivo e encontrar os termos definidos anteriormente.

Conclusão Figura 2 Apenas algumas entradas e cliques são tudo o que você precisa fazer para definir filtros que realçam os termos pesquisados.

Se quiser ir para uma linha específica, basta digitar seu número seguido por [Shift]+[G]. Pressionar [G] permite monitorar novas entradas em tempo real, enquanto pressionar [H] e [L] lhe permite navegar um caractere para a esquerda ou para a direita. Para pesquisar em um arquivo, pressione [Shift]+[7]. O Glogg, em seguida, abre uma linha de entrada

abaixo da janela de resultados, onde você pode digitar a chave de pesquisa desejada. Após verificar o termo desejado, o programa busca em todo o arquivo de log ativo o caractere ou sequência definidos e depois mostra o conjunto atual de correspondências. Se você não encontrar os termos correspondentes ao que está procurando imediatamente, pode clicar

A navegação em arquivos de log, que pode ser um processo muito penoso com ferramentas de linha de comando, é muito facilitada e acelerada com o Glogg. A interface gráfica do aplicativo elimina as preocupações de trabalhar com arquivos de log, mesmo para os recém-chegados que não estão familiarizados com comando manual e parâmetros de entrada na linha de comando. Sofisticados recursos de pesquisa, em combinação com o realce de cores e a capacidade de pesquisar vários termos e strings, ajudam a focar no problema que você está solucionando. Como o Glogg não lê o arquivo do disco até você iniciar uma pesquisa, o programa é extremamente rápido, mesmo com arquivos de log muito grandes. Além disso, esta abordagem garante que você sempre comece a ver a versão mais recente do arquivo de log. O Glogg é, portanto, uma ferramenta muito útil para qualquer usuário de Linux e deve estar presente em qualquer máquina em que você trabalhe. ■

Mais informações [1] Glogg: http://pkgs. org/download/glogg [2] Código fonte do Glogg: http://glogg.bonnefon. org/download.html

Gostou do artigo? igo?

Figura 3 O Glogg usa o recurso de realce de cores para melhorar a legibilidade do arquivo de log.

68

Queremos ouvir sua opinião. pinião. Fale conosco em cartas@linuxmagazine.com.br zine.com Este artigo no nosso sso site: s : r/artic 6930 http://lnm.com.br/article/6930

www.linuxmagazine.com.br


Depuração do kernel Linux | TUTORIAL

Depuração do kernel Linux

TUTORIAL

O poder da depuração Depurar o kernel de um sistema operacional em funcionamento sempre foi uma coisa traiçoeira, mas com o emulador Qemu, isso pode não ser mais uma tarefa tão árdua. por Eva-Katharina Kunst e Jürgen Quade

A

lgumas das operações básicas que um depurador (ou debugger) realiza em um sistema, incluem congelar sequências de código e subsequentemente analisar o conteúdo da memória RAM. Se a sequência de código pertencer a um aplicativo, a depuração, comparativamente, não envolve grandes problemas. Mas se você congelar o próprio kernel, não terá mais um ambiente de execução que aceite entrada do teclado, saída para um monitor, acesso ao conteúdo da memória ou que continue a executar o kernel depois. Podemos comparar a depuração do kernel com a tentativa de realizar uma cirurgia em si mesmo. De um ponto de vista técnico, esse problema é resolvido ao transferirmos funções complexas para um

segundo sistema, que terá memória e gerenciamento de arquivos funcionando e ajudará você a pesquisar no código-fonte por variáveis, estruturas de dados, funções e linhas de código. Isso significa que é necessário apenas um servidor de depuração para o kernel a ser depurado. Este servidor pode executar comandos simples, como ler ou gravar células de memória ou definir pontos de parada de código (breakpoints) no sistema sob investigação. O emulador Qemu tem um servidor de depuração embutido (quadro 1). Se você usar também o gerador de sistemas Buildroot [1], a depuração de kernel fica relativamente fácil de implementar. A condição para realizarmos isso é ter um kernel com símbolos de debug. Isso não é problema graças ao Buildroot: em pouco tempo,

a ferramenta pode lhe dar um espaço do usuário bem definido e um kernel enxuto que pode ser rapidamente reconfigurado e modificado. Todas as etapas para essa abordagem são mostradas no quadro 2. Você pode começar baixando o Buildroot e descompactando o pacote. Depois, crie a configuração padrão – preferivelmente para um sistema x86 – digitando make qemu_x86_defconfig. É preciso modificar quatro opções após digitar make menuconfig: Em Toolchain, habilite a opção Build gdb para Host; em Kernel/ Kernel version, digite 3.2; em System Configuration/Port to run getty (login prompt) on, digite tty1; e finalmente para Build Options/Number of jobs to run simultaneously, digite o número de núcleos da máquina geradora.

Figura 1 No Linux há diversas opções para depuração de código do kernel e dos módulos: o emulador Qemu, o kgdb e o kdb

Linux Magazine #91 | Junho de 2012

69


TUTORIAL | Depuração do kernel Linux

Figura 2 As opções do kernel necessárias para depuração

Figura 3 O GDB é iniciado no diretório do código-fonte

estão localizadas no menu Kernel hacking.

Digitar um outro make dispara a execução do primeiro gerador. Isso criará o código-fonte do kernel, entre outras coisas, mas será necessário modificar a configuração novamente para depurar o kernel em algum momento no futuro. Para fazê-lo, execute make linux-menuconfig no diretório raiz do Buildroot. As opções relevantes no menu subsequente estão localizadas no item Kernel Hacking (figura 2). As opções Kernel debugging e Compile the kernel with debug info são necessárias. Digitar mais um make gera um kernel com a configuração modificada.

O resultado disso basicamente se resume a dois arquivos: você terá um arquivo vmlinux que contém tanto o código quanto as informações de depuração correspondentes no diretório do código-fonte do kernel. O subdiretório de arquitetura – arch/x86/boot/ para a plataforma x86 — contém o kernel compactado no arquivo bzImage. Outras plataformas podem chamar o kernel de zImage. Carregadores de boot, como o GRUB, precisam do kernel compactado (bzImage). O depurador em si também precisa da imagem do kernel, mas usará a versão não compactada vmlinux, que

Listagem 1: Makefile 01 02 03 04 05 06 07 08 09 10 11 12 13 14

70

Linux para ter acesso aos arquivos C.

ifneq ($(KERNELRELEASE),) obj-m := hello.o else PWD:= $(shell pwd) KDIR:= ~/buildroot-2011.08/output/build/linux-3.1/ default: $(MAKE) -C $(KDIR) M=$(PWD) modules endif clean: rm -rf *.ko *.o *.mod.c *.mod.o modules.order rm -rf Module.symvers .*.cmd .tmp_versions

contém as informações de depuração. Obviamente, o depurador também necessita de acesso ao código-fonte. Assim que gerar o kernel e o sistema de arquivos principal com o Buildroot, é necessário em primeiro lugar testá-los sem depuração, o que pode ser feito com o comando: qemu -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw"

Se tudo funcionar, você pode iniciar a depuração acrescentando os parâmetros -s e -S: qemu -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S

A opção -s inicia o servidor de depuração (gdbserver), e -S para o kernel no início.

Mudança de página Para o GNU debugger (GDB) encontrar o código C do kernel e dos arquivos de cabeçalho, inicie a ferramenta no diretório do código-fonte do Linux (figura 3). Se você compilou um sistema x86, pode usar o GNU

www.linuxmagazine.com.br


Depuração do kernel Linux | TUTORIAL

debugger pré-instalado no sistema de desenvolvimento; senão, use o GDB compilado para o sistema host; que reside no diretório Buildroot output/ host/usr/bin: cd output/build/linux-3.2/gdb

O comando gdb inicia a sessão de depuração. Para começar, carregue o código do kernel e os símbolos com o comando file vmlinux. Se surgir a mensagem no debug-symbols found, será necessário verificar as opções de depuração em sua configuração do kernel e, possivelmente, recompilá-lo. Com os símbolos, o vmlinux não é maior que 40 MB. Em seguida, abra uma conexão com o servidor de depuração digitando target remote :1234 (figura 3). O comando gdb, então, prossegue com o curso da execução (tabela 1). O comando continue inicia o sistema Linux em modo convidado e pressionar as teclas [Ctrl] + [C] interrompe a execução. A figura 3 mostra o comando GDB break vfs_mknod definindo um breakpoint para a função vfs_mknod. Para o kernel 3.2, use sys_mknod em vez disso, devido a mudanças no kernel Linux. Quando um usuário no Linux executa o comando mknod /dev/hello c 254 0, a execução é paralisada e você pode inspecionar as variáveis de ambiente. Para continuar a execução do programa, use o comando continue. Para isolar o depurador do sistema Linux, primeiro pressione as teclas [Ctrl] + [C] e depois use o comando GDB detach para interromper a conexão com o servidor. Digitar quit finaliza o depurador.

Módulos Os módulos do kernel também podem ser depurados no nível da linguagem de programação com o Qemu. Para fazê-lo, é preciso ativar a opção Enable loadable module support no submenu Module unloading. Em outras palavras, esse processo envolve reconfigurar e gerar novamente o ker-

Linux Magazine #91 | Junho de 2012

Listagem 2: Módulo hello.c 01 02 03 04 05 06 07 08 09 10 11 12 13

#include #include #include #include #include static static static static static

<linux/fs.h> <linux/cdev.h> <linux/device.h> <linux/module.h> <asm/uaccess.h>

char hello_world[]="Hello World\n"; dev_t hello_dev_number; struct cdev *driver_object; struct class *hello_class; struct device *hello_dev;

static ssize_t driver_read(struct file *instanz,char __user *user, size_t count, loff_t *offset) 14 { 15 unsigned long not_copied, to_copy; 16 17 to_copy = min(count, strlen(hello_world)+1); 18 no_copied=copy_to_user(user,hello_world,to_copy); 19 20 } 21 22 static struct file_operations fops = { 23 .owner= THIS_MODULE, 24 .read= driver_read, 25 }; 26 27 static int __init mod_init( void ) 28 { 29 if (alloc_chrdev_region(&hello_dev_number,0,1,"Hello")&lt;0) 30 return -EIO; 31 driver_object = cdev_alloc(); 32 if (driver_object==NULL) 33 goto free_device_number; 34 driver_object->owner = THIS_MODULE; 35 driver_object&#8208;&gt;ops = &fops; 36 if (cdev_add(driver_object, hello_dev_number,1)) 37 goto free_cdev; 38 hello_class = class_create( THIS_MODULE, "Hello" ); 39 if (IS_ERR( hello_class )) { 40 pr_err( "hello: no udev support\n"); 41 goto free_cdev; 42 } 43 hello_dev = device_create( hello_class, NULL, hello_dev_number, NULL, "%s", "hello" ); 44 return 0; 45 free_cdev: 46 kobject_put( &driver_object&#8208;&gt;kobj ); 47 free_device_number: 48 unregister_chrdev_region( hello_dev_number, 1 ); 49 return -EIO; 50 } 51 52 static void __exit mod_exit( void ) 53 { 54 device_destroy( hello_class, hello_dev_number ); 55 class_destroy( hello_class ); 56 cdev_del( driver_object ); 57 unregister_chrdev_region( hello_dev_number, 1 ); 58 return; 59 } 60 61 module_init( mod_init ); 62 module_exit( mod_exit ); 63 MODULE_LICENSE("GPL");

71


TUTORIAL | Depuração do kernel Linux

nel que você criou com o Buildroot. Como também é impossível prever o endereço do código do módulo na memória principal, você precisa carregar o módulo, encontrar o endereço e informar ao depurador. Será preciso verificar as entradas no sistema de arquivos /sys para fazê-lo, mas trataremos disso posteriormente. Antes da depuração, primeiro gere o módulo para o kernel criado com o Buildroot. A maneira mais fácil de fazer isso é usar um arquivo Makefile modificado, apontando a variável KDIR para o caminho com o código-fonte Linux que você está usando, que estará abaixo do diretório raiz, neste caso. Se o sistema Linux no Qemu que você está depurando não for projetado para uma arquitetura x86, será

necessário definir as variáveis de ambiente CROSS_COMPILE e ARCH. Para depurar o módulo, é preciso usar a listagem 1 como Makefile e a listagem 2 como arquivo hello.c em uma pasta abaixo do diretório raiz do Buildroot. Você também pode precisar modificar o caminho para o código-fonte Linux na variável KDIR. O Makefile modificado gera o módulo hello.ko, que você pode então copiar para o sistema de arquivos raiz: cp hello.ko ../output/target/root/

Um make no diretório Buildroot gera novamente o sistema de arquivos raiz. Isso coloca o módulo no diretório home do usuário root após a inicialização. A abordagem mais fácil é omitir a opção -S e usar -s quando o Qemu for inicializado. Isso habilita

Figura 4 Após entrar como usuário root, carregue o módulo do kernel no Qemu e determine os endereços do código e dos segmentos de dados. Comando

Função

Add-symbol-file Carrega arquivo de símbolos adicional break

Define um breakpoint

bt

Retorna a sequência de chamadas para funções

continue

Continua o programa

del

Apaga um breakpoint criado

detach

Faz logout do depurador no servidor de depuração

file

Carrega código (programa)

help

Retorna dados sobre as funções implementadas

info

Exibe diversas informações

next

Processa linha de código

print

Exibe a saída de variáveis, estruturas de dados e células de memória

quit

Termina o GDB

Tabela 1 Comandos GDB importantes.

72

o servidor de depuração, mas o Linux ainda inicializará diretamente. Após logar-se como root, carregue o módulo com o comando insmod hello.ko (figura 4). Os comando seguintes determinam os endereços dos segmentos de código e os dois segmentos de dados: # cat /sys/module/hello/sections/.text # cat /sys/module/hello/sections/.data # cat /sys/module/hello/sections/.bss

Como o sistema Linux gerado pelo Buildroot não inclui compatibilidade udev, você também precisa usar

Quadro 1: Opções de depuração do kernel No Linux, há três abordagens para depuração de código do kernel e seus módulos: o Qemu, o kgdb e o kdb (figura 1). Embora o Qemu não precise de nenhum suporte especial no kernel, Linus Torvalds relutantemente aceitou o servidor de depuração embutido no kernel, kgdb, há três anos. Assim como no Qemu, o depurador em si é executado em um segundo computador, o host de depuração. A comunicação entre o servidor e o depurador utiliza uma conexão serial. Se você não tem nem uma segunda máquina nem uma conexão serial, pode usar uma solução de virtualização como o VirtualBox para emular a interface requerida. Além disso, Torvalds integrou ao kdb, um frontend do kgdb, na versão 2.6.35 do kernel para haver compatibilidade com operações simples, como ler e definir endereços de memória, ler mensagens do kernel ou mostrar os processos de computação instanciados – todos acontecendo no mesmo sistema. Caso seja configurada para isso, a ferramenta kdb é habilitada automaticamente quando o kernel sofre alguma pane (kernel crash). De outro modo, você pode pressionar o atalho de teclado [Alt] + [PrtScr] + [g]. Contudo, isso ainda não permite que os desenvolvedores depurem o kernel no nível da linguagem de programação.

www.linuxmagazine.com.br


Depuração do kernel Linux | TUTORIAL

o comando mknod /dev/hello c 254 0 para criar o arquivo de dispositivos externos, que um aplicativo usaria para acessar um driver neste exemplo. Você pode descobrir se o sistema usa um número maior do que 254 digitando o comando cat /proc/devices | grep Hello. Depois, inicie o GDB no sistema host, normalmente a partir do diretório fonte do kernel. Após digitar os comandos file vmlinux e

target remote :1234, o Qemu paralisa

o sistema Linux. O seguinte comando informa ao sistema o endereço hexadecimal do segmento de código e dos dois segmentos de dados: add-symbol-file path/hello.ko 0xd8817000 -s .data 0xd88170e0 -s .bss 0xd8817294

Agora, você pode definir um breakpoint, por exemplo, para a

função driver_read. O comando continue pede para o sistema Linux voltar ao trabalho. Se você digitar o comando cat /dev/hello no terminal do sistema que está depurando, verá que agora o driver_read está habilitado e o GDB interrompe o kernel no ponto definido antes. Você pode, então, investigar as células de memória do módulo e acompanhar as etapas do processo.

Quadro 2: Breve guia do Buildroot

Conclusão

Várias etapas são necessárias para tornar um ambiente apto para depurar o kernel Linux e seus módulos.

Pode ser confuso ver o depurador saltar entre as linhas de código, aparentemente sem motivo. O acesso às variáveis locais explica a razão disso: value optimized out – o compilador – otimizou o código do kernel. Isso significa que algumas das variáveis definidas estão invisíveis para o depurador; fragmentos de código foram remodelados. Como algumas macros estão sendo usadas no kernel, a resolução de problemas também não é nem um pouco facilitada. Em muitos casos, descobrimos que uma variável na verdade é uma macro inteligente. Assim, a depuração do kernel continua a ser um desafio que exige muita paciência e prática. ■

1. Baixe e descompacte o Buildroot: wget http://buildroot.uclibc.org/downloads/buildroot-2011.11.tar.bz2 tar xvfj buildroot-2011.11.tar.bz2 2. Configure o Buildroot e gere o sistema: cd buildroot-2011.11 make qemu_x86_defconfig make menuconfig (build-option, Kernel-Version 3.2, gdb, tty1) make make linux-menuconfig (debug info) make 3. Compile o módulo e copie-o no diretório raiz: cd driver export CROSS_COMPILE=... export ARCH=... make cp module.ko .../output/target/root/ 4. Gere novamente o sistema de arquivos principal: cd buildroot-2011.11 make 5. Inicie o sistema com o Qemu e o servidor de depuração: qemu -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S & 6. Inicie o depurador:

Mais informações [1] Download do Buildroot: http://buildroot.uclibc. org/download.html

gdb Sessão do depurador: file vmlinux target remote :1234 continue 7. Faça login, carregue o driver e identifique os endereços de memória (por exemplo, para hello.ko): insmod hello.ko cat /sys/module/hello/sections/.text cat /sys/module/hello/sections/.data cat /sys/module/hello/sections/.bss 8. Carregue os dados de símbolos do módulo: add-symbol-file module.ko text_address -s .data data_address -s .bss bss_address 9. Depuração: defina os pontos de parada de código (breakpoints) ou realize uma depuração personalizada.

Linux Magazine #91 | Junho de 2012

Os autores Eva-Katharina Kunst, jornalista, e Jürgen Quade, professor da Faculdade do Baixo Reno (Alemanha), são fãs do Código Aberto desde os primórdios do Linux. Juntos, publicaram o livro “Desenvolvimento de drivers no Linux”, sobre o kernel 2.6.

Gostou do artigo? igo? Queremos ouvir sua opinião. pinião. Fale conosco em cartas@linuxmagazine.com.br zine.com Este artigo no nosso sso site: s : r/artic 6939 http://lnm.com.br/article/6939

73


SEGURANÇA | Monitoramento avançado de portas

SEGURANÇA

Monitoramento avançado de portas

Em guarda! O PortSentry monitora suas portas e detecta quando alguém está tentando procurar por alguma aberta. por Chris Binnie

A

ntigamente, sem dúvida a Internet era um lugar melhor. Da mesma maneira que deixávamos a porta da frente de casa destrancada ao sair para as compras, podíamos deixar o email acessível com a senha e ninguém daria a mínima. E, embora chegassem apenas cerca de 20 emails por semana, o bom era que todos eram realmente para nós, de pessoas que conhecíamos de verdade. Infelizmente, a Internet não é mais assim. Estes dias – em que um servidor Windows não atualizado é supostamente infectado dez segundos após ser plugado na web – mostram o quão preciosa e imperfeita é a Internet.

Atento à vizinhança Nestes tempos obscuros, ao configurar um servidor novinho em folha e colocá-lo online na Internet, é fundamental acompanhar como ele está indo. Saber quanto de banda está usando e quantos emails ele envia em um dia faz parte do básico, mas você sabe quantas vezes alguém escaneou as portas TCP e UDP que

74

você deixou abertas? Você pode mesmo garantir que todas as 65.535 portas UDP e 65.535 portas TCP estão seguras, todo dia e toda noite, 365 dias por ano? Felizmente, com pouca customização você pode fazer isso facilmente com o veterano e robusto aplicativo de segurança PortSentry [1]. Neste artigo, vou ajudá-lo a monitorar todas as suas portas e evitar o banimento dos IPs de seus próprios usuários e administradores durante o processo. Por falar nisso, o PortSentry vem lá daqueles tempos inocentes e esquecidos, já com mais de dez anos de idade; espantosamente, ainda faz seu trabalho muito bem. No que diz respeito ao PortSentry, a simplicidade é a chave para sua eficiência.

Implementações diferentes O PortSentry reage de modo um pouco diferente nos diversos sistemas operacionais; já o utilizei no Solaris, Debian, Ubuntu e Gentoo, mas aqui vou focar na versão Debian/Ubuntu.

Uma das principais diferenças entre os sistemas operacionais encontra-se em como eles “abrem” as portas. O PortSentry foi projetado para monitorar qualquer porta não utilizada pelos daemons legítimos durante o período de inicialização e execução. Em alguns sistemas do tipo Unix, em vez de apenas responder a sondagens nessas portas abertas, o PortSentry de fato abre as portas não usadas e vira quase que um chamariz – o que tem seus prós e contras. O aplicativo tem alguns arquivos de configuração, a maioria presentes no diretório /etc/portsentry, nas distribuições baseadas em Debian. Um destes arquivos, contudo, fica localizado em /etc/default/portsentry e contém as configurações sobre o modo como o programa deve ser executado. Aqui, estou usando os modos avançados tanto para TCP quanto para UDP: TCP_MODE="atcp" UDP_MODE="audp"

A figura 1 mostra um pouco dos modos disponíveis do PortSentry.

www.linuxmagazine.com.br


Monitoramento avançado de portas | SEGURANÇA

Nos modos padrão ( basic port-bound), o programa é executado em segundo plano e reporta quaisquer violações, ao passo que nos modos Stealth usa um socket raw para monitorar todos os pacotes que chegam. Caso uma porta monitorada seja sondada, ele bloqueia o host. Aparentemente, esse método detecta escaneamentos do tipo connect(), SYN/half-open e FIN. Os modos mais sensíveis são aqueles usados na detecção do tipo Advanced Stealth. Você pode pedir explicitamente ao PortSentry para ignorar certas portas (o que pode ser importante ao executar uma configuração particularmente reativa) para proteger o tráfego legítimo (figura 2). Por padrão, o PortSentry presta mais atenção nas primeiras 1024 portas (também chamadas de portas privilegiadas) porque é aí que as conexões não efêmeras geralmente se originam com os daemons. Como parte dos modos avançados tanto para TCP quanto para UDP, o PortSentry

emprega o que é chamado de modo Advanced Logic, em que pode seguir o tráfego de conexões já estabelecidas, ignorar a reconexão em uma porta separada e evitar que se dispare um falso positivo. Um exemplo seria um cliente FTP que abre portas fora do intervalo privilegiado (qualquer uma entre 1024 e 65535), exigindo que o servidor FTP se conecte novamente a você, abrindo outra porta. O PortSentry é inteligente o suficiente para considerar isso como tráfego seguro; esse mecanismo poderia até ser classificado como um tipo rudimentar de motor de inspeção statefull, o que, para um sistema dessa idade, é surpreendente.

Afaste-se das portas O principal arquivo de configuração, portsentry.conf, pode ser considerado longo, mas assim que você começar a escaneá-lo, vai ver que muitas opções não se aplicam a todos os modos compatíveis, então é um trabalho relativamente leve.

Listagem 1: Arquivo de configuração principal 01 02 03 04 05 06 07 08 09

# The KILL_RUN_CMD_FIRST value should be set to "1" to force # the command to run *before* the blocking occurs and should # be set to "0" to make the command run *after* the blocking # has occurred. # KILL_RUN_CMD_FIRST = "0" # # KILL_RUN_CMD="commands_to_run"

Listagem 2: Script personalizado disparado pelo PortSentry 01 #!/bin/bash 02 03 # IPs locais são banidos apenas brevemente 04 if [ `echo $1 | grep '123.45.67.' ` ] || [ `echo $1 | grep '89.91.23.' ` ] || [ `echo $1 | grep '45.67.78.91' ` ] 05 then 06 /bin/sleep 1200 07 /sbin/iptables -D INPUT -s $1 -j DROP 08 /usr/bin/logger "portsentry: Remoção do banimento para o IP: $1" 09 exit 0 10 fi 11 12 # De outro modo, banir permanentemente 13 exit 0

Linux Magazine #91 | Junho de 2012

Por enquanto, vou focar no Advanced Stealth Mode, já que ele fica atento a escaneamentos sequenciais de portas e outras mágicas que os agressores empregam hoje na Internet. Dentro do arquivo de configuração principal, a primeira parte interessante é mostrada na figura 3. Os comentários são um alerta bem claro do autor. A seção logo abaixo é mais importante. Deixei algumas das definições usadas no mundo real para dar um bom exemplo sobre como evitar que broadcasts NetBIOS, DHCP e similares disparem os mecanismos de banimento. Resumidamente, falarei sobre como evitar o banimento acidental de toda sua LAN, ao mesmo tempo mantendo seu servidor protegido de ataques.

Ignorar ou não O próximo parâmetro a ser verificado, garante que ataques a endereços de IP sejam realmente banidos e não apenas reportados: BLOCK_UDP="1" BLOCK_TCP="1"

Depois, será preciso definir qual mecanismo será disparado quando você quiser banir um endereço IP. O padrão no Linux é preencher sua tabela de hosts locais com aquilo que, na prática, são rotas do tipo “buraco negro” para endereços IP não existentes em sua rede local (assim, já existe uma rota em sua tabela de hosts e você está enviando o tráfego de ataque para outro lugar – para perturbar outra pessoa, presumivelmente): # Generic Linux KILL_ROUTE="/sbin/route add -host $TARGET$ gw 123.45.67.89"

Vou abordar o comando KILL_RUN_CMD mais tarde. Esse méto-

do, contudo, é um pouco antiquado e não muito eficiente, então seria

75


SEGURANÇA | Monitoramento avançado de portas

Figura 1 Os diversos modos do PortSentry.

mais inteligente usar a ferramenta iptables ou algo semelhante para derrubar (drop) o endereço IP agressor: # iptables support for Linux KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"

A próxima seção interessante está perto do fim do arquivo de configuração. Ela permite executar um comando externo e está descrita dessa maneira. Se você planeja personalizar as respostas do PortSentry a ataques, assegure-se de que compreendeu essa seção e a ordem dos eventos (listagem 1).

Personalização Deparei-me com algumas limitações no modo sobre como um script externo seria executado ao ser disparado. Mas, com um pouco de experiência em linha de comando, você pode contornar qualquer problema. Por exemplo, eu tinha uma rede local com máquinas que às vezes eram infectadas com software malicioso ou ficavam comprometidas, tornando-se um risco para meus outros servidores. O PortSentry pode oferecer uma simples função “ignore IP” ao acrescentar blocos de endereços IP no formato CIDR, ou apenas endereços IP isolados ao arquivo /etc/ portsentry/portsentry.ignore.static. Esse método funciona na maioria das situações, mas eu tinha que saber se alguma máquina na rede

estava escaneando meus servidores em uma tentativa de invasão, ou para descobrir quais serviços estavam sendo executados para um futuro ataque. Além disso, quis desconectar brevemente todo acesso a meus servidores locais comprometidos e fazer o PortSentry me enviar emails a respeito. Para evitar uma intervenção manual, decidi restaurar os serviços apenas após algum tempo depois de iniciar o banimento, para fazer com que os administradores e usuários percebessem que sua atenção era necessária, esperando que alguns banimentos chamassem suas atenções e os fizessem examinar melhor a situação. Com a ajuda do agendador cron e um script Shell, isso foi facilmente realizado (após lidar com algumas questões de ambiente desagradáveis): KILL_RUN_CMD="(/usr/bin/whois $TARGET$) | /usr/bin/mailx -s 'Ganymede baniu $TARGET$ pelo escaneamento das portas $PORT$'alarms@mail.domain.com; /etc/portsentry/temp_ban_length $TARGET$ $PORT$;"

O parãmetro KILL_RUN_CMD personalizado se divide em dois elementos principais. O primeiro executa uma pesquisa WHOIS sobre o endereço IP do agressor e o coloca em um email para os administradores com uma linha de assunto significativa, detalhando o que aconteceu.

O segundo elemento invoca o primeiro script customizado diretamente do PortSentry e verifica se o endereço IP do agressor é um dos IPs locais reconhecidos. Se sim, ele bane o IP por dez minutos e, então, reabre o acesso aos serviços novamente. Assim que o banimento temporário é removido, o logger cria um registro no log do sistema (syslog) para que o administrador possa ver facilmente que o banimento do endereço IP foi removido. Tenha em mente que esse KILL_ RUN_CMD e o script da listagem 2 (/etc/ portsentry/temp_ban_length) podem ser melhorados com elementos como trancar arquivos (se determinado número de emails for gerado pelo PortSentry para um host) ou um conjunto de portas, por exemplo; mas isso satisfez adequadamente minhas necessidades devido à baixa taxa de alertas gerados. O segundo script é disparado pelo cron a cada dez minutos (obviamente, o tempo é ajustável). Isso é necessário porque o PortSentry mantém um log de suas conexões banidas nos arquivos – utilmente nomeados – / etc/portsentry/portsentry.blocked. atcp e /etc/ports-entry/portsentry. blocked.audp. O programa parece

consultá-los em vez de verificar regras de firewall (para maior eficiência, suponho); assim, ele pode dizer se um endereço IP já está banido quando este for reconhecido em algum momento no futuro. Para nossos propósitos, isso significa que um IP pode atacar uma vez, ser banido por dez minutos e depois voltar e atacar impunemente, já que o PortSentry o lista como uma questão já superada. A entrada cron seguinte dispara o script para corrigir esse problema:

Figura 2 Como ignorar certas portas ao usar os modos Advanced.

76

www.linuxmagazine.com.br


Monitoramento avançado de portas | SEGURANÇA

# Limpa os LAN IPs do PortSentry */10 * * * * root /etc/portsentry/perm_ban_length

O script na listagem 3 (/etc/portsentry/perm_ban_length), então, percorre cada um dos arquivos blocked com o histórico PortSentry e apaga quaisquer arquivos com o comando sed -i. O script está detalhado para facilitar a visualização de duas pequenas seções – uma para TCP e outra para o histórico UDP.

Finalmente, faz-se uma rápida menção sobre o que foi removido no syslog para que os endereços LAN IP sejam banidos novamente caso tentem atacar no futuro.

Conclusão Usar o PortSentry do modo como ele está é suficiente para diversas situações de servidores, mas espero que essa rápida olhada sobre como customizá-lo lhe forneça

ideias sobre como resolver seus próprios problemas. É importante que você continue a monitorar quem está se conectando em seus servidores, sendo igualmente importante responder a estas conexões de algum modo – às vezes manualmente, outras automaticamente. Desde a implementação do script compartilhado neste artigo, as máquinas LAN que temporariamente eram banidas, agora raramente causam problema, embora causassem no passado. Espero que você obtenha os mesmos resultados. ■

Mais informações [1] PortSentry: http:// sourceforge.net/ projects/sentrytools

Gostou do artigo? igo?

Figura 3 Não bagunce as definições em relação às portas privilegiadas; você foi avisado.

Queremos ouvir sua opinião. nião. m Fale conosco em cartas@linuxmagazine.com.br ne.com Este artigo no nosso osso site: s e: r/artic 693 http://lnm.com.br/article/6938

Listagem 3: Script personalizado disparado pelo Cron 01 02 03 04 05 06 07 08 09 10

#!/bin/bash # Script cron para limpar os LAN IPs reconhecidos do histórico do PortSentry, # já que eles não são banidos permanentemente e o PortSentry ignora conexões deles de outro modo bantcp="/etc/portsentry/portsentry.blocked.atcp"; banudp="/etc/portsentry/portsentry.blocked.audp"; # TCP tcp=`tail -n1 $bantcp | awk '{ print $6 }' | cut -d / -f 2`; if [ `echo $tcp | grep '123.45.67.' ` ] || [ `echo $tcp | grep '89.91.23.' ` ] || [ `echo $tcp | grep '45.67.78.91' ` ] then /bi n/sed -i '/'$tcp'/ d' /etc/portsentry/portsentry.blocked.atcp /us r/bin/logger “portsentry: Removidos os eventos TCP ($tcp) do arquivo de histórico do PortSentry” exit 0 fi

11 12 13 14 15 16 17 # UDP 18 udp=`tail -n1 $banudp | awk '{ print $6 }' | cut -d / -f 2`; 19 if [ `echo $udp | grep '123.45.67.' ` ] || [ `echo $udp | grep '89.91.23.' ` ] || [ `echo $udp | grep '45.67.78.91' ` ] 20 then 21 /bin/ sed -i '/'$udp'/ d' /etc/portsentry/portsentry.blocked.audp 22 /usr/ bin/logger "portsentry: Removidos os eventos UDP ($udp) do arquivo de histórico do PortSentry" 23 exit 0 24 fi 25 26 exit 0

Linux Magazine #91 | Junho de 2012

77


PREVIEW

Linux Magazine #92 Virtualização Em tempos onde tudo o que se fala é sobre ambientes virtuais, computação em nuvem e outros termos relacionados, a virtualização é componente onipresente de todas estas tecnologias. Na próxima edição da Linux Magazine, vamos abordar este tema em artigos imperdíveis. ■

Admin Magazine #07 Storage Na Admin Magazine #07, vamos falar sobre armazenamento em larga escala, ou seja, storages. Atualmente 10 entre 10 empresas de todos os segmentos utilizam storages para armazenar seus arquivos e programas. Você irá aprender algumas novas técnicas para armazenamento de arquivos em storages. Não perca!

82

www.linuxmagazine.com.br

Lm 91 ce  
Advertisement