Social Icons

4.2) Brincando com LED's




Apresento para vocês uma série de exercícios para quem quer brincar com LEDs e Arduino.
Neste passo a passo é possível criar um pisca com LEDs e uma chave sinalizadora.


Montar na sua matriz de contatos:
-Atenção é importante notar que os LEDs devem estar ligados um paralelo com o outro e com polos opostos.
-O resistor pode ser de outro valor como 330R ou 470R, a modificação altera no brilho do LED.


Clicar na imagem para ampliar.

A1-Execute o programa abaixo: 



int ledPin1 =11;
int ledPin2 =10;



void setup() {

pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
}



void loop()
{
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
delay(1000);

}

Comentário do programa:
-Como temos o LedPin1 em estado HIGH(LIGADO, 5V) e o LedPin2 no estado LOW(Baixo, 0V) temos um fluxo de elétrons em um sentido. Como o LED é um diodo e como tal permite apenas a passagem de corrente em um sentido(LED é polarizado) temos apenas um Led ligado.


A2-Execute o programa modificado abaixo: 


int ledPin1 =11;
int ledPin2 =10;



void setup() {

pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
}



void loop()
{
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
delay(1000);

}

Comentário deste novo código:
-Com a Mudança do HIGH para o LOW no LedPin1 e LedPin2 temos o outro Led ligado.

Vamos modificar mais um pouco o programa?

B1-Execute o programa abaixo:


int ledPin1 =11;
int ledPin2 =10;



void setup() {

pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
}



void loop()
{
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
delay(1000);

digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
delay(1000);

}


Comentário deste código:
Temos agora um pisca LED do tipo que tem em estacionamentos de carro. Em determinado tempo temos um fluxo de energia num sentido que liga um LED e em outro momento temos um fluxo em sentido contrário que liga o outro LED.

Vejam no vídeo como fica:










Vamos mais fundo?
Montar na sua matriz de contatos:
-Adicionar um botão e um resistor(pode ser de valor diferente).

Clicar na imagem para ampliar.




Pronto para modificar mais um pouco o programa?

C1-Execute o programa abaixo: 



int ledPin1 = 11;
int ledPin2 = 10;
int Botao1 = 7;
int val=0;


void setup() {

pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(Botao1, INPUT);
}



void loop()
{

val = digitalRead(Botao1);


if(val==LOW){

digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);

}
else{


digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);

}


}


Comentário deste novo código:
-É feita a leitura do botão e uma condição é criada:
1° Caso o botão não esteja pressionado o LedPin1 deve estar ligado. Fiz a combinação para que o "vermelho" esteja ligado neste caso.
2° Caso contrário o LedPin2 deve ficar ligado. Ajustei para que o "verde" esteja ligado neste caso.
Então quando não pressionamos o botão o LED Vermelho indica que está desligado e quando pressionamos o LED Verde indica que está ligado.
Trata-se então de uma chave que indica quando o seu aparelho está sendo usado ou não, basta implementar.







4) Primeiros Passos ( Pisca Led )

O iniciante precisa aprender o Bê-a-Bá para poder fazer suas peripécias. Pois bem senhores... apresento o tutorial mais básico para os aventureiros que queiram desbravar o mundo do Arduino.

Para Programação Seria o Famoso "Hello World"   ...(Google)

1-O básico da programação: 

Vamos dar uma olhada nessa "belezura"? Note os dois blocos distintos de instruções entre chaves:


void setup() {
// Escreva o código que será executado apenas uma vez.

}

void loop() {
// Escreva o código que será executado infinitas vezes

}

A função setup() é chamada quando o código(sketch) é executado.

Use-a para:
  • Iniciar variáveis.
  • O modo como os pinos devem operar: entrada(INPUT) ou saída(OUTPUT)
  • Bibliotecas.
  • Cabeçalhos
Mas atenção! Tudo o que estiver no setup() será executado apenas uma vez imediatamente após o microcontrolador ser energizado.
Caso o botão de reset que se encontra na placa do arduino for pressionada ou a energia cair o código será reinicializado e nessa condição especial o setup() novamente é executado.


A função loop() tem um propósito fundamental repetir infinitamente o que  está escrito. Bem... mas qual a finalidade disso? 
Ao repetir a mesma função o microntrolador nunca para de funcionar. Imagine como seria se ao digitar uma letra seu editor de texto parasse de funcionar e fosse preciso abri-lo novamente para escrever a outra letras da palavra? Ou após um carro passar num semáforo de trânsito as luzes não brilharem mais?  
Basicamente o loop() será o seu escravo e o setup() dirá como o escravo se comporta. 

Usa-se: // (duas barras invertidas) para fazer cometários na linha de código. O objetivo é deixar o mais claro possível para que terceiros possam entender. 
Tudo que é deixado como comentário será descartado no momento da gravação no microcontrolador.


O Primeiro Projeto com seu Arduino


Para este projeto será preciso um LED , um resistor e fios e uma matriz de contatos: 
 

Aprendendo um pouco sobre os compoentes:

O Led é um componente polarizado e deve ser corretamente conectado. Perceba que o polo positivo possui uma perna maior.
Alguns Leds apresentam o polo negativo com um chanfro(parte ligeiramente plana) no seu encapsulamento.
Temos no Arduino:
  • VCC(+) 
  • GND ou Ground como (-).
O LED é um diodo emissor de luz e ao alimenta-lo corretamente, permite o fluxo de energia apenas em um sentido.



O resistor é um componente que oferece resistência a passagem da energia elétrica. Ao combina-lo com outros componente pode-se fornecer a energia correta para alimentar componentes.
O filamento de tungstênio das lâmpadas incandescentes é uma resistência que transforma grande parte da energia que flui por ele em energia térmica e luminosa.  
As faixas de cores determina quanto é maior essa resistência.

A matriz de contatos possui apenas pontos interligados num sentido vertical. O que permite combinar e interligar os componetes rapidamente.
Veja na imagem abaixo duas fileiras independentes("A" e "B") com seus respectivos pontos interligados.

Os fios: existem modelos de fios que permitem uma fácil conexão. Dê preferência para estes modelos, pois vão garantir ligações seguras e a rapidez na montagem e manutenção do circuito.

A montagem do Projeto:


Agora que está munido destes componetes e de como eles operam monte o circuito abaixo:
Valores de resistores entre 220R e 10k podem ser usados.  

 Clicar na imagem para ampliar



Após a montagem copie o código abaixo e cole na interface de programação do arduino e faça o upload, após alguns segundos ele executará automaticamente:



void setup() {

pinMode(12, OUTPUT); //Declara que o pino 12 do arduino é de Saída. Vai mandar dados, energia...
}

void loop() {

digitalWrite(12, HIGH);  // Diz que o pino 12 do arduino está Ligado. Logo LED ON
delay(1000); // Espera por 1s

digitalWrite(12, LOW); //  Diz que o pino 12 do arduino está Desligado. Logo: LED OFF
delay(1000); // Espera por 1s
}


Comentando o código:
Este é o código chamado Blink. Nele temos declarado no setup() que usaremos o pino 12 do Arduino e este não fará leitura de dados mas enviará por isso Saída(OUTPUT).
Temos no loop()  duas tarefas sendo executadas: 
  • digitalWrite(12,HIGH); diz que o pino 12 é o polo + que alimenta o LED. Logo há um polo(+) e outro (-) e o Led liga pois é possível fluir a energia.
  • digitalWrite(12,LOW)diz que o pino 12 é o pólo - logo não há fluxo de energia com dois polos(-) e o LED fica desligado.
  • delay(1000);  esté entra na brincadeira para dizer: OPA! Calma ai... espere um pouco. E para cada "1000" temos 1s, logo se tivessimos 5000 teríamos um atraso de 5s.
Então se temos o LED ligado por 1s e desligado por 1s ele liga e desliga muito rápido. Como essa informação está no loop() que executa infinitas vezes teremos o LED piscando o tempo todo.


