14.03.2015 Views

Community Edition 77 - Linux Magazine Online

Community Edition 77 - Linux Magazine Online

Community Edition 77 - Linux Magazine Online

SHOW MORE
SHOW LESS

Transforme seus PDFs em revista digital e aumente sua receita!

Otimize suas revistas digitais para SEO, use backlinks fortes e conteúdo multimídia para aumentar sua visibilidade e receita.

Expediente editorial<br />

Diretor Geral<br />

Rafael Peregrino da Silva<br />

rperegrino@linuxmagazine.com.br<br />

Editores<br />

Flávia Jobstraibizer<br />

fjobs@linuxmagazine.com.br<br />

Kemel Zaidan<br />

kzaidan@linuxmagazine.com.br<br />

Editora de Arte<br />

Larissa Lima Zanini<br />

llima@linuxmagazine.com.br<br />

Colaboradores<br />

Alessandro Faria, Alexandre Borges, Alexandre Santos,<br />

Augusto Campos, Daniel Kottmair, Marcel Hilzinger,<br />

Markus Junginger, Karsten Günther, Petros Koutoupis ,<br />

Sebastian Kummer, Stefan Wintermeyer, Tim Schürmann.<br />

Tradução<br />

Emersom Satomi e Michelle Ribeiro<br />

Editores internacionais<br />

Uli Bantle, Andreas Bohle, Jens-Christoph Brendel,<br />

Hans-Georg Eßer, Markus Feilner, Oliver Frommel,<br />

Marcel Hilzinger, Mathias Huber, Anika Kehrer,<br />

Kristian Kißling, Jan Kleinert, Daniel Kottmair,<br />

Thomas Leichtenstern, Jörg Luther, Nils Magnus.<br />

Anúncios:<br />

Rafael Peregrino da Silva (Brasil)<br />

anuncios@linuxmagazine.com.br<br />

Tel.: +55 (0)11 3675-2600<br />

Penny Wilby (Reino Unido e Irlanda)<br />

pwilby@linux-magazine.com<br />

Amy Phalen (América do Norte)<br />

aphalen@linuxpromagazine.com<br />

Hubert Wiest (Outros países)<br />

hwiest@linuxnewmedia.de<br />

Diretor de operações<br />

Claudio Bazzoli<br />

cbazzoli@linuxmagazine.com.br<br />

Na Internet:<br />

www.linuxmagazine.com.br – Brasil<br />

www.linux-magazin.de – Alemanha<br />

www.linux-magazine.com – Portal Mundial<br />

www.linuxmagazine.com.au – Austrália<br />

www.linux-magazine.es – Espanha<br />

www.linux-magazine.pl – Polônia<br />

www.linux-magazine.co.uk – Reino Unido<br />

www.linuxpromagazine.com – América do Norte<br />

Apesar de todos os cuidados possíveis terem sido tomados<br />

durante a produção desta revista, a editora não é responsável<br />

por eventuais imprecisões nela contidas ou por consequências<br />

que advenham de seu uso. A utilização de qualquer material<br />

da revista ocorre por conta e risco do leitor.<br />

Nenhum material pode ser reproduzido em qualquer meio,<br />

em parte ou no todo, sem permissão expressa da editora.<br />

Assume-se que qualquer correspondência recebida, tal como<br />

cartas, emails, faxes, fotografi as, artigos e desenhos, sejam<br />

fornecidos para publicação ou licenciamento a terceiros de<br />

forma mundial não-exclusiva pela <strong>Linux</strong> New Media do Brasil,<br />

a menos que explicitamente indicado.<br />

<strong>Linux</strong> é uma marca registrada de Linus Torvalds.<br />

<strong>Linux</strong> <strong>Magazine</strong> é publicada mensalmente por:<br />

<strong>Linux</strong> New Media do Brasil Editora Ltda.<br />

Rua São Bento, 500<br />

Conj. 802 – Sé<br />

01010-001 – São Paulo – SP – Brasil<br />

Tel.: +55 (0)11 3675-2600<br />

Direitos Autorais e Marcas Registradas © 2004 - 2011–:<br />

<strong>Linux</strong> New Media do Brasil Editora Ltda.<br />

Impressão e Acabamento: RR Donnelley<br />

Distribuída em todo o país pela Dinap S.A.,<br />

Distribuidora Nacional de Publicações, São Paulo.<br />

Atendimento Assinante<br />

www.linuxnewmedia.com.br/atendimento<br />

São Paulo: +55 (0)11 3675-2600<br />

Rio de Janeiro: +55 (0)21 3512 0888<br />

Belo Horizonte: +55 (0)31 3516 1280<br />

ISSN 1806-9428<br />

Impresso no Brasil<br />

Iniciativas criativas<br />

Em tempos de computação em nuvem e computação móvel, conforme<br />

já escrevi alhures, há uma enxurrada de oportunidades para estabelecer<br />

negócios bem sucedidos no mercado – algo que não se restringe ao<br />

mercado nacional, inclusive. Empresas “de garagem” nunca foram tão<br />

requisitadas como hoje. Há um gigantesco déficit na cadeia de produção<br />

de programas para dispositivos móveis, ao mesmo tempo que vários conjuntos<br />

de ferramentas e lojas de aplicativos bem estruturadas estão disponíveis<br />

(gratuitamente) para quem quiser criar e comercializar aplicativos.<br />

Seguindo o mantra do mercado capitalista moderno, a tônica de iniciativas<br />

em torno do desenvolvimento desses aplicativos é: procure uma<br />

necessidade e atenda-a com excelência. Simples assim. O homem hodierno,<br />

entretanto, NÃO sabe realmente quais são as suas necessidades,<br />

especialmente no que tange a software. Assim, cabe ao desenvolvedor e/ou<br />

ao empreendedor observar atentamente o comportamento de grupos de<br />

usuários: eles vivem dando dicas sobre recursos que gostariam de ver em<br />

seus sistemas, gadgets , celulares, smartphones , tablets etc., em redes sociais<br />

e fóruns especializados em tecnologia. Muitas vezes, entretanto, eles não<br />

sabem o que querem, mas quando se deparam com “a coisa” funcionando,<br />

imediatamente alegam que era isso que “sempre” quiseram. Para quem<br />

vive de tecnologia, como saber qual ideia vai “pegar”? Como identificar as<br />

necessidades que nem mesmo os próprios clientes estão cientes de existir?<br />

Infelizmente (ou não), não há uma resposta definitiva para essa questão,<br />

mas existem várias “pistas”: primeiramente, vale a pena considerar<br />

as necessidades básicas do ser humano no que tange à obtenção de<br />

informações. Como fazer para acessar o serviço de home banking para<br />

pagar aquela conta que vence hoje? Como obter os dados do balanço<br />

da empresa para aquela reunião em outro continente, quando os dados<br />

armazenados no pendrive USB foram corrompidos durante o transporte?<br />

É meia-noite e as fraldas acabaram (em uma cidade de 10 mil habitantes);<br />

existe um serviço de disque-fraldas com entrega expressa nessa região?<br />

Se observarmos os exemplos acima, cada um deles é um problema<br />

clamando por uma solução simples de usar, confortável, intuitiva,<br />

flexível, sempre disponível e de baixo custo. Mais importante ainda,<br />

temos que nos despir de preconceitos e ideias preconcebidas, e pensar<br />

de maneira criativa para resolvê-los.<br />

Por outro lado, ocorre frequentemente que aplicativos despretensiosos,<br />

que podem mesmo ser classificados na categoria dos “inutilitários”,<br />

acabem por emplacar estrondosamente. Um exemplo clássico disso<br />

é um aplicativo simples para o Android e o iPhone chamado Talking<br />

Tom Cat, no qual um gato é capaz de repetir tudo que se fala para ele<br />

com uma voz engraçada, pode arranhar a tela do aparelho, tomar leite<br />

e receber carinho. Apesar de não ter nenhuma utilidade prática, o<br />

programa é muito divertido, e sua versão paga já foi comprada milhares<br />

de vezes! Investir no desenvolvimento de aplicativos diferentes e<br />

divertidos, mesmo que aparentemente inúteis, é pensar criativamente.<br />

São iniciativas como essa, que fazem o diferencial e podem levar ao<br />

sucesso. Aproveite a enxurrada de dispositivos móveis para dar asas à<br />

sua criatividade: isso pode render mais do que você imagina!<br />

EDITORIAL<br />

Rafael Peregrino da Silva<br />

Diretor de Redação<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

3


ÍNDICE<br />

CAPA<br />

Práticos portáteis 35<br />

Entre os dispositivos móveis, os tablets fi guram no topo da lista<br />

de desejos de quem deseja mobilidade com praticidade.<br />

A guerra dos tablets 36<br />

O iPad é um dos muitos produtos da Apple no qual a concorrência<br />

encontra difi culdades para competir. Contudo, examinamos algumas<br />

alternativas genuínas que estão chegando e conquistando o mercado.<br />

Galáxia portátil 40<br />

Muitos encaram o Galaxy Tab da Samsung como o único<br />

tablet páreo para o iPad em termos de qualidade e recursos.<br />

Colocamos esse computador de 7 polegadas à prova.<br />

Aplicativos em alta 43<br />

A Intel quer uma fatia do bolo das lojas online de aplicativos<br />

com seu AppUp Center, que mantém o foco nos netbooks<br />

Android na bandeja 46<br />

Por meio de algumas unidades para demonstração e vídeos no YouTube<br />

durante a Consumer Electronics Show (CES), o Google forneceu um “tiragosto”<br />

da próxima versão do Android. Com o lançamento do SDK dessa<br />

versão, há fi nalmente informações detalhadas a respeito do sistema.<br />

6 www.linuxmagazine.com.br


<strong>Linux</strong> <strong>Magazine</strong> <strong>77</strong> | ÍNDICE<br />

COLUNAS<br />

Klaus Knopper 10<br />

ANÁLISE<br />

Sob o olhar da Zarafa - parte I 56<br />

Charly Kühnast 12<br />

Zack Brown 14<br />

Augusto Campos 16<br />

Kurt Seifried 18<br />

Alexandre Borges 22<br />

NOTÍCIAS<br />

Geral 24<br />

➧ Projeto GNU quer criar alternativa ao Skype<br />

➧ Projeto Debian anuncia primeiro mirror security.<br />

debian.org da América do Sul<br />

➧ HP disponibiliza versão 2.1 do SDK do WebOS<br />

➧ Microsoft abre loja virtual no Brasil<br />

➧ <strong>Linux</strong> 2.6.38 tem aumento de desempenho<br />

CORPORATE<br />

Notícias 26<br />

➧ Executivo da Canonical e líder do Debian em projeto conjunto<br />

➧ Nova plataforma de aplicações da Red Hat<br />

inclui solução de virtualização<br />

➧ Aplicativos para dispositivos móveis infringem licenças livres<br />

➧ IBM inaugura laboratório de pesquisa e centro<br />

de soluções no Rio de Janeiro<br />

Dificuldades para implementar uma solução de email na empresa<br />

onde trabalha? A diretoria quer recursos avançados e anda sugerindo<br />

até o MS Exchange? Aprenda como deixar seu diretor feliz com <strong>Linux</strong>!<br />

Encolhimento digital 60<br />

A maioria dos discos rígidos possui dados duplicados<br />

ou até mesmo triplicados. O LessFS usa um método<br />

sofi sticado para remover esses rastros do seu disco.<br />

Real versus virtual 63<br />

A tecnologia da realidade aumentada, além de fascinar<br />

qualquer ser humano, é um assunto emergente.<br />

Neste artigo, veremos seus princípios básicos.<br />

Visão de raio-x 68<br />

Que componentes fazem parte de seu computador? A<br />

ferramenta lshw revela detalhes do hardware que você talvez<br />

não encontre nem mesmo na especifi cação do fabricante.<br />

Entrevista com Gilberto Mautner 28<br />

Com a evolução das tecnologias que tornam possível<br />

oferecer cada vez mais serviços nas nuvens, é natural que<br />

a plataforma ganhe cada vez mais adeptos. Mas ao mesmo<br />

tempo, cresce também a desconfi ança e o receio com<br />

questões ligadas à segurança e acesso aos dados online.<br />

TUTORIAL<br />

Toque perfeito 48<br />

Coluna: Jon “maddog” Hall 30<br />

Coluna: Alexandre Santos 32<br />

Coluna: Rafael Peregrino 34<br />

REDES<br />

