Lm 101 ce

Page 1

AUGUSTO CAMPOS p.8

MADDOG p.24

CEZAR TAURION p.26

A eterna briga entre marcas e propriedades

Como o Raspberry Pi reacendeu o interesse pelo hardware

O futuro dos pacotes de aplicativos

MEDIALINX # 101 Abril 2013

» Relatórios do Squid com o SARG p.60

» Java, Ruby e Rails: conheça o JRuby on Rails p.74

» Benchmarks do GCC 4.3? p.58

» Becape de bancos de dados com a Libferris p.46

» LPI nível 2: Servidores NIS e DHCP p.52

VEJA TAMBÉM NESTA EDIÇÃO:

SEJA UM BOM GESTOR E UTILIZE AS MELHORES PRÁTICAS ADOTADAS E RECOMENDADAS PELOS PROFISSIONAIS MAIS EXPERIENTES NESSA ÁREA p.36

WWW.LINUXMAGAZINE.COM.BR

Com o DNSSEC, a resolução de nomes fica protegida de ataques. Mas seu preço vale a pena?

REDES: IPV6 p.64

Conheça as vantagens da nova versão do Internet Protocol, e veja por que é difícil adotá-la

» Cobit, CMMI, ITIL. Quais as melhores práticas? p.36

» ITIL na prática p.39

» Novidades do ITIL v3. p.44

SEGURANÇA: DNSSEC p.69

» O que dizem os profissionais certificados p.24

CASE ALFRESCO p.26 A Construcap agilizou seus projetos com o Alfresco

A REVISTA DO PROFISSIONAL DE TI

GOVERNANÇA COM

LINUX PARK 2008 p.28 Iniciada em Porto Alegre a temporada de seminários Linux Park de 2008

CEZAR TAURION p.34 O Código Aberto como incentivo à inovação

00044

R$ 13,90 € 7,50

9 771806 942009

#44 07/08

A REVISTA DO PROFISSIONAL DE TI

VIRTUALIZAÇÃO CASE ALFRESCO p.26 A Construcap agilizou seus projetos com o Alfresco

LINUX PARK 2008 p.28 Iniciada em Porto Alegre a temporada de seminários Linux Park de 2008

CEZAR TAURION p.34 O Código Aberto como incentivo à inovação

#44 07/08

A REVISTA DO PROFISSIONAL DE TI

9 771806 942009

00044

R$ 13,90 € 7,50

A TECNOLOGIA BASE DA COMPUTAÇÃO EM NUVEM NÃO PARA DE EVOLUIR. CONHEÇA AS NOVAS FERRAMENTAS DISPONÍVEIS PARA TIRAR O MÁXIMO PROVEITO DESSA EVOLUÇÃO p.33 GOVERNANÇA COM

SEJA UM BOM GESTOR E UTILIZE AS MELHORES PRÁTICAS ADOTADAS E RECOMENDADAS PELOS PROFISSIONAIS MAIS EXPERIENTES NESSA ÁREA p.36 » O que dizem os profissionais certificados p.24

» Clusters de máquinas virtuais com o Proxmox p.34 » Cobit, CMMI, ITIL. Quais as melhores práticas? p.36 » ITIL na prática p.39

» Novidades do ITIL v3. p.44

SEGURANÇA: DNSSEC p.69

VEJA TAMBÉM NESTA EDIÇÃO:

Com o DNSSEC, a resolução de nomes fica protegida de ataques. Mas seu preço vale a pena?

» Relatórios do Squid com o SARG p.60

REDES: IPV6 p.64

» Becape de bancos de dados com a Libferris p.46

» Java, Ruby e Rails: conheça o JRuby on Rails p.74 » Benchmarks do GCC 4.3? p.58

» Desktops virtuais com phpVirtualBox p.40 Conheça as vantagens da nova versão do Internet Protocol, e veja por que é difícil adotá-la

» LPI nível 2: Servidores NIS e DHCP p.52

WWW.LINUXMAGAZINE.COM.BR

» Monitoramento VMware com OpenNMS p.46

SEGURANÇA p.50

Use túneis SSH reversos para garantir a segurança de acesso a medidores inteligentes

SIMON p.56

Linux controlado por voz

ANDROID p.62

Como garantir sua segurança sem deixar de lado os melhores recursos da tecnologia

VEJA TAMBÉM NESTA EDIÇÃO: » Entrevista com Eben Upton da Raspberry Pi Foundation p.29 » Novidades do Apache HTTP Server 2.4 p.65 » Armazenamento flash para Linux p.70

WWW.LINUXMAGAZINE.COM.BR


AUGUSTO CAMPOS p.8

MADDOG p.24

CEZAR TAURION p.26

A eterna briga entre marcas e propriedades

Como o Raspberry Pi reacendeu o interesse pelo hardware

O futuro dos pacotes de aplicativos

MEDIALINX # 101 Abril 2013

E N T E R P R I S E INFRAESTRUTURA

» Relatórios do Squid com o SARG p.60

» Java, Ruby e Rails: conheça o JRuby on Rails p.74

» Benchmarks do GCC 4.3? p.58

» Becape de bancos de dados com a Libferris p.46

» LPI nível 2: Servidores NIS e DHCP p.52

VEJA TAMBÉM NESTA EDIÇÃO:

SEJA UM BOM GESTOR E UTILIZE AS MELHORES PRÁTICAS ADOTADAS E RECOMENDADAS PELOS PROFISSIONAIS MAIS EXPERIENTES NESSA ÁREA p.36

WWW.LINUXMAGAZINE.COM.BR

Com o DNSSEC, a resolução de nomes fica protegida de ataques. Mas seu preço vale a pena?

REDES: IPV6 p.64

Conheça as vantagens da nova versão do Internet Protocol, e veja por que é difícil adotá-la

» Cobit, CMMI, ITIL. Quais as melhores práticas? p.36

» ITIL na prática p.39

» Novidades do ITIL v3. p.44

SEGURANÇA: DNSSEC p.69

» O que dizem os profissionais certificados p.24

CASE ALFRESCO p.26 A Construcap agilizou seus projetos com o Alfresco

A REVISTA DO PROFISSIONAL DE TI

GOVERNANÇA COM

LINUX PARK 2008 p.28 Iniciada em Porto Alegre a temporada de seminários Linux Park de 2008

CEZAR TAURION p.34 O Código Aberto como incentivo à inovação

00044

R$ 13,90 € 7,50

9 771806 942009

#44 07/08

A REVISTA DO PROFISSIONAL DE TI

VIRTUALIZAÇÃO SYS-F627R3-RTB+/R72B+ 8x 3.5” HDs por U

(Visão traseira)

LINUX PARK 2008 p.28 Iniciada em Porto Alegre a temporada de seminários Linux Park de 2008

CASE ALFRESCO p.26 A Construcap agilizou seus projetos com o Alfresco

CEZAR TAURION p.34 O Código Aberto como incentivo à inovação

72x 3.5” HDs 18 HDs por U A TECNOLOGIA BASE DA COMPUTAÇÃO EM NUVEM NÃO PARA DE EVOLUIR. CONHEÇA AS NOVAS 2U Twin SC827HDPARA TIRAR O MÁXIMO PROVEITO DESSA EVOLUÇÃO p.33 FERRAMENTAS DISPONÍVEIS 6 HDDs por lâmina ou nó #44 07/08

9 771806 942009

00044

R$ 13,90 € 7,50

A REVISTA DO PROFISSIONAL DE TI

GOVERNANÇA COM

6x 3.5” HDs por lâmina ou nó

SEJA UM BOM GESTOR E UTILIZE AS MELHORES PRÁTICAS ADOTADAS E RECOMENDADAS PELOS PROFISSIONAIS MAIS EXPERIENTES NESSA ÁREA p.36 » O que dizem os profissionais certificados p.24

» Clusters de máquinas virtuais com o Proxmox p.34 SYS-F617H6-FT+

» Cobit, CMMI, ITIL. Quais as melhores práticas? p.36 » ITIL na prática p.39

» Novidades do ITIL v3. p.44

SEGURANÇA: DNSSEC p.69

VEJA TAMBÉM NESTA EDIÇÃO:

Com o DNSSEC, a resolução de nomes fica protegida de ataques. Mas seu preço vale a pena?

» Relatórios do Squid com o SARG p.60

REDES: IPV6 p.64

» Becape de bancos de dados com a Libferris p.46

4 DP Nodes, Front I/O 12x 3.5” HDs por lâmina ou nó

» Java, Ruby e Rails: conheça o JRuby on Rails p.74 » Benchmarks do GCC 4.3? p.58

» Desktops virtuais com phpVirtualBox p.40

Conheça as vantagens da nova versão do Internet Protocol, e veja por que é difícil adotá-la

» LPI nível 2: Servidores NIS e DHCP p.52

WWW.LINUXMAGAZINE.COM.BR

SC826 » Monitoramento VMware com OpenNMS p.46 12x 3.5” HDs

SSG-6047R-E1R72L

Double-Sided Storage 72x 3.5” HDs; 18 HDs por U

SSE-X24S (10G - 24 Portas)

SC825

SEGURANÇA p.50 8x 3.5” HDs

Use túneis SSH reversos para garantir a segurança de acesso a medidoresSSG-5017R-iHDP inteligentes 12x 3.5” HDs por U

SYS-6017R-73(T)HDP+

SSE-G24-TG4 (1G - 24 Portas)

SSE-G48-TG4 (1G - 48 Portas)

12x 3.5” HDs por U

SIMON p.56

10GbE/1GbE Switches

Linux controlado por voz

Software de Gerenciamento Soluções Hadoop Monitoramento / Controle de Energia em rack

Melhor linha de soluções de infraestrutura corporativa para Hadoop

• Plataforma corporativa para análise de Big Data de alta confiabilidade, qualidade e desempenho • Hot-Swap 6x, 8x, Como garantir sua segurança sem 4x, deixar de and lado12x os 3.5” HDs por lâmina / 1U • Fontes redundantes de eficiência nível Platinum (> 95%) melhores recursos da tecnologia • Gerenciamento remoto de clusters e sistemas com IPMI integrado • Switches Layer 3 10GbE/1GbE de excelente custo/benefício com Uplink de 10GbE • Suporte à família de processadores Intel® Xeon® Processor E5-2600

ANDROID p.62

VEJA TAMBÉM NESTA EDIÇÃO:

www.supermicro.com/Brazil » Entrevista com Eben Upton da Raspberry Pi Foundation p.29

© Super Micro Computer, Inc. - As configurações estão sujeitas a mudança sem aviso prévio.

Intel, the Intel logo, Xeon, and Xeon Inside are trademarks or registered trademarks » Novidades do Apache HTTP Server 2.4 p.65 of Intel Corporation in the U.S. and/or other countries.

» Armazenamento flash para Linux p.70

All other brands and names are the property of their respective owners.

Avnet Embedded Brasil Alameda Mamoré 989, 18º Andar CEP 06454-040 | Barueri/SP Tel: +5511 2107 7954 ricardo.pereira@avnet.com 00101 #101 04/13

9 771806 942009

WWW.LINUXMAGAZINE.COM.BR

R$ 14,90 € 7,50


Inovação corporativa

Expediente editorial

Editores Flávia Jobstraibizer fjobs@linuxmagazine.com.br Laura Loenert Lopes llopes@linuxmagazine.com.br Editor de Arte Hunter Lucas Fonseca hfonseca@linuxnewmedia.com.br Colaboradores Alan Holt, Falko Benthin, Bruce Byfield, Rich Bowen, Thomas Drilling, Christian Pape, Trommer Ronny, Peter Schulik, Kurt Seifried, Zack Brown, Jon “maddog” Hall, Alexandre Borges, Cezar Taurion, Gilberto Magalhães, Klaus Knopper, Augusto Campos. Tradução Laura Loenert Lopes Revisão Flávia Jobstraibizer 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 - 2013: Linux New Media do Brasil Editora Ltda. Impressão e Acabamento: EGB 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 #101 | Abril de 2013