Veja o vídeo como funciona:








Modificando o Código:

Após fixar bem os conceitos elucidados vamos modificar o código e ver o que acontece.

M1-Execute o código:


void setup() {

pinMode(12, OUTPUT); //Declara que o pino 12 do arduino é de Saída. Vai mandar dados, energia...
}

void loop() {

digitalWrite(12, HIGH);  // Diz que o pino 12 do arduino está Ligado. Logo LED ON
delay(100); // Espera por 1s

digitalWrite(12, LOW); //  Diz que o pino 12 do arduino está Desligado. Logo: LED OFF
delay(100); // Espera por 1s
}

Comentário sobre o código:
Observe que o valor do delay() foi modificado de (1000) para (100). O que aconteceria se fosse (10) ou qualquer outro valor?
Experimente modificar e perceba que ligando e desligando algo temos comportamentos de piscar diferentes.


M2-Execute esse outro código:



void setup() {

pinMode(12, OUTPUT); //Declara que o pino 12 do arduino é de Saída. Vai mandar dados, energia...
}

void loop() {

digitalWrite(12, HIGH);  // Diz que o pino 12 do arduino está Ligado. Logo LED ON
delay(random(100)); // Espera por 1s

digitalWrite(12, LOW); //  Diz que o pino 12 do arduino está Desligado. Logo: LED OFF
delay(random(100)); // Espera por 1s
}


Comentário sobre o código:

Substituímos no delay() o valor de (1000) por: random(100). O que queremos com isso?
Já ouviu falar em números randômicos? Aleatórios? O random() gera números aleatórios. Mas ao inserir um valor como 100 em random() estamos informando que o número deve variar entre 0 e 99 ou seja: entre 0 e (100-1). 
Logo: temos um comportamento inesperado no piscar do LED, o que gera um efeito interessante.

Experimente o seguinte: 
  • Pegue alguns centímetros de um papel branco. Papel higiênico é excelente.
  • Amassar bem e posicionar sobre o LED. 
  • Mude a cor do LED para testar os efeitos.

2, O Sistema Em Si

Introdução

Com a maior popularização do Linux e avanços enormes na sua usabilidade, graças aos esforços de seus desenvolvedores, muitos usuários começam a ver com outros olhos o sistema operacional do pinguim. Com isso, o desejo de testar um sistema operacional diferente vem à tona, mesmo que seja apenas para conhecer o diferente, e até mesmo em alguns casos para migrar definitivamente do Windows, ou qualquer que for o seu sistema atual, para o Linux.
Mas os problemas com essa mudança costumam a aparecer já de cara no início, logo após a instalação do sistema operacional, os novos usuários abrem o navegador de arquivos e não encontram os tão familiares drives C:, D:, e outros, eles acham ali apenas algumas pastas estranhas que nunca viram na vida, só para citar um dos exemplos mais comuns.
Tux, mascote do Linux.Tux, mascote do Linux.
Por sinal, muita pouca é igual no Linux, como era no Windows. Um feito muito comum por causa deste motivo, é que após um insucesso ao tentar realizar uma tarefa, o usuário vai à procura de alguma solução e encontra um procedimento bastante diferente do que já estava acostumado a fazer e reclama “No Windows é muito mais fácil fazer isto!”. Bom, essa afirmação é sempre questionável, primeiro, por que a maneira que é mais fácil para uma pessoa, não necessariamente é a mais fácil para todas, e segundo, será que realmente no Windows é mais fácil, ou simplesmente “No Windows estou acostumado a fazer isto desta forma, e no Linux é diferente então não sei.”
Se você está nesta situação, preparamos um guia de introdução ao “mundo” Linux, com conceitos básicos, para ajudar os novos usuários a se adaptarem e aprenderem a virar-se sozinho no Linux, como estão acostumados a fazer no Windows há algum tempo. Talvez para quem esteja começando a usar um computador estes conceitos não precisariam ser abordados desta forma, mas como a maioria das pessoas está acostumada com o Windows e seus conceitos, é necessário fazer uma ressalva, o Linux é diferente do Windows, e isso nem sempre parece tão óbvio como deveria ser.
Antes de qualquer coisa, toda vez que estiver me referindo ao Linux, estou falando do sistema operacional mantido e desenvolvido pelo projeto GNU/Linux, as duas coisas – Linux e GNU/Linux – são diferentes, e existe uma conceituação com relação a isto.

Usuário VS Administrador

Para começar é bom tratar da questão Usuário VS Administrador. No Linux, o Usuário, como o próprio nome já diz, é apenas um utilizador (ou usuário) do computador, logo ele não ter permissão para fazer nenhuma alteração ou configuração que afete o sistema ou os outros usuários. Cada usuário tem o seu próprio diretório pessoal (/home/nome-do-usuário, falaremos mais sobre isso a seguir.) e ele somente pode fazer modificações no seu diretório pessoal, bem como alterar preferências pessoais de programas, os seus programas preferências, entre outras coisas. Por padrão um usuário não tem acesso aos dados dos outros usuários do computador, a não ser que o usuário assim defina.
Em contra partida, o Administrador é o dono do sistema, é o Super Usuário, o famoso root, ele tudo pode, diferente do Windows, aonde até mesmo o administrador do sistema tem funções limitadas, no Linux não existem limitação para o administrador. Somente o administrador pode instalar, atualizar ou remover programas no computador, alterar as configurações do sistema e as demais tarefas que são destinadas a um administrador. Ele tem acesso a todos os dados do HD, ou seja, ele pode acessar os dados de todos os usuários do sistema, e se quiser, alterá-los também. Já li uma vez que o Linux não é seguro, por que se você estiver logado como root e mandar uma ordem para excluir todos os arquivos do disco (incluindo os do sistema), o sistema prontamente atenderá e assim o fará. Óbvio que após isso o sistema deixará de operar, já que você o apagou, mas como você é o administrador, você pode.
Quadrinho em alusão aos poderes do 
Administrador no Linux.Quadrinho em alusão aos poderes do Administrador no Linux.
Então se já escutou alguma vez a famosa frase “Jamais utilize o Linux como root, a menos que saiba exatamente o que está fazendo.” e nunca entendeu por que, já que no Windows você toda a vida utilizou o PC com a conta de administrador, agora já deve saber um dos motivos.
Utilize a conta do administrador somente quando for necessário, existem meios de fazer isso sem precisar estar logado como root, um dos mais conhecidos é o comando sudo (Switch User DO) que pede para outro usuário executar uma operação, no caso padrão, o root. Outra forma é pelo su (Switch User), que loga temporariamente, dentro da sessão atual, outro usuário, no caso padrão o root, para realizar as tarefas necessárias, e após isso é possível efetuar logoff da sessão iniciada, sem interferir em nada na utilização do PC. Ambos os comandos também têm seus respectivos similares através da interface gráfica, normalmente utilizados pelas distribuições mais atuais, ou seja, quando aparecer alguma janela pedindo para você informar a senha do administrador, possivelmente é por que o que se está tentando fazer chamou uma sessão Super Usuário para terminar o processo.
Tome cuidado com a utilização da senha do administrador, pois é somente através da informação dela que se pode instalar ou configurar alguma coisa no PC, então se você não estiver fazendo nada além da simples utilização do PC e aparecer alguma janela pedindo para informar a senha do administrador, desconfie! Pode ser algum tipo de praga tentando infiltrar-se no seu PC. Aliás, está é uma das únicas maneiras de ser infectado com pragas no Linux.

As Diferentes “versões” do Linux

