Community Edition 77 - Linux Magazine Online
Community Edition 77 - Linux Magazine Online
Community Edition 77 - Linux Magazine Online
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