Impresso no Brasil

Em abril de 2013, foi realizada pela sétima vez a pesquisa anual intitulada “O Futuro do Open Source”, conduzida pelas empresas de consultoria North Bridge Venture Partners e Black Duck. Trata-se de um estudo sobre o uso e a importância do Software Livre e de Código Aberto (SL/CA) no setor corporativo. Segundo os organizadores, participaram da pesquisa mais de 800 decisores, revendedores, arquitetos de sistemas, desenvolvedores e especialistas em marketing. 42% dos participantes da pesquisa eram funcionários de fabricantes de software. Os resultados refletem mais a situação de empresas norte-americanas, mas também seriam de interesse para a indústria em outros mercados, como a Europa e a América Latina, conforme declarou a Open Source Business Foundation. Na atual edição da pesquisa, os quesitos segurança e qualidade ocuparam o primeiro lugar enquanto motivo para a utilização de software de código aberto. Nos dois anos anteriores a independência de fornecedor havia sido o motivo mais citado para a adoção do Software Livre no mercado corporativo. A pesquisa indica ainda uma redução acentuada na preocupação do mercado com o suporte comercial a soluções Open Source, algo que foi por muito tempo considerado um critério de rejeição para essa modalidade de software. Mas o dado mais interessante dessa pesquisa na opinião do autor deste editorial é que 61% dos seus participantes enxergam o software de código aberto como um fator de inovação, como algo que, em conjunto com as parcerias colaborativas, faz avançar a indústria de tecnologia. Open Source também resolve os maiores desafios de tecnologia corporativos e governamentais, o que gera um impacto cultural onipresente na nossa sociedade. 57% dos participantes também concordam que suas empresas deverão colaborar com seus concorrentes através de comunidades nos próximos três anos. Governo, saúde e mídia são setores que estão aumentando o uso de tecnologias de código aberto mais acentuadamente. Entre os desafios corporativos mais importantes enfrentados pelos participantes da pesquisa através do uso de software de código aberto estão, além da onipresente redução de custos, projetos de integração de sistemas e Big Data. 62% deles acreditam que em cinco anos mais da metade do software adquirido por empresas será de código aberto. Vale notar que, enquanto os serviços de suporte/atualização via subscrição ainda são a principal fonte de receita de fabricantes de SL/CA, a modalidade de software como serviço (o famoso SaaS –– Software as a Service) ficou em segundo lugar nesse quesito (ocupando nas edições de 2011 e 2012 da mesma pesquisa as posições 5 e 4, respectivamente). Entre os participantes da pesquisa que trabalham para fabricantes de software, SaaS foi classificado em primeiro lugar como fonte de receita. Fato consumado: Open Source se cristalizou como modelo de desenvolvimento padrão do mundo civilizado. Está na nossa mão quando telefonamos e nos data centers que processam todo tipo de comunicação na sociedade hodierna. Está no banco, no carro e até na sua televisão. No avião, no submarino e até na Estação Espacial Internacional. Você está preparado para encarar essa realidade? n

EDITORIAL

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

Rafael Peregrino da Silva Diretor de Redação 3


ÍNDICE

CAPA No mundo virtual

33

Até onde a virtualização poderá nos levar? Clusters virtualizados

34

O Proxmox Virtual Environment foi desenvolvido a partir de uma dica interna para um clone livre ESXi/vSphere da VMware. Neste artigo, mostramos como configurar um cluster PVE de alta disponibilidade. Desktops virtuais com phpVirtualBox

40

Com o phpVirtualBox é possível criar, configurar, gerenciar e usar máquinas virtuais remotas em uma janela do navegador. Monitoramento VMware com OpenNMS

46

Apresentamos uma nova versão da ferramenta de gerenciamento de rede em código aberto OpenNMS, que agora inclui uma opção para o monitoramento baseada em infraestruturas VMware.

4

www.linuxmagazine.com.br


Linux Magazine 101 | ÍNDICE

ANDROID

COLUNAS Augusto Campos

08

Klaus Knopper

09

Charly Kühnast

12

Seu dispositivo a salvo

62

Como garantir a segurança de um dispositivo Android sem privar-se dos mais modernos aplicativos e sem deixar de lado os melhores recursos da tecnologia.

Alexandre Borges 14 Zack Brown

16

NOTÍCIAS

ANÁLISE

Geral 21 ➧ UOL Host lança nova plataforma de hospedagem de sites ➧ Arduino lança placa WiFi e plataforma robótica prontas para uso ➧ Hitachi e o grande enigma do hardware

Novidades do Apache HTTP Server 2.4

65

O Apache HTTP Server versão 2.4 é cheio de novos recursos. Neste artigo, compartilharemos alguns deles.

➧ Raspberry Pi: módulo de câmera já está disponível

CORPORATE Coluna: Jon “maddog” Hall

24

Coluna: Cezar Taurion

26

Coluna: Gilberto Magalhães

28

Execução silenciosa

70

Os elegantes tablets e smartphones da atual geração digital abrigam memória Flash, que economiza espaço e energia. Neste artigo, explicamos suas características e sugerimos sistemas apropriados para o Linux.

SEGURANÇA Entrevista: Eben Upton

29

Notícias 32 ➧ Sem energia, São Paulo corre risco de perder datacenters ➧ Nuvem do Serpro será 100% em código aberto

Acesso seguro a medidores inteligentes

50

Neste artigo, mostraremos um projeto prático para monitorar o uso de energia doméstica com SSH e OpenWrt.

SERVIÇOS

TUTORIAL Linux controlado por voz Simon é uma ferramenta de reconhecimento de voz sofisticada e de fácil acesso a dois poderosos motores de reconhecimento de voz, o Julius e o CMU Sphinx.

Linux Magazine #101 | Abril de 2013

56

Editorial 03 Emails 06 Linux.local 78 Preview 82

5



Coluna do Augusto

COLUNA

Marca registrada A eterna briga entre marcas e propriedades é uma constante em todo o mercado de software. por Augusto Campos

A

o longo do primeiro trimestre tivemos um exemplo clássico da importância de registrar marcas associadas a projetos comunitários e abertos: a Python Software Foundation (PSF) – que é o guardachuva administrativo que cobre o desenvolvimento da linguagem Python – teve que lidar com uma empresa inglesa que solicitou o registro da marca Python, para uso associado a quaisquer sistemas informatizados, válida para todos os mercados da Europa. Embora seja clássico no sentido de que é a mesma história de sempre no que diz respeito ao uso de um nome que é notório no mundo do código aberto mas que não foi registrado como marca pela comunidade interessada, este caso em particular teve algumas peculiaridades, sendo a primeira delas o fato de que a PSF havia registrado a marca em questão nos EUA, mas não lembrou de fazê-lo na Europa. Outra peculiaridade é que não foi uma ação inteiramente súbita. A empresa em questão, que se interessou em batizar como “Python” uma linha de produtos para servidores, já tinha o registro do domínio inglês python.co.uk há mais de uma década. Após o pedido de registro pela empresa inglesa, entretanto, a PSF ainda teve tempo de agir para contestar o procedimento, e o fez com ajuda de seus associados europeus, o que levou a um resultado raro em situações do gênero: um acordo. Após ver a reação e tomar conhecimento da contestação, a empresa em questão abriu mão do uso do nome Python para sua nova linha de produtos e não vai prosseguir com o registro. Mas nem sempre o resultado é favorável à comunidade. Um exemplo é o OpenOffice, que durante anos usava no Brasil a marca BrOffice porque seu 8

nome oficial tinha sido registrado antes por uma empresa brasileira que atuava em outro ramo de ferramentas de software. Não são só os projetos comunitários os atingidos por (ou sujeitos a) essa situação: no começo do ano pudemos acompanhar o caso da popular marca internacional de smartphones que teve seu registro contestado no Brasil por uma empresa que registrou o mesmo nome anos antes – e a mesma marca enfrenta situação similar em outros mercados, como o do México. A marca Linux já passou por situação semelhante: ninguém tinha registrado, e em 1994 um indivíduo o fez, e a partir daí passou a exigir royalties dos distribuidores comerciais de Linux. A incerteza a respeito durou algum tempo, mas em 1996 Linus Torvalds e algumas das empresas afetadas processaram o indivíduo em questão, e no ano seguinte o registro da marca foi transferido a Linus Torvalds. Ao longo dos anos desde então, a marca Linux foi gerenciada de formas variadas, culminando com o modelo atual, na qual uma instituição indicada por Torvalds (o Linux Mark Institute) a gerencia, oferecendo aos interessados os termos de adesão nos quais é oferecida uma licença gratuita, perpétua e mundial para seu uso. Provavelmente a marca do seu projeto não precisa de uma estruturação tão grande, mas você não deve descuidar dela mesmo assim. Considere os exemplos acima, e consulte apoio profissional especializado para conhecer suas opções! n Augusto César Campos é administrador de TI e, desde 1996, mantém o site BR-linux.org, que cobre a cena do Software Livre no Brasil e no mundo.

www.linuxmagazine.com.br


Coluna do Alexandre Borges

COLUNA

Metasploit – parte I Uma visão geral sobre a versão Community, do framework de detecção de vulnerabilidade de segurança Metasploit no Ubuntu. por Alexandre Borges

O

utra dia um aluno comentou comigo que estava estudando alguns livros de segurança e que, invariavelmente, em todos eles sempre havia um capítulo no qual o autor se dedicava a ensinar como efetuar uma invasão, mas o que era mostrado sempre era feito de modo superficial, pois partiam de premissas muito generosas (quase todas elas com acesso local à máquina) e nunca demonstravam técnicas de fato interessantes. Disse então que isto o desestimulava a aprender sobre segurança, já que havia a impressão de sempre estar faltando algo. Expliquei a ele que não há uma fórmula pronta para se aprender uma área tão complexa e que ele deveria insistir e continuar lendo. Sem dúvida, os pré-requisitos de aprendizado que um profissional de segurança necessita saber são: C, Assembly, diversas técnicas de coleta de dados, escaneamento, craqueamento de senhas, debugging, engenharia reversa etc., o que talvez torne pouco mais difícil e moroso aprender sobre segurança. É assim mesmo. Na ocasião, mencionei se, por acaso, ele já teria tentado explorar o Metasploit; porém, como muitos, ele me disse que já tinha lido algo a respeito e desistido, pois não entendia o mecanismo de forma clara. Neste momento percebi que deveria escrever a respeito do Metasploit. Não é minha intenção varrer o assunto de ponta a ponta, mas ao menos mostrar como as tarefas mais simples podem ser executadas para, quem sabe, incentivar interessados a investigar mais a fundo este framework tão fascinante. O projeto Metasploit foi desenvolvido primeiramente em Perl (depois totalmente reescrito em Ruby, sendo que a parte fundamental é a biblioteca Ruby Extension – Rex) por HD Moore por volta de 2003 14