Outro conceito que nem sempre fica muito claro é o das distribuições, as distribuições de Linux não são versões de Linux como muita gente pensa, assim como as versões do Windows (98, XP, Vista, 7, …), muito menos são Linux diferentes, apesar de serem diferentes em varias coisas. O Linux propriamente dito é o Kernel (núcleo do sistema) que roda por baixo de todo o sistema operacional GNU/Linux, aí vem à questão de conceitos tratada anteriormente, mas, para nós isso não faz a menor diferença.
O que estamos falando é que o Fedora (uma das várias distribuições de Linux), no fundo, é praticamente a mesma coisa que o Ubuntu, ou que o Mandriva (outras duas distribuições muito conhecidas de Linux), se estes estiverem rodando a mesma versão do Kernel Linux. Basicamente o que muda de uma distribuição para outra são os pacotes, bibliotecas, módulos, configurações, otimizações, aplicativos padrões, por isso se tornam distribuições diferentes, mas todas derivam do mesmo princípio. Apesar de esse ser um dos motivos conhecidos para a dificuldade de uma maior popularização do Linux, também é um dos motivos que tornam o Linux tão interessante para os usuários mais exigentes, já que você pode escolher livremente entre as mais diversas distribuições Linux – existem muitas delas espalhadas por aí – e ficar com a que mais lhe agrada, ou que melhor se encaixa com você.
Algumas das distribuições de Linux.Algumas das distribuições de Linux.
Como vocês já devem ter notado, o básico é sempre o mesmo, mas não é só isso que muda de uma distribuição para a outra. O Linux é um sistema operacional de código livre, ou seja, qualquer um pode pegar o código fonte, estudá-lo, e, se assim achar que lhe convêm, modificá-lo, e distribuir livremente. Imagine quantas pessoas já não tiveram essa idéia, e adaptaram o Linux ao seu gosto, basicamente é assim que surge uma distribuição nova no mercado. E lá no principio, quando o Linux estava recém engatinhando, nasceram algumas distribuições, e três destas se mantém até hoje como referencia para quase todas as outras, são conhecidas popularmente como distribuições mães, são elas: A Debian, a Slackware e a Red Hat. Entendendo um pouco estas três, fica mais fácil entender as principais diferenças entre as distribuições disponíveis
A Debian, distribuição que dá origem ao Ubuntu, que é talvez a distribuição mais popular no mundo, criou e utiliza os pacotes pré compilados .deb – um pacote pré compilado é como um instalador de algum programa e é chamado de pré compilado por que já vem compilado para a arquitetura do seu PC (i386, …, i686, x86-64, ARM e etc.), só necessita ser compilado para o seu Kernel atual e instalar os arquivos no seu devido lugar – que são administrados pelo dpkg ou pelos apts. É famosa por sua estabilidade, já que não disponibiliza oficialmente em seus repositórios de pacotes pré compilados nenhum pacote que não tenha sido classificado como Stable (Estável) ainda.
A Slackware é mais antiga distribuição Linux ainda em desenvolvimento, tem como base a filosofia KISS (Keep It Simple, Stupid!, ou em bom português, Mantenha Isso Simples, Estúpido!), por isso não usa qualquer pacote pré compilado, ou seja, é necessário baixar o código fonte e então compilá-lo no seu computador. Por esse motivo é uma distribuição muito rápida, já que tudo é compilado no seu computador, então tudo está otimizado para o seu computador, usada principalmente por usuários experientes é também uma das únicas a não fazer nenhuma modificação ou otimização no Kernel Linux, utilizando-o exatamente como é distribuído pelos desenvolvedores do mesmo. Uma distribuição bem mais amigável desenvolvida a partir do Slackware é o SUSE, e a sua versão desktop OpenSUSE.
A Red Hat foi, se não a primeira, uma das primeiras distribuições comerciais de Linux, desenvolvida basicamente para utilização em empresas, criou e utiliza os pacotes pré compilados .rpm (RedHat Package Manager) e utiliza o programa com mesmo nome, o rpm, para a administração destes pacotes. A mesma empresa que desenvolve o Red Hat Enterprise Linux também desenvolve uma versão desktop com as mesmas bases, o Fedora. Outra distribuição bastante conhecida derivada do Red Hat é o Mandriva, bastante utilizada entre os brasileiros, devido à antiga e larga base de usuários do Conectiva (uma distribuição brasileira, que se juntou com a francesa Mandrake, formando o Mandriva).
Depois de explicado tudo isso da para explicar que o que existem são na verdade versões das distribuições. Quando muitos pacotes são atualizados, ou quando um pacote importante passa para uma versão nova, geralmente os desenvolvedores desenvolvem versões novas das suas distribuições contendo as novas versões dos pacotes disponibilizados. Uma atualização que está para ocorrer esse ano se dá por conta do Gnome 3.0, a nova versão do ambiente desktop está em fase final de desenvolvimento, e devem começar a aparecer novas versões das distribuições contendo a atualização para o Gnome 3.0. Também é possível apenas atualizar a sua versão com os novos pacotes, mas novas versões geralmente trazem consigo correções de bugs diversos e muitas vezes novas funcionalidades, fazendo valer a pena instalar a nova versão no lugar de simplesmente atualizar o seu sistema.

A Estrutura de Diretórios e Discos do Linux
Uma coisa bastante confusa para quem está vindo do Windows é a estrutura de diretórios do Linux e a forma com que o sistema lida com os dispositivos de armazenamento (HDs, DVDs, Pen Drives e etc.). Você abre o navegador de arquivos e se da de cara com um monte de diretórios estranhos que nunca tinha ouvido falar antes e se pergunta “Onde estão os Meus Documentos?”, “Onde estão instalados os meus programas?”, ou ainda “Onde estão os arquivos de instalação do Linux?”.
No Windows se utiliza o conceito de “drives”, aonde você tem o drive C:, drive D: e etc. No Linux esse conceito não existe, todo o sistema está organizado em diretório montados em algum ponto a partir da raiz “/”, até mesmo as partições dos HDs são montadas dessa forma (não que no Windows não seja assim, mas nele, a montagem acontece de forma oculta ao usuário, que só vê os seus conhecidos drives ”x”:).
Mas antes de explicar como funciona a montagem de partições é necessário conhecer a estrutura de diretórios do Linux, então vamos descobrir o que são e pra que servem aqueles diretórios estranhos que estão no HD com o Linux instalado.
/ – Ou também chamado de raiz, é o ponto e partida do HD, a grosso modo seria o caminho “C:\” de um computador com Windows;
/home – Diretório onde ficam armazenados todos os arquivos e configurações do(s) usuário(s), semelhante ao diretório “Usuários” do Windows;
/root – Mesma função do diretório /home, porém, para os arquivos do root;
/mnt – De “mount”, ponto para montagem para os dispositivos de armazenamento como CD/DVD-ROM, Disquetes, outras partições do HD e outros HDs;
/media – Mesma função do /mnt, porém para uso com mídias removíveis, como os pen drives;
/bin – De “binary”, contém os binários executáveis dos principais comandos do sistema;
/sbin – De “SuperUser binary” Mesma função do /bin, porém para os comandos que só podem ser executados pelo root;
/etc – Diretório onde ficam todas os arquivos de configurações do sistema dos programas principais, lembra a grosso modo o registro do Windows;
/lib – De “library”, diretório em que ficam armazenadas as bibliotecas e os módulos (drivers) do sistema, semelhante ao diretório “Windows\System32”;
/lib64 – Mesma função do /lib, porém com as bibliotecas escritas em 64-Bits. Por esse motivo só existe nas versões 64-Bits do Linux;
/usr – De “Unix System Resources”, esse é provavelmente o diretório mais populoso do Linux, contém os executáveis e bibliotecas de todos os principais programas do Linux;
/usr/src – De “source”, contém os códigos fontes do sistema, necessários para compilar o Kernel e outros programas;
/opt – Semelhante ao /usr, porém para aplicativos não oficiais da distribuição;
/boot – Diretório que contem todos os arquivos referentes ao boot do Linux, incluindo o Kernel, bem como o gerenciador de boot e suas configurações;
/tmp – De “temporary”, diretório que contém arquivos temporários gerados pelos aplicativos, semelhante ao diretório “Windows\Temp”;
/var – De “variables”, diretório que contém os logs e outras variáveis de ambiente;
/dev – De “devices”, um dos diretórios exóticos do Linux, os arquivos neste diretório não são armazenados no HD, todos os arquivos deste diretório apenas apontam para os dispositivos de hardware do sistema, por exemplo /dev/dsp aponta para a placa de som, /dev/mouse para o mouse e assim por diante. Apesar de parecer confuso ou inútil para usuários comuns é uma mão na roda para os programadores;
/proc – De “process”, outro diretório exótico, nele estão todos os processos ativos do sistema, é a grosso modo um ponteiro para a memória RAM;
/lost+found – Exclusivo dos sistemas de arquivos ext. Em caso de corrupção da algum arquivo, o utilitário fsck.ext2 recupera estes arquivos neste diretório, cada partição tem o seu próprio diretório /lost+found.

