Artigos - Ciências Exatas e da Terra Trabalho apresentado no 7º Congresso Nacional de Iniciação Científica - CONICSEMESP 2007 e no 15º Simpósio Internacional de Iniciação Científica da Universidade de São Paulo - SIICUSP Trabalho premiado com o 2º. lugar na área de Ciências Exatas, da Terra e Engenharias no 1º. Seminário da Produção Docente e Discente das Faculdades da Anhanguera. Resumo publicado nos Anais do Primeiro Seminário de Produção Científica Docente e Discente das Faculdades da Anhanguera. *Bolsista FUNADESP Desenvolvimento de uma distribuição Linux para crianças: a experiência LinuxKidX Autores: Alexandre Pereira da Cunha - Ciência da Computação Robson Francisco Maniasso Professor Orientador: Dr. Adriano Donizete Pila* Faculdade Comunitária de Santa Bárbara Resumo Esse trabalho descreve o desenvolvimento de uma distribuição Linux voltada para crianças. O foco do trabalho foi o desenvolvimento dessa distribuição contendo uma coletânea de softwares educacionais, de forma que a interface com o usuário fosse amigável e agradável. A metodologia utilizada e o desenvolvimento dessa distribuição são apresentados neste trabalho, bem como alguns resultados em termos de detecção de hardware e usabilidade. Palavras-chave: Linux, customização, distribuição, educação. Introdução A tecnologia da informação está cada vez mais presente no cotidiano das pessoas, seja nos computadores em empresas ou residências. Isso tem estimulado a utilização do Linux em maiores proporções, visto que é um sistema livre e aberto. Um software é livre, quando seu código-fonte está disponível, podendo ser alterado para adequá-lo às necessidades específicas, sem ter de pagar pela licença de uso. Portanto, software livre é de fato gratuito, mas usar este termo somente para designar softwares sem custo é um erro grosseiro. É válido dizer que o conceito de software livre não se aplica somente ao Linux. Qualquer programa, independente da plataforma, pode ter essa característica (LAURENT, 2004). As distribuições1 Linux não são desenvolvidas por uma única empresa ou organização, mas sim, a soma dos esforços de uma comunidade mundial, que inclui tanto empresas quanto desenvolvedores autônomos. Qualquer pessoa ou empresa com tempo e conhecimento suficientes pode criar uma distribuição Linux. No entanto, 68 o mais comum é usar uma distribuição já existente como ponto de partida e agregar novos recursos a partir daquele ponto (MORIMOTO, 2005a). Considerando estes aspectos, o projeto LinuxKidX2 não visa servidores ou usuários de nível técnico, mas sim crianças para as quais o nível de conhecimento ainda não se desenvolveu totalmente, fato que levou a distribuição a ser planejada visando a facilidade de uso e a criação de um LiveCD3 cujas vantagens são: • Usufruir do sistema operacional sem instalar nenhum arquivo. • Utilizar como desktop portátil quando agregado ao uso de um dispositivo móvel de armazenamento. • Manter os dados do HD intactos. • Utilizar como aprendizado ou lazer. Sendo assim, o processo de inicialização do LiveCD deve ser transparente, necessitando apenas que as crianças ou pais coloquem o CD nos computadores, e ao ligá-los tudo será automaticamente carregado e configurado, sendo somente necessário navegar pelos softwares e encontrar o jogo ideal para diversão e aprendizado. Diante dessa perspectiva, nada melhor que disponibilizar na distribuição uma enorme coletânea de softwares educativos, contendo animações e desenhos agradáveis, fazendo que através da informática as crianças possam aprender e desenvolver melhor suas habilidades cognitivas e motoras. A motivação para desenvolver o LinuxKidX passou a existir diante da notoriedade de que as áreas de educação infantil pouco exploram os recursos de softwares educacionais como forma de incentivo ao aprendizado. Um dos fatores que explica esse comportamento é que geralmente esses aplicativos são pagos e o valor para aquisição é alto. Uma solução para esse impasse pode ser observada no estado do Paraná, o governador Roberto Requião em seu discurso de posse enfatizou que: “Desde que o software livre foi implantado, em maio de 2003, até agora, dia 1º de janeiro de 2007, já economizamos 147 milhões de reais [...]” (Revista Caros Amigos, 1996). Objetivos O objetivo é desenvolver um LiveCD de fácil utilização, contendo uma coletânea de aplicativos educacionais para a faixa etária de 2 à 12 anos. O uso da distribuição aqui apresentada pode ser feito em computadores domésticos, mas, com maior impacto, em instituições educacionais. Essa idéia vai ao encontro de que a era digital é favorável ao aprendizado. Metodologia Após o levantamento bibliográfico feito durante a pesquisa, constatou-se que não existia uma metodologia única a ser seguida e que sustentasse o desenvolvimento deste trabalho. Dessa forma, foi elaborada uma metodologia capaz de contemplar o desenvolvimento do trabalho, a qual se sustentou em referências bibliográficas já consagradas da área (MISHRA e SHARMA,2004; MORIMOTO, 2005a-b, 2006; CESATI e BOVET,2006). A metodologia é descrita a seguir, a qual contempla 7 etapas distintas: Escolha da distribuição: Essa tarefa é muito importante, pois a distribuição é desenvolvida a partir de uma já existente. Cada distribuição Linux possui uma característica que a diferencia das demais, porém a maioria dos recursos disponibilizados são comuns. Algumas se distinguem por uma ênfase em aspectos específicos do sistema, como a facilidade de configuração, tipo de pacote4, segurança, personalização entre outros. A escolha da distribuição enfatizou particularidades como: rapidez, estabilidade e organização. Garantindo assim a performance e confiabilidade do LinuxKidX. Criação da distribuição: As distribuições Linux contêm uma enorme quantidade de aplicativos. Desta maneira é muito importante estudar quais são os pacotes necessários da distribuição escolhida como base de desenvolvimento, pois o projeto é um LiveCD, que não pode ultrapassar 700MB, devido as características do CD-ROM. Este é um processo trabalhoso e demorado, que requer muitos testes até constatar quais são os pacotes necessários, visto que a falta de um determinado pacote pode causar problemas posteriores, devido à ausência de suas funcionalidades requerida por outros aplicativos. Alterações do kernel A alteração do kernel não é uma tarefa fácil pois necessita entender seu funcionamento e configuração, pois ele é parte essencial do sistema operacional, responsável pela alocação de recursos, detecção e comunicação com os periféricos. Devido suas características é necessário estudar detalhadamente seu funcionamento e sua customização para adicionar novos recursos, tais como: bootsplash e configuração do sistema de som. Escolha da interface gráfica: Realizou-se uma pesquisa minuciosa a fim de identificar a melhor interface gráfica (GUI – Graphical User Interface). Uma excelente GUI é baseada em imagens de visualização e ativação dos recursos disponibilizados, também reconhece que interface se refere ao modo como uma fonte de recursos se comunica com o usuário através de seu design. A interface é a parte visível do sistema que reúne e apresenta todas as funcionalidades e operações dos programas (LEMOS, 2005). Escolha dos softwares educativos: Quando um software é utilizado como apoio ao processo de aprendizado de um determinado conteúdo, entende-se que o mesmo deve ser constituído de tais atributos: estimulante, temático, interativo e com propostas educacionais (MISHRA e SHARMA, 2004). Embasado nesses fatos apresentados a escolha dos aplicativos foi um trabalho minucioso, uma vez que os 69 mesmos terão capacidade de agregar valores didáticos aos seus usuários. Personalização Gráfica: É imprescindível garantir a atenção e interesse do usuário desde a inicialização do sistema até o momento que o mesmo esteja disponível para uso. Para obter esse resultado, é necessário fazer alterações que deixem o ambiente deskop chamativo. Essas modificações enaltecem a qualidade de um sistema operacional e favorecem a usabilidade do mesmo. do Slackware, ou seja, os pacotes foram dividos em séries, cada série é armazenada em um diretório para instalação futura. A Tabela 1 mostra a função que cada série representa na distribuição. Criação do LiveCD: Estudou-se sobre as mais diferentes maneiras de geração de um LiveCD, algumas simples outras mais trabalhosas. Contudo nessa etapa é essencial englobar todos os passos anteriores dentro de um único CD, o qual fará com que o sistema operacional inicie e detecte automaticamente todos os dispositivos físicos do computador, sendo apenas necessário usar os aplicativos. Desse modo quanto maior for a capacidade de compactação utilizado na confecção do CD, maior a quantidade de recursos disponíveis. Desenvolvimento No desenvolvimento foi seguida a metodologia apresentada anteriormente. Dessa forma, a apresentação do desenvolvimento desse trabalho segue os mesmos 7 pontos, conforme detalhados a seguir. Escolha da distribuição: Como já descrito, a escolha da distribuição a ser baseada é importante, pois é quem garantirá o desempenho e confiabilidade do sistema operacional. Dessa forma, a distribuição Linux que mais atendeu os requisitos citados na metodologia foi o Slackware, muito utilizado por profissionais de informática, principalmente em servidores. O Slackware é uma das distribuições mais antigas e ainda desenvolvidas, tem como filosofia preservar a tradição dos sistemas UNIX, provendo um sistema rápido, robusto, estável e organizado (BRICKNER, 2005). Porém possui poucas ferramentas automatizadas, o que acabou acarretando um grande trabalho na programação de scripts5. Criação da distribuição: Conforme apresentado na metodologia foi necessário estudar os pacotes essenciais do Slackware e descartar os desnecessários para o projeto. A instalação da distribuição LinuxKidX seguiu os padrões 70 A Figura 1 mostra como é feito à instalação dos pacotes do LinuxKidX em um diretório que será utilizado durante todo o desenvolvimento da distribuição. No início desse script de instalação, é necessário definir o caminho da pasta onde os programas serão instalados, isto é armazenado na variável “$LIVECD”. Na variável “$SERIES” é definido o caminho onde estão localizados todos os pacotes referentes à instalação do LinuxKidX. O comando “installpkg –root” é responsável pela instalação com permissão de superusuário de todos os pacotes de cada série dentro da variável “$LIVECD”. O conjunto de comandos apresentados na Figura 2 copia os arquivos modificados, criados e adicionados para diversas pastas dentro do diretório de desenvolvimento da distribuição. A seguir será explicado a funcionalidade de cada diretório juntamente com seus respectivos arquivos. O arquivo “confLinuxKidx” foi desenvolvido com o intuito de ser executado logo após o processo de instalação da distribuição dentro do novo diretório criado anteriormente. Seu objetivo é configurar qual interface gráfica será carregado ao digitar o comando “startx”. O mesmo também monta o “/proc”. O sistema de arquivos “/proc” é um diretório especial onde ficam todas as informações de depuração do kernel. Também se encontram algumas configurações que habilitam e desabilitam o suporte a algumas funcionalidades no kernel, é muito útil para o diagnóstico de hardware. Dentro do diretório “$CUSTOMDIR/sbin/ *” existem dois arquivos essenciais para configuração da distribuição na inicialização do LiveCD. O “defaultVolumes” é responsável pela configuração dos volumes de áudio. O arquivo “xconf” autoconfigura o sistema Xwindow6, para isso é feito um scanneamento de hardware e as informações como resolução de tela, mouse, teclado encontradas são salvas no arquivo “/etc/X11/xorg.conf”, estas informações são utilizadas pelo gerenciador de janela. No diretório “$CUSTOMDIR/rc.d/*” estão disponíveis os arquivos de inicialização do sistema que foram alterados e criados. Os arquivos “rc.M” e “rc.S” foram modificados para adicionar uma barra de progresso durante a inicialização do sistema. O “r c . i n e t 1 ” também foi alterado para auto-configurar placas de rede detectadas. No arquivo “rc.6” foi adicionado chamadas do script Linux-Live7 para que o sistema operacional ejete automaticamente o CD ao ser desligado ou reiniciado. O arquivo “rc.LinuxKidX” foi desenvolvido para fazer a execução dos arquivos “defaultVolumes” e “xconf”. O mesmo também executa o auto-login do sistema operacional, ou seja, evita a necessidade de digitar um usuário e senha para entrar no sistema. A variável “$LINUXLIVE” contém o caminho dos arquivos do Linux-live, os scripts são copiados para a pasta “/tmp” do diretório instalado. Posteriormente são utilizados na geração do LiveCD. Após todos os pacotes instalados, arquivos criados e modificados copiados para o diretório onde se encontra a nova distribuição, o script de instalação é finalizado como apresentado na Figura 3. O comando “ldconfig -r $LIVECD/” atualiza o link simbólico8 do diretório armazenado na variável “$LIVECD” e permite através do parâmetro “-r”, que o mesmo seja utilizado como um diretório raiz, em uma nova console. Por último é aplicado na variável “$LIVECD” o comando “chroot .”. Através dele é possível transformar o diretório atual no novo diretório raiz, contendo assim toda a estrutura de diretórios e arquivos da distribuição desenvolvida. Todos os comandos executados a partir deste momento são afetados diretamente na nova distribuição sem vinculo algum com a distribuição base. Ao término do processo de customização se deve digitar o comando “exit” para deixar o modo “chroot” e voltar para a distribuição base. 71 Alterações do kernel Conforme descrito na metodologia o kernel controla o acesso à memória, disco rígido e demais componentes do micro, dividindo os recursos disponíveis entre os programas. Todos os demais programas, desde os aplicativos de linha de comando, até aplicativos gráficos rodam sobre o kernel. Todo acesso ao kernel por uma aplicação deve ser efetuado por meio de chamadas de sistema. Uma chamada de sistema é uma função do kernel que permite a criação de processos, solicitação de memória, operação com arquivos, etc. Já a comunicação com o hardware ocorre, basicamente, de dois modos: o kernel reconhece e gerência o hardware usando drivers de dispositivos; o hardware comunica-se com o kernel por meio de interrupções [CESATI e BOVET, 2006]. Os drivers de dispositivos e extensões do núcleo rodam tipicamente no espaço do kernel, juntamente com o restante do núcleo, com acesso total ao hardware. Uma tarefa importante do kernel é oferecer suporte ao hardware da máquina. Antigamente o kernel oferecia suporte apenas aos dispositivos mais essenciais, como HD, placa de vídeo e driver de disquete. Porém com o passar do tempo, foi sendo adicionado suporte a muitos outros dispositivos: placas de som, placas de rede e assim por diante. O fato do kernel ser monolítico possibilitava escolher e ativar os componentes na hora de compila-lo. Caso se habilitasse tudo, não teria problemas com nenhum dispositivo suportado, tudo iria funcionar facilmente, porém contendo um kernel grande. Mas caso a compilação do kernel fosse enxuta e esquecesse de habilitar o suporte a algum recurso necessário, seria necessário recompilar tudo novamente para ativá-lo. Este problema foi resolvido durante o desenvolvimento do kernel 2.0, através do suporte a módulos. Os módulos são peças independentes que podem ser ativadas ou desativadas com o sistema em uso. Do kernel 2.2 em diante, quase tudo pode ser compilado como módulo. Isso tornou as coisas muito mais práticas, pois passou a ser possível compilar um kernel com suporte a quase tudo, com todas as partes não essenciais compiladas como módulos. O kernel em si é um executável pequeno, que consome pouca memória e roda rápido, enquanto os módulos ficam guardados numa pasta do HD até que precise deles [MORIMOTO, 2006]. Na distribuição LinuxKidX utilizou-se a ultíma versão do kernel, 2.6, a qual disponibiliza uma maior quantidade de recursos. Porém foi necessário fazer 72 alterações, pois como a distribuição é um LiveCD alguns patchs (atualizações no kernel) precisaram ser adicionados para habilitar este característica, possibilitando assim o desenvolvimento e personalização da distribuição. O primeiro passo para a criação de um kernel customizado é conseguir todos os patchs e o kernel-source e alocá-los em uma pasta. Após isto é necessário fazer a ativação dos seus módulos para que na recompilação sejam ativados os recursos necessários. Para abrir o menu com as opções de personalização digita-se na console do Linux o comando “make menuconfig”. Com a abertura deste menu é possível selecionar quais recursos serão adicionados. Neste menu foi ativado os módulos referentes a ativação do bootsplash e detecção de hardware, mais especificamente o sistema de som. O LinuxKidX utiliza o Alsa como módulo de som sendo necessário ativar sua configuração a partir da versão 2.6 do kernel. Após a seleção dos módulos é necessário salvar estas configurações antes de iniciar ao processo de recompilação. Por padrão as configurações são salvas em um arquivo com o nome “.config”. Este arquivo também pode ser modificado por um editor de texto, porém as alterações feitas deste modo são mais complexas. Para a criação da distribuição foi desenvolvido um script que adiciona os patchs no kernel e o recompila, gerando assim um pacote em formato “tgz”, padrão utilizado no Slackware. Este procedimento ajudou muito no desenvolvimento da distribuição devido ao fato de não precisar recompilar o kernel todas as vezes que fosse criado uma nova versão do LiveCD. Tendo em vista que todos os patchs foram armazenados em um diretório pré-definido no início do script, partiremos pra a extração dos arquivos compactados dos patchs e do kernel-source (códigofonte do kernel do Linux). O comando “mkdir -p $LZMA” cria uma pasta com o nome da variável definida anteriormente e o comando “tar -xf $CURDIR/ $AUFS.tar.gz” extrai os arquivos compactados para esta pasta. O mesmo conceito é aplicado aos demais comandos “tar” apresentados na Figura 4. Desta forma temos a descompactação de todos os patchs e o kernel- source em suas respectivas pastas. Isto possibilita trabalharmos com uma compilação organizada. Para habilitar a funcionalidade de um LiveCD precisamos utilizar alguns patchs, descritos a seguir: • SquashFS é um sistema de arquivos somente leitura para Linux. • LZMA é o método de compactação no formato 7z (novo formato de arquivo compactado que provê alta taxa de compressão). O LZMA provê alta taxa de compressão e descompactação muito rápida, de modo que é muito útil para aplicações embutidas. • Aufs permite que arquivos e diretórios de sistemas de arquivos diferentes sejam transparentemente sobrepostos, formando um único sistema de arquivos. Os conteúdos de diretórios com o mesmo caminho nos diferentes sistemas de arquivos são vistos juntos em um único diretório no novo sistema de arquivos virtual. O comando “patch –p” aplica o patch no kernel, isto é preciso ser repetido para todos os patchs utilizados (Figura 5). Após executar os patchs no kernel o próximo passo é iniciar o processo de recompilação com o comando “make –j 3 modules”, cuja função é compilar os módulos selecionados e criar os arquivos de módulos “. o ”, o comando “I N S T A L L _ M O D _ P A T H = $ P K G make modules_install” criará a estrutura do kernel dentro de uma pasta, a qual está sendo definida pela variável “$PKG”. O último comando “make –j 3 bzimage” tem a função de criar uma imagem que será carregada durante a inicialização do sistema. Estes três comandos citados têm a função de fazer a recompilação do kernel (Figura 6). Este processo é lento e dependendo das opções selecionadas pode demorar horas para terminar. Ao finalizar a recompilação, é compilado todos os pacths e copiado para suas respectivas pastas conforme pode ser visto na Figura 7. O próximo processo é a criação de um pacote contendo o kernel pré-compilado. Para tal execução utilizou-se o comando “makepkg -l n -c n $KERNEL-i486-1.tgz”. Tendo um kernel pré-compilado em formato “tgz”, sua instalação no sistema é rápida, basta apenas remover o kernel atual e instalar a versão pré-compilada com o comando “installpkg”. Escolha da Interface Gráfica: Segundo a metodologia utilizada, a interface gráfica com o usuário deve ser baseada em imagens de visualização e ativação dos recursos disponibilizados. Por essas razões o KDE e Gnome foram avalidados e optou-se pelo KDE, responsável por fornecer uma interface gráfica organizada e consistente para que os aplicativos sejam executados e o usuário tenha uma interação com o computador. O KDE é um ambiente desktop moderno que procura preencher as necessidades de maneira facilitada, para isso permite a visualização de imagens, vídeos e animações através de programas que compõem o mesmo, interagindo com essas características através de mouse e teclado (Figura 8). Em relação ao quesito visual, o KDE é um dos mais agradáveis, isso porque permite o uso e a criação de temas dos mais variados tipos e possibilita a utilização de efeitos gráficos. O KDE é de longe o ambiente que proporciona a maior coletânea de aplicativos para qualquer distribuição Linux, além de ser o mais flexível no quesito personalização. 73 Escolha dos softwares educacionais Conforme descrito na metodologia, um software educacional deve ser estimulante, temático, interativo e com propostas educacionais. Portanto a seleção dos aplicativos educacionais teve como finalidade encontrar as coletâneas que mais se enquadrariam na distribuição, somente programas com propostas educacionais foram utilizados. Nesta etapa os seguintes conjuntos foram selecionados: Gcompris: Utilizado em atividades de diversas disciplinas e séries, desde a educação infantil até a quarta série. Todos os jogos vêem com instruções de fácil 74 compreensão e jogabilidade (Figura 9). As atividades podem ser direcionadas de acordo com um objetivo específico ou a criança pode navegar pelo programa e aprender os jogos que achar mais interessantes de forma livre, desenvolvendo assim a capacidade de escolha e aprendizagem (RIVERA, 2006). Atualmente GCompris oferece uma quantidade de 80 jogos. GCompris é software livre, o que significa que você pode adaptá-lo às suas necessidades, melhorá-lo e, o mais importante, compartilhá-lo com as crianças de toda a parte. As atividades são lúdicas e, ao mesmo tempo pedagógicas. Os jogos estão divididos da seguinte forma: • Descoberta do computador: teclado, mouse, diferentes usos do mouse,... • Álgebra: memorização de tabelas, enumeração, tabelas de entrada dupla, imagens espelhadas,... • Ciências: controle do canal, ciclo da água, o submarino, simulação elétrica,... • Geografia: colocar o país no mapa. • Jogos: xadrez, memória, ligue 4, sudoku,... • Leitura: prática de leitura. • Outros: aprender a identificar as horas, quebra-cabeças com pinturas famosas, desenho vetorial,... Childsplay: É um conjunto de jogos educacionais (Figura 10). Ideal para o ensino básico e/ou fundamental, usa um sistema de plug-ins9 o que possibilita uma grande flexibilidade na expansão da coletânea. Ele usa bibliotecas SDL10 de desenvolvimento, o que possibilitou a criação de animações e jogos com som muito instrutivos e fáceis (ZYTKIEWICZ, 2007). Kde-Edu: Programas dirigidos às escolas, aos pais e aos alunos. São divertidos, coloridos, atrativos e suficientemente simples para que as crianças usem sem a supervisão dos pais (MAHFOUF, 2007). Os programas ajudam na formação dos alunos de maneira divertida e intuitiva (Figura 11). Os jogos estão divididos da seguinte forma: Linguagem: • Kanagram: indicado para o ensino de Língua Portuguesa ou Língua Estrangeira. • KHangMan: jogo da forca. • Kiten: Aprendizagem da língua japonesa. • Klatin: Aprendizagem do latim. • Lettres: Aprendizagem do alfabeto. • Kverbos: Aprendizagem da língua espanhola. • KvocTrain: Aperfeiçoamento do vocabulário. Matemática: • Kbruch: Apresenta operações de soma, subtração, multiplicação e divisão de frações, fatoração, comparação de valores e conversão. • Kig: Aplicativo para a exploração de construções geométricas. • KmPlot: Plotter de funções matemáticas. • Kpercentage: Jogo interativo indicado para o ensino de porcentagens em Matemática. Ciência: • Kalzium: Mostra informações sobre os elementos da tabela periódica. • Kstars: Planetário virtual. Diversos: • BlinKen: Versão do jogo Simon Says. • Kgeography: Ensino de geografia. • Ktouch: Aplicativo para o aperfeiçoamento da digitação. • Kturtle: Este é um software de Programação, onde o usuário, utilizando conceitos e estratégias, experimenta a realização de um programa. • KwordQuiz: é um jogo de palavras. Tuxpaint: É um programa de criação livre em imagem voltado para o público infantil, com sons, ícones coloridos e ações legendadas, facilitando seu uso na inicialização e introdução ao computador. As cores e formas legendadas auxiliam no trabalho do educador, servindo como apoio pedagógico a algum tema a ser trabalhado com os alunos, como por exemplo: a bandeira do Brasil, que leva três formas: retângulo, losango e o círculo e as cores amarela e azul que misturadas surgem o verde. O desenho livre é mais importante ainda, pois trabalha a expressão e criação do educando, à medida que a criança vai trabalhando o seu lado criativo, ela vai interagindo com as coisas ao seu redor, expressando seus pensamentos e sentimentos (Figura 12). Para o professor é uma maneira de conhecer os gostos e idéias do aluno, como exemplo: se o menino desenhou uma bola ou um revolver, e a menina fez uma flor chorando ou usou cores alegres. (Kendrick,2007) 75 Com os softwares definidos, partiu-se para suas instalações, no entanto foi um trabalho difícil, pois como o Slackware foi instalado de maneira reduzida, era necessário analisar quais as dependências de pacotes que cada software precisava. Enfatiza-se esta dificuldade pelo fato que não existe nenhuma ferramenta que resolve o problema das dependências como encontrado em outras distribuições. configuração padrão do sistema, ajustando o comportamento dos programas, organizando os menus e arrumando a parte visual acaba sendo umas das partes mais importantes ao desenvolver um sistema destinado a usuários de pouco conhecimento, já que é necessário criar um ambiente agradável e de fácil utilização. Conforme a idéia acima, a personalização do ambiente gráfico consistiu na mudança da tela de apresentação do KDE (Figura 14, uma criação do colaborador Júlio César Rodrigues), criação de papéis de paredes (Figura 15), temas e ícones, isto para que o usuário sinta-se a vontade e possa desfrutar de um sistema amigável. Personalização Gráfica: É imprescindível garantir a atenção e interesse do usuário desde a inicialização do sistema até sua utilização. Dessa maneira, a instalação e configuração do bootsplash tornam-se evidente, pois o mesmo oculta do usuário o trabalho sendo feito pelo sistema operacional e apenas apresenta uma imagem (Figura 13) agradável com uma barra de progresso indicando o tempo restante para o sistema estar disponível para uso. O bootsplash ilustrado na Figura 13 também faz parte das personalizações feitas durante o desenvolvimento da distribuição LinuxKidX. Aqui vale fazer uma referência ao colaborador Rafael Calheiro pelo design da imagem utilizada no bootsplash. Segundo (MORIMOTO, 2006) personalizar a 76 Criação do LiveCD: Conforme a metodologia utilizada, quanto maior for a capacidade de compactação, maior a quantidade de recursos disponíveis no CD. Portanto o LinuxKidX utilizou o conjunto de scripts Linux-Live, o qual permite criar seu próprio LiveCD de sua distribuição Linux favorita, além dessa vantagem ele também permite iniciar o sistema a partir de pen-drives. Esses scripts possibilitam a inicialização muito rápida do sistema operacional, e o mesmo possui uma excelente taxa de compactação podendo comprimir 2.5GB em 700MB, ou seja, uma redução de espaço da ordem de 3,6 vezes. Com isso, apenas é necessário executar esses scripts na distribuição trabalhada e confeccionar o LiveCD contendo todas as tarefas realizadas. Para que o conjunto de scripts Linux-Live crie corretamente o LiveCD, é necessário que os patchs AUFS, Squashfs e LMZA estejam aplicados corretamente no kernel como descrito anteriormente. Para gerar o LiveCD deve-se entrar na pasta do Linux-Live e executar o comando “./build”, cuja finalidade é gerar uma pasta de nome “LIVE_DATA1234” onde “1234” é um número aleatório que varia de acordo com a hora do sistema operacional. Nesta pasta foram gerados todos os arquivos compactados do LiveCD e os arquivos necessários para a inicialização do sistema operacional a partir de um CD. Quando o comando “./ build” é finalizado, resta executar o último comando para que se crie a imagem da distribuição, este comando é o “./make_iso.sh”, armazenado dentro da pasta “LIVE_DATA1234”. Resultados É fundamental que a detecção de hardware do LinuxKidX funcione corretamente, pois todos os drivers11 são configurados automaticamente sem interação do usuário. Para verificar esse funcionamento após o desenvolvimento, foram realizados diversos testes com os mais variados computadores, a saber: Celeron 2.66MHZ com 1GB RAM, Pentium 4 3.0MHZ HT com 512MB RAM, Dual Core 1.83MHZ com 2GB RAM, Duron 800MHZ com 256MB RAM, Athlon XP 2.2GHZ com 512GB RAM, Pentium III 750MHZ com 256MB RAM e Pentium M 2.0 com 1GB RAM. A idéia era verificar se o LinuxKidX seria capaz de detectar os dispositivos de som, vídeo e rede. Os resultados obtidos estão ilustrados no Gráfico 1. Pode-se notar pelo Gráfico 1 que dentre os 7 computadores testados, envolvendo as 3 tarefas de detecção (som, vídeo e rede), em apenas um único caso a detecção não foi possível, ou seja, a detecção de hardware foi efetiva em 95,24% dos casos. Outra análise realizada foi quanto ao uso do LinuxKidX. Para tanto, realizou-se uma pesquisa com 10 crianças com idade média de 7 anos de idade e 10 adultos entre 18 e 40 anos de idade, não mais pessoas devido ao trabalho ter sido concluído recentemente. Foi solicitado que utilizassem o LinuxKidX, sem um tempo mínimo ou máximo como limitantes. Constatou-se que as crianças: • Utilizaram à distribuição por mais de 30 minutos. • Passaram todo o tempo com a atenção retida. • Trocaram de jogos sem auxílio de um adulto. • Não questionaram sobre o uso do LinuxKidX. • A maioria conseguiu utilizar o sistema sem maiores dificuldades. Constatou-se que os adultos: • Interagirão facilmente com o sistema. • Interessaram-se nos jogos educativos. • Utilizaram ao menos por 1 hora. • O visual não despertou o interesse por questões técnicas, o que faz concluir que a interface consegue distanciar bem o usuário do computador enquanto ferramenta. É uma abstração do computador. Esses resultados ainda são incipientes e não foi utilizado nenhum método estatístico que garanta confiabilidade nos resultados. Os resultados foram colocados como uma prévia do desempenho da distribuição na detecção de hardware e da aceitação pelos usuários. Pretende-se no futuro proceder com uma análise mais criteriosa que considere métodos estatísticos mais adequados, os quais, para o momento e nível de maturidade do projeto não foram julgados necessários. Considerações Finais O trabalho descrito neste artigo teve como 77 propósito realizar um estudo sobre o sistema operacional Linux e o desenvolvimento de uma distribuição personalizada contendo softwares livres com fins educativos. Como distribuição base foi escolhido o Slackware, devido a suas características de robustez, confiabilidade, rapidez e estabilidade. O fato do Slackware ser uma distribuição complexa de ser utilizada, despertou o interesse pelo desafio lançado, o que motivou ainda mais o desenvolvimento deste trabalho. As maiores contribuições do trabalho estão nos scripts detecção de hardware que em conjunto com a interface agradável tornaram a distribuição desenvolvida bastante amigável. O usuário fica livre do tecnicismo costumeiro do Linux para poder desfrutar de uma distribuição que prima pela interface de fácil uso e recheada de softwares educacionais. Os resultados de detecção de hardware e uso do sistema, mesmo que preliminares, mostram que o trabalho desenvolvido alcançou seus objetivos. Como trabalhos futuros, pretende-se continuar o aprimoramento do LinuxKidX, adicionando novos softwares educacionais, customizações e scripts para detecção de hardware. Ainda, pretende-se fazer uma avaliação da usabilidade com melhor confiabilidade estatística, bem como tornar o LinuxKidX uma distribuição possível de ser instalada no computador. Referências Bibliográficas BRICKNER, David. Test driving Linux: from Windows to Linux in 60 seconds, Oreilly & Assoc, 2005. CESATI, Marco; BOVET, Daniel Pierre. Understanding the Linux kernel, Oreilly & Assoc, 2006. COUDOIN, Bruno.Gcompris. Disponível em: <http://gcompris.net> Acesso em: 10 nov. 2007 Kendrick, Bill. Tuxpaint. Disponível em: <http://www.tuxpaint.orgt> Acesso em: 10 nov. 2007 LAURENT, Andrew M. Understanding open source and free software licensing, Oreilly & Assoc, 2004. LEMOS, André. Cibercidade 2: A cidade na sociedade da informação, Rio de Janeiro: E-papers, 2005. LUNARDI, Marco Agisander. Dicionário de informática. São Paulo: Ciência Moderna, 2006. MAHFOUF, Anne Marie. Kdeedu. Disponível em: <http://edu.kde.org> Acesso em: 10 nov. 2007 MATEJICEK, Tomas. Linux-live. Disponível em: <http://linux-live.org> Acesso em: 21 ago. 2007. MISHRA, Sanjaya; SHARMA, Ramesh. Interactive multimedia in education and training, Idea Group Publishing, 2004. MORIMOTO, Carlos Eduardo. Linux: Ferramentas técnicas, Porto Alegre: Meridional, 2006. MORIMOTO, Carlos Eduardo. Linux: Entendendo o 78 sistema: guia prático, Porto Alegre: Sul Editores, 2005a. MORIMOTO, Carlos Eduardo. Kurumin Linux: Desvendando seus segredos, Rio de Janeiro: Alta Books, 2005b. Quer dizer que a esquerda acabou: Revista caros amigos. São Paulo: Casa Amarela, 1996-. RIVERA, Antonio Rodríguez. JuegaLinEx: 142 Juegos para Linux, Madrid: Nowtilus,2006. ZYTKIEWICZ, Stas. Childsplay. Disponível em: <http://childsplay.sourceforge.net> Acesso em: 10 nov. 2007 Notas 1 Conjunto de softwares desenvolvidos e disponibilizados na plataforma Linux (MORIMOTO, 2006). 2 Nome atribuído à distribuição Linux desenvolvida neste trabalho, a qual faz alusão ao Linux e ao fato de seu uso ser destinado às crianças (kids em inglês). Por ser um nome próprio de nossa criação, não utilizará neste artigo o grifo que denota palavras em língua inglesa. 3 Um LiveCD é um CD que contém um sistema operacional, não necessitando que o mesmo esteja gravado no disco rígido. 4 No Linux, geralmente os aplicativos vêem em forma de código-fonte, então o usuário tem que baixar e compilar. Os pacotes servem justamente para facilitar o trabalho do usuário, dando a ele um arquivo empacotado com o código já compilado. 5 Um script é um arquivo de texto, com uma seqüência de comandos que são interpretados linha a linha (MORIMOTO, 2006). 6 O Xwindow, ou simplesmente “X” é a interface gráfica usada em diversos sistemas Unix, incluindo o Linux. 7 Existe um site que trata de todos os passos para a confecção de um LiveCD, indicando as personalizações a serem feitas e dificuldades que devem ser enfrentadas, as quais são muito particulares para cada distribuição a ser criada (MATEJICEK, 2007). 8 Um link é uma entrada no diretório (vistos como um arquivo/diretório) que apontam para um outro arquivo/ diretório. É comum se ter links simbólicos que apontam para programas executáveis. 9 Extensões que adicionam novos recursos ao programa, sendo os mais famosos aqueles para navegadores internet (LUNARDI, 2006). 10 É uma biblioteca multimídia e multi-plataforma escrita em C (mas diretamente compatível com C++ e tem interfaces para outras linguagens de programação, como Ada, Eiffel, Java, Lua, ML, Perl, PHP, Pike, Python, e Ruby). 11 São arquivos de configuração responsáveis pelo gerenciamento específico de hardware do computador.