Macio como manteiga 72<br />

A partir da versão 2.0 do Android, os desenvolvedores agora têm acesso<br />

à funções multitoque. Mas é preciso cuidado ao manipular a API .<br />

VoIP com Asterisk – parte VI 52<br />

O sistema telefônico ultrapassado, presente até pouco tempo atrás nas<br />

empresas, é prolífico em cobranças: cada novo recurso ativado requer<br />

uma nova ativação de serviço, com o preço adicionado ao pagamento<br />

mensal. É hora de mudar. É hora de criar sua própria central VoIP.<br />

SERVIÇOS<br />

O Btrfs tem conquistado especialistas, com<br />

recursos avançados como subvolumes, snapshots<br />

e redimensionamento dinâmico de volume.<br />

Editorial 03<br />

Emails 08<br />

<strong>Linux</strong>.local 78<br />

Preview 82<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

7


CARTAS<br />

Emails para o editor<br />

Permissão<br />

de escrita<br />

sanja gjenero – www.sxc.hu<br />

Coluna do Charly<br />

Dentre muitas coisas interessantes<br />

nas edições da <strong>Linux</strong> <strong>Magazine</strong>,<br />

estou sempre ansioso para ver qual<br />

utilitário o Charly irá apresentar em<br />

sua coluna mensal. Das muitas já<br />

apresentadas (todas muito simples,<br />

mas que facilitam muito a vida de<br />

um administrador de sistemas), a<br />

ferramenta CSSH (apresentada na<br />

<strong>Linux</strong> <strong>Magazine</strong> 75) me deixou<br />

eufórico. Extremamente poderosa, irá<br />

me ajudar muito na administração de<br />

servidores, switches, roteadores etc.<br />

Parabéns Charly pelos ótimos artigos.<br />

Adriano Matos Meier<br />

Resposta<br />

Realmente Adriano, a ferramenta<br />

CSSH é tão poderosa, que<br />

pretendemos abordá-la em artigos<br />

mais completos e abrangentes,<br />

apresentando mais dos fantásticos<br />

recursos que ela possui. Pode<br />

ter certeza de que já estamos<br />

trabalhando nisso!<br />

Open VPN<br />

Sou leitor da <strong>Linux</strong> <strong>Magazine</strong> e<br />

gostaria de sugerir artigos sobre VPN,<br />

mais especificamente abordando o<br />

OpenVPN e o OpenSWAN, suas<br />

características e diferenças.<br />

Antonio Luis Navas Rodrigues.<br />

Resposta<br />

Antonio, agradecemos a sua sugestão!<br />

O OpenVPN em particular é uma<br />

ferramenta da qual gostamos muito<br />

e costumamos abordar sempre<br />

suas novidades, seu uso e recursos<br />

em artigos da <strong>Linux</strong> <strong>Magazine</strong>.<br />

Como exemplo, confira o artigo<br />

“Segredos sem fio”, publicado na<br />

<strong>Linux</strong> <strong>Magazine</strong> 07 e que aborda<br />

a criação de túneis criptografados<br />

com OpenVPN. Certamente vamos<br />

publicar mais artigos sobre esta<br />

fantástica ferramenta!<br />

GTK<br />

Gostaria, em primeiro lugar, de parabenizá-los<br />

pela <strong>Linux</strong> <strong>Magazine</strong>.<br />

Sou assinante da revista e gostaria<br />

de fazer uma sugestão de artigos<br />

relacionados à programação GTK,<br />

especialmente focado em linguagem<br />

C com GTK.<br />

Obrigado!<br />

João Vieira<br />

Resposta<br />

Caro João, agradecemos a sua sugestão.<br />

Vamos procurar, em edições<br />

futuras, publicar mais artigos<br />

contendo programação com GTK,<br />

pois diversos de nossos leitores são<br />

desenvolvedores GTK e procuram<br />

por este tipo de material. Aguarde!<br />

Escreva para nós! ✉<br />

Sempre queremos sua opinião sobre a <strong>Linux</strong> <strong>Magazine</strong> e nossos artigos. Envie seus emails para<br />

cartas@linuxmagazine.com.br e compartilhe suas dúvidas, opiniões, sugestões e críticas. Infelizmente, devido ao<br />

volume de emails, não podemos garantir que seu email seja publicado, mas é certo que ele será lido e analisado.<br />

8<br />

www.linuxmagazine.com.br


Coluna do Augusto<br />

COLUNA<br />

Escolhas: cada<br />

um tem a sua<br />

Quando não há uma opção nativa e livre para GNU /<br />

<strong>Linux</strong> de um determinado software, nada como uma<br />

solução multiplataforma para contornar a situação. Com<br />

sorte, podemos obter boas surpresas no fi nal.<br />

Quando se trata de escolher aplicativos para adotar<br />

ou mesmo para receber apoio no desktop<br />

baseado em GNU/<strong>Linux</strong>, as alternativas em<br />

código aberto contam com a simpatia e a preferência<br />

de quase todos os usuários.<br />

Ao mesmo tempo, a ausência de suporte a alguns<br />

aplicativos relativamente populares já foi uma explicação<br />

frequente para a não adoção do desktop <strong>Linux</strong><br />

– especialmente entre usuários que não são especialmente<br />

sensíveis à questão da liberdade das licenças dos<br />

softwares que usam, e os escolhem com base em outras<br />

demandas ou critérios de preferência.<br />

No que diz respeito ao atendimento das demandas<br />

deste contingente de usuários, e a sua possível adição<br />

subsequente à fatia de mercado que representa a plataforma<br />

GNU/<strong>Linux</strong> (aumentando assim a atratividade<br />

para mais desenvolvedores e prestadores investirem<br />

nela), a tendência dos últimos anos quanto a aplicativos<br />

multiplataforma ou supra-plataforma é portanto<br />

bastante positiva.<br />

Afinal, quando a camada superior da plataforma de<br />

aplicações é o navegador web, o desktop <strong>Linux</strong> está muito<br />

bem servido, com versões nativas dos navegadores que<br />

há anos definem o conceito de aderência a padrões web,<br />

desempenho e estabilidade. Assim, a popularização dos<br />

chamados aplicativos “da nuvem”, incluindo pacotes de<br />

ferramentas para automação de escritório, comunicadores,<br />

agregadores etc., já serviu para tornar o sistema mais<br />

palatável para uma parcela maior de usuários.<br />

Os aplicativos Java também cumpriram em parte este<br />

papel mas, como muitos usuários do sistema de Imposto<br />

de Renda de Pessoa Física podem atestar, as diferenças<br />

entre as configurações padrão das diversas distribuições<br />

populares tornaram bem mais difícil (mesmo quando<br />

havia boa vontade específica por parte dos desenvolvedores<br />

e estrutura de suporte) transformar em realidade<br />

a promessa de aplicativos interoperáveis que instalem<br />

e sejam executadas com facilidade.<br />

Uma novidade relativamente recente que surgiu<br />

no radar e ainda não foi detectada por muitos, são os<br />

aplicativos em Adobe AIR. O que é possível fazer com<br />

eles é um pouco limitado, pois em sua essência um<br />

aplicativo AIR continua sendo uma web app (aplicativo<br />

web), mas em compensação, a instalação costuma ser<br />

simples e o suporte ao <strong>Linux</strong> é natural, do ponto de vista<br />

do desenvolvedor.<br />

Existem vários títulos interessantes feitos em AIR e<br />

já disponíveis para <strong>Linux</strong>. Os meus favoritos são o TweetDeck,<br />

um cliente para o serviço do Twitter, e o Zinio<br />

Reader, uma interessante implementação de assinatura<br />

e leitura de versões digitais de revistas impressas. Mas há<br />

vários outros conceitos interessantes sendo explorados:<br />

pesquise por nomes como Klok (gestão de tarefas), Snackr<br />

(um jeito diferente de acompanhar feeds) e outros<br />

títulos do AIR Marketplace.<br />

Na minha opinião, nenhuma alternativa é melhor<br />

que bons aplicativos nativos – e se eles forem de código<br />

aberto, melhor ainda. Mas quando há ausência destes,<br />

a existência de suporte por modelos multiplataforma é<br />

apreciada pelos usuários e, felizmente, às vezes também<br />

serve para estimular o desenvolvimento de equivalentes<br />

em código aberto. ■<br />

Augusto César Campos é administrador de TI e, desde 1996, mantém<br />

o site BR-linux.org, que cobre a cena do Software Livre no Brasil<br />

e no mundo.<br />

16<br />

www.linuxmagazine.com.br


Coluna do Alexandre<br />

COLUNA<br />

Aprenda com o<br />

boot do <strong>Linux</strong><br />

Entenda como o kernel <strong>Linux</strong> faz o endereçamento de<br />

memória através das mensagens de boot do sistema.<br />

Talvez seja possível que o leitor nunca tenha prestado<br />

atenção no boot do <strong>Linux</strong> e na riqueza de<br />

detalhes que o mesmo oferece, e que, ao mesmo<br />

tempo, também apresenta algumas informações<br />

enigmáticas que podem não ter qualquer relevância<br />

para a maioria dos usuários que utilizam o sistema<br />

operacional para produzir resultados. Entretanto, são<br />

muito importantes para aqueles que realizam trabalhos<br />

relacionados ao kernel.<br />

Existem muitas formas de examinar as mensagens oferecidas<br />

pelo kernel durante o boot do <strong>Linux</strong>, sendo possível<br />

utilizar o comando more /var/log/messages ou também<br />

dmesg | more para tal. É evidente que tentar explicar todo<br />

o boot em uma coluna é algo impossível, porém podemos<br />

comentar um ou outro ponto aqui. Exemplos:<br />

Como o leitor já sabe através<br />

de seu auto-aprendizado,<br />

processadores x86 têm dois<br />

modos de operação: Real<br />

e Protegido, sendo que no<br />

primeiro, o mesmo somente<br />

pode acessar 1Mb de memória<br />

RAM e, logo em seguida,<br />

esta operação é trocada para<br />

modo Protegido através da<br />

função start_kernel() que se<br />

encontra em init/main.c .<br />

BIOS-provided physical RAM map:<br />

BIOS-e820: 0000000000000000 - 000000000009f800<br />

(usable)<br />

BIOS-e820: 000000000009f800 - 00000000000a0000<br />

(reserved)<br />

Como o leitor já sabe através de seu auto-aprendizado,<br />

processadores x86 têm dois modos de operação: Real e<br />

Protegido, sendo que no primeiro, o mesmo somente<br />

pode acessar 1Mb de memória RAM e, logo em seguida,<br />

esta operação é trocada para modo Protegido através<br />

da função start_kernel() que se encontra em init/<br />

main.c . Sugiro, caso não tenha o código-fonte do kernel<br />

em sua máquina, visualizar o mesmo em http://lxr.<br />

linux.no/linux/ ou ainda se quiser, pode obtê-lo usando<br />

a sequência (Debian ou Ubuntu):<br />

# apt-get install git-core<br />

# git clone git://git.kernel.org/pub/scm/linux/<br />

kernel/git/torvalds/linux-2.6.git linux-2.6<br />

# git pull (apenas se estiver interessado nas<br />

atualizações constantes do kernel)<br />

Por isto, justamente enquanto o kernel está no modo<br />

Real, ele utiliza (através do código em arch/x86/kernel/<br />

setup.c ) alguns serviços de interrupção da BIOS (no<br />

caso acima, serviço 15 e função 0xe820 – que dá nome<br />

ao que o leitor lê na saída acima) para obter um mapa<br />

da memória, que será utilizado pelo kernel [1] . É útil<br />

notar que o kernel aproveita esta passagem pelo modo<br />

Real do processador para coletar diversas informações<br />

e salvá-las inicialmente na primeira página física de<br />

memória (que é dividida, em geral 4096 bytes, definido<br />

com uma macro em include/asm/page.h ) para, mais<br />

tarde, após chavear para modo Protegido, salvar estes<br />

dados nas estruturas de dados do kernel.<br />

Por falar nas estruturas de dados do kernel, é provável<br />

que você observe outras linhas interessantes no boot:<br />

22<br />

www.linuxmagazine.com.br


887MB LOWMEM available<br />

Zone PFN ranges:<br />

DMA 0x00000010 -> 0x00001000<br />

Normal 0x00001000 -> 0x0003<strong>77</strong>fe<br />

HighMem 0x0003<strong>77</strong>fe -> 0x00080000<br />