Hierarquia de diretórios no Linux.Hierarquia de diretórios no Linux.
Podem existir mais diretórios na raiz “/” em cada Linux, mas os principais são esses. Só quem pode criar algum arquivo ou diretório na raiz é o root, mas nada impede que você logue com o root e crie um diretório “/arquivos” para colocar arquivos compartilhados entre todos os usuários do PC, mas o recomendado é fazer isso no /home, do tipo “/home/arquivos”, assim fica mais fácil de manter seu sistema organizado e fazer backup do mesmo.
No Linux os dispositivos de armazenamento são organizados da seguinte forma: Os HDs ligados ao barramento IDE são reconhecidos pelo prefixo hd seguidas de uma letra para diferenciar os diferentes dispositivos, aonde hda é o primeiro HD IDE do sistema, hdb o segundo, hdc o terceiro, e assim por diante. Os HDs e dispositivos de armazenamento ligados ao barramento Serial, como os HDs SATA e pen drives, são classificados da mesma forma, mas o prefixo neste caso é o sd, sendo o sda o primeiro dispositivo, sdb o segundo, …
As partições são organizadas de maneira semelhante, mas no lugar de letras temos números. Assim a primeira partição do primeiro HD SATA do sistema é chamada de sda1, a segunda sda2, e assim por diante (sdb1, hda4, …).
Após essa explicação sobre a estrutura de diretórios do Linux e da forma como os dispositivos e as partições são organizados já da pra explicar como funciona a tal da montagem dos dispositivos. Vamos supor que foi montada partição sda2 no diretório “/media/downloads”, a partir deste momento, todos os dados desta partição estarão disponíveis neste diretório, e tudo o que for salvo nele será automaticamente salvo na segunda partição do dispositivo sda.
É possível montar os dispositivos em qualquer ponto da arvore de diretórios, se quiser montar na sua área de trabalho, não tem problema, pode montar. Se quiser usar uma partição separada para o diretório /home pode usar, basta indicar na instalação do sistema que você quer usar uma partição diferente da qual será instalado o resto sistema (você pode fazer essa alteração depois de ter o sistema instalado também). Aliás, usuários mais avançados costumam usar partições diferentes para o sistema e para o /home, assim quando precisam reinstalar o sistema não precisam fazer backup dos seus arquivos e configurações, afinal, eles estão montados em uma partição diferente do sistema.
Pode parecer um tanto complicado no início, mas com o tempo acostuma e tudo isso se torna muito natural, assim como usar o “drive C:”. Vale lembrar que nas distribuições mais modernas, voltadas ao uso em Desktop, o usuário muitas vezes não precisa nem saber qual é a identificação do dispositivo que será montado, os ambientes de desktop se encarregam de montar automaticamente um dispositivo USB assim que plugado, e as partições do HD ficam disponíveis para montagem automática com apenas 1 clique.
Uma curiosidade, é que como os chipsets mais modernos não trazem mais controladoras IDE nativas, geralmente as placas mães para manter suporte a esses dispositivos adicionam uma controladora IDE externa que é reconhecida pelo sistema como uma controladora SCSI, então mesmo assim os HDs IDEs ligados a essas controladoras recebem a denominação sd.


O Terminal

Diferente do Windows, o Linux por si só não precisa de um modo gráfico para funcionar ou rodar os programas (a não ser os programas gráficos, é claro), ou seja, ele não precisa de uma GUI (Graphical User Interface). Apesar disto a maioria das distribuições voltadas para uso em Desktop vem acompanhada de uma interface gráfica e um gerenciador de ambiente – Gnome, KDE, XFCE, LXDE, Fluxbox e etc, só para citar alguns dos mais comuns – para tornar o uso do sistema operacional mais amigável para o usuário.
Mas se as distribuições já nos oferecem um modo gráfico instalado por que precisamos saber sobre o terminal?
Os modos gráficos são muito completos, mas não são independentes do terminal. O terminal de qualquer sistema Unix, seja ele qual for (Linux, Mac OS, BSD ou outro), é a ferramenta mais poderosa deste sistema, nele, tudo que você ordenar, será feito, se assim for possível.
Terminal do Linux.Terminal do Linux.
No início, muitos reclamam da necessidade de usar o terminal para configurar um aplicativo ou alguma coisa no sistema. Mas depois que você compreende o funcionamento do terminal, entende por que muitas vezes as coisas são feitas a partir dele e não com o auxilio de uma interface gráfica. Somente com o terminal, você pode realizar em apenas uma ou duas linhas de comando uma tarefa, que se fosse guiada pelo modo gráfico poderia levar a um grau de complicação muito maior, necessitando dezenas de cliques com o mouse e um ou vários aplicativos envolvidos.
Usuários mais experientes utilizam vários scripts para realizar tarefas padrões pelo terminal, assim, com apenas uma linha de comando realizam diversos procedimentos facilmente, e em um tempo de execução muito menor. Para profissionais, tempo é dinheiro, então quanto mais rápido e fácil você puder realizar algo, melhor.
Uma dica de grande valor, digitar comandos longos pode parecer bastante complicado, ainda mais quando não sabemos o nome completo do comando o do arquivo/diretório do qual queremos utilizar. Basta digitar a primeira ou as primeiras letras do comando/arquivo que você está querendo utilizar e apertar TAB, se só houver um arquivo/comando com esse nome, o terminal completará automaticamente para você, se houver mais de um ele lhe mostrará uma lista com as opções disponíveis, assim, digitando “/h (TAB) /u (TAB) /De (TAB)” provavelmente resultará no caminho /home/user/Desktop.
Essa dica também pode ser usada para descobrir se um programa está instalado ou não no computador. Para saber se, por exemplo, o aplicativo Transmission está instalado, basta digitar “trans (TAB)”, se o terminal completar para você com “transmission” ou sugerir o “transmission” entre os comandos encontrados, é por que ele está instalado no computador.
Outra dica, diferente do Windows, o Linux é Case Sensitive, ou seja, ele diferencia maiúsculas de minúsculas, então “desktop” é diferente de “Desktop”, muitos usuários se confundem bastante com isso no início.
Uma excelente guia explicativo com todos os comandos básicos em terminal do Linux pode ser encontrado na seção Wiki do Ubuntu-br, um site brasileiro destinado à divulgação e suporte da distribuição Ubuntu.


Pacotes e Repositórios