(Spoonm e Matt Miller entraram pouco depois, e hoje em dia existem cerca de 21 colaboradores). Em 2009, a Rapid7 adquiriu o projeto Metasploit e, com isso, trouxe uma visão mais comercial ao framework, sendo que atualmente existem a versão “Metasploit Community” (sem custos), “Metasploit Express” (proprietária, que oferece uma maneira robusta de realizar a exploração remota de forma simples e automatizada, além de possibilitar uma auditoria de senhas quebradas e fornecer múltiplos modelos de relatórios de invasão) e a versão Metasploit Pro (também proprietária, incluindo todos os itens da versão Express e outros diversos recursos, como escaneamento de aplicativos web, módulos de engenharia social, pivoteamento de VPNs, técnicas de ataques a IDS/IPS e total integração com o Nexpose). Aliás, já que mencionamos as versões do framework, tomaremos uma linha diferente: nos exemplos que mostrarei nesta coluna e nas próximas, o foco da nossa abordagem será o Metasploit Community, porém ao invés de explicá-lo em cima do BackTrack 5 (que é uma ferramenta de hacking e análise forense extraordinária), vamos instalar o Metasploit no Ubuntu aproveitando a instalação que provavelmente o leitor já possui (a minha versão é a 11.10 – caso o leitor não esteja seguro de qual versão está usando, poderá executar o comando lsb_release -a para descobrir) e, ao mesmo tempo, saindo um pouco do lugar comum ao usar o Backtrack. O download do Metasploit Community pode ser feito em [1]. De modo adicional, o leitor pode também instalar o Metasploit no Windows (com o antivirus e o antispy desabilitado), mas não falaremos a respeito disto nesta coluna.

www.linuxmagazine.com.br


Uma vez feito o download, para instalar o Metasploit são necessários os comandos: # chmod u+x metasploit-latest-linux-x64-installer.run # ./metasploit-latest-linux-x64-installer.run

Com isso, a instalação do Metasploit ocorre sem qualquer problema e, por padrão, o local de sua instalação é /opt/metasploit. Para ter certeza de que tudo correu bem, digite msfconsole -v. Se obtiver a versão (a minha é a 4.6.0-dev), significa que a instalação ocorreu sem problemas. Como o projeto Metasploit está constantemente incluindo técnicas novas de ataque e exploração, recomendo fortemente que o leitor sempre mantenha a instalação o mais atualizada possível executando o comando msfupdate. Existem outras maneiras de instalar e atualizar o Metasploit. Por exemplo, o leitor pode escolher fazer tudo através do subversion. Mesmo que seja elegante, ainda tenho a preferência pela maneira que mostrei acima. Seguem os passos com subversion: # apt-get install subversion # mkdir /opt/metasploit ; cd /opt/metasploit # svn co https://www.metasploit.com/svn/framework3/ trunk/ # cd trunk ; ls ; svn update

O framework do Metasploit traz embutido o banco de dados PostgreSQL para que seja factível usar e guardar os resultados obtidos; mas não se engane, esta base será muito importante para nós nas próximas colunas. Normalmente, quando entramos no console de operação do Metasploit, já estamos conectados à base, porém, mesmo assim pode ser útil, em algumas ocasiões, saber qual a senha de conexão. Para descobrir, digite: # more /opt/metasploit/apps/pro/ui/config/database.yml

Procure pelo campo “password” da configuração de produção ( production). Desta forma, facilmente conseguiremos a senha necessária. Por enquanto é isso. No mês que vem volto com mais novidades sobre o Metasploit. Até lá. n

Mais informações [1] Download do Metasploit Community http:// www.metasploit.com/download/ Alexandre Borges (linkedin: br.linkedin.com/in/aleborges) é instrutor e especialista sênior em sistemas operacionais Unix, Linux, Banco de Dados, Virtualização, Cluster, Storage, Servidores, Backup, Desempenho e Segurança, além de possuir profundo envolvimento com assuntos relacionados ao kernel Linux.

Agora você tem o controle sobre o desempenho do seu negócio sempre à sua mão. Compras

Finanças

Estoques

NF-e

Vendas Fornecedores

Clientes SOFTWARE

ERP – SISTEMA DE GESTÃO

A micro e pequena empresa ganha uma solução de classe mundial de sistemas de gestão ERP. O Kontroller dispensa aquisição de hardware, Linux Magazine #101 | Abril de 2013 licenças de software, técnicos de suporte ou sistema de backup. Garante alta disponibilidade e oferece fácil acesso via browser.

Saiba mais em: www.vectory.com.br 15 +55 11 3104 6652


Virtualização

CAPA

No mundo virtual Até onde a virtualização poderá nos levar? por Flávia Jobstraibizer

N

ão se trata mais de ficção científica. A virtualização e as tecnologias que as fomentam agora fazem parte da nossa realidade. Chegamos a um ponto onde podemos utilizar "no mundo virtual" o nosso computador pessoal, através de aplicativos para acesso remoto, utilizar servidores em nuvem, utilizando hipervisores e outras plataformas virtualizadas e acessar de qualquer lugar, computadores, sistemas e plataformas sem a necessidade da presença física e sem descuidar da segurança, uma vez que, mesmo em ambientes virtualizados, a camada de segurança continua sendo tão presente e confiável quanto um usuário presente fisicamente inserindo sua impressão digital em um leitor biométrico. O paraíso para as empresas, no que tange à virtualização e computação em nuvem, chama-se economia. Ao invés de gastos exorbitantes com computadores físicos, que possuem alta obsolescência, com sistemas de resfriamento, fontes alternativas de energia e sistemas de contingência (ou mesmo pagando empresas terceirizadas para prover toda esta infraestrutura), os computadores e sistemas passam a ser instâncias virtuais presentes em menores quantidades de máquinas físicas. A preocupação com backup, refrigeração, contingência, recuperação em caso de desastres ou outros problemas é cada vez menor. Existem atualmente diversos aplicativos para a restauração de uma máquina virtual

Linux Magazine #101 | Abril de 2013

em poucos minutos, aumentando a produtividade e resiliência de sistemas virtualizados. Nesta edição da Linux Magazine, você vai aprender a utilizar seu desktop comum de forma virtualizada através do phpVirtualBox, sistema que, através de um simples navegador torna possível acessar e gerenciar seu computador virtualmente. Ainda nesta edição, conheça o Proxmox, solução completa para virtualizar servidores em pequenas e médias infraestruturas, garantindo ainda que seja possível gerenciar as instâncias virtualizadas, replicá-las e dividir suas cargas de trabalho de forma facilitada. Não perca ainda o artigo sobre monitoramento de infraestruturas virtualizadas com VMware e OpenNMS, projeto open source para gerenciamento e monitoramento, provisionamento e gerenciamento de sistemas. Em um mundo cada vez mais virtualizado, não perca a oportunidade de informar-se e melhorar seus conhecimentos acerca das tecnologias de virtualização que somente a Linux Magazine traz para você e boa leitura! n Matérias de capa Clusters virtualizados

34

Desktops virtuais com phpVirtualBox

40

Monitoramento VMware com OpenNMS

46

33


TUTORIAL | Linux por voz

Linux por voz

TUTORIAL

Linux controlado por voz Simon é uma ferramenta de reconhecimento de voz sofisticada e de fácil acesso a dois poderosos motores de reconhecimento de voz, o Julius e o CMU Sphinx. por Falko Benthin

N

o Windows e Mac OS X, os usuários estão há muito tempo acostumados a controlar o PC não apenas com teclado e mouse, mas por voz. Durante vários anos, o Linux tem acompanhado o atraso. A organização sem fins lucrativos “Simon Listens” [1], fundada por Franz Stieger, é a força motriz por trás do software de reconhecimento de voz Simon. O aplicativo, desenvolvido originalmente para oferecer às pessoas portadoras de necessidades especiais o uso do PC sem barreiras, existe há vários anos. A

organização ainda possui este objetivo, mas os desenvolvedores descobriram alguns usos adicionais para o software, incluindo sistemas de controle verbais que facilitam a utilização de modernas tecnologias de comunicação por idosos ou permite que seres humanos controlem robôs, cadeiras de rodas e elevadores. No entanto, se o usuário quiser ditar um texto para Simon, não ficará feliz com os resultados e terá de procurar outro lugar. O Simon tornou-se um projeto oficial do KDE em abril de 2012 [2]

e, portanto, utiliza a infraestrutura do KDE. O software de reconhecimento de voz segue o modelo cliente servidor, que consiste de vários componentes e elaboração de vários outros programas, tais como o pacote de freemantas de reconhecimento de voz CMU Sphinx [3], do motor de reconhecimento de voz Julius [4], com o Hidden Markov Model Toolkit (HTK) [5], e o dicionário de pronúncia Hadi-Bomp [6]. Os componentes de aplicativos incluem a interface Simon, o daemon Simon (Simond), o Simon Acoustic Modeler (sam), e o Simon Sample Collector (SSC).

Inicialização do Simon

Figura 1 Um assistente de configuração torna a configuração de Simon uma tarefa bastante simples.

56

Após a instalação (quadro 1), o Simon aparece no menu Start (Iniciar) do ambiente de trabalho, logo abaixo de Accessibility (Acessibilidade). Alternativamente, podemos iniciar o aplicativo com o comando simon na linha de comando. Na primeira inicialização, um assistente aparece para guiar o usuário na instalação do programa (figura 1). Podemos decidir aqui quais cenários e modelos de linguagem o Simon carregará mais tarde, por padrão, onde reside o reconhecimento de voz do servidor Simond, e se deve iniciar automaticamente. O Simond garante que a entrada de voz dos clientes seja avaliada. Por padrão, ele é executado no mesmo computador que o Simon e escuta na porta 4444. Como é apropriado para um servidor,

www.linuxmagazine.com.br


Linux controlado por voz | TUTORIAL

Quadro 1: Como instalar o Simon Usuários da versão para desenvolvedor do openSUSE podem instalar o Simon facilmente: basta apenas baixar pacotes binários do openSUSE Build Service [7] e completar a instalação utilizando ferramentas de pacotes da distribuição. Se o usuário optar por utilizar qualquer outra distribuição, deve clonar o código fonte do KDE Git: $ git clone git://anongit.kde.org/ simon simonsource ou pegue o tarball [8] e descompacte-o, mude para o diretório recém-criado, e execute build.sh ou o script build_ubuntu.sh. Para concluir a instalação sem erros, pode ser necessário resolver algumas dependências [9] com antecedência. Para desbloquear todos os recursos de interface de reconhecimento de voz completamente, também vamos precisar do CMU Sphinx (sphinxbase, pocketsphinx e sphinxtrain, cada um em uma versão mais recente que a 0.8) ou Julius com o HTK e os pacotes de desenvolvimento do OpenCV (libsamplerate, QAccessibilityClient e libkdepimlibs4). A partir da versão 0.4, Simon usa o mecanismo de reconhecimento de voz CMU Sphinx como backend por padrão, mas ainda suporta completamente o Julius e o HTK proprietário.

ele pode também executar em um computador separado e atender vários clientes; assim, podemos precisar criar contas de usuário protegidas por senha mais tarde. Em uma etapa posterior, configure a placa de som (figura 2); o usuário é, então, levado de volta para a janela principal do aplicativo (figura 3).

pela qual mudar o mecanismo não é recomendado se o usuário possuir um modelo bem treinado. A versão atual do Simon reconhece o modelo utilizado pelo usuário e seleciona automaticamente o backend correto. Um bom lugar para procurar modelos adaptáveis é na função de download

do Simon – Settings/Configure Simon/ Language models/Open model/Download - ou no projeto VoxForge [10]. Depois de baixar um modelo do VoxForge, precisamos importá-lo. Por exemplo, para usar o modelo English CMU Sphinx, o usuário deve baixar o modelo do VoxForge e descompactá-lo. Em seguida, na configuração do modelo de linguagem, em vez de selecionar download, selecione Create from model files (Criar a partir de modelos de arquivos) e digite o caminho para os arquivos exigidos. O processo funciona da mesma forma para todos os outros idiomas disponíveis ou para os modelos de Julius.

Cenários

Dentro do Simon, aplicativos específicos para o reconhecimento de fala podem ser definidos como cenários. Cenários típicos poderão controlar o mouse ou o navegador com entrada de voz. A equipe do Simon já coletou algumas situações comuns que o usuário pode

Facelift