A memória é normalmente dividida em partes e justamente<br />

no momento do boot é que o kernel calcula<br />

estas porções (que ele nomeia como sendo zonas). Esta<br />

zona mostrada acima (887 MB, que poderia ser qualquer<br />

número entre 16MB e 896Mb) é utilizada pelo código<br />

do kernel (função kmalloc() ). Esta utilização é possível<br />

já que o kernel pode fazer um mapeamento um-pra-um<br />

do endereço físico da RAM para o endereço lógico do<br />

kernel, apenas defasadas com um offset.<br />

Como o próprio kernel, em sistemas x86, faz uma<br />

divisão de 3Gb para processos do usuário e 1Gb para<br />

ele próprio (o kernel x86 pode endereçar mais de 4Gb<br />

devido às extensões), esta diferença (1GB – LOWMEM)<br />

é justamente o quanto o kernel usa para suas estruturas<br />

de dados (mencionadas acima).<br />

A região que está abaixo dos 16Mb é para uso do<br />

DMA ( Direct Memory Access ) e de uso dos dispositivos<br />

ISA. A memória acima dos 896Mb é conhecida como<br />

HIGHMEM sendo que para o kernel utilizá-la é gerado<br />

um endereçamento virtual mapeando algumas destas<br />

áreas acima de 1Gb para regiões abaixo de 1Gb (neste<br />

caso já não há mais esta paridade um-pra-um com a<br />

memória física e provavelmente seja usada as funções<br />

kmap() ou ainda vmalloc() ). Como dito antes, o uso comum<br />

é para processos do usuário e não para o kernel em si.<br />

Fica fácil perceber que algumas poucas linhas do<br />

boot do kernel nos trazem muitos conceitos, e destes,<br />

surgem outros assuntos bastante reluzentes que podem<br />

trazer dicas de como o kernel funciona. No próximo<br />

mês eu mostrarei outras pequenas curiosidades a respeito<br />

do boot do <strong>Linux</strong>. Até mais. ■<br />

Mais informações<br />

[1] Documentação sobre interrupções<br />

da BIOS: http://poli.cs.vsb.cz/<br />

misc/rbint/ix/index.html<br />

Alexandre Borges (alex_sun@terra.com.br, twitter: @ale_sp_brazil) é Especialista<br />

Sênior em Solaris, OpenSolaris e <strong>Linux</strong>. Trabalha com desenvolvimento,<br />

segurança, administração e análise de desempenho desses<br />

sistemas operacionais, atuando como instrutor e consultor. é pesquisador<br />

de novas tecnologias e assuntos relacionados ao kernel.<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

23


NOTÍCIAS<br />

➧ Projeto GNU quer criar<br />

alternativa ao Skype<br />

O projeto GNU anunciou planos para o GNU Free<br />

Call, que irá oferecer comunicação segura para o<br />

público em geral e deseja ser tão onipresente e<br />

utilizável quanto o serviço de VoIP Skype. Os desenvolvedores<br />

afirmam que o aplicativo será livre,<br />

gratuito e estará disponível em todas as plataformas,<br />

incluindo smartphones.<br />

Ao contrário do Skype, este novo sistema utilizará<br />

o protocolo peer-to-peer (ponto-a-ponto) SIP, que<br />

necessita apenas de uma rede simples. De acordo<br />

com o anúncio, ela adicionará uma dose substancial<br />

de segurança à comunicação: não haverá necessidade<br />

de nenhum provedor centralizado de serviços e<br />

nenhum “protocolo binário secreto e inseguro que<br />

possa conter vulnerabilidades ocultas”.<br />

O projeto será construído sobre o GNU SIP Witch,<br />

um serviço de ligação e registro de protocolo<br />

SIP. Ao invés de utilizar qualquer provedor ou serviço<br />

centralizado, isso permite múltiplos pontos encontrarem<br />

uns aos outros e a se conectarem. O anúncio<br />

declara que atuar como uma rede VoIP organizada,<br />

sem nenhum controle central, permitirá que a rede<br />

continue funcionando, mesmo que parte substancial<br />

dela esteja isolada. O projeto está sendo coordenado<br />

por Haakon Eriksen e projetado por David Sugar.<br />

O anúncio encoraja a participação dos usuários e<br />

sugere três formas de contato. A primeira é o site do<br />

GNU Telephony. Há duas listas de email: a primeira<br />

para o SIP Witch, sipwitch-devel@gnu.org , e a outra para<br />

questões gerais e de projeto, a sipwitch-devel@gnu.org . ■<br />

➧ Projeto Debian anuncia<br />

primeiro mirror security.<br />

debian.org da América do Sul<br />

O projeto Debian anunciou no início de março a disponibilidade<br />

do primeiro mirror (servidor espelho)<br />

security.debian.org oficial da América do Sul. O<br />

security.debian.org carrega todas as atualizações de segurança<br />

das versões stable e oldstable do kernel Debian.<br />

Em combinação com o recurso de GeoDNS utilizado<br />

pelo Debian, isso deve aumentar drasticamente a<br />

velocidade de download para os usuários nessa região<br />

geográfica. “Este é um avanço muito bem vindo para<br />

uma melhor cobertura mundial em relação a servidores<br />

dedicados oficiais do security.debian.org administrados<br />

pelo projeto Debian” afirmou Martin Zobel Helas,<br />

membro do time de administração do Debian.<br />

“O Debian tem muitos usuários na América do Sul e<br />

estamos felizes por podermos contribuir com o projeto Debian<br />

através de hardware e banda de Internet para distribuir<br />

localmente um conteúdo que estava disponível apenas no<br />

hemisfério norte”, declarou Carlos Carvalho do C3SL.<br />

O C3SL, responsável pela iniciativa, é o Centro de<br />

Computação Científica e Software Livre, um centro de<br />

pesquisa da Universidade Federal do Paraná. ■<br />

➧ HP disponibiliza versão<br />

2.1 do SDK do WebOS<br />

A HP disponibilizou no dia 18 de março, a versão<br />

2.1 do SDK de seu sistema embarcado. A nova<br />

versão é compatível com os aplicativos criados<br />

para o Palm Pixi, mas incorpora novas funções<br />

que serão incorporadas por padrão na versão 3.0<br />

do sistema, como o Just Type, o Exhibition e o<br />

Synergy. De forma a tornar os programas compatíveis<br />

com a nova safra de smartphones que serão<br />

lançados pela empresa, os aplicativos devem ser<br />

otimizados para serem exibidos em telas de 320<br />

x 400 pixels.<br />

O WebOS é o sistema embarcado baseado<br />

em <strong>Linux</strong> da HP, que foi adquirido junto com a<br />

compra da Palm, pela empresa e que possibilita<br />

a criação de aplicativos de maneira relativamente<br />

fácil através de programação web com HTML,<br />

Javascript e CSS, mas que permite também o<br />

uso de linguagens como C e C++.<br />

A empresa já declarou anteriormente que<br />

deseja expandir o uso do sistema para computadores<br />

pessoais, notebooks e tablets. ■<br />

24<br />

www.linuxmagazine.com.br


VRE<br />

Gerais | NOTÍCIAS<br />

➧ Microsoft abre loja<br />

virtual no Brasil<br />

A Microsoft abriu sua loja virtual própria no país,<br />

a Microsoft Store . Presente em mais 16 países,<br />

a loja brasileira é a primeira da América Latina,<br />

segundo informaram alguns sites. Nela, os<br />

consumidores poderão encontrar a maioria dos<br />

programas mais populares da empresa. Também<br />

é possível que os compradores façam comparações<br />

entre os produtos e escrever resenhas com<br />

suas avaliações.<br />

Não há venda física dos produtos e a entrega se<br />

dá através de download. O Windows 7 Ultimate,<br />

versão mais completa do sistema operacional mais<br />

recente da empresa sai por apenas R$ 669,00, mas<br />

por conta de uma promoção de lançamento, em<br />

compras superiores a R$ 150,00, é possível parcelar<br />

o valor em até 10 vezes sem juros, no cartão<br />

de crédito. ■<br />

➧ <strong>Linux</strong> 2.6.38 tem aumento<br />

de desempenho<br />

A nova versão do kernel <strong>Linux</strong>, 2.6.38, já está disponível,<br />

oferecendo aos usuários um aumento do desempenho<br />

sobre as versões anteriores.<br />

O novo kernel vai um passo além do que os desenvolvedores<br />

forneceram na versão 2.6.37 removendo o último<br />

kernel lock que bloqueava o desempenho do sistema.<br />

“Há muitas melhorias de desempenho na versão 2.6.38, o<br />

Transparent Hugepages (que permite alocações de quantidades<br />

grandes de memória) é uma das características<br />

mais notáveis” afirmou Tim Burke, vice-presidente de<br />

engenharia da Red Hat em entrevista ao site Internet-<br />

News.com. “Entre outras características da nova versão,<br />

estão o agrupamento automático dos processos (deixando<br />

o escalonamento mais justo), a escalonabilidade no<br />

tráfego de rede, e o VFS (camada do kernel abaixo dos<br />

sistemas de arquivos) recebeu melhoria de escalonabilidade<br />

e um cache de de diretórios. ■<br />

Você está com a cabeça nas nuvens?<br />

Nós também.<br />

PHISHING<br />

BASEADO EM SOFTWARE LIVRE<br />

FILTRO DE ENTRADA E SAÍDA<br />

RE LIVR<br />

AÍDA<br />

FLEXÍVEL E CUSTOMIZÁVEL<br />

CLIENTES 100% SATISFEITOS<br />

AntiSpam SaaS UNODATA<br />

30 DIAS<br />

GRÁTIS!<br />

ENVIE UM E-MAIL PARA<br />

LINUXMAGAZINE@UNODATA.COM.BR<br />

E GANHE + 1 MÊS GRÁTIS DE ANTISPAM<br />

Para empresas que não querem ou não<br />

podem administrar sua infra-estrutura de e-mail<br />

o AntiSpam SaaS UNODATA é uma ótima opção.<br />

Disponível em Software, nuvem e Appliance<br />

3 em 1 - AntiSpam, AntiVírus e AntiFraude<br />

Instalação em menos de 15 minutos<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

(11) 3522-3011 Acesse www.unodata.com.br e veja nossos casos de sucesso.<br />

25


Coluna do Alexandre Santos<br />

CORPORATE<br />

<strong>Linux</strong> e a evolução<br />

das espécies<br />

A teoria da evolução das espécies aplicada ao <strong>Linux</strong>.<br />

Há algumas semanas eu estava demonstrando as<br />

novidades do meu desktop Ubuntu 10.10 durante<br />

uma aula e um aluno me perguntou por que<br />

cada vez que ele me encontrava eu tinha uma versão diferente<br />

de <strong>Linux</strong> instalada na minha máquina. A resposta<br />

seria bem simples se a pergunta não estivesse carregada<br />

com dúvidas sobre a maturidade do sistema operacional.<br />

Não é novidade que sou um grande defensor do<br />

GNU/<strong>Linux</strong> e, para responder a essa pergunta, não poderia<br />

ser diferente. A resposta é simples: assim como a<br />

evolução das espécies exige a adaptação dos seres para<br />

sobrevivência, a evolução das tecnologias também é<br />

definida pela capacidade de resiliência do ecossistema.<br />

Se observarmos bem ao nosso redor, veremos milhares<br />

de diferentes espécies, cada qual adaptada a um<br />

ambiente diferente, com características diferentes, mas<br />

carregando códigos genéticos (kernels) muito parecidos.<br />

Podemos concluir que a teoria da evolução das espécies<br />

de Darwin [1] nos mostra que força não é o fator<br />

essencial para a sobrevivência, muito menos inteligência.<br />

Para conseguir passar pela seleção natural e seguir<br />

em frente, a capacidade de adaptação é o que garante<br />

a sobrevivência das espécies.<br />

Com o <strong>Linux</strong>, funciona da mesma maneira. O sistema<br />

operacional não é o mais forte – não do ponto de vista financeiro<br />

– e não necessariamente precisa possuir as mais<br />

A beleza evolutiva do<br />

<strong>Linux</strong> se dá em razão da<br />

facilidade que cada um de<br />

nós possui em criar uma nova<br />

distribuição que atenda a<br />

uma necessidade peculiar.<br />

brilhantes mentes trabalhando em sua evolução, mas sem<br />

dúvida, se olharmos para a árvore genealógica do <strong>Linux</strong><br />

