MultiVerso Linux

  • Home
  • Assinar RSS
  • Comments RSS
  • Log in
  • Register
  • About

16

Jun

O futuro do Linux e a conquista dos usuários.

Publicado por gmazk  Publicado em História

Toda vez que a data de lançamento de uma nova versão de alguma distribuição popular de sistemas operacionais Linux se aproxima, aproveito pra reavaliar meus conceitos sobre o desenvolvimento e evolução do Linux… seu passado, presente e futuro. Como usuário e defensor do Linux, assim como muitos que conheço, tenho sentido cada vez mais aquela ansiedade que vem sido promovida pela possível proximidade do dia em que o Linux passará a fazer parte dos desktops de usuários domésticos (entenda-se uso não profissional genérico). Sim… realmente acredito que estamos perto do dia em que isso irá se tornar realidade, mesmo com o presente indiscutível domínio do sistema operacional janela$ no mercado, e acredito nisso porque o primeiro passo já aconteceu (tornar o Linux um sistema operacional fácil de operar e intuitivo, que não represente dificuldade nem mesmo para o mais iniciante dos usuários). Mas o que será que está faltando para que o Linux comece a conquistar sua fatia de mercado entre os usuários?

Estive lendo essa semana um artigo no SlashDot.org intitulado “Why Linux doesn´t spread – The curse of being free”, que defende um aspecto “filosófico” como o motivo da modesta popularidade do Linux entre usuários comuns. O artigo defende como justificativa a tendência dos seres humanos de não conseguirem, atualmente, igualar a qualidade de coisas gratuitas à qualidade de coisas “pagas”. O autor do artigo (Vlad Dolezal) acredita que em decorrência de um problema de percepção, as pessoas passam a ver o Linux como um sistema operacional “sem valor” já que podem obtê-lo gratuitamente, em relação a um sistema operacional que “vale” R$ 500,00 que não podemos obter gratuitamente, ao menos sem pirataria. Até concordo em parte com o ponto de vista do autor do artigo em questão, pois eu mesmo já ouvi dezenas de vezes a pergunta “como pode ser tão bom e ser grátis?” ou a pergunta “como as pessoas não conhecem e não usam se é tão bom e grátis?”… Aos que me fizeram a ultima pergunta, eu respondo: Boa pergunta! Ou seja, tem fundamento o aspecto citado pelo autor, e realmente tem alguma relevância, mas acredito que nesse caso, o buraco do coelho é bem mais fundo, pois além da desconfiança natural que as pessoas adquiriram com o “grátis”, temos atualmente uma sociedade relativamente incompatível com escolhas reais, pois de muito tempo pra cá acabamos nos acostumando a receber variedades imensas de uma unidade em diversos segmentos do mercado, e desaprendemos a escolher, e isso se tornou cômodo já que a responsabilidade da escolha deixa de existir quando só temos uma opção, e com isso o problema deixa de ser nosso e podemos ficar apenas reclamando de nossa única opção sem fazer nada a respeito. É um aspecto cultural e social que não podemos desconsiderar ao pensar sobre tudo isso. Talvez seja realmente muito cômodo para o usuário descartar a viabilidade do Linux como sistema operacional desktop, sem nem ao menos testá-lo e conhecê-lo (e vejo muitas pessoas agindo assim. Começam a criar empecilhos e pré-supor defeitos antes mesmo de seu primeiro contato com o sistema).

Ainda perto desse ponto de vista, existe a teoria do “medo do desconhecido, e da dificuldade de adaptação”, e também o temor de usuários iniciantes que ainda vêem erroneamente o Linux como um sistema operacional complicado específico para programadores ou usuários avançados, o que está longe de ser verdade há muito tempo, já que o Linux (pelo menos as distribuições mais novas e populares) já se tornou um sistema operacional extremamente intuitivo e “user friendly” até mesmo para usuários principiantes, isso sem contar a enorme vantagem dos LiveCDs que permitem que o usuário experimente e conheça o sistema sem ter que instalá-lo em seu HD, executando-o diretamente do CD. Além disso, existe também (mais no meio corporativo, porém também existente entre usuários comuns) o receio da ausência de suporte, o que também já deixou de existir há muito tempo. Hoje em dia, o usuário Linux pode contar com suporte oferecido por inúmeras empresas e distribuidores (que podem oferecer suporte pago mesmo sendo o sistema operacional gratuito) além do intenso movimento da comunidade de usuários Linux, que se reúne em grupos on-line que contam com milhares de participantes trocando gratuitamente em prol da própria comunidade, experiências, dúvidas e prestando suporte a todos os usuários iniciantes e até mesmo avançados. Podemos encontrar esse tipo de suporte em qualquer idioma, em fóruns de discussão, canais de chat IRC, blogs, em fim… é uma quantidade imensa de informação disponível gratuitamente a qualquer usuário que precise de ajuda com Linux, o que nos mostra que suporte há muito tempo deixou de ser problema independente do tipo de utilização (pessoal ou profissional) que o usuário vá fazer do sistema operacional.

Quando penso a respeito “do que falta” para que o Linux atinja sua popularidade entre os usuários comuns, me lembro de uma frase que li na Linux-Foundation.org, que diz que “Uma plataforma é tão forte como as aplicações que a mesma suporta”. Pra comentar sobre isso, prefiro resumir a frase ao termo “compatibilidade” nesse sentido. Ok… muitos já sabem que o Linux já se tornou um excelente sistema operacional para Desktops… seguro… estável… confiável… bonito… prático (estamos quase lá)… MAS… ainda continua existindo aquela famosa pergunta “Será que roda tal software? Será que roda tal jogo?”. E é com base em algumas respostas possíveis para essas duas perguntas que muitos usuários deixam de migrar para o Linux, mesmo reconhecendo sua superioridade em diversos aspectos com relação ao janela$. Temos ai um certo circulo vicioso. Muitos softwares proprietários utilizados por milhões de usuários não rodam no Linux já que seus desenvolvedores só os produzem para o janela$, já que este domina aproximadamente 90% do mercado de usuários desktop. Ou seja, de uma certa forma, o Linux não é popular por não rodar certos programas e jogos populares, e do outro lado da moeda, não roda certos programas e jogos por não ser popular o bastante pra despertar a atenção dos desenvolvedores o bastante para produzir uma versão pra Linux… E ai chegamos a um outro problema que atinge os desenvolvedores que querem produzir versões de seus softwares pra Linux… Produzir PRA QUAL DISTRIBUIÇÃO LINUX?

Chegamos agora naquele que, a meu ver, pode ser o principal problema do Linux com relação a sua popularidade e utilização. Atualmente existem mais de 300 distribuições Linux registradas, e apesar de todas elas serem derivadas de um grupo relativamente pequeno formado pelas principais distribuições, e apesar de todas usarem o mesmo Kernel (núcleo do sistema) temos um enorme problema de padronização do sistema. Problema de INTEROPERABILIDADE. As diferentes distribuições Linux usam diferentes sistemas de empacotamento, diferentes APIs, em fim, diferem muito uma da outra no que diz respeito a sua estrutura de organização e funcionamento. Em fim, coloque-se no lugar de um desenvolvedor de software proprietário (um programa ou jogo qualquer) que quer disponibilizar seu software para Linux… ai vem a dúvida… disponibilizar pra que distribuição? Alguns poderiam responder a pergunta com um “desenvolva para a distribuição mais popular entre os usuários que você deseja atingir com seu software”, mas lembrem-se que a distribuição mais popular hoje, pode não ser a distribuição mais popular amanhã. Tendências existem, certezas não. Já imaginou como seria esse tal “domínio” do mercado por parte do janela$ se existissem mais de 300 versões dele e uma não fosse totalmente compatível com a outra? Como você deve imaginar, quase ninguém utilizaria, pois isso imprime muitas dificuldades e restrições ao usuário final, que apenas quer um sistema operacional confiável para realizar suas tarefas usando os programas de sua preferência sem maiores complicações ou dores de cabeça, e também aos desenvolvedores, que não poderiam desenvolver seus programas para uma plataforma padronizada, e com isso teriam que fazer muitas escolhas que certamente iriam limitar o público a ser atingido com o software em desenvolvimento.

Este problema vai ainda mais longe, quando pensamos na questão da interface gráfica do sistema operacional. Atualmente no Linux contamos com as duas principais e mais completas interfaces gráficas para o sistema… o Gnome e o KDE. Ambas são extremamente completas, funcionais, bonitas e cheias de recursos… A meu ver, ambas estão praticamente prontas para serem “o rosto” do sistema operacional Linux para todos os usuários, mas o simples fato de existirem DUAS, apesar de apoiar as idéias de liberdade de escolha e variedade de opções que estão associadas aos sistemas operacionais OpenSource, acabam atrapalhando um pouco no que diz respeito à padronização e compatibilidade, já que as duas interfaces não possuem uma padronização de desenvolvimento e funcionamento, usam toolkits diferentes, em fim, dificultam as coisas para o desenvolvedor que quer fazer um software compatível com qualquer interface gráfica. Pode ter certeza que se uma dessas interfaces gráficas deixasse de existir, teríamos em pouco tempo o Linux muito mais presente nos desktops de usuários comuns, pois chegaríamos muito mais perto desse conceito de padronização e com isso de interoperabilidade. A interoperabilidade entre as distribuições Linux certamente vai evoluir, porém isso demanda tempo, organização, e muita cooperação entre os desenvolvedores… E o mais importante de tudo… isso tem um custo… como qualquer coisa no mundo da tecnologia, o desenvolvimento só acelera quando entra dinheiro.

 

Mesmo com todo esse problema resultante da ausência de interoperabilidade entre as distribuições Linux, temos disponíveis para as distribuições mais populares uma variedade GIGANTESTA de opções de software para todo tipo de atividade computacional. Conseguimos achar facilmente programas e jogos para todos os gostos no mundo OpenSource, mas temos atualmente usuários “viciados” em plataformas e programas já conhecidas há anos, até porque eles passaram anos sem ter outras opções acessíveis (ao menos para o público menos experiente e especializado), e acabaram ficando dependentes e à mercê do sistema e dos programas já conhecidos. Você pode atualmente citar qualquer programa mais “famoso” ou “popular” pra qualquer atividade que possa realizar com um computador, e eu mostro pra você um programa OpenSource de igualdade ou até mesmo superioridade técnica e funcional em relação ao citado por você. Mas temos o problema da adaptação (principalmente em ambiente corporativo, pois isso demanda tempo, e o tempo custa dinheiro, mas mesmo assim não deixa de ser viável, e até mesmo vantajoso. A meu ver o mercado corporativo só precisa de tempo para se adaptar ao software livre, pois é um bom negócio e já temos inúmeros cases de sucesso pra comprovar o aumento de lucratividade de um negócio depois da migração para o software livre). Temos também em Linux uma maneira de fugir do problema de adaptação e continuar usando software já conhecido, que são as virtual machines e os emuladores que permitem que o usuário utilize programas desenvolvidos para windows no Linux, e esta tecnologia está cada vez mais perfeita. Porém pra mim isso é só mais uma maneira de estimular a continuidade dessa dependência de produtos aos quais todos estão familiarizados, e de impedir que as pessoas descubram, conheçam e se familiarizem com produtos OpenSource que em muitos casos são até melhores que os softwares proprietários em questão. Mas pra quem prefere continuar dependente, a opção é viável e está disponível pra todos.