Para reconhecer palavras faladas, o Simon baseia-se em modelos acústicos (“base models”) disponíveis em três categorias: estática, adaptada, ou gerada completamente pelo usuário. Os modelos estáticos predefinidos não podem ser adaptados para usuários individuais: para estes modelos funcionarem corretamente, o usuário deve falar como o criador do modelo pretendido. Modelos adaptados predefinidos também estão disponíveis, e os usuários podem treiná-los para compreender a voz e a maneira de falar para aumentar a precisão. Embora o ideal seja a criação de modelos totalmente gerados pelo usuário, eles oferecem a maior taxa de sucesso e são ideais para pessoas com dificuldades de fala ou dialetos fortes. O uso de modelos adaptados e gerados pelo usuário requer um mecanismo de reconhecimento de voz como CMU Sphinx e Julius. Atenção: os dois não usam modelos compatíveis, razão

Linux Magazine #101 | Abril de 2013

Figura 2 Várias placas de som e microfones em webcams USB não são problema para Simon.

57


TUTORIAL | Linux por voz

Figura 3 Cenários disponíveis, palavras reconhecidas, status de conexão: o Simon apresenta uma visão clara e abrangente na janela principal. Podemos acessar muitos recursos com apenas um clique.

carregar em Manage scenarios/Open/ Download (Gerenciar cenários/Abrir/ Baixar). Certifique-se de que o idioma de destino e o modelo acústico combinam se estiver usando um modelo básico estático ou adaptado. É importante para o cenário e modelo básico usar o mesmo conjunto de fonemas. O usuário provavelmente irá desejar criar os próprios cenários – por exemplo, porque não pode encontrar o que precisa na seção de download ou porque os cenários existentes utilizam o modelo de base errada. Alternativamente, podemos adicionar novas palavras a cenários existentes, tais como Standard. Podemos adicionar novos cenários, selecionando Manage scenarios (Gerenciar cenários). Para preenchê-los com suas próprias palavras, basta clicar em Open “<scenario_name>”. Em seguida, Simon mostrará a lista de vocabulário existente, que o usuário precisará preencher, na maioria dos casos (figura 4). Ao contrário de muitos sistemas comerciais de reconhecimento de voz com modelos de linguagem pré-fabricados, os problemas de linguagem não são um grande problema para Simon. Além dos modelos acústicos e de linguística pré-compilados, os usuários também podem gerar ver58

sões personalizadas ensinando a Simon as palavras de que necessitam. O treinamento em si é bastante simples. A dificuldade é que as palavras precisam ser atribuídas a “terminals” (verbos, pronomes, etc. também são chamados de categorias no Simon) e divididas em fonemas. Como indivíduos não profissionais em linguística poderiam ter problemas aqui, o Simon se oferece para importar dicionários. Além de conter muitas palavras, os dicionários incluem a informação necessária nos terminais e pronúncia básica de fonemas. As palavras disponíveis aqui são

facilmente adicionadas ao vocabulário do sistema. Se uma palavra específica estiver faltando, outras palavras existentes podem ser utilizadas como exemplos. O Simon suporta dicionários nos formatos Hadifix, HTK, PLS, CMU Sphinx e Julius, que o usuário pode carregar, pressionando o botão “Import Dictionary” (Importar dicionário). O programa geralmente espera que haja um caminho para um arquivo localizado no computador, mas, no caso do dicionário de alemão Hadifix, um acordo com a Universidade de Bonn permite aos usuários fazer o download diretamente do dicionário Hadifix Bomp. Para fazer isso, o usuário precisa especificar o nome e endereço de email e aceitar a licença Bomp.

Treinamento

Para adicionar uma nova palavra a um cenário (figura 5), o usuário precisa treinar pelo menos duas vezes – isto é, falar a palavra ao microfone – para introduzir voz e pronúncia ao programa. Se o cenário só precisa de poucas palavras, a taxa de reconhecimento torna-se bastante aceitável após apenas duas rodadas de treinamento. Entretanto, o treinamento adicional aumenta a taxa de sucesso e é especialmente útil na medida em que o vocabulário

Figura 4 Em primeiro lugar, o usuário precisa preencher seus próprios cenários com o vocabulário necessário.

www.linuxmagazine.com.br


Linux controlado por voz | TUTORIAL

e outros artifícios. Podemos até fundir categorias existentes para simplificar a estrutura gramatical do vocabulário no dicionário e o dicionário sombra.

Comandos

Figura 5 Após o treinamento individual, as palavras são reconhecidas de forma confiável.

aumenta, ou quando há palavras com sonoridades similares. Podemos treinar palavras de forma orientada, pressionando Train Individual Words para adicioná-las a uma sessão de treinamento (figura 6). Se quiser exportar o cenário mais tarde e, assim, torná-lo disponível para a comunidade Simon, vale definitivamente a pena criar textos especiais de treinamento. Basta alterar para a seção Training (Treinamento) e clicar no botão Add Text (Adicionar texto). O usuário pode importar ou digitar manualmente o texto para treinar todo o vocabulário para o cenário. Uma vez que o usuário tenha o texto de treinamento, poderá começar a treinar na janela principal, ou no cenário aberto, pressionando o botão apropriado. Por padrão, o Simon registra separadamente as linhas do texto, entre uma ou várias palavras. Se parecer muito complicado pressionar o botão Record (Gravar) duas vezes para cada palavra (iniciar e parar a gravação), verifique a caixa Power Training. Agora só precisamos pressionar os botões Next para seguir para o texto de treinamento, sem a necessidade de clicar muito. A gramática de um cenário faz exatamente o que o nome sugere: define as regras que determinam a maneira como o vocabulário pode ocorrer de forma que Simon possa interpretá-lo

Linux Magazine #101 | Abril de 2013

de forma significativa. O usuário não precisa ficar com as estruturas da linguagem falada, mas pode criar uma gramática própria, como Verb noun ou Enumeration noun. Apenas certifique-se de que tenha feito o vínculo a categorias que realmente ocorrem no vocabulário existente. Mais uma vez, as categorias não são imutáveis, mas podem ser adicionadas e alteradas para que, além de substantivos, verbos etc., o usuário possa se valer de triggers, comandos

A última seção no cenário compreende os comandos. Aqui o usuário determina o que o programa fará com as palavras reconhecidas. Vários plugins de comando permitem controlar o computador, e podemos facilmente vincular uma série de atividades diferentes com comandos de voz. O computador, então, executará programas (Program), emulará as teclas digitadas, ou abrirá pastas e sites. Além disso, podemos mover o cursor do mouse sobre a área de trabalho, selecionar os itens em listas ou inserir blocos de texto com a ajuda de plugins, bem como ditar letras e números, usar uma calculadora, ou ainda praticar a pronúncia e verificar a conformidade com um modelo básico. Comandos compostos executam várias ações uma após a outra. Descrever todos os plugins de comando em detalhe vai muito além do escopo deste artigo, portanto verifique o manual Simon detalhado para mais informações. Ao selecionar Manage

Figura 6 As sessões de treinamento especificamente concebidas para um

cenário ajudam o Simon a aprender todo o vocabulário necessário.

59


TUTORIAL | Linux por voz

de interpretá-la, é necessário modificar a gramática. Além disso, os desenvolvedores estão atualmente trabalhando em queries a partir de movimentos labiais para minimizar comandos do tipo falso positivo: se o Simon não visualizar um rosto ou movimento labial durante a entrada de voz, a ideia é que a palavra seria, provavelmente, o ruído de fundo que o programa deve ignorar.

CMU Sphinx e Julius

Figura 7 Plugins de comando versáteis permitem um grande controle sobre os recursos de vários computadores. O Simon sequencialmente verifica qual plugin pode lidar com uma palavra reconhecida

Plugins (Gerenciar plugins) (figura 7), o usuário pode carregar e usar plugins e depois utilizar o New Command para vincular ações apropriadas para uma ou mais palavras. Quando o Simon reconhece uma palavra, ele trabalha seu caminho através dos plugins de comando até encontrar um que possa processar a entrada para, em seguida, executar a ação apropriada. Na seção opcional Context (Contexto), podemos definir as condições nas quais o Simon permite um cenário. Por exemplo, é possível estipular que o cenário Firefox só é ativado se o navegador Mozilla estiver em execução. Assim, podemos usar comandos idênticos em diferentes cenários para iniciar ações diferentes. Condições possíveis incluem, por exemplo, se uma determinada janela está em primeiro plano na área de trabalho (Active Window Condition), se uma webcam reconhece um rosto na frente do computador (requer OpenCV), se certos processos estão em execução, ou quais status de programas reportam para a D-Bus. Além disso, podemos verificar os arquivos de conteúdo específico. Quando alteramos alguma coisa em um cenário ou palavras treinadas, Simond atualiza a compilação do modelo acústico, e as novas palavras ficam imediatamente disponíveis. 60

A janela principal sempre mostra as últimas palavras reconhecidas, estejam elas vinculadas (ou não) a um comando (figura 8). Enquanto Simon escuta, está impaciente para reconhecer palavras. Por isso, uma respiração profunda poderia ser interpretada como um comando de voz, ou uma conversa com outra pessoa poderia fazer com que o computador aplicasse todos os tipos de “brincadeiras” no usuário. Para evitar um falso positivo, faz sentido iniciar todos os comandos de voz com uma palavra que acione a escuta, como “computador” ou “abracadabra”. Para que o computador seja capaz

Como já mencionado, o Simon pode trabalhar com os mecanismos de reconhecimento de voz Julius e CMU Sphinx. Ao configurar o Sphinxbase, o Pocketsphinx e o Sphinx-training, o usuário deve mudar o prefixo de /usr/local para /usr, ou pelo menos adicionar links simbólicos apropriados. Assistentes, como links simbólicos, também são obrigatórios se o usuário instalar Sphinxtrain em um sistema de 64 bits. Neste caso, scripts e outros arquivos que são importantes para a geração de modelo acústico terminam em /usr/[local/] lib64/sphinxtrain, mas o Simon os aguarda em /usr/lib/sphinxtrain. O CMU Sphinx apresentou alguns problemas de compilação do modelo acústico em nosso laboratório; não conseguimos solucioná-lo antes do fechamento desta edição. Se o u-

Figura 8 O Simon mostra as combinações na janela principal, independentemente de estas estarem vinculadas a um comando.

www.linuxmagazine.com.br


Linux controlado por voz | TUTORIAL

suário passar por erros semelhantes, utilize o Julius em seu lugar. Para cenários pré compilados, o Simon escolhe o backend de reconhecimento de voz automaticamente. Quando criamos modelos acústicos e de linguagem gerados pelo usuário, podemos configurar o backend preferido em Settings/Configure Simon/ Recognition/Configure server/Speech model compilation/Backend.

Perspectiva

O Simon mudou drasticamente desde seu último lançamento, há dois anos, e tem melhorado significativamente em termos de facilidade de uso. A versão 0.4 atual oferece uma experiência de uso muito melhor: o mecanismo adicional de reconhecimento de voz e de contexto CMU Sphinx na forma do Afaras e Simonoid. O Afaras permite identificar gravações ruins e padrões destruídos em grandes coleções. O Simonoid KDE plasmoid gera o estado de detecção e pode ser usado para iniciar ou parar o Simon rapidamente. Para o futuro próximo, a equipe de desenvolvimento liderada pelo CTO Peter Grasch tem planos ambiciosos, como o de completar características previamente experimentais como a detecção de lábios. Além disso, a equipe está colaborando com diversos parceiros, como as universidades de Bonn e Graz. O Instituto alemãoaustríaco (Institut für Österreichisches Deutsch) permitiu que o projeto acessasse o banco de dados Adaba [11], o que pode levar à criação de um modelo básico alemão livremente disponível. Como outro importante marco no caminho para a versão 0.5, os desenvolvedores buscam integrar a AT SPI2 ( do framework Assistive Technology Service Provider Interface 2) [12] com o Simon. Neste artigo, só olhamos para o frontend Simon. Outras partes interessantes do projeto e Simon Listens são SAM, uma ferramenta que permite aos usuários criar e testar