[2] , veremos distribuições que entraram em extinção (Conectiva,<br />

Jurix, linux-ft etc.), outras que evoluíram de um<br />

ascendente comum como a RedHat, Suse ou Slackware e<br />

algumas espécies que acabaram de nascer sem se basear em<br />

outros sistemas como o Android, o QubesOS e o Quirky.<br />

A beleza evolutiva do <strong>Linux</strong> se dá em razão da facilidade<br />

que cada um de nós possui em criar uma nova distribuição<br />

que atenda a uma necessidade peculiar. O sistema operacional<br />

aberto, permite tanto a criação de uma interface<br />

movida a gestos, que facilitará a vida de deficientes físicos,<br />

até a facilidade de adaptação para se trabalhar com aplicativos<br />

multitouch ou multi-sensores sendo executados em<br />

variados dispositivos conectáveis ou não a Internet. Alguns<br />

destes aplicativos ainda estão por existir, mas o mais fascinante<br />

de tudo isso é a possibilidade deles mudarem vidas.<br />

Da hereditariedade, mutação, recombinação genética e<br />

transferência de código dessas distribuições surgirá, quem<br />

sabe em breve, uma espécie ultra-adaptável chamada <strong>Linux</strong>-sapiens,<br />

com a única certeza de que a diversidade<br />

continuará a existir em prol da evolução darwiniana. ■<br />

Mais informações:<br />

[1] Evolução: http://pt.wikipedia.<br />

org/wiki/Evolu%C3%A7%C3%A3o<br />

[2] Árvore genealógica do <strong>Linux</strong>: http://<br />

en.wikipedia.org/wiki/List_of_<strong>Linux</strong>_distributions<br />

[3] Distribuições demais: http://www.oreillynet.com/linux/blog/2007/01/so_many_<br />

distros_so_little_time.html<br />

Alexandre Santos (alexos@br.ibm.com) é gerente de estratégia e marketing<br />

de System z da IBM Brasil.<br />

34<br />

www.linuxmagazine.com.br


A invasão dos tablets<br />

Práticos portáteis<br />

Entre os dispositivos móveis, os tablets fi guram no topo da lista de<br />

desejos de quem deseja mobilidade com praticidade.<br />

por Flávia Jobstraibizer<br />

CAPA<br />

A<br />

evolução dos dispositivos portáteis multifuncionais<br />

cresce a olhos vistos. Desde os e-readers e<br />

os primeiros tablets dos anos 2000, muita coisa<br />

mudou. Nos tablets que atualmente invadiram o mercado,<br />

podemos encontrar recursos tais como: ler livros<br />

e revistas digitais, navegar na Internet, efetuar ligações<br />

telefônicas, tirar fotos, escutar e armazenar músicas,<br />

fazer videoconferências e muitas outras coisas.<br />

Para os profissionais de tecnologia, os tablets que possuem<br />

sistemas operacionais livres são uma fonte inesgotável de<br />

diversão, conhecimento e informação, pois tais dispositivos<br />

são abertos e configuráveis, além de permitirem uma ampla<br />

gama de customizações e modificações personalizadas.<br />

O popular iPad está ficando para trás no que diz respeito<br />

às vantagens de outros tablets “abertos” do mercado.<br />

Isso se deve ao fato de que o popular e pioneiro tablet<br />

da Apple não permite grandes modificações e possui diversos<br />

bloqueios que diariamente fazem com que seus<br />

usuários procurem opções livres – e menos burocráticas<br />

– no mercado. Pensando nisso, nesta edição da <strong>Linux</strong><br />

<strong>Magazine</strong> , você vai conhecer diversas alternativas ao<br />

iPad, das mais simples às mais rebuscadas.<br />

Entre as opções impressionantes que o mercado de<br />

tablets nos oferece atualmente, está o Samsung Galaxy<br />

Tab, que traz o Android – sistema operacional livre da<br />

gigante Google – como sistema operacional, e que por<br />

ser livre, é outro ponto decisivo no momento da compra<br />

de um destes dispositivos. Não deixe de conferir o teste<br />

realizado por nossa equipe neste excelente aparelho.<br />

Programar para o Android, também é uma das facilidades<br />

abordadas nesta edição, em um artigo que irá<br />

introduzi-lo no mundo da programação Android para<br />

tablets, agora em sua versão 3.0.<br />

Para quem deseja usufruir ao máximo da capacidade<br />

do seu equipamento, obter aplicativos dos mais variados<br />

tipos certamente será um dos seus principais pontos de<br />

interesse. Sendo assim, não deixe de conferir o artigo sobre<br />

a AppUp Center , loja de aplicativos online da Intel,<br />

que possui uma imensa variedade de softwares livres e<br />

comerciais para tablets, smartphones e netbooks.<br />

Se voce é mais uma entre tantas pessoas que desejam<br />

arduamente um tablet, ou um fã aficcionado do<br />

tablet que já possui, aproveite esta invasão!<br />

Boa leitura! ■<br />

Matérias de capa<br />

A guerra dos tablets 36<br />

Galáxia portátil 40<br />

Aplicativos em alta 43<br />

Android na bandeja 46


TUTORIAL | VoIP com Asterisk - parte VI<br />

Asterisk descomplicado<br />

TUTORIAL<br />

VoIP com<br />

Asterisk – parte VI<br />

O sistema telefônico ultrapassado, presente até pouco tempo atrás nas empresas, é prolífi co<br />

em cobranças: cada novo recurso ativado requer uma nova ativação de serviço, com o preço<br />

adicionado ao pagamento mensal. É hora de mudar. É hora de criar sua própria central VoIP.<br />

por Stefan Wintermeyer<br />

Na edição 76 da <strong>Linux</strong> <strong>Magazine</strong><br />

, apresentamos recursos<br />

como controle remoto, estacionamento<br />

de chamadas e temporização<br />

com includes. Nesta sexta<br />

parte do tutorial, vamos abordar o<br />

universo dos ISDNs. Mãos à obra!<br />

Beleza americana<br />

A conexão entre o ISDN ( Integrated<br />

Services Digital Network ou Rede<br />

Digital Integrada de Serviços) e o<br />

Asterisk não pode ser considerada<br />

um caso de amor. Considerando<br />

principalmente que o Asterisk é<br />

utilizado em linhas analógicas com<br />

cabos de cobre. E curiosamente aí<br />

está a origem do software. Ainda<br />

hoje a principal instalação do Asterisk,<br />

nos Estados Unidos, se dá em<br />

linhas analógicas. Isso esclarece porque,<br />

para esse grupo de usuários, a<br />

tecnologia VoIP significa, em geral,<br />

um grande salto de qualidade. Em<br />

muitos países europeus, pelo contrário,<br />

há mais de 20 anos, utiliza-se<br />

ISDN em larga escala, mesmo em<br />

pequenos escritórios.<br />

Analogamente, o novo sistema Asterisk<br />

deve ser conectado não apenas<br />

como VoIP, mas também com ISDN.<br />

Ele funciona tanto com placa ISDN,<br />

como através de um modem ISDN,<br />

conectado em uma entrada USB<br />

do computador, quanto como uma<br />

appliance ISDN-to-SIP. Vamos nos<br />

limitar neste momento à sua variante<br />

mais empregada, que corresponde<br />

à placas ISDN. Será útil o conhecimento<br />

acerca do padrão ISDN [1] ,<br />

e em particular sobre as diferenças<br />

entre BRI ( Basic Rate Interface ) e<br />

PRI ( Primary Rate Interface ).<br />

Placas ISDN entre<br />

10 e 1000 euros<br />

Infelizmente há tantas placas ISDN<br />

quanto areia no mar – placas PRI<br />

a preços exorbitantes e placas BRI<br />

com valores mais em conta, entre<br />

10 e 30 euros, em leilões de lojas virtuais.<br />

A questão sobre qual a melhor<br />

placa ISDN não é tão simples de<br />

se responder. Ainda mais levandose<br />

em conta que uma placa de 30<br />

euros de uma pequena loja pode<br />

ser tão boa quanto uma de 1000<br />

euros de um estabelecimento especializado.<br />

Entre tantos fabricantes,<br />

considera-se que o melhor produto<br />

se encontra em grandes lojas ou nas<br />

melhores embalagens.<br />

Uma diferença objetiva se encontra,<br />

certamente, no grau de dificuldade<br />

na instalação do driver.<br />

E a tendência é de que, quanto<br />

mais barata uma placa ISDN, mais<br />

demorada é a instalação. Produtos<br />

mais caros vêm geralmente com<br />

scripts de instalação relativamente<br />

melhores, baixados da Internet, que<br />

rapidamente atualizam e finalizam<br />

a instalação mesmo de versões mais<br />

antigas do Asterisk.<br />

52<br />

www.linuxmagazine.com.br


VoIP com Asterisk - parte VI | TUTORIAL<br />

Exemplo: a<br />

placa Digium<br />

Este artigo naturalmente não tem a<br />

pretensão de explicar o processo de<br />

instalação para todas as placas ISDN<br />

disponíveis no mercado. Como exemplo,<br />

vamos tratar da placa Digium<br />

B410P [2] , cujas quatro entradas<br />

ISDN satisfazem as necessidades de<br />

pequenos escritórios ou de usuários<br />

domésticos. A placa controla até<br />

mesmo o cancelamento de eco [3]<br />

do hardware, não sobrecarregando<br />

a CPU e proporcionando qualidade<br />

na compensação do eco ( quadro 1 ).<br />

Embora a Digium produza e<br />

revenda vários tipos de placas, não<br />

se pode dizer com certeza, se para<br />

cada atualização do Asterisk, será<br />

possível encontrar rapidamente um<br />

driver funcional. A oferta de atualizações,<br />

por parte da Digium, é o<br />

único caminho viável para que os<br />

administradores de sistema utilizem<br />

sempre uma nova versão do Asterisk.<br />

Compilando o Asterisk<br />

Nas primeiras partes desse tutorial, já<br />

tratamos da instalação do Asterisk. O<br />

funcionamento de uma placa ISDN<br />

demanda, contudo, um complicado<br />

trabalho de configuração. As instruções<br />

a seguir requerem um sistema<br />

Debian recém instalado como base.<br />

Atenção: a placa ISDN deve antes<br />

ser conectada ao computador.<br />

Acesse o sistema como usuário root<br />

e execute os comandos:<br />

apt-get update<br />

apt-get -y upgrade<br />

shutdown -r now<br />

Tenha certeza de que o sistema<br />

esteja funcionando com um kernel<br />

atualizado.<br />

Após reiniciar a máquina, entre<br />

novamente como usuário root e execute<br />

os pacotes necessários para a<br />

compilação ( listagem 1 , linha 1 ). Os<br />

comandos da segunda linha são usados<br />

para obter drivers atualizados de<br />

servidores da Digium. Em seguida,<br />

compile e instale os pacotes Zaptel<br />

( linhas 3 e 4 ). O último make executa<br />

o download do pacote MISDN e<br />

instala o driver para a placa ISDN.<br />

As linhas 5 e 6 compilam o servidor<br />

Asterisk. O make-config é executado<br />

em seguida, com o intuito de que o<br />

Debian seja configurado para carregar<br />

automaticamente o Asterisk no<br />

processo de inicialização.<br />

Placa ISDN<br />

configurada por script<br />

Para o reconhecimento de uma placa<br />

ISDN recém instalada, execute<br />

o script /usr/sbin/misdn-init scan .<br />

Será exibido algo como:<br />

[OK] found the following devices:<br />

card=1,0x4<br />

[ii] run “/usr/sbin/misdn-init<br />

config” to store this information<br />

to /etc/misdn-init.conf<br />

Caso o sistema tenha reconhecido<br />

corretamente a placa, é possível<br />

permitir que seja efetuada, com a<br />

execução do utilitário /usr/sbin/<br />

misdn-init config , a configuração<br />

automática dos dados no arquivo /<br />

etc/misdn-init.conf . A configuração<br />

da placa deve se restringir, neste<br />

passo, à seção intitulada Port settings<br />

. Nela, são listadas as opções<br />

disponíveis.<br />

Se você quiser que a placa funcione<br />

com um dispositivo multifuncional<br />

e que este esteja conectado<br />

à sua porta 1, deverá então constar<br />

na configuração a linha te_ptmp=1 .<br />

Caso deseje incluir na mesma porta,<br />

um aparelho de fax, deve-se retirar<br />