Antes de prosseguir, um pouco de conceituação, no Linux os pacotes – sejam eles bibliotecas, módulos do sistema, ou mesmo aplicativos – comumente são classificados como estáveis (Stable), em testes (Testing) e instáveis (Unstable).
Assim que um pacote é lançado ou revisado ele é classificado como Unstable, ou seja, ele pode (não, deve) conter bugs ou até mesmo travar ou parar de funcionar de vez em quando. Após passar por um período de testes e os desenvolvedores considerarem que o pacote não contém mais falhas, ele passa a ser considerado como Testing. Depois que o pacote passa pelo menos 3 anos sem ter ocorrido nenhum relato de um erro médio ou grave, ele então, finalmente, passa para a classificação Stable.
As distribuições também obedecem a essa mesma classificação, uma distribuição como o Ubuntu, Fedora ou Mandriva, que costumam lançar nas suas versões as ultimas versões dos pacotes disponíveis, são todas Unstable ou Testing, por mais que haja somente um único pacote classificado como Unstable ou Testing na distribuição.
Mas você não precisa se apavorar ao ver um pacote Unstable, pois até chegar a essa classificação ele já passou pelos tradicional estágios de alpha, beta, release candidate, e etc, assim como todos os programas do Windows.
No Linux, em geral, os programas não são instalados como no Windows, aonde você tem um arquivo executável instalador que vai configurando a instalação do programa em si, o famoso conceito “Avançar, Avançar, Avançar, Terminar.”. O jeito tradicional de se instalar um programa, no Linux, é por meio de pacotes obtidos nos repositórios da distribuição.
Mas, o que é um pacote? E um repositório?
Um pacote, como já foi falado anteriormente, é um instalador de alguma coisa. Essa alguma coisa pode ser uma biblioteca, um módulo do sistema, um programa ou alguma das dependências do programa.
Um repositório é um servidor – geralmente FTP ou HTTP – aonde ficam hospedados, de forma organizada, os pacotes referentes a este repositório. Se o repositório for oficial de uma distribuição, ele irá conter todos os pacotes oficiais disponíveis para esta distribuição, inclusive novos pacotes, ou versões atualizadas dos já existentes, são adicionados regularmente. Assim fica fácil manter o sistema sempre atualizado, pois basta fazer uma consulta no repositório e verificar se a versão do pacote instalado no computador é a mesma da ultima disponível neste repositório, os gerenciadores de pacotes das distribuições costumam fazer isso de forma automática.
RPM Fusion, repositório muito utilizado por 
usuários do Fedora.RPM Fusion, repositório muito utilizado por usuários do Fedora.
As distribuições de Linux vem com uma lista desses repositórios já pré configurada, mas normalmente você vai precisar mais que os padrões para um uso confortável, já que os repositórios oficiais não podem conter pacotes que não sejam de código aberto, ou seja, software livre. Pacotes como o plugin flash da Adobe, os drivers proprietários das placas de vídeo da nVidia e da ATI/AMD, o Java da Sun, entre outros são pacotes classificados como non-free (apesar de serem gratuitos), e é preciso habilitar manualmente os repositórios non-free da sua distribuição para poder obter esses pacotes.
Além dos repositórios non-free também é possível, na maioria das distribuições, habilitar repositórios com pacotes Unstable, para os que desejam estar sempre com a ultima versão disponível de um pacote, mesmo que ela possa ter algum problema. Todos esse repositórios falados são repositórios mantidos pelos desenvolvedores da distribuição, mas também é possível adicionar repositórios de terceiros, e assim aumentar ainda mais a oferta de pacotes para o seu Linux.
Os repositórios de terceiros, geralmente, contem pacotes que não foram testados oficialmente pela distribuição, ou que ela, por uma razão ou outra, decidiu não oferecer suporte. Esses repositórios são mantidos por comunidades de Linux e em alguns casos por apenas uma única pessoa. Então antes de sair adicionando qualquer repositório na sua lista de repositórios, é bom realizar uma pesquisa sobre a confiabilidade dele.

Instalando Programas no Linux

As distribuições de Linux para uso em Desktop vêm acompanhadas de um gerenciador de pacotes, e é através dele que, em geral, instala-se um programa no Linux. Existem algumas exceções, mas os principais programas podem ser todos instalados pelo gerenciador de pacotes da distribuição. As vantagens de usar uma distribuição amplamente difundida está nos repositórios desta distribuição, que costumam ser bastante generosos e oferecem ao usuário uma gama enorme de programas disponíveis para pronta instalação.
Os gerenciadores de pacotes mais comuns consultam a lista de repositórios e buscam nos repositórios os pacotes necessários para instalar o programa e as satisfazer as suas dependências, bem como instalam e configuram o programa. Assim, sempre que precisar instalar um programa procure primeiramente nos seus repositórios com o gerenciador de pacotes da distribuição, isso evita a maioria dos problemas com instalação de programas que não tem dependências satisfeitas, além de garantir que sempre terá seus programas atualizados, juntamente com o S.O.
Além de serem o meio mais tradicional de instalar os programas, os gerenciadores de pacotes, são também o meio mais correto para desinstalar um programa – os usuários já são mais acostumados com uma central para remover programas, já que o “Adicionar ou Remover Programas” do Windows também faz isso – ou atualizar o sistema.
Synaptic, um GUI para o gerenciador de pacotes
 do Debian/Ubuntu.Synaptic, um GUI para o gerenciador de pacotes do Debian/Ubuntu.
Cada distribuição tem o seu gerenciador de pacotes, geralmente herdado da distribuição da qual ela se originou, no Ubuntu temos os apts (apt-get e aptitude) que foram herdados do Debian, o Fedora, assim como o Red Hat, usa o yum como gerenciador padrão. O Mandriva e o OpenSUSE fogem um pouco dessa linha, o Mandriva usa um gerenciador que foi desenvolvido pela antiga equipe do Mandrake, o urpm, também conhecido como urpmi, já o OpenSUSE usa o YaST, desenvolvido pela Novell.
Mas para o usuário comum não há necessidade de saber qual o gerenciador de pacotes padrão, já que as distribuições geralmente contam com utilitários gráficos para tal função.

Mas o que fazer quando um programa não está nos repositórios?

Se por acaso você está querendo instalar um programa que não está disponível nos repositórios, o processo é semelhante ao Windows. Você terá que ir ao site do desenvolvedor e baixar o pacote correspondente a sua distribuição e arquitetura – por exemplo, para o Ubuntu 64-bits escolha o pacote .deb de 64-bits (x86-64 ou AMD64) – para depois instalá-lo normalmente.
Como já foi falado anteriormente, as distribuições voltadas para uso em Desktop apresentam utilitários gráficos para os gerenciadores de pacotes, então basta dar 2 cliques no arquivo baixado e o gerenciador irá se encarregar de resolver as dependências, se houverem, e instalar o programa, de forma muito similar ao Windows.
Pacotes RPM, utilizados pelo Red Hat e os seus
 derivadas.Pacotes RPM, utilizados pelo Red Hat e os seus derivadas.
Se quiser pode fazer esse procedimento pelo terminal também. Para distribuições baseadas no Debian o comando para instalar é dpkg -i nome_do_arquivo.deb (é possível utilizar o TAB para completar o nome do arquivo) e para desinstalar basta substituir o -i por -r, ficando dpkg -r nome_do_arquivo.deb. Em distribuições baseadas no Red Hat o comando é rpm -i nome_do_arquivo.rpm, para desinstalar substitui-se o -i por -e, ficando rpm -e nome_do_arquivo.rpm.
No caso de não encontrar o programa disponível para a sua distribuição existem programas que convertem pacotes .rpm para .deb, e vice-versa, mas seu uso é recomendado somente em ultimo caso. A maioria dos programas atuais costumam estar disponíveis em ambos os formatos.

Compilando Programas para Instalar