Linux Magazine #101 | Abril de 2013

modelos acústicos que Simon pode depois importar, e SSC, que é usado para coletar amostras de diferentes falas e ambientes de usuário para desenvolver novos modelos básicos. Além disso, o aplicativo Simone, do MeeGo, permite aos usuários controlar o computador através de um smartphone. O Meego é um sistema operacional móvel de código aberto baseado em Linux que foi criado em 2010, após uma fusão de seus ancestrais Maemo (Nokia) e Moblin (Intel). Atualmente ele se encontra sob os auspícios da Linux Foundation, mas a médio prazo deverá se fundir com o smartphone Tizen OS. A motivada equipe de desenvolvimento do Simon se manteve bastante administrável ao longo dos anos e recebe membros adicionais: além de programadores (C++ e Qt), pessoas que gostariam de criar cenários, estender a documentação ou localizar o Simon em sua língua nativa também podem se envolver com o projeto.

Conclusão

Simon é uma ferramenta de reconhecimento de voz que pode ser instalada e utilizada por novatos no assunto. O único obstáculo no processo de instalação são as numerosas dependências. Durante vários dias de testes de laboratório, o sistema se manteve completamente estável, e o aplicativo não quebrou sequer uma vez. Como a cereja no bolo, Simon permite fácil acesso aos sofisticados mecanismos de reconhecimento de voz Julius e CMU Sphinx, que, por sua vez, estão em desenvolvimento há vários anos. Embora eles ainda não sejam capazes de gravar letras ou achados médicos, quando se trata de controles, Simon já contempla o computador para desvendá-las. n

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/8489

Mais informações [1] Simon Listens Association: http://www.simon-listens.org/ [2] Simon: https://projects.kde.org/projects/ extragear/accessibility/simon/ [3] CMU Sphinx: http://cmusphinx.sourceforge.net/ [4] Julius: http://julius.sourceforge.jp/en_index.php/ [5] HTK: http://htk.eng.cam.ac.uk/ [6] Hadifix Bomp: http://www.sk.uni-bonn.de/forschung/ phonetik/sprachsynthese/bomp/ (em alemão) [7] Simon para openSUSE Factory: http://software. opensuse.org/package/simon/ [8] Simon tarball download: http://anongit.kde. org/simon/simon-latest.tar.gz/ [9] Guia de compilação e dependências: http://userbase. kde.org/Simon/Development_Environment#Compiling/ [10] VoxForge: http://www.voxforge.org/home/ [11] Adaba: http://www-oedt.kfunigraz.ac.at/ADABA/index.html [12] AT SPI2: http://www.linuxfoundation.org/collaborate/ workgroups/accessibility/atk/at-spi/at-spi_on_d-bus/

61


ANDROID | Medidas de segurança

Medidas de segurança

ANDROID

Seu dispositivo a salvo

0 90

Como garantir a segurança de um dispositivo Android sem privar-se dos mais modernos aplicativos e sem deixar de lado os melhores recursos da tecnologia. por Flávia Jobstraibizer

D

iariamente são descobertas novas vulnerabilidades em dispositivos móveis, principalmente no que se refere ao sistema operacional mais utilizado atualmente, o Google Android. São criados vírus, cavalos de tróia e vulnerabilidades extras para coletar informações dos usuários incautos. Tais problemas de segurança ocorrem devido a popularidade da ferramenta, que a cada dia ganha novos adeptos, dos mais variados lugares do globo terrestre (e até mesmo fora dele [1]). Não surpreendentemente, novas formas de proteção dos dispositivos surgem na mesma velocidade em que os problemas são encontrados. Há empresas trabalhando freneticamente na correção de vulnerabilidades nas mais diversas versões do kernel Android, assim como criando novas ferramentas e formas de prevenir potenciais problemas. Mas como ter a certeza de que um aplicativo não é malicioso ou mesmo que não irá realizar tarefas à revelia do usuário? Este é o assunto que vamos abordar neste artigo.

Quem manda aqui?

É sabido que muitos aplicativos efetuam tarefas em nome do usuário. Por exemplo: o aplicativo para mídias sociais Facebook possui permissão para publicar em nome do usuário, compartilhar qualquer documento presente no dis62

positivo e até mesmo enviar relatórios de uso do usuário para a equipe de desenvolvimento do aplicativo. É importante salientar que o usuário deve estar atento às permissões que cada aplicativo exige do usuário no momento da instalação. Um programa pode ser considerado suspeito (lembre-se de que suspeito não significa culpado), se: ➧ Um jogo não deve solicitar permissões para efetuar ligações a partir do telefone. ➧ Um aplicativo de descoberta de pontos de interesse não deve solicitar permissões para modificar ou alterar conteúdos do cartão de memória do aparelho. ➧ Um aplicativo de GPS não deve solicitar permissões para ler mensagens de texto do aparelho (figura 1). Vale a pena lembrar que outro ponto importante e que vale ser ressaltado é a confiabilidade do desenvolvedor da ferramenta. Se a ferramenta possui um desenvolvedor confiável, é possível aceitar o grupo de permissões (mesmo que estranhas) e prosseguir ou mesmo declinar da instalação. Em último caso, é possível ainda entrar em contato com o desenvolvedor da ferramenta e questioná-lo sobre os motivos de determinada permissão. As permissões que um aplicativo ou jogo exigem são exibidas um mo-

mento antes do início da instalação (figura 2). Neste momento é possível aceitar ou cancelar a instalação caso entenda que o jogo ou aplicativo exige mais permissões do que realmente deveria.

Encontre o problema

Muitos usuários culpam o sistema operacional (ou até mesmo o fabricante do aparelho) por um início de mal funcionamento inesperado, como

Figura 1 Um apicativo de GPS não precisa ler seus SMSs.

www.linuxmagazine.com.br


Medidas de segurança | ANDROID

loops de reinicialização, travamentos, congelamentos momentâneos etc. No entanto, tais problemas podem ser obra de um aplicativo que apresenta alguma falha de segurança. O seguinte cenário é válido e deve ser considerado: ➧ Um determinado aplicativo instalado em um aparelho de celular recebeu uma atualização na semana passada. ➧ Como o aplicativo não é muito utilizado, somente ontem o usuário proprietário do aparelho executou o aplicativo. ➧ Após o uso do aplicativo, o usuário voltou à suas atividades normais. No entanto, o aparelho passou a reiniciar sozinho. Sim, a falha está no tal aplicativo que recebeu uma atualização que possuía uma falha de segurança qualquer. Talvez não seja tão simples encontrar o problema caso o usuário seja novato ou inexperiente. De qualquer forma, é importante lembrar que os dispositivos móveis atuais são modernos o suficiente para não começarem a apresentar problemas “do nada”.

Figura 3 Vulnerabilidades listadas no CVE.

Atualizações em dia

O cenário exemplificado anteriormente não quer dizer que o leitor não deve atualizar seus aplicativos, mesmo porque, com as novas políticas de atualização automática do Google Play, será muito difícil manter um aplicativo desatualizado. As atualizações são importantes para evitar potenciais problemas ou mesmo corrigir outros que a equipe de desenvolvimento possa ter encontrado na versão atual do software em execução no dispositivo.

Antivirus e proteção extra

Aplicativos antivirus, removedores e bloqueadores de propagandas (conhecidos como ad blockers) também são alternativas viáveis para a proteção de dispositivos Android. Comumente, propagandas em aplicativos podem conter vírus, cavalos de tróia, exploits ou outras ameaças que comprometem o dispositivo.

Backup garantido

Figura 2 Verifique as permissões

antes de instalar o aplicativo.

Linux Magazine #101 | Abril de 2013

Manter uma solução de backup bem configurada, sendo este realizado preferencialmente em uma mídia externa (o que ajudaria no caso de roubo ou danos ao aparelho) é outra boa pedida quando se trata de segurança. Atualmente existem diversos sistemas em nuvem que permitem armazenar dados remotamente, sem

a necessidade de um pendrive ou qualquer mídia removível (também sujeita a falhas, roubo ou danos) e de onde é possível recuperar rapidamente os dados em caso de necessidade.

Perdi, e agora?

Já imaginou o que aconteceria se o leitor perdesse seu precioso smartphone ou tablet novinho em folha ou mesmo se o esquecesse em algum lugar? E se fosse roubado? Em qualquer um destes casos todos os dados presentes no aparelho estariam sujeitos a serem utilizados por qualquer pessoa, inclusive de formas maliciosas. Para prevenir este problema, existem no Google Play diversos aplicativos que efetuam buscas georeferenciadas do dispositivo (localizando-o via satélite GPS) para que seja possível encontrá-lo. Alguns destes aplicativos ainda enviam emails para um endereço cadastrado previamente contendo valores de latitude e longitude para que seja mais fácil localizar o aparelho em um mapa como o Google Maps. Outros aplicativos vão mais além e abordam o impensável cenário do caso de não obtermos sucesso em recuperar o aparelho: auxiliar o usuário a apagar os dados, travar o sistema e até mesmo a danificar remotamen63


ANDROID | Medidas de segurança

te de forma permanente o aparelho para que o ladrão não possa utilizá-lo.

Root pra que?

Se o leitor não é um usuário avançado, não é desenvolvedor de aplicativos nem nada do gênero, não faça o root do aparelho (garantir permissões administrativas no sistema de forma que seja possível alterá-lo completamente). Usuários inexperientes podem danificar o aparelho de forma

que seja impossível sua recuperação, ou ainda oferecer gratuitamente as chaves para que um invasor entre pela porta da frente, sequestre dados, informações e danifique o dispositivo.

Conclusão

Este artigo aborda apenas alguns dos diversos cenários nos quais seu dispositivo pode estar vulnerável e algumas formas de prevenir-se destes problemas. Caso queira ficar por dentro de todas

as vulnerabilidades encontradas, seus potenciais riscos e o andamento de suas correções, visite o site da CVE [2], o maior repositório de vulnerabilidades disponível na Internet (figura 3). Fique sempre atento a qualquer mudança em seu aparelho, mal comportamento após atualizações, remova aplicativos que possam estar comprometendo o sistema e lembre-se de que segurança é sempre a palavra de ordem quando se trata dos seus preciosos dados! n

Gostou do artigo? Mais informações

Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br

[1] Satélites da NASA com Android: http://www.linuxmag.com. br/lm/noticia/satelite_da_ nasa_com_android_comeca_a_ enviar_imagens_do_espaco/

Este artigo no nosso site: http://lnm.com.br/article/8469

O autor Flávia Jobstraibizer (fjobs@linuxnewmedia.com.br, twitter: @flaviajobs) é gerente de projetos e analista de sistemas. Trabalha com TI desde 1998 tendo atuado em multinacionais e empresas de diversos segmentos, trabalhando com tecnologias livres e proprietárias. Atualmente é editora-chefe das revistas Linux Magazine, Admin Magazine e c’t.

[2] Vulnerabilidades encontradas no Google Android: http:// www.cvedetails.com/ product/19997/GoogleAndroid.html?vendor_id=1224/

2 ! e 1 I P L o ã ç a Livros c i f para Certi A Linux Magazine oferece estas edições revisadas e ampliadas dos livros que te preparam para as Certificações LPIC-1 e 2, com as seguintes novidades: • Exercícios em todos os tópicos • Todo conteúdo ampliado para a nova versão da prova, atualizada em agosto/2012.

Garanta já os seus pelo site da Linux Magazine www.linuxmagazine.com.br 64

www.linuxmagazine.com.br


ANÁLISE | Armazenamento Flash para Linux

Armazenamento Flash para Linux