Ai você me diz “Beleza gmazk… você apresentou os principais problemas relacionados com a popularidade do Linux… mas quais as soluções?”. Insisto que o primeiro passo já aconteceu (tornar o Linux user-friendly (intuitivo e fácil de usar até mesmo para o usuário mais iniciante). Penso que estamos no caminho certo. Na opinião da maioria dos usuários mais experientes e especialistas da área, precisamos apenas de TEMPO para que a interoperabilidade, compatibilidade e conseqüente popularidade do Linux se torne uma realidade. Não podemos nos esquecer também da contribuição da comunidade de usuários Linux, que poderia reclamar menos dos problemas existentes e ao invés disso contribuir um pouco mais com aquilo que puder, já que uma simples sugestão, tradução, suporte prestado a um iniciante ou até mesmo indicação do sistema operacional a alguém que não conhece pode ajudar muito a comunidade. Até mesmo sua reflexão e discussão a respeito desse artigo pode ajudar. E quem sabe essa história toda de fusão Microsoft-Yahoo não leva nossa gigante amiga Google a ajudar (como fez por exemplo no caso do projeto Wine, tornando-o totalmente compatível e pronto pra rodar o software Photoshop da Adobe) o SO Linux e a comunidade OpenSorce, afinal de contas, um dinheirinho injetado nos projetos vai muito bem, obrigado… Eu espero ansiosamente e torço muito pra que as coisas, como de costume atualmente, evoluam rápido. Quem sabe no fim de 2010 (futuro bem próximo e sexto aniversário do sistema operacional Ubuntu) nós não possamos ler um novo artigo como este relatando uma realidade bem diferente da que vivemos hoje no mundo dos sistemas operacionais? Let´s wait and check!

Um grande abraço a todos.

 
icon for podpress  Lenny - Stevie Ray Vaughan [4:57m]: Play Now | Play in Popup | Download
no comment

10

Jun

gmazk Blue - Meu primeiro tema para Openbox

Publicado por gmazk  Publicado em Linux, Openbox Themes

E ai pessoas? To de volta.

Apesar de minha experiência mínima (eu diria até ridícula ;-) ) com o Gimp pra fazer wallpapers (ou qualquer outra coisa ;-) ), resolvi me aventurar a fazer um tema pra usar com meu Openbox, e por incrível que pareça, até que achei bacana. Bom, pra um primeiro theme acho que tá bom. E claro, já vou disponibilizar o tema e o wallpaper pra quem quiser, aqui, e no box-look.org.

Ai vão algumas screenshots do meu desktop com ele… (Não se espantem com a largura do wallpaper, uso 2 monitores, e por isso a resolução total do desktop é de 2048×768, mas sei que não vai ser problema pra ninguém redimensionar o wallpaper pra caber em monitores usando outras resoluções). Clique nos screenshots para ver a imagem ampliada…

Screenshot 1 - gmazk Blue theme para Openbox

Screenshot 2 - gmazk Blue theme para Openbox

Screenshot 3 - gmazk Blue theme para Openbox

Screenshot 4 - gmazk Blue theme para Openbox

Para quem sente falta de usar paineis e ícones no Desktop, seguem abaixo algumas screenshots de uma possível personalização do Openbox, utilizando o gnome-panel carregado na inicialização do Openbox (autostart.sh), permitindo que o usuário personalize os paineis com mais facilidade, já que são os mesmos paineis que o Gnome usa…

Screenshot 5 - gmazk Blue theme para Openbox com gnome-panel

Screenshot 6 - gmazk Blue theme para Openbox com gnome-panel

Screenshot 7 - gmazk Blue theme para Openbox com gnome-panel

Screenshot 8 - gmazk Blue theme para Openbox com gnome-panel

Para instalar o theme, clique aqui para fazer o download, e em seguida, descompacte o arquivo e mova o diretório Gmazk que você acaba de extrair do arquivo para dentro do diretório de de themes do seu Openbox (/usr/share/themes) com o seguinte comando:

sudo mv Gmazk /usr/share/themes/.

Pronto, agora é só abrir o ObConf e o tema já estará lá pra você selecionar.

Para baixar o wallpaper, clique aqui.

Caso tenha alguma dúvida, ou não saiba nem o que é Openbox ;-) não deixe de ler meu artigo Openbox - Rápido, flexível e bonito a gosto do freguês.

Grande abraço a todos! Até a próxima…

4 comments

9

Jun

Openbox - rápido, flexível e bonito a gosto do freguês!

Publicado por gmazk  Publicado em Linux, OpenBox

Estou de volta pessoas! Escolhi o Ubuntu como base para esse tutorial pois é uma distribuição Linux extremamente amigável para o usuário iniciante, além de contar com a popularidade e imenso suporte de qualquer distribuição derivada do Debian. Este tutorial será baseado na distibuição Ubuntu Feisty (7.04). Ai você pergunta: “Mas gmazk, isso quer dizer que não funciona em outra distribuição?”… E eu respondo: “Isso apenas quer dizer que eu me preocupei em informar somente os pacotes cuja instalação se faz necessária, por não virem instalados por padrão nessa distribuição, não se preocupe”.

.

Nesse tópico vou me aprofundar no Openbox.

Pra quem ainda não sabe, o Openbox é um window manager (gerenciador de janelas) de aparência INICALMENTE minimalista, altamente configurável, totalmente adaptado aos padrões da freedesktop.org .

O grande diferencial do Openbox é sua extrema rapidez. Ele é instalado “limpo” na máquina, permitindo que o usuário adicione somente as funcionalidades e recursos visuais que realmente deseja usar, minimizando assim o consumo de recursos da máquina e deixando o máximo possível de recursos para os aplicativos. Ele é minha escolha pessoal e uso ele na minha máquina de trabalho no meu dia-a-dia.

Mesmo para os usuários iniciantes que ainda estão maravilhados com os efeitos visuais do Compiz Fusion, uma solução interessante é manter Gnome rodando com Compiz Fusion no sistema pra usar naqueles momentos em que queremos brincar com a máquina (afinal de contas, a vida não pode ser só trabalho ;-)) , e instalar e utilizar o Openbox pra usar no dia-a-dia, ou em momentos em que a produtividade, estabilidade e agilidade do sistema são prioridade.

Ao contrário do que muitos pensam, o Openbox também pode ficar muito bonito no seu desktop, mas você tem que configurá-lo pra isso.

Nesse post, vou explicar como instalar e configurar o Openbox, abordando também a instalação e configuração de alguns programas que utilizo para personalizar o Openbox e adicionar recursos visuais.

Em minha máquina uso o Openbox 3.4.4, junto com hsetroot (para definir o wallpaper ou cor do fundo de tela), fbpanel (painel, ou barra de tarefas, chame como quiser - uso raramente), xcompmgr (responsável pela composição de sombras ao redor das janelas e menus, além de efeitos de fade-in/out) e transset-df-5 + xbindkeys (responsáveis por atribuição de transparência às janelas em tempo real com o botão scroll do mouse). A utilização desses programas já vai lhe dar uma boa base de tudo que você pode fazer com o Openbox, e a partir dai, você pode sair à caça de outras opções de personalização e novas implementações de funcionalidade ao window manager em questão (vou postar tópicos futuros sobre mais opções de personalização e adição de novas funcionalidades).

Aí vão algumas screenshots do meu Openbox configurado dessa maneira (o tamanho “esticado” da imagem do screenshot fullscreen é porque uso 2 monitores, e a captura pega tudo)… Clique nos Screenshots para ampliá-los…

Screenshot 1 - gmazk Blue theme para Openbox

Screenshot 2 - gmazk Blue theme para Openbox

Bom, chega de blá blá blá, e mão à obra!

O primeiro passo é instalar os pacotes do Openbox 3.4.4 e do Obconf 2.0.2 (Openbox Configuration Tool - responsável por algumas configurações básicas do Openbox, como escolha de temas visuais, comportamento de foco das janelas, fontes e organização da barra de título das janelas, docking etc…)

Como as versões disponibilizadas pelos repositórios oficiais do Ubuntu não estão atualizadas, estou disponibilizando os links dos pacotes .deb das versões mais novas do Openbox e do Obconf. Basta que você faça o download dos pacotes clicando nos links abaixo, e depois de baixar, clique duas vezes sobre cada um deles em sua pasta de downloads pra instalá-los com o “Instalador de pacotes Gdebi”. Seguem os links:

Openbox 3.4.4 - openbox_3.4.4-0ubuntu1_i386.deb

Obconf 2.0.2 - obconf_2.0.2-0ubuntu1_i386.deb

Beleza… Devidamente instalados os pacotes vamos à algumas explicações antes de você entrar no Openbox, pra esclarecer algumas dúvidas que podem surgir…

Muita gente, depois de instalar o Openbox, erroneamente fala: “Ué gmazk, mas não aconteceu nada!!! Acho que não funcionou!”. E eu respondo: “Na verdade funcionou sim… Porém, funcionou tão bem e tão rápido que você nem teve a chance de perceber.”

Depois de instalar o Openbox, você tem que reiniciar o servidor X (<Ctrl>+<Alt>+<Backspace>) e irá aparecer pra você a tela do GDM (Gnome Display Manager - É o programa de login gráfico configurável que você vê assim que inicia seu sistema, onde você tem que digitar seu nome de usuário ou senha). A não ser é claro que seja um usuário mais avançado e tenha configurado seu sistema pra iniciar em modo texto sem iniciar o servidor X, ou então, que utilize outro gerenciador de login, mas se este é seu caso, com certeza já entende bem do que estou falando nesta etapa do tutorial e não precisa dar atenção a esta parte - falarei mais detalhadamente sobre o assunto “gerenciadores gráficos de login e login em modo texto” num próximo post.

Pois bem, na tela do GDM, pra iniciar o Openbox, você tem que clicar em “Opções” -> “Selecionar Sessão” -> “Openbox”. O GDM então irá perguntar se quer iniciá-lo apenas para a sessão atual ou torná-lo padrão. Isso é uma opção sua.

Ao entrar no Openbox, você não vai inicialmente ver “nada”. Isso porque a instalação padrão do Openbox conta apenas com um menu bem básico que aparece na tela quando você clica com o botão direito do mouse no desktop, e ainda não tem nenhum wallpaper ou barra de tarefas configurados…. É isso que vamos fazer agora…

Já está no Openbox? Não? Então corre pra lá rapaz! Entre no Openbox reiniciando o X conforme descrito acima, abra o Firefox com seu novo menu ainda “basicão” e continue lendo o artigo que agente deixa esse Openbox bonitão.

Pronto? Ótimo. Continuemos…