Apesar de ser uma cena, hoje em dia, cada vez mais rara, o usuário ainda pode se deparar o com o caso de não encontrar um pacote pré compilado e precisar compilar o pacote para instalá-lo. Os códigos fonte dos pacotes costumam, tradicionalmente, vir compactados em arquivos .tar.gz.
O primeiro passo a se fazer é extrair o arquivo .tar.gz, você pode fazer isso pela interface gráfica da distribuição, muito semelhante ao Windows. Mas para ganhar tempo, já que estará lidando com o terminal para compilar, pode-se fazer isso diretamente pelo terminal, com o comando tar -zxvf nome_do_arquivo.tar.gz (é possível utilizar o TAB para completar o nome do arquivo). Os arquivos serão extraídos em no diretório nome_do_arquivo que será criado automaticamente.
Compilar os programas requer um conhecimento um pouco maior sobre o funcionamento do mesmo, você provavelmente terá que ler o arquivo README, ele costuma conter todas as informações sobre a instalação do pacote, tais como bibliotecas necessárias e outras dependências. Detalhe especial para esse item, por que se houverem dependências não resolvidas o programa não irá compilar, irá acusar erros. Então, antes de prosseguir, primeiro instale as dependências necessárias.
Os desenvolvedores costumam incluir junto com os códigos fontes dos programas dois scripts, um de configuração e checagem das dependências, e outro de compilação propriamente dito. O primeiro passo é rodar o arquivo configure, com privilégios de SuperUsuário (Administrador), com o comando ./configure. É importante ler todas as mensagens de saída do terminal, principalmente as de erro, se houverem. Vai ser preciso corrigir esses erros primeiro antes de continuar, se não a compilação irá falhar. Os “warnings”, se aparecerem, não são cruciais, são apenas avisos, e provavelmente não iram impedir a compilação do pacote.
configure reclamando a falta do pacote 
tcl-dev.configure reclamando a falta do pacote tcl-dev.
Depois de resolvidos todos os problemas apontados pelo configure, basta rodar os arquivos de compilação, com privilégios de SuperUsuário. Os procedimentos podem variar de pacote para pacote, e estarão disponíveis no README, mas o padrão são os comandos sudo make e após sudo make install.
Para remover um pacote instalado e compilado pelo make, basta navegar até o diretório aonde estão os arquivos-fonte, e rodar, com privilégios de SuperUsuário, o comando make uninstall.
O make é um programa que interpreta os procedimentos de compilação e instalação de um makefile. Ele compila, aponta e instala o pacote corretamente para o usuário.


Programas Equivalentes no Linux

Quando se está migrando para um sistema novo, muitas vezes também é necessário migrar para alguns programas para novos, quase todos os programas comuns tem seus equivalentes no Windows e no Linux. Uma breve lista dessas equivalências pode ser encontrada logo abaixo:
Microsoft Windows
Linux
Escritório
Adobe Acrobat Reader Adobe Acrobat Reader, Evince, Kpdf
Bloco de Notas Gedit, Kate
Microsoft Office Word OpenOffice.org Writer
Microsoft Office Excel OpenOffice.org Calc
Microsoft Office Power Point OpenOffice.org Impress
Microsoft Office Outlook Thunderbird, Evolution
Utilitários
WinZip, WinRar File Roller, Ark
Windows Explorer Nautilus, Dolphin, Thunar
VMWare, VirtualBox VMWare, VirtualBox
Aero Compiz-Fusion
Partition Magic Gparted, QTparted, PartionImage
Internet
Windows Live Messenger Emesene, aMSN, Empathy
Internet Explorer, Google Chrome, Firefox, Opera Firefox, Google Chrome, Opera
Skype Skype for Linux
TeamSpeak TeamSpeak
LimeWire, FrostWire LimeWire, FrostWire
eMule aMule
Dreamweaver Bluefish, Aptana Studio
Bittorrent, Azureus, uTorrent Bittorrent, Azureus, Transmission, Ktorrent
JDownloader JDownloader
Multimídia
Windows Media Player, iTunes Rhythmbox, Amarok, Exaile, Banshee
Windows Media Player, VLC VLC, MPlayer, Totem, Kaffeine
Real Player Real Player
Nero, CDBurnerXP Nero Linux, K3b, Brasero
Sound Forge Audacity, TerminatorX
Windows Movie Maker, Adobe Premiere Avidemux, Kino
Picasa Picasa, F-Spot, digiKam
Adobe Photoshop GIMP
Adobe Illustrator, CorelDRAW! Inkskape
Rhythmbox, um dos reprodutores de aúdio do 
Linux.Rhythmbox, um dos reprodutores de aúdio do Linux.

Existem vários outros programas que se equivalem aos da tabela, mas, os mais conhecidos são os acima citados. Inclusive, a maioria deles costuma vir pré instalado com as distribuições, não necessitando nem o usuário procurar por uma solução para realizar tarefas cotidianas.

Considerações Finais

A segurança é um dos pontos mais fortes do Linux, isso se deve em grande parte pelo sua origem nos servidores e posterior migração para uso em Desktop, como também pelo seu sistema de Usuário VS Administrador, aonde fica praticamente impossível um usuário comum poder instalar um vírus que possa comprometer o uso de todo o sistema. Diferente do Windows, quanto menor for a experiência do usuário, menor a probabilidade dele contaminar o computador, e no caso do usuário ser infectado, os danos serão muito reduzidos, afetando somente os arquivos de propriedade deste (os contidos na sua /home).
O Linux já foi um sistema completamente hostil à usuários comuns, destinando-se unicamente a entusiastas e usuários com grande conhecimento de informática em geral. A sua utilização extremamente dependente de comandos, muitas vezes demasiados complexos, no terminal, foi gradualmente substituída por interfaces gráficas bastantes amigáveis, se tornando um sistema tão fácil de usar quanto o Windows e outros.
O grande problema enfrentado pelos novos usuários do Linux é que estes estão fortemente aninhados ao Windows, e ao se depararem com uma situação que requer que seja feito um procedimento diferente do costume, os usuários sentem-se perdidos e não sabem por onde começar.
Até se desprender do costume do Windows, ou então acostumar-se com o Linux, leva-se um tempo, e geralmente nesse período de adaptação diversos problemas são criados pelos usuários. Não é preciso se apavorar com o primeiro problema que ocorrer, tudo tem solução, e se você não souber como resolver por conta própria, as distribuições contam com fóruns próprio para solução de problemas, além dos diverso fóruns especializados no assunto que podem lhe auxiliar na solução. Outra alternativa é uma pesquisa no Google Linux, um sistema de busca especializado para o Linux.



mais umas vez.... via http://blogs.forumpcs.com.br/espaco_aberto/2010/06/18/introducao-ao-linux/10/
//  Minha Opnião
Sou Linux-User meio a prestação, a pouco tempo ficava nessa de Roda Programa no Linux por que gostava de começar denovo aprender outra interface etc... depois precisava do Office do Windows porque na biblioteca pra imprimir era só esse que rodava...
Bom Após muita luta decidi a pouco tempo, mas muito produtivo ficar com OpenSource, quero "TheHardWay" pra alguns, gostei muito do conceito do autor de ERA MAIS FÁCIL DO WINDOWS, que na verdade é EU COSTUMAVA SABER ISSO MAS SÓ NO WINDOWS...
Como em qualquer sistema no início claro que estou me adaptando, mas prefiro chegar ao mercado de trabalho dominando as duas plataformas, e estou também tentando um "" hackintosh" ( Irei explicar mais tarde ) para aproveitar meu tempo descobrindo agora o que talvez ocupe depois...
Passei por uma situação inusitada essa semna quando meu amigo comprou um Adaptador Wireless e não vinha com cd's de Drive, pois era "plug and play" segundo fabricante, mas só pra Win7x86 , bom ele user do Win7 x64... ja viu não funcionou, baixamos no site do fabricante denovo e nada... mandamos e-mail sem resposta... fomos catar na net achamos depois de muita luta um drive q funcionou, escrito por um linux-user, talvez portado do linux não sei...
acabou que um dia dessa semana eu peguei emprestado o Wireless drive do meu amigo pra testar no meu iPod pra usar wireless nele e ja até tinha separado um tempo de 2 horas pra achar pro Linux(com o preconceito ja na minha cabeça) de que se demorou pro windows imagina pro linux...
Abri o Navegador e digitei o Nome do Drive Antes mesmo de sequer Conectá-lo, foi a surpresa após conectado na Barra de Informações do Linux estava escrito: " Redes Wireless Disponiveis :
                                                                   - iPod 4th iOS 4.3