ANÁLISE

Execução silenciosa Os elegantes tablets e smartphones da atual geração digital abrigam memória Flash, que economiza espaço e energia. Neste artigo, explicamos suas características e sugerimos sistemas apropriados para o Linux. por Michael Opdenacker

C

omputadores mais antigos com discos e ventoinhas cada vez mais têm sido escondidos em centros de dados, blindados pela nuvem. Desta forma, os usuários não notam quanto calor produzem ou quanto barulho eles fazem. E novos computadores como smartphones e tablets permeiam muitas áreas atualmente: afinal, são dispositivos móveis, silenciosos e eficientes em termos de energia. Uma razão pela qual são mais eficientes vem do fato de que sistemas de armazenamento embarcado utilizam chips em vez de discos rotativos. Memória Flash em estado sólido não possui partes móveis e é, portanto, muito robusta por não possuir estresse mecânico. Além disso, a memória sem disco acessa os dados desejados mais rapidamente por não exigir um cabeçote em movimento. Um dispositivo sem disco também produz menos calor, tornando desnecessário o barulho provocado pela vetoinha. Neste artigo, descreveremos alguns sistemas de arquivos Linux e ferramentas que operam com uma enorme variedade de dispositivos de armazenamento Flash suportados pelo Linux.

Armazenamento Flash

O armazenamento Flash, também chamado de “estado sólido” (solid state), possui muitas vantagens em 70

relação ao armazenamento rotativo (rotating storage). Em primeiro lugar, a ausência de peças mecânicas e em movimento elimina o ruído, aumenta a resistência e segurança a choques e vibrações, e reduz a dissipação de calor e consumo de energia. Segundo, o acesso aleatório a dados é muito mais rápido, pois já não é preciso mover um cabeçote de disco para o local correto no dispositivo, o que pode levar alguns milissegundos.

O Flash também tem suas deficiências. Primeiro, pelo mesmo preço, temos apenas um décimo da capacidade de armazenamento. Segundo, escrever armazenamento Flash possui restrições especiais; não podemos escrever para o mesmo local de um bloco Flash várias vezes sem apagar todo o bloco, chamado de “bloco de apagar” (erase block). Esta restrição também pode fazer com que a velocidade de escrita seja muito menor que a de leitura. Terceiro, os blo-

Figura 1 O bloco grande no meio do computador de placa única

BeagleBoard é um sistema OMAP-on-a-chip da Texas Instruments, sob o qual o Flash NAND é montado.

www.linuxmagazine.com.br


Armazenamento Flash para Linux | ANÁLISE

NAND/NOR

Interface de sistema de arquivos linux

Módulos de usuário MTD

Chip de drivers MTD

UBI +UBIFS

JFFS2

Dispositivo de bloco

YAFFS2

Char device

Dispositivo de bloco somente leitura

flash NOR

RAM chips

ROM chips

flash NAND

DiskOnChip flash

Dispositivos hardware Figura 2 A arquitetura MTD do kernel Linux permite o gerenciamento independente de hardware de armazenamento Flash.

cos Flash podem suportar apenas um número limitado de erases – de alguns milhares de chips NAND mais densos a um milhão, no máximo. Hardware e

software, portanto, precisam espalhar as operações de escrita em um processo conhecido como “nivelamento de desgaste” (wear leveling).

Listagem 1: Partições definidas no kernel 01 static struct mtd_partition omap3beagle_nand_partitions[] = { 02 /* All the partition sizes are listed in terms of NAND block size */ 03 { 04 .name = "X-Loader", 05 .offset = 0, 06 .size = 4 * NAND_BLOCK_SIZE, 07 .mask_flags = MTD_WRITEABLE, /* force read‐only */ 08 }, 09 { 10 .name = "U‐Boot", 11 .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */ 12 .size = 15 * NAND_BLOCK_SIZE, 13 .mask_flags = MTD_WRITEABLE, /* force read‐only */ 14 }, 15 { 16 .name = "U‐Boot Env", 17 .offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */ 18 .size = 1 * NAND_BLOCK_SIZE, 19 }, 20 { 21 .name = "Kernel", 22 .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */ 23 .size = 32 * NAND_BLOCK_SIZE, 24 }, 25 { 26 .name = "File System", 27 .offset = MTDPART_OFS_APPEND, /* Offset = 0x680000 */ 28 .size = MTDPART_SIZ_FULL, 29 }, 30 };

Linux Magazine #101 | Abril de 2013

A memória Flash NOR (Not OR), que nomeia as portas usadas no chip, foi o primeiro tipo de armazenamento Flash inventado. O NOR é conveniente pois a CPU pode acessar qualquer byte diretamente e em ordem aleatória. Deste modo, o processador pode executar o código diretamente da NOR, permitindo que seja utilizado em bootloaders, e não necessita ser copiado para a RAM antes de ser executado. O tipo mais popular de armazenamento é a memória Flash NAND (Not AND) (figura 1), que oferece maior capacidade de armazenamento pelo menor preço. A desvantagem é que, como um dispositivo externo, o armazenamento NAND está conectado via controlador, através do qual é possível acessar os dados. A CPU não pode executar código da NAND sem copiar o código para a memória RAM primeiro. Outra restrição é que os dispositivos Flash NAND podem possuir blocos defeituosos (bad blocks) fora da caixa, exigindo soluções de hardware ou software que funcionam em torno desta limitação durante a operação. Dois tipos de armazenamento Flash NAND estão disponíveis hoje. O primeiro tipo emula um bloco padrão de interface e contém um hardware “Flash Translation Layer” (camada de tradução Flash) que cuida de apagar blocos e implementar nivelamento de desgaste, assim como o gerenciamento de blocos defeituosos. Dispositivos deste tipo incluem drives USB Flash, cartões de mídia, cartões multimídia embutidos (eMMCs), e discos de estado sólido (da sigla SSDs, de solid state disks). O sistema operacional não tem controle sobre a forma como são geridos os setores Flash pois só considera um dispositivo emulado de bloco. Embora esta abordagem reduza a complexidade do software do lado 71


ANÁLISE | Armazenamento Flash para Linux

Listagem 2: Mensagens de inicialização 01 omap2-nand driver initializing 02 ONFI flash detected 03 NAND device: Manufacturer ID: 0x2c, Chip ID: 0xba (Micron NAND 256MiB 1,8V 16-bit) 04 Creating 5 MTD partitions on "omap2-nand.0": 05 0x000000000000-0x000000080000 : "X-Loader" 06 0x000000080000-0x000000260000 : "U-Boot" 07 0x000000260000-0x000000280000 : "U-Boot Env" 08 0x000000280000-0x000000680000 : " 09 0x000000680000-0x000010000000 : "File System"

do sistema operacional, os fabricantes de hardware costumam manter em segredo os algoritmos da camada de tradução Flash, deixando os desenvolvedores de sistemas sem alternativas para verificar e ajustar estes algoritmos ou corrigir implementações pobres. O segundo tipo de memória NAND é a raw Flash. O sistema operacional tem acesso ao controlador de Flash e pode gerenciar diretamente seus blocos. O raw Flash pode usar um “block erase count” para determinar com qual frequência um bloco tem sido sobrescrito. O kernel Linux implementa um subsistema Memory Technology Device (MTD) que permite o acesso e controle de vários tipos de dispositivos Flash com uma interface comum (figura 2).

Partições