o caracter de comentário da linha<br />

option=1,master_clock . A última linha<br />

contém uma interrupção que<br />

designa um maior nível de depuração.<br />

Ela não causa problemas, então<br />

convém deixá-la como debug=1 .<br />

Em seguida, especifique no arquivo<br />

/etc/asterisk/misdn.conf , os<br />

dados do Asterisk para a porta. Deixe<br />

Quadro 1: Olá, eco!<br />

O problema do eco, uma característica<br />

da própria voz, é tão antigo<br />

quanto o telefone. Um circuito<br />

híbrido comparece quase sempre<br />

como uma causa em telefonia<br />

analógica. Nesse caso, o contato<br />

é feito com dois fi os bidirecionais,<br />

em vez de quatro, em que cada<br />

par se responsabilizaria por uma<br />

direção. E em um transporte de<br />

informações realizado com dois<br />

fi os, é comum que ocorra superposição<br />

– no caso, o fenômeno<br />

do eco. Uma pessoa pode perceber<br />

o eco, mas isso só acontece<br />

se ele for alto o sufi ciente e vier<br />

com certo atraso. Isso acontece<br />

porque cada pessoa ouve a própria<br />

voz e o cérebro, por conta de<br />

um sistema otimizado de cancelamento<br />

de eco.<br />

Normalmente, o sistema de telefonia<br />

seria responsável pelo cancelamento<br />

de eco do aparelho. Por ser o último<br />

na cadeia do sistema, geralmente<br />

deixa-se o problema por conta do<br />

Asterisk. Se ele é o único sistema de<br />

telefonia empregado – mesmo que<br />

se opere somente com dispositivos<br />

digitais –, deve-se resolver o problema<br />

por conta própria.<br />

No caso do Asterisk, o cancelamento<br />

de eco, tanto para placas<br />

ISDN quanto para placas analógicas,<br />

pode ser efetuado por meio de<br />

software, caso não haja suporte na<br />

própria placa. É preferível um cancelamento<br />

de eco executado pela<br />

própria placa, por ser um caminho<br />

mais fácil e também para não sobrecarregar<br />

a CPU. E, para a maioria<br />

das conversas simultâneas, o<br />

cancelamento via software é de fato<br />

o recurso mais conveniente.<br />

O desagradável é que o modo de<br />

confi guração varia de acordo com<br />

o fabricante. Com o Digium, a coisa<br />

é relativamente simples: um simples<br />

echocancel=yes resolve o problema.<br />

Para placas mais complicadas,<br />

torna-se necessário estudar o código<br />

de confi guração desta.<br />

O cancelamento de eco mediante<br />

software livre não é menos exigente.<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

53


TUTORIAL | VoIP com Asterisk - parte VI<br />

Listagem 1: Instalando os pacotes necessários<br />

TUTORIAL<br />

01 apt-get -y install build-essential libncurses5-dev libcurl3-dev libvorbis-dev libspeex-dev unixodbc<br />

unixodbc-dev libiksemel-dev linux-headers-`uname -r` flex bc pciutils libnewt-dev libusb-dev<br />

02 cd /usr/src && wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz && wget<br />

http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz && tar xvzf asterisk-1.4-current.tar.gz<br />

&& tar xvzf zaptel-1.4-current.tar.gz<br />

03 cd zaptel-1.4.8<br />

04 ./configure && make && make install && make b410p<br />

05 cd /usr/src/asterisk-1.4.17<br />

06 ./configure && make && make install && make samples && make config<br />

comentadas todas as linhas e entre,<br />

ao final, com os seguintes comandos:<br />

[isdn]<br />

ports=1<br />

context=from-isdn<br />

msns=*<br />

Nesse exato momento, reinicie<br />

o sistema com um shutdown -r now<br />

para testar se o Asterisk e os drivers<br />

da placa foram inicializados perfeitamente.<br />

Os quatro leds próximos<br />

à porta ISDN da placa devem se<br />

acender. Logo que o cabo for conectado<br />

à primeira porta ISDN,<br />

deve o seu led permanecer constantemente<br />

aceso.<br />

Olá, mundo ISDN!<br />

Após a configuração da placa, devemos<br />

testá-la com um “Olá, mundo!”,<br />

como descrito na listagem 2 . Quando<br />

qualquer sistema do tipo MSN<br />

executar uma chamada para essa<br />

conexão, o Asterisk será acionado,<br />

executará a frase “Olá, mundo!”, e<br />

fechará, em seguida, o programa.<br />

Listagem 2:<br />

extensions.conf<br />

01 [from-isdn]<br />

02 exten => _X.,1,Answer()<br />

03 exten =><br />

_X.,n,Playback(hello-world)<br />

04 exten => _X.,n,Wait(1)<br />

05 exten =><br />

_X.,n,SayDigits(${EXTEN})<br />

06 exten => _X.,n,Hangup()<br />

Para isso, será suficiente a seguinte<br />

entrada em seu arquivo de configurações<br />

extensions.conf :<br />

[from-isdn]<br />

exten => 1234567,1,Dial(SIP/2000)<br />

quando, por exemplo, você desejar<br />

que seu MSN receba as chamadas<br />

de seu telefone interno SIP.<br />

Caso você queira encaminhar<br />

todas as chamadas provenientes<br />

de telefones internos, no contexo<br />

[meu-telefone] , que apresenta um 0<br />

em seu começo, coloque a seguinte<br />

linha no arquivo ``/etc/asterisk/<br />

extensions.conf@:<br />

[meu-telefone]<br />

exten => _0X.,1,Dial(mISDN/<br />

g:isdn/${EXTEN:1})<br />

Observe que, para chamadas internacionais,<br />

deve-se remover o :1<br />

e substituí-lo por um zero. Com o<br />

zero, normalmente utilizado para<br />

identificar chamadas de telefones<br />

fixos, há, porém, um problema: a<br />

listagem de ligações de seu telefone.<br />

Receba uma chamada por meio<br />

de sua rede ISDN, indique corretamente<br />

o número da chamada em<br />

seu telefone SIP e o grave também<br />

em seu telefone. Ao tentar retornar<br />

a ligação por meio da lista de chamadas<br />

de seu telefone, ocorrerá uma<br />

falha. A seguinte entrada, em seu<br />

arquivo extensions.conf resolverá<br />

o problema:<br />

[from-isdn]<br />

exten => _X.,1,Set(CALLERID(num)<br />

=0${CALLERID(num)})<br />

exten => _X.,n,Dial(SIP/2000)<br />

Na próxima edição da <strong>Linux</strong> <strong>Magazine</strong><br />

, você irá conhecer o funcionamento<br />

dos telefones analógicos e<br />

também sobre como trabalhar com<br />

fax. Até lá! ■<br />

Mais informações<br />

[1] ISDN: http://de.wikipedia.<br />

org/wiki/Integrated_<br />

Services_Digital_Network<br />

[2] Digium B410P: http://www.<br />

digium.com/en/products/<br />

digital/b410p.php<br />

[3] Cancelamento de eco:<br />

http://en.wikipedia.org/<br />

wiki/Echo_cancellation<br />

Sobre o autor<br />

Stefan Wintermeyer é o autor do<br />

Livro do Asterisk, da editora Addisson<br />

Wesley e primeiro DCAP (Digium<br />

Certifi ed Asterisk Professional)<br />

alemão. Ele auxilia clientes, por<br />

meio da Amooma GmbH (http://<br />

www.amooma.de), a implementar soluções<br />

com Asterisk.<br />

Gostou do artigo?<br />

Queremos ouvir sua opinião.<br />

Fale conosco em<br />

cartas@linuxmagazine.com.brazine.com<br />

r<br />

Este artigo no nosso site:<br />

http://lnm.com.br/article/5050<br />

/505<br />

54<br />

www.linuxmagazine.com.br


NOVO GUIA DE TI<br />

VoIP com<br />

2011<br />

Asterisk - parte VI | TUTORIAL<br />

GUIA de TI 2011<br />

GUIAdeTI<br />

anuário 2011<br />

COMO REDUZIR CUSTOS<br />

E AUMENTAR A EFICIÊNCIA<br />

DO SEU NEGÓCIO<br />

CATÁLOGO<br />

COMPLETO<br />

de soluções<br />

para plataformas<br />

Open Source<br />

Cloud Computing,<br />

Computação Móvel,<br />

SOA, SaaS, Middleware,<br />

PMI: as tecnologias e tendências<br />

mais relevantes para o<br />

mercado de TI<br />

Desempenho <br />

Estabilidade <br />

Segurança <br />

Flexibilidade <br />

#03 2011<br />

<br />

R$ 79,90<br />

29,90<br />

<br />

WWW.GUIADETI.COM.BR<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

Catálogo de soluções<br />

Cloud Computing<br />

Computação móvel<br />

SAAS<br />

SOA<br />

PMI<br />

ITIL<br />

Middleware<br />

Segurança<br />

Todas as tecnologias e tendências mais<br />

relevantes para o mercado de TI.<br />

ADQUIRA O SEU<br />

NAS MELHORES BANCAS<br />

OU EM NOSSA LOJA VIRTUAL:<br />

LNM.COM.BR/SHOPPING<br />

55


Real versus virtual | ANÁLISE<br />

Realidade aumentada<br />

Real versus virtual<br />

A tecnologia da realidade aumentada,<br />

além de fascinar qualquer ser humano,<br />

é um assunto emergente. Neste artigo,<br />

veremos seus princípios básicos.<br />

por Alessandro de Oliveira Faria (Cabelo)<br />

ANÁLISE<br />

A<br />

tecnologia de realidade aumentada,<br />

é definida como a<br />

sobreposição, no ambiente<br />

real, de objetos virtuais e tridimensionais<br />

gerados por computador por<br />

meio de algum dispositivo tecnológico<br />

de videocaptura. Esta tecnologia<br />

disponibiliza uma interação<br />

sem necessidade de treinamento,<br />

pois o usuário pode trazer para o<br />

ambiente real os objetos virtuais,<br />

incrementando e aumentando a<br />

visão do mundo real. Isso somente<br />

é possível com técnicas de visão<br />

computacional juntamente com<br />

computação gráfica.<br />

Os objetos virtuais introduzidos<br />

no ambiente real podem ser manipulados<br />

com as próprias mãos, assim,<br />

proporcionando ao usuário uma interação<br />

inovadora e atrativa. Na figura<br />

1 , confira uma representação gráfica<br />

do recurso e interatividade com a<br />

tecnologia de realidade aumentada.<br />

Os principais recursos da tecnologia<br />

de realidade aumentada são:<br />

➧ Combinar elementos virtuais com<br />

o ambiente real.<br />

➧ Interatividade e processamento<br />

em tempo real<br />

➧ Ser concebida em três dimensões.<br />

Meu primeiro contato com realidade<br />

aumentada teve início em setembro<br />

de 2008, quando conheci o<br />

fantástico projeto Levelhead [1] criado<br />

pelo designer e programador Julian<br />

Oliver, o jogo open source é baseado<br />

em um cubo real que utiliza somente<br />

bibliotecas de visão computacional<br />

de código aberto para reproduzir o<br />

cubo virtual no monitor. Foi preciso<br />

um final de semana para baixar<br />

os códigos-fontes e compilá-los com<br />

todas as dependências. A jogabilidade<br />

resume-se a entrar e sair de portas<br />

utilizando memória e inteligência<br />

espacial, o que o levará para outros<br />

ambientes onde será necessário resolver<br />

alguns quebra-cabeças.<br />

ARToolKit<br />

Existem diversas bibliotecas e tecnologias<br />

tanto de código aberto, como<br />

proprietárias, para o uso de realidade<br />

aumentada (openCV, Bazar e outras).<br />

Entretanto, uma quantidade significativa<br />

de trabalhos de software livre são<br />

baseados ou derivados da biblioteca<br />

ARToolKit ( figura 2 ), uma biblioteca<br />

livre escrita em C, desenvolvida pelo<br />

Dr. Hirokazu Kato. Atualmente utilizada<br />

por pesquisadores do Laboratório<br />

Tecnológico de Interface Humana,<br />

na Universidade de Washington. A<br />

biblioteca surgiu com o objetivo de<br />

facilitar a construção de aplicações<br />

de realidade aumentada (RA), sendo<br />

assim, o seu funcionamento utiliza<br />

recursos de visão computacional<br />

e processamento de imagens para<br />

prover os recursos de RA.<br />