eu fiquei pasmo...
nem sequer pediu instalação, ele simplismente abriu a rede, seila se era um drive nativo, se era genérico, só sei que o FAMOSO Windows NUNCA FEZ e NUNCA VAI FAZER algo assim... Nem o Plug And Play deles é tão rápido, foi totalmente instantâneo...
Bom esse foi um relato a parte de tantos são os Benefícios, eu cito ainda a atualização do sistema além de FREE é rápida fácil e prática, se você usa o windows e é Totalmente Iniciante ainda da tempo de ir pro Linux e não ficar cheio de "caprichos"...

1. Kernel

O sistema GNU/Linux não figura entre os mais utilizados nos computadores pessoais, sua origem, voltada a programadores e servidores, quem sabe explique isso. Porém, o kernel Linux é muito mais abrangente, e está presente nos mais diversos dispositivos e plataformas, de roteadores domésticos à enormes servidores, do MIPS ao x86, em qualquer setor da tecnologia é possível ter algum dispositivo rodando um kernel Linux. Isso ocorro por que o kernel Linux é multiplataforma, e pode ser utilizado nas mais diversas aplicações.
Computador semelhante ao usado por Linus 
Torvalds para o desenvolvimento inicial do Linux

Computador semelhante ao usado por Linus Torvalds para o desenvolvimento inicial do Linux
Ironicamente o kernel Linux não nasceu com o intuito de ser portado para outras plataformas, isso foi ocorrendo em meio a sua evolução. Ele foi desenvolvido primeiramente em um computador desktop padrão, do próprio Linus Torvalds (inventor do kernel Linux), um PC 386-AT, e acreditem, o kernel atual ainda é capaz de rodar nesta arquitetura, necessitando apenas de 8MB de memória RAM e 40MB de armazenamento em disco. Não espere muita coisa além de um terminal padrão e os comandos nativos, porém é impressionante ver a versatilidade do kernel.
O kernel Linux ficou famoso pela sua utilização no sistema operacional GNU/Linux, mas inicialmente Richard Stallman, líder do projeto GNU, tinha como ideia desenvolver seu próprio kernel, chamado de HURD. Após algum tempo, a equipe de desenvolvimento do GNU apresentou o trabalho de Linus Torvalds à Richard Stallman, e este então decidiu por utilizar o Linux como kernel padrão do projeto GNU. Se o HURD tivesse ficado pronto a pouco mais de duas décadas atrás, a história hoje poderia ser outra.

Afinal o que é o kernel?

Seria pretensão demais tentar explicar o kernel em um (ou poucos) parágrafo(s), mas é possível ter uma ideia de sua função para o computador e o sistema operacional. O kernel é o responsável pela comunicação entre o hardware e os aplicativos, é ele que interage diretamente com todos os componentes do computador, gerencia os recursos do sistema e permite que os aplicativos façam uso deles. Se fizer analogia com um carro, o motor seria o hardware; e o piloto do carro os aplicativos; o kernel seria o intermediador entre eles (os pedais, direção, caixa de marchas, etc…). Você pode até trocar o motor do carro por um mais potente, mas isso não vai fazer mudar a forma de dirigir o veículo, afinal, as marchas, pedais e direção são os mesmos.

PCs

Como já foi dito, o kernel Linux foi desenvolvido desde o inicio para rodar em PCs, inicialmente apenas do 386 do Linus Torvalds, mas hoje em dia roda em quase todas as arquiteturas disponíveis, principalmente x86, ARM e PowerPC, frenquentemente encontradas nos PCs. Existem centenas de distribuições do GNU/Linux disponíveis, porém, apesar disto, o Linux não é um forte competidor neste mercado, tendo apenas aproximadamente 1% da quota de mercado.

Celulares

Nokia N900 rodando o Maemo, um dos muitos 
sistemas com kernel Linux
 Nokia N900 rodando o Maemo, um dos muitos sistemas com kernel Linux

Nos celulares o kernel Linux não é uma alternativa com irrisória participação no mercado, como ocorre no mercado dos PCs Desktop, devido a sua excelente portabilidade e a baixa demanda por processamento o kernel Linux está presente como grande competidor nesta área, dentre os SOs mais atuais podemos citar o Android, do Google, BADA, da Samsung, e Meego, que surgiu duma parceria entre a Intel (e o Moblin) com a Nokia (e o Maemo), e o WebOS, da antiga Palm, hoje da HP. Fora outros sistemas baseados em Linux utilizados pela Motorola, LG e outras.

Servidores

Quer um campo aonde o kernel Linux manda, este é o de servidores, principalmente entre os de alto desempenho. A alta confiabilidade do kernel Linux, aliados a liberdade total para modificações e otimizações do código fonte para um hardware especifico faz do kernel Linux o mais utilizado nesta área. Atualmente, na lista dos 500 supercomputadores mais poderosos do mundo, disponibilizada pelo site top500.org, 459 deles rodam sob o kernel Linux, isso mesmo, mais de 90% deles rodam o kernel Linux.

Sistemas embarcados

Servidores IBM BlueGene
Servidores IBM BlueGene
Computadores dimensionados para pequenas aplicações, que na maioria das vezes são feitos sob medida, com propósitos específicos. Dificilmente contam com poder de processamento necessário para rodar aplicações pesadas, requerem alta confiabilidade e dificilmente são modificados após a sua instalação inicial. O kernel Linux cai como uma luva nestes dispositivos, outra vez pela sua alta portabilidade e baixo consumo de recursos, mas também pela sua reconhecida estabilidade e alta confiabilidade. A maioria dos NAS comerciais utiliza de um kernel Linux para gerenciar o hardware e rodar os serviços presentes.

Roteadores

Muitos roteadores podem ter seus recursos ampliados através de firmwares modificados que rodam o kernel Linux, os mais famosos são os projetos OpenWRT e DD-WRT, que rodam em diversos roteadores Linksys, D-Link, TP-Link, Belkin e outros. Estes firmwares adicionam opções avançadas para compartilhamento e gerenciamento da conexão, servidor de impressão, compartilhamento de arquivos, além de uma performance geralmente melhor que os firmwares oficiais dos fabricantes. Usuários de redes P2P relatam melhoras até no uso da internet após a modificação dos roteadores com estes firmwares.
Não são somente estas as possíveis aplicações do kernel Linux, existem até mesmo relógios de pulso que rodam o Linux para algum propósito específico. Se quiser ficar impressionado com as diversas utilizações do kernel Linux é só dar uma conferida no site Linux Devices.

Novidades recentes
A ultima versão estável do kernel Linux é a 2.6.37, publicada no inicio do ano (2011), mas outra versão já encontra-se em desenvolvimento. No entanto, vamos citar as principais evoluções das ultimas versões lançadas do kernel, a partir da 2.6.30.
O kernel 2.6.30 é datado de Junho de 2009, e trouxe como uma das principais novidades o suporte as instruções Intel AVX e a compactação do kernel via BZIP2 e LZMA, sendo 10% e 33% mais eficiente que o atual GZIP. Porém o principal foco deste novo kernel foi mesmo aumentar o desempenho através de um suporte melhorado a multitarefa, melhorias na performance dos sistemas de arquivos ext2 e ext3, e também de diversas placas de rede wireless. O tempo de boot também recebeu uma atenção especial e foi melhorado.
USB 3.0, o kernel Linux foi o primeiro a 
adicionar suporte a este padrão
USB 3.0, o kernel Linux foi o primeiro a adicionar suporte a este padrão