Acesso bruto (raw access) significa que nenhum sistema de arquivo é necessário, a menos que o usuário deseje armazenar muitos arquivos; um único e grande arquivo binário é suficiente para alguns aplicativos. Dispositivos MTD geralmente são particionados para definir áreas com fins específicos, como o gerenciador de inicialização (bootloader) ou o sistema de arquivos raiz. Acessar as partições e o armazenamento raw flash é algo semelhante a acessar dispositivos brutos do bloco (raw block devices) através de arquivos de dispositivos (por exemplo, todo o dispositivo com /dev/sda ou partições com /dev/sda1, /dev/sda2 etc. Declarar partições somente leitura (da sigla RO, read-only) pode proteger o sistema contra erros e tentativas de modificação não autorizadas. Observe também que as partições não podem ser ignoradas, acessando todo o dispositivo como compensação, uma vez que o Linux não possui nenhum arquivo de dispositivo para este tipo de acesso. A figura 3 mostra um esquema de particionamento típico. Em contraste com os discos rígidos, a tabela de partição não é salva no ambiente

MTD – um local inseguro por conta dos blocos potencialmente ruins. Em vez disso, uma estrutura de dados no kernel Linux define as partições. A listagem 1 mostra o trecho relevante do arquivo arch/arm/mach‐OMAP2/board-OMAP3Beagle.c, que define as partições para o Flash NAND na BeagleBoard. Felizmente, podemos substituir estas configurações padrão sem necessidade de recompilar o kernel. Para identificar o nome do dispositivo MTD, percorra as mensagens de inicialização do kernel. Neste exemplo de BeagleBoard, a listagem 2 mostra que o nome do dispositivo NAND é omap2-nand.0. Logo que o nome do dispositivo é conhecido, o parâmetro de boot mtdparts passa no particionamento com (tudo em uma única linha): mtdparts=omap2-nand.0:128k(XLoader)ro,256k(U-Boot) ro,128k(Environment),4m(Kernel) ro,32m(RootFS)ro,-(Data)

O código acima define seis partições: ➧ Primeiro estágio do bootloader (128KB, RO) ➧ Bootloader U-Boot (256KB, RO) ➧ Variáveis de ambiente U-Boot (128KB) ➧ Kernel Linux (4MB, RO) ➧ Sistema de arquivos raiz (16MB, RO) ➧ Dados (espaço de armazenamento restante) O tamanho da partição deve ser um múltiplo do tamanho do erase block, que pode ser encontrado no sistema de destino em /sys/class/ mtd/mtdx/erasesize. Os tamanhos das partições recém-criadas, que o usuário pode ver em /proc/mtd estão em hexadecimal (listagem 3).

Listagem 3: /proc/mtd Figura 3 O armazenamento MTD

é normalmente dividido em partições graváveis e somente leitura.

72

01 02 03 04 05 06 07

dev: mtd0: mtd1: mtd2: mtd3: mtd4: mtd5:

size 00020000 00040000 00020000 00400000 02000000 0dbc0000

erasesize name 00020000 "X‐Loader" 00020000 "U‐Boot" 00020000 "Environment" 00020000 "Kernel" 00020000 "File System" 00020000 "Data"

www.linuxmagazine.com.br


Armazenamento Flash para Linux | ANÁLISE

Nomes de arquivos para partições de dispositivo de bloco se referem ao nome completo do dispositivo (por exemplo, /dev/sda1 para a primeira partição /dev/sda), mas note que as partições MTD são mostradas como dispositivos MTD independentes; portanto, o mtd1 poderia ser a segunda partição do primeiro dispositivo Flash ou a primeira partição do segundo dispositivo Flash. Não é possível perceber a diferença de nomes dos dispositivos. A partição "Environment” é onde as variáveis de ambiente U-Boot bootloader são armazenadas. Estas variáveis podem ser alteradas a partir do U-Boot Shell mas também a partir do Linux, piscando (flashing) uma nova imagem para a partição. Os desenvolvedores da Free Electrons têm contribuído de forma bastante útil para gerar tal imagem [1].

Manipulação de dispositivos MTD Os dispositivos MTD podem ser endereçados através de duas interfaces. A primeira utiliza o identificador (letra) do dispositivo dev/mtd//N// (onde N é o número do dispositivo MTD) e o driver mtdchar. Em particular, este identificador fornece os comandos ioctl, que são geralmente utilizados por mtd-utils para manipular e apagar blocos de um dispositivo MTD. A segunda interface fornece o dispositivo de bloco dev/mtdblock//N// e o driver mtdblock. Este dispositivo é usado principalmente para montar sistemas de arquivos MTD, como JFFS2 e YAFFS2, pois o comando mount só funciona com dispositivos de bloco. Embora possamos ser tentados a usar este dispositivo para gravar no MTD, o driver correspondente não é sofisticado o suficiente para uso em produção por não suportar nivelamento de desgaste; uma série de gravações para a mesma parte do dispositivo de bloco poderia danificar

Linux Magazine #101 | Abril de 2013

Figura 4 O armazenamento MTD é normalmente dividido em partições graváveis e somente leitura.

muito rapidamente os correspondentes erase blocks. Pior, se copiarmos uma imagem de sistema de arquivos para /dev/mtdblock//N//, o sistema de arquivos poderia ser corrompido pois os blocos danificados não são levados em conta. Portanto, a maneira ideal de manipular dispositivos MTD é através do identificador de interface (character interface) e mtd-utils [2]. Os comandos mais importantes são: ➧ mtdinfo: informações detalhadas sobre um dispositivo MTD ➧ flash_eraseall: apaga por completo um dado dispositivo MTD ➧ flashcp: escreve para Flash NOR ➧ nandwrite: escreva para Flash NAND ➧ Utilitários UBI (veja o tópico “UBI e UIFS”) ➧ mkfs.jffs2, mkfs.ubifs: ferramentas de criação de imagem de sistema de arquivo Flash Estes comandos estão disponíveis através do pacote mtd‐utils em distribuições GNU/Linux e também podem ser compilados de forma cruzada (cross-compiled) a partir da fonte por sistemas embarcados Linux, tais como o BuildRoot [3] e o OpenEmbedded [4]. Simples implementações dos comandos mais comuns também estão disponíveis no BusyBox [5], tornando muito mais fácil de fazer a compilação cruzada em sistemas embarcados menos complexos.

JFFS2

O Journaling Flash File System versão 2 (JFFS2) [6], que foi adicionado ao kernel Linux em 2001, é um sistema de arquivos muito popular para o

armazenamento Flash. Como é esperado para um sistema de arquivos Flash, ele implementa a detecção e gestão do bloco danificado, bem como o nivelamento de desgaste. Também é projetado para ficar em um estado consistente após falhas abruptas de energia e quebras do sistema. Por último, mas não menos importante, o JFFS2 também armazena dados compactados. Diversos esquemas de compressão estão disponíveis de acordo com o que é mais importante: desempenho para ler/escrever ou taxa de compressão. Por exemplo, o zlib comprime melhor que o lzo, mas também é muito mais lento. A implementação de arquivos de sistemas em Flash possui restrições especiais. Para modificar um arquivo existente, não podemos simplesmente copiar os blocos correspondentes para a RAM, apagá-los e piscar (flash) os blocos com a nova versão. Primeiro, uma falha de energia durante este procedimento poderia causar perda de dados irrecuperáveis. Segundo, podemos rapidamente desgastar blocos específicos, fazendo várias atualizações para o mesmo arquivo. Uma alternativa seria escrever os novos dados para um novo bloco e atualizar os indicadores (pointers) para os dados antigos. Contudo, isto implicaria outra escrita, que poderia provocar outras modificações até que a referência root fosse alcançada. O JFFS2 resolve estes problemas com uma abordagem de log estruturado [7]. Cada arquivo é mapeado para um nó com dados e metadados, e cada nó tem um número de versão associado. Em 73


ANÁLISE | Armazenamento Flash para Linux

vez de fazer alterações locais, a ideia é escrever uma versão mais recente do nó em outra parte do erase block com espaço livre. Isto simplifica as operações de escrita, mas complica as operações de leitura, pois o sistema de arquivos precisa localizar o nó mais recente. Para otimizar o desempenho, o JFFS2 mantém um mapa de memória dos nós mais recentes para cada arquivo; no momento da montagem, digitaliza os nós, cria e armazena o mapa. Uma vez que o tempo de montagem do JFFS2 é proporcional ao número de nós, sistemas embarcados utilizando JFFS2 em grandes partições Flash poderão incorrer em enormes sanções no momento da inicialização. Felizmente, foi adicionada uma opção da kernel: CONFIG_ JFFS2_SUMMARY, que confere ao Linux o armazenamento do mapa entre as ações de montagem no dispositivo Flash, reduzindo drasticamente o tempo de montagem. No entanto, esta opção não é ativada por padrão. Nós mais velhos devem ser recuperados em algum ponto para manter o espaço livre para novas escritas. Um nó é criado como “válido” e é considerado “obsoleto” quando uma nova versão é criada. O JFFS2 gerencia três tipos de blocos Flash: ➧ Blocos limpos, que contêm apenas nós válidos ➧ Blocos sujos, que contêm pelo menos um nó obsoleto ➧ Blocos livres, que não contêm nenhum nó O JFFS2 executa um coletor de lixo em segundo plano, que recicla blocos sujos transformando-os em blocos livres. Faz isso através do recolhimento de todos os nós válidos em um bloco sujo e os copia para um bloco limpo (com o espaço que restar) ou para um bloco livre. O antigo bloco sujo é então apagado e marcado como livre. Para fazer todos os erase blocks participarem do nivelamento de desgaste, o coletor de lixo ocasionalmente também consome blocos limpos. 74

Figura 5 Tempo de CPU necessário para montar sistemas de arquivos. As longas barras vermelhas mostram o demorado processo de mount no JFFS2.

Há duas maneiras de criar uma partição JFFS2. A primeira é apagar a partição, formatá-la para JFFS2, e depois montá-la: flash_eraseall -j /dev/mtd2 mount -t jffs2 /dev/mtdblock2 / mnt/flash

O flash_eraseall e o -j apagam a partição Flash as formata para JFFS2. A segunda opção é geralmente uma melhor combinação para o fluxo integrado de trabalho do desenvolvedor pois cria a imagem JFFS2 no computador desktop e escreve a imagem na partição. Para criar a imagem, use o comando mkfs.jffs2 fornecido pelo mtd-utils, mas não se confunda com seu nome: ao contrário de alguns outros comandos mkfs, ele não cria um sistema de arquivos, mas uma imagem de sistema de arquivos. O comando seguinte cria um arquivo de imagem com o nome rootfs.jffs2. Para este exemplo, vamos assumir que o tamanho do erase block é de 256MB. mkfs.jffs2 --pad --no-cleanmarkers --eraseblock=256 -d rootfs/ -o rootfs.jffs2

O parâmetro -d indica o diretório com o conteúdo desejado para o sistema de arquivos e o --pad cria uma imagem que é de tamanho múltiplo ao do erase block; o --no-cleanmarkers só deve ser utilizado para o Flash NAND. Para formatar a partição alvo e escrever a imagem, utilize: flash_eraseall /dev/mtd2 nandwrite -p /dev/mtd2 rootfs. jffs2

Se a imagem é menor do que a partição, o JFFS2 ainda pode utilizar todo o espaço posteriormente, fornecido pela partição que foi completamente apagada anteriormente. Para preparar dispositivos de produção, é muito mais conveniente escrever as partições MTD do bootloader, utlizando um comando que pode lidar com os blocos danificados sem inicializar o Linux. Desta forma, utilitários de desenvolvimento como o flash_eraseall não precisam estar na raiz do sistema de arquivos Linux, que é outra razão pela qual as imagens do sistema de arquivos são úteis. Normalmente, baixamos a imagem do sistema de arquivos para a memória RAM e copiamos a imagem para o Flash. Quando fazemos isso, apenas temos que nos certificar de

www.linuxmagazine.com.br


Armazenamento Flash para Linux | ANÁLISE

haver copiado o tamanho exato da imagem. Com as imagens JFFS2, se copiarmos mais bytes da RAM para o Flash, acabaremos escrevendo bytes aleatórios no final da imagem, o que irá corromper o sistema de arquivos.

YAFFS2

Uma alternativa ao JFFS2 é o YAFFS2 [8] (sigla para Yet Another Flash Filesystem) encontrado em smartphones com as primeiras versões do Android. O YAFFS2 não usa compressão, mas apresenta tempos de montagem muito mais rápidos, bem como melhor desempenho de escrita e leitura. O código é duplamente licenciado, sob a GPL e uma licença proprietária (ou seja, GPL para uso no kernel Linux e a licença para sistemas operacionais proprietários). A receita da licença proprietária tem financiado seu desenvolvimento. O YAFFS2 é menos popular do que o JFFS2, provavelmente por não fazer parte do planejamento do kernel Linux. Em vez disso, está disponível como um patch externo com um conjunto de scripts auxiliares. Um esforço foi feito para tê-lo na linha de frente cerca de um ano atrás, mas esta tentativa falhou pois as alterações solicitadas pelos mantenedores do kernel teriam quebrado a portabilidade para outros sistemas operacionais. Depois de fazer o patch do kernel, o usuário pode criar um novo sistema de arquivos YAFFS2 com o comando: flash_eraseall /dev/mtd2

O sistema de arquivos é formatado automaticamente na primeira montagem: mount -t yaffs2 /dev/mtdblock2/ mnt/flash

Outra opção consiste em utilizar a ferramenta mkyaffs, dos utilitários YAFFS2 [9].

UBI e UBIFS

O JFFS2 e o YAFFS2 têm um problema em comum: eles implementam o nivelamento de desgaste, res-

Linux Magazine #101 | Abril de 2013

tringindo-o a partições individuais. No entanto, os níveis de utilização podem ser muito diferentes. Partições são montadas muitas vezes no modo somente leitura, enquanto as partições de dados estão expostas a muitas escritas – razão pela qual são conhecidas como partições “quentes”. Para evitar o desgaste de partições quentes muito rapidamente, todas as áreas da memória Flash precisam participar do nivelamento de desgaste. Isto é exatamente o que o projeto Unsorted Block Images (UBI) oferece. O UBI é uma camada acima do MTD que gerencia erase blocks e bad blocks e implementa o nivelamento de desgaste, tirando estas tarefas dos ombros do sistema de arquivos. O UBI também suporta partições ou volumes flexíveis, que podem ser criados e redimensionados dinamicamente, parecido com o que o Logical Volume Manager faz para dispositivos de bloco. O UBI implementa o Logical Erase Blocks (LEBs), que o mapeia para o Physical Erase Blocks (PEBs) (figura 4). Camadas superiores, tais como sistemas de arquivos, apenas visualizam os LEBs. Se uma LEB visualiza muita ação, o UBI pode trocar os ponteiros, substituindo o PEB “quente” por um “frio”. Este mecanismo requer alguns PEBs livres para trabalhar de forma eficiente, e a sobrecarga faz a UBI menos apropriada para dispositivos menores com apenas alguns megabytes de espaço. Um sistema de arquivos para UBI, chamado UBIFS, foi criado pelo projeto MTD Linux como sucessor do JFFS2. O UBIFS suporta a compressão e apresenta desempenhos de mount, escrita e leitura muito melhores. No Linux, o UBI e o UBIFS são iniciados com alguns comandos. Primeiro, o usuário root precisa montar o diretório do dispositivo como um pseudo sistema de arquivos devtmpfs. O comando: ubiformat /dev/mtd1

exclui uma partição Flash sem precisar reiniciar a contagem erase (erase

count). Para habilitar o UBI na partição MTD, digite: ubiattach /dev/ubi_ctrl -m 1

Isto cria uma nova identidade (letra) para o dispositivo, /dev/ubi0. Agora podemos criar um ou vários volumes sobre o dispositivo, ubimkvol /dev/ubi0 -N test -s 116MiB ubimkvol /dev/ubi0 -N test -m

onde o -m é o tamanho máximo disponível. Para montar um sistema de arquivos UBIFS vazio no novo volume de teste, insira mount -t ubifs ubi0:test /mnt/ flash

e para popular o sistema de arquivos com os arquivos. Uma abordagem alternativa é primeiro criar uma imagem do sistema de arquivos UBIFS com o comando mkfs.ubifs e copiar a imagem com ubiupdatevol. Outra abordagem é criar uma imagem de todo o espaço UBI, que pode ser escrito do bootloader com o comando que pode lidar com blocos danificados (bad blocks). Para fazer isso, primeiro crie um arquivo ubi.ini descrevendo o espaço UBI, seus volumes e seus conteúdos. Um exemplo é mostrado na listagem 4. Este arquivo descreve quais volumes devem ser criados, juntamente com seus tamanhos. A imagem UBI é criada com o comando: ubinize -o ubi.img -p 128KiB -m 4096 ubi.ini

que também especifica erase blocks físicos 128KB e um tamanho mínimo

Listagem 4: ubi.ini 01 02 03 04 05 06 07 08 09

[RFS‐volume] mode=ubi image=rootfs.ubifs vol_id=1 vol_size=30MiB vol_type=dynamic vol_name=rootfs vol_flags=autoresize vol_alignment=1

75


ANÁLISE | Armazenamento Flash para Linux

de I/O de 4096 bytes. Para transferir a imagem, use uma ferramenta bootloader que possa lidar com os bad blocks. Além disso, a linha de comando do kernel precisa da opção ubi.mtd=1 (equivalente ao ubiattach). Se quiser que o UBIFS controle a partição root, adicione: rootfstype=ubifs root=ubi0:rootfs

ao comando boot.

LogFS

O LogFS [10] é outro sistema de arquivos estruturado em log para a memória Flash que possui um design inovador e tem sido parte principal do kernel Linux desde a versão 2.6.34. O inovador sistema de arquivos poderia ter influência sobre o UBIFS mas, infelizmente, mostrou-se instável, causando problemas no kernel no momento de desmontagem, quando testado pela Free Electrons. Graças à integração com o kernel Linux oficial, há boas chances de que o desenvolvedor venha a resolver estes problemas.

SquashFS

Partições somente leitura podem usar o sistema de arquivos de blocos SquashFS em dispositivos MTD. Copiar uma imagem SquashFS diretamente para o dispositivo /dev/ mtdblock//N// funciona bem – afinal, não temos que nos preocupar com o nivelamento de desgaste – até encontrar bad blocks no dispositivo. Mais uma vez, o driver mtdblock não pode lidar com bad blocks, então outra solução se faz necessária. Uma possibilidade consiste em utilizar o driver gluebi, que emula um dispositivo MTD em cima de um volume UBI. Como o UBI descarta bad blocks, o mdtblock pode agora ser usado com segurança. Uma segunda possibilidade é usar o driver ubiblk, que implementa um dispositivo de bloco somente leitura diretamente acima da UBI. A Free 76

Electrons apresentou o ubiblk à Linux Kernel Mailing List [11], mas ainda não foi considerado (mainlined). Os benchmarks mostram que o ubiblk é uma solução eficiente, por não precisar emular um dispositivo intermediário MTD.

Benchmarks

Com financiamento da Linux Foundation, a Free Electrons testou o desempenho de vários sistemas de arquivos Flash em diferentes versões do kernel. Os resultados (figura 5) estão descritos online [12]. Em resumo, o JFFS2 teve o pior desempenho e deve ser compilado com CONFIG_SUMMARY para um tempo de inicialização aceitável. No entanto, o JFFS2 ainda é a melhor promessa para dispositivos com partições Flash pequenas que necessitam de compressão e onde o UBI teria muita sobrecarga. Esta é a razão pela qual o JFFS2 ainda está em uso no OpenWRT, uma distribuição focada principalmente em dispositivos embarcados, como gateways residenciais e roteadores, geralmente com 4MB a 16MB de armazenamento Flash. Graças a melhorias nos últimos anos, o YAFFS2 apresenta desempenho muito bom, senão o melhor, em muitos cenários de teste. No entanto, a falta de compressão continua sendo uma desvantagem, assim como sua ausência no kernel Linux. O YAFFS2 também mostra problemas de desempenho incomuns na gestão de diretórios. O UBIFS é agora a melhor solução em termos de desempenho e espaço. A necessidade de espaço adicional será um problema somente em partições muito pequenas. A implementação também requer um pouco mais de trabalho do que os outros candidatos. No momento da publicação deste artigo, o LogFS ainda é muito experimental para ser usado em sistemas de produção, embora possamos esperar que seus bugs sejam corrigidos

com o tempo. O SquashFS exibe boa compressão e tempo de montagem, assim como desempenho de leitura no Flash MTD em sistemas com partições somente leitura. A necessidade de parear o SquashFS com o UBI, no entanto, compromete o desempenho do tempo de mount. Em sistemas de arquivos de bloco, o SquashFS exibe o melhor tempo de mount, mas perde muito tempo com a UBI, o que leva a uma quantidade substancial de tempo para inicializar (a operação ubiattach). A boa notícia é que é muito barato mudar sistemas de arquivos. Os aplicativos nem sequer notarão a diferença. Como os benchmarks mostram, podemos obter resultados de desempenho notável, dependendo do tamanho e número das partições e arquivos, da leitura e escrita padrões do sistema, e da necessidade de compressão. Tudo o que o usuário precisa fazer é tentar vários sistemas de arquivos, executar seus aplicativos e testes de sistema, e manter a solução que maximiza o desempenho do seu sistema particular.

Sovinas

A memória Flash em seu estado natural (raw) oferece aos desenvolvedores de sistemas embarcados muitas oportunidades de otimização. A tendência entre os fabricantes de hardware, no entanto, está longe da memória flexível NAND incorporada ao MMC. Estas superfícies montadas de cartões de memória usam uma interface mais parecida com a de uma placa externa. Elas escondem os detalhes dos blocos ruins e de nivelamento de desgaste do sistema operacional. Por serem muito acessíveis, provavelmente irão derrubar o Flash mais caro. Felizmente, o eMMC não é totalmente opaco. Arnd Bergmann, desenvolvedor do kernel, escreveu uma ferramenta chamada Flashbench [13] que permite determinar expe-

www.linuxmagazine.com.br


Armazenamento Flash para Linux | ANÁLISE

rimentalmente as características da mídia de armazenamento, tais como o tamanho dos blocos de apagar. Com a ajuda destes resultados, podemos também otimizar os parâmetros do sistema de arquivos que estivermos utilizando. Bergmann descreve seu trabalho em um artigo online [14].

Conclusão

Algumas simples regras de ouro são necessárias para trabalhar com memória Flash, incluindo não criar uma partição swap em Flash. Sempre que possível, devemos montar partições somente leitura. Dados voláteis, tais como arquivos de log, podem ser mantidos na memória RAM, usando o pseudo sistema de arquivos tmpfs. n

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/7768

Mais informações [1] Image tool for U-Boot environment: http://free-electrons. com/blog/mkenvimage-uboot-binary-env-generator/ [2] mtd-utils: http://git.infradead.org/mtd-utils.git [3] BuildRoot: http://buildroot.uclibc.org/ [4] OpenEmbedded: http://www.openembedded.org/ [5] BusyBox: http://www.busybox.net/ [6] JFFS2: http://www.linux-mtd.infradead.org/faq/jffs2.html [7] Log-structured filesystem: http://en.wikipedia. org/wiki/Log-structured_file_system/ [8] YAFFS2: http://www.yaffs.net/ [9] yaffs2utils: http://code.google.com/p/yaffs2utils/ [10] LogFS: https://github.com/prasad-joshi/logfs/ [11] biblk: Read-only block layer on top of UBI: https://lkml.org/lkml/2011/6/24/122/ [12] Flash filesystem benchmarks: http://elinux. org/Flash_Filesystem_Benchmarks/ [13] Flashbench benchmark tool: http://git.linaro.org/ gitweb?p=people/arnd/flashbench.git;a=summary [14] “Optimizing Linux with Cheap Flash Drives” by Arnd Bergmann, http://lwn.net/Articles/428584/

A certificação LPI cada vez mais próxima de você! Adquira já o seu kit de certificação LPI, faça o curso intensivo e as provas no fisl14 e garanta a sua vaga entre os especialistas Linux mais procurados do mercado!

Kit de certificação LPI-1

Conteúdo do kit:

Kit de certificação LPI-2

1 livro contendo o guia de estudos para a certificação LPI-1 ou 2 Curso preparatório intensivo 2 provas para certificação LPI-1 ou LPI-2: Exames 101/102 ou Exames 201/202 Para aquisição e mais informações: Linux Magazine #101 | Abril de 2013 https://www.linuxnewmedia.com.br/lm/certificacao_fisl14

0 ,0 ,33 0 8 65 10 $ $ r R e R ros o u P x d m77j 6 e ou s


PREVIEW

Linux Magazine #102 Samba 4 Conheça as fantásticas novidades da tão esperada nova versão da mais popular plataforma de compatibilidade entre sistemas operacionais do mercado. Após muitos anos de expectativas e com desenvolvimento constante, a ferrament a ganhou sua nova versão em grande estilo. Na próxima edição da Linux Magazine você irá conhecer seus novos recursos e melhorias, saber o que mudou e o que o novo Samba poderá fazer por você! Não perca! n

Admin Magazine #09 OpenStack Capaz de gerenciar os componentes de múltiplas instâncias virtualizadas, o OpenStack é um dos queridinhos dos profissionais de infraestrutura e virtualização da atualidade. É livre, não possui restrições quanto à quantidade de instâncias e é uma plataforma robusta, extremamente útil nestes tempos onde o advento da computação em nuvem já é uma realidade. Na próxima edição da Admin Magazine você vai conhecer tudo o que essa incrível ferramenta pode fazer por você! Não perca! n

82

www.linuxmagazine.com.br


Calendário de eventos

SERVIÇOS

Evento Web Expo Forum

Gartner Data Center Summit

Data 3 e 4 de abril

9 e 10 de abril

Índice de anunciantes Local

Informações

São Paulo, SP

http://www.webexpoforum. com.br/

São Paulo, SP

http://www.gartner.com/ technology/summits/ la/data-center/

Porto Alegre, RS

http://www.bitsouthamerica. com.br/

Empresa

Pág.

Supermicro

02

Senac

07

Impacta

11

Uol Cloud

13

Plus Server

BITS 2013

14 a 16 de maio

Forum Analytics

16 de julho

São Paulo, SP

https://www.linuxnewmedia. com.br/fan/

Cloudconf

10 e 11 de setembro

São Paulo, SP

http://www.cloudconf.com.br/

18,19

Central Server

23

CloudConf

25

Fisl

81

Watchguard

83

IBM

84

A LINUX MAGAZINE TEM UM PRESENTE PARA VOCÊ!

Quer ganhar essa mochila Targus® personalizada de presente da Linux Magazine? Veja o regulamento da promoção no site:

http://www.linuxmagazine.com.br/hotsite/mochila_natal 80

www.linuxmagazine.com.br


Você é refém da Operadora de Telecom?

Altos custos de conectividade impedem sua empresa de ter links redundantes. Não pule no vazio! Achar que a segurança é simples é o começo de seus problemas!

Alugue um Firewall gerenciado a partir de R$ 300,00/mês.

É um erro, total e comum, achar que qualquer um na sua TI pode fazer gestão de segurança da sua

Controle de Conteúdo e Antivírus, Soluções Antispam, implementadas localmente ou na nuvem, Proteção de Invasões e Ataques, Balanceamento de Links e Servidores, Análise de Vulnerabilidades e Riscos,

Conectividade entre Sites, Fornecedores, etc. Conectividade Segura para Usuários Móveis, Otimização de Links, Controle de Navegação, Controle de Aplicações,

vendas@altermedios.com.br

(11) 3393.3340


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.