A primeira coisa a fazer é começar a personalizar seu menu, adicionando os programas que você quer que ele seja capaz de abrir. Você tem dois métodos para fazer isso… Manualmente editando o arquivo de extensão .xml do seu menu (menu.xml), ou usando um programa muito prático para fazer isso chamado Obmenu (Openbox Menu Editor).

Antes de mais nada, vamos criar sua pasta de configurações (caso a mesma ainda não exista)…

Abra o terminal (não abra o terminal como root usando o gksu, pois a pasta de usuário não será a mesma que a sua)…

Digite:

# mkdir -p ~/.config/openbox

# cd ~/.config/openbox

# cp /etc/xdg/openbox/* ./

Agora entenda o que você acaba de fazer:

~ é o endereço de sua pasta de usuário. Portanto, quando você escreve cd ~/.config e seu nome de usuário é abigobaldo, o comando equivale a escrever cd /home/abigobaldo/.config, ou seja, o comando leva você para dentro da pasta de configurações pessoais do seu usuário.
Com o mkdir -p você criou o subdiretório openbox dentro da sua pasta de configurações pessoais (~/.config/), pra poder editar depois os arquivos de configuração do openbox para o seu usuário. A opção -p (–parents) serve para que o comando mkdir crie o subdiretório recursivamente, ou seja, caso o diretório pai (.config nesse caso) não exista, ele também será criado. E caso ele já exista (o que é bem provável) ele irá simplesmente criar o diretório filho sem apresentar mensagem de erro alguma.

E por fim, o último comando copiou as configurações padrão instaladas com o openbox (que estão em /etc/xdg/openbox) para a pasta de configuração pessoal que você acabou de criar em ~/.config/openbox

Pronto. Dentro da pasta em que você está agora (~/.config/openbox) existe o arquivo menu.xml. Esse é o arquivo que contém as configurações do seu menu. Ele tem uma estrutura bem fácil de entender, e você pode modificá-lo usando um editor de textos qualquer de sua preferência para fazer adições e modificações ao menu do openbox.

A outra maneira de editar seu menu é utilizando o programa obmenu, que é um GUI (Graphical User Interface ou Interface Gráfica do Usuário) que edita esse arquivo pra você tornando sua personalização do menu mais prática e rápida.

Para usar o Obmenu ao invés de editar o menu.xml manualmente faça o seguinte:

Primeiro baixe o Obmenu 1.0 aqui –> obmenu-1.0.tar.gz

Depois entre no diretório para onde fez o download do arquivo e:

# tar -vzxf obmenu-1.0.tar.gz

# cd obmenu-1.0

Agora você deve instalar o programa, utilizando o seguinte comando (sua senha root será solicitada):

# sudo python setup.py install

Pronto, feito isso o Obmenu está instalado. Você pode executá-lo com o comando obmenu no terminal, e aproveitar pra inserir esse mesmo comando como um item do seu menu, já que estará personalizando ele agora, pra que você não precise executar o obmenu pelo terminal. O obmenu é bem simples e intuitivo, então não vou colocar aqui explicações a respeito de como usá-lo. Qualquer dúvida posta aí que agente resolve, ou me mande um e-mail (gmazk@multiversolinux.com). Não se esqueça que pra adicionar ao seu menu aplicativos que necessitam de privilégios de administrador pra funcionar, você tem que adicionar “gksu ” no começo da linha de comando a ser executado pelo item que está adicionando.

Beleza… A essa altura você já deve ter personalizado um pouco seu menu. Salve as alterações que fez com o obmenu clicando no botão pra salvar, e em seguida ao clicar com o botão direito no seu desktop já verá as alterações feitas (implementação da nova versão, pois em versões anteriores era necessário clicar em “reconfigure” no menu para que as alterações tivessem efeito.

Ótimo. Agora vamos passar para a parte da perfumaria, definindo seu wallpaper, ou cor de fundo de tela se preferir, e ativando sua barra de tarefas, sombras das janelas e transparências.

Instale os programas de atribuição de fundo de tela, composição, atribuição de função a teclas e painel que vou usar neste guia, pelo terminal, com o seguinte comando:

# sudo apt-get install hsetroot xcompmgr xbindkeys fbpanel

Vamos aproveitar que estamos instalando coisas e instalar outros pacotes que são dependências de alguns recursos que vamos utilizar… Manda ver…

# sudo apt-get install libxcomposite-dev libxfixes-dev libxdamage-dev libxrender-dev libxext-dev transset

Como você terá que compilar (calma, é fácil. E pare de ser preguiçoso! ;-)) o transset-df, instale o pacote build-essential, caso ainda não o tenha instalado, com o seguinte comando:

# sudo apt-get install build-essential

Estes pacotes que você acaba de instalar são necessários para que seja possível usar o recurso de mudar a transparência das janelas em tempo real com a rodinha do mouse. IMPORTANTE: Para esse recurso também é necessário que o recurso composite esteja ativo em seu sistema. Você pode ver no arquivo /var/log/Xorg.0.log se, durante a inicialização do servidor X, o recurso composite foi ativado. Caso tenha sido ativado, você verá no Xorg.0.log uma linha parecida com esta: (II) Initializing built-in extension COMPOSITE. Caso não esteja ativado, você pode ativar o recurso editando o seu arquivo /etc/X11/xorg.conf e adicionando as seguintes linhas :

Em –> Section “Extensions” acrescente as linhas :

Option “Composite” “Enable”
Option “RENDER” “Enable”

Caso sua placa seja ATI acrescente também em –> Section “Device” as linhas:

Option “AllowGLXWithComposite” “true”

Option “backingstore” “true”

Caso sua placa seja NVidia acrescente também em –> Section “Device” as linhas:

Option “AllowGLXWithComposite” “true”

Option “RenderAccel” “true

Após editar essas configurações, reinicie o servidor X novamente com <Ctrl>+<Alt>+<Backspace> e verifique seu /var/log/Xorg.0.log novamente. Agora o recurso composite já deve estar ativado em sua máquina.

IMPORTANTE: Caso sua placa de vídeo seja ATI e você esteja usando os drivers proprietários da ATI no seu sistema, o Composite irá lhe causar problemas, pois apenas os drivers opensource da ATI são compatíveis com o Composite.

Agora só falta instalar mais um pacote e você já estará pronto pra aplicar todos os recursos instalados em seu Openbox. Vamos agora instalar o transset-df-5, que é basicamente o transset que instalamos dos repositórios convencionais na etapa anterior, porém melhorado. Ele nos permite algumas funções a mais que o transset convencional, tais como selecionar uma janela para aplicar transparência apenas apontando pra ela, selecioná-la por nome ou ID, e aumentar ou diminuir a transparência de forma dinâmica (em tempo real).

Para instalar o transset-df-5:

Baixe o arquivo de instalação aqui –> transset-df-5.tar.gz

Após baixar o arquivo, entre na pasta para onde o baixou pelo terminal e execute os seguintes comandos:

# tar -vzxf transset-df-5.tar.gz

# cd transset-df-5

# make

# sudo make install

Pronto, agora com o transset-df-5 instalado terminamos a parte das instalações…

Agora é hora de editar o arquivo ~/.config/openbox/autostart.sh (arquivo responsável por executar os programas que você deseja na inicialização do Openbox). Abra o arquivo com o editor de textos de sua preferência, e faça as seguintes alterações:

Localize a linha “test -z $BG || $BG bla bla bla…” e modifique-a para que fique assim:

test -z $BG || $BG -fill /home/SUA_PASTA/PASTA_DO_SEU_WALLPAPER/seuwallpaper.xyz

exemplo: Se a imagem que você usa como wallpaper está em /home/abigobaldo/wallpaper/loira.jpg, então sua linha vai ficar assim:

test -z $BG || $BG -fill /home/abigobaldo/wallpaper/loira.jpg

Logo abaixo dessa linha que você acabou de alterar, acrescente as seguintes linhas:

fbpanel &

xcompmgr -cC &

xbindkeys &

update-notifier &

nm-applet &

O simbolo & no final de cada linha serve para que o comando seja executado em background, e seu script de inicialização (autostart.sh) continue sendo executado. Note que eu adicionei o comando update-notifier &, que é um comando do Gnome que tem como objetivo manter ativo um alerta de autializações que devem ser feitas no sistema quando surge a necessidade, e também adicionei o nm-applet, que é o mini-aplicativo gerenciador de rede (muito útil para quem possui rede wireless ou então mais de uma conexão de rede), que permite ao usuário selecionar a(s) rede(s) que deseja conectar ativar ou desativar, e também mostra o status e informações sobre a conexão na barra de tarefas (mostra também a potência de sinal de rede para quem usa wireless). Agora salve o arquivo e feche o editor de textos.

Por último, crie com o editor de textos de sua preferência o arquivo ~/.xbindkeysrc com o seguinte conteúdo:

“transset-df –min 0.1 -p –dec 0.1″
alt + b:5

“transset-df -p –inc 0.1″
alt + b:4

Cuidado… São dois traços juntos (- -) antes de “min” “dec” e “inc”. Agora salve e feche o arquivo. Não copie o texto acima e cole para o arquivo, pois devido a uma característica do wordpress, as aspas (”) não vão ser coladas no seu arquivo como o caractere apropriado… Para criar seu arquivo use o conteúdo DESTE LINK -> .xbindkeysrc .Esse arquivo que você acaba de criar (~/.xbindkeysrc) informa ao xbindkeys que o comando transset-df deve ser utilizado para alterar a transparência das janelas que estão sob o cursor do mouse conforme você segura a tecla <Alt> e gira o botão de rolagem do mouse.

Pronto… Tudo certo. Caso não tenha ocorrido nenhum erro durante o processo, a próxima vez que você reiniciar o servidor X e selecionar o Openbox como sessão, já vai estar com seu Openbox configurado com barra de tarefas, sombras nas janelas, menu personalizado e transparência modificável de janelas com <alt>+<botão de rolagem do mouse>, e já vai ter uma boa noção de como implementar novos recursos visuais e funcionalidades usando outros programas de sua preferência.

Gostaria de salientar que, dependendo da performance de seu computador, a utilização do xcompmgr e do xbindkeys (que são responsáveis pela composição e modificação de sombras e transparências das janelas), podem causar uma certa lentidão durante a movimentação das janelas pelo seu desktop, o que a meu ver vai um pouco contra o principal atrativo do Openbox, que é beleza + extrema rapidez. Portanto, você decide se prefere utilizá-los ou não. Caso não queira utilizar, simplesmente remova as linhas do xcompmgr e do xbindkeys no script de inicialização do Openbox que você editou (autostart.sh).
Mais uma dica: Junto com meu Openbox, gosto de usar o gerenciador de arquivos thunar (mais leve que o nautilus, gerenciador padrão do Gnome, e com funcionalidades bem legais, como por exemplo a montagem automática de dispositivos removíveis plugados na máquina). Caso queira experimentar, instale o thunar com o seguinte comando:

# sudo apt-get install thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman-plugin thunar-vfs-1-2

(um único comando apesar de aparecer aqui em duas linhas)

Depois de instalado, é só inserir um link pra ele em seu menu com o obmenu, ou então executá-lo com o comando thunar no terminal.