A versão 2.6.31, datada de Setembro de 2009, adicionou o suporte ao novo padrão USB 3.0, antes mesmo das primeiras placas mães com este padrão começarem a aparecer. O Linux largou na frente e foi o primeiro a oferecer suporte ao novo padrão. Outras melhorias como suporte via kernel das placas de vídeo ATI Radeon do R100 até o R500 (Radeon X1000 Series) também apareceram nessa versão. Algumas funções importantes dos netbook da Acer e ASUS também foram incorporadas nativamente a esta versão do kernel.
O suporte ao ACPI 4.0, o mais recente e avançado sistema de gerenciamento de energia atual, foi a principal novidade do kernel Linux 2.6.32, datado de Dezembro de 2009, o Linux novamente foi o pioneiro no suporte a este padrão. Além do suporte ao ACPI 4.0, outras melhorias foram feitas com relação ao gerenciamento de energia, que agora pode ser comandado genericamente pelo kernel, não dependendo mais de uma implementação própria via driver. Na área de virtualização, foi incluído o KSM, que permite desduplicação de porções de memória'1, com isso a Red Hat anunciou que consegue sustentar 52 máquinas virtuais rodando o Windows XP com 1GB de RAM, em um servidor com apenas 16GB de memória RAM.
('1 = O XP usa 128MB de RAM mas na virtualização se coloca 1GB, nessa desduplicação basicamente ele pega só o que esta usando sem reservar 1GB inteiro se vai usar 128MB)
No kernel 2.6.33, os drivers da nouveau, mais avançado que o antigo nv, foram finalmente adicionados ao kernel, permitindo uma melhoria do desempenho das placas gráficas da nVidia, sem depender do driver proprietário. Outra grande novidade foi o suporte ao ATA TRIM para os SSDs, melhorando a performance e vida útil destes. Melhoras na área de virtualização também foram vistas. O kernel 2.6.33 é datado de Fevereiro de 2010.
O ext4 é a principal novidade do kernel Linux na versão 2.6.34, que é datado de Maio de 2010, e que segundo Linus Torvalds “não trouxe nada de interessante […] mas é assim que eu gosto”. O suporte ao ext4 que antes acontecia via módulo, carregado após o kernel, agora é nativo. Apesar de ter sido muito questionado por administradores de sistemas, por ser muito imaturo ainda, o ext4 tem mostrado bastante estável e maduro, atualmente é a opção padrão para instalação na maioria das distros. Outras melhorias também aconteceram no campo da virtualização (KVM e VMWare). O sistema de trocas de GPU nVidia Optimus também passou a ser suportado de forma parcial neste novo kernel, dependendo da atualização de alguns outros componentes do SO.

O suporte ao ATA TRIM permitiu melhoras no 
desempenho e vida utíl dos SSDs
O suporte ao ATA TRIM permitiu melhoras no desempenho e vida utíl dos SSDs

A parceria da AMD com o desenvolvimento do kernel Linux mostrou-se muito produtiva para o kernel 2.6.35, que trouxe suporte ao Turbo Core dos processadores AMD Phenom II X6 e suporte a decodificação via hardware de vídeos em H.264 pelas GPUs AMD Radeon bem como suporte a gerenciamento de energia delas, os chipsets Intel Ironlake também foram beneficiados com decodificação de H.264. O Google colaborou com novos recursos para computação na nuvem e processamento pela rede. O kernel 2.6.35 é datado de Agosto de 2010.
O kernel 2.6.36, datado de Outubro de 2010, trouxe uma novidade interessante, pela primeira vez na verão 2.6 (quem sabe a primeira da história) o kernel sofreu uma redução de tamanho. O Zram, um recurso para compactação de memória, foi adicionado, bem como o AppArmor, uma aplicação de controle de segurança muito eficiente. Os recursos do Intel Intelligent Power Sharing, tecnologia presente nos processadores Core ix que realiza um “overclock” automático na GPU quando o CPU não está à pleno vapor, ou reduz o consumo de ambos quando estão ociosos, também foram implementados nesta versão do kernel.
A ultima versão estável é a 2.6.37, datada de Janeiro de 2011, e tem como principal novidade a remoção total do Big Kernel Lock, um termo usado para quando um processo com baixos privilégios necessitava usar uma área com altos privilégios, travando momentaneamente a execução do kernel, para execução deste processo. Distribuições relatam melhoras na ordem de mais de 250 vezes o numero de iterações por segundo na gestão de memória. Um salto impressionante em desempenho multitarefa. Ocorreram também melhorias no sistema de arquivos ext4.

Considerações Finais

Apenas para demonstrar como o desenvolvimento do kernel Linux vem crescendo ao longo dos anos, serão apresentados alguns dados referentes ao código fonte do kernel. A versão 0.01 do kernel Linux que foi lançada em Setembro de 1991 possuía 10.239 linhas de código. Alguns anos depois, em Março de 1994, a versão 1.0.0 foi lançada, com 176.250 linhas de código. Cerca de um ano depois, em Março de 1995, o Linux 1.2.0 foi lançado, com 310.950 linhas de código.
Linus Torvalds, criador do kernel Linux

Linus Torvalds, criador do kernel Linux

A versão 2.2.0 do Linux, lançada em Janeiro de 1999 já continha 1.800.847 linhas de código. A próxima grande versão, a 2.4.0, lançada em Janeiro de 2001 continha quase o dobro deste número, com 3.377.902 linhas de código. Em Dezembro de 2003 é apresentada a versão 2.6.0 com 5.929.913 linhas de código. E como não foi possível encontrar números oficiais para a versão atual (2.6.37), a versão 2.6.36, de Outubro de 2010, contém miseras 13.499.457 linhas de código, nota para que a versão 2.6.36 possivelmente foi a primeira a apresentar uma redução no numero de linhas de código, em comparação com a sua anterior.
Linux Torvalds já declarou uma vez que o kernel Linux está se tornando muito inchado e sem melhorias visíveis no desempenho, desde que ele reassumiu o desenvolvimento do kernel parece disposto a enxugá-lo e deixá-lo menor. Quem sabe isto represente uma diminuição na velocidade do desenvolvimento, ou então uma melhora considerável na performance do mesmo. Só o tempo dirá.
O desenvolvimento do kernel Linux conta com a colaboração de importantes empresas do ramo de tecnologia. Google, Intel, AMD, Oracle, IBM, HP são apenas algumas das empresas que dedicam parte do seu pessoal para o desenvolvimento do kernel Linux. Não é possível deixar de fora da lista a Microsoft, principal concorrente dos sistemas Linux, que também já colaborou com códigos para o kernel Linux.
E para fechar, algumas pequenas, e interessantes, curiosidades sobre o kernel Linux:
  • Linus Torvalds desenvolveu o kernel Linux enquanto estudava na Universidade de Helsinki em 1991.
  • No ano passado, 75% do código criado para o kernel Linux foi desenvolvido por programadores que trabalham em empresas privadas.
  • 95% dos servidores que se utilizam nos estúdios de Hollywood para os filmes de animação rodam o kernel Linux.
  • O primeiro longa-metragem de sucesso produzido em servidores que rodavam o kernel Linux foi Titanic em 1997.
  • James Cameron também escolheu servidores com kernel Linux para produzir o filme Avatar.
  • Os servidores de Google rodam sob o kernel Linux.
  • Google contribuiu apenas 1,1% do código do atual kernel do Linux.
  • O kernel Linux está-se estendendo rapidamente no mercado de smartphones e outros dispositivos eletrônicos dentro do mercado de consumo.
  • Baixo a licença GPL, qualquer programador ou empresa que distribua o kernel do Linux deve proporcionar também o código fonte dentro do próprio pacote.
  • Em 1994, um tal William Della Croce Jr. registrou a marca Linux nos Estados Unidos e começou a pedir royalties às diferentes distribuições Linux.
  • Torvalds e seus advogados ganharam esta batalha em 1997 para recuperar o registro da marca Linux.
  • Estima-se que em um meio de desenvolvimento comercial o código fonte do kernel Linux custaria em torno dos 7,3 bilhões de dólares.
  • A analista IDC contempla que em 2012 as vendas de suporte para Linux superem 1 bilhões de dólares.

via http://blogs.forumpcs.com.br/espaco_aberto/2011/01/31/curiosidades-do-kernel-linux/4/