O que encanta nesta tecnologia, e<br />

a complexidade do desenvolvimento<br />

das aplicações, ou seja, calcular precisamente,<br />

em tempo real, o ponto<br />

de observação do usuário, para somente<br />

então projetar corretamente os<br />

objetos virtuais no mundo real. Este<br />

é o principal objetivo da biblioteca<br />

ARToolKit, rastrear rapidamente e<br />

calcular a posição real da câmera<br />

e de seus marcadores de referência<br />

possibilitando que o programador<br />

acrescente objetos virtuais sobre es-<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

63


ANÁLISE | Real versus virtual<br />

Figura 1: Esquema de funcionamento<br />

da realidade aumentada.<br />

tes marcadores no mundo real, sem<br />

sacrifícios nem magia negra.<br />

Para o perfeito funcionamento<br />

desta tecnologia, em primeiro lugar<br />

é preciso transformar o quadro<br />

capturado no video ao vivo, em<br />

uma imagem com valores binários<br />

e, somente então, examiná-la para<br />

encontrar regiões quadradas. Ao<br />

encontrar um quadrado, a imagem<br />

no seu interior é comparada com<br />

algumas imagens pré-cadastradas.<br />

Existindo uma similaridade suficiente<br />

com a imagem, utiliza-se o<br />

tamanho conhecido do quadrado<br />

e a orientação do padrão encontrado,<br />

para calcular a posição real da<br />

câmera em relação à posição real<br />

do marcador.<br />

Instalação da<br />

biblioteca ARToolkit<br />

Efetue o download da versão 2.72.1<br />

do código fonte do projeto no SourceForge<br />

[2] e d escompacte o pacote<br />

com o tradicional comando tar :<br />

$ tar -zxvf ARToolKit-2.72.1.tgz<br />

compilação na íntegra, execute o<br />

comando make .<br />

Se todos os passos foram concluídos<br />

com sucesso, entre no diretório<br />

/bin para testar os exemplos (sugiro<br />

o binário videoTest ). Antes crie a variável<br />

do ambiente ARTOOLKIT_CONFIG<br />

para definir as configuração do seu<br />

dispositivo de captura:<br />

$ export ARTOOLKIT_CONFIG=”v4l2src<br />

device=/dev/video0 use-fixedfps=false<br />

!<br />

ffmpegcolorspace ! capsfilter<br />

caps=video/x-raw- rgb,bpp=24,<br />

width=960,height=720 ! identity<br />

name=artoolkit ! fakesink”<br />

Se tudo estiver em perfeito funcionamento,<br />

será apresentado uma<br />

janela cujo conteúdo será o video<br />

ao vivo da sua webcam.<br />

Calibre seu dispositivo<br />

As propriedades padrão da biblioteca<br />

ARToolKit estão localizadas no<br />

arquivo de parâmetro do dispositivo<br />

de captura. Este arquivo é denominado<br />

camera_para.dat e encontra-se<br />

no diretório ARToolKit/bin/Data . O<br />

arquivo presente no projeto, apresenta<br />

um padrão que abrange um<br />

amplo conjunto de dispositivos de<br />

videocaptura. Porém, sugiro a calibragem<br />

da câmera conforme as<br />

instruções a seguir.<br />

Para iniciar o processo de calibragem,<br />

em primeiro lugar devemos<br />

imprimir os arquivos calib_cpara.<br />

pdf e calib_dist.pdf . O arquivo calib_cpara.pdf<br />

é uma grade de linha.<br />

Imprima este arquivo na escala onde<br />

preferencialmente as linhas fiquem<br />

separadas com uma distância exata<br />

de 40mm.<br />

O arquivo calib_dist.pdf possui<br />

uma matriz de 6x4 pontos e, como<br />

ilustrado no arquivo pdf anterior,<br />

também deverá ser impresso na escala<br />

onde as distâncias entre os pontos<br />

são exatamente 40mm. Ambos<br />

os arquivos deverão ser impressos<br />

em papel cartonado ou colados em<br />

superfícies não flexíveis.<br />

A calibragem do dispositivo de<br />

captura é obtida a partir das posições<br />

do ponto central, distorções da lente<br />

e da distância focal da câmera. Sendo<br />

assim, o binário calib_dist é utilizado<br />

para calcular o ponto central da<br />

imagem e a respectiva distorção da<br />

lente. De forma complementar, o<br />

programa calib_param calcula a distância<br />

focal da câmera. Como todo<br />

excelente trabalho de código aberto,<br />

os fontes estão disponíveis para estudo<br />

e aprendizado. Vale a pena mencionar<br />

que devemos primeiro executar<br />

o programa calib_dist para depois<br />

executar o calib_cparam .<br />

O primeiro passo é executar o<br />

calib_dist e logo em seguida posicionar<br />

a folha impressa (arquivo<br />

calib_dist.pdf ) de tal modo que to-<br />

Entre na pasta ARToolKit recém-criada<br />

e execute o comando<br />

./configure seguido das respostas<br />

( 5 ,n ,n ,) onde 5 representa a utilização<br />

da biblioteca GStreamer para acesso<br />

aos dispositivos de videocaptura, n<br />

caso o sistema operacional seja de<br />

64 bits, n novamente para não gerar<br />

informações de debug e y se estiver<br />

trabalhando com uma placa NVIDIA<br />

ou ATI. Finalmente, para iniciar a<br />

Figura 2: A biblioteca ARToolkit é uma das grandes responsáveis pelos<br />

calculos necessários ao projeto.<br />

64 www.linuxmagazine.com.br


Real versus virtual | ANÁLISE<br />

dos os pontos estejam visíveis. Então,<br />

clique com o botão esquerdo<br />

do mouse para congelar a imagem.<br />

Após o congelamento, pressione o<br />

botão esquerdo do mouse sobre a<br />

imagem e desenhe um retângulo<br />

em torno de todos os pontos da<br />

imagem (segurando o botão do<br />

mouse pressionado). Começando<br />

pelo ponto localizado no canto<br />

superior esquerdo da imagem e<br />

prossiga até que todos os pontos<br />

tenham sido desenhados. Repita<br />

este procedimento de 5 a 10 vezes<br />

em vários ângulos. Termine<br />

a operação pressionando o botão<br />

direito do mouse ou a tecla [ESC] .<br />

O programa começará a calcular<br />

os valores de distorção da câmera.<br />

Para se certificar dos parâmetros<br />

e cálculos da operação, pressione<br />

o botão esquerdo do mouse para<br />

mostrar as imagens capturadas,<br />

com as linhas vermelhas desenhadas,<br />

passando pelos pontos de<br />

calibragem. Se tudo estiver em<br />

pleno funcionamento, as linhas<br />

deverão se cruzar no centro de<br />

cada um destes pontos. Cada vez<br />

que o botão esquerdo do mouse é<br />

pressionado, a próxima imagem<br />

capturada é mostrada ( figura 3 ).<br />

Agora partiremos para o programa<br />

calib_cparam , que como mencionado<br />

anteriormente, é usado para encontrar<br />

a distância focal da câmera, além de<br />

outros parâmetros. Para continuarmos,<br />

execute o programa e informe<br />

as coordenadas do centro e o fator<br />

de distorção disponibilizado pelo<br />

aplicativo calib_dist .<br />

Coloque a impressão do arquivo<br />

calib_cpara.pdf diante da câmera de<br />

tal modo que a imagem fique o mais<br />

perpendicular possível ao eixo ótico<br />

da câmera. Nele também todas as<br />

linhas devem ser visualizadas.<br />

Basta pressionar o botão esquerdo<br />

do mouse para capturar a<br />

imagem. Logo a seguir será exibida<br />

uma linha branca horizontal<br />

na imagem. Movimente a linha<br />

branca até cobrir a linha preta no<br />

topo e pressione [ENTER] . A linha<br />

movimenta-se para cima ou<br />

para baixo ao utilizar as teclas de<br />

seta para cima ou para baixo. A<br />

linha pode ainda ser rotacionada<br />

no sentido horário e anti-horário<br />

usando-se as teclas de setas para a<br />

direita e para a esquerda. Repita<br />

esse processo com todas as linhas<br />

verticais e horizontais por 5 vezes.<br />

Ao terminar, informe o nome do<br />

arquivo ( figura 4 ).<br />

Para utilizar o arquivo de calibragem<br />

recém-criado, basta copiá-lo<br />

para a pasta Data com o nome camera_para.dat<br />

ou alterar no códigofonte<br />

a variável char *cparam_name .<br />

Agora, para testar o funcionamento<br />

da realidade aumentada, execute o<br />

programa simpleTest e veja o resultado<br />

ao apresentar o arquivo pattHiro.<br />

pdf impresso para a câmera.<br />

O aplicativo ExView exibe a visão<br />

externa da câmera e também projeta<br />

em tempo real seu movimento em 3<br />

dimensões. Para executar este aplicativo,<br />

digite o comando ./exview na<br />

pasta bin ( figura 5 ).<br />

Para trabalhar com outros padrões,<br />

utilize o programa mk_patt .<br />

Ao executá-lo, aponte o dispositivo<br />

de captura para o padrão e rotacione<br />

até os dois lados vermelho e verde<br />

aparecerem em torno do padrão.<br />

Os lados vermelhos do quadrado<br />

devem posicionar-se no topo e à<br />

esquerda do quadrado. Logo em<br />

seguida, clique no botão esquerdo<br />

do mouse e informe o nome do arquivo<br />

padrão.<br />

Motores de<br />

renderização<br />

Figura 3: As linhas vermelhas devem<br />

passar pelos pontos do<br />

arquivo impresso.<br />

Os motores de renderização são bibliotecas<br />

e componentes que facilitam<br />

a projeção em 3 dimensões de<br />

objetos ou cenários criados em editores<br />

tridimensionais (Blender, por<br />

exemplo). Embora o uso de motores<br />

de renderização não sejam obrigatoriamente<br />

necessário, facilitam (e<br />

muito) a vida do programador. Claro<br />

que nada impede o uso do OpenGL<br />

junto à biblioteca ARToolKit, Open-<br />

CV ou Bazar.<br />

A escolha do motor ( engine ) de<br />

renderização determinará o sucesso<br />

ou o fracasso do projeto. Pois, no<br />

que tange à visão computacional,<br />

todo processamento deve ser bem<br />

distribuído e projetado. Projetar<br />

objetos em 3 dimensões na web,<br />

em games ou apresentações, requer<br />

esforço computacional distinto. Por<br />

exemplo, um motor de renderização<br />

para games pode apresentar<br />

uma qualidade inferior, uma vez<br />

que existem outras tarefas matemáticas<br />

a serem cumpridas (efeitos<br />

abstratos como fogo e explosões resultantes<br />

de tiros). A seguir, listo 4<br />

entre os muitos motores de renderização<br />

existentes.<br />

Figura 4: O processo de calibragem,<br />

embora demorado, permite<br />

ao programa calcular a<br />

posição do objeto virtual<br />

em relação ao real.<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

65


ANÁLISE | Real versus virtual<br />

IrrAR [3]<br />

Motor de renderização multiplataforma,<br />

performático e de código<br />

aberto. Ideal para criação de jogos,<br />

pois é baseado na Irrlicht, que além<br />

de suportar arquivos do Quake, suporta<br />

outros diversos formatos. Este<br />

motor permite o processamento de<br />

efeitos abstratos como neve, fumaça,<br />

fogo, superfícies aquáticas e outros.<br />

Logo chegaremos a conclusão que<br />

ele utiliza grande parte do seu processamento<br />

com efeitos e sendo assim,<br />

talvez não proporcione uma renderização<br />

tão realista em tempo real.<br />

FLARToolkit [4]<br />

É um porte do código fonte da<br />

biblioteca ARToolKit para o Action<br />

Script 3.0 (Flash), feito pelo japonês<br />

Saqoosha sob licença livre. O projeto<br />

carrega todas os recursos do projeto<br />

em que se baseia: detecta movimento,<br />

reconhece uma determinada “marca”<br />

e projeta um cenário ou objeto 3D.<br />

Utiliza a renderização baseada no Papervision3D<br />

e movimenta os objetos<br />

de acordo com movimentos reais. Este<br />

motor não apresenta altíssima qualidade,<br />

pois foi projetado para ser executado<br />

no ambiente web (navegador);<br />

esta tecnologia deve estar preparada<br />

para qualquer tipo de equipamento e<br />

velocidade de conexão [5] .<br />