Caso você prefira, pode usar também o painel do Gnome com o Openbox, substituindo o comando fbpanel & (no arquivo autostart.sh) sugerido acima por gnome-panel & . Muitos preferem fazer isso, tendo em vista que já estão mais acostumados com a falicidade de personalização do painel do Gnome. Lembre-se também que você pode usar outros paineis de sua preferência, colocando-os no arquivo autostart.sh da mesma forma, e também outros tipos de aplicativos, como desklets, pidgin, skype e afins, também adicionando-os no autostart.sh para que eles iniciem automaticamente quando você iniciar seu sistema. Só não se esqueça de usar sempre o & no fim da linha de cada comando, para que o script de iniclização autostart.sh não fique parado ao executar algum dos comandos.

Agora vai lá testar seu novo Window Manager… Enjoy!

Até a próxima. Grande abraço a todos!

Agradecimento ao pibarnas do canal #ubuntu-br que me apresentou todas as melhorias da versão nova, pois eu estava desatualizado, e me fez boas sugestões referentes ao artigo.

 
icon for podpress  Chicken dog - John Scofield [6:24m]: Play Now | Play in Popup | Download
no comment

2

Jun

Esquemas de particionamento para o GNU/Linux

Publicado por gmazk  Publicado em Linux, Particionamento

Este artigo é destinado aos usuários que pretendem instalar ou reinstalar o GNU/Linux fazendo um planejamento adequado de particionamento.

Um planejamento correto do esquema de particionamento do seu HD (ou dos seus HDs) podem tornar seu sistema muito mais SEGURO, e até mesmo mais rápido dependendo do tipo de utilização que seu sistema vai ter.

.

O que é particionamento:

Particionamento pode ser definido essencialmente como o ato de criar divisões lógicas dentro de uma unidade física de armazenamento de dados. É dividir um dispositivo de armazenamento de dados de maneira que cada divisão lógica criada seja reconhecida pelo sistema operacional como um dispositivo de armazenamento independente. O uso mais comum do particionamento de disco rígido é a instalação simples de mais de um sistema operacional, de forma que cada sistema fique restrito à sua partição, não misturando dados com o outro sistema e evitando possíveis conflitos, e também para que cada sistema possa utilizar seu próprio filesystem (entenda melhor o que é filesystem no artigo Entendendo Tecnicamente o GNU/Linux). Também é muito utilizado o particionamento para simplesmente separar, em um mesmo sistema, arquivos de sistema e arquivos de dados, de maneira que o sistema possa ser reinstalado sem a perda de dados como documentos, fotos, vídeos, músicas, etc… Iremos ver nesse artigo, que o GNU/Linux por ser um sistema extremamente completo e de estrutura amplamente flexível, permite um adequado esquema de particionamento para garantir uma maior segurança/funcionalidade do sistema.

Existem basicamente três tipos de partições possíveis para uma unidade de armazenamento: partições primárias, partições estendidas e partições lógicas. Como o esquema inicial de particionamento de unidades de armazenamento dos PCs permitia apenas a criação de quatro partições primárias em uma mesma unidade, surgiu a necessidade da utilização da partição estendida, que permite que sejam criadas até 255 partições lógicas dentro dela, superando assim o limite máximo de quatro partições em uma mesma unidade de armazenamento, que existe quando utilizamos apenas partições primárias. As partições estendidas não podem ser utilizadas diretamente para a alocação de dados… É necessário que sejam criadas partições lógicas dentro dela, e é nas partições lógicas que serão alocados os dados. Por isso as partições estendidas devem ser encaradas apenas como uma divisão primária que armazena partições lógicas dentro dela, e não como uma partição em que se escrevem dados diretamente. Cada unidade de armazenamento pode ter apenas UMA partição estendida, ou seja, o limite máximo de partições de um HD, por exemplo, é de 3 partições primárias mais uma partição estendida (podendo esta conter seu limite máximo de partições lógicas dentro dela)… ou seja, é partição pra caralh@#$!%& rsrsrsrs ;-). Cada partição primária ou lógica, é vista pelo sistema como uma unidade de armazenamento independente, e por isso, cada uma tem seu próprio filesystem e permanece absolutamente sem conflitos com a outra.

Para falar sobre particionamento, primeiro quero esclarecer algumas coisas… LEMBRE-SE QUE qualquer alteração indevida ao lidar com processo de particionamento pode levar você a perder todos os dados que possa ter em seu HD, portanto, tome cuidado e faça tais modificações por sua conta e risco… Recomendo que o usuário faça sempre um backup de seus dados importantes antes de lidar com partições. Depois não venha com lamentações, pois eu avisei. No caso de alguma catástrofe, vá reclamar pro bispo… ;-)

Quero lembrar também que para fazer o particionamento do HD ou para redimensionar partições já existentes você pode usar o GParted, ou então o programa de particionamento de sua preferência. Eu particularmente recomendo que você tenha sempre a mão um Live CD (cd bootável) com ferramentas de particionamento, backup e recuperação de dados, pois você nunca sabe quando vai precisar. Eu uso sempre um Live CD chamado Gparted + Clonezilla… Além de possuir o GParted, que é um ótimo programa de particionamento, possui também o Clonezilla, que é uma ferramenta de backup que permite que você grave uma ou mais partições (ou até mesmo seu HD inteiro) em um arquivo-imagem compactado, para que você possa restaurar seu sistema exatamente como estava no momento do backup, em poucos minutos, sem precisar passar por nenhum processo de instalação. Pretendo escrever um artigo futuro sobre a utilização desse Live CD, porém ambos são programas bem simples e intuitivos. Para baixar a imagem do Live CD do Gparted + Clonezila clique aqui. Existe também o Ultimate BootCD com ferramentas de teste de hardware, recuperação, backup e gerenciamento de HDs.

Quero lembrar também, aos usuários que utilizam Windows, que realizem uma desfragmentação do disco antes de redimensionar partições desse sistema para evitar o risco de perda de dados, pois o filesystem NTFS provoca grande fragmentação.

Caso você utilize Windows e pretenda mantê-lo em seu HD junto com o GNU/Linux, você pode utilizar o conhecido software de particionamento Partition Magic, a partir do próprio Windows, para redimensionar a partição do sistema e liberar espaço para a instalação do Linux. Num próximo artigo vou falar de maneira mais aprofundada sobre o MBR (Master Boot Record), setor inicial de todo HD que ocupa os primeiros 512 bytes do disco, que contém informações sobre a inicialização dos sistemas operacionais e informações sobre o esquema de particionamento. O artigo sobre MBR e grub será importante para que você entenda como funciona o gerenciador de boot e como manter dois ou mais sistemas operacionais funcionando em seu computador, selecionáveis durante o boot. Por enquanto vamos falar apenas do particionamento.

Bom, feitas as considerações, vamos à parte que realmente interessa. O particionamento de espaço livre do HD para a instalação do GNU/Linux…

A princípio, podemos instalar o sistema GNU/Linux dispondo de apenas 2 partições. Uma destinada a SWAP (você pode entender melhor o que é SWAP ou Memória Virtual lendo meu artigo “Entendendo tecnicamente o GNU/Linux“) e outra destinada ao sistema operacional, instalando-o inteiro em uma única partição. Mas isso não é recomendável, e você vai entender o por que no decorrer desse artigo. Apesar de seu uma prática bastante comum, principalmente entre usuários iniciantes e instalações domésticas, instalar o GNU/Linux somente em duas partições, o sistema também pode ser instalado de forma com que determinados diretórios fiquem em partições separadas do disco, e até mesmo em outros computadores na rede (porém não vou abordar esse tipo de caso, pois é utilizado apenas no caso de necessidades mais específicas). Quero lembrar antes de mais nada, que devem ficar na mesma partição, o diretório raiz (/), /bin, /etc, /dev, /initrd, /lib e /sbin, e recomendo que fique também o /boot, já que são diretórios necessários no momento de inicialização do sistema, e que contém configurações e arquivos executáveis essenciais do sistema (entenda melhor o esquema de diretórios GNU/Linux no artigo sobre a Estrutura básica de Diretórios), e por isso, devem ser mantidos numa mesma partição, até mesmo para um momento de falha no sistema, em que serão utilizados para um procedimento de recuperação.

Podemos começar o esquema de partiocionamento agora com uma recomendação que é apropriada até mesmo para usuários que pretendem utilizar o computador pra atividades comuns (entenda-se utilização doméstica genérica - lêr emails, acessar a internet, escutar música, jogar, editar textos, etc…). No caso de você precisar, ou querer, instalar uma nova versão do GNU/Linux “do zero”, ou até mesmo no caso de um momento “putz… fodeu tudo!”, se você fizer a instalação do sistema operacional INTEIRO em uma mesma partição, ao formatá-la você irá perder tudo, até mesmo suas configurações pessoais, personalizações de área de trabalho, documentos, fotos, e-mails, etc… E nós sabemos que isso não é nada agradável, e também sabemos que a grande maioria dos usuários “comuns” não é muito chegada em fazer backups constantes de seus arquivos pra evitar esse tipo de catástrofe.

Pois bem, minha primeira recomendação é que você crie uma partição exclusiva para o mount-point (ponto de montagem) do diretório /home

Conforme você já teve a oportunidade de ler no artigo “Estrutura básica de diretórios no GNU/Linux“, o diretório /home é o diretório que armazena todos os seus documentos e configurações pessoais. Portanto, se você tiver esse diretório em uma partição separada, você poderá formatar tranquilamente a partição principal (entenda-se partição onde está montado o diretório raiz (/)), e suas configurações e dados pessoais permanecerão preservados em sua partição individual. Basta que você indique na próxima instalação do GNU/Linux que você fizer, que o mountpoint (ponto de montagem) dessa partição é /home.

O diretório /tmp é outro que merece atenção no esquema de particionamento. Por ser um diretório utilizado pelo sistema para armazenar arquivos temporários com informações necessárias a execução de tarefas, é um diretório com uma pequena demanda de espaço, e suscetível a um eventual crescimento descontrolado de dados causado por mal funcionamento de algum programa “bugado” ou até mesmo por um usuário mal intencionado do sistema, e essa fragilidade pode ser devidamente corrigida, simplesmente fazendo com que o diretório /tmp fique em uma partição individual, com espaço pequeno, pois isso limitará sua quantidade de dados, impedindo que esse tipo de problema eventual provoque o consumo de espaço em áreas essenciais do sistema.

A mesma recomendação segue para o diretório /var, que também é suscetível ao crescimento descontrolado de dados que pode ocorrer em consequência, por exemplo, de um ataque ao servidor de emails (/var/spool/mail) ou servidor web (/var/www) da máquina. Por isso, recomendo que também o diretório /var fique em sua partição individual, com o espaço específico que você julgar necessário. Dessa forma, caso algum usuário do sistema começasse a receber muitas mensagens de SPAM por email, por exemplo, somente a partição individual do diretório /var teria seu espaço consumindo, garantindo a segurança do restante do sistema, e facilitando ao administrador do sistema (provavelmente você ;-)) uma solução rápida para resolver o problema.

