100
WWW.LINUXMAGAZINE.COM.BR O fim das limitações, perca o medo do fsck SISTEMAS DE ARQUIVOS Ext 3, ReiserFS, XFS, JFS Testes comparativos de desempenho 7x mais rápido: turbine seu HD Ferramentas indispensáveis Criptografia de bolso 9 771806 942009 00002 Linux Magazine R$12,90 Edição Número 2 Setembro 2004 Veja também: Crie um repositório Debian Personalize o Kurumin Testamos o PlanMaker Analisamos o Slackware 10 Lua: a linguagem de outro mundo BitTorrent Acelere a distribuição de seu software sem gastar mais com isso LPRng Aprenda a configurar este servidor de impressão NÚMERO 2 CD Número 2 Setembro 2004 CD Número 2 Setembro 2004 Aviso: Este CD-ROM da Linux Magazine foi testado extensivamente e até onde pudemos verificar se encontra livre de qualquer vírus ou outro tipo de soft- ware de conteúdo malicioso, bem co- mo de defeitos. A Linux Magazine não se responsabiliza por qualquer dano ou perda de dados que advenha da u- tilização deste CD-ROM ou de software nele incluído. Fabr icadopor B andeira ntes – Artes GráficaseEditora Sesil Ltda. – Indústria B rasileira –CNPJ 57.690.77 1/00 01-52 V e m c o m C D !

Linux Magazine BR 2

  • Upload
    -

  • View
    404

  • Download
    20

Embed Size (px)

DESCRIPTION

Linux Magazine BR 2

Citation preview

Page 1: Linux Magazine BR 2

WWW.L INUXMAGAZ INE .COM.BR

O fim das limitações, perca o medo do fsck

SISTEMAS DE ARQUIVOSExt 3, ReiserFS, XFS, JFSTestes comparativos de desempenho7x mais rápido: turbine seu HDFerramentas indispensáveisCriptografia de bolso

9 771806 942009

0 0 0 0 2

Linux Magazine R$12,90Edição Número 2 Setembro 2004

ME

RO

2L

INU

X M

AG

AZ

INE

Sis

tem

as d

e A

rqu

ivo

sB

itTo

rre

nt

L

PR

ng

R

ep

osit

óri

os D

eb

ian

K

uru

min

P

lan

Ma

ke

r

Sla

ck

wa

re 1

0

Lu

a

Veja também:

Crie um repositório DebianPersonalize o KuruminTestamos o PlanMakerAnalisamos o Slackware 10Lua: a linguagem de outro mundo

BitTorrentAcelere a distribuição de seu softwaresem gastar mais com isso

LPRngAprenda a configurareste servidor de impressão

NÚMERO 2

CD Número 2Setembro 2004

CD Número 2Setembro 2004

Aviso: Este CD-ROM da Linux Magazinefoi testado extensivamente e até ondepudemos verificar se encontra livre dequalquer vírus ou outro tipo de soft-ware de conteúdo malicioso, bem co-mo de defeitos. A Linux Magazine nãose responsabiliza por qualquer dano ouperda de dados que advenha da u-tilização deste CD-ROM ou de softwarenele incluído.

Fabricado por Bandeirantes – Artes Gráficas e Editora Sesil Ltda. – Indústria Brasileira – CNPJ 57.690.771/0

001-52

VVeemm ccoomm CCDD!!

capa_02 9/21/04 7:47 PM Page 1

Page 2: Linux Magazine BR 2

capa_02 9/21/04 7:47 PM Page 2

Page 3: Linux Magazine BR 2

EDITORIALBem-vindo

3Setembro 2004www.linuxmagazine.com.br

Recentemente, emdiálogos esparsosentre alguns mem-bros da redaçãoda Linux Magazi-ne, bem como emconversas com re-presentantes da

indústria e do mercado de TI e com acomunidade, o tema da qualidade dosoftware de código aberto e livre tornou-se uma constante.

Em um momento em que o modelo deexploração comercial de software mostravisíveis sinais de cansaço, a maioriamaciça das grandes empresas que atuamna área de tecnologia de informação,seja oferecendo produtos, seja prestandoserviços, estão adotando ou desenvol-vendo, se não no todo, pelo menos emparte, sistemas baseados em software decódigo aberto, no intuito de reduzir cus-tos de produção e desenvolvimento, bemcomo de aumentar a segurança, a quali-dade, a compatibilidade e a auditabili-dade de seus produtos. Alcatel, AMD,AOL, Apple, Borland, Cisco Systems,Computer Associates, Corel, Cyclades,Dell, EMC, Ericsson, Fujistu, Google,Hewlett-Packard, Hitachi, IBM, Intel,Mitsubishi Electric, Motorola, NASA,NEC Corporation, Nokia, Novell, NTT,Oracle, Real Networks, Samsung, SAP,Sharp, Siemens, Silicon Graphics, Sony,Sun Microsystems, Toshiba, Transmeta,VIA Technologies, Yahoo, … a lista seestende quase que indefinidamente.

Questões sobre a viabilidade do mo-delo econômico em torno do softwarelivre, levantadas com freqüência no pas-sado, tornaram-se mais raras devido àmaturidade dos sistemas de códigoaberto. O Linux desponta como exemplomais notório das possibilidades produzi-das por este modelo. Disponível para (nomínimo) quinze arquiteturas e presenteem equipamentos que vão desde PDAsaté mainframes, o espaço conquistadopelo pingüim aumenta a cada dia.

Mas existem outros exemplos, como oOpenOffice.org, o pacote de programaspara escritório multi-plataforma de có-digo aberto, que conquista cada vezmais espaço em empresas, instituiçõesgovernamentais e em máquinas de usu-ários domésticos. Temos também o nave-gador Mozilla, o servidor web Apache (omais usado no mundo), diversos servi-dores de e-mail (Sendmail, Postfix,Exim, Qmail, …), dúzias (literalmente)de ambientes desktop, sistemas ERP eCRM (tais como Compiere, SQL-Ledger eGNU Enterprise), além de várias solu-ções groupware (OpenGroupware, Kolab,OPEN-XCHANGE, phpGroupware, entreoutros), gerenciadores de bancos dedados relacionais (PostgreSQL, MySQL,Firebird, Ingres, MaxDB – ex-SAP DB,HSQLDB, Cloudscape) e centenas deoutros aplicativos.

Recentemente, o Gartner Group previuque, a partir de 2007, as empresas desen-volvedoras de software para UNIX encer-rarão paulatinamente o suporte aosUNIX tradicionais e passarão a oferecê-losomente para Linux.

Com isso, a polarização entre o soft-ware de código aberto e o software pro-prietário de código fechado vai se acirrar.A grande batalha que já atingiu o mer-cado de servidores vai invadir o desktopcorporativo e acabar na casa do usuáriodoméstico. Os grandes projetos de códi-go aberto e livre já atingiram níveis deexcelência excepcionais, que atendemperfeitamente a todas as necessidades naempresa ou na sua casa. Só falta a malhade serviços e produtos em torno delesatingir o mesmo nível de excelência.

No âmbito corporativo, a implemen-tação de soluções baseadas em softwarede código aberto não pode prescindir dametodologia e profissionalidade duranteo processo de desenvolvimento do pro-jeto, da mesma forma que ocorre quandograndes corporações implementam solu-ções baseadas em sistemas proprietários.O problema hoje não está no software!

Para isso, precisamos, como em qual-quer outra área, de profissionais capaci-tados, com bom domínio da tecnologiaque utilizam. Abrir mão disto é prestarum desserviço ao software de códigoaberto, pois, no final, a percepção dousuário é sempre de que o novo sistema,que é “diferente” ou “exótico”, apresentaproblemas. Infelizmente, tivemos váriosexemplos disto no passado.

A tendência é clara: com raríssimasexceções, a indústria e o mercado estãoabraçando o software livre. A excelênciatecnológica está aí. A excelência nosserviços e no suporte está chegando.Quem reconhecer a oportunidade e in-vestir em uma política de treinamentoconsistente, vai se diferenciar da concor-rência e, a custos mais baixos, conquis-tará seu espaço no mercado.

Quando chegarmos a este nível, até osgrandes ausentes da lista de empresascitadas terão que entrar no trem da mo-dernidade… ou ficar na estação, naesperança de um dia um outro passar.

Excelência

Nós nos orgulhamos das origens de nossa publi-cação: ela remonta aos primeiros dias daquiloque ficou conhecido como a Revolução Linux.A versão em alemão da Linux Magazine, fundadaem 1994, foi a primeira revista dedicada exclusi-vamente ao Linux na Europa. Desde então nossaexperiência e conhecimento, bem como nossarede de contatos dentro da comunidade Linux,cresceram e se expandiram pelo mundo todo.Como leitor da Linux Magazine, você está se inte-grando a uma rede de informações dedicada adistribuir conhecimento e experiência técnica emtorno do Linux e do Software Livre. Entretanto,nós não estamos apenas dizendo o que acontecenesta área: nós fazemos acontecer!

Prezado leitor, prezada leitora da Linux Magazine,

Rafael Peregrino da SilvaEditor

003-003_editorial.qxd 9/21/04 8:35 PM Page 3

Page 4: Linux Magazine BR 2

Setembro 2004LINUX MAGAZINE

4 Setembro 2004 www.linuxmagazine.com.br

NOTÍCIAS

Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Negócios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12Adoção total do Linux: Entrevista com o Vice-Presidente de tecnologia da Oracle

(In)Segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

CAPA

Bloco da alegria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Provão! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Nossa extensa análise mostra as qualidades e defeitos de cada um dos principais sistemas de arquivos para o Linux.

Oficina de formatação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Cada sistema de arquivos tem suas próprias ferramentas para manutenção e ajustes. Saiba como tirar proveito delas.

Top secret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31Torne seus dados indevassáveis com o uso de técnicas de criptografia e um simples chaveirinho USB.

Pé na tábua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Aprenda a usar, de forma segura, o hdparm para melhorar o desempenho dos seus discos rígidos IDE.

Jogue seus dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Tenha espaço em disco “ilimitado” com a dupla LVM e RAID.

ANÁLISES

Slack 10: a bola da vez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

PlanMaker: a arte das planilhas . . . . . . . . . . . . . . . . . . . 46Uma alternativa comercial ao OpenOffice Calc.

TUTORIAL

Embrulha pra presente! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

LPRng - A nova geração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Remasterizando o Kurumin . . . . . . . . . . . . . . . . . . . . . . . . . 56

BitTorrent: carga distribuída . . . . . . . . . . . . . . . . . . . . . . . . 62

42 A bola da vezCom a última palavra em software, a nova versão do Slack-ware, a distribuição Linux mais antiga ainda em atividade, prova que ainda tem fôlego de sobra para brigar com as gran-des distros comerciais. Nossa análise detalhada, feita em

oito máquinas, conta tudo o que acontece durante o processo de ins-talação, mostra as principais novida-des nas interfaces gráficas, navega-ção e multimídia e o ajuda a se livrar de “armadilhas” e pegadinhas.

84 É hora do show!Uma imagem vale mais do que mil palavras, principalmente se ela vai ser usada como auxílio no treinamento de usuá-rios ou para demonstrar os recursos da nova versão de um programa. Mas que tal substituir os tradicionais screenshots por algo mais ani-mado, como vídeos? Para isso temos o XVidCap, capaz de capturar vídeos nos for-matos MPEG1, MPEG2 e MPEG4 de regiões do seu desktop, que depois podem ser gravados em CD ou colocados para down-load na Internet.

18 Um lar para seus arquivosOs modernos sistemas de arquivos para o Linux dispõem de um recurso chamado “journaling”, um registro de todas as alterações efetuadas em seus dados. Com ele, o risco de perda de informações devido a um desligamento inadequado é reduzido e verificações de inte-gridade ocorrem de forma muito mais rápida. Em nossos artigos de capa você saberá mais sobre as características desses sis-temas, como melhorar seu desempenho, manter seus dados seguros e aumentar sua capacidade de arma-zenamento de forma quase ilimitada.

Untitled-1 4 21/09/2004 21:26:18

Page 5: Linux Magazine BR 2

Setembro 2004LINUX MAGAZINE LINUX MAGAZINESetembro 2004

5 Setembro 2004www.linuxmagazine.com.br

93 GUADEC 2004Saiba tudo o que rolou durante a GUADEC 2004, a conferên-cia européia de usuários e desenvolvedores do GNOME que aconteceu em Kristiansand, na Noruega. Telsa Gwinne, uma das principais “beta testers” deste ambiente desktop, esteve lá e nos conta sobre as discussões, os projetos e, claro, as fes-tas que aconteceram nos três dias do evento.

SYSADMIN

Coluna do Charly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64O PhpLDAPAdmin facilita o gerenciamento de diretórios LDAP.

Formando Pares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66

Espelho, espelho meu... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Monte seu próprio repositório de pacotes Debian.

PROGRAMAÇÃO

Feitiço da Lua. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Uma linguagem de programação nacional usada para auto-mação, em dispositivos embarcados e até grandes jogos.

LINUX USER

Xandros Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Em nosso CD, uma das distribuições Linux mais fáceis de usar.

Gráficos em modo texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Acelere a conversão de imagens com o ImageMagick.

Seleção VI-sual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Saiba mais sobre esse poderoso modo de operação do VI.

É hora do show! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Saudades do Lotus ScreenCam? O XVidCap dá conta do recado.

Papo de Botequim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Tudo sobre grep, e vamos montar nosso primeiro aplicativo.

COMUNIDADE

Unindo esforços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92A importância dos grupos de usuários na comunidade do Software Livre.

Melhor do que nunca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93Saiba o que rolou durante a GUADEC 2004.

O pingüim e o rio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94Como uma pequena cidade informatizou a administração públi-ca e diminui a exclusão digital com Software Livre.

SERVIÇOS

Eventos / Índice de Anunciantes . . . . . . . . . . . . . . . . . . .96

Expediente Editorial / Quadrinhos . . . . . . . . . . . . . . . . . 97

Na Próxima Edição... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

48 Embrulha pra presente!Depois de aprender, na edição passada, a

criar pacotes básicos para o Slackware, que tal aumentar um pouquinho o desa-fio? Nesta edição vamos aprender, com exemplos, a criar slackbuilds, arquivos (na verdade, Shell Scripts) que facili-tam a criação e manutenção de pacotes de software no formato “oficial” usado

pelo Slackware. Que tal usar esse conhecimento para “empacotar”

um software que não faz parte da distribuição e beneficiar toda a comunidade?

56 Pinguim ao gosto do freguêsImenso sucesso de público, graças ao pequeno tamanho e capaci-dade de rodar direto de um CD, O Kurumin, criação do brasileiro Carlos Morimoto, herdou de seu “pai”, o Knoppix, uma caracterís-tica que lhe dá imensa flexibilidade: a facilidade de “customização” para os mais variados fins. De uma simples mudança da página ini- cial do navegador à instalação e remo-ção de software, tudo é possível. Veja como na primeira parte desta série de artigos.

Paulino Michelazzo, cortesia

Untitled-1 5 21/09/2004 21:26:25

Page 6: Linux Magazine BR 2

6 Setembro 2004 www.linuxmagazine.com.br

NOTÍCIAS Mundo Livre em Revista

Mas a grande vitória alcançada poresse veredito foi o reconhecimento davalidade jurídica da GPL na Alemanha.Nas palavras do próprio tribunal: “Acâmara concorda com a percepção dorequerente de que as condições exaradasna GPL não significam de modo algumrenúncia de direitos autorais e de pro-priedade intelectual. Portanto, é legítimaa ação do processante para fazer valerseus direitos autorais”.

Ainda não se sabe se a fabricante deroteadores irá recorrer da decisão. ■

http://www.jbb.de/judgment_dc_munich_gpl.pdf

■Cloudscape é liberado soblicença da ASF

Durante a LinuxWorld Conference &Expo, que ocorreu nos Estados Unidosem São Francisco entre os dias 2 e 5 deagosto deste ano, a IBM abriu o códigodo seu sistema de gerenciamento debanco de dados relacional (RDBMS)Cloudscape, deixando a sua manutençãonas mãos da Apache Software Founda-tion (ASF). A ASF vai colocar o projetoem sua incubadora de projetos sob ocodinome Derby e verificar se as 500.000linhas de código do sistema são compatí-veis com a sua licença.

O Cloudscape foi adquirido pela IBMem 2001 por ocasião da compra da Infor-mix. Ele é utilizado nos produtos Work-place e na família Websphere (portal eservidor de aplicações), é totalmentedesenvolvido em Java, e não oferececoncorrência ao DB2, apesar de contartodos os recursos de um banco de dadosrelacionais - transações, em especial.

Ocupando apenas 2 MBytes de espaçoem disco, o Derby é especialmente ade-quado para sistemas embarcados, mastambém pode ser usado para sistemas dedesenvolvimento e testes, já que o có-digo desenvolvido para ele é compatívelcom o DB2 - e vice-versa. Por essa razão,todas as aplicações para DB2 funcionamnele também. A IBM espera que a comu-nidade contribua para o desenvolvi-mento posterior do Derby e que ele setorne um dos líderes entre os bancos dedados de código aberto. A empresa con-tinuará a oferecer versões comerciais doDerby sob o nome Cloudscape, que terácomo base a versão livre, mas disporá demais recursos. ■

http://www-306.ibm.com/software/data/cloudscape/http://incubator.apache.org/derby/

■RealPlayer 10 para LinuxTanto o RealPlayer 10 quanto o Helix Pla-yer 1.0, projeto de código aberto queserve de base para a versão para Linuxdo media player da Real Networks, jápodem ser baixados dos respectivos web

■Tribunal valida a GPLEm uma batalha jurídica contra a fabri-cante de roteadores Sitecom, o projeto decódigo aberto netfilter/iptables alcançouuma grande vitória: com o veredito de 19de maio de 2004, o tribunal da comarcade Munique confirmou um recurso peloqual a Sitecom não pode mais comercia-lizar, na Alemanha, seus roteadoresWLAN que fazem uso do netfilter/ipta-bles, mas que não respeitam os termos econdições da GNU General PublicLicense, a GPL. O valor das custas doprocesso também foi confirmado peloveredito: 100.000 Euros.

Mundo Livre em Revista

A empresa fabricante de teclados Cherrytrabalha atualmente no projetode um teclado orientado àsnecessidades de usuáriosLinux. Para tanto, fechouum acordo de cooperaçãocom a SuSE, maior dis-tribuição Linux da Europa.O novo teclado, o modeloCherry CyMotion Master Li-nux, deverá entrar no mercado alemão jáa partir do início de setembro e naIrlanda e Reino Unido até o fim desteano. De acordo com a empresa, o tecladooferecerá finalmente a usuários de Linuxo mesmo conforto de digitação de quedesfrutam há anos os usuários de siste-mas Microsoft. O que isso significa naprática são 29 teclas especiais programá-veis para qualquer função e que podemser usadas, por exemplo, para ativar pro-gramas multimídia e chamar funções uti-lizadas mais freqüentemente emaplicações de escritório ou no navegadorde Internet, bem como para executar pro-gramas ou mesmo utilizar áreas de traba-lho diferentes no desktop do usuário.

As teclas especiais para multimídia eInternet ficam na parte superior doteclado. As de multimídia servem paracontrolar a reprodução de músicas e fil-mes por diferentes media players (fun-ções para iniciar, parar, voltar ouavançar) e as de Internet servem para

chamar máquinas de busca ousites pré-definidos, bem como para pagi-nar para frente e para trás durante anavegação. Na parte inferior do tecladoencontram-se as teclas para controle devolume e “mudo” e para a escolha domedia player.

Teclas chamadas “Xpress Keys” podemser programadas para chamar funçõescomo cortar, copiar, colar, desfazer erefazer. Além disso há uma tecla paraejetar o CD, tal como no teclado doMacintosh, uma tecla @ em separado e,no lugar onde costuma ficar a tecla como símbolo do Windows, temos a simpá-tica figura do Tux, que deverá servir parachamar o menu de desktops comoGNOME ou KDE.

O preço na Europa será de 39,95 Eurose o pacote inclui, além do teclado, o pro-grama KeyM@n para a programação dasteclas e a distribuição SuSE Linux 9.1Special Edition. ■

http://www.cherrycorp.com/webapp/cherry/dspDocD?docID=714&lang=DE

■Cherry lança teclado especial para Linux

006-011_news.qxd 9/21/04 8:56 PM Page 6

Page 7: Linux Magazine BR 2

7Setembro 2004www.linuxmagazine.com.br

Mundo Livre em Revista NOTÍCIAS

sites da empresa. A Novell/SuSE e a RedHat já informaram estar dispostas aincluí-los nas próximas versões de suasdistribuições Linux.

O RealPlayer 10 oferece suporte paraos formatos RealAudio, RealVideo, MP3,Ogg Vorbis, Ogg Theora, H.263 e AAC.Um plug-in para o Mozilla possibilita aintegração do media player dentro donavegador sem que haja necessidade deuma janela extra para tocar a mídia. OHelix Player não suporta MP3 nem osformatos proprietários da Real Networks.Versões experimentais dos dois playerspara Solaris (Sparc) e Linux PowerPCtambém estão disponíveis. ■

http://www.real.com/linux/https://player.helixcommunity.org/

■Unidas migra paraLinux e Java

A Unidas Aluguel de Carros, uma dasmaiores empresas de locação de veículosdo Brasil, decidiu apostar na utilizaçãode software livre e aplicações paraambiente Web para reduzir os custos emodernizar seus sistemas. Duas das apli-cações desenvolvidas em Java, a Centralde Reservas e o Portal de Relaciona-mento, já estão implementadas.

Segundo Marcelo Testa, diretor de Tec-nologia da Unidas, a decisão de migraros servidores da empresa para Linux eimplementar soluções Web desenvolvi-das em Java tinha como objetivo a ado-ção de um ambiente multiplataforma eevitar a formação de um vínculo muitoestreito com apenas um fornecedor (ochamado lock-in). Até o final de 2004,todos os 400 desktops da empresa tam-bém deverão estar rodando Linux.

A empresa investiu aproximadamenteR$ 400 mil reais no projeto, sem contar aaquisição de hardware. Em contrapar-tida, apenas com licenças a Unidas eco-nomizará anualmente algo entre R$ 300mil e R$ 400 mil.

A ferramenta RAD multiplataformaGeneXus foi a escolhida para o desenvol-vimento das soluções de que a empresanecessitava. Ainda segundo Testa, elaapresenta um custo baixo, pois o investi-mento na aquisição da ferramenta éamortizado pelo tempo de desenvolvi-mento e pelo menor número de pessoastrabalhando no código. ■

http://www.unidas.com.br/http://www.genexus.com/

■Lançada versão 3.3 do KDEA versão 3.3 do ambiente de trabalhoKDE já está disponível para download. Ocódigo-fonte pode ser baixado do site ofi-cial do projeto, e várias distribuiçõesLinux já lançaram pacotes binários. Deacordo com as informações da equipe dedesenvolvimento, a versão 3.3 traz di-versas melhorias na usabilidade, estabili-dade e integração entre os vários apli-cativos do desktop. Nos últimos seismeses, mais de 7.000 bugs foram corrigi-dos e mais de 2.000 novos recursosforam implementados.

O cliente de e-mail Kmail, finalmente,permite escrever mensagens em HTML eseu sistema de criptografia de mensa-gens foi completamente reescrito, ofere-cendo recursos que facilitam a codi-ficação, decodificação, assinatura e veri-ficação de assinaturas em e-mails utili-zando ferramentas e protocolos comuns,tais como PGP, GPG (Gnu PrivacyGuard) e S/MIME. O suporte ao proto-colo IMAP está maduro e os controles deacesso estão integrados ao cliente.

A principal novidade no KDE 3.3 estáem suas ferramentas de gerenciamentode informações pessoais (PIM): o KDEdispõe agora de uma solução groupwarecompleta e integrada. Todas as ferramen-tas de comunicação pessoal, tais comoKMail, KOrganizer, KAddressBook eKNode são componentes de um sistemaúnico e criam um ambiente integrado,chamado Kontact, similar ao MicrosoftOutlook ou ao Lotus Notes. A integraçãocom o servidor Kolab permite que calen-dários e contatos sejam arquivados noservidor e compartilhados com outrosusuários. Reuniões podem ser marcadase automaticamente colocadas nos calen-dários dos participantes e informaçõessobre conflitos entre horários podem seracessadas facilmente.

O K Destktop Environment está dispo-nível em 50 idiomas, com traduções paramais 30 já parcialmente prontas. A ver-são 3.3 ficou pronta a tempo para olançamento durante o KDE CommunityWorld Summit 2004, evento que ocorreude 21 a 20 de agosto em Ludwigsburg, naAlemanha, e reuniu desenvolvedoresKDE do mundo inteiro. ■

http://www.kde.org/announcements/announce-3.3.phphttp://www.kde.org/download/http://conference2004.kde.org/

■Bombril migra para LinuxNo final de 2003 havia na Bombril anecessidade de atualização do sistemade correio eletrônico da empresa (queusava o MSMail) para uma nova tecnolo-gia. A solução para atender a esta neces-sidade foi migrar o servidor de correioeletrônico para Qmail, rodando na plata-forma Linux.

Com a adoção da plataforma Linux foipossível também atender a outrasdemandas dentro da Bombril e ferramen-tas novas foram introduzidas, tais comoacesso remoto via WebMail, Aviso deAusência (férias) e lista de endereçoscentral via OpenLdap. Além disso, ainfraestrutura da rede foi otimizada, eli-minando-se os gateways até então neces-sários para a troca de emails com asunidades de Recife e Minas, o quemelhorou a performance de troca demensagens internas e entre as filiais. Asegurança interna em relação a possíveiscontaminações por vírus foi aumentadaatravés da adoção de análise de vírus emtodos os emails internos, filtro de anexose de SPAM.

“Conseguimos migrar gradativamentetodos os usuários do MS MAIL para oambiente Linux sem criar nenhumimpacto na organização, trazendomelhorias significativas na solução téc-nica, assim como nos recursos disponí-veis para os usuários finais.”, relataMarcelo de Cillo, CIO da Bombril.

O projeto de migração da empresa foidesenvolvido pela empresa 4Linux,segundo a qual hoje existem novasnecessidades dentro da Bombril onde ouso do Linux e de outros softwares livreestão sendo considerados. ■

http://www.bombril.com.br/http://www.4linux.com.br/

006-011_news.qxd 9/21/04 8:56 PM Page 7

Page 8: Linux Magazine BR 2

curity”, ou segurança em escala militar.Por coincidência, um órgão de pesquisado exército norte-americano, a DARPA,patrocina o projeto. ■

http://www.namesys.com/http://www.jburgess.uklinux.net/slow.c

■OpenOffice 2.0 terábanco de dados próprio

Demorou, mas está decidido: o HSQLDBserá o banco de dados que acompanharáa versão 2.0 do mais popular pacote paraescritório de código aberto.

Há muito tempo que o OpenOffice.orgjá serve de interface gráfica para bancosde dados. O problema é que tais bancosde dados precisam estar disponíveis nosistema. Até agora o projeto não tinhacomo criar um banco de dados próprio,como faz o Microsoft Access. Isso aca-bará a partir da versão 2.0, com a qualserá possível criar bancos de dados pes-soais na sua máquina local. A vantagemdo Microsoft Professional Office, com opopular Access, e a do StarOffice, com oAdabas DB (proprietário), será em brevecoisas do passado.

O HSQLDB é o banco de dados relacio-nal SQL escrito em Java mais largamenteutilizado. Ele possui um driver JDBC efornece suporte para um grande subcon-junto de comandos SQL ANSI-92 (for-mato BNF em árvore), SQL 99 e 2003.Oferece um banco de dados pequeno(menor que 100 KBytes) e rápido, cujastabelas podem ser escritas em disco oumantidas em RAM. Adicionalmente, dis-põe de um servidor web simples e de fer-ramentas de acesso à base de dados emRAM, bem como de gerenciadores dobanco de dados, que podem ser executa-dos como applets. Sua versão atual é a1.7.2, e seus termos de licenciamentosão baseados na licença BSD.

Outras novidades da versão 2.0 doOpenOffice: conexões com bancos dedados externos foram melhoradas e sim-plificadas, acessos via SQL foram refina-dos. Um formulário pode ser salvoseparadamente, sem que uma aplicaçãodo OpenOffice tenha de ser especial-mente aberta para este fim. Com issopode-se criar excelentes interfaces e fer-ramentas de administração para bancosde dados já existentes (como por exem-plo para um banco de dados MySQL ouPostgreSQL). Além disso, a nova versãotambém oferece suporte para conexões

avançadas com servidores LDAP - não émais necessário utilizar o usuário anony-mous: pode-se usar autenticação normal-mente e, para completar, o acesso podeser feito via SSL. ■

http://hsqldb.sourceforge.net/http://www.amt-wiesbaden.de/down-loads/OOo_20_Vorschau.pdf

■Nações Unidas apóiam Software Livre através denova agência

A International Open Source Network(IOSN), uma iniciativa da United NationsDevelopment Programme (UNDP), acabade lançar um guia para iniciantes emLinux. O documento, em inglês, se dirigeespecialmente a futuros usuários deLinux de países em desenvolvimento efoi publicado sob a licença CreativeCommons Attribution License, com ointuito de estimular a sua popularizaçãoe traduções para outros idiomas.

O guia lançado não se dirige apenas ainiciantes de Linux no desktop, mas tam-bém àqueles que ainda não possuemnenhuma experiência com um PC. Osusuários devem, entre outras coisas,aprender a gerenciar arquivos, a traba-lhar com o OpenOffice e como navegarna Internet utilizando o Linux. Alémdisso, os usuários devem ser estimuladosa continuar a aprender sozinhos apósterem encerrado o aprendizado inicialcom o guia, que tem 13 capítulos e umanexo sobre KDE, e está disponível emformato PDF e como documento do Ope-nOffice. Para instrutores há também umdocumento em forma de apresentação.

A IOSN é um centro de competênciapara software de código aberto e livre naregião asiática em torno do Pacífico, quetem como objetivo principal promover ouso desse tipo de software em países emdesenvolvimento. Segundo a nova agên-cia, o “software livre e aberto é umasolução que possibilita inclusão digital apaíses em desenvolvimento”, “represen-tando uma oportunidade para esses paí-ses adotarem softwares e soluções aces-síveis e diminuir o vácuo digital entreeles e os países desenvolvidos. O soft-ware livre é uma alternativa à importa-ção de software e de aplicativosproprietários caros.” ■

http://www.iosn.net/http://www.iosn.net/training/end-user-manual/

■ReiserFS v4 otimiza a manipulação de arquivos

A versão 4 do sistema de arquivos Rei-serFS já está disponível para downloadna página do projeto. Lá você encontrarátambém informações sobre como inte-grá-lo ao kernel 2.6. Segundo o site doprojeto, a nova versão ainda não deveser usada em ambientes de produção.

Segundo os desenvolvedores do sis-tema, o Reiser4, como a nova versão échamada, seria o sistema de arquivosmais rápido existente para Linux. Estaafirmação é documentada com algunstestes (“benchmarks”) simples. De acor-do com esses benchmarks, principal-mente em operações simultâneas deleitura e escrita de várias “streams” dedados, o Reiser4 se mostra superior aoext2, ext3 e à sua versão anterior (v3):segundo o benchmark “slow”, o sistematem desempenho similar aos seus con-correntes quando apenas uma streamestá sendo lida ou escrita. No caso, porexemplo, de oito streams simultâneas, oReiser4 é até sete vezes mais rápido naleitura e até quatro vezes mais rápido naescrita de dados.

Além disso, o Reiser4 é um sistema dearquivos atômico, o que significa queoperações no sistema de arquivos ouocorrem inteiramente ou simplesmentenão ocorrem, de modo que o sistemanão pode ser corrompido por operaçõesque ocorram pela metade. Isso acontecesem perdas significantes de desempenhodevido ao uso de algoritmos otimizados,que não copiam os dados duas vezesdurante as operações.

O armazenamento de metadados não émais realizado com as conhecidas árvo-res B*, da versão 3, mas com as “Dan-cing Trees” (árvores dançantes), cujautilização deve acelerar o acesso a arqui-vos e diretórios. Adicionalmente, paraconseguir uma escalabilidade maior,arquivos pequenos não preenchem maisblocos inteiros, mas podem ser concate-nados em um só bloco, o que evita o des-perdício de espaço em disco.

A nova versão também oferece umainterface para extensões que permiteexpandir o sistema com novas funções.Segundo a equipe de desenvolvimento, ocódigo passou por uma extensa fase decontrole de qualidade e todas as suasfunções devem ser seguras e simples deauditar – a chamada “military-grade se-

8 Setembro 2004 www.linuxmagazine.com.br

NOTÍCIAS Mundo Livre em Revista

006-011_news.qxd 9/21/04 8:56 PM Page 8

Page 9: Linux Magazine BR 2

Mundo Livre em Revista NOTÍCIAS

■Pepper Pad 2: Um Tablet PCcom Linux

A empresa Pepper Computer Inc. acabade lançar um Tablet PC rodando na pla-taforma Linux: o Pepper Pad 2 é umcomputador portátil sem fio, desenvol-vido para o uso doméstico ou em trân-sito. O MontaVista® Linux® e o ambienteJava são a base para o sistema operacio-

nal “invisível”, segundo a terminologiautilizada pela empresa, que foram otimi-zados para o processador Intel® Xscale®de 624 MHz do Tablet PC. Ele dispõe deuma tela TFT SVGA de 8,4 polegadassensível ao toque, com resolução de 800x 600 pixels, de modo que páginas naIntenet podem ser mostradas inteira-mente e filmes podem ser assistidos sem

dificuldades. Há também um tecladoQWERTY, que foi dividido ao meio, comcada uma de suas partes colocada de umlado da tela.

O Pepper Pad 2 pesa menos de 1 kg,dispõe de um disco rígido de 20 GBytes,256 MBytes de SDRAM, 32 MBytes dememória de vídeo e 32 MBytes dememória flash, de modo que ele podearmazenar várias horas de música evídeo, além de fotos e páginas da Inter-net. Ele dispõe de uma bateria recarregá-vel de polímero de lítio com geren-ciamento de energia, uma fonte de ali-mentação AC, suporte a Bluetooth, infra-vermelho e USB 1.1 embutidos, além depermitir acesso à redes sem fio nopadrão WiFi 802.11b+g. Além disso, elevem com sistema multimídia estéreo emicrofone embutidos, bem como saídapara fone de ouvido, entrada para micro-fone externo e um gamepad de 5 botões.O gabinete inteiro é reforçado e à provade líquidos para resistir aos rigores douso diário. O preço do brinquedo é 800dólares nos Estados Unidos. ■

Pepper Pad:http://www.pepper.com/pepper_pad/

006-011_news.qxd 9/21/04 8:56 PM Page 9

Page 10: Linux Magazine BR 2

z/VM, o que possibilita a operação para-lela de centenas de sistemas Linux. Alémdisso, os sistemas podem ser expandidoscom hardware adicional sem interrupçãode funcionamento e podem ter seudesempenho aumentado ou reduzidoatravés da ativação ou desativação deseus componentes, respectivamente. ■

http://www.de.endress.com/http://www-1.ibm.com/servers/eserver/zseries/http://www-1.ibm.com/servers/eserver/zseries/os/linux/http://www-1.ibm.com/servers/eserver/zseries/os/linux/ifl.html

■HP vende notebookcom Linux

Para clientes nos Estados Unidos, aempresa Hewlett-Packard está ofere-cendo o notebook modelo nx5000 com aopção do SuSE Linux 9.1 pré-instalado (amáquina também é vendida com o Win-dows XP). Com isso a HP torna-se o pri-meiro grande fabricante de notebooks aoferecer um equipamento atual comLinux. O nx5000 é um modelo de altopadrão (business), com um processadorPentium M, monitor LCD de 15 polega-das e WLAN na plataforma Centrino,disponível em diferentes configurações,e será vendido por um preço a partir deUS$1200. Interessante é que, até poucotempo atrás, sistemas com chipset Cen-trino eram um desafio para instalaçõesLinux, mas o SuSE Linux 9.1 vem comtodos os drivers necessários para que omódulo WiFi Intel WLAN2100 (802.11b)e a placa de vídeo Intel Extreme Gra-phics 2 funcionem corretamente. ■

http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/321957-64295-89315-321838-f33-395654.html

■ CA abre código do banco de dados Ingres

A empresa Computer Associates (CA)está abrindo o código fonte do seu bancode dados, o Ingres. A CA espera com issocontribuições da comunidade para odesenvolvimento do sistema, bem comoa sua utilização em outros produtos eprojetos de código aberto.

Com esse propósito, foi criada umalicença própria, a “CA Trusted OpenSource License” (CA-TOSL), que teve porbase a “Common Public License” da IBMe que, como ela, deverá ser reconhecidapela Open Souce Initiative (OSI). BrucePerens, chefe da OSI, elogiou o retornodo Ingres às suas origens, que são livres:o projeto foi desenvolvido originalmentena Universidade da Califórnia, em Ber-keley, durante a década de 70, tendo setornado comercial apenas em meadosdos anos 80, quando a CA o expandiucom recursos avançados e lhe deu con-fiabilidade comparável à dos bancos dedados comerciais. ■

http://opensource.ca.com/projects/ingres/

■Governo e IBM assinam acordo para difundir ouso do Linux

No dia 31 de agosto, a IBM e o GovernoFederal assinaram um contrato de coo-peração para instalar um Centro de Di-fusão de Tecnologia e Conhecimento(CDTC), com a função essencial de pro-mover e desenvolver soluções Linux e desoftware livre em geral no Brasil.

Sob os auspícios do Instituto Nacionalde Tecnologia de Informação (ITI), comapoio do Ministério da Cultura e da Uni-versidade de Brasília (UnB), o centro tra-balhará para encorajar a popularizaçãode soluções de padrão e código abertosatravés de treinamentos de técnicos,analistas de suporte e usuários dos siste-mas da administração federal.

Situado na UnB, o centro irá apoiardesenvolvimento colaborativo e projetosde migração tecnológica de instituiçõespúblicas e microempresas, envolvendo ouso de soluções baseadas em padrõesabertos. A administração do CDTC ficarápor conta da IBM e do ITI, e sua primeiratarefa será o treinamento de 700 profis-sionais dos núcleos de tecnologia educa-cional (NTE) do Ministério da Educação.Há 325 destes núcleos espalhados peloPaís. Eles prestam suporte educacional e

■Lançado o FreeNXFoi lançada durante a aKademy 2004uma versão livre do NX, servidor de ter-minais que permite o rápido acesso àinterface gráfica de aplicações X em telacheia, mesmo através de linhas de baixavelocidade (9600 bps), tais como cone-xões discadas ou via GSM.

Apesar da firma italiana NoMachinecomercializar licenças do servidor NXpara Linux e Solaris, oferecendo gratuita-mente apenas o cliente para a tecnologiapara diversas plataformas, ela liberou osalgoritmos e técnicas que servem debase para a implementação do servidorsob a GPL. Essas técnicas consistem naaceleração do protocolo X e de diversosoutros protocolos (RDP, ICA e VNC) atra-vés do que se convencionou chamar de“proxy caches” e “proxy agents” e natransferência superotimizada de dadosentre servidor e cliente. O FreeNX é a pri-meira implementação livre baseada nocódigo liberado sob a GPL. ■

http://kalyxo.freedesktop.org/twiki/bin/view/Main/FreeNXhttp://www.nomachine.com/documentation/intr-technology.php

■ IBM põe em operação um dos maiores mainframes Linux da Europa

A empresa Endress+Hauser, especiali-zada em sistemas de medição e automa-ção em tecnologia de processos in-dustriais, está migrando suas aplicaçõesSAP, que até então rodavam em sistemasconvencionais UNIX, para dois mainfra-mes IBM zSeries (z990), rodando Linux.Para a IBM isso é um claro sinal daindústria de que o Linux já é uma tecno-logia madura em equipamentos main-frame para sistemas de missão crítica.

Ambos os sistemas, que contam com328 GByte de RAM, serão utilizados por3.500 usuários. As 19 aplicações SAPestão distribuídas em 14 partições lógi-cas (LPARs) e os bancos de dados DB2utilizados por elas ocupam outras 6LPARs. Os servidores de aplicações usam36 processadores da linha zSeries ro-dando Linux (IFL, Integrated Facility forLinux). De acordo com a IBM, esta éuma das maiores instalações de main-frame Linux existente na Europa.

A arquitetura especial da linha zSeriespermite a virtualização completa dehardware em sistemas operacionais

10 Setembro 2004 www.linuxmagazine.com.br

NOTÍCIAS Mundo Livre em Revista

006-011_news.qxd 9/21/04 8:56 PM Page 10

Page 11: Linux Magazine BR 2

pedagógico para a rede de escolas públi-cas, são formados por cinco pessoas emmédia, e incluem, invariavelmente, pro-fissionais da área de TI. Além de IBM eITI, há uma empresa nacional, especiali-zada em capacitação de pessoal emLinux, chamada 4Linux, envolvida noprojeto. A empresa será responsável porministrar os cursos em todas as capitaisbrasileiras, com objetivo de esclarecertodas as possibilidades e benefícios demodelos baseados em software livre epadrões abertos.

Para o presidente do ITI, Sérgio Ama-deu, a parceria com a IBM é uma oportu-nidade a mais para o governo incentivara adoção da tecnologia de código abertoem sua estrutura. “O centro de difusãopermitirá a intensa disseminação doconhecimento pelo País, além de ampliara inteligência tecnológica nacional”,afirma. Neste mês, o centro começa,também, a organizar seminários parafuncionários especializados em TI detodos os Ministérios.

“Para países em desenvolvimentocomo o Brasil e governos focados emincentivar o desenvolvimento econômicoe a diversificação da indústria de tecno-logia da informação no país, os padrõesabertos podem desempenhar um impor-tante papel na estratégia governamen-tal”, diz Rogério Oliveira, Presidente daIBM Brasil. “Uma estratégia, aliás, imple-mentada por mais de 60 países domundo e mais de 22 estados americanos,que já adotaram o open source.” ■

http://www.iti.br/twiki/bin/view/Main/PressRelease2004Aug30B

■Microsoft formalizatemor ao Linux

Diante dos seus grandes lucros e imen-sas reservas financeiras, ninguém pensa-ria na Microsoft como uma empresa queenfrenta dificuldades financeiras. Paraque isto permaneça assim, a própriaMicrosoft trata de descrever os riscos quepodem ameaçar os seus negócios. Emseu balanço anual, enviado para aComissão de Norte-Americana ValoresMobiliários (a SEC), a Microsoft explicaqual é o risco que a empresa corre porcausa do Linux – e reafirma a estratégiade driblar a concorrência com investi-mentos em “inovação, interfaces maissimples e maior compatibilidade”.

Ainda segundo a empresa, não é ape-nas a quase estagnação do crescimentode vendas de computadores pessoais queameaça o sucesso dos negócios da fabri-cante de software: a concorrência dosoftware não-comercial, Software Livre eOpen Source, também pode influenciarnegativamente o andamento dos negó-cios da corporação. “Nossa concorrênciadireta compreende empresas que se-guem modelos de negócios alternativosao modelo de exploração comercial desoftware.” Com um pouco de desdém aMicrosoft descreve sua visão destemodelo alternativo: “As empresas aten-dem aos clientes com software de códigoaberto a custos baixos e faturam adicio-nalmente com serviços e produtos, semter que arcar com os custos de pesquisae desenvolvimento do software.”

A empresa ainda não vê o Linux comouma grande ameaça para a sua hegemo-nia no desktop, devido à simplicidade deuso da interface do Windows e ao seumelhor suporte a hardware, conformeafirmam. De outro lado, ela leva a sério aconcorrência na área de servidores ebancos de dados. Como a participaçãode distribuições Linux no mercado deservidores cresceu mais do que a de pro-dutos Windows, a empresa teme que asvendas de produtos Microsoft possamcair, caso a aceitação de produtos e solu-ções de código aberto no mercado conti-nue a crescer no futuro. “O crescimentodas distribuições Linux no mercadoreflete o apoio de instituições públicas(i.e., governo) à introdução de softwarede código aberto tanto no mercado deservidores quanto no de desktops.”

No geral, a Microsoft parte do pressu-posto de que a popularidade crescentede um modelo de software não comercialrepresentará um desafio também nofuturo – principalmente devido às tenta-tivas dos defensores de tais modelos emconvencer governos do mundo todo amigrar para Software Livre.“Na medidaque o software de código aberto ganhemais aceitação no mercado, as vendasdos nosso produtos podem diminuir epoderemos nos ver forçados a reduzirnossos preços, o que pode conseqüente-mente afetar nosso faturamento e redu-zir nossas margens de lucro”. ■

http://www.sec.gov/Archives/edgar/data/789019/000119312504150689/d10k.htm

006-011_news.qxd 9/21/04 8:56 PM Page 11

Page 12: Linux Magazine BR 2

nologia da Oracle no Brasil, executivoque afirma que o Linux é umaplataforma recomendável tanto do pontode vista da segurança como em desem-penho, mesmo em servidores de missãocrítica. Na entrevista exclusiva dada peloexecutivo, Lopez falou sobre a vantagemdo Linux poder romper a dependência deum único fornecedor de sistema opera-cional e acrescentou que a substituiçãodos modelos atuais de computação pelodesenvolvimento compartilhado podeajudar a trazer inovações.Linux Magazine » Há uma estratégia com-ercial específica da Oracle para Linux?Eduardo Lopez » Nós não temos uma ini-ciativa segmentada para o Linux. O maiscorreto seria dizer que o Linux é um ele-mento-chave de nossa estratégia comer-cial. Isso significa que a Oracle, ao seaproximar de um cliente ou cliente empotencial, não visa apenas a venda deprodutos para atender a um determinadoproblema. Nossa meta é mais ousada:queremos chegar ao cliente e mostrar apossibilidade de oferecer uma nova visãosobre o papel da tecnologia dentro daorganização, sempre de forma alinhadacom o negócio do cliente. E esse posi-cionamento implica em propor novasarquiteturas para a área de TI, envol-vendo o emprego avançado de servi-dores de aplicações e ferramentas decolaboração, ou seja, propostas desoluções abrangentes que resultem emredução de custos e melhoria dos níveisde serviço. É aí que o Linux entra,porque ele é um elemento essencial paragarantir alta disponibilidade. E isso nãose traduz apenas em sistemas maisestáveis ou abrangentes mas também emnovas abordagens, como a computação

em grid, que introduz uma nova formade aproveitamento de equipamentoslegados. Então podemos dizer que oLinux está dentro de uma visão dearquitetura tecnológica na Oracle, o quefaz dele um elemento presente em todasas nossas apresentações.LM » Mas a empresa mantém suas ofer-tas para outros sistemas operacionais?EL » Sim. Mas isso não entra em conflitocom a nossa proposta, que é centrada naarquitetura da tecnologia. O Linux fazparte de diversas soluções que podemser propostas para um cliente corpora-tivo, seja ao propor uma visão de altadisponibilidade ou uma solução mais efi-ciente de recuperação de dados. Masfalar só desses atributos ou de disasterrecovery não é suficiente para motivarum executivo de tecnologia a pensar emmudar o ambiente tecnológico de Unixou Microsoft para o Linux. O cliente pre-cisa ter uma visão clara dos ganhos queele pode obter com a evolução de suainfra-estrutura tecnológica e é por issoque insisto na importância da arquite-tura dos sistemas, que deve ser pensadade forma a atender às necessidades ime-diatas, com bons índices de aproveita-mento e preparada para o futuro.LM » Qual é papel dos parceiros e inte-gradores nesse processo?EL » É fundamental contar com a partici-pação dos parceiros e integradores.Primeiro porque, por maior que seja aestrutura da empresa, é difícil contar

A Oracle é um dos maiores prove-dores de ferramentas corporati-vas no mundo, fornecendo de

bancos de dados a ferramentas de gestãoempresarial (ERP). E entre os grandesfabricantes de soluções tecnológicas paraempresas, a Oracle pode ser encaixadaentre os grandes promotores do Linux,ao adotar a plataforma em seus sistemasinternos e nos produtos recomendadosaos clientes, como a família 10g, a maisrecente geração de produtos Oracle, queabrange banco de dados, servidor deaplicações e gerenciador de sistemas cor-porativos (Oracle Enterprise Manage-ment). Lançada em novembro de 2003,essa família de produtos foi desen-volvida para tirar o máximo proveito dasvantagens da plataforma Linux.

O investimento da Oracle na pla-taforma Linux vem desde 1998, quandoa empresa criou uma equipe de desen-volvimento focado nesse sistema opera-cional. Naquele ano, a Oracle lançou aprimeira versão do seu banco de dadoscompatível com Linux. Hoje, mais de mildesenvolvedores Oracle usam esse ambi-ente para desenvolvimento. Outrademonstração da força do Linux são osmais de 4 mil fornecedores de softwareindependentes (ISVs) com os quais aempresa mantém parcerias, que optarampor desenvolver soluções com Linux. Naponta dos serviços, a Oracle oferecesuporte técnico integrado ao Red HatAdvanced Server e a todos os sistemasoperacionais baseados na plataformaUnitedLinux.

Para saber um pouco mais sobre asestratégias da empresa, a equipe daLinux Magazine conversou com EduardoLopez, 44 anos e vice-presidente de Tec-

A gigante dos bancos de dados Oracle adota firmemente a plataforma Linux

no desenvolvimento de soluções, nos processos internos e nas propostas aos

clientes, como afirma o vice-presidente da empresa no Brasil, Eduardo Lopez

POR ALEXANDRE BARBOSA

12 Setembro 2004 www.linuxmagazine.com.br

NOTÍCIAS Entrevista

Entrevista com Eduardo Lopez

Adoção total do Linux

012-013_interview_oracle.qxd 9/21/04 10:51 PM Page 12

Page 13: Linux Magazine BR 2

com recursos para cobrir todo o mer-cado. Segundo, porque é através do tra-balho conjunto com outros fornecedoresque podemos propor aos clientes a me-lhor solução. Existem integradores quesabem lidar com todos os meandros dohardware, de sistemas operacionais, apli-cações e bancos de dados, e muitasvezes é através dessas parcerias que con-seguimos detectar oportunidades co-muns e propor aos clientes novas formasde executar suas aplicações, obtendovantagens no rendimento, escalabilidadeou redução de custos .LM » Quando a empresa começou adesenvolver versões de seus aplicativospara o ambiente Linux?EL » Nós começamos a olhar o Linuxmais de perto a partir de 1998, seguindoo processo de evolução da plataforma.Ao perceber do que se tratava, a Oraclepassou a apostar muito no Linux, desen-volvendo produtos que usam esse ambi-ente operacional como base para oprocessamento de informações. A em-presa também fez grandes investimentosno sentido de portar suas aplicações paraambientes código aberto, o que foi com-pletado com a versão 9 de nosso sistema,totalmente preparado para o Linux.Além disso, a empresa participa dosprincipais fóruns de desenvolvimento desoluções open-source.LM » Que tipo de esforço a empresa fazem desenvolvimento?EL » A Oracle conta com um grupopróprio - o Oracle Linux Kernel Group -com programadores especializados quetrabalham em esquema 24x7, totalmentededicados a desenvolver novos recursosou promover melhorias em produtosenvolvendo o Linux e até mesmo nopróprio núcleo do sistema. Este time estádividido em duas equipes que ficam emnúcleos nos Estados Unidos e na Índia.Além disso, a Oracle conta, hoje, commais de 9 mil desenvolvedores certifica-dos que podem criar novas ferramentasbaseadas em nossos produtos e noLinux. Temos também uma ampla basede conhecimento técnico sobre Linuxque fica à disposição do público interes-sado através do Oracle Linux Develop-ment Center, que é um centro deexcelência que dá acesso a ferramentas,código fonte e versões de avaliação denossos produtos. Gostaria de aproveitare indicar dois endereços para os leitores

da Linux Magazine: o do Linux Technol-ogy Center (http://otn.oracle.com/linux)e o do do grupo de desenvolvimentodedicado a fazer produtos da Oracleterem mais performance em ambientesLinux (http://oss.oracle.com).LM » A empresa adotou uma estratégiade fornecer serviços de suporte para osistema operacional em vendas envol-vendo Linux. Essa oferta foi importantepara fechar negócios no Brasil?EL » A Oracle adotou uma política de, aovender uma solução baseada em Linux,fornecer suporte técnico de primeironível sobre o sistema operacional para osclientes. Esse é um item importante, poisfornece um nível de tranqüilidade maiorpara o cliente, mas não posso dizer queseja algo fundamental em termos de ger-ação de negócio. É um serviço adicionalque a empresa fornece para aumentar asegurança na escolha do cliente.LM » Como a empresa encara o uso doLinux para aplicações de missão crítica?EL » A Oracle é uma adota a política deutilizar internamente sua própria tec-nologia. Muitos dos nossos sistemas cor-porativos rodam sobre Linux, a partir deum data center mundial que centralizanossas operações. Vários de nossos sis-temas são críticos para o negócio, comosistemas de administração interna deoperações ou nosso sistema de e-mail.

Em Austin, no Texas, onde mantemosnosso datacenter, 100% dos cerca de 700servidores de camada intermediária ro-dam Linux. Sobre essa plataforma, aOracle mantém a maior parte dos sis-temas da Oracle University, de e-mail, dowebsite, assim como das camadas inter-mediárias dos aplicativos de ERP/CRM eo Oracle File System. Além disso, amaioria esmagadora dos 350 clientes dodatacenter nos Estados Unidos tambémadota a plataforma.LM » Que tipo de cliente da Oracle noBrasil opta pelas versões Linux? Há umperfil definido dessas empresas?EL » Não há um perfil definido paraestas empresas. A escolha do Linux entreos clientes da Oracle depende muito dopapel da tecnologia da informação den-tro da empresa. Mas há um número sig-nificativo de projetos envolvendo Linuxem desenvolvimento no setor governa-mental, que é o segmento que está influ-enciando muito o desenvolvimento e aadoção de soluções open-source.

13Setembro 2004www.linuxmagazine.com.br

Entrevista NOTÍCIAS

LM » Existem barreiras que dificultam aadoção do Linux? O número relativa-mente pequeno de profissionais certifica-dos é um problema?EL » A Oracle tem forte atuação emserviços de suporte ao cliente. Até agoranão encontrei uma empresa que dissesseque não vai adotar Linux por falta depessoal especializado.A escolha entreadotar ou não o Linux tem mais a vercom o desenho e a evolução da compan-hia e de seus conceitos internos.LM » Qual é a próxima onda tecnológ-ica envolvendo o Linux?EL » Uma tendência que acho impor-tante destacar para os próximos anos é aadoção das soluções de grid computing,para as quais o Linux é um ambientemuito interessante. Mas para adotá-las,as empresas precisam começar a repen-sar, desde já, a sua cultura interna emrelação à tecnologia e a arquitetura deseus sistemas. O desenho dessa arquite-tura, feito com perspectivas de adoçãode soluções de grid, pode ser feito aospoucos. Já fizemos estudos que compro-vam que a adoção de soluções de gridpode manter a mesma qualidade deserviços com reduções entre 20% e 25%nos custos com as arquiteturas.LM » Qual é, na sua visão, o estado dematuridade do Linux? Por que as empre-sas ainda resistem a adotar o Linux?EL » O Linux já provou seu valor. É umaplataforma madura e em contínuo desen-volvimento. Quanto a uma resistência naadoção, insisto que é uma questão decultura interna e de arquiteturas. Emgeral, o uso do Linux segue um compor-tamento padrão: a princípio a empresausa o Linux em sistemas menos críticoscomo servidores web ou de e-mail; como tempo, a confiança gerada leva a ex-periências com outros sistemas atéchegar ao ponto em que a credibilidadepermite a adoção do Linux em sistemascríticos. Recentemente um executivo deum grande cliente brasileiro visitounosso datacenter em Austin. Lá, ele viuque estávamos fazendo o processamentode um sistema crítico de outro cliente, daÁsia, em regime de outsourcing, envol-vendo cerca de 3 terabytes de dados. Foiquando ele percebeu que podia usartranqüilamente soluções da Oracle comLinux. Ou seja, é uma questão de tempopara que as empresas passem a enxergaro Linux de forma diferente. ■

012-013_interview_oracle.qxd 9/21/04 10:51 PM Page 13

Page 14: Linux Magazine BR 2

com uma conta local ter acesso à contade root do sistema. O projeto “CommonVulnerabilities and Exposures” deu aeste problema o código CAN-2004-0495.

Um vazamento de informações queafeta apenas os sistemas ia64 tambémfoi descoberto. O projeto “Common Vul-nerabilities and Exposures” deu a esteproblema o código CAN-2004-0565.Código de Referência no Mandrake:MDKSA-2004:066Código de Referência no Red Hat:RHSA-2004:255-10

■DHCPO servidor DHCP (Dynamic Host Confi-guration Protocol) é usado para configu-rar dinamicamente clientes que seconectam a uma rede (“hotspots” wire-less, redes empresariais, etc…)

Uma vulnerabilidade no modo como oservidor DHCPD do ISC (InternetSystems Consortium) lida com o registrodas atividades do servidor via syslogpode permitir que um agressor derrube odaemon e cause um ataque de negaçãode serviço (Denial of Service - DOS) aoenviar pacotes especiais para a porta deescuta do DHCPD. Existe a possibilidadede execução de código com as permis-sões do usuário que está rodando o ser-vidor, geralmente o root. A United StatesComputer Emergency Readiness Team(U.S. CERT) deu a este problema ocódigo VU#317350.

Existe uma vulnerabilidade similar nomodo como o DHCPD do ISC usa a fun-ção vsnprintf() em um sistema que não asuporta. Esta vulnerabilidade tambémpode ser usada para execução de códigoe/ou um ataque de negação de serviço.As declarações da função vsnprintf() afe-tadas estão logo depois do código men-cionado no parágrafo anterior. A UnitedStates Computer Emergency ReadinessTeam (U.S. CERT) deu a este problema ocódigo VU#654390.Código de Referência no Suse:SuSE-SA:2004:019Código de Referência no Mandrake:MDKSA-2004:061

■SquirrelMailO SquirrelMail é um sistema de webmailescrito em PHP. Foram encontradas múl-tiplas vulnerabilidades em uma das ver-sões do software.

Uma falha que permite a injeção decomandos SQL foi encontrada no Squir-relMail 1.4.2 e versões anteriores. Se oSquirrelMail estiver configurado paraarmazenar o livro de endereços do usuá-rio na base de dados, um agressorremoto pode usar esta falha para execu-tar comandos SQL. O projeto “CommonVulnerabilities and Exposures” deu aesta falha o código CAN-2004-0521.

Também foram encontradas váriasfalhas no recurso “cross-site scripting”(XSS) no SquirrelMail 1.4.2 e versõesanteriores, que permitem a um agressorremoto executar um script com os privi-légios de outro usuário. O projeto “Com-mon Vulnerabilities and Exposures” deua este problema os códigos CAN-2004-0519 e CAN-2004-0520.Código de Referência no Red Hat:RHSA-2004:240-06Código de Referência no Gentoo:GLSA 200405-16 / SquirrelMail

■SupO Sup (Systems Utility Page) é um aplica-tivo modular, escrito em PHP, que podeser usado para monitorar e executarcomandos em servidores locais ou remo-tos, além de sincronizar repositórios dearquivos. Pode ser encontrado no ende-reço: http://freshmeat.net/projects/sup/.

O usuário [email protected] uma vulnerabilidade no supque possibilita a um agressor remoto aexecução de código com os mesmos pri-vilégios de acesso do proprietário do pro-cesso sup-filesrv.

O problema está em uma string de for-matação do syslog(3), encontrada nasfunções logquit, logerr e loginfo. O pro-jeto “Common Vulnerabilites and Expo-sures” deu a esta falha o códigoCAN-2004-0451.Código de Referência no Debian:DSA-521-1 sup — format string vulnerability

■SubversionO Subversion é um sistema de controlede versão similar ao popular CVS.

O código do subversion é vulnerável aum estouro de buffer na pilha que podeser remotamente explorado. Este erroacontece antes de qualquer processo deautenticação. Um agressor pode usaresta vulnerabilidade para executar umcódigo qualquer.

O projeto “Common Vulnerabilitiesand Exposures” deu a este problema ocódigo CAN-2004-0413.Código de Referência no Suse:SuSE-SA:2004:018Código de Referência no Gentoo:GLSA 200406-07 / Subversion

■KernelRecentemente foram descobertas múlti-plas vulnerabilidades de segurança nokernel do Linux.

Uma falha nas versões 2.4 e 2.6 do ker-nel para as arquiteturas x86 e x86_64permite que usuários locais causem umanegação de serviço (derrubem o sistema)ao ativar um receptor de sinal com umacerta seqüência de instruções fsave efstor. O projeto “Common Vulnerabilitiesand Exposures” deu a este problema ocódigo CAN-2004-0554.

Outra falha foi descoberta na chamadade sistema clone(). Ela permite queusuários locais causem uma negação deserviço (vazamento de memória) ao pas-sar argumentos inválidos para clone()dentro de um loop infinito em um pro-grama. O projeto “Common Vulnerabili-ties and Exposures” deu a este problemao código CAN-2004-0427.

Al Viro fez melhorias no kernel 2.6que permitem que a ferramenta de che-cagem de código esparso procure porcertos tipos de bugs no kernel. Vulnera-bilidades no acesso à memória do kernelnos drivers e1000, decnet, acpi_asus,alsa, aito/WLAN, pss e mpu401 foramcorrigidas. Estas vulnerabilidades podemlevar à leitura e escrita da memória dokernel e negação de serviço local, resul-tando na possibilidade de um agressor

14 Setembro 2004 www.linuxmagazine.com.br

NOTÍCIAS Dicas de (In)Segurança

Dicas de (In)Segurança

014-015_insecurity 9/21/04 9:30 PM Page 14

Page 15: Linux Magazine BR 2

■LibpngO pacote libpng contém uma bibliotecacom funções para criar e manipular ima-gens no formato PNG (Portable NetworkGraphics), uma alternativa livre aopopular formato GIF.

Durante uma auditoria nas atualiza-ções da Red Hat, a equipe Fedora Legacyencontrou uma falha de segurança nabiblioteca libpng que não havia sido cor-rigida no Red Hat Enterprise Linux 3. Umagressor pode criar um arquivo PNG quecausa a queda de um aplicativo ligado àlibpng, com a possibilidade de execuçãode código quando a imagem é aberta.

Foi descoberto um estouro de buffercausado pelo cálculo incorreto do valorde offset de um loop. Esta falha podelevar a um ataque de negação de serviço(DoS) ou mesmo comprometimentoremoto do sistema.

Esta vulnerabilidade foi originalmentecorrigida em janeiro de 2003, mas desdeentão descobriu-se que dois outros pon-tos do código também afetados nãoforam corrigidos. O projeto “CommonVulnerabilities and Exposures” deu aeste problema o código CAN-2002-1363.Código de Referência no Mandrake:MDKSA-2004:063Código de Referência no Red Hat:RHSA-2004:249-07Código de Referência no Gentoo:GLSA 200407-06 / libpng

■ApacheO servidor HTTP Apache é um servidorweb completo, poderoso, eficiente elivremente disponível na Internet.

Um vazamento de memória que podeser causado remotamente foi descobertona versão 2.0.50 do servidor HTTP Apa-che. Isto possibilita que um agressorremoto cause um ataque de negação deserviço (DoS) ao fazer o servidor webconsumir grandes quantidades dememória. O projeto “Common Vulnera-bilities and Exposures” deu a esta falha ocódigo CAN-2004-0493.

George Guninski descobriu uma outrafalha que pode levar a um ataque denegação de serviço (DoS) no Apache 2.x.Esta falha também pode fazer com que oservidor web consuma mais memóriaque o normal. Em sistemas de 64 Bitscom mais de 4 GB de memória virtual,ainda raros, isto também pode levar aum estouro da pilha.

Um estouro de buffer também foiencontrado por George Gudinski nomódulo mod_proxy do Apache. Estafalha pode ser explorada por um usuárioremoto para potencialmente executarcódigo com os privilégios de acesso doproprietário do processo-filho do httpd(geralmente o usuário apache ou www-data). Contudo, esta falha só pode serexplorada se o módulo mod_proxy real-mente estiver em uso.

Note que este bug existe em ummódulo no pacote apache-common,compartilhado pelo apache, apache-ssl eapache-perl, de forma que uma únicaatualização é suficiente para corrigirestas três variantes do servidor httpd.Contudo, em sistemas usando o apache-ssl ou apache-perl, o daemon httpd nãoserá reinicializado automaticamente. Oprojeto “Common Vulnerabilities andExposures” deu a este problema o códigoCAN-2004-0492.Código de Referência no Mandrake:MDKSA-2004:064 e MDKSA-2004:065Código de Referência no Red Hat:RHSA-2004:342-10Código de Referência no Debian:DSA-525-1 apache — buffer overflowCódigo de Referência no Gentoo: GLSA 200407-03 / Apache

■SuperO Super é um programa que permite ausuários específicos executar comandoscom privilégios de root, de forma similarao sudo. Pode ser encontrado no ende-reço http://freshmeat.net/projects/super/.

Max Vozeler descobriu uma vulnerabi-lidade em uma string de formatação nosuper. Esta vulnerabilidade pode serexplorada por um usuário local para exe-cutar código com privilégio de root.

O projeto “Common Vulnerabilitiesand Exposures” deu a este problema ocódigo CAN-2004-0579.Código de Referência no Debian:DSA-522-1 super — format string vulnerability

■www-sqlO www-sql é um programa que permitea criação de páginas HTML dinâmicasatravés da inclusão de tags especiais,possibilitando a interação com bancos dedados SQL, como o PostGreSQL.

Ulf Härnhammar descobriu um bufferoverflow no módulo www-sql. Ao explo-rar esta vulnerabilidade, um usuário

local pode executar código ao criar e pro-cessar uma página com o www-sql.

O projeto “Common Vulnerabilitiesand Exposures” deu a este problema ocódigo CAN-2004-0455.Código de Referência no Debian:DSA-523-1 www-sql — buffer overflow

■ rlprO rlpr é um pacote que permite a siste-mas remotos imprimir arquivos em umaimpressora local.

O usuário [email protected] uma vulnerabilidade em umastring de formatação no rlpr. Ao investi-gar esta falha, um buffer overflow foidescoberto em um trecho de código rela-cionado. Ao explorar estas vulnerabilida-des, um usuário local ou remoto podecausar execução de código com os privi-légios do proprietário do processo rlprd(no caso de um usuário remoto) ou root(no caso de um usuário local).

O primeiro erro é uma vulnerabilidadeem uma string de formatação dosyslog(3) na função msg() no rlpr. O pro-jeto “Common Vulnerabilities and Expo-sures” deu a este problema o códigoCAN-2004-0393.

O outro problema é um buffer over-flow também na função msg() no rlpr. Oprojeto “Common Vulnerabilities andExposures” deu a este problema o códigoCAN-2004-0454.Código de Referência no Debian:DSA-524-1 rlpr — several vulnerabilities

■PavukPavuk é um aplicativo usado para espe-lhar websites ou arquivos. Ele podetransferir documentos de servidoresHTTP, FTP, Gopher e opcionalmenteHTTPS (HTTP sobre SSL). O softwarepode ser encontrado no endereçohttp://www.idata.sk/~ondrej/pavuk/

Ulf Härnhammar descobriu uma vul-nerabilidade no Pavuk, no qual uma res-posta HTTP 305 grande demais enviadapor um servidor malicioso pode possibi-litar a execução de código com os privilé-gios do proprietário do processo pavuk.

O projeto “Common Vulnerabilitiesand Exposures” deu a este problema ocódigo CAN-2004-0456.Código de Referência no Debian:DSA-527-1 pavuk — buffer overflowCódigo de Referência no Gentoo:GLSA 200406-22 / Pavuk

15Setembro 2004www.linuxmagazine.com.br

Dicas de (In)Segurança NOTÍCIAS

014-015_insecurity 9/21/04 9:30 PM Page 15

Page 16: Linux Magazine BR 2

16 Setembro 2004 www.linuxmagazine.com.br

NOTÍCIAS Kernel

Wichert Akkerman postou um patchpara produzir um build target que gerapacotes .deb (do Debian).

Infelizmente, Wichert postou seupatch bem no meio do desenvolvimentoda série 2.6.0-test, quando Linus Tor-valds e Andrew Morton haviam “conge-lado” a adição de novos recursos até quepudessem lançar a versão 2.6.0 e inaugu-rar uma nova série estável. Na época,Wichert foi informado de que deveriareenviar seu patch mais tarde, quando asérie 2.6 estivesse mais estável e liberadapara a adição de novos recursos.

Isso aconteceu em outubro de 2003.Em junho deste ano, Wichert reenviouseu patch e desta vez teve uma recepçãomuito mais calorosa. Sam Ravnborg, queestava trabalhando em alvos para a gera-ção de “pacotes” nos formatos .tar.gz e.tar.bz2, disse que incluiria os patches deWichert entre os seus quando os ofere-cesse para inclusão no kernel.

Parece portanto que, em breve, alvospara a geração de pacotes .deb (e outrosformatos) chegarão à árvore do kernel2.6. Assim como o alvo para pacotesRPM, eles são, na verdade, mais umaquestão de conveniência, já que amesma tarefa pode ser realizada comscripts simples. Contudo, são bem fáceisde implementar e manter e fornecem umrecurso que muitos usuários desejam.

■NTFS ganha mais suporteAnton Altaparmakov tem progredidocom o driver para sistemas de arquivosNTFS. Até agora não existia suporte àescrita, e para evitar a corrupção dosdados era necessário executar um utilitá-rio após montar uma partição NTFS.

A função do utilitário agora está incor-porada ao próprio sistema de arquivos ejá é possível sobrescrever um arquivocom novos dados. Não é tão bom quantoo suporte completo à escrita, mas é umbelo começo. Embora todos concordemque o driver NTFS nunca será a melhoropção para um sistema de arquivos sob oLinux, ele é uma boa opção para compar-tilhar discos entre o Windows e o Linux.

■SMBIOSO driver SMBIOS foi removido do kernel2.6, para tristeza de David Mosberger,que recentemente escreveu o código parapermitir seu uso em máquinas baseadasna arquitura ia64. O motivo para a remo-ção do driver é um velho conhecido:tudo o que ele faz pode ser feito noespaço do usuário.

Infelizmente, como o próprio Davidmostrou, a técnica depende do /dev/mem,do qual muitos desenvolvedores queremse livrar ou, ao menos, desencorajar seuuso. Até mesmo Michael Brown, autororiginal do driver SMBIOS, foi a favor desua remoção. O próprio Michael decidiuusar a solução baseada em /dev/mem noespaço do usuário e disse que não pre-tende manter um código que nem elemesmo usa mais.

Havendo o próprio autor do driver seoposto à sua inclusão no kernel 2.6, ficadifícil convencer Linus Torvalds ouAndrew Morton a mantê-lo. Contudo, sepessoas como David realmente fizeremquestão, é possível que um novo mante-nedor seja encontrado, ou que pelomenos o debate continue até que sejaencontrada uma solução que satisfaçaaos dois lados: a turma que quer evitaradicionar ao kernel recursos que podemser implementados no espaço do usuárioe a turma que acha que soluções basea-das no espaço do usuário são ruins edevem ser substituídas.

■PC9800O suporte à sub-arquitetura PC9800 pro-vavelmente irá desaparecer do kernel 2.6num futuro próximo. Os mantenedorestrabalharam duro, com a ajuda de AlanCox, para incluir seus patches na árvoreoficial do kernel, mas em seguida desa-pareceram, pararam de trabalhar nocódigo e de responder aos e-mails.

Embora pessoas como Andrew Mortonconsiderem o hardware PC9800 obso-leto, ele ainda é rápido e poderoso o bas-tante para uso em servidores e outrastarefas úteis. Infelizmente, a falta de ummantenedor sela seu destino.

■Rastreando patchesUm novo sistema de atribuição de patchescomeça a surgir, graças, em parte, às ale-gações da SCO. Segundo Linus Torvalds,que propôs sua criação, o objetivo é facili-tar a tarefa de rastrear um patch durantetoda sua existência, desde seu autor origi-nal, passando pelos responsáveis por dri-vers e subsistemas intermediários e pelacadeia de desenvolvedores - o que acabalevando ao próprio Linus e outros mante-nedores do kernel.

O mecanismo, ainda em discussão, nãopoderia ser mais simples: cada desenvol-vedor que envia um patch simplesmenteadiciona a ele um pequeno texto, no qualse identifica e declara a “liberdade” desua contribuição. Desta forma, para reba-ter um ataque como os da SCO, bastaverificar os “atestados” referentes à cadapatch, em vez de ter de mergulhar emantigos arquivos de listas de discussão,como é feito atualmente.

Os atestados seriam algo mais formal,indicando que o desenvolvedor escreveuo código e o enviou sob a licença especi-ficada, ou que modificou um código quejá havia sido devidamente licenciado, ouainda que recebeu a contribuição dealguém que autorizou sua inclusão nokernel e que o código não foi modificadode forma alguma.

Logo que Linus fez a proposta, come-çaram a aparecer patches usando o novosistema de atribuição, apesar da possibi-lidade de modificações futuras. Umacoisa é certa: os desenvolvedores do ker-nel aprovaram a idéia básica e estão real-mente dispostos a adotar o métodoproposto por Linus, ou algo que atinja osmesmos objetivos.

Só nos resta esperar para ver se isto aju-dará mesmo na defesa contra as acusaçõesde infração de copyright no kernel.

■Alvos de compilaçãoCom a criação do novo sistema de com-pilação do kernel (kbuild) na série 2.5,um alvo de compilação (build target)para geração de pacotes RPM foi adicio-nado ao código-fonte. Logo em seguida,

Notícias do Kernel

016-017_kernel.qxd 9/21/04 9:32 PM Page 16

Page 17: Linux Magazine BR 2

17Setembro 2004www.linuxmagazine.com.br

Kernel NOTÍCIAS

Jeff Garzik e James Bottomley esperamque alguém se ofereça para manter ocódigo, ou ao menos para organizar pat-ches que possam surgir, mas se ninguémfor encontrado o código será definitiva-mente removido.

■O fim de uma eraCom o código quebrado e sem ummantenedor, o sistema de arquivosUMSDOS corre o risco de ser removidoda árvore do kernel 2.6. Contudo,ainda há uma certa relutância entre osmantenedores do kernel, já que oUMSDOS foi parte importante da his-tória do Linux.

Nos velhos tempos, a forma mais fácilde experimentar o Linux sem ter que for-matar o disco era usar o UMSDOS parainstalar o sistema em uma partição FATjá existente. Desta forma, era possívelcarregar o Linux ou o DOS a partir damesma partição.

Considerado um belo hack em suaépoca (do início a meados da décadade 90), o UMSDOS possibilitou o pri-meiro contato de muita gente com oLinux. Seria uma pena ter de apo-sentá-lo; mas sem ninguém para cui-dar dele, parece que é exatamente oque vai acontecer.

A decisão não afeta quem usa o Linuxhoje em dia. O código sequer funciona,mas seria formidável vê-lo corrigido esaudável, como uma espécie de monu-mento aos velhos tempos.

■Mantenedor perdidoJohn A. Martin desistiu de manter oarquivo CREDITS e não se sabe sealguém irá substituí-lo. Isso não signi-fica que o arquivo CREDITS deixe deexistir, pelo contrário. Como disseAdrian Bunk, modificações nessearquivo geralmente vêm dos própriosdesenvolvedores, como parte dos pat-ches submetidos. O arquivo se tornouparte tão popular da cultura do Linuxque praticamente não há mais necessi-dade de um mantenedor.

Foi Adrian Bunk quem apresentou opatch para que o nome de John fosseremovido do arquivo MAINTAINERS(onde constava como mantenedor doarquivo CREDITS). O próprio John con-cordou com isso, embora tenha se ofere-cido para voltar a manter o arquivo, casohaja necessidade.

■Mantenedor encontradoGreg Kroah-Hartman já vem trabalhandono SysFS há algum tempo e finalmenteconcordou em aceitar o título de mante-nedor, incluindo seu nome na entradacorrespondente no arquivo MAINTAI-NERS. Geralmente os desenvolvedoresficam entusiasmados por ter seus nomesneste arquivo, mas Greg já era mencio-nado várias outras vezes, principalmentepor seu trabalho com PCI e USB, entreoutras áreas.

Ele não chegou a resistir à idéia de sernomeado mantenedor do SysFS; na ver-dade só não se apresentara, ainda, comotal. Provavelmente teria esperado aindamais antes de ser oficialmente “empos-sado”, mas recebeu um empurrãozinhode Christian Gmeiner, que tentava, semsucesso, descobrir quem era o mantene-dor do SysFS. Frustrado, decidiu pergun-tar aos membros da lista de discussãolinux-kernel. A partir daí, Greg não pôdemais se manter em silêncio.

Em sua vida relativamente curta, oSysFS (que surgiu no final de 2002) pro-vou ser um grande sucesso e se tornou ainterface entre o espaço do kernel e oespaço do usuário preferida por muitosaplicativos e drivers. Embora o Linuxainda suporte controles de I/O (ioctls) eo sistema de arquivos /proc, seu uso édesaconselhado em novos drivers; estesdevem dar preferência à interface SysFS,que tem código mais limpo, manutençãomais fácil e não tem o peso da compati-bilidade retroativa.

■Dando nome aos boisUma coisa que nunca tinha sido feita atéagora, segundo Linus Torvalds, é juntaros nomes de todas as pessoas que contri-buíram com o kernel Linux. Além de umexercício intelectual, isso seria útil pararebater alegações como as da SCO.

Por mais ridículas que elas possamparecer aos observadores, ainda assimleva um bom tempo para preparar umadefesa contra uma alegação de infraçãode copyright no kernel Linux; o próprioLinus tem de lidar com várias delas (-embora não sem ajuda).

Agora, Peter A. Van Tassell deu inícioao projeto Grokline (veja o site oficial emhttp://www.grokline.net), para coletarem um só lugar todos os dados relativosà autoria do código presente no Linux.Geralmente esta é considerada uma

tarefa impossível, como quando alguémsugere mudar a licença do Linux da atualGPL para uma licença similar, como aOpen Software License.

Quando surge uma sugestão dessetipo, logo vem alguém lembrar que, paraisso, seria necessário rastrear cada umadas pessoas que colaboraram com o ker-nel durante toda a história do Linux elhes pedir permissão para mudar alicença de sua contribuição.

Como já houveram milhares de cola-boradores ao longo dos anos, a idéia demudar a licença geralmente morre nesteponto. Contudo, a primeira tentativaséria de conseguir dados completossobre a autoria dos patches para o kernelestá em andamento.

■Novo livroMel Gorman publicou um livro sobre ogerenciador de memória virtual doLinux! O título é “Understanding TheLinux Virtual Memory Manager”, publi-cado pela Prentice Hall como parte dasérie “Open Source” de Bruce Perens.Mel começou a trabalhar nesta docu-mentação antes mesmo que houvessequalquer possibilidade de publicá-la emforma de livro. Foi inspirado pela decisãode Linus Torvalds de substituir o subsis-tema de memória virtual dos primeiroskernels da série 2.4 por uma implemen-tação completamente nova.

A decisão causou muita discussãoentre os desenvolvedores do kernel, jáque a série 2.4 deveria ser estável, semmudanças drásticas tais como uma subs-tituição de todo o subsistema de memó-ria virtual. Entre outras reclamações, afalta de comentários, ou qualquer outraforma de documentação sobre o código,tornou difícil para os desenvolvedorescontribuir com aquela área do sistemadurante um bom tempo.

Foi em meio a este conflito que Meldecidiu vasculhar o código, analisar seucomportamento e fornecer não apenasum comentário linha-a-linha, mas tam-bém uma explicação lógica de seu funcio-namento em ensaios bem organizados.Foi essa empreitada que agora se transfor-mou neste impressionante livro, que tratao assunto a fundo, num esforço para dei-xar os desenvolvedores curiosos maisperto de poder realmente participar dodesenvolvimento da VM ou, pelo menos,de apreciá-lo em todos os detalhes. ■

016-017_kernel.qxd 9/21/04 9:32 PM Page 17

Page 18: Linux Magazine BR 2

distribuições tendem a configurar atransferência de dados entre o discorígido e controladora IDE de modo extre-mamente conservador, o que resulta emdesempenho aquém do esperado. Vejano artigo da página 36 como usar, deforma segura, o utilitário hdparm parabotar um fim a este problema.

E para encerrar as matérias de capadesta edição, reservamos um tutorial deLVM (“Logical Volume Manager”) sobreRAID por software. ■

Tudo isso não deveria ser de admirar:o ext2 foi desenvolvido ainda na pré-his-tória do Linux, como um substituto parao sistema de arquivos do Minix, estevindo da era dos disquetes. Essa é arazão pela qual a estrutura do ext2 não émais capaz de atender às necessidadesdos centros de dados modernos.

ModerninhosEntretanto, existem alternativas moder-nas, para as quais as limitações descritasacima são “fichinha”, como você verá napágina 19. Ext3, JFS, ReiserFS e o XFSdispõem do journaling, recurso quetorna a recuperação do sistema apóseventuais travamentos ou quedas deenergia uma questão de segundos.

Realizamos diversos testes para saberse o journaling tem algum efeito nega-tivo no desempenho dos sistemas dearquivos. Confira os resultados a partirda página 23. Um dos sistemas de arqui-vos - para o qual, alias, quase não háferramentas e opções de ajuste fino(comprove no artigo da página 26) -apresentou desempenho surpreendente.

A chave do problemaOutro artigo mostra como instalar e con-figurar um sistema de arquivos (viadispositivo loopback) criptografado,nas distribuições Debian, Gentoo eRed Hat. A chave criptográfica,essencial para acesso aos dados,fica arquivada em um simples“chaveirinho” USB.

Arrastando a âncoraMuitos sistemas Linux rodamde maneira lenta desne-cessariamente. As

18 Setembro 2004 www.linuxmagazine.com

Sistemas de ArquivosCAPA

Com a explosão da quantidade dedados a ser armazenada e os dis-cos rígidos e sistemas RAID

tornando-se cada vez maiores, as des-vantagens do velho sistema de arquivosext2 ficam cada vez mais evidentes. Averificação de integridade dos dadosnesse sistema de arquivos toma umtempo que parece não ter fim. E se hou-ver a necessidade de reparos, lá se vãohoras de trabalho. Não bastasse isso, háos limites de tamanho de arquivos e par-tições - e os arquivos se fragmentam como tempo, o que prejudica bastante odesempenho do sistema.

Os modernos sistemas de arquivos para Linux dispõem de um recurso conhecido como “Journaling”, um registro crono-

lógico das alterações efetuadas em cada arquivo. Verificações de integridade de sistemas com journaling ocorrem de

forma extremamente rápida. Além disso, partições JFS, ReiserFS e XFS quase não têm limite de tamanho.

POR JAN KLEINERT

Não há mais motivos para temer o fsck

Um lar para seus arquivos

Journaling ..........................19 Presente nos sistemas de arquivos Ext3, JFS,ReiserFS e XFS, o journaling permite que sis-temas reinicializados acidentalmentevoltem a operar rapidamente.

Análise de desempenho............23Nossa extensa análise mostra as qualidadese fraquezas de cada um dos principais siste-mas de arquivos para o Linux.

Ferramentas ......................26Cada sistema de arquivos tem as suas.Vejatambém como algumas opções do mountpodem afetar o desempenho.

Criptografia de bolso .........31Veja como criar um sistema de arquivos crip-tografado, com a chave armazenada em um“chaveiro”USB.

Turbine seu HD..................36Obtenha ganhos incríveis de performanceutilizando corretamente o hdparm.

LVM sobre RAID .................38Veja em nosso tutorial como utilizar LVMsobre RAID via software.

CAPA

018-018_intro.qxd 9/21/04 9:34 PM Page 18

Page 19: Linux Magazine BR 2

Um sistema de arquivos pode serrepresentado como uma camadade minúsculos blocos sobre a

superfície de um disco. No início estacamada está organizada, porque todosos dados estão dispostos de modo limpo,uns depois dos outros, em blocos contí-guos. Entretanto, a ordem se perde assimque os dados são postos em movimento(gravados e regravados), surgindo assimum efeito chamado fragmentação. Osnovos sistemas de arquivos para Linuxlidam melhor com esse processo do queo tradicional sistema de arquivos Ext 2.Em um teste comparativo detalhadoentre o Ext 2 e o ReiserFS [1], o ReiserFSse comportou nitidamente melhor no tra-tamento da fragmentação de dados.

As longas pausas para o café, outroranecessárias quando o programa de verifi-cação de integridade (fsck) examinavaum sistema de arquivos Ext 2, foramabolidas. Os novos sistemas de arquivospara Linux registram as mudanças nosistema de arquivos em uma espécie decatálogo, o journal e por isso eles sãochamados de sistemas de arquivos comjournaling. Graças ao journaling, o pro-grama fsck já terá reparado inconsistên-cias no sistema de arquivo, enquanto ofsck.ext2 ainda estiver verificando seexistem efetivamente erros a eliminar.Motivo: o fsck.journal, utilizado pelofsck, examina somente os dados anterio-res à última entrada no journal. Comisso, o computador fica pronto para usomais rapidamente e a disponibilidade dosistema aumenta.

Tamanho É documento.A alta disponibilidade é importante por-que o volume de dados cresce sem parare, com ele, também a capacidade dohardware. Os fabricantes de discos rígi-dos já superaram a barreira dos 300 GB ehá tempos os sistemas RAID já adminis-tram numerosos terabytes (TB). De qual-quer modo, os projetistas de sistemas dearquivos pensam muito além do hard-ware disponível hoje e criam sistemas

capazes de administrar eficientementemais de um milhão de terabytes (umexabyte, 1 EB), conforme ilustra a Tabela1. O XFS da SGI lidera, com um tamanhomáximo teórico para o sistema de arqui-vos de 1,125 EB no Linux, um pouco àfrente do ReiserFS, cujo limite está em 1EB. A IBM segue em terceiro, com 32 PB(petabyte: 1 PB corresponde a 1024 TB).O Ext 3 está restrito às limitações impos-tas pelo kernel 2.6, com um tamanhomáximo de 16 TB. A versão 2.4 podeadministrar, no máximo, 2 TB.

Se o espaço em disco se tornar insufi-ciente, o usuário pode aumentar o tama-nho dos sistemas de arquivos com osistema ainda em funcionamento. Isto éespecialmente interessante em conjuntocom um volume lógico (LVM - LogicalVolume Manager) ou com RAID (Redun-dant Array of Inexpensive Disks) via soft-ware. O artigo “Jogue seus dados”, napágina 38 desta edição, descreve o usodas duas técnicas para aumentar, deforma quase ilimitada, o espaço emdisco. O limite é o seu bolso.

Os quatro sistemas de arquivos com journaling disponíveis para o kernel 2.6

devem ser invisíveis e confiáveis. Ext 3, JFS, ReiserFS e XFS superam o Ext 2 em

desempenho e fragmentam mais devagar. Além disso, graças ao journal, a rei-

nicialização do sistema após um crash é muito mais rápida.

POR JÖRG REITTER

Fundamentos dos sistemas de arquivos com journaling

Bloco da Alegria!

19Setembro 2004www.linuxmagazine.com.br

CAPASistemas de Arquivos

019-022_journal_overview.qxd 9/21/04 9:37 PM Page 19

Page 20: Linux Magazine BR 2

aparecem como se ele acessasse um ser-vidor Windows NT/2000, ao invés deum servidor Samba. Veja mais sobre aconfiguração de ACLs em [2] e [3].

Dividir e conquistarNos servidores de arquivos há sempreproblemas de espaço. As quotas são umasolução eficaz para evitar que o espaçoem disco do servidor acabe. O adminis-trador determina, para cada usuário,uma fatia fixa do sistema de arquivos. Ossistemas de arquivos Ext 2/3 usam osuporte a quotas padrão do kernel 2.6,ao contrário do XFS, que oferece suportepróprio. O desenvolvimento do JFS e doReiserFS, entretanto, ainda não chegoutão longe: no sistema de arquivos daIBM, o suporte a quotas está no crono-grama para versões futuras. O ReiserFSsó terá suporte a quotas a partir de suaversão 4, mas quem precisar dele hojepode aplicar um patch no kernel 2.4.

Com os programas utilitários temosum quadro similar: JFS e ReiserFS nãotrazem programas para “dump” e “res-tore”. O YaST2, do SuSE Linux, fornece,entretanto, uma interface de backuppara o ReiserFS – contudo sem suporte abackups incrementais. Deste modo, osusuários devem obrigatoriamente sehabituar ao uso dos aplicativos tar oucpio. Os usuários do Ext 3 simplesmenteutilizam os programas habituais do Ext 2[4]. A equipe de desenvolvimento de sis-temas de código aberto da SGI tambémcriou um utilitário para backup próprio,disponível no pacote xfsprogs [5]. Natu-ralmente existem outros programas quetambém podem fazer backups incremen-tais e a área de TI das empresas devemsempre prever essa necessidade [6].

Rapidinho com journalingSistemas de arquivos com journalingcontribuem muito para a alta disponibili-dade no datacenter. Sistemas assim equi-pados recuperam-se e retornam àoperação muito mais rapidamente apósum crash do que sistemas de arquivossem journal, como o Ext 2. Uma reinicia-lização não planejada do computadorimplica em risco de inconsistência dedados no sistema de arquivos, poisarquivos que estavam em uso naquelemomento não foram corretamente fecha-dos. Durante a reinicialização, o pro-grama fsck.ext2 precisa verificar todos osarquivos quanto à consistência, o quepode levar horas em grandes sistemas dearquivos. Isso já não acontece com siste-mas de arquivos equipados com journa-ling. Durante a reinicialização, o pro-grama fsck.journal examina somente osarquivos posteriores à última entrada nojournal, de modo que o sistema torna-seoperacional novamente em segundos (aoinvés de horas).

Mas não é somente após um crash quesistemas de arquivos com journaling sãosuperiores. No que tange à eficiênciaorganizacional em nível mais baixo, elessuperam o Ext 2 de longe: seu esquemaorganizacional se baseia em determina-dos algoritmos de busca e classificação,chamados “B-Trees” (ver Quadro 1:Árvores Balanceadas).

Em contraste com uma lista desorgani-zada, como a utilizada pelo Ext 2, emum sistema com journaling as referên-cias aos blocos individuais, que repre-sentam um arquivo, são organizadas naforma de uma árvore. Esta estrutura étão otimizada, que um processo precisaesperar no máximo a metade do tempo

Sistemas de arquivos nokernel 2.6O kernel 2.6 contém drivers para siste-mas de arquivos Ext 3, JFS, ReiserFS eXFS, com os quais o usuário pode reali-zar testes confortavelmente, sem preci-sar alterar e recompilar os fontesoriginais. O kernel não só dispõe destesdrivers, como também de funçõesmodernas como suporte a quotas, listasde controle de acesso (“Access ControlLists”, as famosas ACLs) e suporte à“debugging” (depuração de erros), con-forme mostra a Figura 1. O que perma-nece é o fato de que o suporte ao sistemade arquivos da partição root precisa estarcompilado no kernel, caso um RAM diskinicial (initrd) não seja utilizado. Natu-ralmente, o usuário ainda pode compilare carregar os sistemas de arquivos comomódulos em tempo de execução.

No que concerne à administração dedireitos do sistema de arquivos, os admi-nistradores de rede têm apelado clara-mente, nos últimos tempos, cada vezmais às ACLs. Elas expandem os padrõeshabituais de direitos do usuário (“user”,o proprietário de um arquivo), do grupode usuários e outros, de modo que oadministrador pode facilmente, porexemplo, liberar o acesso a arquivos emum servidor Samba para usuários Win-dows remotos. Para o usuário de Win-dows, os direitos de acesso aos arquivos

20 Setembro 2004 www.linuxmagazine.com.br

Sistemas de ArquivosCAPA

Figura 1: No kernel 2.6 há suporte para os siste-mas de arquivos Ext 2/3, JFS, Reiserfs e XFS. Asdiferenças etsão no suporte a ACLs, quotas e fun-ções de debug.

Um arquivo com tamanho de 10 kB está num sistema de arquivos com blocos com tamanho de 4kB. O arquivo não cabe, portanto, num único bloco e o sistema de arquivos o distribui em três. Aprincípio, esses blocos estão em seqüência, um atrás do outro. Entretanto, em um sistema dearquivos muita coisa acontece: os usuários excluem e acrescentam novos arquivos e relatórios dosprocessos também aumentam seus registros. Com o alvoroço desta movimentação de dados, for-mam-se cada vez mais ilhas de blocos onde antes havia um sólido bloco de arquivos. O sistema dearquivos se fragmenta continuamente, o que faz com que o desempenho vá caindo pouco apouco (ver também [1]).

Um programa de desfragmentação seria ideal para restabelecer a ordem. De qualquer maneira, adesfragmentação, com as dimensões dos discos atuais, só deve ser feita se houver muito tempodisponível para isso. Num ambiente de produção, é melhor formatar o disco novamente e restau-rar o backup dos dados de volta para ele depois. Pouco importa se o sistema de arquivos tem 200GB ou 20 TB de dados – cedo ou tarde a morte o atingirá.

Fragmentação: perda programada de performance

019-022_journal_overview.qxd 9/21/04 9:37 PM Page 20

Page 21: Linux Magazine BR 2

que esperaria normalmente, até que osistema de arquivos encontre os blocospertencentes ao arquivo procurado.

Já que, vistas do ponto de vista daraiz, as ramificações da árvore apresen-tam sempre a mesma profundidade, otermo B-Trees transforma-se, no jargãoda literatura técnica, em árvores balan-ceadas. Cada um dos três sistemas dearquivos com journaling que utilizamuma estrutura de arquivos baseada emárvores balanceadas usa uma variantediferente: uns são, assim, mais eficientesno tratamento de vários arquivos peque-nos em um diretório, outros, no trata-mento de arquivos muito grandes.

Um gargalo apresentado por todos ossistemas, com exceção do Ext 3, é o VFS(“Virtual Filesystem Switch”). Sua arqui-tetura foi desenvolvida em função de sis-temas de arquivos baseado em inodes.Entretanto, o JFS, o ReiserFS e o XFSusam B-Trees ao invés de inodes. As B-Trees aceleram o procedimento de busca,mas criam também um problema: umúnico erro em sua estrutura já pode levarà perda de dados. Além disso, exportartais sistemas de arquivos via NFS é umaoperação problemática e, além disso, oJFS, o Reiserfs e o XFS não funcionamcom as quotas padrão do kernel.

Ext 3 ou Ext 2 com journalingQuem usa o Ext 3 [7] ou prefere o Ext 2não assume riscos. Não somente a possi-bilidade de transformar um sistema Ext 2num Ext 3 através do programa tune2fs éuma vantagem importante, mas tambémos programas de dump e restore são osmesmos. Em comparação com o Ext 2, oExt 3 ganhou só a função de journaling,com três opções de configuração: jour-nal, writeback e ordered.

Com a opção ordered, se um arquivo eseus metadados correspondentes sãomodificados, estes dados são, antes, gra-vados (“flush”) no disco. Este é o com-portamento padrão. No modo writebacksomente os metadados são gravados nojournal – o arquivo é modificadosomente durante a sincronização do sis-tema de arquivos (“sync call”). O modomais seguro, e mais lento, é o modo jour-nal, que protocola as modificações nosmetadados e nos arquivos.

A grande desvantagem do Ext 3 é aimplementação de diretórios, feita atra-vés de uma lista encadeada. Todos os

outros sistemas de arquivos com journa-ling se baseiam em árvores balanceadas(ver Quadro 1: Árvores Balanceadas).Listas encadeadas apresentam um de-sempenho bem pior. A performance doExt 3 piora nitidamente com o aumentono volume de arquivos, e quando setrata de encontrar arquivos. O Ext 3 tam-bém é fraco no quesito fragmentaçãoexterna. Uma análise deste comporta-mento por um longo período pode serencontrada em [1].

Comparado com outros sistemas dearquivos com journaling, o Ext3 tambémfica pra trás em casos como arquivosmuito grandes (> 1 TB), partições muitograndes ou muitos arquivos em um dire-tório. A razão para isso é que as estrutu-ras internas apresentam muito poucosbits para lidar bem com tais casos.

JFS: subnutridoO JFS [9] da IBM visa servidores de ban-cos de dados, servidores de arquivos equalquer outra aplicação com grandenecessidade de espaço em disco rígido.Além disso, o desenvolvimento da IBMvaloriza principalmente a segurança dosdados e a escalabilidade do sistema.Apesar disso, o desenvolvimento do JFSpara Linux está um pouco atrás do de

seus concorrentes. A lista de coisas a serfeitas é a mais longa entre eles e o sis-tema é o que traz menos opções. Mesmoassim, uma partição formatada em JFS jápode ter seu tamanho aumentadodurante a operação regular do sistema,que também suporta as ACLs Posix.

O usuário pode analisar problemas nosistema de arquivos ativando JFS debug-ging na configuração do kernel. As men-sagens de erro geradas serão, assim,escritas no syslog. A IBM também pen-sou nos administradores que gostam deestatísticas: com a opção adequada ati-vada na configuração do kernel, um con-junto de estatísticas a respeito dautilização do sistema pode ser encon-trado em /proc/fs/jfs/.

A organização de diretórios no JFS foimuito bem projetada. Pequenos diretó-rios, com no máximo oito arquivos, sãogravados pelo sistema diretamente noinode. Todos os diretórios com maisarquivos são organizados em uma B-Tree. Como é um sistema de arquivos de64 bits, O JFS é predestinado para a utili-zação com arquivos e partições “gigan-tes”. As ferramentas de administraçãopara o usuário estão reunidas no pacotejfsutils. Para os kernel 2.6 o usuário vaiprecisar no mínimo da versão 1.0.14.

21Setembro 2004www.linuxmagazine.com.br

CAPASistemas de Arquivos

Com as árvores balanceadas, os sistemas de arquivos para Linux utilizam um conceito que é apli-cado há mais de 30 anos às bases de dados. A distribuição regular (balanceada) dos dados pelosistema de arquivos com journaling resulta num esquema de organização mais eficiente que atécnica em uso pelo sistema de arquivos Ext 2. O Ext 2 usa listas desordenadas, que são ineficien-tes para busca e exclusão de dados, uma vez que, no pior dos casos, o diretório inteiro precisa servarrido em busca do arquivo.

Com as B-Trees, um esquema de ramificações entra na estrutura organizacional dos dados. Rami-ficações que provêm da mesma raiz têm sempre a mesma profundidade, de forma que o equilí-brio entre as operações realizadas na árvore pode ser garantido. Desta forma, a eficiência da buscaem um grande volume de dados aumenta, uma vez que nunca é necessário varrer um diretóriointeiro. Os dados são organizados numa estrutura de árvore, onde as folhas armazenam os dados,as ramificações (nós) contêm referências ao próximo nível da árvore ou, no final, às folhas.

Algoritmos otimizados levam à velocidade máxima

A B-Tree padrão armazena dados e chaves nos chamados nós internos e nos nós das folhas. Nó éum termo geral que designa um elemento da árvore, e pode significar a raiz, uma ramificação ouuma folha. O número máximo de nós que levam ao nó mais baixo (a folha) é denominado alturade uma árvore parcial (todos os elementos abaixo de um nó). A árvore é dita balanceada (ou emequilíbrio) se o número mínimo de nós existentes no caminho que leva da raiz de cada árvore par-cial até uma folha diferir no máximo em 1 do número máximo de qualquer outro caminho. Umaexplicação detalhada sobre as B-Trees pode ser encontrada no site da Linux-Fibel (www.linuxfi-bel.de/filesys.htm#supp2). O documento “Sorting and searching algorithms”, que se encontra emhttp://epaperpress.com/sortsearch/download/sortsearch.pdf, esclarece como funciona a imple-mentação na linguagem de programação C.

Quadro 1: Árvores Balanceadas

019-022_journal_overview.qxd 9/21/04 9:37 PM Page 21

Page 22: Linux Magazine BR 2

No quesito escalabilidade, o ReiserFSvai muito bem, obrigado: teoricamente,o sistema de arquivos pode ter até, nomáximo, 1 EB (1 Exabyte), bem comopode-se trabalhar nele com arquivos damesma ordem de grandeza.

XFS: o futuro é agoraO XFS, da SGI, [10] está nitidamentemais desenvolvido que o JFS ou o Rei-serFS. Ele dispõe de várias opções paraajuste de desempenho, a documentaçãoé muito boa e, para cada ferramenta con-tida no pacote xfsprogs, existe umapágina de manual (man page) corre-spondente. A implementação de códigoaberto feita pela SGI para o kernel 2.6.0já contempla inclusive ACLs (Access Con-trol Lists). Além disso, o XFS é o únicosistema de arquivos a oferecer umsuporte próprio para quotas. O XFS trataas informações sobre quotas como meta-dados e as integra ao journal. Assim,uma alta consistência para as quotas ficagarantida. Por último, o formato dasquotas é compatível com o utilizado noIRIX, sistema operacional Unix daprópria SGI, o que permite a migração dedados sem a necessidade de conversãodo sistema de arquivos.

O XFS, tal como o JFS, é um sistemade arquivos de 64 bits, estando assimbem equipado para abrigar arquivos deproporções monstruosas. Teoricamente,o sistema de arquivos pode ter, no IRIX,até 18 EB (18 Exabytes, ou seja, 19.327352.832 Gigabytes) e conter, por exem-plo, apenas dois arquivos de 9 Exabytescada. Não é de se admirar que ele seja oúnico sistema de arquivos equipado comjournaling capaz de oferecer redimen-sionamento em tempo de execução.

ConclusõesÀ exceção do Ext 3, os sistemas de arqui-vos com journaling são tecnicamentebem semelhantes. Somente no atualestado de desenvolvimento de cada umdeles há diferenças. Como um sistema dearquivos Ext 2 pode ser facilmente con-vertido em um Ext 3, e este, além disso,é compatível com o primeiro, o Ext 3deverá ser a primeira escolha para mui-tos. O que falta ao sistema em desempe-nho, ele compensa em robustez. Quem,por outro lado, estiver procurando porum sistema de arquivos com escalabili-dade enorme e alta performance, nãotem como escapar do XFS. Uma gamacompleta de aplicações e sua boa docu-mentação são vantagens adicionais dosistema de arquivos desenvolvido pelaSGI. A utilização do ReiserFS 3.6 estáindicada para casos em que muitosarquivos pequenos devem ser manipula-dos pelo sistema. Vamos ver o que a ver-são 4 do sistema nos reserva. O JFSainda não chegou ao mesmo estágio queo dos outros sistemas de arquivos, demodo que o seu uso ainda não é reco-mendado em ambientes de produção. ■

ReiserFS: preferência por“arquivinhos”Há tempos se diz que a quarta versão dosistema de arquivos de Hans Reiser [8]logo fará a alegria dos servidores FTPdeste mundo. Vamos reservar para umafutura edição da Linux Magazine umaanálise do desempenho do recém-lan-çado Reiser4, como a nova versão do sis-tema de arquivos é chamada. No pre-sente artigo examinamos com cuidado osrecursos das últimas atualizações da ver-são 3, mais especificamente o ReiserFS3.6, que se encontra no kernel Linuxatual. Quem quiser se manter informadosobre as novidades da versão 4 deve sepreparar para participar de uma lista dediscussão bem ativa.

O ponto alto do ReiserFS é a sua exce-lente performance quando se encontramno sistema muitos arquivos pequenos.Pequeno aqui significa menores que 1kB. Arquivos com menos que 1024 bytessão muito comuns em servidores de“news”, razão pela qual administradoresde sistemas recomendam o uso do Rei-serFS para este tipo de serviço. Por outrolado, o sistema não apresenta umdesempenho tão bom quando tem queacrescentar e excluir muitos arquivos,como acontece, no diretório /tmp.

O ReiserFS manipula arquivos comgrande eficiência no que diz respeito aaproveitamento de espaço em disco: elenão os aloca em blocos de tamanho fixode 4 kB, como é tradição, mas em blocoscujo tamanho é exatamente o necessário.Adicionalmente, ele comprime a partefinal de vários arquivos que não preen-cham um bloco inteiro, e as grava juntasem um bloco separado (técnica chamada“tail packing”).

22 Setembro 2004 www.linuxmagazine.com.br

Sistemas de ArquivosCAPA

[1] Fragmentação:http://www.informatik.uni-frankfurt.de/~loizides/reiserfs/thesis.html

[2] Curso sobre ACLs: http://acl.bestbits.at/

[3] ACLs no SuSE:http://portal.suse.de/sdb/de/2002/10/81_acl.html

[4] Dump/Restore para o Ext 2/3:http://sourceforge.net/projects/dump/

[5] Xfsprogs: ftp://oss.sgi.com/projects/xfs/

[6] Software de backup:http://www.linuxmafia.com/faq/Admin/tape-backup.html

[7] Third Extended Filesystem (Ext3):http://www.zip.com.au/~akpm/linux/ext3/

[8] ReiserFS: http://www.namesys.com/

[9] JFS: http://oss.software.ibm.com/jfs/

[10]XFS: http://oss.sgi.com/projects/xfs/

[11] White Paper da Red Hat sobre o Ext 3:http://www.redhat.com/support/wpapers/redhat/ext3/index.html

[12] Journaling Filesystems:http://en.wikipedia.org/wiki/Journaling_filesystem

[13] Introdução ao Reiser4:http://www.kuro5hin.org/story/2003/8/9/172159/7912

INFORMAÇÕES

Recurso Ext3 JFS ReiserFS XFSJournaling: Dados/Metadados s/s n/s n/s n/sJournal Replay Kernel/Aplicações s/s n/s s/n s/nJournal Interno/Externo s/s s/s s/n s/sDiretórios baseados em B-Trees n s s sMapa dinâmico de alocação de inodes n s s sAtributos estendidos/ACLs Posix s/s n/s n/n s/sQuotas s Patch Patch sAumento/redução offline s/s n/n s/s s/nAumento/redução online n/n s/n s/n n/Tamanho de bloco implementado (em kB) 1,2,4 4 4 4Tamanho máximo do sistema de arquivos 16 TB 32 PB 1 EB 1,125 EBTamanho máximo dos arquivos 2 TB 4 PB 1 EB 562,5 PB

Recursos dos sistemas de arquivos

019-022_journal_overview.qxd 9/21/04 9:37 PM Page 22

Page 23: Linux Magazine BR 2

CAPAComparativo de Desempenho

23Setembro 2004www.linuxmagazine.com.br

Briga pela“pole”Após a realizaçãodos testes de de-sempenho, não noscausou espanto verque o JFS foi, delonge, o vencedor. Entretanto, a versãopara Linux do sistema de arquivos decódigo aberto da IBM traz claramentemenos opções de ajustes que os outrossistemas (ver artigo à página 26). Con-tudo, ele se saiu bem em todos os testes,estando quase sempre entre os trêsprimeiros. O segundo lugar foi um páreoduro, visto que os três concorrentes: oReiserFS, o XFS e o Ext 2 travaram umabela batalha pela colocação.

Finalmente, o consumo de CPU guioua decisão, que deu o segundo lugar aoeconômico XFS. O ReiserFS mostrou seupoderio com muitos arquivos pequenosem um mesmo diretório. Os bons valoresde velocidade de escrita e leitura foramobtidos ao custo de uma carga de CPUrazoavelmente grande. O uso do Rei-serFS deveria, por isso, ter como pré-re-

quisito um hardware mais poderoso. Emvez disso, os administradores de sis-temas devem optar pelo JFS ou XFS, quese saem bem melhor com hardwaremenos poderoso.O Ext 2 continua a convencer, com umaperformance apenas ligeiramente piorque a dos três sistemas citados até agora.Ele realiza todas as tarefas com desem-penho entre médio e bom e não sobre-carrega muito o processador. O Ext 3,entretanto, apresentou valores muitoruins – ao menos em nossos testes.Motivo: configuramos o Ext 3 para ope-rar propositalmente não em seu modomais rápido (ordered), mas no que ofer-ece mais segurança (journal). Assim, oExt 3 atualiza primeiro os metadados edepois os escreve imediatamente no sis-tema de arquivos.

T estes de desempenho são impor-tantes indicadores de performan-ce. Quando aplicados a sistemas

de arquivos, eles indicam como o sis-tema reage a certas operações comoleitura e escrita e o quanto é exigido doprocessador. Quem, por exemplo, arma-zena muitos arquivos pequenos em umdiretório, necessita de um sistema dearquivos que vasculhe rapidamente odiretório e que se fragmente muito lenta-mente. Por outro lado, administradoresde bancos de dados estão mais interessa-dos em suporte a grandes arquivos eesperam uma excelente performance deleitura e escrita.

A Linux Magazine examinou o com-portamento dos sistemas de arquivos Ext2, Ext 3, JFS, ReiserFS e XFS com o con-junto de testes de desempenho Fsbench[1], que se compõe essencialmente deum script escrito em Python que chamaos verdadeiros programas de compara-ção de desempenho: o Bonnie++ [2] eo Iozone [3], fornecendo-lhes os parâ-metros apropriados (veja o Quadro“Ambiente de Testes”).

Testes de desempenho de sistemas de arquivos são provas

de fogo: servem para medir a velocidade de leitura e escrita

de informações. A Linux Magazine colocou a performance

do Ext 2/3, JFS, Reiserfs e XFS à prova.

POR MIRKO DÖLLE E JÖRG REITTER

Ext 2/3, JFS, Reiser e XFS, quem ganha essa?

Provão!

Figura 1:Taxas de transferência com arquivos de 1 GByte. Figura 2:Taxas de transferência com arquivos de 4 GBytes.

46

Ext 2

179

180

160

140

120

100

80

60

40

20

0

MByte/s Ext 3

174

49

JFS

177

54

ReiserFS 3.6

176

47

XFS

178

12

Seq.

Out

put

Seq.

Inpu

t

47

Ext 2

175

180

160

140

120

100

80

60

40

20

0

MByte/s Ext 3

174

52

JFS

176

51

ReiserFS 3.6

174

33

XFS

177

12

Seq.

Out

put

Seq.

Inpu

t

Benchmark: Bonnie++ 1.0.3a Benchmark: Bonnie++ 1.0.3a

023-025_fs_comparision.qxd 9/21/04 9:39 PM Page 23

Page 24: Linux Magazine BR 2

Comparativo de DesempenhoCAPA

24 Setembro 2004 www.linuxmagazine.com.br www.linuxmagazine.com.br

Nos mínimos detalhes…O Bonnie++ realiza diversos testes e osagrupa em saída seqüencial, entradaseqüencial, buscas aleatórias, criaçãoseqüencial e criação aleatória de arqui-vos. A saída seqüencial mede a taxa deleitura por caractere e por bloco. Damesma forma, o Bonnie mede o compor-tamento com a entrada seqüencial. Osgráficos mostram a performance detransferência de entrada e saída seqüen-ciais por bloco. Percebe-se imediata-mente que o desempenho de leitura detodos os sistemas de arquivos são relati-vamente iguais, não importando se eleslidam com um arquivo de 1 GByte(Figura 1) ou de 4 GBytes (Figura 2).Totalmente diferente é a performance deescrita (Figura 3), na qual arquivos de 1,2 e 4 GByte foram utilizadas nos testes.

O desempenho do Ext 2 ainda é bemsemelhante ao do JFS, XFS e ReiserFS. Omesmo não se pode dizer do sistema dearquivos Ext 3. É uma surpresa que omodo journal emperre tanto o sistema dearquivos. Salta aos olhos a queda de per-formance com arquivos de 2 GB – prob-lema que o ReiserFS também demonstra.

O sistema de arquivos JFS, da IBM,apresenta desempenho constante e,mesmo com tamanhos crescentes dearquivos, consegue um resultado melhor.

Com o XFS acontece precisamente oinverso. O sistema de arquivos da SGI émuito eficiente com arquivos de 1GByte,contudo perde consideravelmente emperformance com arquivos de 2 e 4GByte. Até mesmo o Ext 2 é nitidamentemais rápido com arquivos de 4GByte.

Os resultados alcançados pelo Bonniecom as buscas aleatórias não são mostra-dos nos gráficos. Nesta categoria doteste, o programa acessa blocos escolhi-dos aleatoriamente. Aqui o Ext 2 e o Ext3 ficam claramente na frente e mostram,com todos os tamanhos de arquivos, per-formances de um a dez por cento mel-hores que os outros sistemas.

No teste de criação seqüencial dearquivos o Ext 2 é realmente bom: criaem média aproximadamente quatrovezes mais arquivos por segundo que osoutros. No teste de leitura o Ext3 e o XFSbrigam pela “pole position”. Somente noteste de exclusão de arquivos o ReiserFSdemonstra que está bem acima da médiae mostra em casos isolados um desem-penho mais de 100 por cento melhor queo dos outros sistemas.

Ascensão e quedaO teste de criação aleatória mostra omesmo quadro: o Ext 2 e o Ext 3 criamarquivos a uma taxa extremamente alta.

Do outro lado, na leitura e na exclusãode arquivos, o ReiserFS tem desempenhonitidamente melhor. O XFS fica bematrás da concorrência nos testes de cri-ação. Por outro lado, ele não chega ausar nem 0,1% do tempo de CPU, sobre-tudo durante o teste de exclusão dearquivos (o que ocorre também com oJFS) e com isso alcança resultados de1% a 400% melhores que o Ext2, queconsome entre 2 e 7 por cento do tempodo processador. E por falar em utilizaçãode processador, neste quesito o ReiserFSfaz feio: apesar de excluir arquivosmuito rapidamente, ele utiliza no mín-imo 7 por cento da CPU, chegando ausar até 99 por cento, no teste de criaçãoaleatória: exclusão de 10.000 arquivos de2 GByte, o que não é exatamente odesempenho ideal para um servidor emambiente de produção.

Iozone: Desempenho deleitura e escritaO benchmark Iozone cria arquivos com1, 2 e 4 GByte e utiliza blocos de valoresentre 64 bytes e 16 kBytes para os testes.Como na análise anterior, tanto a medidada performance de escrita quanto da deleitura eram de nosso interesse. A Figura4 mostra a performance de escrita comarquivos de 2 GByte. Foram empregados

Figura 4: Desempenho de escrita com arquivos de 2 GBytes.

Figura 5: Desempenho de leitura com arquivos de 2 GBytes.

39

F-Write

70

45

40

35

30

25

20

15

10

0

MByte/s

50

55

60

65

5

45 45

27 26

21

11 11 11 9 9 9

42

39

54

31

37 38 40

44

52

37

47 47

41

38 38

70

47

63

Reco

rd: 5

12 B

yte

Reco

rd: 4

096

Byte

Reco

rd: 1

6384

Byt

e

Reco

rd: 5

12 B

yte

Reco

rd: 4

096

Byte

Reco

rd: 1

6384

Byt

e

Ext 2F-Rewrite F-Write

Ext 3F-Rewrite F-Write

JFSF-Rewrite F-Write

ReiserFS 3.6F-Rewrite F-Write

XFSF-Rewrite F-Write F-Rewrite

48

Randon-Read

130

80

70

60

50

40

30

20

10

0

MByte/s

90

100

110

120

89

122

43

94

116

52

89

121

44

96

115

48

102

127

43

98

120

47

99

119

43

94

115

48

100

126

44

97

119

Reco

rd: 5

12 B

yte

Reco

rd: 4

096

Byte

Reco

rd: 1

6384

Byt

e

Reco

rd: 5

12 B

yte

Reco

rd: 4

096

Byte

Reco

rd: 1

6384

Byt

e

Ext 2Strided-Read Randon-Read

Ext 3Strided-Read Randon-Read

JFSStrided-Read Randon-Read

ReiserFS 3.6Strided-Read Randon-Read

XFSStrided-Read Randon-Read Strided-Read

Benchmark: Iozone 3_217

Benchmark: Iozone 3_217

023-025_fs_comparision.qxd 9/21/04 9:39 PM Page 24

Page 25: Linux Magazine BR 2

os testes F-Write e F-Rewrite nas me-dições. Estes utilizam a função fwrite() –da biblioteca stdio –, que escreve no sis-tema de arquivos nos modos “buffered”e “blocked”.

Com o teste F-Write, o Iozone cria umnovo arquivo, e isso gera um trabalhoextra de gravação dos metadados, o queprejudica o desempenho. Já o teste F-Rewrite escreve num arquivo já exis-tente. O gráfico da Figura 4 ilustra muitobem este comportamento, ao menospara o XFS e o ReiserFS. O XFS bate delonge a concorrência em ambos os tes-tes. O desempenho do JFS é relati-vamente equilibrado. Entretanto, eleobviamente trabalha melhor quantomaior for o arquivo. Contudo, a relaçãoentre os desempenhos sob o F-Write e oF-Rewrite é desigual, o que ocorre tam-bém com o Ext 2, cuja performance sobo F-Rewrite despenca. Aqui, o Ext 3 cainovamente na categoria dos “lanternas”.

Os gráficos na Figura 5 mostram umdesempenho homogêneo. Nela colo-camos lado a lado os testes de leituraaleatória e leitura seqüencial intervalada(“strided”). O ouro olímpico nas duasmodalidades vai para o JFS. As distân-cias são, contudo, relativamente peque-nas. Vê-se bem no gráfico as taxas detransferência crescentes quanto maiorfor o registro a ser lido. A princípio osresultados do Iozone no desempenho deleitura coincidem com os do Bonnie. Osdois indicam uma performance de leituraconstantemente boa, indiferentementese seqüencial ou aleatória e aplicada apequenos ou grandes registros.

Outros comparativos dedesempenho.A Linux Magazine não é a única arealizar testes de desempenho em sis-temas de arquivos. Usuários e os pró-

prios desenvolvedores dos benchmarkspublicam resultados na Web.

O site do Fsbench já aplicou a combi-nação Bonnie-Iozone ao kernel 2.6. Con-tudo, os resultados não diferem dos daLinux Magazine, que foram realizadoscom o Kernel 2.4.19, rodando no SuSELinux Enterprise Server 8 (veja quadro“Ambiente de Testes”). O JFS e o XFSoferecem os melhores resultados deponta a ponta. Para eles não faz difer-ença se os arquivos são grandes ou pe-quenos, nem se há muitos ou poucosdeles em um diretório. Para a versão betado ReiserFS 4 o resultado do Fsbenchdetermina um aumento de desempenhode 65% sobre a versão 3.6, usada emnossos testes. Com isso o ReiserFS se

projeta no quesito efi-ciência, mas ainda as-sim, não importa aversão, é um consumi-dor voraz de tempo deprocessador.

O Ext 2 novamentese sai bem, tanto noque diz respeito à per-formance nos testes deescrita e leitura quantona demanda de CPU,esta última pelo me-

nos duas vezes melhor que a do Reis-erFS. Os resultados coincidem igualmen-te no que concerne ao Ext 3. No lento,porém seguro modo “journal”, ele ficabem atrás dos outros sistemas dearquivos. Assim que ele é configuradonos modos “ordered” ou “writeback”,quase não há mais diferenças entre osseus resultados e os do Ext 2.

O leitor encontrará outros testes com-parativos nos sites da Guru-Labs [4], quecomparam o Ext 3 com o ReiserFS 3.6,utilizando para isso o benchmark decódigo aberto Postmark da Netapps [5].Este benchmark visa especificamenteaplicativos como servidores de rede eemail. Lá, o Ext 3 (em modo “ordered”)é o vencedor indiscutível. ■

CAPAComparativo de Desempenho

25Setembro 2004www.linuxmagazine.com.br

[1] Fsbench: http://fsbench.netnation.com/

[2] Bonnie++:http://www.coker.com.au/bonnie++/

[3] Iozone: http://www.iozone.org/

[4] Guru Labs:http://www.gurulabs.com/ext3-reiserfs-2.html

[5] NetApps:http://www.netapp.com/tech_library/postmark.html

INFORMAÇÕES

O hardware que serviu de base para nossostestes foi o sistema de armazenamentoconectado à rede Zero-One RM-250, daempresa alemã CTT (www.ctt.de, parausuários finais www.mailag.de), um sistemaPentium 4, rodando à 2,4 GHz, com 512MByte de RAM, uma controladora RAID SATAmodelo 8506-8 da empresa 3Ware e oito dis-cos rígidos Maxtor, modelo 7Y250M0 (SATA).Cinco discos rígidos foram agrupados emuma configuração RAID5 com hot-spare,sendo que o sexto foi usado para a insta-lação do SuSE Linux Enterprise System 8na sua configuração padrão (kernel2.4.19-120).

O benchmark para sistemas de arquivosque foi utilizado vem de [1] e precisouapenas de ajustes mínimos para rodarno hardware de testes: primeiro os cam-inhos para os programas do benchmark(Bonnie++ e Iozone) não estavam corre-tos, depois o resultado do comandomkfs.reiserfs -V, que serve para indicar aversão do sistema de arquivos, retornou mis-teriosamente 1 ao invés de 0, o que foi cor-rigido utilizando-se /bin/true.

O programa Fsbench chama o Bonnie++ e oIozone com os parâmetros correspondentes.Em nossos testes foi usadas a versão 1.03ado Bonnie++ e a versão 3_217 do Iozone,ambos compilados com o a versão 3.2 docompilador GCC, presente no SuSE LinuxEnterprise Server 8.

Foram utilizados 16 GBytes de espaço no sis-tema RAID, pois a controladora 3Ware usafatias de dados de 64 KBytes, mas estesdados são distribuídos igualmente por todoo sistema RAID.

Ambiente de testes

A máquina utilizada para os testes comparativos foium Zero-One RM-250 da empresa CTT, com oito dis-cos rígidos SATA e uma controladora RAID 3Ware.

46

Ext 2

37

55

45

40

35

30

25

20

15

10

0MByte/s Ext 3

49

JFS

51

54

ReiserFS 3.6

44

47

XFS

36

12

Seq.

Out

put

(1 G

Byte

)

Seq.

Out

put (

2 GB

yte)

5

50

47

52 51

33

Seq.

Out

put (

4 GB

yte)

12 12

Benchmark: Bonnie++ 1.0.3a

Figura 3:Taxas de transferência para arquivos de diversos tamanhos.

023-025_fs_comparision.qxd 9/21/04 9:39 PM Page 25

Page 26: Linux Magazine BR 2

Otimização de discos rígidosCAPA

26 Setembro 2004 www.linuxmagazine.com.br

A opção -j cria o journal e o coloca noarquivo .journal no diretório raiz da par-tição. Para concluir, modifique o tipo dosistema de arquivos de Ext 2 para Ext 3no arquivo /etc/fstab. Esta é uma dasraras ocasiões em que excepcionalmenteé mais simples reinicializar o sistemapara que as modificações surtam efeito.Se depois você quiser converter o sis-tema de arquivos novamente em Ext 2,basta desmontá-lo e montá-lo nova-mente com o tipo ext2. Se quiser tornarisso permanente, modifique o tipo do sis-tema de arquivos novamente, alterandoo arquivo /etc/fstab.

Quanto maior o sistema de arquivos,mais tempo leva a verificação de integri-

dade, que acontece a intervalos pré-determinados. Caso os intervalos sejammuito espaçados ou curtos demais (porexemplo, como no caso de testes inten-sivos), este comportamento pode seralterado de acordo com as necessidadesdo usuário. Com a opção -i do e2fsckajusta-se os dias, semanas ou meses nosquais o programa deve executar a verifi-cação de integridade do sistema dearquivos, que pode também depender donúmero de vezes que ele é montado – oparêmetro -c é usado para configurar osistema desta forma. O argumento 0,usado em ambas as opções, desativacompletamente a verificação do sistemade arquivos.

A manutenção de sistemas dearquivos não é mais uma açãonecessariamente demorada. Tan-

to o JFS, quanto o ReiserFS e o XFS lidambem com grandes partições. O JFS e oXFS não precisam de mais que um piscarde olhos para formatar um disco rígidode 1 TByte, operação que o ReiserFS levameio minuto para fazer. Apenas o Ext 3ainda deixa o usuário esperando porcerca de uma hora, o que não deveria serde admirar, afinal, no fundo ele continuasendo um sistema de arquivos Ext 2,equipado com recursos de journaling.

Além dos programas de formatação,existem ainda muitos outros utilitáriospara cada sistema de arquivos. Algunsdeles podem ajudar a melhorar a perfor-mance. Outros são usados somente naocorrência de erros. A seguir apresenta-mos os comandos mais importantes. Osquadros listam as opções de montagem.Elas são utilizadas ou a partir da linha decomando com o comando mount ou dealterações efetuadas pelo usuário noarquivo /etc/fstab.

Ext 2/3: rico em opçõesÉ uma boa idéia equipar um sistema dearquivos Ext 2 com um journal, e atual-izá-lo assim para Ext 3. Todo o processoé simples e não causa problemas; pelomenos os usuários nunca relataram nadanos fóruns específicos. Ainda assim,nunca é uma má idéia fazer um backupde todos os seus dados importantesantes da operação.

Para usar o Ext 3, o suporte a Ext 3precisa estar ativado no kernel. Se vocêequipa a partição root com Ext 3, o dri-ver do Ext3 deve ser, via de regra, compi-lado diretamente no kernel. Se setrabalha com um disco de RAM (initrd),entretanto, pode-se compilar o drivercomo módulo. A partir do momento emque o suporte a Ext 3 está disponível, aatualização pode começar. Para estafinalidade basta utilizar o programatune2fs, contido no pacote e2fsprogs [1]:

tune2fs -j /dev/hda2

Os programas de formatação atuais fazem muito mais do que apenas criar sis-

temas de arquivos. Como caixas de ferramentas bem organizadas, eles ofere-

cem um utensílio ideal para cada tarefa. Quem quiser aumentar o desempenho

do seu sistema pode arrancar até o último bit de desempenho do Ext 3, JFS,

ReiserFS ou XFS se utilizar corretamente as opções do comando mount.

POR JÖRG REITTER

Workshop: Ferramentas para manipulação de sistemas de arquivos

Oficina de formatação

026-030_fs_tools.qxd 9/21/04 9:41 PM Page 26

Page 27: Linux Magazine BR 2

CAPAOtimização de discos rígidos

27Setembro 2004www.linuxmagazine.com.br

Pode formatar!Para começar, o ideal é realizar algunstestes em uma partição pequena. Semopções adicionais, o comando de forma-tação mkfs.ext3 determina os parâmetrosnecessários automaticamente. Assim, érelativamente simples formatar uma par-tição. Digite:

mkfs.ext3 /dev/sdb2

O tamanho de bloco apropriado é calcu-lado pelo programa a partir do tamanhoda partição. Se este não for o comporta-mento desejado, o próprio usuário podefornecer o tamanho do bloco a ser uti-lizado (1,2 ou 4 kByte):

mkfs.ext3 -b 2048 /dev/sdb2

O mkfs.ext3 oferece também opções comfinalidades específicas. Com a opção -T ousuário ajusta o desempenho do sistemade arquivos de acordo com o tamanhodos arquivos a ser manipulados. Ba-seado nisso, o programa determina asconfigurações ideais. Os tamanhosdisponíveis são 4 KBytes (news), 1MByte (largefile) e 4 MBytes (largefile4).O comando a seguir parte do princípiode que a maioria dos arquivos do sis-tema de arquivos terão 1 MByte:

mkfs.ext3 -T largefile

Blocos malvados!Nunca é demais verificar a integridadedo disco rígido antes de instalar o sis-tema de arquivos. A opção -c instrui oprograma mkfs.ext3 a examinar o disco àprocura de blocos ruins – os famosos“bad blocks”. Esta opção deve ser apli-cada principalmente em hardware maisantigo. Para saber exatamente como omeio físico do disco está, pode-se especi-ficar a opção -c duas vezes seguidas, oque instrui o mkfs.ext3 a executar umteste (destrutivo!) de leitura e escrita(“read-write”), ao invés de somente umteste de leitura (“read”). Entretanto, estetipo de teste, além de arriscado, demoraduas vezes mais para terminar.

O mkfs.ext3 também conta comopções de journal. O usuário selecionase o journal deve ser armazenado inter-namente no superbloco (size=1024) ouexternamente, em outro dispositivo(como em device=/dev/hdc2). No caso

da variante externa, o journal já deveexistir antes que o usuário crie o sistemade arquivos via mkfs.ext3. Neste caso,dois passos são necessários: em primeirolugar devemos formatar a partição ondeo journal ficará. Ela deve ter o mesmotamanho de bloco (1, 2 ou 4 KBytes) dosistema de arquivos que vai utilizar ojournal nela armazenado. O comando aseguir gera o journal para um sistema dearquivos em /dev/hdb1 no dispositivoexterno /dev/hda9:

mkfs.ext3 -O /dev/hdb1 /dev/hda9

Para informar ao sistema de arquivos em/dev/hdb1 onde encontrar o journalexterno, usa-se o parâmetro -J do co-mando tune2fs:

tune2fs -J device=/dev/hda9

Após o usuário determinar todas asopções para criar o sistema de arquivosde acordo com as suas necessidades, aopção -n pode ser utilizada para simulara criação do sistema de arquivos. Destemodo, o usuário vê imediatamente se asopções escolhidas são adequadas.

Existem ainda outras opções quepodem ser interessantes em casos espe-ciais. Por exemplo, uma delas reservamais de 5% do espaço disponível na par-tição para o usuário root (-m), enquantooutra desativa funções que são ativadaspor padrão (-O).

Outros programas importantes são odumpe2fs, que mostra informações sobreo sistema de arquivos, fornecendo o con-teúdo do superbloco e dos grupos debloco, ou o e2fsck, que verifica a integri-dade de sistemas de arquivos Ext 2 e Ext3, à procura de erros. O e2fsck normal-mente não precisa ser utilizado com umsistema Ext 3, a única exceção é quandoo superbloco está danificado e necessitade verificação. O uso do LVM (veja oartigo na página 38 desta edição) per-mite que se aumente ou diminua, semperda de dados, o tamanho de uma par-tição com o utilitário e2fsadm, que con-trola o redimensionamento on-line eoff-line. Os recursos de “dump” e “res-tore” do Ext 2 continuam funcionandotambém com o Ext 3, de modo que ousuário ou o administrador do sistemanão precisa mudar seus hábitos, nemsuas ferramentas.

Você encontra informações detalhadassobre o sistema de arquivos Ext 3 em

/usr/src/linux/Documentation/filesystems/ext3.txt.

Nota: O Ext 2 ignora opções de quota comogrpquota, noquota, quota e usrquota semmostrar mensagens de erro.

data=journal:Os metadados vão primeiropara o journal, e somente então são escritosno sistema de arquivos (metadados e jour-naling de dados).

data=ordered: Primeiro os dados sãoescritos no sistema de arquivos; somenteentão os metadados são adaptados.

data=writeback: Os dados “reais”podem serescritos no sistema de arquivos antes oudepois da atualização do journal de metada-dos.

journal=update: Atualiza o journal para oformato corrente.

journal=inum: Com inum o super-usuáriofornece o número do inode que representa oarquivo do journal (ignorado, caso já existaum journal).

noload: O Journal não é carregado.

bsddf: O comando df reage como no BSD.

minixdf: O comando df reage como no Minix

check=none, nocheck: Não faz nenhumaverificação suplementar de bitmaps nodecorrer da montagem.

debug: O kernel envia informações suple-mentares de depuração ao Syslog.

errors=continue: A montagem é levada adi-ante, mesmo que ocorra um erro no sistemade arquivos.

errors=remount-ro: No caso de erro, o sis-tema de arquivos é montado novamenteapenas em modo de leitura.

errors=panic: A máquina pára no caso deerro no sistema de arquivos.

grpid, bsdgroups: Dá a um objeto a mesmaID de grupo do objeto pai.

nogrpid, sysvgroups: Objetos novos recebema ID de grupo do criador.

resuid=UID: Aqui ficam as IDs de usuáriosque têm acesso a blocos reservados

resgid=GID: Aqui ficam as IDs de grupos quepodem utilizar blocos reservados.

sb=offset: Utiliza um superbloco alternativo,encontrado na posição indicada em offset.

Ext 3: opções do comando mount

026-030_fs_tools.qxd 9/21/04 9:41 PM Page 27

Page 28: Linux Magazine BR 2

nas de manual (man pages) são bemcuidadas e fornecem bons exemplos, aocontrário da documentação disponívelpara os outros sistemas de arquivos.Algumas opções do mount visam igual-mente o tratamento de erros, e forneceminformações importantes para as listasde discussões.

Cadê as aplicações?O comando mkfs.jfs cria um sistema dearquivos, e com o parâmetro -c o usuáriopode procurar por blocos. Com o JFStambém é possível colocar o journal emoutro dispositivo (-J). O comando:

mkfs.jfs -J journal_dev Uexternal-journal

cria o journal no dispositivo indicado.Subseqüentemente, a ligação entre ojournal e o sistema de arquivos, queagora será realmente gerado, ocorria viadevice, através do comando:

mkfs.jfs -J device=external U-journal device

O dispositivo (device) no final da linhade comando acima é a partição na qual osistema de arquivos será criado (ou seja,algo como /dev/hd?n). Num mesmocomando se pode usar ou journal_dev ouexternal-journal; não ambos ao mesmotempo. Quem precisa de compatibilidadecom o OS/2 deve usar a opção -O, paraque o sistema se torne insensível amaiúsculas e minúsculas. A dimensãodos blocos é fixa em 4096 bytes. Quantoa isto o usuário nada pode fazer.

Há apenas mais três outras aplicaçõesdisponíveis para o JFS: com jfs_tunepode-se, entre outras coisas, listar onome do volume e sua UUID. O co-mando jfs_debugfs executa diversasações de baixo nível, como substituirdados em um offset com uma stringhexadecimal, para fins de depuração deproblemas. Por fim, jfs_fscklog extrai emostra o conteúdo dos relatórios do fsck.

Reiser pé-de-chumboO ReiserFS v3.6 é, ao mesmo tempo, umsistema de arquivos estável e um ótimobrinquedo para os famintos por perfor-mance. O conjunto de programas Reiserfsprogs [3] contém vários utilitários comopções de ajuste e ferramentas de recu-peração de erros. Por outro lado, nãoexistem programas de dump/restore. Épossível, entretanto, aumentar e dimi-nuir o tamanho do sistema de arquivos.

Ainda que o ReiserFS seja o sistema dearquivos padrão do SuSE Linux, não háqualquer informação sobre ele dis-ponível na distribuição. A única coisaque existe é o programa de formataçãomkfs.reiserfs. Não há sequer uma páginade manual ou qualquer sinal de docu-mentação no diretório /usr/share/doc. Ointeressante é que nem mesmo na docu-mentação do kernel aparece algumareferência. Só resta ir à Internet e se diri-gir à homepage do líder do projeto, HansReiser [3]. A visita ao site vale a pena: láse encontram patches especiais para oscorajosos de plantão, e os membros dalista de discussão respondem a muitasquestões, ajudando a eliminar dúvidas.

Um novo sistema de arquivos é criadocom a instrução mkreiserfs. Até existeuma opção de ajuste de tamanho debloco, mas somente a partir da recém-

JFS: Sovina em opçõesA versão do JFS para Linux atingiu umestágio que já permite a realização detestes sem dificuldades. A inadequaçãoatual para o uso em ambientes de pro-dução (pelo menos rodando em Linux)fica clara pela curta lista de opções. Poroutro lado, os resultados do testes dedesempenho aplicados ao JFS atingiramvalores excelentes (ver artigo a partir dapágina 23). Para análises detalhadas háuma interface de depuração no códigodo kernel. Entretanto, no que tange aprogramas que possam interagir com oJFS a nível de usuário (i.e., em “userspace”), o administrador de sistemas sódispõe da ferramenta jfs_fscklog dopacote Jfsutils [2], que extrai o conteúdodo arquivo de registro gerado pelo fsck eo exibe no console.

Comparativamente, o JFS é pobre emde opções a nível de usuário. Assim, nãoé possível, por exemplo, ajustar otamanho de bloco. Entretanto, as pági-

Otimização de discos rígidosCAPA

28 Setembro 2004 www.linuxmagazine.com.br

Você encontra informações detalhadassobre o sistema de arquivos ReiserFS em

http://www.namesys.com/mount-options.html

conv: Com ele o ReiserFS versão 3.6 podemontar um sistema de arquivos versão 3.5,utilizando o código da versão 3.6 para osnovos objetos criados. Depois disso, as ferra-mentas da versão 3.5 do ReiserFS não fun-cionam mais para este sistema de arquivos.

dontpanic (somente para reiserfs-raw):Ignora erros de entrada e saída enquanto ojournal está sendo processado. Somentedisponível em modo reiserfs-raw.

hash=rupasov: Algoritmo de hash muitorápido para diretórios enormes e nomes dearquivos incomuns. Perigosa de usar, umavez que colisões hash são bastanteprováveis. Colisão hash é o nome dado à situ-ação que ocorre quando dois argumentosdiferentes em uma função de hash pro-duzem resultados idênticos.

hash=tea: Altamente aleatório e com baixaprobabilidade de colisões hash, mas reduz odesempenho. Deve ser utilizada caso a men-sagem EHASHCOLLISION ocorra e o algo-ritmo de hash r5 esteja sendo usado.

hash=r5: Hash padrão.

hash=detect: A função hash é reconhecidaautomaticamente quando o sistema dearquivos é montado e escrita no superbloco.

hashed_relocation: Procura ajustar o alo-cador de bloco. Pode melhorar a perfor-mance.Ver também no_unhashed_relocation.

no_unhashed_relocation: Procura ajustar oalocador de bloco. Pode melhorar a perfor-mance.Ver também hashed_relocation.

noborder: Desativa o border allocator algo-rithm. Pode aumentar o desempenho.

nolog: Desativa o Journaling. Pode melhorara performance. Cuidado: isto desativa a recu-peração rápida após um crash.

notail: Desativa a ferramenta tail. Se ocor-rerem problemas com um programa durantesua operação normal (como o lilo, por exem-plo),o ReiserFS não deverá armazenararquivos minúsculos diretamente na árvore.

pgc=LOW, HIGH: Ativa o “coletor de lixo pas-sivo”(Passive Garbage Collector). Só fun-ciona em conjunto com o driver reiserfs-raw,que não está no kernel padrão.

raw: Monta o sistema de arquivos no modoraw. Não disponível no kernel padrão.

replayonly: Reverte as transações no journalsem montar o sistema de arquivos. Geral-mente, somente o fsck utiliza esta opção.

resize=valor: Aumenta o tamanho de umapartição que está montada, em particulardispositivos LVM (Logical Volume Manage-ment). Requer a Resizer-Utility, que pode serbaixada do servidor de FTP da Namesys:ftp.namesys.com/pub/reiserfsprogs.

ReiserFS: Opções de montagem

026-030_fs_tools.qxd 9/21/04 9:41 PM Page 28

Page 29: Linux Magazine BR 2

lançada versão 4 o usuário pode sele-cionar seu tamanho. O ReiserFS sele-ciona outras opções sozinho, caso elasnão sejam especificadas, tais como algo-ritmos de hash (r5, rupasov, tea) ou se aversão 3.5 ou a 3.6 deve ser instalada.

As opções para o journal se restringemao tamanho do journal (-s), se ele seencontra num dispositivo externo (-j) e apartir de qual offset ele começa (-o).Além disso, o usuário pode ajustar adimensão máxima da transação – damesma forma que ocorre em umatransação de um banco de dados,transações de sistemas de arquivos comjournaling tratam seqüências de modifi-cações dos metadados do sistema decomo uma única operação atômica, ouseja, ou ela ocorre inteiramente ou sim-plesmente não ocorre. O ajuste dotamanho da transação é sempre seguro,uma vez que o mkreiserfs o adapta auto-maticamente, caso o usuário use umvalor incorreto. Quem utiliza o UUID(Universally Unique Identifier), podeajustá-lo com a opção -u. Sem estaopção, o mkreiserfs escolhe o valor idealautomaticamente.

ReiserFS na oficinaLogo após a inicialização do sistema,entra em cena o programa de verificaçãode integridade e reparos do sistema dearquivos, reiserfsck. Na ocorrência deum crash, ele controla a consistência dosistema de arquivos, usando a opçãopadrão (check) e restabelece o últimoestado do sistema armazenado no jour-nal. Se o check constata um erro grave,tal como a inconsistência de um sistemade arquivos, ele pede ao usuário paraque tome as providências necessárias, emostra no console a opção correta a serusada. Para inconsistências pequenas,como nomes de diretórios inválidos outruncados, ele recomenda usar a opçãofix-fixable. Entretanto, se o sistema dearquivos foi corrompido de forma maisgrave, o usuário deve tentar a opçãorebuild-tree. O reiserfsck irá reconstruirtoda a árvore do sistema de arquivos,mas isto leva muito tempo. E, piorando asituação, ainda há risco de, ao final daoperação, o sistema de arquivos estarcompletamente destruído.

Se aparecer a mensagem de erroread_super_block: cant’t find a reiserfsfile system, o usuário executar o comando:

reiserfsck -rebuild-sb

Neste caso, o superbloco provavelmenteestá corrompido, de modo que o sistemade arquivos não pode ser acessado. Ousuário pode restaurar o superbloco comrebuild-sb, se na partição realmente hou-ver um sistema de arquivos Reiser.

Expandindo o ReiserFSO programa resize_reiserfs ainda está noestágio beta e por isso deve ser usadocom cautela. A ferramenta é capaz de

aumentar ou reduzir o tamanho do sis-tema de arquivos, que não deve estarmontado durante a operação. Ocomando é bastante simples de usar:

resize_reiserfs -s -2G /dev/hdb2

Com isso diminui-se o tamanho do sis-tema de arquivos em /dev/hdb2 em 2GBytes. Para aumentar o sistema dearquivos em 2 GB, basta substituir -2Gpor +2G. Infelizmente a coisa não éassim tão simples: além de executar a

CAPAOtimização de discos rígidos

29Setembro 2004www.linuxmagazine.com.br

Você encontra informações detalhadassobre o sistema de arquivos XFS em

/usr/src/linux/Documentation/filesystems/xfs.txt.

biosize=valor: Configura o tamanhopreferido de I/O com buffer (o padrão é 64kBytes). O argumento valor deve serexpresso como o logaritmo de base 2 dotamanho de I/O desejado.

ikeep: Mantem grupos de inodes vazios, emvez de devolvê-los ao pool de memória livre.

logbufs= valor: Define o número de buffersde registro (log) na memória central. Pode-seusar valores de 2 a 8. Pode melhorar odesempenho do sistema, mas reduz a quan-tidade de memória livre.

logbsize=valor:Define o tamanho dosbuffers de registro (log). Pode-se usar os val-ores 16, 32, 64, 128 e 256 kBytes. Sistemascom mais de 32 MBytes de RAM usam 32kBytes por padrão.

logdev=dispositivo Cria journals externos.

noalign: As alocações de dados não são ali-nhadas às bordas de “stripe units”.

noatime: Não atualiza os timestampsdurante acessos de leitura.

norecovery: Monta o sistema de arquivossem a recuperação de registro (Log-Recov-ery). O sistema de arquivos deve ser mon-tado em modo somente de leitura.

osyncisosync: Atualiza os timestamps dosarquivos que tem o flag O_SYNC ativado.Sem esta opção a performance deve ser mel-hor. Entretanto, os arquivos perdem a infor-mação de timestamp no caso de um crash.

quota, usrquota, uqnoenforce: Ativa o sis-tema de quotas para usuários , pode forçarque os limites sejam respeitados.

grpquota, gqnoenforce: Ativa o sistema dequotas para grupos e pode forçar que os lim-ites sejam respeitados.

sunit=valor e swidth= valor: Estabelece otamanho da stripe unit em intervalos de 512bytes (unidades de bloco).A opção swidth deveser configurada um múltiplo de valor de sunit.

Importante para dispositivos RAID: caso semodifique o layout do disco depois que o sis-tema de arquivos tenha sido criado, as infor-mações podem ser sobrescritas nosuperbloco pelo usuário root..

nouuid: Não verificar via UUID se o sistemade arquivos for duplamente montado. Útilna montagem do LVM-Snapshots.3

XFS: Opções de montagem

Você encontra informações detalhadassobre o sistema de arquivos JFS em

/usr/src/linux/Documentation/filesystems/jfs.txt.

iocharset=nome: Conjunto de caracteresque o sistema deve utilizar para converter deUnicode para ASCII.

resize=n: Aumenta o tamanho do volumeonline em n blocos.

nointegrity: Evita que o journal seja escrito.Interessante quando o backup de um vol-ume precisa ser restaurado.

integrity: Modificações nos metadados sãoprotocoladas pelo journal. Deve ser utilizadaapós restaurar um backup com a opção noin-tegrity, em conjunto com uma remontagem.

errors=continue: A montagem continua nor-malmente, mesmo se ocorrer um erro no sis-tema de arquivos.

errors=remount-ro: No caso de erro, o sis-tema de arquivos é novamente montado emmodo somente leitura.

errors=panic: A máquina pára no caso deerro no sistema de arquivos.

JFS: Opções de montagem

026-030_fs_tools.qxd 9/21/04 9:41 PM Page 29

Page 30: Linux Magazine BR 2

XFS: para os exigentesJuntamente com o Ext 3, o XFS dá aimpressão de ser o sistema de arquivosmais completo. Ele não só disponibilizanumerosas opções, como também suadocumentação é exemplar. É o único sis-tema de arquivos que permite colocarSysctls no sistema /proc (ver Tabela 1). Otamanho de bloco é ajustável até 4 kB.Usuários esfomeados por performancesão servidos pelo XFS com opções paradiversos tamanhos de buffer. Destaquessão o suporte a quotas no kernel e as fer-ramentas no pacote do xfsprogs [4].Além disso, o pacote contém ferramen-tas de dump/restore próprias do XFS.

Funcionalidade total!Nos casos mais simples, o usuário for-mata uma partição com o comando:

mkfs.xfs /dev/sda1

Se o registro de metadados (o journal)deve residir em outra partição, entramem cena as seguintes opções:

mkfs.xfs -l logdev=/dev/sdb2,Usize=10000b /dev/sda1

Com isto a primeira partição do primeirodisco SCSI é formatada, e o journal écolocado na segunda partição do se-gundo disco.

O XFS se comporta de maneira bas-tante flexível no quesito tamanho debloco – mas infelizmente não no Linux.Blocos de 512 bytes a 64 kB são pos-síveis, mas no Linux o tamanho do blocopode ser, no máximo, do tamanho doPagesize, que é limitado a 4 KBytes emsistemas x86. O usuário pode, entre-tanto, selecionar um tamanho menor.

As outras opções oferecidas pelo XFSestão agrupadas de acordo com funçõespara manipulação da área de dados dosistema de arquivos, de inodes , do jour-nal e para ajuste do tempo real do sis-tema. Cada um dos grupos fornecedados de uma determinada área do discorígido. Assim, pode-se ajustar o tamanhoda fatia de sistemas RAID, ou indicar onúmero de inodes variáveis em porcent-agem. Uma visão geral dos parâmetrosdo sistema é fornecida com a opção -N.

O XFS também pode ser expandido: ocomando xfs_growfs aumenta a seçãodos dados para o maior tamanho pos-sível (com a opção -d ). A opção -D per-mite ao usuário indicar o tamanho dosblocos. A seção de tempo real do sistemade arquivos pode ser aumentada com aopção -r. Como no caso da seção dedados, um tamanho determinado podeser fornecido com a opção -R.

Geralmente se utiliza o aumento dotamanho do sistema de arquivos emcombinação com o LVM (Logical VolumeManager), simplesmente acrescentandoum outro disco ao sistema, e adicio-nando este disco ao grupo de volumes.

Os especialistas também têm com oque se divertir: com xfs_db é possívelmanipular certos blocos, lendo-os ouescrevendo sobre eles. A opção blockusefornece o nome do arquivo que utilizaum determinado bloco. A enorme listade opções do xfs_db mostra que, graçasao XFS, o Linux já tem condições de con-correr de igual para igual com os sis-temas UNIX tradicionais. ■

operação anterior, o usuário ainda temque adaptar a partição ao novo tamanhodo sistema de arquivos. No caso de umaumento, isso deve ser feito antes, no deuma redução, depois. O tamanho dojournal, bem como o tamanho máximode transação, podem ser alterados com oprograma reiserfstune. Além disso, comeste comando o usuário também podemover o journal para um outro disposi-tivo de bloco.

O programa debugreiserfs auxilia nabusca por erros. Chamado sem opções,ele retorna o superbloco do dispositivoindicado. Neste contexto, a opção -p éinteressante: com ela o debugsreiserfsencontra e extrai os metadados do sis-tema de arquivos para que a equipe dedesenvolvedores do ReiserFS possa eli-minar o erro.

debugreiserfs -p /dev/hda2/ | U

gzip -c > hda2.gz

Uma desvantagem para muitos usuáriosde Ext 2/3 que consideram uma migra-ção para o ReiserFS é que, até o momen-to, não existe ferramenta de Dump/Restore para este sistema. As FAQs doReiserFS recomendam usar o utilitáriotar para fazer backups incrementais.Entretanto, usuários da distribuiçãoSuSE-Pro ganham um sistema de back-ups completo via YaST2.

Otimização de discos rígidosCAPA

30 Setembro 2004 www.linuxmagazine.com.br

[1] E2fsprogs: http://e2fsprogs.sourceforge.net/ext2.html

[2] Jfsutils: http://www-124.ibm.com/jfs/

[3] Reiserfsprogs: http://www.namesys.com/download.html

[4] Xfsprogs: http://oss.sgi.com/projects/xfs/download.html

INFORMAÇÕES

• fs.xfs.stats_clear (Min: 0; Padrão: 0; Max: 1):O valor 1 apaga as estatísticas em/proc/fs/xfs/stat. /proc/fs/xfs/stat.

• fs.xfs.sync_interval (Min: HZ, Padrão: 30*HZ;Max: 60*HZ): Estabelece o intervalo em queo xfssyncd escreve os metadados no disco.

• fs.xfs.error_level (Min: 0; Padrão: 3; Max: 11):Define a extensão dos relatórios de erro.Gera informações mais ou menos detal-hadas e rastreia shutdowns do sistema dearquivos. Os seguintes valores de nível deerro estão definidos: OFF: 0; LOW: 1, HIGH: 5.

• fs.xfs.panic_mask (Min: 0; Padrão: 0; Max:127): Opção para depuração de erros. Emcasos específicos, a função BUG() é chamada.

• fs.xfs.irix_symlink_mode (Min: 0; Padrão: 0;Max: 1): Controla se os links simbólicos sãocriados com o modo padrão (0777) ou se omodo depende do padrão especificado comumask (modo IRIX).

• fs.xfs.irix_sgid_inherit (Min: 0; Padrão: 0;

Max: 1):Verifica os arquivos que o usuáriocoloca em diretórios SGID. A opção faz comque o bit ISGID seja apagado, caso o ID degrupo de arquivos novos não coincida comos IDs de grupo efetivas ou com um dos IDsadicionais dos diretórios pais.

• fs.xfs.restrict_chown (Min: 0; Padrão: 0;Max: 1): Verifica se usuários não privilegia-dos podem usar o comando chown paratransferir a propriedade sobre arquivos aoutros usuários.

• vm.pagebuf.stats_clear (Min: 0; Padrão: 0;Max: 1): O valor 1 apaga imediatamente todasas estatísticas em /proc/fs/pagebuf/stat.

• vm.pagebuf.flush_age (Min: 1*HZ; Padrão:15*HZ; Max: 300*HZ): A idade a partir da qualo conteúdo dos buffers de metadados sãoescritos nos dispositivo de bloco.

• vm.pagebuf.flush_int (Min: HZ/2; Padrão:HZ; Max: 30*HZ): O intervalo no qual a listade buffers de metadados é verificada.

Sysctls do XFS

026-030_fs_tools.qxd 9/21/04 9:41 PM Page 30

Page 31: Linux Magazine BR 2

a inicialização do sistema, independentede estar criptografado, e a chave de crip-tografia deve ficar em um chaveiro USB.Esta chave substitui a senha comum, ser-vindo de base para a codificação do sis-tema de arquivos durante a inicializaçãodo dispositivo cryptoloop. A vantagemdeste método é que a chave consiste devalores aleatórios e é bem mais longaque a maioria das senhas. Assim, os cha-mados “ataques de dicionário” sãoexcluídos automaticamente: um agressorteria que realmente tentar todas as possi-bilidades (força bruta) para descobrirqual é a chave de codificação. É quaseimpossível que ele obtenha sucesso comuma chave de tamanho razoável.

No Linux há diversas possibilidades decriptografia de sistemas de arquivosinteiros. A criptografia via dispositivoloopback, que se serve das funções crip-tográficas do kernel [2], oferece a maio-ria dos algoritmos disponíveis e, alémdisso, é muito simples de usar quandocomparada com outras soluções.

SanduícheOs dispositivos de loop utilizam umacamada intermediária, que se situa entreo dispositivo de bloco (por exemplo/dev/hda1) e o sistema de arquivos nelacontido. Normalmente o sistema dearquivos acessa o dispositivo de blocodiretamente, como mostrado na Figura 2.

Dispositivos de loop comportam-secomo dispositivos de bloco comuns.Entretanto, eles retransmitem os dados

para um dispositivo normal ou para umarquivo (Figura 2). Qualquer um que játenha montado uma imagem ISO com aopção loop conhece este procedimento.

Os dispositivos de loopback tambémsão capazes de modificar os dadosdurante a operação. Com o dispositivocryptoloop, o kernel intervém a cadaescrita e leitura para codificar e decodifi-car os dados (Figura 2). O usuário nãopercebe nada – com exceção do pedidoinicial de uma senha. Mesmo o pedidode senha pode ser evitado, se a chave foralojada num chaveiro USB. Infelizmenteos patches necessários para criar siste-mas de arquivos criptografados no Linuxnão estão contidos nos kernels de todasas distribuições Linux por padrão.

• Para o Debian Sarge é necessáriorecompilar o kernel juntamente com opacote kernel-patch-cryptoloop.

• A partir de sua versão 8, o Red Hat(agora Fedora) já dispõe de suporte asistemas de arquivos com cryptoloop.Contudo, somente o módulo AES estádisponível por padrão.

• O kernel padrão do Gentoo, gentoo-sources já contém o patch necessáriohá muito tempo. Porém, é preciso queas opções necessárias sejam seleciona-das antes da compilação (Figura 3).

Pode-se verificar facilmente se a distri-buição fornece os patches necessários:produza um arquivo codificado e tenteintegrá-lo a um sistema de arquivos nor-

Usuários de laptop têm os seusdados à mão aonde quer queestejam. O que por um lado é

prático, torna-se um problema quando oportátil é roubado. Normalmente em taiscasos, os arquivos contidos no sistemacaem rapidamente em mãos erradas.Mesmo aqueles que somente levam oequipamento para reparos podem cairnas mãos de um técnico curioso, queterá tempo mais do que suficiente parafuçar nos arquivos particulares.

Existem técnicas de codificação para aproteção de dados confidenciais, e elaspodem ser instaladas sem muito traba-lho: A GNU Privacy Guard (GPG, [1])codifica arquivos individuais sobdemanda. Porém, para proteger váriosarquivos, este procedimento é muito des-confortável. Em tais casos, é melhorcodificar todo o sistema de arquivos deuma vez. A distribuição SuSE já mostrahá anos (ver Figura 1) que isso pode serfeito de forma amigável. O sistema dearquivos criptografado pode ser criadodurante a instalação, caso desejado. Emoutras distribuições, isso pode ser feitocom algum trabalho manual – e mesmomelhorado em alguns pontos. A distri-buição Gentoo facilita muito a vida dousuário neste particular.

Casa trancadaTomamos como exemplo para o nossoartigo a criptografia do sistema de arqui-vos instalado e montado separadamenteem /home. Ele deve ser montado durante

Criptografar sistemas de arquivos inteiros é também

uma maneira de proteger os dados em caso de roubo

do disco rígido. Enquanto os usuários de SuSE Linux

podem ativar a criptografia do sistema de arquivos

durante a instalação, algum trabalho manual é neces-

sário para usuários de outras distribuições.

POR CHRISTIAN NEY

Sistemas de arquivos criptografados para Debian, Gentoo e Red Hat

Top Secret!

31Setembro 2004www.linuxmagazine.com.br

CAPACriptografia de sistemas de arquivos

031-035_fs_crypto.qxd 9/21/04 10:56 PM Page 31

Page 32: Linux Magazine BR 2

Também é ne-cessário adicionarsuporte a chavei-ros USB no kernel.As opções apropria-das para isso sãoUSB-Mass-Storage,SCSI-Disk-Supporte SCSI emulationsupport. A maioriados kernels quevêm com as distri-buições atuais, nor-malmente já con-tém os módulosapropriados.

Ferramentas do usuárioAlém do suporte à codificação e decodifi-cação no kernel, são necessários progra-mas no espaço do usuário paracriptografar os sistemas de arquivos edepois montá-los. Para isso o losetup e omount (presente no pacote util-linux)precisam ser instalados e configurados.

• O pacote util-Linux da Debian Sarge jáé preparado para as condições de siste-mas de arquivos codificados, nãosendo necessário um patch.

• Até a versão 9 do Red Hat, o pacoteutil-linux não continha os patchesnecessários. Neste caso também énecessário trabalho manual. As etapassão muito bem explicadas em [4].

• O Gentoo acrescenta ao pacote util-linux as funções para tratar dos siste-mas de arquivos criptografados com aopção (“use flag”) +crypt.

Antes de colocar as mãos na massa,chegou a hora de fazer aquele backupque você estava planejando faz tempo.Caso contrário, uma vez que nossas ins-truções a seguir levarão à exclusão detodo o sistema de arquivos /home origi-

nal, os dados contidos nele seriam irre-vogavelmente perdidos.

Um sistema de arquivos codificado sórepresenta um ganho genuíno de segu-rança quanto não restar no disconenhum resquício da velha partição. Issosignifica destruir totalmente os dados dodisco: exclusão ou formatação não sãosuficientes. Certifique-se de que osarquivos originais estão no backup, elesserão, mais tarde, recolocados no novosistema de arquivos criptografado.

Para inutilizar o antigo sistema dearquivos, é mais simples enchê-lo comvalores aleatórios: o administrador des-monta o sistema de arquivos /home eusa o gerador de números aleatórios dokernel para, literalmente, entupir a parti-ção com “lixo”. No exemplo a seguir, apartição /home fica em /dev/hda6. Quemdá valor à melhor eficiência na geraçãode valores aleatórios e dispõe de bas-tante tempo, deve dar preferência ao/dev/random, ao invés de usar o/dev/urandom (ver Quadro 1: “Eficiênciademanda tempo”).

dd if=/dev/urandom of=/dev/hda6 U

bs=4k conv=notrunc

Este comando sobrescreve todo o dispo-sitivo de bloco com valores aleatórios.Desta forma, fica mais difícil depois dife-renciar “lixo” e dados codificados. Asobrescrita leva mais ou menos tempo,dependendo da quantidade de entropiaexistente no gerador de números aleató-rios e do tamanho do sistema de arqui-vos. Por incrível que pareça, mesmotodos estes procedimentos ainda não sãosuficientes para impedir restauradoresprofissionais de dados de recuperar osdados antigos. Ainda há magnetismoremanescente suficiente no disco rígido[5]. Quem for realmente paranóico deverepetir este procedimento várias vezes.

mal. É preciso antes fornecer, com aajuda do comando dd, um arquivo quemais tarde irá conter o sistema de arqui-vos codificado. Um tamanho de 20MBytes para este arquivo é adequadopara o teste.

O dispositivo de loopO comando losetup produz um disposi-tivo de loop a partir do arquivo criado.Ele pede para isso uma senha de codifi-cação. Para fins de teste uma senha ésuficiente; mais tarde criaremos umachave aleatória. Para inserir a senha épreciso cautela: o losetup só pede asenha uma única vez. Quem errar a digi-tação perde o acesso aos dados codifica-dos. Para finalizar, deve-se ainda criarum sistema de arquivos no dispositivode loop, montar o sistema de arquivos ecolocar nele alguns arquivos, conformemostrado abaixo:

dd if=/dev/zero of=/root/cryptfile Ubs=1024k count=20losetup -e aes -k 128 /dev/loop0 U/root/cryptfilemkfs -t ext2 -m 0 /dev/loop0mount -t ext2 /dev/loop0 /mntcp /bin/{mv,rm} /mnt

Se o losetup retornar uma mensagem deerro logo de início, provavelmente o ker-nel ainda não está em condições de lidarcom sistemas de arquivos criptografa-dos. A Crypto-API está faltando. A refe-rência [3] esclarece como adicioná-la aokernel. Não é necessário recompilar todoo kernel – a CryptoAPI é composta ape-nas de módulos que o kernel carregadurante a execução.

32 Setembro 2004 www.linuxmagazine.com.br

Criptografia de sistemas de arquivosCAPA

Figura1:No SuSE Linux, basta um clique do mouse na janela correta do YaSTpara ter o sistema de arquivos /home codificado.

Ambos os dispositivos /dev/random e /dev/urandom são interfaces para o gerador de númerosaleatórios do kernel. Eles coletam eventos os mais aleatórios possíveis e os reúnem em uma “pilhade entropia”. Cada acesso ao /dev/random reduz a quantidade de entropia existente na pilha.

Caso não haja mais entropia suficiente, o kernel bloqueia o processo de leitura até que coletenovamente a quantidade necessária de valores randômicos. Isso confere alta qualidade ao gera-dor de valores aleatórios. Muitas funções criptográficas (por exemplo: OpenSSL, GPG e outros)usam este gerador.

O dispositivo /dev/urandom, entretanto, retorna todo o volume de dados requisitado, sem exami-nar se há entropia suficiente. Com isso pode acontecer que agressores consigam tirar conclusõessobre os dados aleatórios retornados. Contudo, tais valores são suficientes para tarefas simples.

Quadro 1: Eficiência demanda tempo.

031-035_fs_crypto.qxd 9/21/04 10:56 PM Page 32

Page 33: Linux Magazine BR 2

A chave do sistema dearquivosComo próximo passo, vamos gerar oarquivo com a chave. Esta chave servepara codificar e decodificar os dados dosistema de arquivos criptografado. Paraevitar que a chave possa ser quebradapor um ataque de dicionário, ela deveser a mais longa e aleatória possível.Somente assim haverá realmente umavantagem em comparação com umasenha comum, geralmente mais curta. Jáque o arquivo com chave de codificaçãodeve estar no chaveiro USB, ele deveestar montado no sistema, o que faremosa seguir em /mnt/usb/:

head -c 2880 /dev/random | U

uuencode -m -| head -n 65 | tail U-n 64 | gpg --symmetric -a > U

/mnt/usb/key.gpg

A linha de comando acima lê somente2880 bytes do /dev/random e utilizaentão uuencode para codificar os valoresaleatórios em Base64. Os comandoshead e tail eliminam as saídas de textopuro do uuencode.

O resultado já tem características alea-tórias muito boas, e a codificação finalcom GPG melhora ainda mais a quali-dade. Para isso o GPG requer uma frase-senha, que serve de chave simétrica.Apenas com ela é possível decodificar osdados – o que significa dizer que, se estearquivo-chave for perdido, os dados fica-rão inacessíveis. Por esta razão, é extre-mamente importante que uma cópia deleseja mantida em lugar seguro.

A codificação adicional com GPG tam-bém serve para proteger a chave contrausuários não autorizados: ao invés de

utilizar a versão codificada, pode-sedecodificar novamente o arquivo-chavecom auxílio da frase-senha do GPG eusar os dados resultantes como chave.Deste modo, um agressor precisaria nãosó estar em poder do chaveiro USB,como também conhecer a frase-senha doGPG para conseguir acesso aos dados.

Os preparativos agora acabaram: opróximo passo é configurar o dispositivode loop. Ao mesmo tempo, são oportu-nas algumas reflexões sobre o algoritmode codificação a ser utilizado e compri-mento de chave. O exemplo a seguir usao Twofish [6]. Este algoritmo é empre-gado há alguns anos em muitos produtose foi avaliado por muitos especialistasem criptografia. Ele é considerado bas-tante maduro (veja o Quadro 2).

losetup -e twofish -k 128 U

/dev/loop0 /dev/hda6 -p 0 < U

/mnt/usb/key.gpg

Figura 2: O kernel dá acesso a um dispositivo debloco no disco rígido (acima). O dispositivo deloop (centro) entra antes do dispositivo de bloco.Com a criptografia via loopback (abaixo) somentedados criptografados vão parar no disco rígido.

Loopdevice»/dev/loop1«

Daten

Cryptoloop

Loopdevice

Festplatte

Festplatte

Festplatte

»/dev/hda5«

»/dev/hda5«

Blockdevice

Blockdevice

Blockdevice

Um bom ponto de referência para a seleção de um algoritmo apropriado é oferecido pelo compa-rativo [8] da AES (Advanced Encryption Standard), escrito, entre outros, pelo papa da criptografiaBruce Schneier. Ele mostra que o Rijndael e o Twofish são os algoritmos mais rápidos e também osmais freqüentemente utilizados. No entanto, o Rijndael perde em velocidade na medida em que ocomprimento da chave aumenta.

O Twofish oferece um pouco mais de segurança [9]. Apesar de o algoritmo de Rijndael ser umpouco mais recente, já existem ataques teóricos contra este algoritmo. De qualquer maneira, onível de seguraça oferecido por Rijndael, considerado o melhor segundo a AES, também deve sertotalmente suficiente.

Outro ponto é a escolha de um comprimento adequado para a chave. Pode-se escolher 128, 192 ou256 bits. Quanto maior o comprimento, mais seguro é o algoritmo contra ataques de força bruta;por outro lado, a velocidade diminui. Se houver deficiências na codificação usada para gerar achave, ou seja, se pudermos de algum modo inferir os dados contidos nela, de pouco adianta o seumaior comprimento [10]. Por esta razão 128 ou 192 bits são considerados suficientes.

Quadro 2: “Decifra-me, ou te devoro!”

031-035_fs_crypto.qxd 9/21/04 10:56 PM Page 33

Page 34: Linux Magazine BR 2

Aquecendo os motores…Agora o dispositivo de loop está prontopara ser usado com qualquer sistema dearquivos. Sistemas de arquivos com jour-naling podem, contudo, em casos desfa-voráveis, causar problemas:eventualmente o dispositivo de loopescreve no disco numa seqüência dife-rente da esperada pelo sistema de arqui-vos. O journal torna-se, então,totalmente inútil e o que pode levar ainsconsistências graves no sistema dearquivos no caso de crashes.

mkfs -t ext2 /dev/loop0 mount U

/dev/loop0 /mnt

No nosso exemplo utilizamos como sis-tema de arquivos o Ext 2. Após a monta-gem, é aconselhável criar algunsarquivos para testar o novo sistema dearquivos. Depois, desmontar o sistemade arquivos novamente e desativar o dis-positivo de loop:

umount /mntlosetup -d /dev/loop0

Para evitar surpresas desagradáveis maistarde, deve-se repetir diversas vezes acriação do dispositivo de loop e a monta-gem do sistema de arquivos. Nãohavendo ainda nenhum dado importanteno sistema de arquivos criptografado,em caso de dúvida, pode-se começartudo do início novamente.

Aos seu lugares…Ainda são necessárias algumas mudan-ças no sistema, uma vez que todo o pro-cedimento, inclusive a montagem dochaveiro USB, deve ocorrer automatica-mente. Algumas distribuições já estãopreparadas para isso. A Gentoo, porexemplo, fornece o script de inicializa-ção cryptoloop. Os comentários contidosneste script esclarecem eventuais dúvi-das sobre seu uso. As soluções genéricasa seguir não são tão elegantes, masdevem funcionar na maioria das distri-buições comuns. A variante mais sim-ples usa um script de inicialização jáexistente; geralmente /etc/init.d/rc.localé uma boa escolha. Mais elegante aindaseria criar um script de inicialização pró-prio, obviamente observando a seqüên-cia de chamada de tais scripts pelosistema durante o boot.

Um exemplo de rc.local para as versõesde kernel a partir do 2.4.22 pode servista na Listagem 1. Os nomes dosmódulos de algoritmo foram modifica-dos a partir do kernel 2.4.22. Para as ver-sões mais antigas os nomes devemcomeçar com um cipher-. A linha 9, paraum kernel mais antigo, ficaria assim:/sbin/modprobe ciper-twofish.

A montagem do chaveiro USB seriaainda mais confortável com a ajuda domontador automático de volumes super-mount [7]. Para isso é necessário umoutro módulo de kernel, que pode serfacilmente instalado. Adicionalmente, énecessária uma entrada especial noarquivo /etc/fstab:

/mnt/usb/mnt/usb supermount U

sync,rw,fs=auto,dev=/dev/sda1 0 0

Com isso, podemos economizar as mon-tagens explícitas no script de inicializa-ção. O supermount monta o chaveiroUSB sob demanda. Pode-se utilizar amesma técnica para montar automatica-mente os CD-ROMs, bastando para issoalterar o dispositivo e o ponto de monta-gem indicados acima, com /dev/cdrom e/mnt/cdrom, respectivamente.

Segurança total!Todos os nossos esforços terão sido emvão caso dados confidenciais aindapuderem ser encontrados sem codifica-ção em outro lugar do disco. O pior casoé aquele em que o kernel move exata-mente a zona da memória em que achave se encontra para a partição swap.Outro risco são os famosos “coredumps”, que às vezes escrevem a zonamemória de um processo após um errograve no disco rígido.

Ambos os problemas são fáceis deresolver. Na área de swap (memória vir-tual) não há nenhum dado que, em con-dições normais, ainda seja necessárioapós uma reinicialização do sistema. Porisso é perfeitamente possível criptografaresta área de modo transparente, e mel-hor ainda, com uma chave aleatória queninguém conheça.

A desvantagem deste método é umatraso mínimo adicional ao durante o“boot”: uma vez que o sistema codifica apartição swap após cada inicialização dosistema com uma outra chave, ele devereinicializar esta partição a cada vez.

Este comando inicializa o disposi-tivo de loop /dev/loop0 com o algo-ritmo Twofish. O comprimento dachave é de 128 bits. O dispositivo deloop armazena os dados codificadosno dispositivo de bloco /dev/hda6. Oprograma espera por uma senhacomo base para a chave, que, nestecaso, não vem pelo teclado, e sim doarquivo key.gpg no “chaveiro”, redire-cionado através da entrada padrão com ocomando: -p 0 < /mnt/usb/key.gpg.

34 Setembro 2004 www.linuxmagazine.com.br

Criptografia de sistemas de arquivosCAPA

01 #!/bin/sh -e0203 case "$1" in04 start)05 /sbin/modprobe sd_mod06 /sbin/modprobe usb-storage07 /sbin/modprobe cryptoapi08 /sbin/modprobe cryptoloop09 /sbin/modprobe twofish10 /bin/mount -t vfat U

/dev/sda1 /mnt/usb11 /sbin/losetup -e twofish U

-k 128 /dev/loop0 /home -p 0 U

< /mnt/usb/key.gpg12 /bin/mount /dev/loop0 /home13 /bin/umount /dev/sda114 ;;15 stop)16 /sbin/losetup -d /dev/loop017 /bin/umount /dev/loop018 ;;19 esac

Listagem 1: Scriptde inicialização

Figura 3: Os kernels padrão (sem patches suple-mentares) já contém opções de criptografia. Paraativá-las basta escolher Cryptographic API e osalgoritmos desejados sob o menu CryptographicOptions, usando uma das muitas interfaces deconfiguração kernel.

031-035_fs_crypto.qxd 9/21/04 10:56 PM Page 34

Page 35: Linux Magazine BR 2

Para isso é necessário modificar o scriptde inicialização responsável pela monta-gem da partição swap. Com o comandogrep swapon /etc/init.d/* identifica-sequal o script a ser modificado. Nestescript, antes da linha que contém ocomando swapon, devem ser inseridasduas linhas suplementares:

/bin/dd if=/dev/urandom bs=1 Ucount=16 | /sbin/losetup -e Utwofish -k 128 -p 0 /dev/loop1 U/dev/hda2/sbin/mkswap /dev/loop1/sbin/swapon -a

Estes comandos produzem um outro dis-positivo de loop. Sua senha se compõede 16 bits de valor aleatório. Como estachave muda a cada nova inicialização, apartição swap é reinicializada a cadanovo boot através do comando mkswap.

Além disso, deve-se substituir noarquivo /etc/fstab a linha que corres-ponde ao dispositivo de bloco da parti-ção swap (em nosso exemplo, /dev/hda2)pelo dispositivo de loop correspondente(aqui /dev/loop1). Os mais paranóicosdevem desativar momentaneamente apartição swap com swapoff -a, sobres-crevê-la com o comando dd e o dispositivo/dev/urandom, e executar manualmenteos três passos descritos acima.

Adeus,“core dump”Em quase todas as distribuições, a gera-ção de core dumps é desativada porpadrão. Tal comportamento pode serverificado através do comando ulimit -a |grep core. Ele determina o númeromáximo de blocos que um arquivo“core” pode ocupar. Se o valor retornadopelo comando indicado for 0, o sistemanão produz core dumps. Se o valor formaior que 0, é possível desativá-lo glo-

balmente no arquivo /etc/security/limits.conf.A entrada conveniente para isso é:

* soft core 0

Na maioria dos casos, esta linha já estáaté presente no arquivo, mas comentada,bastando apenas remover o caractere #para ativá-la.

E o Kernel 2.6?Quem quiser usar partições criptografa-das sob o kernel 2.6, vai seguir passossemelhantes aos descritos aqui, masdeve fazê-lo apenas quando estiverusando exclusivamente o novo kernel,pois os dispositivos cryptoloop criadossob o kernel 2.4 infelizmente não podemser montados pelo kernel 2.6.

Até mesmo uma atualização de kerneldentro da série 2.4 pode resultar no fatodo novo kernel não mais decodificar osdados criptografados. As situações maiscríticas ocorre quando com atualizaçõespara versões do kernel a partir da 2.4.22.Depois desta versão o kernel oficial tam-bém contém crypto code e os patchesdescritos neste artigo não são maisnecessários. Infelizmente as mudançasnão se restringem somente aos nomes decada módulo (como por exemplo aes aoinvés de cipher-aes), mas são tão profun-das que o antigo sistema de arquivoscriptografado não pode mais ser lidopela nova versão. Felizmente, a atualiza-ção do kernel 2.4.22 para outros da série2.4 não traz mais nenhum problema noque tange a dispositivos criptografados.

Devido à flexibilidade do procedi-mento cryptoloop, há espaço para diver-sas variações e melhorias, que tornem osistema ainda mais personalizável ouseguro. Quem, por exemplo, precisa deum sistema de arquivos FAT no chaveiroUSB para armazenar outros dados que

possam ser lidos no Windows, pode adi-cionalmente criar nele um pequeno sis-tema de arquivos Ext 2 para guardar oarquivo-chave, de forma que ele fiqueprotegido de modificações inadvertidas.

Na medidaApesar das operações adicionais de codi-ficação e decodificação, é difícil perceberperdas de desempenho nos procedimen-tos de leitura e escrita em laptopscomuns, exceto pelo uso ligeiramentemaior de CPU, quando comparamos coma velocidade de tais procedimentos emsistema de arquivos não codificado. ■

35Setembro 2004www.linuxmagazine.com.br

CAPACriptografia de sistemas de arquivos

[1] GPG: http://www.gnupg.org/

[2] CryptoAPI:http://www.kerneli.org/index.phtml

[3] Instalação da Crypto-API:http://www.kerneli.org/howto/node2.php

[4] Patches do util-linux para o Red Hat/Fedora:http://www.q-vadis.net/index.php?mID=stories&lng=en&art=5

[5] Peter Gutmann,“Exclusão segura de dadosde meios magnéticos e de estado sólido”:http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html

[6] Documentação do Twofish:http://www.schneier.com/paper-two-fish-paper.pdf

[7] Supermount:http://supermount-ng.sourceforge.net/

[8] Comparativo da AES:http://www.schneier.com/paper-aes-performance.pdf

[9] Comparações entre o Twofish e o Rijndael:http://www.schneier.com/paper-two-fish-final.pdf

[10]Tamanho de chaves:http://mitglied.lycos.de/cthoeing/crypto/keylen.htm

[11] Loop-AES:http://loop-aes.sourceforge.net/

[12] Loop-AES-Readme:http://loop-aes.sourceforge.net/loop-AES.README

INFORMAÇÕES

O Loop-AES [11] foi desenvolvido especialmente para a codificação de sistemas de arquivos. Eletambém é capaz de codificar a partição swap sem a necessidade de adaptações especiais. O Loop-AES usa o algoritmo AES, também conhecido como Rijndael, mas também pode usar outros algo-ritmos como o Blowfish, o Twofish ou o Serpent, se desejado.

Como no caso da Crypto-API, com o Loop-AES também não é necessário compilar outro kernel; asfunções necessárias podem ser incorporadas ao sistema na forma de módulos. Na maioria dasdistribuições, entretanto, o pacote util-linux ainda vai precisa de um patch. Ambos estão muitobem descritos em [12].

O Loop-AES simplifica o projeto em alguns pontos, apesar da flexibilidade oferecida pela soluçãooferecida pela Crypto-API. Quando o administrador do sistema desejar permitir o acesso ao sis-tema por diferentes usuários via chave GPG, deverá dar uma olhada na solução com Loop-AES.

Uma alternativa: Loop-AES

Christian Ney admi-nistra de sistenas Unixe Firewalls para umapequena empresaaérea, e trabalha emvários projetos OpenSource no tempo livre.SO

BRE O

AUT

OR

031-035_fs_crypto.qxd 9/21/04 10:56 PM Page 35

Page 36: Linux Magazine BR 2

Otimização de discos rígidosCAPA

36 Setembro 2004 www.linuxmagazine.com.br

med Input and Output - Entrada e SaídaProgramada) e UltraDMA (Direct Me-mory Access - Acesso Direto à Memória),entre outras tantas funções e característi-cas especiais; nenhuma delas é, entre-tanto, considerada pelas rotinas deinstalação padrão de várias distros. Oprograma hdparm permite que modifi-quemos a configuração do disco rígido,possibilitando que obtenhamos dele omáximo em performance.

Mas cuidado: otimizar o desempenhodo HD pode ser um pouco arriscado. Éimprescindível fazer um backup dosdados em disco antes de começar a reali-zar experimentos. Além disso, reco-menda-se realizar uma fase de testesantes de proceder à configuração pro-priamente dita. Para isso, inicialize ocomputador em “Single User Mode”.

Utilizamos em nossos testes um AMDAthlonXP 2600+ com 256 MBytes deRAM e um disco rígido EIDE. Segundo asespecificações do fabricante, o disco

rígido utilizado ofe-rece uma taxa detransferência dedados máxima de66 MByte/s. Parasaber qual é a taxade transferênciaatual do discorígido, utiliza-se asopções -T e -t. Outilitário df pode serusado para mostrarquais unidades dedisco estão instala-das em seu sistema.

Use as opções -Te -t sempre juntas.hdparm mede a

velocidade do cache do disco (memória,processador e buffer) durante a leiturade dados e calcula os valores de desem-penho do disco sem considerar os dadosno cache. Isso fornece uma medida efe-tiva do desempenho do disco rígido ana-lisado. As páginas de manual do hdparmrecomendam repetir esse teste diversasvezes e calcular uma média. É impor-tante notar que as medidas efetuadaspelo hdparm só serão realistas caso ocomputador não esteja sobrecarregadodurante os testes.

Mostrando as possíveisconfiguraçõesTestes repetidos com o sistema exemplomostraram que o hdparm calculou valo-res quase idênticos para as taxas detransferência de dados, com uma pe-quena variação. A surpresa foi que aoinvés dos 65 Mbyte/s de desempenhoque deveriam ser atingidos pelo discorígido, de acordo com o fabricante, obti-vemos apenas 3,9 MByte/s. Ou seja, semnenhuma otimização, o desempenho dodisco rígido é aproximadamente 17 vezesmenor do que aquilo que ele realmentepode oferecer.

Para otimizar a performance do discorígido, vamos primeiramente verificarqual é a sua configuração atual. Paratanto, basta executar o hdparm semopções, indicando apenas o dispositivo aser analisado (Figura 2). A maioria dasopções está desativada e, além disso, okernel trata as controladoras de discocomo dispositivos de entrada e saída de16 bits (“I/O Support”). Não é de seadmirar que em uma configuração comoessa a taxa de transferência não passe demeros 4 MByte/s.

Abaixa velocidade na transferênciade dados - mesmo com os maismodernos discos rígidos disponí-

veis no mercado - é o preço que atual-mente se paga por uma instalaçãopadrão de distribuições Linux como oDebian, SuSE e outros, já que elas sãoextremamente conservadoras na configu-ração de hardware, de olho na compati-bilidade máxima durante o processo deinstalação. O utilitário hdparm solta esse“freio de mão” artificial de modo simplese eficiente. Este artigo vai lhe mostrarcomo utilizar, em doses homeopáticas ede forma segura, o hdparm para tirar omáximo que seu disco rígido é capaz deoferecer. Dependendo do hardware, issopode significar um ganho de desempe-nho até dez vezes maior.

O mapa da minaQuase todos os discos rígidos atualmenteno mercado oferecem suporte a diversosmodos de operação, como PIO (Program-

O desempenho de discos rígidos em sistemas Linux recém-instalados fica nor-

malmente aquém das possibilidades oferecidas pelo hardware. O hdparm

solta o “freio-de-mão” puxado pelas distribuições na instalação padrão.

POR THOMAS WÖLFER

Aumente a taxa de transferência de dados de seus discos IDE com o hdparm

Pé na tábua!

Figura 2:Executar o hdparm sem opções fornece uma lista que,além dos parâmetrosfísicos (“geometry”) do disco,mostra também se ele se encontra em modo DMA.

Figura 1:Desempenho miserável,pois a configuração do disco rígido não está otimizada.

036-037_eide_hd_tuning.qxd 9/21/04 9:55 PM Page 36

Page 37: Linux Magazine BR 2

CAPAOtimização de discos rígidos

37Setembro 2004www.linuxmagazine.com.br

Dobrando o desempenhocom valores segurosTodo mundo quer melhorar o desempe-nho do sistema. Não é possível, entre-tanto, dominar todas as opções dohdparm logo de início. Desse modo,vamos primeiro dar uma boa olhada naspossibilidades que o comando oferece. Apalavra multcount é uma abreviaçãopara “Multiple Sector Count”, que espe-cifica quantos setores são lidos em umaúnica interrupção de I/O. A maioria dosdiscos rígidos oferecem suporte para 2,4, 8 ou 16 setores. É possível que ascabeças de leitura dos discos leiam atémais que 16 setores. A quantidade desetores que um disco rígido pode lerpode ser verificada com a opção -i (Max-MultSect). Entretanto, não se deve con-fiar cegamente nos valores fornecidospelo hdparm: alguns discos simples-mente indicam poder suportar a leiturade um número de setores que, na prá-tica, supera a sua capacidade real. Oresultado é a perda certa de dados! Emalguns casos mais graves até o sistemade arquivos é corrompido - o manual dohdparm, inclusive, traz um alerta a esserespeito. O ganho de desempenho tendea ser muito grande, mas o risco de perdade dados é diretamente proporcional aele. A melhor proteção é fazer primeiroum backup do sistema e somente depoisrealizar testes para se chegar ao valorideal de multcount, que pode ser fixadocom a opção -m. Por fim, a utilização desuporte a I/O indica ao hdparm como osdados que vêm do “bus” PCI são mani-pulados pela controladora de disco. Con-troladoras modernas não precisam rodarem modo 16 bits. O suporte a I/O podeser configurado com a opção -c, con-forme segue:

hdparm -c1 -m16 /dev/hda

Com esse comando o suporte a I/O éconfigurado em modo 1, que é um den-tre vários modos de 32 bits. Todos osmodos estão listados no manual docomando sob a opção -c. A opção -m16configura o sistema para leitura de 16

setores por interrupção de I/O, o queleva a resultados muito melhores na pró-xima bateria de testes

Já conseguimos praticamente dobrar ataxa de transferência de dados do discorígido: de 3,9 MByte/s chegamos a 7,6MByte/s. No entanto, ainda estamosbem longe da performance prometidapelo fabricante, que é de 66 MByte/s.Vamos ver o que é possível fazer paraconseguir melhorar este cenário.

Quadruplicando a taxa detransferência com DMAComo próxima medida de otimizaçãovamos permitir o não-mascaramento deinterrupções (umaskirq). Além disso,vamos ativar o modo de acesso direto àmemória (DMA: using_dma). Normal-mente o Linux entra em modo “IDLE”enquanto espera por uma interrupção -ou seja, ele não faz nada. É óbvio quecom isso ele desperdiça tempo de trans-ferência de dados, caso ele não estejaocupado com outras tarefas. E via deregra esse compor-tamento faz sen-tido, visto que issocontribui para au-mentar a estabili-dade do sistema.Contudo, se desa-tivarmos esta pro-teção, aumentamos a responsividade dosistema. O problema é que, na maioriados casos, ele se torna tão instável quenem dá mais para usar. De qualquermodo, realizar alguns experimentos como não-mascaramento de interrupçõesnão envolve riscos. O mesmo vale para ouso do modo DMA: temos opções para“brincar” à vontade. Mas o sistematende a travar quando insistimos em ten-tar ativar as opções erradas de acessodireto à memória. Felizmente, basta rei-niciar o computador para que tudo volteao normal, de modo que podemos reali-zar os testes sem medo de seqüelas ouperda de dados.

Caso a documentação do disco rígidoou da controladora estejam à mão, useos modos de operação de acesso direto à

memória indica-dos nela. Sem adocumentação, se-rá necessário reali-zar experimentoscom o sistema (e

testá-lo) até que a configuração idealseja encontrada. Tivemos que nosesforçar bastante até encontrar a confi-guração ideal de nossos sistema detestes, mostrada a seguir:

hdparm -d1 -X66 -u1 -m16 -cd U/dev/hda

A opção -d1 ativa o “flag” de utilizaçãode acesso direto à memória (using_dma). Além disso, também é necessárioindicar qual modo de acessi deve ser uti-lizado. Em nosso exemplo usamosUltraDMA modo 2, configurado atravésda opção -X66. A opção -u1 desativa omascaramento de outras interrupções(umaskirq). Os resultados alcançadossão surpreendentes.

A taxa de transferência de dados quin-tuplica com o uso dos novos parâmetros,se a compararmos com a configuraçãopadrão. Entretanto, a nossa nova confi-guração não irá resistir à próxima reini-cialização do sistema.

Salvando a nova configuraçãoComo mencionado anteriormente, a con-figuração só permanece válida até a pró-xima reinicialização do sistema. Parasalvá-la, precisamos adicionar o co-mando hdparm mostrado anteriormentea um dos scripts de inicialização do sis-tema, rc*. Entretanto, apenas isso nãobasta: em determinadas circunstâncias, acontroladora de disco realiza um cha-mado “IDE reset”. Quando isso ocorre,perde-se a configuração atual. A opção -k1 evita que tal reset seja efetuado. Masela só deve ser usada após nos certificar-mos de que todas as opções passadaspara o hdparm funcionam sem proble-mas - ou seja, quando podemos ler eescrever dados do disco sem quenenhum alerta (“warning”) apareça noarquivo /var/log/messages. ■

[1] Homepage do hdparm: http://www.ibiblio.org/pub/Linux/system/hardware/

INFORMAÇÕES

Figura 3: Basta configurar a controladora para realizar leituras de 32 setores porinterrupção de I/O, ao invés de 16, para dobrar a taxa de transferência de dados.

Acima de tudo o uso do modo UltraDMA acelera em muito a transferência de dados.

036-037_eide_hd_tuning.qxd 9/21/04 9:55 PM Page 37

Page 38: Linux Magazine BR 2

a capacidade total de armazenagem ouremover volumes mesmo com o sistemaem operação. O que o LVM tem de tãoespecial é exatamente a capacidade deaumentar ou diminuir a quantidade dememória disponível com o sistema fun-cionando - desde que o sistema de arqui-vos também o permita.

Raid por software e Logical VolumeManager formam assim uma excelentecombinação de alta disponibilidade eescalabilidade. E como “quitute” adicio-nal temos a função de Snapshot do LVM,da qual falaremos mais adiante.

Muitas alternativas,difícil decisãoAtualmente existem duas excelentesimplementações de gerenciador de volu-mes no Linux: deum lado temos oLogical Volume Ma-nager (LVM), de-senvolvido desde1997 por HeinzMauelshagen, cujaconcepção é base-ada no LVM dosistema HP-UX, edo outro temos oEnterprise VolumeManagement Sys-tem (EVMS) [2] daIBM, colocado soba GPL em 2002.

O desenvolvimen-to de dois diferen-tes gerenciadores

de volumes foi motivo de algumas dis-cussões na comunidade Linux. Muitosquestionavam se não seria melhor uniros dois projetos. Para o kernel 2.6, LinusTorvalds decidiu adotar o LVM em suasegunda versão (LVM2).

Universos paralelosA IBM, entretanto, continua a desenvol-ver o EVMS. O quadro “Viagem peloEVMS” oferece uma breve introduçãodesta poderosa ferramenta, que é maisdo que um simples gerenciador de volu-mes para Linux. Este artigo, todavia, tra-tará mais especificamente do LVM, quenormalmente já está disponível no ker-nel 2.4 das atuais distribuições Linux.

O kernel 2.4 padrão utiliza ainda a ver-são 1.x do LVM. Para atualizar o sistema

Apesar do aumento constante dacapacidade dos discos rígidos, oproblema do armazenamento de

dados continua a ser uma questão com-plicada. Além disso, o aumento da quan-tidade de dados a armazenar tambémcresce a cada dia. Em sistemas distribuí-dos, especialmente, nos quais os dadosdas aplicações e dos usuários são arma-zenados em diferentes discos e partições,é muito freqüente haver problemas deespaço. Adicionar novos discos rígidosao sistema não é realmente uma soluçãopara o problema: em busca de espaço,não é incomum que dados acabem porser freqüentemente transferidos de umlugar para outro.

Uma solução viável são os chamadossistemas Raid, que concatenam diversosdiscos rígidos em um único dispositivológico. O artigo [1] descreve como recon-figurar um sistema Linux para utilizarRaid5 via software sem que haja necessi-dade de reinstalação do sistema. A utili-zação de sistemas Raid, entretanto, trazconsigo uma desvantagem: o sistemafica limitado ao tamanho do Raid. Dessaforma, colocar as áreas de usuários emoutros volumes ou adicionar discos rígi-dos com maior capacidade de armazena-mento exigiria necessariamente umsistema Raid ou discos rígidos extra iso-lados (i.e., sem redundância), o que levade novo ao mencionado problema de dis-tribuição de dados.

Com o Logical Volume Manager (LVM)o administrador ganha a flexibilidadeque faltava para, por exemplo, aumentar

38 Setembro 2004 www.linuxmagazine.com.br

LVM e RAIDCAPA

Quando o espaço no disco rígido acaba, o sonho de qualquer usuário ou admi-

nistrador de sistemas é adicionar outro disco e continuar a trabalhar. O Logical

Volume Manager (LVM) torna este sonho realidade: ele concatena diversos dis-

positivos de bloco em um único dispositivo de armazenamento homogêneo,

que pode ser facilmente modificado.

POR CARSTEN WIESE

Combinando Software-Raid e Logical Volume Manager

Jogue seus dados

Figura 1:O grupo de volumes concatena um ou mais volumes físicos em umaunidade de dados lógica. Os volumes lógicos utilizam essa unidade de dadose são simples dispositivos de bloco (block devices).

Physical Volume: /dev/md3

Volume Group: asterix

Logical Volume Logical Volume

mp3 doc 4

hda4 hdb4 hdc4

/mp3 (ext3) /doc (ext3) 5

3

2

1

Slices

038-041_lvm_raid.qxd 9/21/04 9:56 PM Page 38

Page 39: Linux Magazine BR 2

para o LVM da versão 2.00.20 temos queaplicar a ele as alterações fornecidas pelopacote disponível em [3]. Esse pacotecontém, além dos patches para o kernel2.4, também a versão adequada dos pro-gramas de gerenciamento do LVM, bemcomo as alterações necessárias domapeador de dispositivos (aka “devicemapper”) do sistema.

No que tange a gerenciadores devolume, o SuSE Linux 9.1 oferece amaior variedade de escolha entre as dis-tribuições Linux, incluindo o LVM, LVM2e o EVMS. O Fedora Linux inclui o LVM eLVM2 e o Red Hat dispõe atualmenteapenas do LVM em suas versões Profes-sional Workstation e Enterprise.

Os exemplos que mostraremos a seguirfuncionam com a versão 1.x do LVM. Asnovidades da versão 2 estão descritas noquadro “Novidades no LVM2”.

LVM em Raid por SoftwareO sistema de trabalho do LVM é divididoem três partes: o volume físico (PV), ogrupo de volumes (VG) e o volumelógico (LV). A Figura 1 esclarece a termi-nologia e ilustra as camadas de abstra-ção do sistema.

A base ilustrada na camada 1 repre-senta os discos rígidos reais - no nossocaso três discos IDE. Sobre ela, nasegunda camada, é constituído o cha-mado “Multiple Device” (/dev/md3) doRaid por software - podemos dizer, entre-tanto, que ele é um volume físico (PV),uma vez que o Raid por software emulaum dispositivo físico. No caso do Raidpor hardware, a controladora Raid com-

bina os discos rígidos ilustrados nacamada 1 em um único dispositivo físicode armazenagem (dispositivo de bloco).

No início de cada volume físico (PV)encontra-se, no primeiro bloco físico dovolume (PE), a área de descrição dogrupo de volumes (VGDA). Ela contémmeta-dados da configuração do LVM, édividida em quatro setores e pode sercomparada à tabela de partição de umdisco rígido comum. No diretório /etc/-lvmconf é gravada uma cópia da VGDA.

O grupo de volumes “asterix” nacamada 3 combina um ou mais volumesfísicos em um único - neste exemplo ape-nas /dev/md3. É como se fosse criadauma nova unidade de armazenagem quese estendesse por todos os volumes físi-cos. O grupo de volumes é totalmenteflexível, podendo ser facilmente expan-dido com volumes físicos adicionais.

Na quarta camada estão os volumeslógicos: no exemplo são eles mp3 e doc.Cada volume lógico (LV) é um disposi-tivo de blocos separado, com o nome dovolume lógico correspondente, no nossoexemplo /dev/asterix/mp3 e /dev/aste-rix/doc, cujo tamanho pode ser modifi-cado posteriormente. Em ambos osvolumes deve ser gerado um sistema dearquivos, que será montado no sistemacomo de costume (camada 5).

A unidade indivisível…Vamos agora “dissecar” as camadas dois,três e quatro. A menor unidade de arma-zenamento físico de um sistema LVM é obloco físico (PE), citado anteriormente.Cada volume físico, quando o grupo devolumes é criado, é dividido em blocosfísicos de mesmo tamanho, por padrão32 MBytes. No total, um volume físicopode conter até 65535 blocos físicos, oque resulta em um tamanho máximo de2 TBytes. Cada bloco físico recebe umaidentificação numérica (ID) que começado 0 em cada volume físico - dessemodo, cada bloco físico dentro de umvolume físico tem seu próprio ID.

Analogamente, cada volume lógico(LV) é dividido em blocos lógicos (LE). Otamanho dos blocos lógicos e físicos ésempre o mesmo; um bloco lógico temassim, por padrão, 32 MBytes de tama-nho. Como no caso dos blocos físicos, osblocos lógicos são numerados a partir do0 e estão conectados logicamente ao seubloco físico correspondente, de modo

que podemos dizer que cada blocológico (LE) está mapeado exatamentecontra um único bloco físico (PE). AFigura 2 mostra como os volumes lógicosmp3 e doc estão mapeados no volumefísico /dev/md3 do grupo asterix.

Quando um programa acessa umdeterminado byte do volume lógico doc,primeiramente o ID do bloco lógico noqual os dados se encontram é calculado.Por meio da correlação dos blocos lógi-cos com os físicos, o LVM identifica o IDdo bloco físico apropriado e acessa aposição correspondente em /dev/md3 -não se esqueça que doc está mapeado novolume físico /dev/md3.

FatiadoHá dois modos de distribuição para osdados nos volumes físicos: linear e emfatias (“striping”). Normalmente, o LVMutiliza o modo linear, adequado paragrupos de volume que consistem apenasde um volume físico e um disco rígidoou sistema Raid. Os blocos lógicos sãoassociados de modo linear e crescenteaos blocos físicos.

Para grupos de volume que se esten-dam por vários volumes físicos, a opçãode distribuição em fatias torna-se inte-ressante. Blocos lógicos vizinhos são,neste caso, associados a blocos físicos dedois volumes físicos diferentes: no casodo acesso a dados que estejam armaze-nados em blocos lógicos vizinhos, taisdados vêm de diferentes discos rígidos, oque em determinados casos pode au-mentar a velocidade de transferência. Aprincipal desvantagem é que esse tipo devolume lógico não pode ser expandidoposteriormente. Por isso, na prática, omodo linear é quase o único a ser utili-zado. O comando

lvcreate -L300 -nmp3 asterix

produz um volume lógico em modolinear de 320 MByte chamado mp3 den-tro do grupo de volumes asterix. Se dese-jarmos utilizar o modo em fatias, temosque adicionar o parâmetro -i, bem comoo número de fatias - por exemplo -i2, nocaso de dois volumes físicos.

O volume lógico mp3 do exemploacima deveria ter 300 MByte. No entan-to, como um bloco lógico tem 32 MByte,a partição foi expandida automaticamen-te para o próximo múltiplo de 32 MByte.

39Setembro 2004www.linuxmagazine.com.br

CAPALVM e RAID

Figura 2: Os blocos lógicos têm o mesmo tama-nho de seus blocos físicos correspondentes. Emmodo linear, os volumes lógicos ficam direta-mente um atrás do outro no volume físico.

mp3

0 1 5

doc

0 1 0

0 4 010 20 30

1 Logical Extent (32 MByte)

1 Physical Extent(32 MByte)

Volume Group: asterix

Logical Volume

Logical Volume

Physical Volume: /dev/md3

038-041_lvm_raid.qxd 9/21/04 9:56 PM Page 39

Page 40: Linux Magazine BR 2

Instruções sobre a configuração de umRaid5 por software a partir de três discosrígidos são encontradas em [1]. Nos pró-ximos exemplos partimos do pressu-posto de que o sistema Raid /dev/md3 jáesteja funcionando e inicializado.

No kernel do Linux na categoria Multi-ple Device Support os itens RAID support

e Logical Volume Manager (LVM) sup-port devem estar ativados (veja Figura3). No caso do kernel 2.4 “vanilla” preci-samos ainda aplicar as alterações men-cionadas no início deste artigo paraatualizar o LVM para a versão 2.

Caso o suporte a LVM não esteja com-pilado no kernel e sim disponível na

FerramentasO pacote LVM contém uma gama com-pleta de ferramentas de administração,com as quais as diferentes camadas des-critas anteriormente podem ser criadas emanipuladas. Os programas vgcreate,vgdisplay, vgchange e vgremove, porexemplo, são responsáveis pela manipu-lação de grupos de volumes.

Para fazer um backup e restaurar osarquivos de configuração do grupo devolumes temos os utilitários vgcfgbackupe vgcfgrestore; vgreduce e vgextend dimi-nuem ou expandem um grupo de volu-mes. Para transferir um grupo devolumes de um computador para outrotemos vgexport e vgimport. Para dividirou concatenar vários grupos de volumesutiliza-se vgsplit e vgmerge; vgscan pro-cura por grupos de volumes perdidos emdispositivos de blocos e vgrename modi-fica seus nomes.

Para as duas outras camadas de abstra-ção - volumes físicos e lógicos - há tam-bém ferramentas semelhantes, cujosnomes só se diferenciam dos citadosanteriormente pelas duas primeiras le-tras: pv para volumes físicos e lv paravolumes lógicos.

PlanejamentoO volume físico é um array RAID nível 5por software, composto por três discosrígidos IDE, conforme mostrado naFigura 1. Os dados de /mp3 e /docdevem ser armazenados no volumeRAID e o uso do LVM é indicado casoseja necessária uma futuras expansão noespaço de armazenamento.

40 Setembro 2004 www.linuxmagazine.com.br

LVM e RAIDCAPA

O EnterpriseVolume Manage-ment System(EVMS) da IBM for-nece uma estru-tura básica paratodos as variaçõesdo gerenciamentode volumes. Suaarquitetura con-siste em ummodelo baseadoem “plugins”, noqual se podemadicionar módulosisoladamente, emforma de exten-sões. Ele é compa-tível com LVM,integra Raid porsoftware (“Multi-ple Devices”) e oferece suporte para os siste-mas de arquivo atuais. A resetorização deblocos defeituosos (“Bad Block Relocation”-BBR) e o suporte para cluster também nãosão novidades para o sistema. A Figura 5 ilus-tra os módulos do kernel isoladamente, bemcomo os plugins que acompanham o kernelpadrão do SuSE Linux 9.0.

Além da interface gráfica de administração

do EVMS (Figura 6) há também uma inter-face em modo texto. A terminologia doEVMS é um pouco diferente da do LVM - volu-mes físicos são chamados de segmentos,grupos de volumes são conhecidos por con-tainers e os volumes lógicos são chamadosde regiões. A documentação disponível napágina do projeto na Internet [2] facilita afamiliarização com o sistema.

Figura 3: O kernel 2.4 ainda contém a versão 1 do Logical Volume Manager(LVM). Para utilizar o LVM2 ele precisa ser alterado com os “patches” disponí-veis em [3].

Figura 4: Um snapshot é um volume lógico apenas de leitura, que garante aconsistência dos dados em um grupo de volumes para backup, embora ovolume lógico original permaneça alterável.

backup

0 50 1 5

snap

mp3

Snap

shot

mp3

0 4 010 20 30

Modifications

Original Data

Copy

Logical Volume

Logi

cal V

olum

eLo

gica

l Vol

ume

Physical Volume: /dev/md3

Figura 6:O EVMS pode ser administrado via interface gráfica ou em modotexto. A nomenclatura utilizada é diferente da usada pelo LVM.

Excursão pelo EVMS

038-041_lvm_raid.qxd 9/21/04 9:56 PM Page 40

Page 41: Linux Magazine BR 2

forma de um módulo, precisamoscolocá-lo na RAM Disk inicial do sistema(initrd). Isso pode ser feito pelocomando lvmcreate_initrd.

Criação dos volumesO volume físico é o Raid5 por software/dev/md3. O comando pvcreate/dev/md3 prepara o dispositivo de blo-cos da maneira adequada. Sua configura-ção pode ser verificada através docomando pvdisplay /dev/md3.

O grupo de volumes asterix é criadopelo comando vgcreate asterix /dev/md3.No caso de vários volumes físicos, adi-cione o nome do dispositivo de blocoscorrespondente ao comando.

A quarta camada, com os volumeslógicos mp3 e doc, é criada pelocomando lvcreate -L300 -nmp3 asterix elvcreate -L200 -ndoc asterix. Com isso, otamanho real dos volumes lógicos é de320 MByte para o primeiro e 224 MBytepara o segundo - lembre-se que o LVMutiliza somente blocos lógicos comtamanhos múltiplos de 32 MByte, comojá dissemos anteriormente.

No diretório /dev/asterix devem existiragora três novos dispositivos: o disposi-tivo de caracteres (“character device”)group e os dois dispositivos de blocosmp3 e doc. Os sistemas de arquivos sãocriados da mesma forma que nos dispo-sitivos de blocos comuns, com oscomandos mkfs.ext3 /dev/asterix/mp3 emkfs.ext3 /dev/asterix/doc.

A montagem dos volumes lógicos nosistema de arquivos também não se dife-

rencia em nada daquela dos dispositivosde blocos comuns. Entretanto, antes deser montados, os programas vgscan evgchange -ay precisam ser executados.Além disso, durante o processo de desli-gamento do sistema, deve-se rodar o pro-grama vgchange -an. De preferência,esses comandos devem ser adicionadosaos scritps de inicialização e desliga-mento do sistema: /etc/init.d/boot e/etc/init.d/halt, de acordo com a distri-buição Linux utilizada.

Quando o espaço do volume lógicomp3 acabar, basta usar o comando lvex-tend -L 500M /dev/asterix/mp3 paraexpandi-lo para 500 MByte. Em seguida,o sistema de arquivos tem que ser ajus-tado ao novo tamanho do volume lógico,utilizando - no caso do sistema dearquivos Ext3, por exemplo - o comandoresize2fs /dev/asterix/mp3.

SnapshotsA função de snapshot do LVM é especial-mente útil para efetuar backups de umgrupo de volumes. Ela permite que secrie, a qualquer momento, um “clone”do volume lógico que não pode sermodificado diretamente. O snapshotassim criado é uma cópia “congelada”(frozen image) do volume lógico origi-nal, que deve ser montado apenas paraleitura no sistema de arquivos durante oprocesso de backup. O volume lógicooriginal permanece alterável e modifica-ções efetuadas em qualquer de seus blo-cos lógicos ocasionam automaticamentea cópia do bloco lógico original para osnapshot (Figura 4).

A quantidade de memória designadapara o snapshot deve ser suficiente paraabsorver pelo menos a mesma quanti-dade de dados escrita no volume lógicooriginal durante o backup. De preferên-cia, pode-se criar um grupo de volumes àparte, por exemplo operator, em umdisco rígido extra. Se a quantidade dedados a serem gravados no snapshotsuperar o tamanho indicado durante suacriação, ou se o computador for reinicia-lizado, o snapshot desaparece automati-camente – os dados escritos nele atéentão são copiados de volta para ovolume lógico original.

Instruções detalhadas para a realiza-ção de backups com snapshots podemser encontradas no tutorial de LVM [4],no capítulo 11.4.

Riscos do “fatiamento”Dois tutoriais ([5] e [6]) descrevem comoinstalar um sistema de arquivos raiz emum Raid por software com LVM. Isso fazsentido em alguns casos, mas aumentaem muito o trabalho do administrador e,em caso de falha em algum dos compo-nentes do sistema de armazenagem, ascoisas podem se complicar. É importanteverificar em que casos o uso do LVM fazsentido e é necessário.

Outra ponto que deve ser muito bemanalisado é o emprego do modo emfatias (striping), pois ele nem sempre ésinônimo de melhor desempenho – al´mde ter a desvantagem de engessar otamanho do volume lógico, que nãopode mais ser alterado.

A falha de um disco rígido é compen-sada pelo sistema Raid, mas ela podetomar proporções catastróficas se umvolume lógico no modo em fatias estiverdistribuído em dois ou mais discos rígi-dos. Neste caso o conjunto de dadosinteiro torna-se inconsistente, enquantoque para volumes lógicos em modo line-ar apenas os dados do volume lógico afe-tado pela falha são atingidos por ela. ■

41Setembro 2004www.linuxmagazine.com.br

CAPALVM e RAID

[1] Carsten Wiese,“Volks-Raid”: Linux-Maga-zin 07/2003, página 50; http://www.linux-magazin.de/Artikel/ausgabe/2003/07/volksraid/volksraid.html]

[2] Enterprise Volume Management System(EVMS): http://evms.sf.net

[3] Patch e mapeador de dispositivos para oLVM2: http://sources.redhat.com/pub/lvm2/

[4] Tutorial de LVM: http://tldp.org/HOWTO/LVM-HOWTO/

[5] Tutorial de implementação de um sis-tema raiz com LVM e Raid por software:http://www.midhgard.it/docs/lvm/html/index.html

[6] Tutorial de implementação de um sis-tema raiz em Raid por software: http://karaolides.com/computing/HOWTO/lvmraid

INFORMAÇÕES

LE Bloco LógicoLV Volume LógicoLVM Logical Volume ManagerPE Bloco FísicoPV Volume FísicoVG Grupo de VolumesVGDA Descritor do Grupo de Volumes

Legenda

As três principais modificações ocorridas noLVM2 são o mapeador de dispositivos(Device Mapper), o novo formato dos meta-dados e o arquivo de configuração lvm.conf.O novo mapeador de dispositivos permitecriar um novo dispositivo de blocos em umdispositivo já existente. O formato dosmetadados do LVM2 é mais estável e estru-turado de maneira mais eficiente.

No novo arquivo de configuração (lvm.conf)é possível incluir parâmetros para cada dis-positivo isoladamente, bem como ajustar obackup dos metadados e o nível de logging(registro) do sistema. O LVM2 é retro-compa-tível com o LVM1. Para converter os meta-dados do grupo de volumes asterix ao novoformato,use o comando vgconvert -M2 asterix.

O que há de novo no LVM2

038-041_lvm_raid.qxd 9/21/04 9:56 PM Page 41

Page 42: Linux Magazine BR 2

Slackware Linux 10.0ANÁLISES

42 Setembro 2004 www.linux-magazine.com.br

kernel adequado (adaptec.s). Se suamáquina não consegue inicializar peloCD do Slackware 10, crie um disco deboot a partir da imagem sbootmgr. dsk,encontrada no diretório isolinux do CD.Isso foi necessário em uma das máqui-nas de teste.

O instalador detectou automatica-mente as placas de rede PCI em todas asmáquinas que as possuíam. Na máquinacom uma placa de rede ISA foi necessá-rio incluir o módulo manualmente, cominformações de io e irq. Não foi precisonenhuma configuração especial para amáquina com teclado USB, que foi reco-nhecido normalmente pelo instalador.Ainda no item teclado, o instalador ofe-rece a oportunidade de configuraçãocom os layouts ABNT2 e International,os mais usados no Brasil.

A instalação completa ocupa entre 2.5e 3 Gigabytes de espaço em disco, mas épossível reduzir seu tamanho sem muitoesforço, escolhendo apenas as séries epacotes necessários às suas necessida-des. Se não quiser ter problemas combibliotecas, lembre-se de instalar todosos pacotes da série L.

Recém-nascidoO primeiro boot corre normalmente;todos os serviços selecionados durante ainstalação são iniciados corretamente.Na verdade, o MySQL retornou um erro,mas o arquivo /etc/rc.d/rc.mysqld dizcomo ele deve ser solucionado. Em algu-mas máquinas pode surgir um WARNING(alerta) de que os canais de som estãomudos. Nesse caso, é necessário ajustarmanualmente o volume destes canaiscom o utilitário alsamixer.

No primeiro login (que deve ser feitocom o usuário root) o usuário é infor-mado de que tem novas mensagens nacaixa postal. São duas, para ser exato:uma recomenda o cadastro da máquinano Linux Counter [3] e a outra, do cria-dor do Slackware, Patrick Volkerding,agradece a preferência e dá diversasdicas sobre a configuração de gravadoresde CD, impressoras, compartilhamentode arquivos com NFS etc.

No papel e na redeDois sistemas de impressão estão dispo-níveis, o LPRng (veja artigo na página50) e o CUPS (veja nossa primeira edi-ção). Para configurar o LPRng, a melhoropção é utilizar o apsfilter. Já o CUPSpossui o seu próprio utilitário de confi-guração via web. Numa instalação com-pleta, o gerenciador de impressão padrãoé o LPRng.

Em todas as máquinas, a configuraçãode rede feita durante a instalação foi pre-servada. Todas as placas de som PCIforam corretamete reconhecidas, masforam justamente estas as máquinas queapresentaram um “WARNING” sobre ovolume. Resolver isso é fácil: execute oalsamixer, tire os canais de som domudo, aumente o volume e digite alsactlstore para guardar as configurações.

O próximo passo é iniciar o ambientegráfico. O Slackware 10, como muitasoutras distros recentes, não usa mais otradicional XFree86, e sim seu “ fork”, oX.org (ou simplemente “X”). Com isso,

Antes de escrever esta análise, ins-talei o Slackware 10.0 em oitocomputadores diferentes. Três

deles sofreram um “upgrade” da versão9.1 para a 10 com o utilitário slackpkg.As restantes passaram por uma instala-ção “limpa”, tanto via rede como atravésde CDs. Nenhuma dessas cinco máqui-nas teve problemas durante a instalação,que continua seguindo o mesmo padrãoda versão 9.1. Em duas delas, a partiçãocom os dados dos usuários, /home, foipreservada.

Para instalação via rede foi necessáriocriar quatro discos de boot: um com okernel (bare.i), dois discos de root (ins-tall.1 e install.2) e um disco com módu-los de rede (network.dsk). Uma destasmáquinas utiliza discos SCSI, o que exi-giu a criação de um outro disco com um

Patrick Volkerding ataca novamente

A Bola da VezVamos começar pelos números: GNOME 2.6, KDE 3.2.3, Gimp 2.0.2, kernel 2.4,

GCC 3.3.4 e vários outros pacotes compõem o Slackware 10, que já está prepa-

rado para o kernel 2.6, com pacotes pré-compilados da versão 2.6.7 disponíveis

aos usuários mais corajosos. POR PITER PUNKszajm

on - ww

w.sxc.hu

044_046_slackware.qxd 9/21/04 10:59 PM Page 42

Page 43: Linux Magazine BR 2

ANÁLISESSlackware Linux 10.0

43Setembro 2004www.linuxmagazine.com.br

vários arquivos e utilitários que já está-vamos habituados a usar mudaram denome. As principais diferenças são mos-tradas na Tabela 1.

Pixels de montãoO Slackware já vem com uma configura-ção “padrão” do X, utilizando o driver devídeo vesa, teclado us e mouse PS/2. Sevocê utilizar algo diferente disso, deveeditar o arquivo xorg.conf ou usar umdos utilitários de configuração mencio-nados anteriormente.

O servidor X foi configurado com o uti-litário xorgconfig, com ajuste fino atravésda edição do arquivo xorg.conf. Nasmáquinas com aceleradoras 3D da nVi-dia a instalação do driver, disponível nosite do fabricante, foi simples: basta exe-cutar o binário e seguir as instruções natela. As outras máquinas utilizaram osdrivers do próprio projeto X.org.

E justamente em nossos testes com o Xtivemos o primeiro problema: o drivervesa congelou duas das máquinas de

teste. Como as máquinas estavam emrede, não foi difícil nos conectarmos aosistema remotamente e recuperar o con-trole. As placas de vídeo com problemaforam uma nVidia GeForce e umaSiS6326. Todas as outras máquinas,inclusive uma com outra SiS6326, fun-cionaram normalmente.

Ratos e outros bichosUtilizamos diversos mouses, tanto mode-los PS/2 quanto USB, quase todos óticose com a famosa “rodinha” de rolagem.Uma das máquinas utiliza um mousePS/2 antigo da Compaq e outra ummouse serial. Éimportante lem-brar que o utilitá-rio mouseconfigapenas configurao mouse no modotexto e que oarquivo de confi-guração do servi-dor X padrão vempreparado apenaspara mouses PS/2.Você deverá modi-ficar isso casoqueira usar ummouse serial ouUSB no modo grá-fico. Entre os

teclados que configurei para uso noambiente gráfico havia modelos DIN,PS/2 e USB, com “layouts” US Interna-cional, ABNT2 e até mesmo Francês.

Ambiente de trabalhoExistem gerenciadores de janelas paratodos os gostos: mwm (0.93.94), fvwm2(2.4.18), fvwm95 (2.0.43b), WindowMa-ker (0.80.2), fluxbox (0.1.14) e blackbox(0.65.0), além dos ambientes de trabalhoGNOME (2.6), KDE (3.2.3) e XFCE(4.0.5). A política da distribuição é nãomexer nos menus e outros detalhes cos-méticos, deixando o usuário com umaconfiguração praticamente idêntica àque teria se houvesse instalado o soft-ware manualmente. Infelizmente, issofaz com que os gerenciadores de janelase ambientes gráficos fiquem com confi-gurações bem irregulares, o que podedeixar o usuário com uma má impressãosobre o ambiente escolhido.

Os menus do WindowMaker são com-postos praticamente por aplicativos ine-xistentes (ou não usados), enquanto osdo KDE são extremamente poluídos econfusos. Já os do fluxbox e blackboxsão bastante úteis. Os do xfce tambémsão bons, mas extremamente “curtos” (oque parece fazer parte da filosofia doprojeto). Se o usuário do WindowMakerou do XFCE não personalizar o seu menu(adicionando itens, ícones ao dock,etc…), será necessário sempre manterum terminal aberto. Entretanto, a confi-guração padrão do GNOME está muitobem-feita, mostrando a preocupação dosenvolvidos no projeto em oferecer umainterface limpa e funcional.

Nautilus, com o ícone “Computer” selecionado, mostrando os dispositivos acessíveis ao usuário e o íconede rede. O gxine está sendo usado para exibir um DVD.

O gerenciador de janelas XFCE, com o menu padrão.

Antigo nome Novo nome/etc/X11/XF86Config /etc/X11/xorg.confxf86confi xorgconfigxf86cfg xorgcfgxfree86setup xorgsetup

Tabela 1

044_046_slackware.qxd 9/21/04 10:59 PM Page 43

Page 44: Linux Magazine BR 2

Slackware Linux 10.0ANÁLISES

44 Setembro 2004 www.linuxmagazine.com.br

gins de visualização) e o tradicionalxmms. Usando o xine é possível assistira DVDs e outros formatos de vídeo (etambém reproduzir arquivos de áudio).Para tocar DVDs “comerciais” (com travade região), é necessário baixar e instalara libdvdcss, responsável por “decodifi-car” os discos. O gxine, que utiliza o xinepara reproduzir arquivos de vídeo eáudio, também serve para assistir vídeosna Web. Ele se auto-configura como umplugin para o Mozilla na primeira vez emque é executado.

A gravação de CDs também ficou maissimples: ela pode ser feita diretamente apartir do Nautilus, gerenciador de arqui-vos do Gnome, graças ao pacote nauti-lus-cd-burner. Também há os utilitáriosk3b e xcdroast no diretório /extra, paraaqueles discos mais complexos. Na linhade comando estão disponíveis os indis-

pensáveis cdrecorde cdrdao.

De olhoUma adição inte-ressante, tanto paraos usuários domés-ticos como para osadministradores desistemas, é o ver-sátil gkrellm. Paraos usuários ele éuma forma demonitorar a rede,montar e desmon-tar dispositivos oucomo um simplesacessório estético.

Para o administrador ele é uma impor-tante ferramenta para monitoramento deservidores em tempo real, composta pelodaemon gkrellmd e alguns clientes espa-lhados pela tela. Assim, é possível moni-torar de maneira fácil várias máquinas,além de configurar alarmes para estadoscríticos em qualquer uma delas.

Um motivo de alegria para os adminis-tradores de rede é a entrada oficial doiproute2 na distribuição. Com isso, umasérie de novos recursos de roteamento,criação de túneis, qualidade de serviço(QoS) e balanceamento de carga torna-sedisponível. Outra importante adição é odnsmasq, um servidor DNS especial pararedes mascaradas. Além de servidorDNS, o dnsmasq funciona também comoum servidor DHCP, diminuindo a quanti-dade de configurações a serem feitas aoadicionar uma nova máquina à rede.

O Slackware 10 ainda mantém no CD odiretório /pasture, onde há alguns paco-tes que não fazem mais parte da distri-buição, mas que ainda tem utilidade,como o XFree86 3.3.6 (para placas devídeo não mais suportadas pelo x.org)ou versões antigas do Berkeley DB (a dis-tro inclui a versão 4.2.52). ■

NavegandoPara quem faz a instalação completa, oMozilla (versão 1.7, a nova versão dereferência para os produtos da MozillaFoundation) já vem configurado com osplugins necessários para ver páginas emFlash e rodar Applets Java. Quem nãogosta do Mozilla pode utilizar outrosbrowsers, como o epiphany, galeon oukonqueror. Os que preferem navegar emmodo texto têm à sua disposição o lynx eo links, sendo que o último foi compi-lado com suporte à exibição de imagens,usando para isso a svgalib ou o frame-buffer do console.

MultimídiaPara tocar arquivos de áudio temos, alémde vários players em modo texto como oworkbone, ogg123, madplay, mpg123 eoutros, o noatun (com várias skins e plu-

Alguns dos aplicativos do KDE 3.2: Konqueror, Kword e o media player noatun.Gimp, versão 2.0.2, rodando no Window Maker.

Gerenciador de janelas FluxBox.O gkrellm exibe várias estatísticas sobre a máquina.

[1] http://www.slackware.com

[2] http://www.x.org

[3] http://www.counter.li.org

[4] http://www.alsa-project.org

[5] http://www.gnome.org

[6] http://www.xfce.org

INFORMAÇÕES

044_046_slackware.qxd 9/21/04 10:59 PM Page 44

Page 45: Linux Magazine BR 2

{ }MUITO

suporte a várias linguagens e plataformastreinamento, certificação e suporte oficiaissimples instalação e administração

+ Flexibilidade + Segurança + Facilidade

[ ][ ][ ]

{ }MUITO

- Downtime - Risco - Custo

[ ][ ][ ]

verdadeiramente 24/7MySQL AB: a REAL Companylicenciamento descomplicado ou GPL

O MySQL é um banco de dados open source com um custo infinitamente inferior ao dos seus concorrentes, com os mesmos recursos de usabilidade e com muito mais escalabilidade. O resultado prático é um crescimento fantástico de usuários em todo o mundo.Tanto pequenas empresas como grandes corporações já testaram e comprovaram suas qualidades.A MySQLBrasil oferece todo o suporte necessário para o desenvolvimento e para a manutenção de sistemas de qualquer porte, além de uma rede de Centros de Treinamento Autorizados no Brasil com curso preparatório para a certificação MySQL.

www.mysqlbrasil.com.brwww.mysql.com

(31) 3273 4415

T E C H N O L O G Y

G L O B A L P A R T N E R

MUITOMAISPOR MENOSMUITO

Linux CenterLinux Center

www.utah.com.br(11) 3064-7009

www.hitec.com.br(51) 3395-4777

www.nethouse.com.br(31) 3225-3005

www.opentec.com.br(21) 2242-3464

www.voffice.com.br(48) 224-8580

www.mythusnet.com.br(91) 242-0073

20 Anos

www.ios.com.br(61) 325-3620

www.elaborata.com.br(41) 324-0015

www.loreno.net(61) 3038-5008

0

5

25

75

95

100

0

5

25

75

95

100

0

5

25

75

95

100

0

5

25

75

95

100

mysql

terça-feira, 6 de julho de 2004 10:20:02

Page 46: Linux Magazine BR 2

cante não oferece ajuda on-line, em con-traste com a maioria dos outros progra-mas. Na versão trial que testamosfaltavam os modelos e documentos deamostra. Em compensação, havia umgrande número de dicionários de fran-cês, português e algumas línguas escan-dinavas. Se todos forem instalados, oespaço utilizado no disco rígido saltapara cerca de 31 MBytes.

A pouca exigência de espaço no discorígido é, felizmente, característica doaplicativo. Se você está familiarizadocom pacotes de escritório na escala doOpenOffice, ficará admirado com a velo-cidade com que o aplicativo é iniciado e

reage aos comandos. Mesmo assim,houve demoras ocasionais, porém per-ceptíveis, ao importar documentos.

Quanto à estabilidade da aplicação,não podemos nos queixar. O programanão caiu nenhuma vez em nossos labo-ratórios, apesar de ter havido um ou doiserros de exibição. De novo, especifica-mente ao importar documentos.

GUIA interface gráfica é bastante familiar(ver Figura 1). A SoftMaker utiliza suaprópria biblioteca gráfica (toolkit), queapareceu pela primeira vez quando oTextMaker foi lançado. As barras de fer-ramentas e estruturas de menu seguemos padrões atuais, o que facilita a migra-ção para o PlanMaker.

O chamado “modo objeto” do PlanMa-ker demanda alguma familiaridade. Oprograma entra em “modo objeto” auto-maticamente sempre que o usuárioinsere ou modifica um gráfico ou ima-gem. Isso evita mudanças inadvertidasno conteúdo das células, mas pode irritarqualquer um que esteja acostumado atrabalhar com outras planilhas. Os usuá-rios do TextMaker, entretanto, já devemestar habituados a essa peculiaridade.Felizmente, a maioria dos usuários nãoenfrentará o “modo objeto” com tantafreqüência, uma vez que o próprio apli-cativo se encarrega de habilitar e desabi-litar automaticamente este modo sempreque necessário.

ASoftMaker [1] é uma fabricantede softwares com diversos produ-tos para escritório em seu portfo-

lio. Além do processador de textoTextMaker e do banco de dados DataMa-ker (que no momento está disponívelapenas em versão Windows), o portfoliode produtos inclui o PlanMaker, umaplanilha eletrônica que recentementeganhou uma versão para Linux.

Assim como o editor de texto, o Plan-Maker é um aplicativo extremamentepequeno, que ocupa meros 15 MBytes deespaço no disco rígido – incluindo omanual formatado em PDF, que tambémserve como arquivo de ajuda. O fabri-

PlanMakerANÁLISES

46 Setembro 2004 www.linuxmagazine.com.br

Depois de adaptar seu processador de texto TextMaker para Linux no ano pas-

sado, a SoftMaker agora lança seu aplicativo para planilhas, o PlanMaker.

Demos uma olhada na versão de pré-lançamento, que está quase concluída.

POR TIM SCHÜRMANN

PlanMaker

A Arte das Planilhas

Figura 1: A interface do PlanMaker. Vários tipos degráficos estão disponíveis.

046_047_planmaker.qxd 9/21/04 11:02 PM Page 46

Page 47: Linux Magazine BR 2

FuncionalidadeO PlanMaker recebe créditos por ofere-cer uma seleção generosa de elementosgráficos para construir ilustrações. É pos-sível até mesmo agrupar fluxogramasquase instantaneamente clicando naslinhas de conexão. Elas se ligam aosobjetos e se movem automaticamentecom eles. Infelizmente, é preciso abriruma caixa de diálogo (dentro de Objectg New Drawing g AutoShapes) para aces-sar esse tipo de elementos especiais (verFigura 2), mas a maioria dos usuáriosficará bastante satisfeito com essa orga-nização, já que ilustrações desse tipo sãotarefas pouco comuns.

Fora isso, o PlanMaker é uma soluçãosimples, mas sólida como uma rocha,embora não possa acompanhar o ritmoestabelecido pelo Open ou o StarOffice.As únicas grandes vantagens que o Plan-Maker tem a oferecer são o Goal Seeker,uma função que encontra os valores ori-ginais para um dado resultado por apro-ximação, e a capacidade de agruparcélulas arbitrárias. No programa faltammuitas das convenientes funções que oOpenOffice tem para aliviar o esforço detrabalhar com planilhas maiores. Umexemplo é o “detective” do OpenOffice,que pode marcar todas as linhas modifi-cadas pela fórmula contida em uma dadacélula. Qualquer aplicativo moderno deplanilha deve ter funções extremamenteúteis como essa.

DetalhesO problema está nos detalhes, como namaioria dos casos. O corretor ortográficonão apenas sublinha as palavras mal sole-tradas, mas interrompe o usuário conti-nuamente abrindo caixas de mensagem.

Os usuários de Excel podem, também,sentir falta de ajuda ao digitar os dados,como o “autocompletar” automático.

A seleção de for-matos pré-defini-dos de células doPlanMaker mostrao programa sobuma luz mais favo-rável. Há atémesmo modelospara códigos ISBN.A planilha podetambém transpormatrizes, ou seja,trocar as linhas ecolunas. Enquantoo OpenOffice.orgexige que os usuários façam um passeiopelo clipboard, o PlanMaker tem um itemno menu principal que realiza a transposi-ção diretamente.

ImportandoOs sentimentos voltaram a ser antagôni-cos ao tentarmos importar documentosdo Excel. Embora o PlanMaker tenhaconvertido os dados de maneira bastantesatisfatória, muitos dos gráficos embuti-dos simplesmente desapareceram (verFigura 4). Como o programa não suportamacros ou scripts, ambos são descarta-dos sem sequer um “até logo”. Ficamosmuito contentes em ver que ele suportaarquivos do StarCalc - mas a alegria nãodurou muito. Na verdade, o PlanMakersó trabalha com arquivos das obsoletasversões 1.0 e 2.0. Esse problema é agra-

vado pelo fato de que as versões atuaisdo Open/StarOffice (1.2 e 7, respectiva-mente) não têm mais filtros de exporta-ção para esses formatos.

ConclusãoTrabalhar com o PlanMaker é divertido.O programa é pequeno, econômico e, defato, rápido. E mais, está disponível paravárias plataformas e sistemas operacio-nais, incluindo dispositivos móveis comoo PocketPC, além da plataforma Win-dows comum. Nossas reclamações emrelação a ele são a falta de funcionali-dade, ponto importante se você pretendeusar o programa para trabalhos rotinei-ros de escritório, e o fato de que os usuá-rios poderiam ter mais recursos aotrabalhar com planilhas maiores. O Plan-Maker é recomendado para uso domés-tico ou para máquinas mais antigas, commenos força na CPU.

Resta falar do preço. O programa, éclaro, vale os U$$ 49.90 que custa. Vocêpode conseguir um desconto se optarpelo pacote que inclui o TextMaker, porapenas U$$ 69.90. Todavia, o OpenOfficeoferece mais e é de graça, desde quevocê tenha o poder de processamentoextra que o pacote demanda.

Se você quiser testar o PlanMaker, oSuse Linux 9.1 Professional Package con-tém uma edição grátis de uso ilimitado,baseada em uma versão beta (protótipo)do software. Vale também conferir apágina da SoftMaker em [2] para fazer odownload de uma versão de demonstra-ção (trial) válida por 30 dias. ■

ANÁLISESPlanMaker

47Setembro 2004www.linuxmagazine.com.br

Biblioteca gráfica: Uma coleção de ferramen-tas e bibliotecas de programas utilizadaspara programar aplicativos ou simplificaresse processo. No caso de interfaces, as biblio-tecas gráficas contêm normalmente modelospara janelas, botões ou listas comuns,influenciando bastante a aparência e aforma de um aplicativo.Goal seeker: O Goal seeking é um método deaproximação. Se uma célula regida por umafórmula depende de outras células, é possívelespecificar um valor-alvo (goal) e o PlanMa-ker utilizará técnicas de aproximação paradescobrir valores apropriados para uma dasoutras células, apresentando o resultado nocampo designado.

GLOSSÁRIO

Figura 2: Ao contrário dos símbolos mais utiliza-dos, é preciso acessar uma caixa de diálogo paraselecionar elementos do fluxograma.

Figure 4: Um arquivo importado do Excel. O quevocê não vê é que o programa jogou fora a figurade um carro de Fórmula 1 que estava no fundo.

Figura 3: Configurandoas margens da páginapara definir a área deimpressão, métodoindireto, embora oPlanMaker permitautilizar a seleção atual.

[1] SoftMaker:http://www.softmaker.de/index_en.htm

[2] Versão teste do PlanMaker:http://www.softmaker.de/pmltrialreg_en.htm

INFORMAÇÕES

046_047_planmaker.qxd 9/21/04 11:02 PM Page 47

Page 48: Linux Magazine BR 2

Gerenciamento de PacotesTUTORIAL

48 Setembro 2004 www.linuxmagazine.com.br

Para demonstração, vamos utilizar umpacote simples, como o irssi. Ele estadisponível no servidor oficial (ftp://ftp.slackware.com/slackware-10.0/source/n/irssi/irssi.SlackBuild). Além de simples,ele é um pacote que foi incluído hápouco tempo na distribuição, com defi-nições mais recentes.

Como é um shell script, o SlackBuilddo irssi começa com a definição do shelle de algumas variáveis:

#!/bin/shCWD=`pwd`TMP=${TMP:-/tmp}PKG=$TMP/package-irssi

Estas linhas indicam o sh como shell,definem a variável CWD (Current

Work Directory - Diretório Atual deTrabalho) como o diretório atual, avariável TMP, se já não estiverdefinida, aponta para /tmp, e PKG

recebe o valor TMP/package-nome-do-software, em nosso caso, irssi. Logo aseguir vêm as definições das variáveis decompilação. Veja a Listagem 1.

Desde o Slack-ware 9, se a variá-vel ARCH (arqui-tetura) não estiverdefinida, os paco-tes são compila-dos para a arqui-tetura 486. Se es-tiver, o script vaidefinir algumasflags de compila-ção e guardá-lasdentro da variávelSLKCFLAGS.Posso otimizar ocódigo para mi-nha máquina, que

tem um processador Athlon XP, trocandomcpu=i386 por mcpu=athlon-xp:

if [ ! -d $TMP ]; thenmkdir -p $TMPfirm -rf $PKGmkdir -p $PKGcd $TMPrm -rf irssi-$VERSIONtar xjvf $CWD/irssi-$VERSION.tar.bz2

Aqui o script verifica se o diretório tem-porário definido na variável TMP existe eremove eventuais resíduos de uma com-pilação anterior. Em seguida, o código-fonte é descompactado neste diretório.

cd irssi-$VERSIONchown -R root.root .find . -perm 777 -exec chmod 755 {} \;find . -perm 664 -exec chmod 644 {} \;

Após entrar no diretório do código-fonte,o script realiza uma verificação de per-missões, retirando as permissões deacesso dos usuários ao código-fonte eSlackBuilds são scripts que automa-

tizam a criação de pacotes no for-mato oficial do Slackware. São

shell scripts (para saber mais sobre shellscripts, veja a série “Papo de Botequim” ,na página 87 desta edição) que, apesarde padronizados, variam ligeiramente deacordo com as necessidades do softwarea ser instalado. Criar um SlackBuildfacilita muito a tarefa de manutenção defuturas versões do pacote.

Os SlackBuilds estão disponíveis emqualquer servidor ftp que contenha aárvore de pacotes do Slackware. Nessaárvore há o diretório source, que contémo código-fonte de tudo que compõe oSlackware. Dentro do diretório de cadapacote há seu código-fonte, um arquivocom a descrição e um SlackBuild, no for-mato nome-do-software.slackbuild.

No último artigo, aprendemos a gerenciar pacotes no Slackware e até nos aventuramos a criar alguns com o auxílio do

utilitário checkinstall. Neste artigo, vamos estudar como os pacotes são montados na distribuição principal, desbra-

vando os SlackBuilds. POR SULAMITA GARCIA

Crie pacotes oficiais de software para o Slackware

Embrulha pra presente!

VERSION=0.8.9ARCH=${ARCH:-i486}BUILD=3

if [ “$ARCH” = “i386” ]; thenSLKCFLAGS=”-O2 -march=i386 -mcpu=i686”

elif [ “$ARCH” = “i486” ]; thenSLKCFLAGS=”-O2 -march=i486 -mcpu=i686”

elif [ “$ARCH” = “s390” ]; thenSLKCFLAGS=”-O2”

elif [ “$ARCH” = “x86_64” ]; thenSLKCFLAGS=”-O2”

fi

Listagem 1

048-049_slackpack.qxd 9/21/04 10:04 PM Page 48

Page 49: Linux Magazine BR 2

TUTORIALGerenciamento de Pacotes

49Setembro 2004www.linuxmagazine.com.br

dando acesso apenas para o root. Aseguir vem a configuração do pacote pro-priamente dita:

CFLAGS=”$SLKCFLAGS” \./configure \--prefix=/usr \--sysconfdir=/etc \--enable-ipv6 \--with-textui \--with-bot \--with-proxymakemake install DESTDIR=$PKG

As opções de compilação são passadasao gcc através da variável CFLAGS. Aquivocê pode adicionar ou remover opções:se você não quer suporte a ipv6, removaa linha correspondente. Se quiser testar agarbage collection, deve adicionar umalinha especificando isso (--with-gc \).Para uma lista com todas as opções dopacote, digite ./configure -help.

Depois de tudo isso, o pacote é compi-lado e os binários, páginas de manual,documentação e demais arquivos serãoinstalados no diretório especificado navariável DESTDIR, como se estivessemna raiz do sistema. Se você observar oque foi instalado, notará que os dire-tórios /usr, /etc e outros foram criadosem DESTDIR.

Na Listagem 2, o dono e o grupo dosbinários são modificados para usuárioroot e grupo bin. Em seguida o scriptprocura os binários no formato ELF erealiza um strip. Isto vai “limpar” o exe-cutável, removendo símbolos de depu-ração, o que diminui o tamanho dos

arquivos. Logo após, o script muda aextensão do arquivo de configuraçãopara .new, para não sobrescrever algumarquivo de configuração já existentedurante a instalação. Continuando nossaanálise, veja o código na Listagem 3.

Lá o script faz alguns ajustes na docu-mentação, movendo o que realmenteinteressa para um diretório com umnome significativo, composto pelo nomee versão do pacote.

gzip -9 $PKG/usr/man/man?/*.?

A linha acima comprime as páginas demanual (padrão no Slackware, lembra?).

mkdir -p $PKG/installcat $CWD/slack-desc > $PKG/installU/slack-desczcat $CWD/doinst.sh.gz > $PKGU/install/doinst.sh

Aqui são criados os arquivos slack-desc edoinst.sh, discutidos no primeiro artigo.Recapitulando: o slack-desc é um arquivode descrição do pacote e doinst.sh é umshell script que irá realizar tarefas pós-instalação, como a criação de links, no-vos usuários e ajustes necessários aobom funcionamento do pacote.

A localização desses arquivos pode sermodificada e o zcat pode ser substituído

pelo cat, caso o arquivo doinst.sh sejaum shell script sem compactação.

cd $PKGmakepkg -l y -c n $TMP/irssi-U$VERSION-$ARCH-$BUILD.tgz

Finalmente podemos criar o pacote como makepkg. As opções significam:• -l y: se um link simbólico é encon-

trado, uma instrução para criá-lo é adi-cionada ao script doinst.sh. Emseguida, o link é removido.

• -c n: se não for n (no), o makepkg iráconfigurar todas as permissões deacesso ao diretório para 755 e o donopara root.root. Não é o que queremos.Agora você já sabe como funciona um

script que cria um pacote para o Slack-ware. Que tal utilizar esse conhecimentopara “empacotar” um software que aindanão faz parte da distribuição? ■

Sulamita Garcia é for-mada em Ciências daComputação pelaUFSC, onde conheceuo Linux. Participa doprojeto LinuxChix emantém o site de AltaDisponibilidade naUnderLinux, possuindo também certi-ficação LPIC II.Trabalha atualmentena Cyclades como Software Designer.SO

BRE

AAU

TORA

No artigo "Embrulha pra Viagem!", napágina 55 de nosso primeiro número, umerro de edição prejudicou a compreensão deum trecho do texto. Após correção, oprimeiro parágrafo da página 55, fica:

O arquivo do-install.sh também não é especí-fico ao Slackware. Ele é genérico, então paracriar um pacote no formato oficial devemossubstituí-lo pelo doinst.sh. Não realizar estasalterações não implica no mau funciona-mento do pacote, só significa que ele não estáde acordo com o padrão. É neste momentoque você pode incluir tarefas no shell scriptdoinst.sh. Nele você pode executar comandosno sistema, adicionar usuários, criar links, etc.

Erramos!

chown -R root.bin $PKG/usr/bin( cd $PKGfind . | xargs file | grep “executable” | grep ELF | cut -f1 -d : | U

xargs strip —strip-unneeded 2> /dev/nullfind . | xargs file | grep “shared object” | grep ELF | cut -f 1 -d : | U

xargs strip —strip-unneeded U 2> /dev/null)mv $PKG/etc/irssi.conf.$PKG /etc/irssi.conf.new

Listagem 2

rm -rf $PKG/usr/share/doc( cd $PKGfind . -name perllocal.pod | xargs rm -f

)mkdir -p $PKG/usr/doc/irssi-$VERSIONcp -a AUTHORS COPYING INSTALL NEWS README TODO docs $PKG/usr/doc/irssi-U$VERSIONrm -f $PKG/usr/doc/irssi-$VERSION /docs/Make* U $PKG/usr/doc/irssi-U$VERSION/docs/*.1

Listagem 3

048-049_slackpack.qxd 9/21/04 10:04 PM Page 49

Page 50: Linux Magazine BR 2

LPRngTUTORIAL

50 Setembro 2004 www.linuxmagazine.com.br

Logo acima do kernel, encontramos ofiltro de impressão. Este programa irátraduzir o documento a ser impressopara a linguagem específica da impres-sora. Sim, as impressoras possuem umalinguagem própria e os documentosdevem ser traduzidos para esse idiomaque, via de regra, muda de fabricantepara fabricante e, dentro de um mesmofabricante, de modelo para modelo. O fil-tro cuida disso, convertendo os docu-mentos recebidos para algo que aimpressora entenda.

Quem recebe o documento e o enviapara o filtro de impressão é o daemon deimpressão. Pode ser o BSD LPD, o CUPSou o LPRng, entre outros. A funçãodestes daemons é receber o trabalhoenviado pelo usuário e enviá-lo para aimpressora correta através do filtro cor-

reto. Se for uma impressão local, eledeve receber o documento, passá-lo pelofiltro e enviar o resultado para o disposi-tivo de impressão. Caso seja umaimpressora remota, ele recebe o docu-mento e conversa com o daemon damáquina remota, enviando-o para ela.Algumas vezes, o filtro é executado namáquina de origem do trabalho e, emoutras, na máquina de destino.

O último elo dessa cadeia são oscomandos do usuário, que enviam ostrabalhos para o daemon e recolhem deleinformações sobre o andamento da filade impressão e o que está acontecendocom cada trabalho.

Neste artigo iremos configurar umaimpressora utilizando o LPRng. Veremosquais os arquivos envolvidos, osparâmetros mais importantes e criare-

A filosofia UNIX dita o uso devários pequenos programas,cada qual cuidando muito bem

de uma função específica, trabalhandoem conjunto para realizar grandes feitos.Um bom exemplo disso é o sistema deimpressão no Linux.

No nível mais baixo, temos o kernel,que trabalha diretamente na comuni-cação com a impressora. É nesse nívelque vamos encontrar o suporte à portaparalela, serial, USB e à rede. Obvia-mente, se você pretende utilizar umaimpressora que se conecta à porta para-lela, irá precisar do suporte a esse tipo dedispositivo no kernel. A maioria das dis-tribuições Linux já fornece este recurso,se não compilado no kernel, como ummódulo carregado automaticamentesempre que necessário.

O servidor de impressão mais popular no mundo *NIX é o lpd, utilizado desde tempos longínquos. Seu sucessor, o LPRng,

segue a mesma filosofia (e forma de configuração), mostrando-se um sistema confiável, leve e rápido para gerenciar e

utilizar impressoras. POR PITER PUNK

Configurando um sistema de impressão

LPRng - A nova geração Yuri M

aslov - ww

w.sxc.hu

050-055_lprng.qxd 9/21/04 10:06 PM Page 50

Page 51: Linux Magazine BR 2

TUTORIALLPRng

51Setembro 2004www.linuxmagazine.com.br

mos um pequeno filtro de impressão.Existem ferramentas que facilitam eautomatizam boa parte desse processo,mas nenhuma delas oferece todos osrecursos e tampouco a flexibilidade queo conhecimento do sistema como umtodo pode trazer.

No princípio…Era o vazio, e os usuários mandavamseus dados diretamente para os disposi-tivos. O cat reinava soberano. Paraenviar um documento para a impressorabastava ordenar:

# cat documento > /dev/lp

E o documento era impresso. As impres-soras daquela época lidavam apenascom texto, mas mesmo assim podiamestar em outra máquina, e por isso exis-tiam diferentes formas de imprimir. Pararesolver esses problemas surgiu o lpd,que lê no arquivo /etc/printcap onde estáa impressora e qual filtro de impressãodeve ser usado.

Nossa primeira impressoraÉ extremamente simples configurar umaimpressora no BSD LPD ou no LPRng.Basta colocar os dados referentes à elano arquivo /etc/printcap. A seguir, umexemplo de como é a entrada de umaimpressora neste arquivo:

lp|printer1:\:lp=/dev/lp0:\:sd=/var/spool/lpd/lp:\:mx#0:\:sh:

A primeira coisa que temos é o nome daimpressora (lp), seguido do apelido dadoa ela (printer1), separado pelo caracterepipe (|). A partir daí, temos o restante daconfiguração, com cada um dos camposseparado por “:”• lp=/dev/lp0: aqui definimos qual o

dispositivo da impressora. /dev/lp0 é aprimeira porta paralela.

• sd=/var/spool/lpd/lp: este é odiretório no qual vai ficar o arquivo deimpressão, enquanto o daemon esperaa impressora estar pronta paraimprimir. Imagine a cena: váriosusuários mandam imprimir diferentesarquivos e a impressora só podeimprimir um de cada vez. Enquanto

um dos arquivos é impresso os outrosficam esperando na fila, que costu-mamos chamar de spool. Quando aimpressora termina de imprimir oprimeiro trabalho, ela passa para opróximo da fila.

• mx#0: esse misterioso comando defineo tamanho máximo do arquivo a serimpresso. Se não quiser impor nen-hum limite, use o 0 (zero).

• sh: essa linha, que não é maisnecessária no LPRng, avisa ao daemonque não deve ser impressa uma páginade “rosto” com o nome de quemimprimiu as páginas seguintes, nomedo arquivo e outras informações. Ocomportamento padrão do BSD LPD éimprimir essa folha de rosto, por isso anecessidade dessa opção. No LPRng opadrão é não imprimir.

Pronto, já temos a nossa primeiraentrada de impressão. Agora devemosavisar ao daemon que nossa novaimpressora existe. Primeiro, usamos ocomando checkpc:

# checkpc -f

Este comando irá criar todos osarquivos de que nossa nova impressoraprecisa. Lembre de executá-lo sempreque adicionar uma nova impressora.Agora vamos notificar o lpd:

# lpc reread

Com esse comando avisamos ao dae-mon para ler novamente seus arquivosde configuração. Agora a nossa impres-sora já está pronta para uso.

Infelizmente nem tudo é simples comodeveria ser. Para que funcione com ape-nas as definições acima, uma impressoradeve entender arquivos texto no formatoUNIX e arquivos PostScript. Normal-mente elas apenas compreendemarquivos no formato DOS e usam um for-mato exótico qualquer para imprimirgráficos (como o PCL, da HP). Podemosresolver esse pequeno problema adicio-nando um filtro à nossa definição deimpressora, como veremos mais adianteainda neste artigo.

Imprimindo em rede…Configurar uma impressora de rede é tãosimples como uma impressora local;aliás, é até mais simples. De maneira

geral, para economizar trabalho, o filtrode impressão é instalado na máquina naqual está conectada a impressora, ouseja, não precisamos nos preocupar comele. Uma entrada para uma impressoraremota se parece com a seguinte:

lp1|remote-printer:\:rp=lp:\:rm=maquina-remota.lalala::sd=/var/spool/lpd/lp1:\:sh:

Bem semelhante à entrada anterior, nãoacham? A grande diferença são os cam-pos rp e rm. O primeiro é o nome daimpressora na máquina remota (noexemplo dado, lp) e o segundo é amáquina na qual a impressora estáconectada (no exemplo, maquina-remota.lalala). Esta é a sintaxe tradi-cional do BSD LPD. No LPRng as coisassão ainda mais simples:

lp1|remote-printer:\:[email protected]:\:sd=/var/spool/lpd/lp1:

O campo :sh: não aparece porque,como já foi dito, ele não é necessáriono LPRng. Os campos rm e rp sãomesclados em um único campo lp,onde informamos a impressora e amáquina à qual ela está conectada.

Com isso já sabemos configurarimpressoras locais e impressorasremotas, bastam apenas algumas linhasno arquivo /etc/printcap.

Uma fila para váriasimpressorasUma situação comum em ambientes cor-porativos é termos várias impressorascumprindo a mesma função. Com isso,podemos ter uma impressora “mestre”que repassa os trabalhos às escravas àmedida que elas forem desocupadas. Háduas vantagens nesse método:1.Você vai usar melhor suas impresso-

ras, já que não vai ficar com uma delasentupida de trabalho e outra parada.

2.Não precisa configurar N impressorasem todas as máquinas da sua rede.Configure só a impressora mestre ecuide das outras direto no servidor.Montar uma configuração deste tipo

usando o LPRng é fácil. Veja um exem-plo a seguir:

050-055_lprng.qxd 9/21/04 10:06 PM Page 51

Page 52: Linux Magazine BR 2

Ao comparar com a entrada que temosna seção anterior, você verá que a únicadiferença é o campo if, onde está especi-ficado o caminho completo para o filtro.O filtro é específico para um determi-nado modelo de impressora, no caso aEpson Stylus C42SX. O exemplo abaixo évoltado a ela:

#!/bin/sh#/usr/bin/gs -q -dSAFER -dBATCH U

-dNOPAUSE -dPARANOIDSAFER U

-sDEVICE=ijs U-sIjsServer=/usr/bin/ijsgimpprint U

-dIjsUseOutputFD -sPAPERSIZE=a4 U

-sDeviceManufacturer=EPSON U

-sDeviceModel=escp2-c40sx U

-sOutputFile=- -

O texto acima, que começa com/usr/bin/gs e termina com -, é escritotodo em uma única linha, sem quebras.Vamos dissecar esse monstro para vercomo ele funciona:• /usr/bin/gs é o GhostScript, nosso

“superfiltro”. Ele já vem com vários fil-tros embutidos, além de permitir aadição de filtros novos através demódulos especiais.

• -q -dBATCH -dNOPAUSE: esses trêscomandos fazem com que o Ghost-Script não gere mensagens (modosilencioso, -q), que não haja umapausa após a tradução de cada página(-dNOPAUSE) e que o prompt decomando do GhostScript não sejamostrado no final do trabalho (-dBATCH). Esses passos são impor-tantes para que nada atrapalhe aimpressão do nosso documento.

• -dSAFER -dPARANOIDSAFER: essasopções de segurança são utilizadaspara garantir a integridade dos seusarquivos e evitar que algum códigoPostScript faça algo errado no seu sis-tema. Sim, PostScript é uma lin-guagem de programação e pode serusada para fazer as coisas mais estra-nhas, como servidores Web.

• -sDEVICE=ijs escolhe o tipo de dispos-itivo a ser utilizado. Quando uti-lizamos o tipo ijs, preparamos oGhostScript para carregar um filtroexterno. No exemplo, estamos usandoos filtros do gimp-print.

• -sPAPERSIZE=a4 informa o tamanhode papel. Usamos o formato A4.

• -sOutputFIle=- configura o arquivo desaída para a saída padrão. O LPRng irácuidar de receber a saída padrão edirecioná-la para a impressora.

• - simboliza a entrada padrão, que épor onde o nosso filtro de impressãoestá recebendo o arquivo.

• -sIjsServer=/usr/bin/ijsgimpprint: essaopção indica ao GhostScript quem seráo responsável pelo filtro. Além desta,temos também outras opções específi-cas do servidor IJS.

• -dIjsUseOutputFD diz ao servidor IJSpara ser bonzinho e obedecer aos nos-sos redirecionamentos para a saídapadrão (normalmente ele se recusa afazer isso).

• -sDeviceManufacturer=EPSON -sDe-viceModel=escp2-c40sx especifica ofabricante e o modelo da impressora. Éaqui que especificamos o filtro propri-amente dito. Para ver uma lista comtodas as impressoras suportadas pelogimp-print, consulte a página de ma-nual do gimpprint-models.

Vamos chamar este filtro de myfilter,transformá-lo em um arquivo executável(chmod +x myfilter) e colocá-lo nodiretório /usr/local/bin. Nossa entradade impressora vai ficar assim:

lp|printer1:\:lp=/dev/lp0:\:if=/usr/local/bin/myfilter:\:sd=/var/spool/lpd/lp:\:mx#0:\:sh:

Infelizmente o trabalho ainda nãoacabou. Da maneira como fizemos, o fil-tro só consegue trabalhar com arquivosno formato PostScript. Embora a maiorparte dos programas gráficos do mundo*NIX gere saída em PostScript, um filtrodo mundo real tem que trabalhar comdiversos formatos de arquivo, inclusivetexto puro. Para isso, é necessário desco-brir qual o tipo do arquivo que estásendo impresso.

Podemos fazer isso em nosso filtro,mas já existem diversos filtros prontosque incluem este e outros recursos. Omelhor a fazer é utilizar algum programaauxiliar, como o apsfilter, que irá guiá-lopor uma série de menus em modo textoaté que sua impressora esteja devida-mente configurada. Se por acaso suaimpressora não for suportada, ou se você

master:\:sd=/var/spool/lpd/%P:\:sv=slave1,slave2,slave3:

Duas novidades, o uso do parâmetro %Pe o campo sv. O %P apenas diz aoLPRng que o nome do spool é o mesmoda impressora (no nosso caso,/var/spool/lpd/master). Note que a cadaexemplo vamos deixando isso cada vezmais simples.

Já a linha sv descreve quais são asimpressoras “escravas”; sv significaslave. Chamei as impressoras escravasde slaveN, onde N é um número de 1 a 3.A configuração das impressoras escravasé idêntica à de uma impressora normal,exceto por um campo:

slave1:\:lp=/dev/lp0:\:sd=/var/spool/lpd/lp1:\:mx#0:\:ss=master:

Note a linha ss=master, que indica onome da impressora mestre à qual essaescrava serve. Você deve incluir essecampo na configuração das impressorasescravas. Em seguida, execute os coman-dos checkpc e lpc reread para fazer assuas novas impressoras funcionarem.

Filtros…Quando o assunto são os filtros, ascoisas começam a ficar um pouco maiscomplicadas - e quase sempre pre-cisamos lidar com eles. No caso deimpressoras remotas, nem sempre isso énecessário. Impressoras de rede costu-mam compreender o formato PostScripte, no caso de impressoras conectadas aoutra máquina *NIX, o filtro geralmentejá está instalado na ponta “de lá”.

Mas existem as impressoras locais enem sempre os filtros estão realmenteinstalados na máquina remota. Énecessário um filtro diferente para cadatipo de impressora, às vezes até maisque um. Adicionar um filtro a uma denossas entradas no printcap é fácil:

lp|printer1:\:lp=/dev/lp0:\:if=/caminho/para/o/filtro:\:sd=/var/spool/lpd/lp:\:mx#0:\:sh:

LPRngTUTORIAL

52 Setembro 2004 www.linuxmagazine.com.br

050-055_lprng.qxd 9/21/04 10:06 PM Page 52

Page 53: Linux Magazine BR 2

estiver planejando fazer algum uso mais“criativo” do filtro (como reduzir todasas páginas e imprimir duas por folha,etc…) já tem uma idéia do que fazer.

Controlando tudo isso: lp*Depois de criar nosso filtro e configuraras filas de impressão, precisamos colocartudo isso para funcionar. Afinal, não adi-anta nada termos impressoras configu-radas e não imprimirmos nada. Osprincipais comandos usados para contro-lar o LPRng e enviar trabalhos para asimpressoras são:• lpr - Envia um trabalho (arquivo) para

a impressora• lpq e lpstat - Verifica o estado da fila de

impressão• lprm - Remove um trabalho da fila• lpc - Controla o sistema de impressãoVamos analisar cada um destes coman-dos, em detalhes, a seguir.

lprO comando mais importante, e comcerteza o mais usado, é o lpr. Com elepodemos mandar um trabalho para umaimpressora, seja ela local ou remota. A

forma de uso é bem simples. Paraimprimir um arquivo digite:

# lpr arquivo

ou podemos enviar o arquivo a serimpresso para a fila via pipes.

# cat arquivo | lpr

Nos dois casos, o “arquivo” seráenviado para o daemon de impressão e,no momento oportuno, para a impres-sora padrão. No BSD LPD, qualquerimpressora com o nome lp será a impres-sora padrão. Já no LPRng as coisas sãodiferentes: a impressora padrão será aprimeira entre as listadas no arquivo/etc/printcap. Por pura tradição, geral-mente o nome dela também é lp.

Existem outras maneiras de determi-nar a impressora padrão; uma das maissimples é colocá-la na variável de ambi-ente PRINTER. Assim, se quisermos quea impressora padrão seja a lp_aux, deve-mos digitar o comando:

# export PRINTER=lp_aux

Você pode colocar essa variável de ambi-ente no seu .bashrc ou .bash_profile.Também é possível especificar a impres-sora diretamente na linha de comando:

# lpr -Plp_aux arquivo

Ou, indo mais além, especificar umaimpressora remota diretamente:

# lpr -Plp@outra_maquina arquivo

Além de enviar um trabalho para aimpressora, o lpr possui diversas outrasopções; veja algumas delas:• -C letra determina a prioridade da

impressão. A menor é A e a maior é Z.A configuração padrão envia todos ostrabalhos como tendo a prioridademais baixa. O C significa “class”.

• -B junta vários trabalhos em um só.Assim, você pode mandar imprimirvários arquivos como sendo apenasum trabalho. Útil para ajudar nogerenciamento dos trabalhos.

• -Kn imprimen cópias do trabalho envi-ado. É um recurso muito útil, porémpouco conhecido.

TUTORIALLPRng

050-055_lprng.qxd 9/21/04 10:06 PM Page 53

Page 54: Linux Magazine BR 2

# lpq -Pall@maquinaremota -s

Com isso, mostramos as informações dasfilas de impressão configuradas namáquina remota.

Retirando o -s, temos várias outrasinformações sobre fila de impressão,sendo a principal a lista dos trabalhossendo impressos. Uma saída típicainclui, entre outras informações, asmostradas no Quadro 1. Com issopodemos saber que:1.Existe um trabalho sendo impresso

(active), ele pertence ao usuário punk,é da classe A (a mais baixa), possui onúmero 187 e está sendo impressodesde as 20:35:53

2.O tal usuário punk também imprimiuum trabalho da mesma classe as12:31;32. Diga-se de passagem, umarquivo bem maior, com quase 36kEstas são informações bem interes-

santes; podemos obtê-las em váriasimpressoras ao mesmo tempo e, comisso, ter a qualquer momento um instan-tâneo do que está acontecendo no sis-tema de impressão.

lprmEsse é um comando simples de usar, masque geralmente tem pouca utilidade.Normalmente, quando percebemos queestamos imprimindo algo errado, o tra-balho já está no buffer da impressora enão mais na fila, portanto não há mais oque fazer. Mas enquanto ele estiver nafila (ou no caso de ainda não ter sidoenviado totalmente para a impressora),pode ser removido com o comando lprm.A sintaxe padrão é:

# lprm

Isso irá remover da fila o último trabalhoenviado. De maneira geral, um usuáriocomum pode remover apenas os trabal-hos criados por ele. Se você quiserremover um trabalho específico da fila,pode fazer como em uma lanchonete e“pedir pelo número”.

# lprm numero_do_trabalho

E como descobrir o número do tra-balho? Com o <C>lpq<C>, que omostra na coluna <I>Job<I>.Dependendo do tamanho do trabalho,quando descobrimos qual o númeroele já foi impresso. Para resolver esteproblema podemos usar:

# lprm -a

Que remove todos os trabalhos perten-centes à mesma fila do último trabalhoenviado (nunca faça isso como root, anão ser que tenha um ótimo motivo). Damesma maneira que nos outros coman-dos, a opção-P pode ser utilizada paraespecificar uma fila em especial outodas, com a opção all. O usuário root(sempre ele) pode remover trabalhos deoutros usuários:

# lprm -Plp nome_do_usuário

Esse comando remove o último trabalhoenviado pelo usuário nome_do_usuário àfila lp. Como vimos, é um comando bemsimples e fácil de ser utilizado. Todos osusuários deveriam conhecê-lo, o quepoderia resultar na economia de algumastoneladas de papel.

lpcEsse é o comando mais complexo doconjunto. Com ele controlamos todo osistema de impressão, e podemos redire-cionar trabalhos, verificar o estado dasimpressoras, reler os arquivos de config-uração, ativar e desativar impressoras,entre vários outros truques que podemsalvar nossos pescoços.

Um uso interessante é reposicionar ostrabalhos na fila (útil para agradar oschefes). Tendo o número do trabalho deimpressão em mãos (que pode ser con-seguido com o comando lpq), digite:

# lpc topq nome_da_impressora U

trabalho

• -b: este parâmetro habilita o modo“binário”, no qual o sistema deimpressão tenta manter o arquivo“intocado”. Muito útil quando uti-lizado em conjunto com uma impres-sora raw (sem filtro). Dessa maneira, osistema de impressão se comportapraticamente como um pipe, enviandoo trabalho diretamente da máquinacliente para a impressora.

lpqApesar dos nomes diferentes, lpq e lpstatsão praticamente o mesmo comando,sendo o lpstat uma espécie de front-endpara o lpq, com sintaxe e algumasopções diferentes. O objetivo dessescomandos é verificar o estado de umafila de impressão, se está ocupada, quemestá imprimindo, se ela existe, entre out-ras informações. Vamos explicar comofunciona o lpq, pois com ele é possívelcoletar todas as informações que dese-jamos. Caso precise de alguma infor-mação adicional, consulte as páginas demanual dele e do lpstat. O comandobásico é:

# lpq -Pall -s

Esse comando vai lhe mostrar todas asimpressoras configuradas na máquinaem que você está e quantos trabalhosestão na fila de cada uma delas. Umasaída típica seria:

# lpq -Pall -smaster@rachael 0 jobs (subservers lp)lp@rachael 0 jobs (serving master)mp3@rachael 0 jobslp1@rachael 0 jobs

O -s é de “short”; sem essa opção sãoapresentadas várias informações extras.O parâmetro -P funciona de maneiraidêntica ao do comando lpr. A diferençaaqui é o all, que é um apelido indicandotodas as impressoras. Se quiser fazer amesma pesquisa em uma máquinaremota, basta digitar:

LPRngTUTORIAL

54 Setembro 2004 www.linuxmagazine.com.br

# lpq -Pall@maquinaremotaRank Owner/ID Class Job Files Size Timeactive punk@rachael +187 A 187 /etc/fstab 690 20:35:53done punk@rachael +592 A 592 /tmp/a2_kB6Sgp 37002 12:31:32

Quadro 1: saída do comando lpq

050-055_lprng.qxd 9/21/04 10:06 PM Page 54

Page 55: Linux Magazine BR 2

Com isso o trabalho será passado para oinício da fila. Também é possível redire-cionar trabalhos de uma impressora paraoutra. Se uma das suas impressorasparar de funcionar e houver uma longafila de espera, basta digitar:

# lpc redirect impressora_quebrada Unova_impressora

Quando consertar sua impressora, can-cele o redirecionamento trocando o parâ-mentro nova_impressora por off. Se nãohouver outra impressora, você pode“estacionar” os trabalhos enquanto exe-cuta a manutenção:

# lpc holdall impressora

Isso irá segurar todos os trabalhos nafila. Depois de corrigir o problema, libeeos trabalhos para serem impressos. Bastadigitar o comando:

# lpc release impressora

É possível “segurar” e “liberar” trabalhosindicados por seus números. A sintaxe é:lpc hold trabalho e lpc release trabalho.

Outros parâmetros do LPC muito uti-lizados são:• reread: Faz com que as configurações

do servidor de impressão sejam lidasnovamente. Seu uso é necessárioquando os arquivos /etc/printcap oulpd.conf são alterados.

• down impressora: “Desliga” a impres-sora, fazendo com que ela pare dereceber e de imprimir trabalhos

• up impressora: “Liga” a impressora,deixando-a pronta para receber traba-lhos. Tanto neste como em vários ou-tros comandos é possível substituirimpressora por all, indicando todas asimpressoras

• status: Mostra o estado atual dasimpressoras do sistema, se estão ati-vas, se estão redirecionadas, quantostrabalhos estão na fila etc.

Existem vários outros parâmetros quepodem ser usados com o lpc, inclusivealguns muito úteis como o stop, start,enable, disable, move etc. Uma consultaà página de manual (man lpc) irá ajudá-lo a conhecer melhor essas opções.

Existem maneiras mais simples deconfigurar o LPRng (com o apsfilter [4],por exemplo). Mas a resolução de muitos

problemas, além de configurações maisexóticas, só pode ser conseguida comconhecimento detalhado de como ascoisas funcionam, obtido através daanálise dos arquivos de configuração. ■

TUTORIALLPRng

Piter PUNK, tambémconhecido por algunscomo Roberto FreiresBatista, é usuário deLinux desde 1996, etrabalhou durantevários anos comoadministrador de sis-temas. É o principal desenvolvedor doslackpkg, ferramenta para atualizaçãode pacotes no Slackware. Escrever doc-umentação e brincar com computa-dores MSX são dois de seus hobbies.

SOBR

EO

AUTO

R

[1] Página oficial:http://www.lprng.com

[2] Printing Cookbook:http://www.lprng.com/PrintingCookbook/index.html

[3] http://www.piterpunk.hpg.ig.com.br/

[4] “Apsfilter, the number one magic fil ter”:http://www.apsfilter.org/

INFORMAÇÕES

050-055_lprng.qxd 9/21/04 10:06 PM Page 55

Page 56: Linux Magazine BR 2

KuruminTUTORIAL

56 Setembro 2004 www.linuxmagazine.com.br

• O conteúdo do CD écompactado, o quepermite acomodar cer-ca de 2 GB de soft-ware num CD de 700MB, mais do que sufi-ciente para uma dis-tribuição completa.

• É possível instalar dri-vers para SoftModems(WinModems) e ou-tros tipos de hardwarenão suportado, pro-gramas comerciais eassim por diante. Vo-cê pode até mesmousar o Wine para rodar alguns aplicati-vos Windows como o Microsoft Office.As possibilidades são imensas. Você

pode criar uma distribuição padrão paraser instalada em todos os PCs de suaempresa e ao mesmo tempo usá-la comoforma de apresentar o Linux aos funcio-nários, enquanto mantém o Windowsinstalado no disco rígido. É possível criarCDs com softwares diversos para apre-sentá-los a seus clientes, e CDs para usosespecíficos, como discos de recuperaçãode sistema, documentação eletrônica eassim por diante.

Você pode começar a partir do Kuru-min, a partir do Knoppix original ou apartir de qualquer uma das distribuiçõesfilhas ou netas. A escolha dependedaquilo que você pretende fazer.

Como o Kurumin funcionaO CD do Kurumin contém apenas doisdiretórios: /doc e /KNOPPIX, junto comalguns ícones e arquivos html. A pastadoc contém apenas os FAQs e manuaisinclusos no sistema. A pasta KNOPPIX éa que nos interessa. Dentro dela vocêencontrará as imagens dos disquetes deboot e um arquivo que ocupa quase todoo espaço do CD.

Esse arquivo é nada mais do que umaimagem compactada da partição raiz (/)do sistema. O módulo cloop “engana” oKernel, fazendo-o pensar que está aces-sando uma partição ext2 no disco rígido.Quando é preciso abrir um arquivo, eledescompacta a porção correspondenteda imagem, lê o arquivo e entrega osdados já “mastigados” para o Kernel.

OKurumin nasceu como uma per-sonalização do Knoppix, quecom o tempo ganhou vida pró-

pria. O Knoppix é uma distribuiçãobaseada no Debian, que utiliza o módulocloop para rodar a partir de uma imagemcompactada de um sistema de arquivosgravada no CD-ROM. Além de rodar dire-tamente do CD-ROM, sem alterar nadano HD, ele inclui uma série de utilitários,com destaque para o hwsetup, que seencarrega de detectar todo o hardwareda máquina durante o boot.

Mas a parte mais interessante doKnoppix é que você pode personalizar oCD, adicionando ou removendo progra-mas, alterando as configurações ou oque mais for necessário para fazer umadistribuição adequada às suas necessida-des. Além do Kurumin, existem hoje emdia algumas centenas de distribuições“filhas” baseadas no Knoppix, além devárias distribuições “netas”, desenvolvi-das a partir do Kurumin ou de outras dis-tribuições “filhas”. Isso tudo graças àsimplicidade do processo de remasteriza-ção do CD, já dominado por muita gente.Algumas das vantagens do Knoppix:• Ele já vem com um instalador, o que

permite instalá-lo rapidamente no HD,mantendo toda a configuração dehardware feita durante o boot.

• É possível instalar qualquer um dosmais de 15.000 pacotes do Debianusando o apt-get.

A parte mais interessante do Software Livre é que você não pre-

cisa se limitar a apenas usá-lo: pode colocar a mão na massa,

corrigir problemas, adicionar novos recursos ou personalizar o

que quiser. Veja aqui como criar sua própria distribuição a partir

do Kurumin.

Remasterizando o Kurumin

Pinguim ao gostodo freguês

Montagem

de Luciano Hagge sobre originais de “Bubbels”

e “ Alpaca”- ww

w.sxc.hu

056-061_kurumin.qxd 9/21/04 11:05 PM Page 56

Page 57: Linux Magazine BR 2

TUTORIALKurumin

57Setembro 2004www.linuxmagazine.com.br

Alguns diretórios que precisam desuporte a escrita, como /home e /var, sãoarmazenados num ramdisk de 2 MBcriado durante a inicialização. Este ram-disk pode crescer conforme necessário,desde que exista memória suficiente.Como nem todo mundo tem 256 MB, oumais, de RAM, o sistema usa partiçõesLinux swap, ou arquivos de troca (page-file.sys) encontrados em partições Win-dows, como memória virtual.

O módulo cloop foi originalmentedesenvolvido por Andrew Morton, que éatualmente o mantenedor do Kernel 2.6.Ironicamente, na época ele achou que omódulo não teria utilidade e o descartou.Algum tempo depois ele foi redescobertopelo Klaus Knopper, que acabou por uti-lizá-lo como um dos componentes basedo Knoppix. É um bom exemplo sobrecomo as coisas funcionam dentro domundo Open Source.

Personalizando o CDPara gerar uma versão personalizada dosistema precisamos descompactar essaimagem numa pasta do disco rígido,fazer as modificações desejadas, geraruma nova imagem compactada e final-mente gerar a imagem de CD (arquivo.ISO) com nossa nova distro. Você vaiprecisar de:• Uma partição Linux com cerca de 1.5

GB de espaço livre no disco (no casodo Kurumin) ou 3.5 GB caso estejaremasterizando o Knoppix ou outradistribuição que ocupe os 700 MB doCD. Calcule cerca de 2 GB de espaçopara a imagem descompactada, 700MB para a nova imagem e mais 700MB para o novo arquivo ISO.

• Uma partição Linux Swap (ou umarquivo de troca do Windows) de 1 GBmenos a quantidade de RAM do PC. Sevocê tem 256 MB de RAM, vai precisarde mais 768 MB de swap.

O sistema usa a memória RAM paraarmazenar a imagem compactada en-quanto ela está sendo criada e só depoiscopia o arquivo para o HD. Uma imagemcompleta do Knoppix tem 700 MB, eainda precisamos de memória para o usonormal do sistema. Note que a quanti-dade de memória varia de acordo com otamanho da imagem gerada; você vaiprecisar de menos memória se estivermodificando uma distribuição menor,como o Kurumin.

Se você não tiver uma partição swap,pode criar um arquivo temporário usan-do o espaço livre da partição Linux. Paraisso basta executar, como root, oscomandos abaixo:

# dd if=/dev/zero Uof=/mnt/hda1/swap bs=1024Ucount=1000000# mkswap /mnt/hda1/swap# swapon /mnt/hda1/swap

Substitua o hda1 pelo dispositivo corres-pondente à sua partição Linux, caso sejadiferente. O Kurumin inclui um scriptque automatiza o processo de remasteri-zação do CD, chamado remasterizar-kurumin, que pode ser encontrado nomenu Iniciar g Sistema.

Neste tutorial vou mostrar passo-a-passo como o processo funciona, expli-cando os comandos necessários parafazer tudo manualmente, de forma quevocê possa entender o que está aconte-cendo. O script serve para automatizaras partes chatas, permitindo que você seconcentre na parte criativa da tarefa.

O remasterizar-kurumin possui 4 fun-ções. As funções para extrair a imagemdo Kurumin para a partição de remasteri-zação e recriar a imagem do Kurumin(itens a e d no menu) devem ser executa-das com o Kurumin rodando do CD. Elasse destinam justamente a extrair osarquivos que compõem o sistema opera-cional para a partição de trabalho.

As funções abrir o chroot da imagem egerar o novo ISO (itens B e C) podem serexecutadas tanto do CD quanto com oKurumin instalado no disco rígido. Elasse destinam a fazer alterações no sistemae depois gerar a nova imagem ISO comas alterações.

Uma observação importante é que épreciso usar a mesma versão do módulocloop instalada no sistema de desenvol-vimento para fechar o arquivo compac-

tado. Em outras palavras, se você estáremasterizando o Kurumin com umaversão personalizada do kernel 2.6.7,por exemplo, essa mesma versão do ker-nel deve estar sendo executada no Kuru-min instalado no disco rígido ao fechar aimagem do sistema. Se você executarversões diferentes do kernel, ou estiverusando outra distribuição, as versões docloop serão diferentes e o novo CD sim-plesmente não vai “dar boot”.

Você pode criar as partições necessá-rias usando um CD de instalação doMandrake ou o utilitário cfdisk inclusono próprio Kurumin. Pode também apro-veitar uma partição de uma distribuiçãoLinux já existente no disco rígido, desdeque ela possua espaço livre suficiente.Lembre-se de que nesse caso não é pos-sível utilizar uma partição Windows;deixe-a bem quietinha em um canto.

Comece inicializando o sistema a par-tir de um CD do Kurumin. Abra um ter-minal e rode o comando sudo passwdpara definir a senha de root. Logue-secomo root e monte a sua partição de tra-balho. Um detalhe importante é quevocê deve montar a partição dentro deum terminal usando o comando mount enão usando os atalhos no desktop. Elesmontam as partições adicionando oparâmetro nodev, que impede que osscripts direcionem suas saídas para odispositivo /dev/null, o que causa umasérie de erros. Digite qualquer um dosdois comandos a seguir:

# mount /dev/hda1 /mnt/hda1# mount -t reiserfs /dev/hda1 U/mnt/hda1

No segundo comando, o parâmetro -tindica que a partição usa o sistema dearquivos ReiserFS. Substitua o hda1 pelodispositivo correspondente à sua parti-ção de trabalho.

Agora você deve criar duas pastas,uma para abrigar a imagem descompac-tada e outra para guardar os arquivosque irão no CD, fora da imagem. O queestiver dentro da imagem compactada sóserá acessível após inicializar o sistemapelo CD, mas os arquivos fora da ima-gem podem ser acessados a partir dequalquer sistema operacional. Por puratradição, vamos usar os mesmos nomesde pasta sugeridos no tutorial KnoppixRemastering How-To:

O diretório knxsource irá conter todos os arquivosque compõem o sistema operacional.

056-061_kurumin.qxd 9/21/04 11:05 PM Page 57

Page 58: Linux Magazine BR 2

o que quiser. Você pode fazer um CDcom utilitários de recuperação do sis-tema, livros ou outros tipos de documen-tação e muito mais. Uma revista podeusar esse recurso para lançar CDs “híbri-dos”, que são discos bootáveis com oKurumin e ao mesmo tempo contêm omaterial normal da edição.

Neste caso só é preciso gerar outraimagem ISO bootável. Basta colocar osarquivos da pasta knxmaster no raiz doCD e indicar o arquivo boot.img comoimagem de boot. Caso o programa peçapor um catálogo de boot, indique oarquivo boot.cat.

No X-CD-Roast selecione a opção Mas-ter Tracks, indique a pasta onde estão osarquivos do CD (opção Master Source) eem Boot Options indique os arquivosboot.img e boot.cat. Se você prefere alinha de comando, pode usar o próprioKurumin para gerar a nova imagem. Emum terminal, vá até a pasta knxmaster euse o comando:

$ mkisofs -pad -l -r -J -v -V U“KNOPPIX” -b KNOPPIX/boot.img -c UKNOPPIX/boot.cat -hide-rr-moved U

-o /algum_lugar/knoppix.iso U/algum_lugar/knxmaster

Substitua o /algum_lugar/knoppix.isopela pasta onde deseja colocar a imagemISO e o /algum_lugar/knxmaster pelocaminho completo até a pasta knxmasterno seu HD, como em:

$ mkisofs -pad -l -r -J -v -V U

“KNOPPIX” -b U/mnt/hda1/KNOPPIX/boot.img -c U/mnt/hda1/KNOPPIX/boot.cat U

-hide-rr-moved -o U/mnt/hda1/knoppix.iso U/mnt/hda1/knxmaster

Isso também pode ser feito no Windows.No Easy CD Creator, por exemplo, cliqueem Arquivo g Novo Projeto de CD g CD deinicialização. Na tela que surgirá escolhaEmulação por disquete (1.44 MB), Usarum arquivo de imagem existente eaponte para o arquivo boot.iso na pastado Knoppix.

Se você estiver usando o utilitárioremasterizar-kurumin, dê boot pelo CDdo Kurumin, use a opção A para extrairos arquivos do CD, jogue os demaisarquivos que serão incluídos no CD den-

tro da pasta knxmaster e use a opção Cpara gerar o novo ISO, sem passar pelaopção B, que permite editar os arquivosdentro da imagem compactada.

Criando seu sistema dedesenvolvimentoVamos ao que interessa, que é alterar osistema em si. O primeiro passo é des-compactar a imagem dentro da pastaknxsource/KNOPPIX, criada anterior-mente. Mas atenção! para que ocomando a seguir funcione você deveinicializar seu computador a partir doCD do Kurumin, já que sua função écopiar o sistema de arquivos montadodurante o boot para a pasta indicada:

# mkdir /mnt/hda1/knxmaster# mkdir /mnt/hda1/knxsource# mkdir /mnt/hda1/knxsourceU/KNOPPIX

Em seguida copie todo o conteúdo doCD-ROM para a pasta knxmaster. Não énecessário copiar o arquivo compactado;ele será substituído mais adiante.

# cp -a /mnt/cdrom/* U/mnt/hda1/knxmaster

Vamos entender o que vai dentro do CD:O arquivo index.html encontrado no

raiz do CD é a página web que é abertaautomaticamente quando o ambientegráfico é carregado. Você pode, porexemplo, incluir uma cópia off-line doseu site no CD. Os arquivos autorun.bate autorun.inf são responsáveis pela auto-execução do CD no Windows, que tam-bém abre a mesma página HTML. Vocêpode editar estes arquivos para que sejaaberta uma página diferente ou mesmoum programa que mostre uma tela deapresentação mais elaborada.

Dentro da pasta KNOPPIX você encon-trará o arquivo background.gif que é opapel de parede usado no KDE. Tambémé possível substituí-lo por outra imagemde seu agrado. Os arquivos boot.img eboot.cat são as imagens do disquete deboot, necessárias para tornar o CD “boo-tável”. Não as apague!

Veja que esses arquivos estão “fora”da imagem compactada, ou seja, elespodem ser lidos em qualquer sistemaoperacional, mesmo por alguém que usao Windows e colocou o CD no drive poracaso. A forma mais simples de persona-lização do sistema é simplesmente subs-tituir esses arquivos para criar um CD doKnoppix levemente personalizado.

Em um CD do Kurumin há cerca de500 MB de espaço livre para você colocar

KuruminTUTORIAL

58 Setembro 2004 www.linuxmagazine.com.br

01 #!/bin/sh02 cd /usr/lib03 wget -c

ftp://ftp.funet.fi/pub/Linux/Ujava/jdk/blackdown.org/JDK-U1.4.1/i386/01/j2re-1.4.1-01-Ulinux-i586-gcc3.2.bin

04 wget -c U

ftp://ftp.gwdg.de/pub/languagesU/java/linux/JDK-1.4.1U/i386/01/j2re-1.4.1-01-linux-Ui586-gcc3.2.bin

05 chmod +x j2re-1.4.1-01-linux-Ui586-gcc3.2.bin

06 ./j2re-1.4.1-01-linux-i586-Ugcc3.2.bin

07 ln -sfU/usr/lib/j2re1.4.1/plugin/i386 U/mozilla/javaplugin_oji.so U

/usr/lib/mozilla/plugins/Ujavaplugin_oji.so

08 ln -sf U

/usr/lib/j2re1.4.1/plugin/i386U/mozilla/javaplugin_oji.so U

/usr/lib/MozillaFirebird/Uplugins/javaplugin_oji.so

09 ln -sf U

/usr/lib/j2re1.4.1/plugin/i386U/mozilla/javaplugin_oji.so U

/usr/lib/firefox/plugins/Ujavaplugin_oji.so

10 ln -sf U

/usr/lib/j2re1.4.1/bin/java U

/usr/bin/java11 rm -f j2re-1.4.1-01-linux-U

i586-gcc3.2.bin

Listagem 1 - Instalando amáquina virtual Java

O KPackage pode ser usado para instalar e remo-ver pacotes no sistema.

056-061_kurumin.qxd 9/21/04 11:05 PM Page 58

Page 59: Linux Magazine BR 2

# cp -Rp /KNOPPIX/* U/mnt/hda1/knxsource/KNOPPIX

Sempre lembrando que você deve substi-tuir hda1 pela partição de trabalho queestiver usando. Essa etapa demora umpouco, cerca de 10 minutos numa má-quina com um processador Intel Celeron600 MHZ com um CD-ROM de 40x.Quando terminar você verá que a árvorede diretórios do sistema está acessíveldentro da pasta /mnt/hda1/knxsource/KNOPPIX. Caso não queira fazer o pro-cesso “na mão”, você pode usar a opçãoA do utilitário remasterizar-kurumin.

Você deve estar se perguntando se opróximo passo é acessar a pasta e saireditando os arquivos de configuração einstalando coisas manualmente. Bem,isso até seria possível para alguém semmuito o que fazer, mas existe uma formamuito mais fácil de trabalhar dentro dapasta de desenvolvimento, utilizando ocomando chroot. Ele permite transformarnossa pasta de trabalho no diretório raizdo sistema, de modo que você pode adi-cionar e remover pacotes e até mesmoabrir o KDE e alterar suas configurações.Tudo o que você fizer dentro da janelado chroot alterará seu novo CD bootável.Para ativá-lo, use o comando:

# chroot /mnt/hda1/knxsource/UKNOPPIX

Antes de começar a trabalhar, monte odiretório /proc dentro do ambientechroot. Sem isso, você não terá acesso amuitos recursos:

# mount -t proc /proc proc

Fazendo isso você já terá acesso com-pleto via linha de comando. O próximopasso é iniciar o modo gráfico para tra-balhar mais confortavelmente. Isto podeser feito usando o Xnest, um servidor X

que permite que você abra o KDE do seusistema de desenvolvimento dentro deuma janela no servidor X principal. Abramais um terminal dentro do seu sistemahost e use os comandos:

$ xhost +

Isto desativa o controle de acesso do X, oque previne alguns problemas.

$ Xnest :1

Isso abre uma janela com o segundo ser-vidor X, mostrando uma tela cinza como cursor do mouse. Volte para o terminaldo ambiente chroot e use o comando:

# k-home1

Esse script copia o diretório /etc/skel,onde ficam as configurações padrão dosistema, para a pasta /home/kurumin eusa o utilitário su para “se logar” como ousuário kurumin. Execute o segundoscript, que abrirá o KDE do sistema dedesenvolvimento dentro da janela doXnest, permitindo que você trabalhe comtodos os aplicativos gráficos:

$ k-home2

Para acessar a internet de dentro doambiente chroot você deve editar oarquivo /etc/resolv.conf, adicionando oendereço do servidor DNS de seu prove-dor de acesso. Veja um exemplo:

search homenameserver 200.177.250.10nameserver 200.176.2.10

É agora que começa nosso trabalho depersonalização propriamente dito. Comojá disse, o Knoppix é baseado no Debian,o que permite que você instale qualquerpacote .deb, binários diversos e compileprogramas a partir de seu código fonte.Você pode ainda utilizar os ícones mági-cos e os scripts de configuração do Kuru-min, com poucas limitações.

Um detalhe muito importante: Quandoterminar de trabalhar dentro da janela doXnest, feche o KDE, volte para o terminaldo ambiente chroot e pressione Ctrl+Dpara encerrar a seção do usuário Kuru-min e voltar a ser root. A seguir, executeo terceiro script:

# k-home3

Ele salva no diretório /etc/skel todas asalterações feitas, finalizando o trabalho.

Lembre-se que dentro do ambientechroot você pode criar novos usuáriosusando o comando adduser, como emadduser jose. Para “se logar” como ousuário criado basta usar um su joseseguido da senha (que pode ser definidaou alterada com o comando passwd jose)e depois digitar o comando exit para vol-tar a ser root.

Adicionando e removendoprogramasA instalação de novos programas dentroda janela do ambiente chroot ou atravésdo KDE rodando dentro do Xnest é feitada mesma forma que num sistema Kuru-min ou Debian no disco rígido. Existemalgumas peculiaridades quando o sis-tema roda a partir do CD, como o fato deque apenas o /home e alguns arquivos deconfiguração possuem permissão deescrita (já que no geral o CD é “read-only”), por isso eventualmente algunsprogramas podem não funcionar.

Por exemplo, rodar programas Win-dows dentro do Wine pode ser um pro-blema, já que os arquivos dentro dapasta .wine/fake_windows (o C:\ para os

TUTORIALKurumin

59Setembro 2004www.linuxmagazine.com.br

#apt-get install prelink#apt-get install openoffice.org#apt-get install openoffice.org-bin#apt-get install openoffice.org-Uhelp-en#apt-get install openoffice.org-Udebian-files#apt-get install openoffice.org-Ul10n-pt-br#apt-get install openoffice.org-Umimelnk#apt-get install openoffice.org-Ucrashrep#apt-get install oooqs-kde#apt-get install myspell-pt-br#apt-get install libming-fonts-Uopenoffice#apt-get install openoffice.org-Uthesaurus-pt-br#apt-get install openoffice.org-Uhyphenation-pt-br

Listagem 2 - Instalando oOpenOffice.org

O script remasterizar-kurumin automatiza amaior parte do trabalho.

056-061_kurumin.qxd 9/21/04 11:05 PM Page 59

Page 60: Linux Magazine BR 2

programas Windows), precisam de per-missão de escrita. No caso de programaspequenos, é possível copiar a pasta parao ramdisk, mas se você quiser rodar umprograma grande, como o Office ou oPhotoshop, a única forma de rodar a par-tir do CD seria copiar a pasta .wine/fake_windows para uma partição dodisco rígido ou um diretório comparti-lhado na rede, já que ela ficaria grandedemais para o ramdisk.

Para instalar programas usando o apt-get, use os comandos de sempre:

# apt-get update

Isto irá baixar e atualizar a lista dospacotes disponíveis no repositório apt.Em seguida digite:

# apt-get install programa

para instalar o programa desejado.No caso de programas com instalador

próprio, como a máquina virtual Java,copie o pacote de instalação para dentroda pasta knxsource/KNOPPIX e o executedentro do ambiente chroot. O script naListagem 1 baixa e instala a máquina vir-tual Java da Blackdown.org.

Se você quiser gerar uma imagem como OpenOffice pré-instalado, prefira ospacotes disponíveis no repositório apt-get; eles funcionam melhor a partir doCD do que o pacote tradicional disponí-

vel no site OpenOffice.org. Veja na Lista-gem 2 os comandos necessários para ins-talá-lo, já com o corretor ortográfico edicionários em português.

A Listagem 3 mostra um script queinstala o Acrobat Reader e cria o respec-tivo ícone no menu “iniciar”:

Para remover programas que você nãovai usar, use o comando apt-get removeprograma. Não se esqueça de, antes, exe-cutar apt-get update, para que ele tenhaa oportunidade de checar as dependên-cias. Você pode ver uma lista de todos ospacotes instalados, junto com a descri-ção, versão e tamanho de cada um como kpackage, o gerenciador de pacotes doKDE. É possível inclusive fazer a instala-ção e remoção diretamente através dele.

Preste atenção antes de sair remo-vendo as coisas! Muitos pacotes são“âncoras”, necessários para outros paco-tes. Se você tentar remover o kdelibs4,uma das bibliotecas centrais do KDE, vaiprecisar remover junto quase todos osprogramas relacionados a ele. Não exis-tem muitos pacotes “desnecessários” noKurumin. A única forma de diminuir otamanho do sistema é realmente remo-vendo programas. Ao trabalhar sobre oKnoppix ou outra distribuição maior, dápara liberar um bom espaço removendoos pacotes de internacionalização doKDE, as pastas de documentação em de/usr/share/doc e programas especializa-dos, usados por poucos usuários finais,como o emacs e o Vim.

Gerando a nova imagemAo remover muitos pacotes do sistema énormal que surjam pacotes “órfãos”,bibliotecas e arquivos que não são maisusados por nenhum programa e servemapenas para ocupar espaço. Você podeobter uma lista dessas “sobras” facil-mente usando o comando deborphan eremover com segurança os pacotes lista-dos usando o apt-get. Isso quase semprevai economizar mais alguns megabytes.Se você usou o apt para instalar pacotes,pode liberar mais espaço limpando ocache local de pacotes. O Kurumin incluium script que automatiza a limpezadeste cache, removendo também as lis-tas de pacotes disponíveis nos repo-sitórios. Basta digitar: k-clean-apt-get.Apague também o histórico de coman-dos do usuário root. Esse arquivo arma-zena os últimos comandos digitados, e

KuruminTUTORIAL

60 Setembro 2004 www.linuxmagazine.com.br

01 #!/bin/sh02 cd /packages03 mkdir acrobat04 cd acrobat/05 wget -c

http://ardownload.adobe.com/Upub/adobe/acrobatreader/unix/U5.x/linux-508.tar.gz

06 tar -zxvf linux-508.tar.gz07 sudo ./INSTALL08 cd ..09 rm -rf acrobat/10 ln -s U

/usr/local/Acrobat5/bin/Uacroread /usr/bin/acroread

11 ln -s U/usr/local/Acrobat5/bin/Uacroread /usr/bin/acrobat

12 cat <<EOF U

>/usr/share/applnk/Office/Uadobe.desktop

13 [Desktop Entry]14 Encoding=UTF-815 Name=Acrobat Reader 516 Exec=/usr/local/Acrobat5/bin/U

acroread17 X-KDE-Library=libkwordpart18 GenericName=19 MimeType=20 Type=Application21 Icon=acroread22 EOF

Listagem 3 - Instalando oAdobe Acrobat Reader

A imagem exibida antes da inicialização do sistema pode ser facilmente modificada

056-061_kurumin.qxd 9/21/04 11:05 PM Page 60

Page 61: Linux Magazine BR 2

não existe necessidade de divulgá-los aomundo. Aproveite para eliminar tambémo diretório .rr_moved.

# rm -f /home/root/.bash_history# rm -rf /.rr_moved

Finalmente chegou hora de deixar oambiente chroot e gerar a nova imagemde sistema. Desmonte o diretório /proc:

# umount /proc

E tecle CTRL+D para fechar o ambientechroot. O próximo passo é gerar a novaimagem compactada do sistema. Issopode demorar um pouco, o tempo neces-sário diminui proporcionalmente con-forme o tamanho da imagem. Essa etapaé automatizada pela função C do utilitá-rio remasterizar-kurumin.

Antes de tentar gerar a imagem, use ocomando free para verificar se a memó-ria swap está ativada. Se necessário, for-mate novamente a partição swap ereative-a com os comandos mkswap/dev/hda2 e swapon /dev/hda2. Sempresubstitindo hda2 pelo dispositivo corres-pondente à sua partição de swap. Ocomando para gerar a imagem é:

# mkisofs -R -V “Meu_CD” U

-hide-rr-moved -pad U/mnt/hda1/knxsource/KNOPPIX | U/usr/bin/create_compressed_fs U

-65536 > U/mnt/hda1/knxmaster/KNOPPIX/KNOPPIX

Não é necessário entender o comandoanterior para usá-lo, mas vamos ver, emdetalhes o que faz cada uma das opções:• mkisofs: Este é o programa mais

usado para gerar imagens ISO noLinux, inclusive por programas gráfi-cos como o X-CD-Roast.

• -R: Ativa as extensões Rock-Ridge, queadicionam suporte a nomes de arqui-vos longos no Linux.

• -V “KNOPPIX”: O nome do volume.Você pode substituir Meu_CD porqualquer outro nome.

• -hide-rr-moved: Esconde o diretórioRR_MOVED caso ele exista. Apenasuma questão estética.

• -pad: Para prevenir problemas de lei-tura, o tamanho total da imagem deveser sempre um múltiplo de 32 KB. Esteparâmetro verifica isso e adicionaalguns bits zero ao final da imagempara “arredondar” o arquivo.

• /mnt/hda1/knxsource/KNOPPIX:Este é o diretório fonte, onde está aimagem descompactada do sistema.Não se esqueça de substituir hda1 pelodispositivo correspondente à partiçãocorreta em sua máquina.

• | /usr/bin/create_compressed_fs - 65536:Este é o grande truque. Ele direcionatoda a saída do comando para o pro-grama. create_compressed_fs, um utili-tário incluso no CD, que se encarregade compactar os dados. Note que, porcausa do uso deste comando, você sópoderá gerar a imagem compactada apartir do Kurumin ou outra distrobaseada no Knoppix.

• /mnt/hda1/knxmaster/KNOPPIX/UKNOPPIX: Este é o diretório de des-tino, onde será gravada a imagemcompactada. Novamente, substituahda1 pelo nome da partição corretaem sua máquina.É provável que seu micro fique um

pouco lento durante e logo após a gera-ção da imagem, já que o processo con-some quase toda a memória RAMdisponível. Não se assuste, tudo logovolta ao normal. Agora falta apenasfechar a imagem do CD. Digite oscomandos abaixo:

# cd /mnt/hda1/knxmaster# mkisofs -pad -l -r -J -v -V U“Meu_CD” -b KNOPPIX/boot.img -cUKNOPPIX/boot.cat -hide-rr-movedU-o /mnt/hda1/kurumin.iso U/mnt/hda2/knxmaster

/mnt/hda1/kurumin.iso é a localização enome da imagem ISO que será criada.

Ao contrário da geração da imagemcompactada, a geração da imagem ISO ébastante rápida, depende apenas da

velocidade do seu HD. Assim que o pro-cesso for concluído você pode gravar seunovo CD e ver se tudo está funcionandocomo desejado.

Recomendo que você feche a imageme grave um novo CD periodicamente,pois além de ajudar a detectar proble-mas, os CDs gravados servem como umponto de recuperação. Caso mais adiantevocê faça alguma alteração que quebre osistema e você não saiba como reverter,basta inicializar o computador com oúltimo CD gerado, apagar o conteúdo dapasta /knxsource/KNOPPIX e extrairnovamente a imagem. Você terá seu sis-tema de volta da forma como estavaquando gravou o CD. Este processo cor-responde à função D do utilitário remas-terizar-kurumin.

Outra alternativa, caso você queiraeconomizar discos CD-R, é arquivar asimagens ISO numa pasta do disco rígidoe testá-las conforme necessário em umamáquina virtual, como o VMWare ou oQEMU, incluso no Kurumin com o nomede Kurumin-Emu.

No próximo artigo veremos como per-sonalizar o KDE e fazer algumas modifi-cações avançadas, como a alteração dosscripts de inicialização, do usuáriopadrão e como modificar o script respon-sável pela instalação do sistema no discorígido. Até lá! ■

TUTORIALKurumin

61Setembro 2004www.linuxmagazine.com.br

[1] Kurumin:http://www.guiadohardware.info/kurumin/

[2] Site do Autor:http://www.guiadohardware.net

[3] Linux-Live: http://www.linux-live.org/

[4] Knoppix: http://www.knoppix.org

[5] Portal Knoppix: http://www.knoppix.net

[6] QEMU:http://fabrice.bellard.free.fr/qemu/

[7] VMWare: http://www.vmware.com

INFORMAÇÕES

Ao mudar a imagem de boot, certifique-se de queela esteja no formato correto.

O Conteúdo do CD do Kurumin.

056-061_kurumin.qxd 9/21/04 11:05 PM Page 61

Page 62: Linux Magazine BR 2

BitTorrentTUTORIAL

62 Setembro 2004 www.linuxmagazine.com.br

de um servidor espelho (mirror server),com a diferença de que o cliente só temum pedaço do arquivo completo.

O próximo usuário que quiser baixareste arquivo pode encontrá-lo em qual-quer uma das fontes acima - o semeadorou o parceiro - automaticamente tor-nando-se um parceiro. Após recebertodas as partes do arquivo, e desde quevocê não feche o cliente BitTorrent, suamáquina automaticamente se transformaem um servidor, oferecendo o arquivocompleto aos outros membros da rede,sem precisar baixar mais nada. Emoutras palavras, sua máquina também setorna uma “semeadora”.

Da forma como foi projetado, o sis-tema permite que a largura total debanda seja dividida entre o grupo deusuários. Quanto mais pessoas estivereminteressadas em um arquivo, mais par-ceiros existirão. E quando um grupo sufi-cientemente grande de parceiros e

semeadores se formar, o distribuidor ori-ginal do arquivo não precisará mais sepreocupar com o consumo de banda desua conexão e os usuários estarão felizescom a alta velocidade de download. Onúmero de parceiros é proporcional aointeresse gerado pelo arquivo que estásendo oferecido; dessa forma a fonte pri-mária não deve ter dificuldades com arede (como sobrecarga), mesmo que onúmero de parceiros seja pequeno.

Um “rastreador” (tracker) coordenatodo este processo. Um rastreador é umservidor que conversa com os parceiros,perguntando a eles quais pacotes jáforam baixados e podem ser oferecidosna rede. Quando um novo parceiro seconecta a um rastreador, recebe umalista de parceiros ativos e semeadores, deonde pode começar a baixar o arquivo.

Para ajudar a encontrar o rastreadorapropriado, há um arquivo .torrent paracada arquivo (ou conjunto de arquivos)

Popularidade é bom, mas vem àscustas da necessidade de umaimensa largura de banda para aten-

der às hordas de usuários vorazes quequerem baixar a versão mais recente deum software a partir dos servidores ofi-ciais. A transferência de dados pode setornar um grande problema, caso asempresas não consigam distribuir a carga.

Usuários que queiram baixar um arquivogrande, como uma imagem de CD de umadistribuição Linux, usando uma conexãodiscada, vão precisar de muita paciênciacaso o download seja interrompido nomeio do caminho. Desenvolvedores real-mente interessados em distribuir seu soft-ware à comunidade precisam encontrarmeios de evitar esse problema.

A teoria…O BitTorrent (literalmente “Torrente deBits”) é um conceito que pode ajudarambos os lados. Pessoas que precisamhospedar grandes quantidades de dados- como uma ou mais imagens de CD -são os “semeadores” (seeders), no jargãodo BitTorrent, responsáveis pela distri-buição inicial do arquivo. Os arquivossão divididos em partes menores e, apósbaixar a primeira parte, um cliente Bit-Torrent automaticamente se reconfiguracomo um “parceiro” (peer) e oferece estamesma parte às outras máquinas narede. É mais ou menos o comportamento

Quanto mais popular um software,

mais largura de banda é necessária

para distribuí-lo. Resolva este dilema

sem gastar fortunas com novos links.

POR CARSTEN SCHNOBER

Bits acelerados com o BitTorrent

Carga distribuída

Servidor espelho: Para ajudar a aliviar umpouco a carga de um servidor, espelhos ofere-cem o mesmo conteúdo (arquivos) em locaisdiferentes.Hash: Uma seqüência numérica gerada a par-tir de um arquivo por um algoritmo matemá-

tico não-reversível.A mesma entrada (arquivo)vai produzir sempre o mesmo hash;entradasdiferentes produzirão hashes diferentes.Ouseja,o hash serve como um identificador únicopara o arquivo, já que não há dois arquivoscom hashes iguais.

Python: Linguagem de programação paraLinux e sistemas Unix, além do Windows, OS/2e Mac OS. Por ser interpretada, não é necessá-rio um compilador para transformar o pro-grama em código de máquina, apenas dointerpretador Python para executá-lo.

GLOSSÁRIO

062-063_bittorrentbr.qxd 9/21/04 10:10 PM Page 62

Page 63: Linux Magazine BR 2

TUTORIALBitTorrent

63Setembro 2004www.linuxmagazine.com.br

oferecido na rede, contendo informaçõescruciais como o endereço IP do rastrea-dor, a lista dos arquivos oferecidos e seusrespectivos tamanhos e um código“Hash” único. Um rastreador não baixanenhum arquivo e, portanto, consomemuito pouca banda; só é necessária umaconexão permanente à Internet.

…e a práticaUm usuário precisa do .torrent corres-pondente ao arquivo que deseja baixarantes de iniciar o download. Esses arqui-vos estão disponíveis em servidoresespalhados pela Internet e podem serfacilmente encontrados com mecanis-mos de busca ou através de links emsites especializados. Supondo que vocêqueira os CDs da distribuição LinuxFedora, basta digitar Fedora e Torrent emseu site de busca favorito para ser rapi-damente levado ao endereço correto.Além disso, a página oficial do BitTorrent[1] traz alguns links.

A versão “Sarge” da distribuição LinuxDebian contém um pacote com umcliente BitTorrent pronto para usar, quepode ser instalado com o comando apt-get install bittorrent. Se sua distribuiçãonão contém um pacote do BitTorrent,baixe o código-fonte do programa no siteoficial e descompacte-o com o comandotar -zxvf BitTorrent-3.4.2.tar.gz.

O cliente BitTorrent oficial é escrito nalinguagem de programação Python, eprecisa de alguns pacotes adicionais parafuncionar. Além do próprio Python, pre-sente em todas as distribuições Linux, ocliente gráfico precisa do conjunto de“widgets” (elementos de uma interfacegráfica) wxWidgets. No Suse Linux estepacote é chamado de python-wxGTK e noMandrake é chamado wxPythonGTK.

Salve o arquivo .torrent em seu discorígido e execute o cliente BitTorrent grá-

fico, encontrado no diretório BitTorrent-3.4.2 criado durante a descompactaçãodo código-fonte, para iniciar o download:

python btdownloadgui.py Utettnang-binary-i386-iso.torrent

Este exemplo inicia o download dos CDsda distribuição Linux Fedora Core 2(codinome “Tettnang”). Usuários doDebian podem usar o comando a seguir:

btdownloadgui tettnang-binary-Ui386-iso.torrent

Indique o diretório onde deseja colocar oarquivo baixado (veja a Figura 1).

Além do cliente gráfico, o BitTorrenttambém tem um utilitário para down-load em modo texto. Execute o programabtdownloadcurses.py em vez de btdown-loadgui.py para uma interface com jane-las em modo texto (usando a bibliotecancurses), ou btdownloadheadless.py paraa versão em linha de comando.

O comando a seguir executa múltiplosdownloads em paralelo:

python btlaunchmanycurses.py U~/torrents

Este exemplo lê todos os arquivos .torrentno diretório ~/torrents/ e inicia todos osdownloads em uma única janela emmodo texto (veja a Figura 2). O clientegráfico não possui suporte a múltiplosdownloads simultâneos, mas você podecontornar o problema executando múlti-plos clientes ao mesmo tempo.

A ferramenta bbtshowmetainfo.py lhemostra informações sobre o conteúdo deuma torrente. Ao executar o script, espe-cifique como parâmetro o nome de umarquivo .torrent para ver a lista e tama-nho dos arquivos nele inclusos.

python btshowmetainfo.py Utettnang-binary-i386-iso.torrent

Mercado de TrocasAs torrentes se tornaram tão popularesque praticamente todo pedido de down-load encontra ao menos um parceiro ousemeador livre. Contudo, se um parceirorecebe múltiplos pedidos de downloadao mesmo tempo, ele precisa de ummeio para determinar qual deles teráprioridade. O parceiro irá sempre esco-

lher o candidato que tem mais partes aoferecer em troca. Portanto, a primeiraparte de um arquivo pode demorar umpouco a chegar, mas a taxa de downloadvai aumentar a cada parte extra que vocêajudar a colocar na rede.

Esta técnica impede que os clientesbaixem arquivos sem dar nada em troca.Essa é uma boa idéia, já que tal compor-tamento “predatório” impediria o equilí-brio de carga (loadbalance). As coisasficam mais complexas quando você tentase conectar através de um roteador oufirewall que bloqueie seu contato com omundo exterior. Você fica impedido deoferecer partes do arquivo aos outrosparceiros - isso significa menores veloci-dades de download, já que haverá maispedidos que ofertas.

Se você puder alterar as configura-ções de seu firewall, pode resolver oproblema permitindo conexões vindasda Internet nas portas TCP 6881 a 6889.De outra forma, parceiros que supor-tam acesso externo não tomarão conhe-cimento de seus colegas “ocultos” atéque recebam um pedido deles, já queos parceiros anunciam automatica-mente o que têm a oferecer quandoconversam. Ou seja, clientes atrás deum firewall ainda vão receber uma res-posta positiva aos seus pedidos dedownload, embora sejam menos conhe-cidos na rede e não possam desfrutarda mesma alta velocidade de downloadatingida por outros parceiros. ■

[1] BitTorrent:http://bitconjurer.org/BitTorrent/

[2] Azureus, cliente BitTorrent em Java:http://azureus.sourceforge.net/

[3] Especificação do Protocolo:http://bitconjurer.org/BitTorrent/protocol.html

INFORMAÇÕES

Figura 1: O BitTorrent permite downloads em altavelocidade.

Figura 2: Múltiplos downloads em paralelo emuma janela em modo texto.

062-063_bittorrentbr.qxd 9/21/04 10:10 PM Page 63

Page 64: Linux Magazine BR 2

Charly Kühnast gerenciaSistemas Unix em umdata-center em Moers,próximo ao famoso rioReno, na Alemanha. Seutrabalho inclui verifi-cação de segurança edisponibilidade dos fire-walls e também é o responsável pelaDMZ (demilitarized zone).

para gerenciar contas de usuários egrupos, caderno de endereços, servido-res e usuários Samba e entradas de DNS.Você pode criar seus próprios modelos,caso a coleção padrão não inclua a fun-cionalidade de que você precisa - há atéum assistente, que mostra classes pré-definidas de objetos com os quais vocêpode criar novos recursos (Figura 1).

Assistência da melhorqualidadeO PhpLDAPadmin fornece o tipo deassistência de que eu preciso ao geren-ciar um diretório LDAP. O PhpLDAPad-min automaticamente seleciona o mo-delo correto segundo o tipo de dado quevocê precisa modificar. Isso significa quevocê tem acesso a todo o conjunto deatributos, incluindo dados binários eimagens. Gerenciar as estruturas deinformação do LDAP é muito simples.Você pode mover e copiar entradas - atémesmo entre de múltiplos servidores

LDAP, se necessá-rio. A ferramentatambém permite co-piar e apagar recur-sivamente sub-árvo-res completas.

Ao exportar da-dos do LDAP, vocêpode escolher entreos formatos LDIF eDSML. Diga se osistema de destinoé Unix, Mac, ouWindows e deixe oPhpLDAPadmin cui-dar da codificaçãocorreta do carac-tere de fim de

linha. O PhpLDAPadmin oferece buscassimples e avançadas de dados LDAP,sendo que a última utiliza filtros práticos- que permitem aos administradores res-tringir as buscas a uma única seção - eexibe atributos individuais.

O PhpLDAPadmin respeita as caracte-rísticas do servidor de destino, nãoimportando se o sistema operacional éSun, Microsoft, ou Novell. Isso é útil,uma vez que nem todos os fabricanteslevam as especificações tão a sérioquanto deveriam. No meu caso, o Php-LDAPadmin funcionou perfeitamentecom um servidor OpenLDAP. A interfacede ferramentas do usuário fala onze lín-guas. Além disso, e para completar oselogios desse mês, o programa suportaaté mesmo UTF-8. ■

A solução (de código aberto) deque você precisa para recuperaro equilíbrio e a paz de espírito

chama-se PhpLDAPadmin, que se encon-tra na versão 0.9.4b [1]. O PhpLDAPad-min está disponível como um arquivoTAR de 368 KBytes para Linux. Os requi-sitos são mínimos: PHP 4.1.0 ou poste-rior e Apache. Você precisa mover odiretório criado ao descompactar o ar-quivo para um caminho acessível aoApache. Em seguida, renomeie o ar-quivo-exemplo de configuração para con-fig.php, antes de iniciar seu editor.Inicialmente, basta adicionar o nome doseu servidor LDAP e as credenciais dousuário. Depois rode um navegador,direcione-o para a página inicial e tudoirá de vento em popa .

Fiquei extremamente impressionadocom a quantidade de tarefas que oPhpLDAPadmin consegue realizar. Exis-tem modelos (templates) disponíveispara trabalhos repetitivos - por exemplo,

Coluna do CharlySYSADMIN

64 Setembro 2004 www.linuxmagazine.com.br

Se você está satisfeito em usar o PhpMyAdmin para administrar o

banco de dados MySQL, pode estar perdendo uma interface Web

adequada para o gerenciamento do diretório LDAP.

POR CHARLY KÜHNAST

Diário do SysAdmin: PhpLDAPadmin

Caso Secreto

[1] PhpLDAPadmin:http://phpldapadmin.sourceforge.net

INFORMAÇÕES

SOBR

E O

AUT

OR

Figura 1: Clique nas classes de objetos definidas anteriormente para criarseu próprio modelo PhpLDAPadmin.

064-064_Charly.qxd 9/21/04 10:12 PM Page 64

Page 65: Linux Magazine BR 2

CARTAS CARTAS CARTAS CARTASCARTASEscreva pra gente

■ CD – ROMNão seria interessante ter uma página darevista explicando o conteúdo do CD-ROM e como usá-lo? Poderiam indicarqual o caminho para aprender Linuxpasso a passo para um iniciante?Antonio Carlos Gomes - Volta Redonda - RJ

» A partir desta edição teremos, dentroda seção Linux User, um artigo detal-hando o conteúdo do CD que acompanhanossa revista. Quanto ao aprendizado, amelhor forma é ler bastante. Leia os arti-gos da seção Linux User e guias como oFoca Linux (focalinux.cipsga.org.br). Sevocê tiver tempo, participar de listas dediscussão como a Linux-BR também podeser uma boa pedida. Leia também o Guiado e-mala (brlinux.linuxsecurity.com.br/e-mala.htm) para dicas do que vocênunca deve fazer ao pedir ajuda em umfórum ou lista de discussão.

■ Wir sind nicht Amerikaner!Muitos leitores nos escrevem sugerindo apublicação de artigos da Linux Magazinenorte-americana (www.linuxmagazine.com), ou confusos com as diferenças nadiagramação e estilo entre ela e a versãonacional. Vamos esclarecer: a LinuxMagazine Brasil não tem relação com aLinux Magazine dos EUA. Somos umafilial da Linux Magazine Alemã, quetambém opera na Polônia, Romênia,Inglaterra, Canadá e, claro, o Brasil. Umalista completa com os países onde atua-mos e sites oficiais se encontra no expe-diente desta edição, na página 97.

■ Meus parabénsRecebam os meus parabéns pela bril-hante iniciativa de trazer ao Brasil umapublicação do peso da LM. Nummomento em que é crucial para a parcelainformatizada da sociedade brasileiraobter informações frescas e segurassobre o SO que mais cresce em nossopaís, com certeza a LM será nosso pontode referência definitivo!Carlos Lorenz

» Assim como o Carlos, dezenas de out-ros leitores escreveram para nos dar osparabéns pela nossa primeira edição.Agradecemos os elogios e o apoio, massaibam que não pretendemos descansarsobre os louros da fama. Estamos trabal-hando duro para que as futuras ediçõessejam ainda melhores, e para atender àsvárias sugestões enviadas por nossosleitores

CARTAS

50mtsMETRÔ CONSOLAÇÃO

Dúvidas? Críticas? Sugestões? Mande e-mailpara [email protected].É impos-sível responder a todas as mensagens,mascada uma delas é lida e analisada e,as maisinteressantes,publicadas nesta seção.

Escreva pra gente

065-065_cartas.qxd 9/21/04 10:14 PM Page 65

Page 66: Linux Magazine BR 2

DNS DinâmicoSYSADMIN

66 Setembro 2004 www.linuxmagazine.com.br

generosas, datadas dos primórdios daInternet. O universo de endereçamento émuito restrito para uma rede de dimen-sões planetárias, tornando difícil encon-trar blocos inteiros de endereçoscontíguos sem uso.

Muitos provedores recorrem a bancosde endereços com um número de entra-das menor do que o número de clientes.Quando um cliente se conecta, o prove-dor concede a esse cliente um endereçotemporário do seu banco. O IP é válidodurante o tempo exato da sessão;quando ela é encerrada, o endereço ime-diatamente fica disponível para o pró-ximo cliente. Em outras palavras, oprovedor precisa de endereços IP sufi-cientes para cobrir o número máximo deconexões simultâneas.

Problemas com o ServidorEsse truque evita que faltem endereços etraz vantagens para o provedor. Infeliz-mente, apresenta desvantagens do pontode vista do consumidor. Um endereçodinâmico é suficiente se você precisaapenas enviar requisições HTTP paraservidores Web, mas rodar um servidor ébem diferente. Os navegadores precisa-riam de um método para descobrir oendereço dinâmico atual do servidor.

Essa não é uma questão que afete tipi-camente grandes empresas, que têmconcessão de linhas e utilizam IPs estáti-cos. Pequenas empresas e usuários do-mésticos costumam evitar a hospedagemWeb em suas próprias máquinas, repas-sando esse trabalho para provedoresespecializados.

Em redes pequenas e médias, existemalgumas rotinas para as quais um servi-dor com conexão ADSL é uma opçãobastante útil. Uma empresa pode quererpermitir que um consultor tenha acessoremoto a seus computadores para redu-zir custos administrativos. Usuários do-mésticos podem usar seus celulares parase conectar a um servidor WAP a partirde seus escritórios em casa para utilizarserviços móveis de e-mail. Em umaépoca em que o ADSL de baixo custo eplanos de acesso baseados no volume detráfego tornaram-se comuns, é barato efaz sentido deixar as máquinas online 24horas por dia. Mesmo assim, tanto oconsultor como o usuário precisamconhecer o endereço IP atual do servi-dor.

DNS dinâmico paraendereços dinâmicosO Serviço de Nome de Domínio (DomainName Service, DNS) traduz endereços IPnuméricos para hostnames simbólicos.Para usar o Protocolo da Internet e aces-sar um computador chamado www.abcxyz.com, você precisa do endereço IPdele, como 136.199.85.18. Um usuário,

T odo computador precisa de umendereço IP para se comunicaratravés do Protocolo da Internet

(IP). Todavia, os provedores geralmentesão maldosos e dão a seus clientes ende-reços dinâmicos. Ao iniciar uma conexãoà Internet, você está utilizando um ende-reço arbitrário do banco de endereços doseu provedor. Isso complica a vida deadministradores de servidores, já queprecisam informar a seus clientes todavez que o endereço do servidor muda.

Porém, os provedores têm boas razõespara ser maldosos. O atual protocoloIPv4 usa endereços IP de quatro bytes.Teoricamente, isso lhe daria um númerode endereços igual a 256 elevado àquarta potência, ou seja, uns quatrobilhões. Infelizmente, apenas uma pe-quena parte desses endereços está defato disponível. Isso é devido, em parte,a características específicas do protocolo(como endereços multicast), mas princi-palmente a reservas de endereços (parapouquíssimas instituições) mais do que

Há apenas uma coisa errada com algumas conexões ADSL de baixo custo. Os

provedores costumam fornecer um endereço IP temporário a cada máquina,

que muda a cada conexão. Isso dificulta a provedoria de serviços (como um site

pessoal, por exemplo) por parte do usuário. Serviços de DNS dinâmico podem

resolver esse problema disponibilizando atribuição permanente de nome.

POR MARC ANDRÉ SELIG

Diário do SysAdmin: Serviços de DNS dinâmico

Formando Pares

01 ;; QUERY SECTION:02 ;; www.abcxyz.com, type =

A, class = IN0304 ;; ANSWER SECTION:05 www.abcxyz.com.

8h10m41s IN CNAMEabcxyzsu7.abcxyz.com.

06 abcxyzsu7.abcxyz.com.2h39m44s IN A 136.199.85.18

Listagem 1

01 ;; QUERY SECTION:02 ;; selig.dyndns.org, type

= A, class = IN0304 ;; ANSWER SECTION:05 selig.dyndns.org. 51S IN

A 80.128.96.209

Listagem 2

066-068_dyndns.qxd 9/21/04 10:16 PM Page 66

Page 67: Linux Magazine BR 2

SYSADMINDNS Dinâmico

67Setembro 2004www.linuxmagazine.com.br

ao requisitar informações doservidor, normalmente iráanotar ou memorizar o nomesimbólico, www.abcxyz.com.O computador do usuárioenvia uma requisição a umservidor DNS para descobriro endereço IP correspon-dente. Se o IP muda, o prove-dor de serviço muda a en-trada no servidor DNS corres-pondente e, quando outronavegador procura pelo no-me mais tarde, o novo ende-reço é devolvido.

Esse sistema é também degrande utilidade para registrar o statusatual de endereços de IP dinâmicos. Vocêpode modificar a entrada do servidorDNS para seu próprio endereço a cadavez que ele mudar, permitindo que osclientes pesquisem o endereço maisrecente ao precisarem de acesso. Toda-via, há algumas coisas com as quais épreciso tomar cuidado.

Além de publicar o mapeamento denome/endereço, os servidores DNS tam-bém atribuem prazos de validade paracada registro. Isso permite a economiade banda. Se diversos clientes requisitamo mesmo endereço dentro do período devalidade determinado, o servidor DNSresponderá com uma resposta em cache,sem necessidade de novo pedido a umdos servidores DNS principais.

A Listagem 1 mostra um exemplo depesquisa manual no DNS usando digwww.abcxyz.com. O hostname www.abcxyz.com é apelido para o endereçoabcxyzsu7.abczxy.com. A atribuição seráválida por, no mínimo, oito horas, dezminutos e 41 segundos. O endereço IPconcedido a abcxyzsu7.abcxyz.com nãoirá mudar por cerca de três horas.

Mudanças InesperadasProblemas de acesso podem ocorrer nocaso de mudanças inesperadas - porexemplo, se abcxyzsu7.abcxyz.com temum endereço de um grupo dinâmico eele muda antes que as 2 horas, 39 minu-tos e 44 segundos tenham expirado.Cliente continuarão usando a respostaem cache, assim como qualquer outramáquina que acessar o mesmo servidorDNS. Já os servidores sem entrada nocache para www.abcxyz.com criariamimediatamente uma nova entrada.

A resposta para esse dilema é concederuma validade extremamente curta paraas entradas de DNS dinâmicas. Infeliz-mente, isso pode causar um aumentodrástico no tráfego para o servidor DNS.Olhando pelo lado bom, isso significaum menor potencial de erros em seguidaà mudança do endereço IP. A Listagem 2mostra um exemplo típico de umaentrada dinâmica. A saída de dig selig.dyndns.org nos diz que a atribuição deendereço é válida apenas por 51 segun-dos. Na realidade, o servidor de nomestende a apagar aquela entrada do cacheainda antes disso.

Um servidor DNS que publica umendereço dinâmico não pode ter umendereço dinâmico para si mesmo. Issoseria como a história do ovo e da gali-nha. Felizmente, existe um bom númerode grandes provedores de serviço DNSque mapeiam endereços de IP dinâmicosa nomes estáticos. Eu uso o DynDNS [1]e NO-IP [2], mas existem muitos outrosserviços similares.

O próximo cuidado que você devetomar é fazer com que a sua máquinaatualize suas próprias informações DNS.

Os arquivos de configuraçãoque os administradores nor-malmente fornecem aos seusservidores DNS são um tantocomplexos. Seria por demaiscomplicado atualizar os ar-quivos manualmente toda vezque seu IP mudasse. Um soft-ware especial para os clien-tes, que transmita automa-ticamente o novo IP para oservidor DNS sempre que amáquina inicia uma conexãoà Internet, faz mais sentido.

Atualização AutomáticaMuitos roteadores projetados para o usoem pequenas empresas ou escritóriosdomésticos têm um cliente para serviçosDNS dinâmicos. (veja a Figura 1). Umsistema Linux pode fazer o mesmoserviço com igual facilidade. Não fazdiferença se você acessa a Internet atra-vés de um roteador ou utiliza os recursosde roteamento do Linux com um modemISDN, ADSL ou outra tecnologia. A esco-lha do software cliente depende do pro-vedor DNS.

A ferramenta ddclient [3] é um pro-grama popular. Muitas distribuiçõesLinux já incluem o cliente, cuja configu-ração é feita no arquivo /etc/ddclient.conf(veja Listagem 3). O programa rodacomo um daemon e vigia a interface derede, procurando por mudanças de ende-reço IP em intervalos regulares (linha 4);60 segundos em nosso exemplo, comomostrado na linha 1.

Toda vez que o endereço muda, oddclient atualiza as entradas do servidorDNS, usando para isso o protocolo e ohostname indicados no arquivo de con-figuração (linha 7). Isso faz com que oservidor DNS responda com o endereçoIP atual da máquina sempre que recebeuma requisição para selig.dyndns.org.Isso, por sua vez, permite que a máquinacontinue a oferecer serviços. ■01 daemon=60 # Verifica o endereço

IP a cada 60 segundos02 syslog=yes03 mail=root04 use=if, if=eth005 login=seligm06 password=topsecret07 server=members.dyndns.org,

protocol=dyndns2selig.dyndns.org

Listagem 3

[1] Um dos serviços mais antigos de DNSdinâmico: http://www.dyndns.org

[2] Outro serviço de DNS dinâmico:http://www.no-ip.com

[3] Cliente Perl para o DynDNS:http://www.dyndns.org/services/custom/clients.html##3

INFORMAÇÕES

Figura 1: Muitos roteadores possuem um cliente para o serviço DynDNS. Sim-plesmente utilize a interface Web para fornecer a informação necessáriapara permitir acessos DNS para o seu próprio servidor.

066-068_dyndns.qxd 9/21/04 10:16 PM Page 67

Page 68: Linux Magazine BR 2

Debian MirrorsSYSADMIN

68 Setembro 2004 www.linuxmagazine.com.br

• Push-Primary:Esses sites espe-lham-se diretamen-te em um reposi-tório mestre (quenão é publicamen-te acessível) utili-zando a técnica de“push mirroring”,método de espelha-mento que nãoserá abordado nes-te artigo.

• Push-Secondary:São sites que seespelham em ser-vidores Push-Primary,também usando ométodo push mir-roring.

• leaf: Método utili-zado pela maioriados servidores.O mais adequado é espelhar um servi-

dor Push-Primary. Existe um pacote cha-mado netselect, que ajuda a descobrir omirror mais rápido. Para instalá-lo, bastaexecutar o comando apt-get install netse-lect. A utilização desse programa é bas-tante simples, mas será abordada, poisfoge do escopo deste artigo.

O processo de instalação (testado emuma máquina com o Debian 3.0“Woody”) é dividido em seis partes: Ins-talação do debmirror, o processo deespelhamento em si, criação de scripts,configuração do cron, instalação e confi-guração do servidor web Apache e confi-guração do arquivo /etc/apt/sources.list.

Instalando o pacote debmirrorApesar de estar disponível apenas para adistribuição instável (Debian Unstable,codinome Sid), o pacote debmirror nãopossui muitas dependências e pode ser

Anecessidade de manter diversasmáquinas Debian sempre atuali-zadas, sem congestionar o link da

empresa, motivou-me a procurar umaalternativa. Criar um repositório internocom os pacotes de software, atualizadodiariamente, torna o processo de instala-ção extremamente rápido e garante apresença de todas as correções e atuali-zações de software.

A própria página oficial do Debianmenciona dois meios de criar um “mir-ror” (espelho) de um servidor APT: umaé através de um script que usa o utilitá-rio rsync, a outra através do pacote deb-mirror, escrito por Joey Hess e JoergWendland, que será mostrado nesteartigo. O debmirror é mais fácil de usar epode ser encontrado em qualquer reposi-tório de pacotes do Debian.

Espaço em discoÉ muito importante escolher bem o quebaixar dos servidores principais. O repo-sitório oficial possui binários para asmais diversas arquiteturas, desde a PowerPC (comumente usada em Macs emáquinas da IBM) até processadores de64 bits. Isto determina o espaço em disconecessário para armazenar os arquivos.A Tabela 1 mostra dados oficiais do pro-jeto Debian sobre os tamanhos dos “mir-rors” de acordo com a arquitetura epacotes selecionados.

Tipos de repositóriosNa Internet [2] é possível obter uma listacom todos os tipos de repositóriosDebian. Existem basicamente deles:

Graças à ferramenta APT, a atualização de um sistema Debian pode ser feita de forma rápida e fácil. No entanto, todos os

pacotes são baixados de servidores externos, previamente indicados em um arquivo de configuração. O tráfego gerado

por essa operação pode tornar-se uma dor de cabeça para os administradores, dependendo da quantidade de sistemas

Debian na rede. Um “espelho” replicando localmente o conteúdo destes servidores pode ajudar a resolver o problema.

POR BRUNO BELLANTUONO

Configurando um repositório APT para o Debian

Espelho, espelho meu…

Todo o repositório:Aproximadamente 100 GB (sim, 100 Gigabytes).Uma arquitetura oficialmente suportada:(pacotes stable, testing ou unstable) De 5.5 GB a 8 GBpara cada versão.Pacotes independentes de arquitetura:Aproximadamente 8 GB.

Tabela 1 - Tamanho deum repositório Debian

Kerry Fearby - ww

w.sxc.hu

068-070_debian_mirrors.qxd 9/21/04 10:18 PM Page 68

Page 69: Linux Magazine BR 2

SYSADMINDebian Mirros

instalado sem maiores problemas em sis-temas baseados no Debian Woody ouSarge. Basta baixar o pacote (veja o sitena referência [3]) e instalá-lo com ocomando abaixo:

dpkg -i debmirror_20040427_all.deb

O processo de espelhamentoO download dos pacotes foi feito pelousuário debian e os arquivos foram sal-vos no diretório /home/debian. Se vocêainda não criou esse usuário, execute oscomandos adduser debian e passwddebian para criá-lo e atribuir uma senha.

#!/bin/shDATA=`date -I`DISTS=”—dist=woody,sarge,sid”DISTS_NONUS=”—dist=woody/non-US,sarge/non-US,sid/non-US”OPTIONS1=”—nosource -p -v”OPTIONS2=”—nosource -p -v —ignore=debian-non-US”REMOTE_DIR=”—root=/debian”REMOTE_DIR_NONUS=”—root=/debian-non-US”LOG_DIR=”/home/bruno/log/$DATA.main”LOG_DIR_NONUS=”/home/bruno/log/$DATA.non-us”HOST=”-h ftp.de.debian.org”HOST_NONUS=”-h ftp.de.debian.org”#Espelha o repositório completo, ignorando o diretório debian-non-USdebmirror $HOST $OPTIONS2 $REMOTE_DIR $DISTS /home/debian >> $LOG_DIR#Baixa somente os arquivos non-US no diretorio /home/debian/debian-non-USdebmirror $HOST_NONUS $OPTIONS1 $REMOTE_DIR_NONUS $DISTS_NONUS U

/home/debian/debian-non-US >> $LOG_DIR_NONUS

Quadro 1 - Exemplo de script para espelhament Nosso repositório irá conter os pacotesdas versões stable, testing e unstablepara a arquitetura x86 (i386), além docódigo-fonte. O exemplo usa o servidorftp.de.debian.org, mas é recomendadousar o comando netselect para descobrirqual o servidor mais rápido em seu caso.Execute o debmirror da seguinte forma:

debmirror -h ftp.de.debian.org--dist=woody,sarge,sid -p /home/Udebian

Uma breve explicação sobre os parâme-tros utilizados no comando acima:• -h: Especifica o endereço do servidor

de onde serão baixados os arquivos.• --dist: Especifica quais distribuições

serão baixadas. A distribuição padrãoé a Sid. Os nomes devem ser separa-dos por vírgulas.

• -p: Mostra o progresso do download.O repositório também irá conter os

pacotes “non-us”, que devido a aspectoslegais não podem ser utilizados dentrodo território norte-americano. Antes debaixá-los, devemos criar o diretóriodebian-non-us dentro de /home/debian:

068-070_debian_mirrors.qxd 9/21/04 10:18 PM Page 69

Page 70: Linux Magazine BR 2

As duas primeiras linhas apontampara os pacotes binários em nosso servi-dor, e as duas últimas para o código-fonte desses pacotes.

A presença de um espelho dentro desua rede local facilita o processo de atua-lização e instalação de novas máquinas.Caso você tenha largura de bandasobrando e deseje disponibilizar seuespelho para toda a comunidade Debian,basta preencher o formulário [4] no sitedo Debian.

Este artigo foi baseado em informa-ções obtidas em vários sites da Internet,principalmente na página oficial doDebian. Para saber mais sobre o assunto,consulte os vários links no quadro Infor-mações logo abaixo. ■

Instalação do servidor webNeste ponto você já deve estar com to-dos os arquivos do espelho no seu disco.Portanto, chegou a hora de disponibili-zar o repositório para os usuários darede interna. Podemos fazer isso via Web(HTTP) ou FTP; aqui vamos usar ométodo via Web. Para isso, você precisado servidor Web Apache. Caso ele aindanão esteja instalado, execute:

apt-get install apache

Após a instalação é necessário editar oarquivo de configuração do Apache.Abra o arquivo /etc/apache/httpd.conf econfigure os seguintes parâmetros:

DocumentRoot /home/debian<Directory /home/debian/>

Além disso adicione as seguintes linhasao arquivo de configuração do Apache:

Options +Indexes U+SymlinksIfOwnerMatchIndexOptions NameWidth=* U

+SuppressDescriptionDirectoryIndex .

Isso ativa os índices de diretório egarante que os symlinks (links simbóli-cos) irão funcionar. Os nomes de arquivonos índices de diretório não ficarão trun-cados e as descrições (em geral não exis-tentes) não serão mostradas.

O arquivo de configuraçãoAgora que o seu espelho já está devida-mente configurado, precisamos apontaro arquivo /etc/apt/sources.list das má-quinas locais para o nosso novo servidor.Considerando que o servidor tenha oendereço IP 192.168.100.100 e que ocomputador cliente use a distribuiçãoestável (stable ou Woody), o arquivo/etc/apt/sources.list deve ficar comomostrado no Quadro 2.

mkdir /home/debian/debian-non-US

Execute o comando abaixo para baixaros arquivos “non-us”:

debmirror -p -h=ftp2.de.debian.org U--root=/debian-non-US --dist=woody/Unon-US,sarge/non-US,sid/non-US U

/home/debian/debian-non-us

Note que, em relação ao comando ante-rior, as diferenças restringem-se apenasao parâmetro --root, que especifica odiretório no servidor remoto onde estãolocalizados os arquivos e os valores pas-sados para o parâmetro --dist.

Criando um scriptOs dois comandos executados anterior-mente podem ser colocados em um ShellScript que será executado diariamenteusando o cron. Veja no Quadro 1 umexemplo de como pode ficar o script.

É importante ressaltar que na primeiraocorrência do comando debmirror énecessário informar ao programa que oconteúdo do diretório debian-non-USdeve ser ignorado (--ignore=debian-non-US); caso contrário, durante a atualiza-ção do repositório, o diretório/home/debian/debian-non-US será so-brescrito. Salve o script com um nomequalquer (em nosso exemplo, script.sh)no diretório de sua preferência.

Configuração do CRONOs espelhos geralmente são atualizadostodos os dias às 00:00 UTC; no entanto,isso não é uma regra geral. É aconselhá-vel atualizar seu espelho todos os diasno horário que lhe for mais conveniente.

Neste exemplo vamos atualizar nossomirror todos os dias às 22:45. Para issoprecisamos configurar o crontab dousuário root para que execute o scriptacima diariamente, no horário especifi-cado. Como root, execute o comandocrontab -e, e insira a linha abaixo ao finaldo arquivo:

45 22 * * * /root/script.sh

Salve o arquivo e saia do editor. Paranos certificarmos de que o processo estámesmo agendado, execute o comandocrontab -l. A resposta deve conter, entreoutras, a linha que acabamos de adi-cionar ao arquivo.

Debian MirrorsSYSADMIN

70 Setembro 2004 www.linuxmagazine.com.br

[1] Site oficial do Debian:http://www.debian.org

[2] Lista oficial de Mirrors:http://www.nl.debian.org/mirror/list-full

[3] Pacote debmirror:http://ftp.us.debian.org/debian/pool/main/d/debmirror/debmirror_20040427_all.deb

[4] Divulgue seu mirror:http://www.nl.debian.org/mirror/submit

[5] Página oficial do Debian sobre “mirrorring”:http://www.nl.debian.org/mirror/ftpmirror

[6] Um How-To não oficial:http://www.mail-archive.com/[email protected]/msg04544.html

INFORMAÇÕES

Bruno Bellantuonotrabalha na Cycla-des, onde é o respon-sável pelo desen-volvimento dos ma-nuais dos produtosda empresa. É umdos mantenedores do site Linux Tem-ple, em www.linuxtemple.com, comnotícias e artigos sobre o Linux.SO

BRE

O A

UTO

R

deb http://192.168.100.100/debian-non-US/ woody/non-US main contribUnon-freedeb http:// 192.168.100.100/debian/ woody main non-free contribdeb-src http:// 192.168.100.100/debian/ woody main non-free contribdeb-src http://200.246.93.195/debian-non-US/ woody/non-US main U

contrib non-free

Quadro 2 - Arquivo sources.list

068-070_debian_mirrors.qxd 9/21/04 10:18 PM Page 70

Page 71: Linux Magazine BR 2

PROGRAMAÇÃOLua

71Setembro 2004www.linuxmagazine.com.br

A estrutura básica de Lua é a de uminterpretador (o programa, lua) que gerae executa byte code, um conjunto debibliotecas básicas opcionais (paraentrada e saída, funções matemáticas eassim por diante, tudo escrito em Cpadrão) e um compilador (luac) paragerar byte code offline. Devido à natu-reza altamente padronizada da base decódigo de Lua, ela funciona em quasetodas a plataformas que comportam umcompilador C. Uma vez que é modular,pode encaixar-se em muitos dispositivosembutidos sem ocupar um espaçogrande e desnecessário. A versão Linux,por exemplo, roda com apenas poucomais de 100K; o conjunto de bibliotecaspadrão incluído ocupa mais 72K. Muitos

projetos embutidos tiraram vantagem deseu pequeno tamanho (e sua habilidadede compilar em qualquer lugar), comofoi o caso de muitas empresas de jogos,como a Criterion Studios, a LucasArts(Grim Fandango), e a BioWare (comMDK2 e Baldur’s Gate). Para uma listamais longa dos usos, sugiro uma visita àreferência [1].

A lua cheia da primaveraComo linguagem, ela tem todas as carac-terísticas esperadas em uma linguagemfuncional de script, incluindo o obrigató-rio manual online, disponível em [2]. Emprimeiro lugar, nós temos os tipos dedados. Talvez não sejam abundantes(veja Tabela 1: Tipos em Lua), mas são

D e um ponto de vista lingüístico,a Lua pode ser considerada bemcomum! Tem todas as caracterís-

ticas necessárias para torná-la uma lin-guagem utilizável (variáveis, funções econtrole de fluxo), mas carece de algunspontos importantes na linha das expres-sões regulares do Perl ou da velocidadede execução do C. Todavia, sua força nãoreside nas partes individuais da lingua-gem, mas em como funciona no geral eem como se conecta ao mundo externo.

Neste artigo, olharemos para Luacomo uma ferramenta de personalizaçãoe configuração, mostrando como o usuá-rio final pode personalizar certos softwa-res utilizando Lua (nós vamos usar oelinks como um exemplo) e que passos oprogramador deve dar para implementaressa funcionalidade em seus própriosaplicativos. Mas antes, teremos a costu-meira aula de história…

A lua como um todoLua começou em 1993 como uma lin-guagem para acadêmicos brasileiros daTecgraf, na Pontifícia Universidade Cató-lica do Rio de Janeiro (PUC-RJ). Sua pro-posta era fornecer um método simples deestender aplicativos através de uma lin-guagem procedural básica, tipos dedados tradicionais e uma máquina vir-tual. Todas essas características conti-nuaram a ser parte fundamental de Luaaté os dias de hoje, com a versão 5.0.2(que contém correções para pequenoserros) no dia 17 de março de 2004. Suaassimilação foi uniforme (alguns diriamvagarosa), assim como seu ciclo de atua-lização; apenas 12 versões públicas em11 anos de história. Em compensação, hámuito pouca chance de quebra repentinado código, e todas as versões, até agora,têm sido incrivelmente estáveis.

Como linguagem de script, Lua é bastante única. Tem uma grande aceitação de dois nichos do mercado: usuários Linux e

programadores de jogos para computadores. O que há de atraente nessa linguagem? O que é tão especial? Steven

Goodwin investiga. POR STEVEN GOODWIN

A próxima geração

Feitiço da Lua

071-076_Lua.qxd 9/21/04 10:22 PM Page 71

Page 72: Linux Magazine BR 2

LuaPROGRAMAÇÃO

72 Setembro 2004 www.linuxmagazine.com.br

capazes de satisfazer às necessidadesnormais dos programadores. As variá-veis em si seguem os moldes de uma lin-guagem flexível e podem comportarqualquer tipo, em qualquer momento. Atentativa de usar variáveis indefinidasfaz com que elas contenham o tipo nil,que pode fazer com que certas operações(por exemplo, concatenação de cadeiasde caracteres) falhem. O conceito de um“número” em Lua é equivalente ao tipodouble da linguagem C. Todavia, viciados

em desempenho queestejam usando a ver-são 5 podem modi-ficá-lo para float (oumesmo int) e recom-pilar Lua. Adicione:

#define LUA_NUMBER Ufloat

antes de incluir lua.h.Quem ainda utiliza aversão 4 terá quemodificar mais umpouco o código.

Há também umasérie tradicional de instruções de con-trole de fluxo, nos seguintes padrões:

do block endwhile exp do block endrepeat block until expif exp then block endif exp then block1 else block2 endif exp then block1 elseif exp then U

block2 endfor var=start,end[,step] do block endfor var in iterator do block end

Nada diferente aqui, mas programado-res de C devem estar cientes de que ovalor de ‘end’ é também calculado noloop for. Note que todas as instruçõesutilizam a palavra end como um finaliza-dor de bloco, ao invés das chaves, maistradicionais. Essa simplicidade é umatentativa bastante óbvia de empurrar osnão programadores para o mundo doscript. A preferência por palavras aoinvés de símbolos é também aparentequando você percebe que os operadores!, && e || foram substituídos pelas seusequivalentes alfabéticos, not, and e or.

A sintaxe também remove algumasdas restrições encontradas em outras lin-guagens. Por exemplo, dois (ou mais)parâmetros podem ser retornados defunções, sem quaisquer problemas oumagia negra.

function onetwo()return 1,2endone,two = onetwo()

Finalmente, em nosso rápido tour, Luacontém funções locais e anônimas. Umafunção local é aquela que apenas podeser chamada de dentro da função em queela declaradamente está. Isso não écomum para os programadores de C,mas é bastante familiar para todos osoutros. Já as funções anônimas permi-tem embutir uma função inteira no lugarem que nós normalmente colocaríamosuma chamada de retorno. Isso evita anecessidade de funções adicionais e arbi-trárias dentro do código.

Para informações mais detalhadassobre a sintaxe da linguagem, é um boaidéia ler a versão original disponível nowebsite de Lua em [2]. O fórum de dis-cussão em [3] está disponível para tópi-cos mais avançados. Porém, os fórunspodem receber um pouco de spam, detempos em tempos.

Tipo Identificador Nome para lua_istypeNil LUA_TNIL nilNumber LUA_TNUMBER numberBool LUA_TBOOLEAN booleanString LUA_TSTRING stringTable LUA_TTABLE tableFunction LUA_TFUNCTION cfunctionUserdata LUA_TUSERDATA userdataNotas• O identificador pode ser usado para traduzir a constante em uma cadeia de carac-

teres dentro do C, usando lua_typename(lua_State *L, int type)• lua_isnumber aceita os números (123) e cadeias de caracteres numéricos (“123”)• lua_toboolean retorna 0 para false e nil, e 1 para os demais

Tabela 1: Tipos em Lua

01 // Insira aqui um comentárioirônico sobre a originalidadedo programador!

02 function hello()03 write(“Hello, Lua!”)04 end05 hello()

Listagem 1: hello.lua

Figura 1: O resultado da sua função gancho.

071-076_Lua.qxd 9/21/04 10:22 PM Page 72

Page 73: Linux Magazine BR 2

PROGRAMAÇÃOLua

73Setembro 2004www.linuxmagazine.com.br

tir de um programa Lua - o nosso - pode-mos reescrevê-los de acordo com nossaspreferências pessoais.

Por exemplo, eu posso querer visitarum de meus próprios websites, www.BlueDust.com, digitando bd. Eu possofazê-lo criando um gancho simples narotina ‘Jump to URL’ com:

if (url == “bd”) thenreturn “www.bluedust.com”end

Vejam só, configuração instantânea!O programa usado para demonstração

neste artigo, o elinks, tem uma variedadede ganchos diferentes, que podem servistos na Tabela 2: Ganchos e Frestas.Nós podemos utilizar um ou algunsdeles para personalizar o aplicativo.

Não é só o elinks que chama nossoscript, é possível para nosso script cha-mar o elinks através das chamadas deretorno. Isso nos permite resgatar infor-mações, como a página de título, quenão são repassadas como parâmetro.Isso é especialmente útil com teclas deatalho, como: quais parâmetros devemser transferidos para elas? URLs? Listasde Favoritos? Éaí que entramas funções dechamadas deretorno.

Essas chama-das de retornosão funções espe-cíficas que oelinks decidiu

que nós (enquanto script) devemos utili-zar. Ele nos permite chamá-las como sefizessem parte do próprio script em Lua.Incluem funções como current_url e cur-rent_title. Veja a lista na Tabela 3. Deve-mos agora empregar ambas as idéiaspara criar um gancho simples para oelinks que crie uma pequena URL para apágina atual.

A dança da luaNossa primeira tarefa é nos certificarmosde que o elinks foi de fato compiladocom o suporte para scripts em Lua. Vocêpode conferir isso abrindo a caixa About:Pressionando Alt+H, seguido da letra A.Entre todo o texto, você deve encontraras seguintes palavras:

Scripting (Lua)

Todavia, não são as características deLua como linguagem o que a faz seraprovada pelos desenvolvedores. É prin-cipalmente seu uso como ferramenta deconfiguração, que é considerado suamaior aplicação. É tão fácil para umdesenvolvedor de aplicativos adicionar osuporte a scripts em Lua que seria possí-vel perguntar por que a linguagem não émais comum. Pode ser utilizada paracriar plug-ins para softwares ou comoum interpretador de arquivos de configu-ração. Não precisa ser uma configuraçãoestática, como a maioria das outras apli-cações. Ao utilizar uma linguagem deprogramação para gerar a configuração,você pode criar algo muito mais pode-roso e flexível. Pode criar algo dinâmico!

Configurações dinâmicas têm sido umtanto raras. Apenas os aplicativos maiscomplexos, como o Apache, as possuem.Mesmo assim, diretivas como IfModulesão reduzidas ao mínimo e têm umalcance limitado. Uma configuração ver-dadeiramente dinâmica pode facilitar oprocesso de instalação, preparando-sequando o programa é executado e adap-tando-se de acordo com a estrutura dodiretório, número de usuários, atual lar-gura da banda, carga do processador eassim por diante.

Lua também disponibiliza um métodofácil de adicionar ganchos (“hooks”) nosoftware para personalização. Veremosesse atributo a seguir, adicionandoalguns ganchos simples ao navegador detexto elinks.

Caminhando à luz da luaO gancho é um método através do qualum programa (nesse caso, o elinks)chama uma função especial toda vez queestá para fazer alguma coisa importante.Esse ‘coisa importante’ pode ser ir parauma URL ou baixar uma página HTMLdo servidor. Em situações normais, semgancho, essa função especial não faránada! Nada mesmo! Ponto! Ela simples-mente devolverá o controle para o pro-grama principal e o deixará ir para a URLpara a qual estava indo anteriormente.

Entretanto, quando um gancho é colo-cado nessa função especial, o controle épassado do programa principal para afunção gancho. Nessa altura, esta funçãotem o controle das informações e podereescrever a URL, por exemplo. Comoesses ganchos foram programados a par-

Função Gancho Chamada quando… Deve retornar… Notasgoto_url_hook(url, current_url) Uma URL é digitada no Uma nova URL, ou zero

diálogo “Go to URL” para cancelarfollow_url_hook(url) Uma URL foi selecionada Uma nova URL, ou zero

para cancelarpre_format_html_hook(url, html) Um documento foi baixado Seqüência modificada, Pode Remover

ou zero se nenhuma anúncios/lixomudança foi feita das webpages mal

concebidaslua_console_hook(string) Algo é digitado no console Um comando (run, eval, goto-

de Lua (type , in elinks) url, or nil) seguido de um argumento apropriado (o programa para executar,o código Lua para validar,uma URL para ir, ou nulo,respectivamente)

quit_hook() elinks está para terminar Nada Para organizar os recursos

Tabela 2: Ganchos

openfile, closefile, readfrom, writeto,appendto, pipe_read, remove, rename, flush,seek, tmpname, read, write execute, exit,clock, date, getenv, setlocale.

Quadro 1:enable_systems_functions

01 function goto_url_hook (url, current_url)02 if url == “tiny” then03 return

“http://tinyurl.com/create.php?url=”..current_url04 end05 return url06 end

Listagem 2: goto_url_hook

071-076_Lua.qxd 9/21/04 10:22 PM Page 73

Page 74: Linux Magazine BR 2

LuaPROGRAMAÇÃO

74 Setembro 2004 www.linuxmagazine.com.br

Isso já é normalmente incluído na maio-ria das distribuições (ou baixado em[4]). Casos o suporte não exista, corrija oproblema recompilando o elinks com:

$./configure —with-lua$ make# make install

Isso também irá criar um arquivo deexemplo chamado hooks.lua no diretórioelinks/contrib/lua. Depois, leia tudo comatenção e descubra algumas das outraspossibilidades de script em Lua.

Em seguida, precisamos criar umscript que será executado quando oelinks iniciar. Ele é colocado em~/.elinks/hooks.lua e é executado inte-gralmente durante a inicialização. Então,desde que nosso código esteja dentro defunctions, nada deve aparecer na tela.

A primeira de nossas funções iráincluir o código para goto_url_hook.Como foi anteriormente mencionado, eleé chamado toda vez que o usuário digita‘g’ para mudar a webpage. É portantobem simples escrever a Listagem 2.

É realmente fácil como aparenta!Recarregue o elinks e viste seu últimowebsite não favorito. Depois pressione‘g’, seguido pela palavra-chave tiny, eretorne. Se você é como eu e escolhe oGoogle como seu site de teste, serálevado para uma webpage em tinyurl.com, como mostrado na Figura 1.

Podemos ver a nova URL designadacomo http://tinyurl.com/161, que podedepois ser copiada, colada, enviada pore-mail e mal-utilizada de maneira geral.Se nós soubésssemos como adicionaratalhos no elinks, poderíamos pouparquatro teclas de atalho. Aqueles queleram anteriormente a Tabela 3, conhe-cerão a função chamada bind_key. Comela, podemos adicionar o código mos-trado na Listagem 3.

O exemplo demonstra a utilidade defunções anônimas e a facilidade com que

dois valores po-dem ser retorna-dos de uma fun-ção. No caso, ocomando goto_urle o parâmetro URL.

Para melhoraro acabamento, va-mos remover ainformação dupli-cada da URL, es-crevendo o arqui-vo hooks.lua comona Listagem 4.

Como você podever, Lua facilitaao usuário final adicionar funcionalida-des em uma parte do software. Você nãoprecisa de nada além dos métodos forne-cidos aqui e um pouco de imaginaçãopara adicionar um monte de outras fun-cionalidades. De um modo geral, darmais flexibilidade ao usuário final signi-fica complexidade para o programador.Com Lua, isso não é o que acontece!Vamos ver o porquê…

Foguete LunarEm qualquer sistema extensível comoesse, existem três componentes básicos.A inicialização (e desligamento), acomunicação de entrada (em que oscript comunica-se com o nosso pro-grama em C), e a comunicação de saída(em que o C comunica-se com o script).Todas as três áreas são muito simples epodem utilizar os modelos básicos mos-trados aqui. Essa simplicidade manteveo interpretador Luapequeno e encorajouos programadores autilizarem-no em vá-rias tarefas, como paraconfiguração e auto-mação de tarefas.

Vamos começar peloinício. Veja o exemploa seguir:

#include <lua.h>int main(int argc, char *argv[]){lua_State *pLua;pLua = lua_open();printf(“Hello, World!”);lua_close(pLua);

return 0;}

A primeira coisa a ressaltar é que estouexecutando o Lua 5. Mesmo que essaseja uma preferência pessoal, pode cau-sar pequenos problemas de compatibili-dade, já que lua_open precisa de umparâmetro do tamanho da pilha na ver-são 4. Aqueles que executam a versão 4(que inclui a versão estável do Debian)também irão notar que o arquivo decabeçalho deve ser modificado paralua40/lua.h. Essas são duas das poucasmudanças incompatíveis com as versões

Nome da Função Propósitoenable_systems_functions() Permite que certas funções (por exemplo,

abrir arquivo) sejam usadas.Veja Caixa 1.current_url() Recupera a URL da página atual do elinkscurrent_link() Recupera o link que está selecionado no

momento (ou nil, se nenhum)current_title() Recupera o título da páginacurrent_document() Recupera a página HTML, como uma

cadeia de caracterescurrent_document_formatted([width]) Recupera a página HTML,

formatada com o tamanho opcionalpipe_read(command) Executa o comando dado e lê dadosexecute(command) Executa o comando dado em shell

(using sh -c)bind_key (keymap, keystroke, function) Executa a função toda a vez que uma tecla

de atalho é criada. Deve retornar um comando e um parâmetro como lua_console_hook

Tabela 3: Funções

01 bind_key (“main”, “Ctrl-T”,02 function ()03 return “goto_url”,04 “http://tinyurl.com/create.php?url=”..current_url()05 end06 )

Listagem 3: Função bind_key

01 function get_tiny(url)02 return “http://tinyurl.com/create.php?url=”..url03 end04 function goto_url_hook (url, current_url)05 if url == “tiny” then06 return get_tiny(current_url)07 end08 return url09 end10 bind_key (“main”, “Ctrl-T”, function () return U

“goto_url”, get_tiny(current_url() ) end )

Listagem 4: Arquivo hooks.lua

071-076_Lua.qxd 9/21/04 10:22 PM Page 74

Page 75: Linux Magazine BR 2

lua_dostring(pLua, “number=12345”);// other codelua_dostring(pLua, “print(number)”);

Enquanto mantivermos o controle dopLua, quaisquer variáveis definidas per-manecerão no estado de Lua. Toda vezque chamarmos uma função (comoprint), Lua irá validá-la com as funçõesdeclaradas e retornar os resultados parao estado mantido em pLua.

Provavelmente você pode imaginarcomo seria fácil construir seu própriointerpretador e depurador com apenasessa simples função, e você está certo!Porém, tal função já foi escrita para nós.É chamada dofile. Ela executa o códigodentro do arquivo como se ele estivessesendo executado a partir da linha decomando: isto é, executando apenasaquelas instruções que são globais.Todavia, diferentemente da linha decomando, assim que o arquivo for execu-tado, o estado permanece em pLua.Essas variáveis, junto com quaisquerfunções declaradas, podem ser acessadaspelo código em C, por outro arquivo Luacarregado com o lua_dofile ou pelocódigo validado com lua_dostring.

int result;result = lua_dofileU(pLua, “config.lua”);

Nesse caso, result retorna o efeito doúltimo segmento, que normalmentedepende da execução bem-sucedida ounão o script.

Luar sobre ParadorVamos agora escrever algo útil em nossoscript config.lua, que chama uma funçãoem nosso programa em C. Isso teria omesmo efeito que a função current_urlno elinks, por exemplo.

Para fazer isso, precisamos registraruma de nossas funções em C com Lua.Isso une as duas linguagens. Damos onome que Lua usaria, seguido pelo nomeatual de nossa função em C.

anteriores feitas na versão 5. Ao compi-lar, devemos linkar nosso código C coma biblioteca de Lua da seguinte forma:

$ gcc -llua mycode.c

Se você está utilizando apenas Lua (istoé, uma versão standalone, não embutidaem uma aplicação), precisará de suaspróprias rotinas de entrada e saída. Issonão está incluído como padrão, uma vezque a maioria dos aplicativos provê suaspróprias rotinas de E/S e, dessa forma,eliminam uma carga desnecessária. Parapermitir ao código de Lua acessar suasbibliotecas padrão, inclua o seguintecódigo em C:

lua_baselibopen(pLua);lua_iolibopen(pLua);lua_strlibopen(pLua);lua_mathlibopen(pLua);

A escolha das bibliotecas necessáriascabe, obviamente, a você. Todavia, in-cluir qualquer uma delas necessita vin-culação com a biblioteca lualib. Utilizara biblioteca de funções matemáticas deLua requer a biblioteca de funções mate-máticas do C (que não está incluídacomo padrão), e a linha de compilaçãovai se parecer com a seguinte:

$ gcc -llua -llualib -lm Umycode.c

O pLua contém o estado de todo o sis-tema Lua. Uma vez que Lua é reentrante,podemos chamar lua_open quantasvezes nós quisermos, e nenhum estadoirá entrar em conflito com o outro, o quenos permite usar Lua como parte de umsistema integrado. Toda vez que intera-girmos com Lua, devemos utilizar esseponteiro, que é convencionalmente cha-mado L, embora no texto eu esteja utili-zando pLua para maior clareza.

Tendo acesso ao estado de Lua, pode-mos alimentá-lo com código para serprocessado pelo interpretador interno:

01 bind_key (“main”, “Ctrl-T”,02 function ()03 return “goto_url”,“http://tinyurl.com/create.php?url=”..current_url()05 end06 )

Listagem 5: rotina factorial

071-076_Lua.qxd 9/21/04 10:22 PM Page 75

Page 76: Linux Magazine BR 2

podemos recuperar o número de argu-mentos e computar o resultado paracada um - desde que seja númerico.Nosso código pareceria um pouco com oda Listagem 5.

Observe que os índices da pilha sãocontados a partir do 1 (não 0) e que pre-cisamos retornar o número de parâme-tros que são enviados para a pilha deretorno. Fora isso, não há mágica algumaem escrever suas próprias funções. Ostipos podem variar, de forma quelua_isnumber deve tornar-se lua_isbool(veja Tabela 1: Tipos de Lua), mas osprincípios são exatamente os mesmos.

Nuvens cruzando a luaChamar uma função de Lua a partir do Cnão é mais difícil, se você souber opadrão. Funciona com o mesmo princí-pio de antes, em que você envia dadospara a pilha. Nesse caso, devemos colo-car o nome da função primeiro, seguidopor cada um dos argumentos em ordem.Uma vez que os tipos variam entre o C eLua, você precisa utilizar a função cor-reta para enviar o tipo apropriado para apilha. Veja Listagem 6.

Isso teria o mesmo efeito que Lua cha-mando suas próprias funções; então,

result1, result2 = U

swap_greeting(“Steev”, “Hello”);

Observe que a ordem dos parâmetros éreversa, para combinar com sua remoçãoda pilha na ordem First In, Last Out.

Se quiséssemos os resultados dessafunção no código em C, iríamos ler osdados da pilha e depois teríamos deremovê-los explicitamente. Desta forma:

pResult2 = lua_tostringU(pLua, -1);pResult1 = lua_tostringU(pLua, -2);lua_pop(L, 2);

Repare na ordem reversa aqui também, eno uso de índices de pilha negativos.

Shepherd MoonsEm poucas páginas, conseguimos apren-der os fundamentos de uma nova lingua-gem de programação, adicionar novosrecursos a um navegador Web e encon-trar uma maneira de incrementar nossospróprios projetos com scripts dinâmicosde configuração. Tudo isso graças aopoder e à flexibilidade de Lua. Estoucerto de que você também já tem suaspróprias idéias de projetos onde Luapode ser útil. Vá em frente! ■

lua_register(pLua, “factorial”, Uc_factorial);

A partir daqui, podemos deixar que Luatome conta. Ela organizará todas as cha-madas de funções, passagem de parâme-tros e o retorno dos resultados. Tudo oque nós precisamos fazer é recuperar osparâmetros na ordem certa e retornar osresultados corretos.

Já que Lua comporta múltiplos parâ-metros de retorno (e de qualquer tipo),nós não podemos utilizar qualquer pro-tótipo típico do C para administrá-la. Nolugar disso, todos os parâmetros sãoenviados (e extraídos) de uma pilha. Nóspodemos então consultá-la para saberquantos itens estão nela e de que tiposão. As pilhas, como variáveis, podemconter qualquer tipo de dado suportado.Cabe a nós, como programadores em C,requisitar o tipo apropriado ao removerdados da pilha. Isso garante que cadafunção do C tem a mesma assinatura, ouprotótipo, quando usada com Lua.

Se nossa rotina factorial pode pegarum número arbitrário de números intei-ros e retornar o fatorial de cada um,

LuaPROGRAMAÇÃO

76 Setembro 2004 www.linuxmagazine.com.br

Quando operários vão a um bar, elesfalam sobre futebol. Presume-se que,quando jogadores de futebol vão aum bar eles falam a respeito dos ope-rários! Quando Steven Goodwin vai aum bar ele não fala sobre futebol ouoperários. Ele fala sobre computado-res. Invariavelmente…SO

BRE

OAU

TOR

[1] Usos de Lua:http://www.lua.org/uses.html

[2] Documentação de Lua:http://www.lua.org/manual/5.0/

[3] Fóruns sobre Lua:http://archive.neotonic.com/archive/lua-l

[4] Programa elinks:http://elinks.or.cz/download.html

[5] Entrevista com Bret Mogilefsky:http://www.grimfandango.net/?page=articles&pagenumber=2

INFORMAÇÕES

01 // O nome da função é um símbolo global: nós devemos usá-lo em vez Ude uma cadeia de caracteres contendo o nome da função

02 lua_getglobal(pLua, “swap_greeting”);03 // Nosso primeiro parâmetro04 lua_pushstring(pLua, “Steev”);05 // Nosso segundo parâmetro06 lua_pushstring(pLua, “Hello”);07 // A chamada em si08 lua_call(pLua, 2/*number of input args*/, 2/*number of result args*/);09 // Recuperar resultados dentro das variáveis de Lua10 lua_setglobal(pLua, “result2”);11 lua_setglobal(pLua, “result1”);

Listagem 6: Chamando Lua

Um dos maiores cases de sucesso no uso da linguagem Lua é o jogo Grim Fandango, um adven-ture da Lucas Arts. Segundo Bret Mogilefsky, programador chefe, originalmente o jogo deveriausar o engine SCUMM, o mesmo de todos os outros adventures da Lucas até a época. Contudo,SCUMM não era flexível o suficiente para as ambições do jogo e um novo engine teria de serescrito. Procurando alternativas à tarefa de escrever um interpretador para uma nova linguagemde script, Bret encontrou Lua, na época na versão 2.50, que provou ser flexível e poderosa o sufi-ciente para a tarefa, e acabou sendo usada em scripts para controlar diálogos e interações entrepersonagens, cenários e vários eventos do jogo. A linguagem também facilitou o processo detestes, já que no caso de um bug, os programadores podiam simplesmente chamar o interpreta-dor Lua e fazer alterações no script em tempo real, sem ter de gerar um novo executável. Veja aentrevista [5] de Bret ao site grimfandango.net, onde ele conta mais detalhes sobre o uso de Lua.

Lua na terra dos mortos

071-076_Lua.qxd 9/21/04 10:22 PM Page 76

Page 77: Linux Magazine BR 2

Xandros Desktop 2.01 .........................................................78Confira em nosso CD o sucessor do Corel Linux, con-siderado por muitos como uma das distribuições Linuxmais fáceis de usar.

Gráficos em modo texto...................................................80Acelere operações básicas de manipulação de imagenscom o ImageMagick, um poderoso conjunto de utili-tários baseado na linha de comando.

Seleção VI-sual........................................................................82Aurélio Marinho Jargas nos ensina a usar o modo deseleção visual do vim, facilitando a edição de textos.

É hora do show!......................................................................84Quem tem saudades do Lotus ScreenCam precisa co-nhecer o XVidCap, ferramenta essecial para quem quercapturar vídeos de ações em seu desktop.

Papo de Botequim ................................................................87Continuando nossa série, vamos aprender a lidar com opoderosíssimo grep e construir nosso primeiro progra-ma, um catálogo para sua coleção de CDs.

Bem-vind0 à LinuxUser!Esta é uma seção especial dedicada a destacar programas úteis e interessantes

para ajudá-lo no seu trabalho diário com o Linux no desktop. Aqui você encon-

trará informações sobre como utilizar programas comuns de forma mais

eficiente, obterá um valioso embasamento técnico e conhecerá as últi-

mas novidades em software para seu sistema operacional favorito.

077-077_user_intro.qxd 9/21/04 10:25 PM Page 73

Page 78: Linux Magazine BR 2

CD do MêsLINUX USER

78 Setembro 2004 www.linuxmagazine.com.br

• Esta versão nãoinclui suporte téc-nico, mas você pode tirar suasdúvidas nos fóruns no site da Xandros.

InstalaçãoInstalar o sistema é fácil. Na modalidadeExpress Install (Instalação Expressa)tudo o que você tem a fazer é iniciar ocomputador com o CD no drive e seguiras instruções na tela para criar um admi-nistrador do sistema, um usuário comume aceitar o contrato de licença. Todo oresto é feito automaticamente para você.Usuários mais experientes podem esco-lher a modalidade Custom Install (Insta-lação Personalizada), que permite umajuste fino do sistema, como a configu-ração da rede, seleção do software a serinstalado, particionamento manual do

disco, etc. Após oprimeiro “boot”, um assis-

tente guia o usuário pelos passosfinais da configuração, como conexão àInternet, instalação da impressora, prefe-rências regionais e aparência e compor-tamento do ambiente de trabalho.

B aseada na versão 3.0 do finadoCorel Linux, esta distribuiçãotem como principais destaques

a instalação e atualização simplifi-cada de software, feita através daInternet pelo serviço Xandros Net-works, e outras ferramentas comoum poderoso gerenciador de arqui-vos capaz de gravar CDs, entreoutros recursos, e ferramentas parafacilitar a conexão à Internet.

A versão inclusa em nosso CD, aOpen Circulation Edition, é umaespécie de “demonstração” das ver-sões comerciais, Xandros Desktop eXandros Business Edition. Embora com-pletamente funcional, ela traz algumaspoucas limitações:

• A velocidade de gravação de CDs noXandros File Manager é limitada àvelocidade mínima suportada pelo seugravador. Programas externos, como oX-CD-Roast, não são afetados.

• Uma versão com banners de propa-ganda do navegador e cliente de e-mailOpera é instalada no sistema comonavegador padrão. Você ainda tem aopção de instalar os aplicativos do pro-jeto Mozilla, ou qualquer outro nave-gador e programa de e-mail que tenhaum pacote para o Debian, gratuita-mente, através do serviço/utilitárioXandros Networks.

• Não há guia do usuário, nem umalicença do CrossOver Office/Plugin,necessário para executar o MS Office eoutros aplicativos Windows. Ambospodem ser adquiridos via Internet naXandros Networks, ou obtidos ao atua-lizar sua distribuição para as versõesDeluxe ou Business (ambas pagas).

Neste mês, trazemos em nosso CD a versão de livre circulação do Xandros

Desktop, uma distribuição Linux canadense que se des-

taca como uma das mais fáceis de usar.

POR RAFAEL RIGUES

Corel Linux retorna das cinzas

Xandros Desktop

CD Número 2Setembro 2004

CD Número 2Setembro 2004

Aviso: Este CD-ROM da Linux Magazi-ne foi testado extensivamente e atéonde pudemos verificar se encontra li-vre de qualquer vírus ou outro tipo desoftware de conteúdo malicioso, bemcomo de defeitos. A Linux Magazinenão se responsabiliza por qualquer da-no ou perda de dados que advenha dautilização deste CD-ROM ou de soft-ware nele incluído.

Fabricado por Bandeirantes – Artes Gráficas e Editora Sesil Ltda. – Indústria Brasileira – CNPJ 57.690.771/0001-5

2

[1] Xandros: http://www.xandros.com

[2] Fóruns de Discussão:http://www.xandros.com/support/forums.html

[3] Lista de Compatibilidade de Hardware:http://www.xandros.com/support/forums.html

[4] ISO Language Codes:http://www.w3.org/WAI/ER/IG/ert/iso639.htm

[5] ISO Country Codes:http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html

INFORMAÇÕES

078-079_Xandros2.qxd 9/21/04 10:27 PM Page 78

Page 79: Linux Magazine BR 2

LINUX USERCD do Mês

79Setembro 2004www.linuxmagazine.com.br

O Peixe BabelOficialmente, o Xandros Desktop - OpenCirculation Edition traz suporte a umúnico idioma, em duas versões: inglêsnorte-americano e britânico. Uma rápidabusca na Xandros Networks revela a ine-xistência de pacotes oficiais com suportea outros idiomas.

Mas existe um meio de adicionar “pordebaixo dos panos” o suporte a quasequalquer um dos mais de 50 idiomas ofi-cialmente suportado pelo KDE. Conecte-se à Internet e faça o seguinte:

• Abra a Xandros Networks (Launch gXandros Networks) e clique no menuEdit, item Set Applications Sources. Najanela que surge, marque a opçãoDebian unsupported site.

• Espere a atualização da lista de pacotese, no campo de busca no topo da janela,digite kde-i18n-ptbr. Clique em Search.

• Em Search Results, na lateral esquerdada janela, clique no item Expert. Háum único resultado para nossa busca,justamente o pacote com a traduçãodo KDE e seus aplicativos para o Por-tuguês do Brasil. Clique no link Installao lado da descrição do pacote.

• Agora abra o editor de textos (Launchg Applications g Accessories g Text Edi-tor). Clique em File g Open e em FileName digite .kde/share/config/kdeglo-bals e tecle Enter.

• Encontre a linha Language=en_US nasecao Locale (geralmente é a linha 107do arquivo) e substitua-a por:Language=pt_BR.

• Salve o arquivo (basta clicar no íconedo disquete) e reinicie o KDE.

• Pronto! Aplicativos da Xandros, comoo Xandros Networks, continuarão eminglês, mas os aplicativos do KDEficam em Português do Brasil.

Para instalar o suporte a outros idiomas,repita os passos acima, mas substituapt_BR pelo código do idioma desejado,composto pelo ISO Language Code [4] eISO Country Code [5]. O espanhol seriaes_ES, japonês ja_JA, e assim por diante.

E com este truque voc6e ainda ganhaacesso a todos os pacotes no repositórioapt do Debian. Experimente! ■

Figura 1: Na opção Express Install basta criar alguns usuários... Figura 2: ...e aguardar a instalação do sistema.

Figura 3: O assistente pós-instalação configura a conexão à internet... Figura 4: ...e suas impressoras, entre outros itens.

Rafael Rigues, ummaníaco por video-games e computa-dores antigos, já foifuncionário daConectiva, onde par-ticipou do desenvolvi-mento do ConectivaLinux 5 e Conectiva Linux: e-Com-merce, e membro da equipe da Revistado Linux, da qual foi editor duranteum ano. Atualmente é um dos edi-tores da Linux Magazine Brasil.

SOBR

EO

AUTO

R

078-079_Xandros2.qxd 9/21/04 10:27 PM Page 79

Page 80: Linux Magazine BR 2

ImageMagickLINUX USER

80 Setembro 2004 www.linuxmagazine.com.br

Mudando FormatosConverter imagens para outro formato,como TIF em PNG, é uma tarefa bastantecomum. O comando do ImageMagickque faz isso é convert:

convert image.tif image.png

O convert avalia a extensão do arquivoem questão para definir o formato final.Não faz nenhuma diferença digitar aextensão em minúsculas ou maiúsculas,ou mesmo uma mistura das duas. A fer-ramenta lida até mesmo com variantescomo .tiff ao invés vez de .tif, ou .Jpegao invés de .jpg. Você pode digitar:

man ImageMagick

para abrir a página principal do manual(manpage) do ImageMagick e obter umalista dos formatos de arquivo suportados.

ScriptingUma das principais vantagens das ferra-mentas de linha de comando é o fato depoderem ser usadas em um script paraautomatizar as tarefas repetitivas.

Vamos imaginar que você precise con-verter regularmente screenshots a coresno formato PNG em arquivos TIF mono-cromáticos e em arquivos PDF em escalade cinza. Para fazê-lo, simplesmente useo script color2gray mostrado no Quadro1. Ele não apenas converte o formato

PNG em TIF e PDF, como também reduzo universo de cores. As opções quemanipulam isso são -colors 256 e -colorspace GRAY.

O script também se encarrega de parteda organização do processo. Se você dig-itar o comando abaixo:

color2gray test.jpg

ele cria test.tif e test.pdf e move oarquivo original para um subdiretóriochamado COLOR – se esse diretório nãoexistir, o script simplesmente o cria.

RedimensionandoNa editora, precisamos ter gráficos dediferentes tamanhos da página de capapara cada edição (ver Figura 2).

O convert nos ajuda a fazer isso,usando a opção -geometry para mudar otamanho da imagem. O tamanho final éespecificado como largura x altura,como no comando:

convert big.png -geometry U

150x200 small.png

para uma imagem pequena com uma lar-gura até 150 pixels e uma altura até 200pixels. Se você quer que o convert utilizeexatamente esses valores (e distorça aimagem ao fazê-lo), tecle um sinal deexclamação imediatamente depois dosdados de tamanho:

P ara a maioria das pessoas, mani-pulação de imagens é sinônimode uma interface gráfica com-

plexa, com inúmeras paletas cheias deferramentas, seleções de cor e coisas dogênero. Infelizmente, existem muitastarefas para as quais um programa comoo Gimp é simplesmente inapropriado.

O ImageMagick [1], que muitas distri-buições Linux instalam automatica-mente, tem uma seleção de ferramentasem linha de comando para a manipula-ção de imagens. Trataremos de algumasdelas nesse artigo.

O Gimp é o que a maioria das pessoas escolhe como aplicativo padrão para

tarefas mais complexas de manipulação de imagem. Contudo, para muitas

tarefas, como redimensionamento e conversão de formatos, a linha de

comando oferece um caminho mais rápido. POR HANS-GEORG ESSER

Ferramentas gráficas do ImageMagick

Gráficos em modo texto

01 #!/bin/bash02 # Criando arquivos TIF e PDF

monocromáticos03 #04 base=$(echo $1 | sed -e

“s/\....$//”) # Remove aextensão do arquivo

05 baseBW=${base}.tif# Nome do arquivo TIF

06 basePDF=${base}.pdf# Nome do arquivo PDF

07 convert -colors 256 -colorspace \

08 GRAY $1 $baseBW# Converte em TIF

09 convert $baseBW $basePDF# ... e em PDF

10 mkdir -p COLOR; mv $1 COLOR/# Altera original

Quadro 1: Script“color2gray”

01 #!/bin/sh02 echo converting title: $1 to $2 \(small\) and $3 \(very small\)03 convert $1 -blur 3 -geometry 220x312! $204 convert $1 -blur 3 -geometry 149x211! $3

Quadro 2: Script “conversão de documento”

080-081_ImageMagick2.qxd 9/21/04 10:29 PM Page 80

Page 81: Linux Magazine BR 2

LINUX USERImageMagick

81Setembro 2004www.linuxmagazine.com.br

convert big.png -geometry U

150x200! small.png

Aqui na editora, usamos a lis-tagem mostrada no Quadro 2para preparar os gráficos dacapa que serão publicados naWeb. No nosso caso, faz sen-tido usar um tamanho fixo(ou seja, o parâmetro ‘!’);pois isso nos assegura quetodas as miniaturas sejam domesmo tamanho, além de nospermitir criar um layout comas miniaturas alinhadas umaao lado da outra.

Além da conversão manualde arquivos, o convert tam-bém tem uma propriedade especial quecria um panorama com todas as ima-gens. Digite os seguintes comandos emum diretório contendo apenas imagens:

convert ‘vid:*’ directory.png

para criar um panorama com as miniatu-ras das imagens e os nomes dos arqui-vos, resolução e tamanho como legendasobre fundo branco.

Você pode usar imagens desse tipocomo “mapas de imagens clicáveis” emsites na Web. O utilitário convert podeser usado para criar automaticamentedestes mapas. O comando a seguir irácriar três arquivos:

convert ‘vid:*’ HTML:index.html

• index.gif: é a imagem em miniatura. Oconvert deduz o nome da imagem apartir do nome do arquivo HTML.

• index.html: é um arquivo HTML com aimagem GIF embutida e devidamentemapeada; basta dar um clique na ima-gem em miniatura ser levado àimagem maior.

• index_map.shtml: contém a seção demapeamento de index.html e é útilpara integração (no servidor) commúltiplos sites na Web.

DetalhesO comando identify também faz parte dopacote ImageMagick. Ele exibe informa-ções sobre os arquivos que passam porele, incluindo o tamanho em pixels (vejao Quadro 3) e a profundidade de cor (8ou 16 bit no nosso exemplo).

O identify não utiliza a extensão doarquivo para identificar seu formato -mesmo se ela for removida, o utilitáriocontinuará reconhecendo o arquivo. Eleindica o tamanho da imagem no formatolargura x altura, assim como o convert.

Entrada e SaídaO import e o display são fer-ramentas bastante úteis. Oprimeiro cria screenshots, ooutro mostra imagens. Oimport tem uma vasta gamade opções. Para capturar todaa área de trabalho, digite:

import -window root U

desktop.png

E para capturar uma janela:

import -frame window.png

O parâmetro -frame é obriga-tório, uma vez que, sem ele,o import remove a moldura

da janela e captura apenas o conteúdo.Se você usa o ambiente de trabalho

KDE, pode pressionar [Alt+F2] paraabrir uma linha de comando, e experi-mente usar o comando import em con-junto com o comando sleep:

sleep 3; import -window root U

desktop.png

com isso você ganha algum tempo paraorganizar sua área de trabalho antes queo comando seja executado. Você pode,por exemplo, abrir alguns menus.

Finalmente, o display é um visualiza-dor simples que mostra as imagens emseu tamanho real. Se não há espaço sufi-ciente para isso, a ferramenta mostrauma janela de pré-visualização, permi-tindo que o usuário selecione as partesda imagem que lhe interessam.

Conclusãoconvert, identify, import e display nãosão mais que uma pequena seleção dokit de ferramentas do ImageMagick e dis-cutimos apenas superficialmente suascaracterísticas. Para distribuições basea-das em RPM ou Debian, use os seguintescomandos para descobrir que programasestão incluídos no pacote:

rpm -qfl `which identify` | Ugrep bindpkg -L ImageMagick | grep bin

E lembre-se: quando tudo mais falhar,leia as páginas do manual! ■

01 $ identify *.png *.jpg02 john@linux:~/LMUK45/Cover> identify *.png *.jpg03 ald15.png PNG 1704x1710+0+0 PseudoClass 256c 8-bit 877.4kb 0.150u U

0:0104 Cover_45.png[1] PNG 620x879+0+0 DirectClass 8-bit 345.0kb 0.040u 0:0105 Cover_45s.png[2] PNG 220x312+0+0 DirectClass 8-bit 69.4kb 0.010u 0:0106 Cover_45ss.png[3] PNG 149x211+0+0 DirectClass 8-bit 36.8kb 0.000u U

0:0107 directory.png[4] PNG 768x186+0+0 DirectClass 16-bit 268.6kb 0.020u U

0:0108 Manpage.png[5] PNG 636x966+0+0 DirectClass 8-bit 48.8kb 0.030u 0:0109 little_duck.jpg[6] JPEG 800x600+0+0 DirectClass 8-bit 59.5kb 0.030u U

0:01

Quadro 3: Comando de Identificação

Figura 1: Usamos versões de diferentes tamanhos da imagem de capa napágina da Linux Magazine.

080-081_ImageMagick2.qxd 9/21/04 10:29 PM Page 81

Page 82: Linux Magazine BR 2

Linha de ComandoLINUX USER

82 Setembro 2004 www.linuxmagazine.com.br

por outro texto, a seleção visual do VI éum aliado poderoso para fazer ediçõescomplicadas com pouco esforço.

Abra um texto qualquer no VI e brin-que de selecionar trechos para se fami-liarizar com os três modos de seleção.Primeiro posicione o cursor no meio deuma linha, tecle v e mova o cursor comas setas do teclado para ver a seleção seformando: o texto selecionado ficará emdestaque. Tecle v novamente (ou Esc)para cancelar a seleção.

Agora volte ao mesmo meio da linhainicial e tecle V (maiúsculo). Surpresa! Alinha inteira foi selecionada. Usando assetas para cima e para baixo podemosincluir mais linhas inteiras na seleção.Tecle V ou Esc, para cancelar a seleção.

Volte novamente ao meio da linha etecle Ctrl+V para fazer a seleção de blo-cos. Mova o cursor para baixo e para adireita e veja um retângulo se formando.Antes de cancelar esta seleção, veja queé possível mudar o modo de seleção semperder o posicionamento atual. Aindacom o bloco selecionado, tecle v paratrocar para seleção de caracteres, depoistecle V para selecionar as linhas.

Tecle Esc para cancelar a seleção. Umcomando bacana é o gv (Go Visual), querestaura a última seleção feita. Agora,com algumas linhas selecionadas, vamosfazer algo com elas. Veja na tabela 2alguns dos comandos disponíveis.

Brinque bastante com cada um dessescomandos para se acostumar e veja queseu uso do VI ficará muito mais ágil. Porexemplo, quer apagar todo um conjuntode linhas? Vá até a primeira, aperte V edesça com o cursor até a última linha,então aperte d e pronto: linhas apagadas.

O comando r é interessante no modode seleção: ele troca todos os caracteresdo trecho selecionado por um caractere àsua escolha, bom para “esconder” umaparte do texto.

Muito úteis também são o u e o U,para deixar o texto todo em minúsculasou maiúsculas, não importando comoera o trecho original. Experimente tam-bém o gq, que reformata as linhas, jun-tando-as e dividindo novamente paraque a largura máxima (:set textwidth)seja respeitada.

E por último, o poder dos comandos“!” e “:” aplicados à seleção. Para orde-nar alfabeticamente apenas algumaslinhas do texto, e não ele todo, selecioneas linhas desejadas com o V e digite !sortseguido de Enter. Para substituir palavrasapenas na seleção, novamente selecioneo texto desejado e tecle :s/isso/aquilo/ etecle Enter.

Ao usar esses comandos, surge naúltima linha da tela o texto :’<,’>. Nãose preocupe, ele está ali para indicar queo comando digitado em seguida seráaplicado apenas ao trecho selecionado.

Note que após aplicado o comando, oVI volta para o modo anterior, abando-nando o modo visual. Resumindo, essemodo é composto por três operações:

1. Iniciar o modo visual com v, V ou Ctrl+V2.Mover o cursor para selecionar o texto3.Aplicar um comando à seleção

Já pensou ter que editar um texto como monitor desligado, só digitando oscomandos e torcendo para que tudo

fique certo? Pois assim eram os editoresantes do VI, como o seu antecessor ed.Nada de cursor, setinhas, letras apare-cendo e sumindo na tela. A edição erafeita às escuras. E você achando que o VIé que é complicado, hein?

Pois bem, neste artigo vamos conhecero “modo visual” do VI. O nome podecausar confusão, mas esse modo nadatem a ver com o fato do VI ser um editorvisual. O modo visual é o nome que sedá quando fazemos uma seleção detexto, igual aos editores gráficos quandoselecionamos um texto com o mouse.

Como o VI não depende de mousepara ser operado, há meios de selecionarum texto somente com o teclado. A teclachave é o V (de Visual, claro!).

Diferente da seleção de texto emoutros editores, que só serve para apagaro texto selecionado, copiá-lo ou trocá-lo

O nome do VI vem da palavra “Visual”. Editor de textos revolucionário em sua

época, sua primeira versão já trazia uma impressionante característica: podia

mostrar na tela o texto que estava sendo editado!

AURÉLIO MARINHO JARGAS

Dominando o VI

Seleção VI-sual

Comando Nome Açãov --VISUAL -- Seleciona caracteresV -- VISUAL LINE -- Seleciona linhasCtrl+V -- VISUAL BLOCK -- Seleciona blocos

(seleção vertical)

Variantes do modo visual

Comando Ação no texto selecionadod Apagay Copiap Colac Troca por outro textor Troca cada letra por um caractereJ Junta todas as linhas em uma sóU Converte para maiúsculasu Converte para minúsculas~ Inverte maiúsculas e minúsculasgq Reformata as linhas para a largura

desejada.! Manda as linhas para um

comando externo (!sort): Aplica um comando ‘ex’nas linhas

(:s/isso/aquilo/)

Alguns comandos do VI

Charles Wilson - w

ww

.sxc.hu

082-083_vi.qxd 9/22/04 7:07 PM Page 82

Page 83: Linux Magazine BR 2

LINUX USERLinha de Comando

Durante o passo 2 de demarcar a sele-ção, se você apertar a tecla o (letra o deontem, minúscula), o cursor alternaentre o início e o fim do trecho marcado.Dessa maneira é possível aumentar otamanho de uma seleção já iniciada.

Isso é tudo o que qualquer usuárionormal precisa saber para usar e abusarda seleção visual e tornar a edição detextos no vi mais confortável. A partirdaqui entraremos num mundo bizarro,onde coisas estranhas e surpreendentesacontecem. Continue lendo por suaconta e risco.

A seleção de blocos (Ctrl+V) reservaalgumas surpresas. Para entender o quevai acontecer com os comandos a seguir,é imprescindível que você tenha o VIaberto com um texto qualquer e repitaexatamente em sua máquina todos osprocedimentos descritos.

Já precisou incluir no início de algu-mas linhas um texto padrão? É possívelfazer isso com um :s/^/TEXTO/, mascom a seleção visual isso é muito maisdivertido. Vá com o cursor até o início deuma linha qualquer, aperte Ctrl+V edesça sete linhas com a seta. Tecle I

(maiúsculo) e logo em seguida digiteMÁGICA. Agora pare, respire fundo, olheatentamente para a tela e tecle Esc. Meiosegundo se passa e PLIM!, letras pipo-cam na tela. Isso é mágica!

Este foi o comando I, que Insere umtexto antes da seleção. Para inserirdepois, o comando é A, de Anexar. Estefica de exercício para você brincar sozi-nho. O comando que fecha a trinca é o c(minúsculo), de Change, que troca otexto selecionado por outro.

O comando c é muito útil para editartabelas. Selecione uma coluna verticalno meio da linha com Ctrl+V, digamoscinco linhas e cinco colunas. Tecle c,depois digite @@@@@. Novamenterespire fundo, tecle Esc e PLIM!, amágica acontece!

A última dica da seleção em bloco éútil para quando o bloco precisa ir até ofinal de todas as linhas, mas estas têmtamanhos diversos. Nesse caso o blocosairá incompleto se a última linha nãofor a mais longa. Enquanto estivermovendo o cursor para marcar o bloco,aperte $ para expandir o bloco até o finalde todas as linhas selecionadas.

Ah! E antes tarde do que nunca, umaviso: o modo visual não faz parte do VIoriginal, é uma característica presenteapenas no Vim, o Vi Improved. Como eleé o “Vi” padrão da maioria das distrosrecentes, a seleção visual está disponívela praticamente todos os usuários. ■

Aurélio Marinho Jar-gas é pesquisador eprogramador, especia-lista em Linux e comexperiência em Bash,Sed, PHP e Python. Suaespecialidade é auto-matização, manipula-ção de texto, formatação e conversõesentre tipos diferentes de dados. É oautor das funções ZZ e do primeirodepurador (“debugger”) feito para a lin-guagem Sed (sedsed), além de um livrosobre expressões regulares publicadopela Editora Novatec.

SOBR

EO

AUTO

R

[1] http://www.vim.org

[2] http://www.aurelio.net/

[3] http://www.cs.pdx.edu/~kirkenda/joy84.html

INFORMAÇÕES

CD Número 2Setembro 2004

CD Número 2Setembro 2004

Aviso: Este CD-ROM da Linux Magazinefoi testado extensivamente e até ondepudemos verificar se encontra livre dequalquer vírus ou outro tipo de soft-ware de conteúdo malicioso, bem co-mo de defeitos. A Linux Magazine nãose responsabiliza por qualquer dano ouperda de dados que advenha da u-tilização deste CD-ROM ou de softwarenele incluído.

Fabricado por Bandeirantes – Artes Gráficas e Editora Sesil Ltda. – Indústria Brasileira – CNPJ 57.690.771/0001-5

2

CD-ROM da Linux MagazineNão saia de casa sem ele!EE nnoo ff iimm ddoo aannoo,, ttooddooss ooss aarr tt iiggooss ddaa rreevv ii ss ttaa eemmuumm úúnnii ccoo CCDD--RROOMM,, ccoomm mmááqquuiinnaa ddee bbuussccaa ppaarraavvooccêê aacchhaarr rraappiiddiinnhhoo ttuuddoo oo qquuee pprreecciissaa!!

■ TTooddoo mmêêss uumm CCDD--RROOMM ddii ffeerreennttee

■ RReepplleettoo ddee pprrooggrraammaass iinntteerreessssaanntteess

■ CCoolleettâânneeaass eessppeecciiaaiiss ppaarraa ffaaccii ll ii ttaarr aa ssuuaa vviiddaa

■ DDiissttrr iibbuuiiççõõeess LL iinnuuxx pprroonnttaass ppaarraa iinnssttaallaarr

CCeennttrraall ddee AAssssiinnaattuurraass::LLiinnuuxx NNeeww MMeeddiiaa ddoo BBrraassii llAAvv.. LLuuííss CCaarrllooss BBeerrrriinnii ,, 11550000CCjj .. 110033 –– BBrrooookkll iinn NNoovvooSSããoo PPaauulloo –– SSPP –– BBrraassii llTTeell .. :: 00xxxx1111 33334455 11000022FFaaxx:: 00xxxx1111 33334455 11008811aassssiinnaattuurraass@@lliinnuuxxnneewwmmeeddiiaa..ccoomm..bbrr

082-083_vi.qxd 9/22/04 7:07 PM Page 83

Page 84: Linux Magazine BR 2

XVidCapLINUX USER

84 Setembro 2004 www.linuxmagazine.com.br

da libpng, libjpeg, e XFree86 instalados.Apenas siga o seguinte procedimentopadrão: ./configure ; make ; su -c makeinstall para compilar o xvidcap e instalaro programa no diretório /usr/local. Comoo root é o único usuário com permissãopara escrever nesse nível, você deveentrar com su -c para temporariamenteassumir os privilégios de root no passomake install.

O xvidcap depende do programaffmpeg [2] para criar videoclipes. Se elenão está instalado no seu sistema, a suaversão do xvidcap ainda poderá criarscreenshots, mas não vídeos. Se a suadistribuição não inclui o pacote ffmpeg,será necessário compilar a versão ffmpegincluída na distribuição do xvidcap. Paraisso, adicione o parâmetro --with-forced-embedded-ffmpeg ao comando ./confi-

gure, para criar um xvidcap com ffmpegembutido (embedded). Uma segundaopção é mudar para o subdiretórioffmpeg antes de compilar o xvidcap.Entre com ./configure; make; su -c makeinstall nesse diretório para criar o codifi-cador ffmpeg e o player ffplay e depoisdigite make install para instalar essasferramentas em /usr/local/bin. A vanta-gem desse segundo procedimento é queele permite utilizar o ffmpeg e o ffplayindependentemente do xvidcap, o que aversão “embutida” não possibilita.

A opção --with-gtk2 ./configure é tam-bém interessante se você mesmo estivercompilando o programa, já que ele criaum programa chamado gvidcap. Dife-rente do original, o gvidcap tem umamoderna interface baseada na bibliotecaGtk 2 que combina perfeitamente com aatual área de trabalho do Gnome.

O ScriptPara iniciar a nova ferramenta instaladano passo anterior, digite um dos coman-dos abaixo:

xvidcap &gvidcap &

Gravar os passos de programas daárea de trabalho para fins dedemonstração ou treinamento

nunca foi uma tarefa fácil. Mesmo quedúzias de programas estejam compe-tindo pela atenção de usuários que pro-duzem documentação, nenhum deles éde fato muito bom com imagens. Descu-bra o xvidcap [1] escrito por RascaGmelch. O programa, mantido e desen-volvido por Karl H. Beckers, foi feito namedida para criar demonstrações deações na tela. Pode criar imagens ouarquivos MPEG, definíveis pelo usuário,da área de trabalho, sendo assim perfei-tamente adequado para mostrar o cami-nho através de estruturas de menu ecaixas de diálogo.

As Novas Ferramentas doDiretorAntes de dar seus primeiros passos comoum diretor de filmes, você obviamenteprecisa instalar o programa. Isso é bas-tante fácil para usuários cuja distribuiçãoé compatível com os pacotes RPM ouDebian da homepage do xvidcap. O RPMfornecido pelo desenvolvedor do pro-grama roda no Suse Linux 9.0 e Red Hat9.0, entre outros. Há dois pacotes para oDebian: um para a versão atual (Woody)e outro para a versão de teste, maisconhecida como Sarge.

Usuários de outras distribuições preci-sarão compilar eles mesmos o xvidcap.Isso quer dizer que você deve ter em seusistema os pacotes de desenvolvimento

Às vezes, pode ser um tanto complicado

descrever as funções de um aplicativo

apenas com palavras. Um screenshot

pode ajudar, mas se você precisa de mais

do que uma figura estática, o xvidcap

pode ser a resposta.

POR ANDREA MÜLLER

Figura 1:A interface tradicional do xvidcap.

Figura 2: A versão Gtk 2 tem uma aparência maismoderna que o original.

Capture vídeos em seu desktop

É hora do show!

084-086_xvidCap.qxd 9/21/04 11:31 PM Page 84

Page 85: Linux Magazine BR 2

LINUX USERXVidCap

85Setembro 2004www.linuxmagazine.com.br

O primeiro comando inicia a interfacebaseada em Motif, e o segundo a ba-seada em Gtk 2, mais “moderna”. Os ele-mentos de controle para o xvidcap (verFigura 1) e o gvidcap (ver Figura 2) sãoorganizados exatamente da mesmaforma. Isso traz uma vantagem e umadesvantagem. A versão original pareceum pouco tediosa, mas certamente émais estável e muito mais configuráveldo que a versão mais atual. Estabilidade,configurabilidade e o fato de que ambasas interfaces são similares, são o que nosfizeram decidir concentrar-nos no xvid-cap neste artigo.

Quando você inicia o programa, apa-rece na tela uma moldura vermelha dotamanho de um cartão de crédito paraindicar a área de gravação. A molduramove-se com a janela do programa. Paraevitar isso, você pode clicar no botão xpara separar a moldura do resto do apli-cativo. Como o tamanho padrão épequeno demais para qualquer coisa,mesmo para a menor das ferramentas, émelhor definir a área de trabalho quevocê quer gravar antes de fazer qualqueroutra coisa. Clique na mira da barra deferramentas para transformar o cursor domouse em uma mira. Você pode tambémsegurar o botão esquerdo do mouse earrastá-lo para definir uma área, ou cli-

car numa janela, se você estiver interes-sado apenas no conteúdo. Ao selecionaruma janela, o videoclipe não irá incluirsua barra de título.

Depois de selecionar o local, o pró-ximo passo é definir alguns parâmetros,como o formato da saída. [Alt+O] (ou[Ctrl+P] para o gvidcap) irá abrir a caixade configuração mostrada na Figura 3.

Antes de tudo, defina os valor de MaxFrames em 0, já que o xvidcap tem umarestrição padrão de 30 imagens. O valor0 remove esse limite, permitindo quevocê crie videoclipes de qualquer dura-ção. Use a caixa Frames per Second (FPS)para especificar o número de imagenspor segundo que o xvidcap irá capturar.O número padrão é 25 - não fique con-fuso pela maneira como ele é mostrado(25.000000). Se você precisa criar video-clipes em MPEG1 ou MPEG4, veja apágina de manual do xvidcap (option —fps) para os valores necessários de FPS.Por exemplo, 25 e 50 são velocidadesválidas para MPEG1, enquanto o MPEG4pode usar valores entre 7.5 e 30. Se vocêentrar com um valor inválido, seusvideoclipes vão rodar ou muito rápidoou muito devagar.

Coloque a codificação do vídeo nocampo codec (por exemplo, MPEG4). Opadrão é MPEG1, mas você pode mudá-lo para MPEG4 e ter uma qualidade degravação superior. A resolução dosvídeos MPEG1 que nós criamos era tãopequena que, às vezes, não conse-guíamos decifrar alguns menus.

Vídeo ou Imagem?Você precisa ainda digitar o nome doarquivo de saída na caixa File pattern. Sevocê deixar o nome padrão, frm-%04d.xwd, o xvidcap não irá criar umvídeo, mas, ao invés disso, irá gerararquivos no formato xwd (x windowdump) no diretório onde você iniciou o

programa. A cadeia de caracteres %04dadiciona um número serial ao nome doarquivo da imagem, criando os arquivosfrm-0000.xwd até frm-9999.xwd. O sinalde porcentagem mostra informações daformatação: 04d (d para decimal) especi-fica o número de dígitos. Se sua demons-tração tem mais de 10.000 imagens,simplesmente mude o valor de File pat-tern para frm-%05d.xwd, ou mesmo frm-%06d.xwd. Você pode modificar tanto onome do arquivo de base (frm) como oformato de saída. O xvidcap tambémpode criar arquivos JPEG ou PNG. Ima-gens isoladas são muito úteis se vocêprecisa editar o resultado final ou se estátentando obter um screenshot complexo,como uma mensagem de erro que apa-rece em sua tela e desaparece, imediata-mente, que programas como o Ksnapshotnão conseguem capturar.

Para criar um vídeo diretamente, mudea entrada em File pattern para qualquernome de arquivo usando mpeg comoextensão, por exemplo program-demo.mpeg. Para evitar ter de modificaras opções toda vez que você usa o pro-grama, clique em Save. Isso diz ao xvid-cap para guardar suas modificações noarquivo .xvidcap.scf dentro do seu dire-tório pessoal. O companheiro em Gtk 2do xvidcap, o gvidcap, lê o mesmoarquivo. Em outras palavras, qualquermudança que você fizer em um pro-grama irá imediatamente afetar o outro.Apague o ~/.xvidcap.scf para recuperaras configurações padrão do programa.

Tomada Um, Ação!Clique no botão com o ponto vermelhopara começar a gravar a área de trabalhodentro da moldura vermelha. Depois demostrar os aspectos do software quevocê quer, clique no botão com o qua-drado preto para parar de gravar. Vocêpode usar um player como o MPlayer

MPEG: Abreviação de Motion Picture ExpertGroup. Grupo que engloba empresas e univer-sidades e padronizou técnicas de compressãopara formatos de vídeo. A codificação MPEGtenta mostrar o máximo possível de segmen-tos de imagem ressaltando como elas se dife-rem da imagem anterior, e permite criararquivos de menor tamanho. Há várias ver-sões do formato MPEG, como MPEG-1 (VCD),MPEG-2 (DVD), MPEG-4(DVD) e MPEG-4 Parte10 (ou H.264/AVC, para dispositivos móveis).

GTK 2::“The Gimp Toolkit”(Conjunto de Ferra-mentas do Gimp), versão 2. Esta biblioteca grá-fica fornece aos desenvolvedores ferramentasprontas para a criação de interfaces gráficas,como botões, barras de rolagem, caixas de diá-logo e campos de entrada. Além do Gnome,XFCE e muitos outros softwares, o Gimp 2também baseado na GTK 2. Sua principal con-corrente é a Qt (pronuncia-se “qiutie”, danorueguesa TrollTech, usada no ambiente detrabalho KDE.

ImageMagick: Coleção de dez ferramentas demanipulação de imagens. A maior parte des-sas ferramentas é baseada em linha decomando, tornando o ImageMagick perfeitopara integração em Shell Scripts.~/.Xdefaults: Arquivo onde os usuários defi-nem as preferências para programas cominterface gráfica, como a cor de fundo ou afonte. Os programas mais recentes do KDE edo Gnome ignoram as mudanças feitas em~/.Xdefaults.

GLOSSÁRIO

Figura 3: Use esse diálogo para especificar o for-mato de saída e o nome do arquivo de saída.

084-086_xvidCap.qxd 9/21/04 11:31 PM Page 85

Page 86: Linux Magazine BR 2

descobrir que programa deve ser usadopara essa tarefa. É aqui que os padrõesdos programas gráficos ficam armazena-dos. O gvidcap não honra o ~/.Xde-faults, então o comando de conversão sófunciona para o xvidcap. Vamos fazer deconta que você tem uma coleção de ima-gens no formato PNG, com os nomesbaseados em uma cadeia de caracterescomo pic%04d.png e quer usar o ffmpegpara converter essas imagens em umvideoclipe MPEG1. Adione a seguintelinha ao arquivo ~/.Xdefaults:

xvidcap*mkVideoCommand:ffmpeg U

-i %s video.mpeg

Ela diz ao xvidcap para chamar o ffmpegquando você seleciona o comando MakeVideo. Para que isso funcione, você deveusar o ffmpeg propriamente dito, não épossível usar a versão embutida no xvid-cap. O xvidcap substitui a cadeia decaracteres %s pelo padrão de nome usa-dos nas imagens individuais, em nossoexemplo pic%04d.png. Como o ffmpegreconhece essa nomenclatura, cria arqui-vos seqüenciais chamados pic0000.png,pic0001.png e salva o arquivo de saída,video.mpeg, sob o diretório atual.

Há uma armadilha ao utilizar o ffmpegpara gerar um vídeo a partir de arquivosde imagens individuais. O codificadornão sabe lidar com os arquivos xwd queo xvidcap cria como padrão. O ffmpeg

utiliza os seguintes formatos de imagem:pnm, pam, pgmyuv, yuv, png, jpeg, e gif.O formato PNG é uma boa escolha aocapturar screenshots com o xvidcap.Para selecioná-lo, informe a extensão doarquivo como .PNG no item File patternno menu de opções do xvidcap.

O caminho mais rápido para o sucessopara diretores amadores é dizer ao xvid-cap para criar uma saída de vídeo e dei-xar o processamento de imagens in-dividuais para usuários que estão insa-tisfeitos com videoclipes medianos equerem modificar o material bruto antesde gerar o videoclipe. ■

(veja Figura 4) para exibir sua demons-tração para o público. Para simplificar ascoisas, você pode optar por usar a linhade comando de execução de vídeo ffplayque acompanha o ffmpeg. O seguintecomando inicia a ferramenta

ffplay videodemo.mpeg

Pressionar [q] encerra a apresentação.Depois de criar uma série de imagens,

você pode clicar nos botões com as setaspara percorrer as imagens individual-mente. Clique no botão com a imagemde um lápis, à direita para abrir a ima-gem atual no Display, o visualizador deimagens do pacote ImageMagick. Vocêpode então clicar na janela da imagempara abrir um menu com uma série defunções de manipulação de imagem(veja Figura 5) como mudanças de cor etamanho (Enhance), rotação (Transform)e uma série de efeitos (F/X).

O botão com o desenho da tira defilme chama-se animate, outra ferra-menta da coleção do ImageMagick.Como sugere o nome, o animate cria eexecuta uma animação feita com osarquivos das imagens individuais. Eviteusar essa opção com um grupo de maisde 400 imagens. Fornecer muito materialao animate irá derrubar até mesmo ossistemas mais poderosos.

De Imagens a VideoclipesO File g Make Video converte suas ima-gens em um videoclipe. O xvidcap exa-mina o arquivo ~/.Xdefaults para

XVidCapLINUX USER

86 Setembro 2004 www.linuxmagazine.com.br

[1] Página oficial do xvidcap:http://sourceforge.net/projects/xvidcap

[2] Projeto ffmpeg:http://ffmpeg.sourceforge.net/

INFORMAÇÕES

Figura 4: O MPlayer executando um vídeo criado com o xvidcap sobre leitores de e-mail.

Figura 5: o xvidcap usa o utilitário Display paraabrir imagens individuais. Ele tem uma série defunções para manipulação de imagens, como omenu Enhance, com opções para modificar o bri-lho, valores de gama e saturação.

Após quase dois anoscomo jornalista inde-pendente, AndreaMueller agora tra-balha como editorapara a Linux NewMedia AG.Quando não está lidando com artigosou empacotando software para a áreade downloads da revista EasyLinux, lagosta de ir além do Linux, e se involvecom outros sistemas operacionais,como o QNX, BeOS and NetBSD.

SOBR

E O

AUT

OR

084-086_xvidCap.qxd 9/21/04 11:31 PM Page 86

Page 87: Linux Magazine BR 2

LINUX USERPapo de Botequim

87Setembro 2004www.linuxmagazine.com.br

$ grep franklin /etc/passwd

Pesquisando em vários arquivos:

$ grep grep *.sh

Pesquisando na saída de um comando:

$ who | grep carvalho

No 1º exemplo, procurei a palavrafranklin em qualquer lugar do arquivo/etc/passwd. Se quisesse procurar umnome de usuário, isto é, somente no iní-cio dos registros desse arquivo, poderiadigitar $ grep ‘^franklin’ /etc/passwd.

“E para que servem o circunflexo e osapóstrofos?”, você vai me perguntar. Setivesse lido os artigos que mencionei,saberia que o circunflexo serve para limi-tar a pesquisa ao início de cada linha eos apóstrofos servem para o Shell nãointerpretar esse circunflexo, deixando-opassar incólume para o comando grep.

No 2º exemplo mandei listar todas as

linhas que usavam a palavra grep, emtodos os arquivos terminados em .sh.Como uso essa extensão para definirmeus arquivos com programas em Shell,malandramente, o que fiz foi listar as lin-has dos programas que poderia usarcomo exemplo do comando grep.

Olha que legal! O grep aceita comoentrada a saída de outro comando, redi-recionado por um pipe (isso é muito

comum em Shell e é um tremendoacelerador da execução de coman-dos). Dessa forma, no 3° exemplo,o comando who listou as pessoas“logadas” na mesma máquina quevocê (não se esqueça jamais: oLinux é multiusuário) e o grep foiusado para verificar se o Carvalho

estava trabalhando ou “coçando”.O grep é um comando muito con-

hecido, pois é usado com muita fre-qüência. O que muitas pessoas não

sabem é que existem três comandos nafamília grep: grep, egrep e fgrep. A princi-pais diferenças entre os 3 são:• grep - Pode ou não usar expressões

regulares simples, porém no caso denão usá-las, o fgrep é melhor, por sermais rápido.

• egrep (“e” de extended, estendido) - Émuito poderoso no uso de expressõesregulares. Por ser o mais poderoso dostrês, só deve ser usado quando fornecessária a elaboração de umaexpressão regular não aceita pelo grep.

• fgrep (“f” de fast, rápido) - Como onome diz, é o ligeirinho da família,executando o serviço de forma muitoveloz (por vezes é cerca de 30% maisrápido que o grep e 50% mais que oegrep), porém não permite o uso deexpressões regulares na pesquisa.

–Agora que você já conhece as difer-enças entre os membros da família, mediga: o que você acha dos três exemplosque eu dei antes das explicações?– Achei que o fgrep resolveria o teu prob-

lema mais rapidamente que o grep.– Perfeito! Tô vendo que você está

atento, entendendo tudo que estou teexplicando! Vamos ver mais exemplos

Garçom! Traz um “chops” e dois“pastel”. O meu amigo hoje nãovai beber porque está finalmente

sendo apresentado a um verdadeiro sis-tema operacional, e ainda tem muitacoisa a aprender!– E então, amigo, tá entendendo

tudo que te expliquei até agora?– Entendendo eu tô, mas não vi

nada prático nisso…– Calma rapaz, o que te falei até

agora serve como base ao que háde vir daqui pra frente. Vamos usaressas ferramentas que vimos paramontar programas estruturados. Vocêverá porque até na TV já teve pro-grama chamado “O Shell é o Limite”.Para começar vamos falar dos coman-dos da família grep

– Grep? Não conheço nenhum termo eminglês com este nome…

– É claro, grep é um acrônimo (sigla)para Global Regular Expression Print,que usa expressões regulares parapesquisar a ocorrência de cadeias decaracteres na entrada definida.Por falar em expressões regulares (ou

regexp), o Aurélio Marinho Jargas es-creveu dois artigos [1 e 2] imperdíveispara a Revista do Linux sobre esseassunto e também publicou um livro [3]pela Editora Novatec. Acho bom você leresses artigos, eles vão te ajudar no queestá para vir.

Eu fico com grep,você com gripeEsse negócio de gripe é brincadeira, sóum pretexto para pedir umas caipirinhas.Eu te falei que o grep procura cadeias decaracteres dentro de uma entrada defi-nida, mas o que vem a ser uma “entradadefinida”? Bem, existem várias formasde definir a entrada do comando grep.Veja só. Para pesquisar em um arquivo:

Nossos personagens voltam à mesa do bar para discutir expressões regulares e

colocar a “mão na massa” pela primeira vez, construindo um aplicativo simples

para catalogar uma coleção de CDs. POR JÚLIO CÉSAR NEVES

Curso de Shell Script

Papo de Botequim - Parte II

087-091_papo_botequim.qxd 9/21/04 11:36 PM Page 87

Page 88: Linux Magazine BR 2

Papo de BotequimLINUX USER

88 Setembro 2004 www.linuxmagazine.com.br

para clarear de vez as diferenças deuso entre os membros da família.Eu sei que em um arquivo qualquer

existe um texto falando sobre Linux, sónão tenho certeza se está escrito com Lmaiúsculo ou minúsculo. Posso fazeruma busca de duas formas:

egrep (Linux | linux) arquivo.txt

ou então:

grep [Ll]inux arquivo.txt

No primeiro caso, a expressão regularcomplexa (Linux | linux) usa os parênte-ses para agrupar as opções e a barra ver-tical (|) é usada como um “ou” (or, eminglês) lógico, isto é, estou procurandoLinux ou linux.

No segundo, a expressão regular[Ll]inux significa: começado por L ou lseguido de inux. Como esta é umaexpressão simples, o grep consegueresolvê-la, por isso é melhor usar asegunda forma, já que o egrep tornaria apesquisa mais lenta.

Outro exemplo. Para listar todos ossubdiretórios do diretório corrente, bastausar o comando $ ls -l | grep ‘^d’. Veja oresultado no Quadro 1.

No exemplo, o circunflexo (^) serviupara limitar a pesquisa à primeiraposição da saída do ls longo (parâmetro

-l). Os apóstrofos foram usados para oShell não “ver” o circunflexo. Vamos vermais um. Veja na Tabela 1 as quatroprimeiras posições possíveis da saída deum ls -l em um arquivo comum (não édiretório, nem link, nem …).

Para descobrir todos os arquivos exe-cutáveis em um determinado diretórioeu poderia fazer:

$ ls -la | egrep ‘^-..(x|s)’

novamente usamos o circunflexo paralimitar a pesquisa ao início de cadalinha, ou seja, listamos as linhas quecomeçam por um traço (-), seguido dequalquer coisa (o ponto), novamenteseguido de qualquer coisa, e por fim umx ou um s. Obteríamos o mesmo resul-tado se usássemos o comando:

$ ls -la | grep ‘^-..[xs]’

e além disso, agilizaríamos a pesquisa.

A “CDteca”Vamos começar a desenvolver progra-mas! Creio que a montagem de umbanco de dados de músicas é bacanapara efeito didático (e útil nestes temposde downloads de arquivos MP3 equeimadores de CDs). Não se esqueçaque, da mesma forma que vamos desen-volver um monte de programas paraorganizar os seus CDs de música, compequenas adaptações você pode fazer omesmo para organizar os CDs de soft-ware que vêm com a Linux Magazine eoutros que você compra ou queima, edisponibilizar esse banco de softwarepara todos os que trabalham com você(o Linux é multiusuário, e como tal deve

ser explorado).– Péra aí! De onde eu vou receber os

dados dos CDs?– Vou mostrar como o programa pode

receber parâmetros de quem o estiverexecutando e, em breve, ensinarei a leros dados da tela ou de um arquivo.

Passando parâmetrosVeja abaixo a estrutura do arquivo con-tendo a lista das músicas:

nomedoálbum^intérprete1~nomeUdamúsica1:...:intérpreten~nomeUdamúsican

Isto é, o nome do álbum será separadopor um circunflexo do resto do registro,formado por diversos grupos compostospelo intérprete de cada música do CD e amúsica interpretada. Estes grupos sãoseparados entre si por dois pontos (:) e,internamente, o intérprete será separadopor um til (~) do nome da música.

Quero escrever um programa chamadomusinc, que incluirá registros no meuarquivo músicas. Passarei cada álbumcomo parâmetro para o programa:

$ musinc “álbum^interprete~Umusica:interprete~musica:...”

Desta forma, musinc estará recebendo osdados de cada álbum como se fosse umavariável. A única diferença entre umparâmetro recebido e uma variável é queos primeiros recebem nomes numéricos(o que quis dizer é que seus nomes sãoformados somente por um algarismo,isto é, $1, $2, $3, …, $9). Vamos, fazermais alguns testes:

$ cat teste#!/bin/bash#Teste de passagem de parametrosecho “1o. parm -> $1”echo “2o. parm -> $2”echo “3o. parm -> $3”

Agora vamos rodar esse programinha:

$ teste passando parametros para Utestarbash: teste: cannot execute

Ops! Esqueci-me de tornar o script exe-cutável. Vou fazer isso e testar nova-mente o programa:

$ ls -l | grep ‘^d’drwxr-xr-x 3 root root 4096 Dec 18 2000 docdrwxr-xr-x 11 root root 4096 Jul 13 18:58 freecivdrwxr-xr-x 3 root root 4096 Oct 17 2000 gimpdrwxr-xr-x 3 root root 4096 Aug 8 2000 gnomedrwxr-xr-x 2 root root 4096 Aug 8 2000 idldrwxrwxr-x 14 root root 4096 Jul 13 18:58 localedrwxrwxr-x 12 root root 4096 Jan 14 2000 lyxdrwxrwxr-x 3 root root 4096 Jan 17 2000 pixmapsdrwxr-xr-x 3 root root 4096 Jul 2 20:30 scribusdrwxrwxr-x 3 root root 4096 Jan 17 2000 soundsdrwxr-xr-x 3 root root 4096 Dec 18 2000 xinedrwxr-xr-x 3 root root 4096 Jun 19 2000 xplns

Quadro 1 - Listando subdiretórios

Posição Valores possíveis

1ª -2ª r ou -3ª w ou -4ª x, s(suid) ou -

Tabela 1

087-091_papo_botequim.qxd 9/21/04 11:36 PM Page 88

Page 89: Linux Magazine BR 2

LINUX USERPapo de Botequim

89Setembro 2004www.linuxmagazine.com.br

Execute o programa:

$ teste passando parametros para testarO programa teste recebeu 4 U

parametros1o. parm -> passando2o. parm -> parametros3o. parm -> paraPara listar todos de uma U

“tacada” eu faco passando U

parametros para testar

Repare que antes das aspas usei umabarra invertida, para escondê-las dainterpretação do Shell (se não usasse ascontrabarras as aspas não apareceriam).

Como disse, os parâmetros recebemnúmeros de 1 a 9, mas isso não significaque não posso usar mais de noveparâmetros. Significa que só possoendereçar nove. Vamos testar isso:

$ cat teste#!/bin/bash# Programa para testar passagem Ude parametros (3a. Versao)echo O programa $0 recebeu $# Uparametrosecho “11o. parm -> $11”shiftecho “2o. parm -> $1”shift 2echo “4o. parm -> $1”

Execute o programa:

$ teste passando parametros para UtestarO programa teste recebeu 4 Uparametros que são:11o. parm -> passando12o. parm -> parametros4o. parm -> testar

Duas coisas muito interessantes aconte-ceram neste script. Para mostrar que osnomes dos parâmetros variam de $1 a $9digitei echo $11 e o que aconteceu? OShell interpretou como sendo $1 seguidodo algarismo 1 e listou passando1;

O comando shift, cuja sintaxe é shift n,podendo o n assumir qualquer valornumérico, despreza os n primeirosparâmetros, tornando o parâmetro deordem n+1.

Bem, agora que você já sabe sobrepassagem de parâmetros, vamos voltar ànossa “cdteca” para fazer o script de

inclusão de CDs no meu banco chamadomusicas. O programa é muito simples(como tudo em Shell). Veja a Listagem 1.

O script é simples e funcional; limito-me a anexar ao fim do arquivo musicas oparâmetro recebido. Vamos cadastrar 3álbuns para ver se funciona (para nãoficar “enchendo lingüiça,” suponho queem cada CD só existem duas músicas):

$ musinc “album3^Artista5U~Musica5:Artista6~Musica5”$ musinc “album1^Artista1U~Musica1:Artista2~Musica2”$ musinc “album 2^Artista3U~Musica3:Artista4~Musica4”

Listando o conteúdo do arquivo musicas:

$ cat musicasalbum3^Artista5~Musica5:Artista6U~Musica6album1^Artista1~Musica1:Artista2U~Musica2album2^Artista3~Musica3:Artista4U~Musica4

Podia ter ficado melhor. Os álbuns estãofora de ordem, dificultando a pesquisa.Vamos alterar nosso script e depois testá-lo novamente. Veja a listagem 2. Sim-plesmente inseri uma linha que classificao arquivo musicas, redirecionando asaída para ele mesmo (para isso serve aopção -o), após cada álbum ser anexado.

$ cat musicasalbum1^Artista1~Musica1:Artista2U~Musica2albu2^Artista3~Musica3:Artista4U~Musica4album3^Artista5~Musica5:Artista6U~Musica6

Oba! Agora o programa está legal equase funcional. Ficará muito melhor emuma nova versão, que desenvolveremosapós aprender a adquirir os dados da telae formatar a entrada.

$ chmod 755 teste$ teste passando parametros para Utestar1o. parm -> passando2o. parm -> parametros3o. parm -> para

Repare que a palavra testar, que seria oquarto parâmetro, não foi listada. Issoocorreu porque o programa teste só listaos três primeiros parâmetros recebidos.Vamos executá-lo de outra forma:

$ teste “passando parametros” U

para testar1o. parm -> passando parametros2o. parm -> para3o. parm -> testar

As aspas não deixaram o Shell ver oespaço em branco entre as duasprimeiras palavras, e elas foram consid-eradas como um único parâmetro. Efalando em passagem de parâmetros,uma dica: veja na Tabela 2 algumas var-iáveis especiais. Vamos alterar o pro-grama teste para usar as novas variáveis:

$ cat teste#!/bin/bash# Programa para testar passagem U

de parametros (2a. Versao)echo O programa $0 recebeu $# U

parametrosecho “1o. parm -> $1”echo “2o. parm -> $2”echo “3o. parm -> $3”echo Para listar todos de uma U

\”tacada\” eu faco $*

Variável Significado

$0 Contém o nome do programa$# Contém a quantidade de

parâmetros passados$* Contém o conjunto de todos os

parâmetros (muito parecido com $@)

Tabela 2: Variáveis especiais$ cat musinc#!/bin/bash# Cadastra CDs (versao 2)#echo $1 >> musicassort -o musicas musicas

Listagem 2

$ cat musinc#!/bin/bash# Cadastra CDs (versao 1)#echo $1 >> musicas

Listagem 1: Incluindo CDsna “CDTeca”

087-091_papo_botequim.qxd 9/21/04 11:36 PM Page 89

Page 90: Linux Magazine BR 2

mando. Estamos então prontos paradesenvolver o script para remover CDsempenados da sua “CDteca”. Veja ocódigo da Listagem 5.

Na primeira linha mandei para/tmp/mus$$ o arquivo musicas, sem osregistros que atendessem a consulta feitapelo comando grep. Em seguida, movi/tmp/mus$$ por cima do antigo musicas.Usei o arquivo /tmp/mus$$ como arqui-vo de trabalho porque, como já haviacitado no artigo anterior, o $$ contém oPID (identificação do processo) e, dessaforma, cada um que editar o arquivomusicas o fará em um arquivo de tra-balho diferente, evitando colisões.

Os programas que fizemos até aquiainda são muito simples, devido à faltade ferramentas que ainda temos. Mas ébom praticar os exemplos dados porque,eu prometo, chegaremos a desenvolverum sistema bacana para controle dosseus CDs. Na próxima vez que nosencontrarmos, vou te ensinar como fun-cionam os comandos condicionais eaprimoraremos mais um pouco essesscripts. Por hoje chega! Já falei demais eestou de goela seca! Garçom! Mais umsem colarinho! ■

Papo de BotequimLINUX USER

90 Setembro 2004 www.linuxmagazine.com.br

Julio Cezar Neves éAnalista de Suporte deSistemas desde 1969 etrabalha com Unixdesde 1980, quandofez parte da equipeque desenvolveu oSOX, um sistemaoperacional similar ao Unix, produzidopela Cobra Computadores.SO

BRE

OAU

TOR

Ficar listando arquivos com ocomando cat não está com nada, vamosfazer um programa chamado muslistpara listar um álbum, cujo nome serápassado como parâmetro. Veja o códigona Listagem 3:

Vamos executá-lo, procurando peloalbum 2. Como já vimos antes, para pas-sar a string album 2 é necessário pro-tegê-la da interpretação do Shell, paraque ele não a interprete como doisparâmetros. Exemplo:

$ muslist “album 2”grep: can’t open 2musicas: album1^Artista1~Musica1U:Artista2~Musica2musicas: album2^Artista3~Musica3U:Artista4~Musica4musicas:album3^Artista5~Musica5U:Artista6~Musica6

Que lambança! Onde está o erro? Eu tiveo cuidado de colocar o parâmetro pas-sado entre aspas para o Shell não odividir em dois! É, mas repare como ogrep está sendo executado:

grep $1 musicas

Mesmo colocando álbum 2 entre aspas,para que fosse encarado como um únicoparâmetro, quando o $1 foi passado peloShell para o comando grep, transformou-se em dois argumentos. Dessa forma, oconteúdo da linha que o grep executoufoi o seguinte:

grep album 2 musicas

Como a sintaxe do grep é:

grep <cadeia de caracteres> U[arq1, arq2, ..., arqn]

O grep entendeu que deveria procurar acadeia de caracteres album nos arquivos2 e musicas. Como o arquivo 2 nãoexiste, grep gerou o erro e, por encontrara palavra album em todos os registros demusicas, listou a todos.

É melhor ignorarmos maiúsculas eminúsculas na pesquisa. Resolveremosos dois problemas com a Listagem 4.

Nesse caso, usamos a opção -i do grepque, como já vimos, serve para ignorarmaiúsculas e minúsculas, e colocamos o$1 entre aspas, para que o grep continu-asse a ver a cadeia de caracteres resul-tante da expansão da linha pelo Shellcomo um único argumento de pesquisa.

$ muslist “album 2”album2^Artista3~Musica3:Artista4U~Musica4

Agora repare que o grep localiza acadeia pesquisada em qualquer lugar doregistro; então, da forma que estamosfazendo, podemos pesquisar por álbum,por música, por intérprete e mais.Quando conhecermos os comandoscondicionais, montaremos uma novaversão de muslist que permitirá especi-ficar por qual campo pesquisar.

Ah! Em um dia de verão você foi àpraia, esqueceu os CDs no carro, aquele“solzinho” de 40 graus empenou seudisco favorito e agora você precisa deuma ferramenta para removê-lo dobanco de dados? Não tem problema,vamos desenvolver um script chamadomusexc, para excluir estes CDs.

Antes de desenvolver o “bacalho”,quero te apresentar a uma opção bas-tante útil da família de comandos grep. Éa opção -v, que quando usada lista todosos registros da entrada, exceto o(s) local-izado(s) pelo comando. Exemplos:

$ grep -v “album 2” musicasalbum1^Artista1~Musica1:Artista2U~Musica2album3^Artista5~Musica5:Artista6U~Musica6

Conforme expliquei antes, o grep doexemplo listou todos os registros demusicas exceto o referente a album 2,porque atendia ao argumento do co-

$ cat muslist#!/bin/bash# Consulta CDs (versao 1)#grep $1 musicas

Listagem 3 - muslist

$ cat muslist#!/bin/bash# Consulta CDs (versao 2)#grep -i “$1” musicas

Listagem 4muslist melhorado

$ cat musexc#!/bin/bash# Exclui CDs (versao 1)#grep -v “$1” musicas > /tmp/mus$$mv -f /tmp/mus$$ musicas

Listagem 5 - musexc

[1] http://www.revistadolinux.com.br/ed/003/ferramentas.php3

[2] http://www.revistadolinux.com.br/ed/007/ereg.php3

[3] http://www.aurelio.net/er/livro/

INFORMAÇÕES

087-091_papo_botequim.qxd 9/21/04 11:36 PM Page 90

Page 91: Linux Magazine BR 2

087-091_papo_botequim.qxd 9/21/04 11:37 PM Page 91

Page 92: Linux Magazine BR 2

via e-mail. O endereço está no site.É comum ver pessoas que ingressam

em grupos de usuários para aprendermais e se tornam membros da comu-nidade. Se observarmos quem desem-penha algum papel em projetos deSoftware Livre, vamos notar que agrande maioria iniciou seus trabalhos emgrupos de usuários. Enfim, SoftwareLivre é colaboração, é liberdade de con-hecimento e, quanto mais praticarmosisto, mais temos a ganhar.

Existem grupos de usuários sobre osmais variados temas, alguns bem especí-ficos, como o projeto PythonBrasil [4],para os amantes da linguagem de progra-mação Python. As mulheres também seorganizaram para fundar o Projeto Soft-ware Livre Mulheres [5], onde as inte-grantes se reúnem para discutir os maisvariados assuntos relacionados ao Soft-ware Livre junto com todo o charmefeminino. É uma forma encontrada pelasfundadoras do grupo para incentivar asmulheres a participar mais ativamentede projetos de Software Livre. Um movi-mento ainda mais antigo é o Linux ChixBrasil. Mulheres, seja bem-vindas!

Open Source e Software LivreÉ muito comum as pessoas associaremos termos Open Source e Software Livrecomo sendo a mesma coisa. A utilizaçãode um nome ou termo diferente estádiretamente relacionada a uma idéiadiferente, exatamente o que acontececom os dois movimentos.

Em 1998 alguns participantes dacomunidade do Software Livrecomeçaram a utilizar o termo OpenSource ao invés de Software Livre paradescrever o que faziam. Naturalmente otermo Open Source passou a ser vistocomo uma idéia diferente, uma filosofia

diferente. Apesar das diferenças ideológi-cas, os dois grupos trabalham em con-junto em muitos projetos essenciais.

A principal diferença entre os doismovimentos está ligada a valores, namaneira como enxergam o mundo. Parao movimento Open Source, o fato de umsoftware ser aberto é uma questão depraticidade, não uma questão ética. Parao Software Livre, essa é uma questãofundamentalmente social. Apesar deserem movimentos diferentes, os gruposnão são inimigos; apenas pensam deforma diferente. O inimigo nesse caso é osoftware proprietário.

Outro fator que provavelmente con-tribuiu para a criação do movimentoOpen Source foi a ambigüidade existenteno idioma inglês em relação ao termo“Free Software”. O termo “free” pode serinterpretado tanto como “grátis”quantocomo “livre”, como na frase “liberdadede conhecimento”. ■

Omovimento do Software Livre sóganhou amplitude graças aosgrupos de usuários, entidades

compostas por indivíduos que se unemem torno de uma causa em comum, tro-cam informações, definem projetos emarcam encontros para atrair outrosinteressados na causa.

A Comunidade Sol [1], uma ONG deManaus/AM que tem como objetivofomentar projetos de Software Livre,uniu-se ao Debian-AM [2], grupo deusuários especializado na distribuiçãoDebian, para organizar o Dia D, encontroque reuniu cerca de 500 participantes,mais do que o esperado pela organiza-ção. O encontro foi composto porpalestras, um laboratório de instalação eoutras atividades. Entre os participantes,era possível encontrar desde pessoas quenunca utilizaram Software Livre atédesenvolvedores experientes.

A Comunidade Sol e o Debian-AM sãoexemplos de grupos regionais que ga-nharam o respeito do público de todas asidades e todos os níveis de envolvimentocom Software Livre, graças à competên-cia de seus organizadores. O mesmoocorre em todos os cantos do planeta.No site do Projeto GNU [3] você encon-trará links para os principais gruposseguem a filosofia do Software Livre.

Os grupos que ainda não estão listadosno site podem se cadastrar seguindo asinstruções na própria página. Vale lem-brar que o cadastro de grupos denomina-dos “Linux User Group” (Grupo deUsuários Linux), “LUG” (ou a varianteem português, GUL) ou similares não éaceito, pois os mantenedores do siteacreditam que a utilização dessa nomen-clatura causa confusão e não repassa osdevidos créditos ao Projeto GNU. Emcaso de dúvidas, basta entrar em contato

Planeta GNUCOMUNIDADE

92 Setembro 2004 www.linuxmagazine.com.br

Este mês vamos falar sobre os grupos de usuários e sua importância para a

comunidade. Discutiremos também o movimento Open Source e suas princi-

pais diferenças em relação ao movimento do Software Livre.

Trabalho em conjunto para o bem da comunidade

Unindo esforços

Christiano Anderson([email protected]) édesenvolvedorautônomo de SoftwareLivre, participa do Pro-jeto Software LivreBrasil (PSL-BR) e con-tribui com o ProjetoGNU. Sua principalmissão é difundir o software livre e suafilosofia, principalmente na educação.

SOBR

EO

AUTO

R

[1] http://www.comunidadesol.org

[2] http://www.debian-am.org

[3] http://www.gnu.org/gnu/gnu-user-groups.html

[4] http://www.pythonbrasil.com.br

[5] http://mulheres.softwarelivre.org

[6] http://www.linuxchix.org.br

INFORMAÇÕES

094-095_planetagnu.qxd 9/21/04 10:38 PM Page 92

Page 93: Linux Magazine BR 2

COMUNIDADEGuadec 2004

93Setembro 2004www.linuxmagazine.com.br

Houve muitas discussões sobre ques-tões legais, particularmente no terceirodia da conferência, quando a palestraprincipal foi a do Dr. Edgar Villanueva,que tinha muito a dizer sobre o valor dosoftware livre em nível mundial e aimportância de um compartilhamento deinformações verdadeiramente global. Aimportância de questões políticas elegais foi enfatizada pela Ministra dosTransportes e Comunicações da Noru-ega, que disse que os participantes deve-riam estar fazendo lobby junto a seusrepresentantes nacionais na CúpulaMundial da Sociedade de Informação.Nunca imaginara ouvir que era hora defazer lobby junto às Nações Unidas.

Durante a noites a conferência nãoparava. Não havia palestras, mas várioseventos haviam sido organizados no bar.A maioria das pessoas levou cerca demeia hora para descobrir o preço dasbebidas na Noruega, de forma que qual-quer cerveja que fosse de graça ou bembaratinha tornava-se imediatamentepopular. Mais grupos foram formados,mais pessoas eram apresentadas umas àsoutras e as conversas continuavam.

Algumas coisas me marcaram em par-ticular nessa GUADEC. Uma delas foi omaior alcance do evento, que contou nãosó com a presença de pessoas de todosos continentes, como também de partici-pantes de muitos projetos diferentes.Havia pessoas interessadas nas arquite-turas de som para o X; outras queestavam lá principalmente pelas dis-cussões sobre o Skolelinux; e haviausuários de Gimp (os “Gimpers”) sufi-cientes para a realização de uma outraconferência simultânea completa.

Para mim, uma das melhores coisasnessa GUADEC foi saber que há pessoasque utilizam Gnome e Software Livre

porque eles preenchem suas necessi-dades. São utilizados por grupos naÁfrica, porque é possível passar o soft-ware adiante e fazer cópias legalmente,sem se preocupar com licenças e pira-taria. São também utilizados por tantosgrupos distintos no setor público e noterceiro setor que, na sessão de encerra-mento, alguém mencionou que fariamais sentido se esses grupos trabalhas-sem juntos, ao invés de cada um criarsoluções próprias, geralmente poucodiferentes entre si.

O principal atrativo dessa “dupladinâmica” é que tanto o Gnome quantoo Software Livre estão disponíveis emmuitos idiomas diferentes; e se nãoexiste versão para determinado idioma,basta um único falante nativo (maisseria o ideal) para dar o pontapé inicial auma tradução. Essa conferência, mais doqualquer outra, foi um ótimo lembretede que não estamos mais trabalhandoem algo que um dia poderá ajudar amudar o mundo, mas sim em algo que jácomeçou a mudá-lo. ■

As pessoas começaram a aparecerno final de semana, mas a agi-tação começou de fato na manhã

de segunda-feira, 28 de junho, quandotodos chegaram para se inscrever, trocarcumprimentos e apresentar-se.

A sessão de boas-vindas contou comas presenças do prefeito de Kristiansande do vice-reitor da universidade, e foiseguida pela tradicional apresentação detodos os presentes: “Eu trabalho comSkolelinux”, “Eu traduzo o Gnome”, “Eutrabalho no Abiword”.

A lista vai longe. A GUADEC cresce acada ano, mas esta parece ter sido a maisinternacional até agora. Nas apresen-tações ficou claro que havia muitas pes-soas de projetos não relacionados aoGnome e que estavam ali para descobrircomo seus projetos e o Gnome poderiamajudar um ao outro.

Era impossível participar de todas aspalestras. Às vezes, havia três aconte-cendo ao mesmo tempo. Para muitaspessoas, grande parte da importância daconferência não estava nas palestras emsi, mas na chance de fazer contatos,encontrar pessoas que já conheciam ecom quem trabalhavam através da inter-net - e com quem finalmente poderiamconversar pessoalmente. Havia tambémas pessoas que nunca haviam se encon-trado - nesse caso o papo podia versarsobre qualquer coisa, desde quem fizeraa viagem mais desastrosa até umarepentina e brilhante idéia coletiva queexigia um pulinho imediato à sala decomputadores ou um laptop, a fim deexperimentar algum novo algoritmo.

Os principais anúncios feitos durante aGUADEC foram desde a liberação doHelix Player, da Real Networks, sob alicença GPL, até o lançamento do Mono1.0. Uma palestra sobre tecnologias detradução levantou a possibilidade detornar algumas ferramentas da SunMicrosystems disponíveis gratuitamentee, em uma pequena sessão sobre triagemde erros, debateu-se se o banco de dadosde testcases da Novell poderia ajudar oprojeto Gnome.

No final de junho de 2004 realizou-se, na Noruega, a quinta GUADEC. Cerca de

trezentas e cinqüenta pessoas se reuniram no campus do Agder University Col-

lege em Kristiansand. Como sempre, eu era uma delas. POR TELSA GWYNNE

Gnome User And Developer European Conference

Melhor do que nunca

[1] GUADEC 2004: http://2004.guadec.org/

[2] GUADEC 2003: http://2003.guadec.org/

INFORMAÇÕES

Figura 1: Os laboratórios estavam sempre lotados.

Paulino Michelazzo,cortesia

093-093_guadec.qxd 9/21/04 10:39 PM Page 93

Page 94: Linux Magazine BR 2

R$ 325.000,00. Mas como demonstrar aimportância dessa “economia” para osgestores e funcionários de um municípiocom uma excelente situação financeiracomo Rio das Ostras? Como argumentarcontra a cultura do “por que usarSofwares Livre se temos dinheiro paracomprar as licenças?”

Mas é exatamente a boa situaçãofinanceira que traz uma maior respons-abilidade. Quem tem poucos recursos dámaior valor a cada centavo, mas geral-mente quem tem muito dinheiroesbanja. Sob essa ótica, a compra daslicenças não se justificava, pois esse eraum gasto que poderia ser evitado, per-mitindo que os recursos fossem utiliza-dos em outras áreas. Decidiu-se entãoredirecionar o que foi economizado para

as seguintes ações: criação de um prove-dor de acesso à Internet, implantação deuma rede wireless e projetos de inclusãosocial digital.

Atualmente a Prefeitura de Rio dasOstras tem 538 computadores alugados,12 servidores de arquivos/autenticação,4 servidores web, 1 storage, 1 servidorDNS, 3 servidores de banco de dados, 1servidor de e-mail e 1 servidor para ogroupware. A economia em licenças foide aproximadamente R$ 1.200.000,00.

Provedor de InternetCom a finalidade de disponibilizar osserviços de internet para as unidadesadministrativas, escolas, unidades desaúde e unidades de atendimento social,a Prefeitura montou seu próprio prove-dor, totalmente baseado em SoftwareLivre, como o Apache, Sendmail, E-Groupware e vários outros.

Além disso, todos os sistemas criadospela equipe municipal de desenvolvi-mento utilizam a plataforma web (PHP ePostGreSQL) e têm o provedor comobase. Utilizando o PHP-Nuke, o provedorhospeda e mantém diversos portais deconteúdo (veja o quadro “Informações”,no final deste artigo).

Hoje o provedor atende aproximada-mente 600 contas de e-mail e todas asunidades administrativas, escolas, proje-tos e unidades sociais.

Rede WirelessA rede foi implementada com o objetivode promover a integração entre os diver-sos prédios que compõem a Prefeitura,servindo de meio de comunicação paraos serviços desenvolvidos, atendimentoaos funcionários e à comunidade e bus-cando sua inclusão social digital. Osprincipais fatores que levaram à escolhade uma rede wireless foram a facilidadede implementação, alta mobilidade, con-fiabilidade, maior alcance, alta veloci-dade e boa segurança no acesso àIntranet/Internet, correio eletrônico, sis-temas corporativos, telefonia (Voz sobreIP) e recursos compartilhados.

T udo começa em 2001, com a cri-ação de uma assessoria paracuidar de assuntos relacionados a

informática e tecnologia no município deRio das Ostras, a ASSIN (Assessoria deInformática), que elaborou o projeto“Público e Livre”, com o objetivo de efet-uar a migração da infraestrutura deinformática da cidade de uma plataformaproprietária para Software Livre.

Paralelamente a isso, iniciou-se oprocesso de locação de 188 computa-dores para atender às áreas administra-tiva, educacional e social da Prefeitura.Várias dessas máquinas seguiram paraseus destinos já com o Linux e todascom o conjunto de aplicativos deescritório StarOffice 5.2, gerando uma“economia” inicial de aproximadamente

Administração PúblicaCOMUNIDADE

94 Setembro 2004 www.linuxmagazine.com.br

O Software Livre não serve apenas para grandes empresas e desktops domésti-

cos. Graças a ele, a prefeitura de uma pequena cidade no interior do estado do

Rio de Janeiro pôde se modernizar e beneficiar a comunidade local com vários

projetos de inclusão social.

POR MAURICIO SOARES DOS ANJOS E MARCOS VINÍCIUS PECLY MARINI

Informática para todos

O pingüim e o rio

094-095_rio_das_ostras.qxd 9/21/04 10:41 PM Page 94

Page 95: Linux Magazine BR 2

Atualmente, a rede atende a váriassecretarias e departamentos, os telecen-tros comunitários, o campus da Universi-dade Federal Fluminense, diversasunidades de saúde e o gabinete doprefeito, entre outros locais.

Está em planejamento a expansão dosistema wireless, que irá integrar todasas unidades administrativas, escolasmunicipais, postos de saúde e unidadesde atendimento social, totalizando 80pontos de acesso, e que proporcionaráuma área de cobertura que abrangerátodo o município, inclusive a área rural,conforme solicitado pela própria comu-nidade no Orçamento Participativo.

Informática para TodosA Assessoria de Informática desenvolvediversas ações para levar a todos oscidadãos, especialmente os mais car-entes, acesso ao que há de mais rele-vante em tecnologias de informação eequipamentos, disponibilizando à popu-lação computadores conectados à Inter-net sob a orientação de monitores, bemcomo serviços de e-mail, buscando auniversalização da informática. Entre osvários projetos, podemos destacar:

Rio das Ostras em Ação, no qual aPrefeitura, em parceria com várias outrasentidades, desloca boa parte de suaestrutura para um dos bairros da cidade,levando consigo diversos serviços.Nesses eventos, a Assessoria de Infor-mática realiza cursos rápidos sobre edi-tores de texto, de imagens e acesso àinternet, promovendo a inclusão digital.• Inclusão Digital nos Bairros, desen-

volvido em parceria com as associ-ações de moradores. Cursos básicos deinformática são realizados em cadabairro em salas com dez computadoresconectados à Internet, sob a orien-tação de monitores e com materialdidático gratuito.

• Declaração de isentos e Recadastra-mento de CPF, com equipamentosdisponíveis em locais públicos paraque os cidadãos possam fazer suasdeclarações de isenção de imposto derenda, além da regularização de seusCPFs junto à Receita Federal.

• Domingo Alegre, em parceria com aSecretaria Municipal de Esporte eLazer. Computadores são instaladosnos bairros da cidade para uso das cri-anças que participam do evento.

• Semana da Amizade, em parceria coma Secretaria Municipal de Educação eos professores da rede municipal deensino. Dez computadores são levadosa uma escola, onde ficam à disposiçãodos alunos durante uma semana.

• Dia da Inclusão Digital comemoradoem março, quando colocamosquiosques multimídia com acesso àinternet em locais públicos.

• Nossa Casa, um centro permanente deinclusão social, em imóvel especifica-mente construído para esse fim. Emoutras palavras, um telecentro deúltima geração, que abriga ainda umauditório para palestras e cursos.

• Telecentro Um Bem Maior, um centrode inclusão social que atende menoresem situação de risco. Os cursos estãosendo expandidos para atender tam-bém os pais dos alunos.

• Telecentro, trabalho desenvolvido emparceria com a Secretaria Municipal deEsporte e Lazer, no estádio MunicipalJulieta Viana, que atende às criançasque participam das escolinhas deesportes e a comunidade local.

I Encontro Nacional deSL para MunicípiosA Assessoria de Informática daPrefeitura Municipal de Rio das Ostras ea APREMERJ - Associação de Prefeitosdos Munícipios do Estado do Rio deJaneiro realizaram, nos dias 23 e 24 deagosto, o I Encontro Nacional de Soft-ware Livre para Municípios, que tevecomo objetivo mostrar aos atuais efuturos gestores municipais a viabilidadee as vantagens da utilização do SoftwareLivre nas prefeituras.

O encontro, que reuniu particpantesde prefeituras tão distantes como Recife(Pernambuco), Rio Grande (Rio Grandedo Sul) e Campinas (São Paulo), junta-

mente com representantes de entidadescomo a ABRASOL (www.abrasol.org) e aCooperativa Solis, culminou com a cri-ação de um Consórcio de Municípiosvoltado especificamente para a dissemi-nação do uso do Software Livre nasadministrações municipais.

O Consórcio, que deverá centralizartodas as ações no âmbito das prefeituras,procurará atuar em parceria com a ini-ciativa privada e as entidades estaduais efederais, principalmente o ITI e o SER-PRO, que também estiveram presentesno encontro.

No segundo dia do evento, a prefeiturainaugurou finalmente as novas insta-lações do primeiro telecentro do municí-pio, no bairro Operário, construído juntoàs instalações do estádio municipal, oque resultará na integração entre ainclusão pelo desporto e pelo SoftwareLivre. O local conta com dez computa-dores de última geração com acesso àInternet, o que vai permitir aos usuáriosnavegar pela rede.

Além de funcionar como um “cybercafé”, o telecentro irá oferecer cursosgratuitos à população, como o de editorde texto, editor de desenhos, editor deapresentações, planilha eletrônica, Inter-net e, claro, Linux.

O horário de funcionamento do tele-centro será das 8:00 às 21:00 h, desegunda à sexta-feira. ■

COMUNIDADEAdministração Pública

95Setembro 2004www.linuxmagazine.com.br

[1] Público e Livre: http://livre.pmro.rj.gov.br

[2] PSL-RJ: http://www.pslrj.org.br

[3] AGITERJ: http://www.agiterj.org

[4] Encontro de Municípios:http://livre.pmro.rj.gov.br/encontro

[5] Consórcio de Municípios:http://livre.pmro.rj.gov.br/consorcio

INFORMAÇÕES

Figura 2: No Dia da Inclusão Digital, terminaismultimídia oferecem acesso à Internet.

Figura 1: No Domingo Alegre, tendas misturamcomputadores e brincadeiras infantis.

094-095_rio_das_ostras.qxd 9/21/04 10:41 PM Page 95

Page 96: Linux Magazine BR 2

96 Setembro 2004 www.linuxmagazine.com.br

Calendário de Eventos / Índice de AnunciantesLINUX MAGAZINE

Futurecom 2004

Data: 25 a 28 de OutubroLocal: Florianópolis, Santa Catarina

Website:www.futurecom.com.br

Calendário de EventosEvento Data Local Website2ª Semana de Software Livre da UERJ 10 de Outubro Rio de Janeiro, RJ www.2semana.linuerj.uerj.br2º Congresso Catarinense de Software Livre 08 de outubro Joinville,SC www.softwarelivresc.org.br2º CONISLI 05 e 06 de novembro São Paulo, SP www.conisli.org.brLatinoware 2004 08 a 12 de novembro Foz do Iguaçu, PR www.latinoware.pr.gov.brLinuxWorld Conference & Expo 2004 26 a 28 de novembro Frankfurt, Alemanha www.linuxworldexpo.deI Fórum Empresarial de TI 18 a 22 de Outubro Fernandópolis, SP www.fef.brFuturecom 2004 25 a 28 de Outubro Florianópolis, SC www.futurecom.com.br

Índice de AnunciantesAnunciante Site Página

Alternativa Linux www.alternativalinux.com.br 75Consist www.consist.com.br 99 (terceira capa)CD-ROM da Linux Magazine www.linuxmagazine.com.br/Subs 83FASP www.fasp.br 65Green Treinamento e Consultoria www.green.com.br 11Infomedia www.infomediatv.com.br 91iSolve www.isolve.com.br 53LinuxPress www.linuxpress.com.br 09Latinoware 2004 www.latinoware.pr.gov.br 55Mais Informática www.mav.com.br 69MySQL Brasil www.mysqlbrasil.com.br 45Oracle www.oracle.com.br 02 (contra capa)Semana do CPFP de Tecnologia da Informação forum.publicolivre.org.br 33Sun Microsystems www.sun.com.br 100 (quarta capa)

II CONISLI

Data: 05 a 06 de NovembroLocal: São Paulo, São PauloWebsite:www.conisli.org.br

Fórum Regional deSoftware Livre do ABCDData: 21 a 25 de SetembroLocal: Santo André, São Paulo

Website:forum.publicolivre.org.br

Eventos em Destaque

Escreva para a Linux Magazine

Estamos sempre à procura de novos arti-gos e autores. Se você acha que umassunto é importante, ou que precisa sermelhor explicado, fale conosco.

Precisamos de tutoriais, análises, estudosde caso e notícias. Se você é membro deum grupo de usuários, porque não nosconta sobre os eventos que estão sendoplanejados? Preferimos que os artigossejam enviados via e-mail, e screenshotssão sempre bem-vindos. Para facilitar ascoisas, mencione no assunto de sua men-sagem o tema do artigo.

Artigos têm em média 3.500 caracterespor página (contando os espaços), mas lis-tagens de código e imagens reduzem oespaço disponível para o texto. Se possí-vel, escreva páginas inteiras. Como esta-mos presentes em vários países, evite ouso de gírias e expressões regionais.

As imagens devem estar na maior resolu-ção possível. No caso de fotos digitais,recomendamos que elas sejam tiradascom uma câmera de 3 Megapixels e reso-lução igual ou superior a 1024x768 pixels.Prefira formatos como TIF e EPS.

Uma revista passa por muitos estágiosdurante sua produção, portanto algunsmeses podem se passar desde que seuartigo seja recebido até que a revistachegue às bancas. Portanto, nunca enviena última hora material ou notícias sobreencontros e eventos.

Envie suas colaborações para o endereç[email protected]. Eviteenviar mais de 4 MB em arquivos anexos.Caso o material para seu artigo ultrapas-se este limite, coloque-o em algum sitena internet e nos informe a URL.

096-097_service.qxd 9/22/04 7:06 PM Page 96

Page 97: Linux Magazine BR 2

97www.linuxmagazine.com.br Setembro 2004

LINUX MAGAZINEExpediente Editorial / Quadrinhos

Expediente EditorialEditores

Rafael Antonio Guido Peregrino da Silva:[email protected] Pereira Rigues:[email protected]

Centros de CompetênciaCentro de Competência em Software:

Patricia Jung, [email protected] de Competência em Hardware:

Mirko Dölle, [email protected] de Competência em Redes e Segurança:

Achim Leitner, [email protected] & Colaboradores

Alexandre Barbosa, Andrea Müller, Aurélio Marinho Jargas, Bruno Bellantuono, Carlos Morimoto, Carsten Wiese, Carsten Schnober, Charly Kühnast, Christiano Anderson, Daniel Trezub, Hans-Georg Esser, Jan Kleinert, JörgReitter, Júlio César Neves, Marc André Selig,Marcos Vinícius Pecly Marini, Mauricio Soaresdos Anjos, Mirko Dölle, Piter Punk, Rafael Peregrino da Silva, Rafael Pereira Rigues, StevenGoodwin, Sulamita Garcia, Telsa Gwynne, TimSchürmann, Thomas Wölfer, Zack Brown.

RevisãoHenrique César Ulbrich:[email protected] Vidili:[email protected]

Direção de ArteLuciano Hagge Dias:[email protected]

Design da CapaGisele Sarian:[email protected] Ballot:[email protected]: Montarq Serviceswww.montarq.com.br

Anúncios: www.linuxmagazine.com.br/AdvertiseBrasil

Unicial – União Comercial e Editora Ltda.A/c. Sérgio [email protected]./Fax: +55 (0)11 3051 3153Cel.: +55 (0)11 9935 1368

Todos os países (exceto Alemanha, Áustria e Suíça)Brian Osborn, [email protected] Tel.: +49 (0)6509 910 495Fax: +49 (0)6509 910 497

Alemanha, Áustria e SuíçaOsmund [email protected].: +49 (0)6335 9110 Fax: +49 (0)6335 7779

DiretoriaRafael Antonio Guido Peregrino da Silva,[email protected]

Linux MagazineAv. Engº. Luiz Carlos Berrini, 1500Conj. 103 – Brooklin Novo04571-000 – São Paulo – SP – BrasilTel.: +55 (0)11 3345 1002Fax: +55 (0)11 3345 1081Assinaturas: www.linuxmagazine.com.br/SubsPreço: (12 edições incluindo CD mensal): R$125,60Email: [email protected]ço Unitário: R$12,90

Na Internet:www.linuxmagazine.com.br – Brasilwww.linux-magazin.de – Alemanhawww.linux-magazine.com – Portal Mundialwww.linuxmagazine.com.au – Austráliawww.linux-magazine.ca – Canadáwww.linux-magazine.co.uk – Reino Unidowww.linux-magazine.pl – Polôniawww.linux-magazin.ro – Romênia

Apesar de todos os cuidados possíveis terem sido tomados durantea produção desta revista, a editora não é responável por eventuaisimprecisões nela contidas ou por conseqüências que advenham deseu uso. A utilização de qualquer material da revista bem como doCD-ROM incluso ocorre por conta e risco do leitor. O CD-ROM foitestado extensivamente e até onde pudemos verificar se encontralivre de qualquer vírus ou outro tipo de software de conteúdo mali-cioso, bem como de defeitos.Nenhum material pode ser reproduzido em qualquer meio, emparte ou no todo, sem permissão expressa da editora. Assume-seque qualquer correspondência recebida, tal como cartas, emails,fax, fotografias, artigos e desenhos, são fornecidos para publicaçãoou licenciamento a terceiros de forma mundial não exclusiva pelaLinux New Media do Brasil, a menos que exlplicitamente indicado.Linux é uma marca registrada de Linus Torvalds.Linux Magazine é publicada mensalmente por Linux New Media doBrasil Editora Ltda., São Paulo/SP, Brasil.Distribuído por Fernando Chinaglia Distribuidora.

Direitos Autorais e Marcas Registradas ©2004:Linux New Media do Brasil Editora Ltda.

Impressão e Acabamento: Gráfica Bandeirantes

ISSN 1806-9428 Impresso no Brasil

em processo de filiaçãoINSTITUTO VERIFICADOR DE CIRCULAÇÃO

096-097_service.qxd 9/22/04 7:06 PM Page 97

Page 98: Linux Magazine BR 2

98 Agosto 2004 www.linuxmagazine.com.br

Em breve nas bancas!

Usar seu computador como um telefonejá foi um sonho distante. Mas com orápido aumento no poder de processa-mento das modernas CPUs e a queda noscustos de acesso à Internet, o sonho está,aos poucos, se tornando realidade paramuitas pessoas e empresas.

Nossa matéria de capa começa comuma visão geral sobre os conceitos bási-cos de Voice Over IP (VoIP). Começamosmostrando como você pode integrar VoIPa seus sistemas já existentes, e do quevocê precisa para ser capaz de fazer ereceber chamadas para qualquer um queuse um telefone normal e o sistema detelefonia atual. Forneceremos uma visãogeral dos codecs mais usados pelas oper-adoras de gateways VoIP, testaremos ossete softphones mais populares nomundo Linux, comparando seus recur-sos e funções, e mostraremos comocontrolar sua nova central telefônicacom o Asterisk, desde a instalação atétodos detalhes da configuração.

Os poderes do KDEEsqueça os ícones Crystal por um

instante. existem mais coisas interes-sante por detrás das cortinas do KDE.Este excelente ambiente de trabalho pos-sui alguns recursos chave que emconjunto permitem que você faça prati-camente qualquer coisa dentro dele deforma automatizada, e nesse texto dare-mos uma olhada em três deles. Eis atrupe: DCOP, KIO e o caçula Komman-der, uma espécie de versão anabolizadado Dialog que pode ser usado para adi-cionar janelas e caixas de diálogo nopadrão do KDE a seus scripts.

Você aprenderá a usar o DCOP (Desk-top Communication Protocol) para in-teragir com aplicativos do KDE já aber-tos, o KIO para acessar servidores dee-mail, CDs de áudio, listas de fontes epreferências do sistema e verá comocriar scripts simples com uma bela inter-face com o Kommander.

Sayamindu Dasgupta nos levaa uma jornada através dosnovos recursos do Gnome2.8, lançado em 15 deSetembro de 2004.

Este popular ambi-ente de trabalho parao Linux, cada vezmais refinado, agoraconta com um cliente dee-mail com filtro anti-spamintegrado (Novell Evolution),um novo sistema de associaçãoentre arquivos a aplicativos, umnovo gerenciadorde applets para opainel, suporte àtecnologia DNS-

Linux Magazine PreviewA Linux Magazine Preview é umanewsletter via email que lhe ofereceuma espiadinha no conteúdo da pró-xima edição, além de novidades so-bre material on-line disponibilizadoem nosso website, antes que arevista chegue às bancas. Para rece-ber, cadastre-se aqui: www.linuxmagazine.com.br/Newsletter

Destaques da Próxima EdiçãoLINUX MAGAZINE

Voice Over IP – A revolução

Terceira Edição

No próximo mês...

SD, popularizada pela Apple como nome de Rendezvous, um con-junto de aplicativos, independen-tes de sistema, para configuração

de vários aspectos de suamáquina Linux chamadoGnome System Tools, compar-

tilhamento de desktopatravés do cliente VNCVino, melhor integra-ção e detecção dehardware, principal-

mente câmeras digitaise chaveiros USB com o

HAL (HardwareAbstractionLayer) e muitosoutros recursos.

As novidades no Gnome 2.8

098-098_preview.qxd 9/21/04 10:45 PM Page 98

Page 99: Linux Magazine BR 2

capa_02 9/21/04 7:47 PM Page 2

Page 100: Linux Magazine BR 2

WWW.L INUXMAGAZ INE .COM.BR

O fim das limitações, perca o medo do fsck

SISTEMAS DE ARQUIVOSExt 3, ReiserFS, XFS, JFSTestes comparativos de desempenho7x mais rápido: turbine seu HDFerramentas indispensáveisCriptografia de bolso

9 771806 942009

0 0 0 0 2

Linux Magazine R$12,90Edição Número 2 Setembro 2004

ME

RO

2L

INU

X M

AG

AZ

INE

Sis

tem

as d

e A

rqu

ivo

sB

itTo

rre

nt

L

PR

ng

R

ep

osit

óri

os D

eb

ian

K

uru

min

P

lan

Ma

ke

r

Sla

ck

wa

re 1

0

Lu

a

Veja também:

Crie um repositório DebianPersonalize o KuruminTestamos o PlanMakerAnalisamos o Slackware 10Lua: a linguagem de outro mundo

BitTorrentAcelere a distribuição de seu softwaresem gastar mais com isso

LPRngAprenda a configurareste servidor de impressão

NÚMERO 2

CD Número 2Setembro 2004

CD Número 2Setembro 2004

Aviso: Este CD-ROM da Linux Magazinefoi testado extensivamente e até ondepudemos verificar se encontra livre dequalquer vírus ou outro tipo de soft-ware de conteúdo malicioso, bem co-mo de defeitos. A Linux Magazine nãose responsabiliza por qualquer dano ouperda de dados que advenha da u-tilização deste CD-ROM ou de softwarenele incluído.

Fabricado por Bandeirantes – Artes Gráficas e Editora Sesil Ltda. – Indústria Brasileira – CNPJ 57.690.771/0

001-52

VVeemm ccoomm CCDD!!

capa_02 9/21/04 7:47 PM Page 1