AndAR<br />

É um projeto que tenho orgulho<br />

de divulgar, pois foi devido a minha<br />

solicitação e contato com o autor, que<br />

este, abriu seu código fonte. AndAR<br />

é um projeto também baseado na<br />

biblioteca ARToolKit. Mesmo criado<br />

para equipamentos portáteis, apresenta<br />

um excelente desempenho. O autor<br />

projetou com excelência a abstração<br />

da biblioteca com JNI e assim, escreveu<br />

muito bem o software.<br />

osgART [6]<br />

A biblioteca osgART facilita o<br />

desenvolvimento de aplicativos de<br />

realidade aumentada. Ela agrupa as<br />

funções de detecção e rastreamento<br />

de marcadores do ARToolKit junto aos<br />

recursos de construção de modelos<br />

virtuais da biblioteca OpenScene-<br />

Graph. A OSGART apresenta alta<br />

qualidade na renderização dos objetos<br />

virtuais, suporte à reprodução de<br />

video e técnicas de renderização de<br />

sombras. Um boa escolha para aplicativos<br />

voltados para apresentações.<br />

Utilizando a osgART<br />

Como seria muito extenso detalhar<br />

a instalação e utilização de todas as<br />

tecnologias mencionadas nesse texto,<br />

decidi explicar a biblioteca osgART<br />

pelo fato de demonstrar excelente<br />

qualidade de renderização. Sendo<br />

assim, para iniciar o trabalho, devemos<br />

primeiramente baixar, compilar<br />

e instalar o pacote OpenSceneGraph.<br />

O artigo toma como referência a<br />

versão 1.2, porém, não é obrigatório<br />

o uso desta. O principal motivo da<br />

utilização dessa versão é somente<br />

manter a compatibilidade com os<br />

estudos do projeto Levelhead, e<br />

também obedecer à versão requerida<br />

para a biblioteca osgART. Para<br />

iniciar, faça o download no link<br />

http://www.artoolworks.com/dist/<br />

osgart/release/1.0/osgART-1.0.tar.<br />

bz2 e em seguida execute:<br />

$ tar-xfzj osgART-x.x.tar.bz2<br />

$ cd osgART/bin<br />

Agora compile a biblioteca substituindo<br />

o trecho abaixo pela localização<br />

do ARToolKit como parâmetro<br />

do comando make .<br />

$ make -f GNUmakefile ARTOOLKIT_<br />

PATH=”[path da biblioteca<br />

ARToolKit]”<br />

Figura 5: Se tudo for feito corretamente,<br />

o ExView exibirá um<br />

cubo como o visto acima.<br />

E os modelos 3D? O pacote<br />

osgExport é um plugin do Blender<br />

que exporta os modelos desejados<br />

para o formato osg ( figura 6 ).<br />

Esse plugin, é um módulo escrito<br />

em Python e pode ser obtido na<br />

página oficial do software [7] ou<br />

para os usuários openSUSE, disponibilizo<br />

um rpm no meu repositório<br />

[8] . Se resolver efetuar o<br />

download na pagina oficial, basta<br />

salvar o arquivo osgexport-2.42.py<br />

no diretório [local-do-blender]/<br />

blender/.blender/scripts .<br />

Em seguida, abra o modelo que<br />

deseja exportar e clique em File/<br />

Export/OpenSceneGraph (.OSG) .<br />

Será exibida uma janela de diálogo<br />

onde devemos informar a localização<br />

completa do arquivo a ser salvo<br />

e clique no botão Export . Utilize o<br />

programa osgconv que acompanha o<br />

pacote OpenSceneGraph compilado<br />

e instalado anteriormente, para converter<br />

o arquivo .osg para .ive . Esta<br />

extensão é apenas a versão binária<br />

do arquivo .osg . Vale a pena mencionar,<br />

que para conferir o arquivo<br />

.osg , podemos utilizar o programa<br />

osgview que também pertence ao<br />

pacote OpenSceneGraph.<br />

Agora, finalmente veremos o resultado<br />

de todo este trabalho: entre<br />

no diredório bin do projeto recémcompilado<br />

osgART e execute o programa<br />

osgARTsimpleNPR usando como<br />

parâmetro seu arquivo .ive e o tamanho<br />

e a posição (X Y Z). Lembre-se<br />

que a variável ambiental ARTOOLKIT_<br />

CONFIG deve existir com as devidas<br />

configurações, conforme mencionado<br />

anteriormente.<br />

./osgart_example models/<br />

cubo-neti.ive 80 0 0 5<br />

Divirta-se vendo o seu objeto ganhar<br />

vida na tela do seu computador! ■<br />

66 www.linuxmagazine.com.br


Real versus virtual | ANÁLISE<br />

Figura 6: O osgEXPORT permite que você exporte objetos do Blender para<br />

utilizá-los em seus projetos de realidade aumentada.<br />

Mais informações<br />

[1] Projeto Levelhead: http://selectparks.net/~julian/levelhead/<br />

[2] ARToolkit: http://sourceforge.net/projects/artoolkit/<br />

[3] IrrAR: http://sourceforge.net/projects/irrar/<br />

[4] FLARToolkit: http://saqoosha.net/category/flash/flartoolkit/<br />

[5] Teste do FLARToolkit: http://www.netitec.com.br/alessandro/ra<br />

[6] OSGART: http://osgart.org/<br />

[7] osgEXPORT: http://projects.blender.org/projects/osgexport/<br />

[8] Repositório openSUSE do Cabelo: http://download.<br />

opensuse.org/repositories/home:/cabelo:/osgexport/<br />

Sobre o autor<br />

Alessandro Faria é sócio-proprietário da NETi TECNOLOGIA, fundada em Junho de 1996<br />