Mesmo que um diretório já esteja em sua partição individual, você pode ainda, caso queira, deixar um subdiretório deste mesmo em uma outra partição individual. Exemplificando: Imagine que seu diretório /var já esteja em sua partição individual para garantir a segurança citada acima, e que você pretenda habilitar um webserver (apache2 por exemplo) em seu sistema, que permite que seus usuários faça upload de arquivos… Você pode determinar que o subdiretório www (/var/www - diretório onde ficam por padrão os dados do webserver) fique em outra partição individual, garantindo assim que o espaço reservado ao webserver em questão fique limitado ao espaço da partição criada para armazená-lo.

Minha última recomendação (até porque agora você já deve ter entendido a lógica dos esquemas de particionamento e já é capaz de implementar medidas de segurança/funcionalidade específicas para sua utilização) é reservar uma partição individual com o tamanho que julgue necessário, no momento da instalação do Linux, para armazenar futuros backups importantes em um diretório específico para isso (/backup por exemplo). Isso complementa a primeira recomendação (de separar o /home) e vou exemplificar por que… Imagine que você vá instalar futuramente uma distribuição GNU/Linux, que utilize por padrão programas e arquivos de configuração pessoal diferentes ou incompatíveis com os da distribuição que você está instalando agora… Nesse caso, manter o mesmo diretório /home que você já está utilizando não seria totalmente eficaz, pois uma na migração para novos programas, alguns arquivos pessoais de configuração do diretório /home poderiam não ser mais utilizados. Nesse caso, você poderia jogar apenas os arquivos essencialmente necessários (tal como o xorg.conf por exemplo, que configura o servidor X para sua placa de vídeo e monitores, e outros que você certamente gostaria de poupar numa formatação para facilitar a instalação de um novo sistema Linux) para seu diretório de backup, e eles estariam ali preservados em sua partição indivudual enquanto você pode formatar todas as demais partições sem perder esses dados.

.

Conclusão: Foi demonstrada nesse artigo a importância de um esquema apropriado de particionamento para aumentar a segurança e funcionalidade de seu sistema. Recomendo que, para que você possa fazer seu próprio esquema de particionamento de maneira adequada, você pense bem na utilização que vai fazer do PC, pois só assim você vai poder dimensionar as partições de maneira apropriada, e separar tudo o que é necessário de forma mais inteligente.

Grande abraço a todos! Até a próxima…

 
icon for podpress  Jeep on 35 - John Scofield [4:28m]: Play Now | Play in Popup | Download
no comment

26

May

Estrutura básica de diretórios no GNU/Linux

Publicado por gmazk  Publicado em Introdução, Linux

Neste tópico, vou falar um pouco sobre a estrutura básica de diretórios dos sistemas operacionais GNU/Linux.

Como você já sabe, um diretório é uma separação lógica dentro de um filesystem. Com o surgimento dos gerenciadores de janelas (window managers) como o Gnome, KDE e outros, muitos usuários passaram a chamar os diretórios de “pastas”, já que os mesmos normalmente são representados por ícones de pastas (bem óbvio ;-)). Bom, chame como quiser. O importante é que você tenha em mente a importância fundamental de conhecer a estrutura básica de diretórios do sistema GNU/Linux, pra saber configurá-lo e utilizá-lo corretamente.

A estrutura primária (ou básica) de diretórios engloba todos os diretórios que estão diretamente ligados ao diretório raiz do sistema, ou seja, o diretório / , que é o ponto de origem de todos os subdiretórios do sistema.

Num próximo post, vou falar mais profundamente sobre a importância de um planejamento de particionamento correto para que o usuário possa configurar seu sistema para tipos específicos de utilização, otimizando seu desempenho, flexibilidade, organização e segurança. Para que você possa compreender esse tema, é muito importante que você já tenha uma noção da função e conteúdo de cada um dos diretórios básicos do sistema GNU/Linux.

As distribuições baseadas no Debian seguem basicamente a estrutura padrão de diretórios Unix, regulada pela norma FHS (Filesystem Hierarchy Standard - http://www.pathname.com/fhs), sendo que existe também uma adaptação específica para os sistemas operacionais GNU/Linux… a LFH (Linux Filesystem Hierarchy - http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/) que não tem tanta atenção por parte dos desenvolvedores como a FHS em virtude do nível de padronização que a mesma atingiu.

Como sempre, chega de blá blá blá e vamos logo ao mais importante… Seguem abaixo os diretórios básicos do sistema GNU/Linux e a descrição de sua função/conteúdo:

.

/bin - É o diretório onde ficam armazenados os arquivos executáveis que podem ser executados por qualquer usuário do sistema;

.

/boot - É o diretório que contem a imagem do Kernel Linux e os arquivos de boot do sistema, bem como o gerenciador de boot que você usa em sua máquina. Esta pasta deve ser estudada com especial atenção, pois qualquer alteração feita indevidamente em seu conteúdo pode comprometer a inicialização do sistema. É dentro desse diretório que se localiza o grub (gerenciador de boot utilizado pela grande maioria dos usuários de distribuições GNU/Linux atuais);

.

/cdrom - Não é propriamente um diretório, mas sim um link para o diretório /media/cdrom (ponto de montagem do dispositivo leitor de CD/DVD da máquina;

.

/dev - É o diretório que contém os device drivers de que falei no segundo post do blog (introdução ao sistema GNU/Linux), ou seja, contém os arquivos que servem de ligação com os dispositivos de hardware da máquina;

.

/etc - É o diretório que contém quase todos os arquivos de configuração do sistema operacional GNU/Linux.

.

/home - Como o próprio nome já diz, é a “casa” do usuário dentro do sistema. Ou melhor, eu chamaria de condomínio dos usuários no sistema, já que dentro dele estão os subdiretórios individuais dos usuários do sistema, onde se encontram todas configurações e documentos pessoais de cada usuário. Ele é a base para os diretórios próprios de cada usuário. Se o seu nome de usuário no sistema é abigobaldo, por exemplo, seu diretório pessoal é /home/abigobaldo . Cabe ressaltar que ao logar-se no sistema, você pode acessar seu diretório pessoal no terminal simplesmente com o comando cd ~ , já que o sistema interpreta o ~ (tio) como /home/seudiretóriopessoal;

.

/initrd - Este diretório é utilizado pelo Kernel Linux durante o boot como um HD virtual criado na memória RAM da máquina (um RAM disk);

.

/lib - Neste diretório estão os módulos e libraries (bibliotecas) do Kernel Linux utilizadas durante o boot do sistema e também utilizadas por arquivos executáveis do sistema após o boot.

.

/lost+found - Este diretório pode não estar presente na sua máquina se você procurar por ele agora, e isso é um bom sinal. Esse diretório é criado apenas quando sistemas que utilizam filesystems jornalados (leia mais a respeito no post de Introdução ao sistema GNU/Linux) tem que fazer uma recuperação de filesystem após um problema (normalmente desligamento abrupto da máquina por queda de energia). É nesse diretório que são colocados os arquivos que puderam ser encontrados e recuperados após um problema com o filesystem, porém, eles são colocados lá sem seu nome original, que possuíam antes da falha.

.

/media - É o diretório base de todos os mount-points (pontos de montagem) de mídias removíveis do sistema, tais como disquetes, HDs USB portáteis, Pendrives e CDs;

.

/mnt - É um outro diretório base de pontos de montagem, porém para este existe a convenção de se montar dispositivos fixos da máquina nele, como seu HD interno, por exemplo. Mas nada impede que você monte uma mídia removível ou até mesmo um diretório qualquer de outra máquina da sua rede local neste diretório;

.

/opt - Se verificar o conteúdo deste diretório, MUITO provavelmente ele estará vazio. A idéia inicial deste diretório era armazenar programas que não fizessem parte da distribuição GNU/Linux instalada em seu sistema, porém, esse método de separação quase não é utilizado;

.

/proc - Não é bem um diretório. Trata-se de um filesystem virtual, cheio de arquivos virtuais, que na verdade são apenas referências dinâmicas dos procedures (procedimentos) do Kernel Linux, que são alteradas constantemente durante a utilização do sistema;

.

/root - O diretório do mandachuva… do big boss do sistema. Esse é o diretório do superusuário do sistema (pode chamar de administrador se quiser). O único usuário do sistema com permissão para realizar qualquer modificação no sistema. Aí você me pergunta: “Mas gmazk, se é uma pasta de usuário, porque não está dentro de /home ?”. E eu explico: conforme você vai ver na minha próxima publicação (a respeito de planejamento do particionamento da maquina e instalação do sistema), é conveniente durante a instalação do sistema, determinar que o diretório /home seja montado em uma partição separada da partição principal (onde estão os demais diretórios do sistema). Se o diretório root estivesse nessa partição separada (dentro de /home) e ocorresse com essa partição, o que costumo chamar de um “momento PUTZ… FODEU!”, a pasta /root também estaria inacessível, e como você já sabe, certas coisas só podem ser feitas no sistema pelo usuário root… Então você não poderia, por exemplo, inicializar o sistema para realizar uma recuperação nessa partição;

.

/sbin - O nome vem de System BINnaries. Este diretório, assim como o /bin, armazena arquivos executáveis, porém nele ficam os executáveis relacionados com a manutenção e administração do sistema, sendo que a grande maioria deles só podem ser executados pelo superusuário (root), salvos alguns casos, como o ifconfig, por exemplo, que pode ser executado por outros usuários, porém com a especificação completa de localização (ou seja, incluindo o endereço completo - /sbin/ifconfig) já que nas variáveis de PATH (variável que indica ao sistema onde procurar por arquivos cujos endereços completos não são especificados pelo usuário no momento da execução do comando) dos usuários comuns não estão os diretórios /sbin e /usr/sbin;

.

/srv - É um diretório que sofre do mesmo problema de esquecimento e solidão que o diretório opt, pois não é utilizado nunca… A idéia inicial era usá-lo para armazenar dados que seriam disponibilizados por qualquer programa servidor que você utilizasse no sistema, mas foi outra idéia que “não pegou”;

.

/sys - O nome vem do sysfs (sys filesystem). É o diretório usado pelo Kernel Linux para manter dados atualizados sobre os dispositivos de hardware da máquina (não confunda, não é a mesma coisa que /dev, já que no /dev estão arquivos que servem de ligação com os dispositivos, e não informações sobre eles);

.

/tmp - É um diretório utilizado pelo sistema para armazenar informações temporárias, que são apagadas quando você reinicia o sistema. Portanto, não arrisque colocar sua pasta de documentos profissionais ai dentro ;-) ;

.

/usr - É o diretório que armazena todos os dados “não críticos” (entenda-se não essenciais para o funcionamento da base do sistema) do sistema operacional. Ele também contem arquivos executáveis nos subdiretórios /usr/bin e /usr/sbin, porém, não são arquivos necessários para uma inicialização mínima do sistema num momento “putz… fodeu!”, e por isso, podem ser armazenados nestes diretórios. O termo usr não vem de users como muitos pensam, mas sim de Unix Shared Resources (Recursos Compartilhados Unix);

.

/var - Este diretório armazena os dados VARiáveis do sistema (não confunda com dados temporários do /tmp pois estes não são apagados a cada inicialização do sistema). Dentro deste diretório estão todos os logs do sistema (no subdiretório /var/log), assim como o spool de impressoras do sistema. Caso você tenha um WebServer ou um MailServer ativo em seu sistema, é dentro do diretório /var que vão ficar os dados acessíveis. Por exemplo, se você instalar o servidor web Apache2, as páginas que serão disponibilizadas (servidas) pelo programa estarão em /var/www.

.

Pronto… Agora você já conhece toda a estrutura básica de diretórios do sistema operacional GNU/Linux, e já deve estar bem mais familiarizado com o sistema. Cabe ressaltar que dos diretórios mencionados, os seguintes são utilizados diretamente durante o boot do sistema, e por isso tem que estar “íntegros”:

bin, boot, dev, etc, initrd, lib, proc, root, sbin

Portanto não permita nunca que ocorra um momento “putz… fodeu!” com nenhum desses diretórios, pois se ocorrer, você vai enfrentar na verdade um momento “PUTZ… fodeu MESMO!!!”.

Espero ter esclarecido mais um pouco sobre nosso fantástico sistema operacional para os usuários iniciantes do mundo Linux. Pretendo fazer minhas próximas publicações falando de particionamento, planejamento de instalação, e também um post exclusivo sobre boot e seus intermináveis problemas para o iniciante (e até mesmo para o usuário experiente).

Até logo!

Grande abraço a todos!

 
icon for podpress  Chank - John Scofield [6:47m]: Play Now | Play in Popup | Download
no comment

19

May

Entendendo tecnicamente o GNU/Linux.

Publicado por gmazk  Publicado em Introdução, Linux

Continuando a parte de contextualização, pretendo com este post passar alguns conceitos técnicos introdutórios sobre os sistemas operacionais GNU/Linux.

Vou abordar neste tópico os seguintes temas:

- características e estrutura básica do sistema;

- características e modo de funcionamento do Kernel;

- filesystems (sistemas de arquivos);

- outros aspectos importantes para o usuário iniciante ou que desconhece o mundo Linux, e até mesmo usuários já experientes que iniciaram sua utilização do GNU/Linux com foco em aspectos específicos do sistema e ainda não tiveram a oportunidade de vislumbrá-lo como um todo.

Um de meus objetivos com este website é desmistificar um pouco o mundo Linux, ainda visto por muitos que não conhecem o sistema, ou por iniciantes, como um amontoado confuso de recursos que exigem habilidades técnicas excepcionais por parte do utilizador, o que não é verdade… Pra desmistificar temos que explicar, e ao contrário do que todos fazem, vou começar com a parte mais técnica de funcionamento do sistema, e com o tempo ir abordando os aspectos práticos e publicando meus tutoriais e dicas no bom e velho estilo HOW-TO. Quero organizar e publicar meus posts no website dando prioridade para temas que permitam que usuários iniciantes e corporativos possam migrar de forma indolor para o sistema GNU/Linux sabendo exatamente o que estão fazendo ao invés de simplesmente seguir instruções inexplicadas que podem trazer pânico quando algo dá errado, e também para que usuários intermediários e avançados que só tiveram até hoje foco específico em certos recursos do sistema operacional possam estudá-lo “como um todo”, aprimorar seus conhecimentos e contribuir de forma participativa com suas próprias experiências, somando força a uma das principais e mais empolgantes características do Mundo Linux, que é a colaboração ativa que ocorre na comunidade.

Meu objetivo neste tópico não é me aprofundar muito nas explicações técnicas a respeito do funcionamento do sistema operacional, porém vou citar superficialmente alguns pontos importantes, que apesar de desnecessários para conhecimento de usuários iniciantes, são importantes para a compreensão do sistema operacional como um todo.

Bom, vamos ao que realmente interessa…

Se você já leu meu primeiro post no website, que trata da história do GNU/Linux (recomendo que leia caso ainda não o tenha feito), já teve a oportunidade de perceber que quando falamos em Linux de maneira abrangente, estamos nos referindo ao Sistema Operacional GNU/Linux, que é fundamentalmente um conjunto de aplicativos e funcionalidades (normalmente de código aberto, sejam eles feitos para o projeto GNU pela Free Software Fundation ou não) trabalhando sob o controle do Kernel Linux (cérebro ou núcleo - representa a camada mais baixa de interface com o hardware, sendo responsável por gerenciar os recursos do sistema como um todo), que trabalha da seguinte maneira:

O Kernel Linux é um Kernel monolítico, ou seja, todas as suas funções (acesso e gravação nos filesystems (sistemas de arquivos), operações de entrada e saída, gerenciamento de memória, e agendamento de processos) são realizadas no espaço do próprio Kernel, ou seja, são todas realizadas em um único bloco com todas as funcionalidades básicas carregadas na memória.

A grande vantagem do Kernel Linux é que muitas funções podem ser compiladas e executadas como módulos (LKM - Loadable Kernel Modules ou Módulos Carregáveis do Kernel), que são bibliotecas compiladas separadamente da parte principal do Kernel e podem ser carregadas e descarregadas pelo sistema mesmo com o Kernel já estando em execução (pra quem não sabe, compilar um programa ou módulo é basicamente “interpretá-lo” para transformar as instruções de alto nível - ou linguagem humana - nele contidas em instruções de baixo nível - ou “linguagem de máquina” - para que não ocorram, durante a execução do mesmo, perdas de tempo com a necessidade de interpretar as instruções uma a uma utilizando um interpretador qualquer).

Outra característica fantástica do Kernel Linux é sua incomparável portabilidade, que permite que o mesmo seja utilizado em sistemas mínimos (como celulares e palmtops) até sistemas de enorme porte, como densos mainframes. Por outro lado, temos também a enorme portabilidade no sentido do Kernel ser extremamente compatível com uma imensa variedade de fontes que podem ser compiladas e utilizadas em Linux.

.

Como funciona o Kernel…

1- Os filesystems (sistemas de arquivos)

Filesystem, ou sistema de arquivos, é o sistema utilizado pelo Kernel Linux para organizar, acessar e escrever os arquivos nos discos ou mídia de armazenamento disponível no sistema. Ou seja, é um artifício usado pelo Kernel para controlar a gravação e leitura dos dados (no seu disco rígido, por exemplo).

Existem vários tipos de filesystems, sendo que os mais conhecidos para GNU/Linux são:

- os baseados em discos -> Ext2, Ext3, ReiserFS, XFS, JFS e ISO 9660;

- os baseados em rede -> NFS, SMBfs, Coda e AFS;

- os filesystems especiais -> Utilizados em diretórios como o /proc, ramfs e devfs.

Cada filesystem tem suas especificações, tais como tamanho de blocos (ou espaços delimitados destinados ao recebimento dos arquivos) e técnicas especiais de recuperação em caso de falhas.

- Filesystems “jornalados” ou journaling filesystems, são filesystems que utilizam técnicas de recuperações em caso de falhas (como desligamentos abruptos, queda de energia e outros tipos de desastre de sistemas de arquivos). A expressão “journal” está ligada à ideia de se manter um log ou registro de eventos realizados no filesystem.

Os sistemas de arquivos com journaling mais utilizados atualmente em sistemas operacionais GNU/Linux são: o ReiserFS (criado por Hans Reiser), o Ext3 (criado por Stephen Tweedie), o XFS (criado pela Silicon Graphics) e o JFS (criado pela IBM). Minha opção pessoal é o ReiserFS, que além de muito seguro e de fácil recuperação em caso de desastres, se mostra atualmente mais eficiente ao trabalhar com arquivos pequenos e tão eficiente quanto aos demais ao trabalhar com arquivos grandes, por realizar a distribuição dos arquivos nos blocos de uma maneira mais inteligente sob meu ponto de vista.

O sistema GNU/Linux atualmente também é capaz de ler e escrever no sistema de arquivos NTFS (sistema de arquivos proprietário da empresa microsoft).

Em meu próximo post, irei explicar detalhadamente a estrutura de diretórios usada pelos sistemas operacionais GNU/Linux, porém, ainda neste tópico, falarei um pouco sobre o diretório /dev (responsável pela ligação entre o Kernel Linux e os dispositivos de hardware do sistema) e quero agora também explicar o que contem o diretório /proc -> diretório de um filesystem especial virtual que contém referências a informações dinâmicas dos processos do sistema, geradas constantemente pelo Kernel Linux.

.

2 - Operações I/O ou E/S (In/Out ou Entrada/Saída)

São as operações de comunicação do Kernel Linux com os dispositivos de hardware da máquina. As operações de entrada e saída realizadas pelo Kernel Linux são implementadas através dos device drivers, ou seja, para cada dispositivo de hardware da máquina, existe um device do Kernel (arquivo que serve de ligação com os dispositivos de hardware, criado pelo Kernel no diretório /dev do filesystem (sistema de arquivos)).

O Kernel Linux realiza todas as operações de E/S com uma sequëncia de bytes, sem qualquer conceito de registro ou métodos de acesso. Dessa forma, ocorre uma comunicação mais direta com os dispositivos de hardware, de maneira uniforme. O Kernel pode acessar e escrever nos arquivos de ligação do diretório /dev (ou devices do Kernel) da mesma forma que ocorre em qualquer outro arquivo do filesystem, utilizando chamadas do sistema (system calls) de leitura e gravação.

O Kernel Linux trabalha com dois tipos de operações de E/S: orientadas a blocos e orientadas a caracter. As operações orientadas a bloco são geralmente utilizadas em dispositivos com uma taxa alta de transferência de dados (como por exemplo discos rígidos) fazendo com que seja reduzido o número de transferências necessárias entre o device do Kernel e a memória, já que em cada tranferência de dados são enviadas várias informações simultaneamente em blocos (agrupamentos). Já os dispositivos de hardware mais lentos, ou que demandam uma transferência menor de dados, são orientados a caracter, ou seja, a transferência entre o dispositivo e a memória são realizadas caracter a caracter.

.

3- Gerenciamento de memória

Entenda que quando executamos aplicativos ou funções do sistema operacional, o processador da máquina executa trocas dinâmicas com a memória principal do sistema (memória RAM). Isto ocorre pois o processador precisa armazenar as informações que recebeu para processá-las aos poucos de acordo com sua capacidade. O subsistema de gerenciamento de memória do Kernel Linux, preocupa-se especialmente com alguns fatores responsáveis pelo correto e eficaz gerenciamento dessas trocas dinâmicas.

Os principais aspectos do gerenciamento de memória são:

- Utilização de memória e swapping: O Kernel Linux sempre utiliza a maior quantidade de memória RAM possível, já que quando executamos um programa qualquer, tornando-o um processo do sistema, ele armazena temporariamente na memória RAM os dados necessários à sua execução, e esses dados não são apagados imediatamente após o encerramento de sua execução. Eles permanecem carregados na memória o máximo de tempo possível, pois caso o mesmo processo seja executado novamente em breve, os dados ainda estarão lá disponíveis, agilizando muito a execução. Essa técnica de manter os dados de programas executados na memória RAM chama-se Buffer Cache, e é utilizada para os dados que são utilizados pelos device drivers (drivers de dispositivos de hardware de que falamos acima em operações E/S). O Buffer Cache só é apagado parcialmente ou totalmente da memória RAM quando não há mais espaço suficiente para carregar um novo programa, e os dados escolhidos a serem apagados são aqueles que estão há mais tempo sem serem acessados, o que mostra ao Kernel que eles provavelmente não serão mais utilizados tão breve. Esse método de escolha é chamado de swapping, que utiliza um conceito de “envelhecimento” de informações conforme as mesmas não são utilizadas, e “rejuvenecimento” de informações conforme as mesmas são acessadas (não confundir swapping com memória virtual ou swap).

- Proteção: O Kernel Linux divide e separa os processos carregados na memória RAM da máquina como processos do kernel e processos do usuário

- Mapeamento de memória: Os processos em execução no sistema são divididos em páginas e somente algumas dessas páginas estão realmente na memória física do computador. Outras delas são “endereços virtuais” que agilizam o processo de acesso da memória. A utilização de endereços virtuais com endereços reais (físicos) de memória é chamada de mapeamento de memória. Todos os processos tem referências em uma estrutura de dados chamada pelo Kernel Linux de “mm_struct”. Esta estrutura contém informações sobre o que está sendo executado no momento e possui apontamentos para uma outra estrutura de dados chamada “vm_area_structure”, que contém “o endereço” de todos os PFN (Page Frame Numbers - que podemos entender de maneira menos técnica como o “endereço” ou localização exata de onde estão realmente as informações na memória do computador).

- Alocação: O Kernel Linux utiliza o algoritmo Buddy (Companheiro - nome pelo qual é conhecido o algoritmo de alocação) para alocar e desalocar páginas de memória utilizando blocos de páginas. O gerenciamento de memória do Kernel aloca e desaloca páginas de memória com extremo dinamismo, causando assim uma fragmentação de memória, que é resolvida pelo Kernel com um processo de desfragmentação que junta espaços preenchidos de memória que são categoricamente semelhantes.

Memória Cache: É utilizada para otimizar e agilizar o acesso a informações. Exemplos de Cache utilizadas pelo Kernel Linux: Buffer Cache (vimos acima quando falei de operações E/S - são blocos de tamanho fixo usados por device drivers que agilizam o acesso a informações que já estejam nesse buffer, tornando desnecessário o acesso direto ao dispositivo de hardware), o Page Cache (usado para tornar mais rápido o acesso a vários tipos de informação no disco), e o Swap Cache (que faz com que apenas páginas de memória modificadas sejam salvas na memória virtual física (que veremos abaixo) sendo que as páginas de memória inalteradas com seu acesso podem ser descartadas sem a necessidade de gravá-las fisicamente).

Memória Virtual: Memória virtual ou memória SWAP é um recurso utilizado pelo Kernel Linux que consiste em reservar uma parte da memória secundária da máquina (o disco rígido), especificada pelo usuário, para ser uma extensão da memória primária (memória RAM). O conceito de memória virtual está, ao contrário do que muitos pensam, ligado ao produto final da junção entre a memória primária e o espaço reservado da memória secundária. Ou seja… A memória virtual = Memória RAM + Memória SWAP. O processador transfere os dados do processo que está executando diretamente para a memória RAM (primária). Quando surge a necessidade de esvaziamento de parte da RAM para executar outro processo (e surge mesmo, pois lembre-se que o Kernel Linux utiliza sempre o máximo de memória possível devido ao Buffer Cache, para agilizar os processos), alguns processos existentes, mais envelhecidos (pelo swapping) que estiverem esperando para continuar sua execução, são transferidos para a o disco rígido, para a parte reservada à memória SWAP. Para que esse recurso possa ser utilizado, uma partição deve ser criada no disco durante a instalação do sistema operacional e especificada (reservada) como partição SWAP. O tamanho ideal para uma partição swap é um assunto que merece atenção exclusiva, e por isso, falarei sobre isso e sobre planejamento de particionamento num próximo post.

.

4- Agendamento de processos

Primeiramente vamos esclarecer de uma ver por todas o que é processo. Processo é uma instância de um programa em execução. Todo processo tem um pai (ou processo criador) e um número único atribuído pelo Kernel no momento de sua execução, que o identifica no sistema… o PID (Process Identifier). Para fazer um planejamento e compartilhamento adequado do tempo do processador, o Kernel Linux usa um sistema de 2 tipos de classificação, que avalia cada processo e lhe atribui qualidades que permitem que seja determinada uma prioridade de execução para cada processo avaliado. Os processos são classificados pelo Kernel quanto a sua responsividade (ou seja, se o processo responde em tempo real, interativo ou em segundo plano) e quanto a sua intensidade de atividade (ou seja, se o processo utiliza muito tempo de processador (CPU-Bound ou Limite de CPU) e se faz muitas operações de E/S (I/O-Bound ou Limite de Entrada e Saída)). Essas duas classificações são relativamente independentes, ou seja, um processo pode, por exemplo, ter uma baixa responsividade (como um daemon por exemplo, executado em segundo plano) e ao mesmo tempo ter uma grande intensidade de atividade (ou seja, ter um grande consumo de operações de E/S)… Podemos citar como o exemplo o caso do Servidor Web Apache2 servindo um banco de dados MySQL. Avaliadas essas classificações, o Kernel Linux utiliza seu sistema de prioridades e organiza os processos. A identificação da prioridade de um processo pode ser estática ou dinâmica, e varia de 1 (maior prioridade) a 139 (menor prioridade), sendo que os números de 1 a 99 são atribuídos a processos executados em tempo real, e de 100 a 139 são atribuidos a processos tradicionais (processos interativos ou processos executados em segundo plano).

Os processos executados em tempo real são classificados como FIFO (First-In, First-Out) ou RR (Round-Robin), e eles somente passam a ser excluídos do processamento atual nos casos de: fim de sua execução; para ser substituído por um processo que possua prioridade ainda maior; executar uma operação de bloqueio; espontaneamente pelo próprio processo; quando o processo é RR (Round-Robing) e esgotou seu quantum de processamento.

Um processo tradicional (processos interativos e os executados em segundo plano) tem inicialmente uma prioridade estática atribuída (normalmente 120) que determina o seu quantum de processamento, mas pode ter uma prioridade dinâmica, que é o valor analisado pelo agendador de processos do Kernel quando percorrer a lista de processos para determinar de qual processo é a vez de utilizar o processador. A prioridade dinâmica pode alterar o valor da prioridade estática em + ou - 5 pontos dependendo do passado do processo (lembre-se que quando menor a pontuação, maior a prioridade do processo). Ou seja, o passado do processo irá beneficiá-lo caso o mesmo tenha ficado muito tempo esperando por sua execução fora do processador (sleep time). Caso o sleep time seja pequeno, o processo irá ser penalizado, ou seja, seu número de prioridade irá aumentar, tornando sua prioridade de execução menor.

.

Bom, pudemos ver neste post algumas características básicas do funcionamento e da estrutura do sistema operacional GNU/Linux. Como sempre, comentários, sugestões, correções e acréscimos são extremamente bem vindos.

Em meus próximos posts, continuando as explicações técnicas, vou falar sobre a estrutura básica de diretórios do GNU/Linux. Quanto a informações menos técnicas, vou falar um pouco sobre as distribuições GNU/Linux disponíveis atualmente e sobre assuntos relacionados ao Licenciamento.

Até breve.

Grande abraço a todos!

 
icon for podpress  Freedie Freeloader - Miles Davis [9:33m]: Play Now | Play in Popup | Download
no comment

5

May

Um pouco de história…

Publicado por gmazk  Publicado em História, Linux

Tudo começou quando a terra era praticamente uma grande bola de fogo… bla bla bla bla… Bom, pulemos uma considerável parte.

Hoje -> Ao inaugurar o MultiVerso Linux, decidi que meu primeiro post, contrariando a tendência dinâmica da visão do weblog como mídia atual participativa, seria utilizado pra contar um pouco da história do GNU/Linux e seus ancestrais (para familiarizar non-geeks com a história do sistema, já que obviamente a grande maioria dos geeks já conhece todos os “causos” da carochinha relacionados ao nosso SO). Beleza… Mãos à obra… Vamos voltar um pouco no tempo. Mais precisamente, vamos voltar exatamente 146 anos no tempo e começar nosso conto por “lá”.

1861 -> William Barton Rogers funda o MIT (Massachusetts Institute of Thechnology)…

“Ta bom, mas o que que eu tenho com isso?” Se você usa GNU/Linux, tem muito a ver. O MIT é um dos mais renomados estabelecimentos de ensino superior do mundo, oferecendo hoje mais de 900 cursos nas áreas de ciência e tecnologia.

Depois de 4 anos de “água-de-salsicha” em virtude da Guerra Civil Americana, o MIT iniciou a admissão de seus primeiros alunos em 1865… Então, 96 anos depois … Pronto, agora você vai começar a perceber que tem muito a ver com o tal do MIT…

1961 -> Primeira demonstração do CTSS…

O CTSS (Compatible Time-Sharing System), desenvolvido no Centro de Computação do MIT e demonstrado pela primeira vez rodando em um IBM 709 e portado 1 ano depois para um novo hardware (IBM 7090), foi um dos primeiros sistemas operacionais a adotar a técnica de time-sharing empregada até hoje permitindo que vários usuários possam utilizar um ambiente pra executar programas sobre o mesmo sistema operacional rodando em uma máquina (moderno não?). Esse tipo de sistema caracteriza o processo de compartilhamento de processador, memória e disco entre vários usuários.

1962 -> O projeto MAC…

Em novembro de 1962, um integrante do MIT chamado Joseph Carl Roubnett Licklider propôs o projeto MAC (Multiple Access Computers ou Man And Computers, devido a dualidade de objetivos do projeto), criado para desenvolver um sistema operacional avançado e um laboratório de inteligência artificial. Um ano depois, realizou-se um estudo reunindo vários cientistas da computação em Cambridge com o objetivo de divulgar o CTSS e discutir o futuro da computação. Este estudo resultou em um importantíssimo subprojeto… o Multics (MULTiplexed Information and Computing Service)…

1963 -> O início do sistema operacional Multics…

Ainda em 1963, o projeto MAC começou a tomar grandes proporções e ganhou o apoio da ARPA (Advanced Research Projects Agency, subordinada ao Departamento de Defesa dos EUA), Bell Labs, GE (General Eletric) e IBM (que após a divulgação das especificações de hardware para rodar o Multics, ofereceu o IBM 360, lançado naquele ano).

O objetivo do projeto Multics era um sistema operacional com suporte para memória virtual, utilizando recursos de paginação e segmentação de memória, possibilitando um processo mais sofisticado de transferência de dados entre discos de memória.

Em 1964, a GE propôs a utilização do Multics em um mainframe GE-645, que também foi comprado pela Bell Labs no início de 1965, que juntou-se à equipe de desenvolvimento do Multics, apresentando a primeira descrição definitiva do sistema numa sessão especial na Fall Joint Computer Conference, ocasião em que muitos tomaram por impossível a ambiciosa tarefa da equipe de desenvolvimento do projeto devido aos recursos da época. A partir dai, foi finalmente escolhida a linguagem PL/I para gerar o código do Multics, iniciando-se assim, efetivamente, o desenvolvimento do sistema operacional, usando o CTSS como sistema para o trabalho dos desenvolvedores. Com o passar do tempo (e MUITO tempo), o próprio Multics passou a ser utilizado para o seu desenvolvimento, porém, sem resultados rápidos, o que gerou uma enorme frustração inicial da equipe, que acabou levando a Bell Labs, em abril de 1969 a retirar-se do projeto. Apesar disso, o Multics foi, ainda em 1969, disponibilizado para comercialização e utilizado por várias organizações importantes, tais como a Força Aérea Americana, a General Motors e a Ford.

O desenvolvimento do Multics foi cancelado em 1985, tendo depois disso sua utilização suspensa por várias organizações (diz a lenda que o último Multics sobrevivente em produção foi desativado no ano 2000 no Quartel General do Comando Marítimo Canadense).

1969 -> Surge o embrião do projeto UNIX…

Motivados pelo projeto Multics, Ken Thompson e Dennis Ritchie (até então integrantes do projeto Multics, que mantiveram contato pessoal com profissionais do Bell Labs mesmo depois de seu desvinculamento do projeto em 1969) deram início ao desenvolvimento de um projeto pessoal chamado Unics (UNiplexed Information and Computing Service).

O projeto Unics, tinha como objetivo fazer (COM RAPIDEZ) um sistema operacional simples, versátil e moderno, mantendo todas as idéias de time-sharing e implementando portabilidade como um dos objetivos do novo sistema. O nome Unics surgiu como um trocadilho referente à modéstia do novo sistema com relação as grandiosas metas do projeto Multics (Em 1970 o nome foi mudado para Unix com uma sugestão de Brian Kernighan, funcionário do Bell Labs, integrante do projeto).

Depois de duas propostas de investimento financeiro no projeto pleiteadas junto ao Bell Labs (visando adquirir um computador de médio porte para o sistema) e de uma grande falta de incentivo, Thompson, Ritchie e Rudd Canaday (outro integrante do Bell Labs que participou do projeto), começaram a desenvolver todo o projeto no papel, e traçaram toda a teoria sobre o filesystem (necessário para uma utilização correta dos discos por parte do sistema operacional) e sobre o Kernel (o coração do sistema operacional, que faz toda a intermediação entre o hardware e os processos em execução). Thompson encontrou então um computador (DEC PDP-7)relativamente velho abandonado em outro departamento do Bell Labs e finalmente conseguiu sua transferência para o projeto.

Ainda em 1969, Thompson começou a implementar o projeto do filesystem (chamado de “chalk filesystem” por Ritchie, devido ao seu projeto realizado em um quadro negro com giz) e também dividiu o projeto em quatro blocos com o objetivo de organizar o cronograma do projeto em 1 mês: Sistema Operacional, Shell (ambiente próprio para entrada de linhas de comandos), Editor de texto, e Compilação do sistema e dos programas.

O PDP-7 foi substituído em 1970 por um DEC PDP-11, já que o 7 estava se tornando rapidamente obsoleto e o Bell Labs percebeu finalmente os inúmeros benefícios do novo sistema operacional, além da rápida evolução do projeto.

A primeira versão do Unix foi escrita em Assembly que por ser uma linguagem complicada, tinha que ser substituída por uma linguagem de alto nível… Fortran foi descartada logo de cara… Foi decidido então o uso da BCPL (Basic Combined Programming Language), conhecida como B (obviamente pois é a primeira letra do nome)… Opa… Problemas: Lentidão (já que a linguagem tinha que ser interpretada) e Incompatibilidade (pois o PDP-7 tinha um processamento word-oriented ou orientado em palavras, e o PDP-11 em byte-oriented ou orientado em bytes)… Ah… Mas para o fodástico super-Richie não tinha tempo ruim… Ele usou o PDP-11 para adicionar funcionalidades ao B, que passou a se chamar NB (new B), e em seguida, providenciou um compilador para o NB pra resolver o problema da lentidão gerada pela interpretação… Tchanaaaaaaam !!! Nasce então a interplanetariamente famosa Linguagem C (nome que surgiu da utilização da segunda letra do BCPL).

Em 1973, foi implementado por Thompson o conceito de pipe (criado por Douglas McIlroy) que permitia que vários processos fossem “amarrados” gerando uma única saída ou resultado final.

1976 -> O Unix vai pras universidades

En 1976, Thompson foi dar aula na Universidade de Berkeley na Califórnia. O Unix então se espalhou rapidamente por inúmeras universidades. Quando Thompson voltou para o Bell Labs, o Unix continuou a ser desenvolvido por professores e universitários (tendo em vista que seu código era aberto e possuía uma licença universitária) e foi assim criado o BSD (Berkeley Software Distribution), uma versão do Unix inicialmente adaptada ao ambiente universitário. Os BSD atualmente são muito utilizados, sendo os derivados mais conhecidos: MacOS X (e sua base Darwin), FreeBSD, NetBSD, OpenBSD, BSDI (antigo BSD/OS), DragonFlyBSD, PC-BSD e DesktopBSD. Algumas empresas também desenvolveram seus próprios sistemas baseados em Unix, tais como o Solaris e SunOS (Sun Microsystems), HP-UX (Helwett-Packard), Tru64 Unix (Compaq), OpenServer (SCO), AIX (IBM), Xenix (SCO, AT&T e Microsoft), etc…

Bom, agora chegou a hora de falar um pouco sobre o RMS… Richard Matthew Stallman mas não vou me aprofundar muito (pelo menos não nesse tópico) porque afinal de contas o cara merece um tópico só dele. BTW, recomendo a todos (que lêem com facilidade documentos em inglês) a leitura do openbook Free as in Freedom: Richard Stallman Crusade for Free Software da O’Reilly Media, escrito por Sam Williams em 2002 (Quando tiverem tempo, cliquem e LEIAM!). Pretendo falar um pouco de temas como a Free Software Foundation, Open Source e Licença GNU GPL mais profundamente em outros tópicos. Enquanto isso, se tiver interesse em se aprofundar, “Google neles!!!”.
Vamos então falar diretamente e objetivamente do do projeto GNU e do surgimento do Kernel Linux…

1984 -> Início do projeto GNU…

Em 1984 Richard Stallman fundou o projeto GNU com o objetivo de criar um sistema operacional TOTALMENTE livre (o nome GNU além de sua proveniência óbvia do mamífero ruminante, vem do trocadilho acrônimo “GNU’s Not Unix”, já que o GNU tem uma concepção REALMENTE livre, ao contrário do Unix, que era livre e deixou de ser). O projeto refere-se a uma série de aplicativos totalmente livres que Stallman e vários outros programadores que abraçaram a causa desenvolveram como peças principais de um sistema operacional completo e livre…

1991 -> O momento bombástico determinante da nossa história…

Em 1991 o fodástico sistema de Stallman e seus colegas já estava quase pronto, mas faltava apenas um pequeno detalhe (rsrsrsrs)… O cérebro… O Kernel do sistema operacional. A equipe de desenvolvimento do GNU estava desenvolvendo um Kernel chamado Hurd, composto por daemons que utilizam o microkernel GNU Mach. Eis que então, exatamente em 05 de outubro de 1991, um jovem finlandês estudante da universidade de Helsinque chamado Linus Benedict Torvalds, provavelmente sem a MENOR IDÉIA do que se tornaria sua recente criação, postou uma mensagem (a fomosa) no newsgroup comp.os.minix anunciando que havia criado um kernel funcional (versão 0.02) que já rodava bash, gcc, gnu-make, gnu-seed, compress, etc… Na mesma mensagem ele disse que as fontes de seu novo Kernel estavam disponíveis para ampla divulgação, e que estava interessado em entrar em contato com pessoas que tivessem escrito utilitários/bibliotecas para o Minix com códigos livremente distribuídos (sob licença ou domínio público) para que pudesse adicionar de forma autorizada ao sistema.

Esta mensagem foi a mensagem oficial de lançamento do Kernel Linux, e por isso o aniversário do SO Linux é comemorado em 05 de outubro, dia da postagem da mensagem no newsgroup anunciando sua criação. Desde o início, Linus distribuiu seu Kernel exclusivamente com programas criados pela Free Software Foundation para o Projeto GNU, pois se todos os programas da FSF funcionassem bem com o Kernel Linux, seria uma prova de que o kernel estava totalmente ajustado ao kernel Unix…

Ufa… Pronto… Chegamos finalmente ao surgimento do fantástico sistema operacional GNU com Kernel Linux chamado GNU/Linux !!!

Normalmente por desconhecimento ou por questão de comodidade as pessoas utilizam simplesmente o nome Linux (nome do Kernel ou núcleo desenvolvido por Linus Torvalds) para falar do sistema operacional, que corretamente e por solicitação do projeto aos utilizadores deve ser chamado de GNU/Linux…

O GNU/Linux até o lançamento de sua versão 2.6 (que ocorreu em dezembro de 2003) tinha suas versões classificadas como versões em desenvolvimento ou versões estáveis de acordo com o segundo número. Ou seja, se falássemos do kernel 2.5.8 (segundo número ímpar) estaríamos tratando de uma versão em desenvolvimento. Já com o segundo número par, estaríamos tratando de uma versão estável. A partir do kernel 2.6, o kernel em desenvolvimento passou a ser identificável pela ausência do quarto número (que representa versão final, estável), mas mesmo assim, usa-se também a nomenclatura -rcX (release candidate N ou candidato ao lançamento) nas versões em desenvolvimento.

Hoje em dia temos disponíveis para utilização inúmeras distribuições do GNU/Linux, que reúnem diversos aplicativos (sejam eles da Free Software Foundation ou não). Falando de maneira simplificada, uma distribuição nada mais é do que o Kernel Linux combinado com programas compatíveis com ele…

As maiores distribuições GNU/Linux em produção são Debian, Slackware, SuSE, RedHat e suas inúmeras distribuições derivadas…

Bom, chega por hoje… Afinal de contas logo no primeiro post estou na frente do PC as 02:47 am rsrsrsrsrs… Depois eu reviso e complemento o post. Comentários, correções e acréscimos são extremamente bem vindos.

BTW, principal fonte de pesquisa deste post: O grande e onisciente oráculo… Google…

Grande abraço a todos!

 
icon for podpress  Now's the time - Meandering - Miles Davis e Charlie Parker [6:33m]: Play Now | Play in Popup | Download
1 comment

Pesquisar no site

Categorias

  • .Software Livre (1)
    • Conceito (1)
  • ISP (1)
    • Banda Larga no Brasil (1)
  • Linux (7)
    • História (2)
    • Introdução (2)
    • OpenBox (1)
    • Openbox Themes (1)
    • Particionamento (1)

Arquivos

  • July 2008 (1)
  • June 2008 (4)