(http://www.netitec.com.br) e especializada em desenvolvimento de software e soluções<br />

biométricas. Consultor Biométrico na tecnologia de reconhecimento facial, atuando na área de<br />

tecnologia desde 1986. Leva o <strong>Linux</strong> a sério desde 1998 com desenvolvimento de soluções opensource,<br />

é membro colaborador da comunidade Viva O <strong>Linux</strong> e mantenedor da biblioteca opensource<br />

de vídeo captura, entre outros projetos.<br />

Gostou do artigo?<br />

Queremos ouvir sua opinião.<br />

Fale conosco em<br />

cartas@linuxmagazine.com.br<br />

Este artigo no nosso site:<br />

http://lnm.com.br/article/5049<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

67


ANÁLISE | Visão de raio-x<br />

Listagem de hardware<br />

ANÁLISE<br />

Visão de raio-x<br />

Que componentes fazem parte de seu<br />

computador? A ferramenta lshw revela detalhes<br />

do hardware que você talvez não encontre<br />

nem mesmo na especifi cação do fabricante.<br />

por Karsten Günther<br />

Qualquer tipo de hardware<br />

detectado pelo kernel e seus<br />

módulos deixarão traços nos<br />

arquivos de log ou nos<br />

pseudo arquivos de sistemas /proc e<br />

/sys. Obter essas informações manualmente<br />

pode ser um processo<br />

que tomará muito tempo; sendo<br />

assim, algumas distribuições tentaram<br />

– com sucesso variado – tirar<br />

esse ônus dos ombros dos usuários.<br />

Em contraste a essas ferramentas, o<br />

lshw [1] trabalha bem em qualquer<br />

plataforma e exibe os resultados de<br />

uma forma inteligente.<br />

O nome lshw é o acrônimo para<br />

list hardware (listar hardware) e o<br />

aplicativo descobre todos os detalhes<br />

dos componentes do hardware,<br />

como CPU, módulos de memória ou<br />

interfaces IDE, que podem incluir<br />

placas de som, placas gráficas ou<br />

drives externos. A ferramenta pode<br />

ser executada em linha de comando<br />

e você precisará configurar algumas<br />

opções para controlá-la ( tabela 1 ).<br />

O primeiro grupo de opções controla<br />

o formato da saída. Por padrão,<br />

as saídas do lshw são em texto plano<br />

para um terminal, a partir do qual é<br />

Figura 1 A interface gráfi ca lshw-gtk facilita o acesso à árvore de informações;<br />

no entanto, esta não oferece suporte a todas as opções<br />

que estão disponíveis na ferramenta em linha de comando.<br />

inicializado ( listagem 1 ), o que é prático<br />

se você precisar arquivar a saída<br />

ou processá-la automaticamente (por<br />

exemplo, filtrar e processar as linhas<br />

de saída: lshw … | grep size …).<br />

A opção -xml fornece um completo<br />

e interessante documentado<br />

formatado em XML, que é útil para<br />

arquivamento em base de dados. Páginas<br />

HTML são preferíveis se você<br />

precisa de uma saída que seja mais<br />

amigável para leitura, sendo assim,<br />

a opção -html (em minúsculo) deve<br />

ser usada, nesse caso. O parâmetro<br />

-X inicializa uma interface gráfica.<br />

Para uma rápida visão geral, em<br />

vez das incrivelmente detalhadas<br />

informações que o lshw exibe por<br />

padrão, você pode usar as opções<br />

-businfo e -short.<br />

Detalhes<br />

Sem privilégios de root , o lshw tem apenas<br />

acesso limitado as informações do<br />

sistema, então a saída de dados é igualmente<br />

pobre e deixa de exibir muitos<br />

detalhes importantes. Normalmente,<br />

você irá notar que será necessário<br />

alterar seu acesso para o usuário root<br />

( sudo lshw ) para executar o comando.<br />

68 www.linuxmagazine.com.br


Visão de raio-X | ANÁLISE<br />

Opção<br />

-html<br />

-xml<br />

-short<br />

-businfo<br />

Descrição<br />

Gera saída em HTML<br />

Gera saída em XML<br />

Exibe um pequeno sumário<br />

Gera saída com informações de barramento<br />

-X Usa a interface gráfi ca<br />

Ação<br />

-c, -C, -class class<br />

-disable test<br />

-enable test<br />

-quiet<br />

-sanitize<br />

-numeric<br />

Descrição<br />

Tabela 1 Opções importantes do lshw<br />

Exibe informações de classe<br />

Não executa testes<br />

Executa testes<br />

Esconde a barra de status<br />

Esconde informações confi denciais<br />

Exibe Ids numéricos<br />

Classe<br />

address<br />

bridge<br />

bus<br />

communication<br />

disk<br />

display<br />

generic<br />

input<br />

memory<br />

multimedia<br />

network<br />

power<br />

printer<br />

processor<br />

storage<br />

system<br />

tape<br />

volume<br />

Tabela 2 Classes<br />

Descrição<br />

As várias opções permitem que<br />

você modifique a saída para refletir<br />

suas necessidades. Para fazer isso,<br />

use classes ( tabela 2 ) e execute alguns<br />

testes ( tabela 3 ).<br />

A opção -sanitize diz ao lshw para<br />

substituir informações confidenciais<br />

(como números seriais e endereços<br />

IP) pela string [REMOVED] , ou removido,<br />

em português. Essa opção será<br />

util se você quiser passar informações<br />

para um terceiro, como por exemplo,<br />

se você precisa fazer uma pergunta<br />

em um fórum.<br />

A opção -quiet evita que o lshw<br />

envie a saída da classe que ele está<br />

testando no momento para o terminal<br />

e a opção -numeric faz exatamente o<br />

contrário: ela exibe os IDs númericos<br />

de dispositivos PCI, USB e outros.<br />

O utilitário lshw exibe a saída para<br />

classes individuais em uma estrutura<br />

de árvore. Os “nós” são marcados<br />

com uma das quatro palavras-chaves:<br />

➧ CLAIMED – (solicitado ou reclamado):<br />

um driver adequado existe<br />

e está carregado (o lshw frequentemente<br />

exibe a informação para isso<br />

diretamente).<br />

➧ UNCLAIMED – (não solicitado<br />

ou não reclamado): classes para<br />

as quais (atualmente) não existem<br />

drivers.<br />

➧ ENABLE – (habilitado): classes<br />

com drivers totalmente operacionais<br />

(o lshw requentemente exibe a<br />

informação para isso diretamente).<br />

➧ DISABLE – (desabilitado): existe<br />

um problema com o driver.<br />

Para interpretar os detalhes, você<br />

precisa que as saídas das seções size<br />

(tamanho) e capacity (capacidade)<br />

dependem da classe. Elas diferem dependendo<br />

se você estiver analisando<br />

uma CPU ou dispositivo de armazenamento<br />

( storage ). A palavras-chave<br />

serial está relacionada aos números<br />

seriais dos dispositivos como discos<br />

rígidos, chips de memória, processadores<br />

ou placas-mãe. Ela exibe o<br />

endereço MAC para dispositivos de<br />

rede e o GUID (identificador único)<br />

das partições.<br />

Discos rígidos com múltiplas partições<br />

lógicas aparecem várias vezes:<br />

como partições lógicas e nas partições<br />

estendidas que as contém. O<br />

lshw resume os recursos das classes<br />

na opção capabilities (recursos);<br />

novamente aqui a interpretação depende<br />

do tipo de dispositivo.<br />

Interface gráfica<br />

Uma interface gráfica está disponível<br />

para o lshw , chamada de lshw-gtk .<br />

Para inicializar a interface gráfica<br />

diretamente, digite seu nome ou<br />

inclua a opção -X no lshw . Uma visualização<br />

gráfica, em formato de<br />

árvore, das informações coletadas<br />

pelo lshw é o resultado exibido. A<br />

informação está aninhada em três<br />

camadas e um clique duplo leva<br />

você a próxima camada.<br />

Esse processo somente funciona<br />

para os itens exibidos em negrito, na<br />

tela, que é a forma que o lshw utiliza<br />

para indicar que o item subordinado<br />

existe. A esquerda, a janela exibe as<br />

informações. A interface gráfica não<br />

Endereços de memória para extensões de memória de vídeo ou ROM<br />

PCI-to-PCI, AGP, PCMCIA<br />

Barramentos, sem nenhum hardware conectado<br />

Modem e porta serial<br />

Drivers (incluindo fíicos)<br />

Componentes gráfi cos (sem o display)<br />

Outros componentes<br />

Teclados, mouses e joysticks<br />

RAM, BIOS e fi rmware<br />

Som, TV e placas de vídeo<br />

Bluetooth, Ethernet, FDDI e WLAN<br />

Baterias e fontes de energia<br />

Impressoras e e dispositivos multifuncionais<br />

Controladora de CPU e RAID<br />

Controladora IDE e SCSI<br />

Tipo de sistema: Laptop, Desktop, Servidor ou Computador<br />

Dispositivos DAT/DDS<br />

Sistemas de arquivos e partições<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

69


ANÁLISE | Visão de raio-x<br />

Listagem 1: Comando lshw<br />

01 # lshw<br />

02 ...<br />

03 *-multimedia<br />

04 description: Audio device<br />

05 product: Azalia Audio<br />

Controller<br />

06 vendor: Silicon Integrated<br />

Systems [SiS]<br />

07 physical id: f<br />

08 bus info: pci@0000:00:0f.0<br />

09 version: 00<br />

10 width: 32 bits<br />

11 clock: 33MHz<br />

12 capabilities: pm<br />

bus_master cap_list<br />

13 configuration: driver=HDA<br />

Intel latency=0<br />

maxlatency=11 mingnt=52<br />

14 resources: irq:18<br />

memory:d4200000-d4203fff<br />

15 ...<br />

16 *-usb:1<br />

17 description: USB Controller<br />

18 product: USB 1.1 Controller<br />

19 vendor: Silicon<br />

Integrated Systems [SiS]<br />

20 physical id: 3.1<br />

21 bus info: pci@0000:00:03.1<br />

22 version: 0f<br />

23 width: 32 bits<br />

24 clock: 33MHz<br />

25 capabilities: bus_master<br />

26 configuration:<br />

driver=ohci_hcd latency=32<br />

maxlatency=80<br />

27 resources: irq:21<br />

memory:d4205000-d4205fff<br />

28 *-usb:2<br />

29 description: USB Controller<br />

30 product: USB 2.0 Controller<br />

31 vendor: Silicon Integrated<br />

Systems [SiS]<br />

32 physical id: 3.3<br />

33 bus info: pci@0000:00:03.3<br />

34 version: 00<br />

35 width: 32 bits<br />

36 clock: 33MHz<br />

37 capabilities: pm debug bus_<br />

master cap_list<br />

38 configuration: driver=ehci_<br />

hcd latency=32<br />

maxlatency=80<br />

39 resources: irq:22<br />

memory:d4206000-d4206fff<br />

40 ...<br />

Teste<br />

cpuid<br />

cpuinfo<br />

device-tree<br />

dmi<br />

ide<br />

isapnp<br />

pci<br />

pcmcia<br />

memory<br />

network<br />

scsi<br />

Descrição<br />

Analisa o ID da CPU<br />

Dados da CPU<br />

suporta todos as opções de linha de<br />

comando e você precisa testar para<br />

localizar entradas específicas.<br />

Conclusão<br />

Com algum conhecimento básico de<br />

hardware e um pouco de paciência,<br />

o lshw acaba sendo uma ferramenta<br />

útil, pois possui controles simples. O<br />

usuário tem acesso a uma quantidade<br />

enorme de informações sobre o<br />

hardware utilizado na máquina local<br />

e, em alguns casos, o utilitário revela<br />

informações que as especificações do<br />

fabricante deixaram de mencionar.<br />

Além disso, ter uma boa conexão<br />

de Internet é aconselhável para que<br />

você possa usá-la para preencher as<br />

lacunas, mas o lshw já inclui uma<br />

generosa documentação de ajuda<br />

feita por especialistas, em suas saídas.<br />

O acesso a interface gráfica é fácil<br />

em um primeiro momento, mas, se<br />

depois você precisar executar a ferramenta<br />

em múltiplas máquinas,<br />

descobrirá que a linha de comando<br />

oferece uma abordagem mais elegante<br />

e completa.<br />

Depois de conectar um novo hardware,<br />

a detecção com o lshw rapidamente<br />

criará uma nova entrada em<br />

sua base de dados de informações de<br />

hardware, que não poderia ter sido<br />

criada se o mesmo tivesse falhado.<br />

Árvore de dispositivos OpenFirmware (PowerPC)<br />

Extensões DMI/SMBIOS<br />

Dispositivos legados IDE e ATAPI<br />

Extensões ISA PnP<br />

Dispositivos PCI e AGP<br />

Extensões de cartão PCMCIA e PC<br />

Quantidade de memória heurética<br />

Interfaces de rede<br />

Dispositivos SCSI reais e simulados<br />

spd Detecção de presença de dispositivo serial [2]<br />

usb<br />

Tabela 3 Testes<br />

Todos os dispositivos USB<br />

O programa apenas mostrará o que<br />

o hardware revela sobre si próprio,<br />

sendo assim, os dados nem sempre<br />

estarão completos. No caso da placa<br />

ATI Radeon X1600, usada na máquina<br />

em meu laboratório, por exemplo, o<br />

lshw informou os dados corretos do<br />

produto para a porta padrão, mas<br />

somente a observação ATI Technologies<br />

Inc , ou seja, o nome do fabricante,<br />

para a segunda. Novamente,<br />

você precisa interpretar os detalhes<br />

corretamente se quiser obter resultados<br />

significativos. ■<br />

Mais informações<br />

[1] Website do lshw: http://<br />

ezix.org/project/<br />

wiki/HardwareLiSter<br />

[2] Detecção de presença de<br />

dispositivo serial: http://<br />

en.wikipedia.org/wiki/<br />

Serial_presence_detect<br />

Gostou do artigo?<br />

Queremos ouvir sua opinião.<br />

Fale conosco em<br />

cartas@linuxmagazine.com.br<br />

Este artigo no nosso site:<br />

http://lnm.com.br/article/5037<br />

70 www.linuxmagazine.com.br


Visão de raio-X | ANÁLISE<br />

Tem novidade na Coleção Academy!<br />

Principais comandos de configuração<br />

de um roteador Cisco<br />

Temas e configurações avançadas<br />

Segurança, dicas, truques<br />

e resolução de problemas<br />

Em março de 2010, a Cisco apresentou a plataforma de roteadores CRS-3, alegadamente a mais veloz do mundo<br />

(por enquanto), com um poder de processamento de 322 Terabits por segundo (Tbps).<br />

Este é o tipo de tecnologia que é desenvolvida a cada minuto, e que nos permite usufruir de ferramentas como<br />

áudio e vídeos online, transmissão de televisão via Internet, computação em nuvens, e tantas outras.<br />

Conhecer como funciona um roteador – peça chave no processo de transmissão de dados de um ponto a outro<br />

– e saber como configurá-lo para que desempenhe sua função com eficiência pode ser um grande diferencial na<br />

hora de lançar-se ao mercado em busca de um novo desafio. A demanda por profissionais com este conhecimento<br />

já está aí. O desafio agora é preparar-se adequadamente para supri-la. Este livro tem por objetivo apresentar<br />

ao leitor comandos e técnicas de configuração básica de roteadores Cisco visando atingir alguns objetivos<br />

específicos, tornando o profissional apto a instalar e configurar um roteador de maneira clara e precisa.<br />

Disponível no site www.<strong>Linux</strong><strong>Magazine</strong>.com.br<br />

<strong>Linux</strong> <strong>Magazine</strong> #<strong>77</strong> | Abril de 2011<br />

71


SERVIÇOS<br />

Calendário de eventos<br />

Evento Data Local Informações<br />

Web Security Forum 09 e 10 de abril São Paulo, SP<br />

Seminário de<br />

Cloud Computing<br />

www.websecforum.com.br/<br />

evento/<br />

13 de abril São Paulo, SP www.ideti.com.br/cloud/<br />

8º CONTECSI 1 a 3 de junho São Paulo, SP<br />

<strong>Linux</strong>Con Brasil 2011<br />

17 e 18 de<br />

novembro<br />

São Paulo, SP<br />

http://www.tecsi.fea.usp.br/<br />

eventos/contecsi/<br />

http://events.linuxfoundation.<br />

org/events/linuxcon-brazil<br />

Índice de anunciantes<br />

Empresa<br />

Pág.<br />

Tecla 02<br />

Plusserver 04, 05<br />

Canonical 09<br />

Othos 11<br />

Central Server 13<br />

UOL Host 15<br />

WatchGuard 17<br />

Globo.com 20, 21<br />

Zarafa 23<br />

Unodata 25<br />

Impacta 31<br />

Konsultex 33<br />

Senac 51<br />

F13 67<br />

Bull 83<br />

Sony 84<br />

Nerdson – Os quadrinhos mensais da <strong>Linux</strong> <strong>Magazine</strong><br />

80<br />

www.linuxmagazine.com.br


O Shell Script<br />

continua presente na<br />

rotina de nove entre<br />

dez administradores<br />

de sistemas.<br />

Mas qualquer um<br />

também pode<br />

beneficiar-se<br />

de seu poder.<br />

<strong>Linux</strong> <strong>Magazine</strong> Especial<br />

Shell Script<br />

CHMOD<br />

SSH<br />

Rsync<br />

PASSWD<br />

Ifconfig<br />

Yum<br />

Cron<br />

Su/Sudo<br />

Wireless<br />

Aprenda a usar o<br />

terminal de maneira<br />

fácil e descomplicada.<br />

Adquira o seu<br />

exemplar nas bancas<br />

de todo o país<br />

ou pelo site da<br />

<strong>Linux</strong> <strong>Magazine</strong>.<br />

w w w . L i n u x M a g a z i n e . c o m . b r


<strong>Linux</strong> <strong>Magazine</strong> #78<br />

PREVIEW<br />

Segurança<br />

O que você pode fazer para proteger<br />

seus dados, sua conexão e seu computador<br />

contra invasões?<br />

A detecção de invasão em sua rede ou<br />

sistemas, a formulação de testes específicos<br />

e políticas internas para prevenção<br />

de ataques e o gerenciamento<br />

de informações críticas que devem ser<br />

mantidas em segurança, são os destaques<br />

desta edição. ■<br />

Ubuntu User #22<br />

Ubuntu 11.04<br />

O novo Ubuntu 11.04, codinome Natty<br />

Narwhal, está saindo do forno. Muitas<br />

mudanças são esperadas e previstas para<br />

este lançamento. Entre elas, podemos<br />

destacar o novo modo de organização<br />

da área de trabalho, que agora utiliza<br />

o Unity, interface de usuário padrão<br />

adotada pela versão 10.10 para netbooks,<br />

embora o Gnome continue ativo e funcional<br />

no sistema. Os recursos multitouch<br />

também vêm aperfeiçoados e com<br />

muitas novidades.<br />

82 www.linuxmagazine.com.br

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!