sexta-feira, 3 de maio de 2013

Qual a diferença entre Unix e Linux?

296204072011234608

Linus Torvalds, quando criou o Linux, criou ele nos padrões “POSIX”, que é o mesmo padrão que os UNIX usam. É por esse mesmo uso do padrão POSIX que o Linux é parecido com o UNIX. Além do mais, existem vários tipos de UNIX, que têm seu código-fonte fechado, e pago. Uma resposta mais completa para esta pergunta foi feita pelo Fernando M. Roxo:
Limpo, claro e definitivo: O Linux não é UNIX. O Linux é um UNIX. O UNIX foi um sistema criado e registrado pela Unix Lab. Todos os sistemas baseados naqueles códigos são chamados de uma forma geral de UNIX.
Linux foi escrito desde o inicio pelo Linus Torvalds e não contém nenhuma linha de código do UNIX. Mas o Linux foi escrito para ser conforme o padrão POSIX, que deve ser o padrão da API (Application Programming Inteface) Unix, que em última análise pode ser resumido (forçando um pouco a barra) como sendo as chamadas do sistema. Por isto se diz que o Linux é um Unix (não UNIX). Tem uma diferença sutil aí.
Por causa da API POSIX, do conjunto de utilitários (FSF/GNU em sua maioria) e do uso do X-Window (XFree) o Linux é tão parecido com o UNIX que existem empresas que usam o Linux para desenvolver para UNIX que não seja o dela mesma (por exemplo a IBM).

As Distribuições

Sem título

Voltando mais um pouco ao escopo do que é Linux, podemos ressaltar que o Linux é o sistema operacional, ou seja, o kernel (núcleo). Mas o que é um sistema operacional sem programas? Para que haja um uso dos recursos que o sistema operacional pode oferecer, os programadores vão criando aplicações e utilitários que vão dar o gostinho ao usuário.
O papel das distribuições é isso: empacotar o Linux. O que as distribuições fazem é reunir os programas disponíveis com o kernel, e deixar o sistema pronto para o uso. Sem as distribuições não haveria a popularização do Linux, pois seria um grande trabalho o usuário instalar o sistema puro, e depois compilar os programas deixando-os compatíveis.
Existem inúmeras distribuições existentes por esse mundo afora. Mas há sempre as distribuições mais conhecidas, que são as mais atuantes no mercado. Elas são: REDHAT, SuSE, CentOS, Fedora, OpenSUSE, Slackware, Debian e Ubuntu. Cada um tem suas características bem marcantes. E se fôssemos discutir aqui quais as vantagens de cada uma em relação a outra, não conseguiríamos. A escolha da distribuição é uma escolha a gosto.

Por que eu devo confiar no Linux?

Pergunta muito fácil de se responder, inclusive eu vou responder bem grosseiramente: Ele é bom! :) O Linux tem ganhado credibilidade cada vez mais por ser um sistema seguro, estável, e confiável. É muito difícil (senào quase impossível) que o Linux em si dê um crash. Só para ter uma idéia, nestes 8 anos em que uso Linux, só obtive no máximo 10 travamentos! Por que estes travamentos? Interface gráfica, pois um dos meus computadores é um desktop.
Empresas cada vez mais estão apostando no Linux. A IBM é uma das empresas que mais está investindo pesado no Linux, sendo com ajuda financeira, parcerias e desenvolvimento de programas. A Intel é outra empresa que também está ajudando muito, investindo bastante nos desenvolvedores do sistema. Além disso, várias outras pequenas ou médias empresas estão cada vez mais adotando o Linux como sistema padrão pelo simples fato de que ele funciona melhor e mais estávelmente que outros sistemas como o Windows. Pode ser que você ache que isto tudo conversa fiada, mas o Linux é bem estável mesmo! Já vi sistemas Linux ligados por vários meses sem nem sequer dar um reboot na máquina. Inclusive aqui em casa eu consegui deixar o meu Linux ligado por 2 meses, pena que faltou luz e o computador desligou; É isso mesmo não possuo nobreak.
Basicamente é isso. Você tem de confiar no Linux porque ele é bom e tá acabado. E só tende a melhorar, antigamente não havia nem uma interface gráfica muito boa e usável para quem está iniciando na computação. Hoje temos o GNOME, KDE e algumas outras…, as duas citadas  são duas ótimas interfaces gráficas para quem está engatinhando. São coisas que fazem o Linux valer a pena!

O que é GPL?

Se você já ouviu falar bem de Linux, com certeza já deve ter ouvido falar nesta sigla. GPL significa General Public License (ou traduzindo grosseiramente: Licença Pública Geral), e foi criada pela Free Software Foundation. A grande maioria dos programas que vêm nas distribuições Linux são de código-fonte aberto, e usam esta licença. Uma licença serve para proteger o seu código quando ele for lançado para o público.
A licença GPL permite que o autor do código distribua livremente o seu código… Outras pessoas podem simplesmente pegar este código, modificar à suas próprias necessidades e usar à vontade. O único requerimento é que a pessoa que modificou deve lançar o código modificado em GPL e manter também o seu código aberto (e não apenas distribuir os binários). Isso tudo cria uma comunidade de desenvolvedores onde toda a ajuda é mútua, e você pode pegar várias idéias de outros desenvolvedores simplesmente olhando o código deles. Além disso, você pode aproveitar e poder ajudar o desenvolvedor, criando correções e mandando-as para o autor.
É com essa licença que o kernel do Linux é liberado. É assim que o kernel tem seu desenvolvimento feito por várias e várias pessoas em todo o mundo. Estas pessoas pegam livremente o código-fonte do kernel, analizam-no e procuram por erros. Se encontrarem erros, escrevem correções e mandam para o Linus Torvalds. E não só correções, mas desenvolvedores também fazem novas implementações ao kernel e mandam para o Linus Torvalds organizar tudo. E é assim que temos hoje em dia este grande e bem feito e organizado kernel do Linux! É assim que a filosofia GPL funciona, e funciona muito bem para criar uma comunidade de desenvolvedores justa! Eu pessoalmente apóio e muito a licença GPL, que para mim é simplesmente perfeita. Vivas à Free Software Foundation por criar esta licença!

Primeiros contatos com o Linux:

Sem título

A inicialização do Linux é muito importante… Primeiro porque você está iniciando o melhor sistema existente, segundo porque as mensagens que aparecem durante o boot serão muito úteis na hora de executar algumas tarefas no Linux: tais como montar dispositivos (partições, cd-roms), ver o que está sendo iniciado automaticamente, o que está sendo reconhecido pelo kernel, e outras coisas mais que com certeza veremos mais à frente.
É indispensável que você observe as mensagens de boot atentamente… Mas tem um problema, se tudo passa muito rápido, ou você quer consultar as mensagens de boot depois (e não quer ter de reiniciar a máquina pra ver…), existe um comando que mostra as mensagens de boot do kernel. Este comando é o dmesg, ele vai mostrar o processo de boot do kernel todo sem problemas.
Logo após todas as mensagens de boot, você será presenteado com uma tela de login do usuário. Como veremos mais adiante, o Linux é multi-usuário, ou seja, suporta vários usuários. Dependendo da configuração usada na instalação, esta tela de login pode ser em modo gráfico ou texto. É aqui que começa o nosso uso no sistema!

Multi-tarefa e multi-usuário

O Linux é multi-tarefa e multi-usuário, mas o que isso quer dizer? Multi-tarefa é a capacidade que o sistema tem de executar várias tarefas de uma só vez, dividindo assim o uso da memória. Enquanto multi-usuário é a capacidade do sistema lhe dar com várias pessoas ou usuários, cada um com suas preferências, cada um com seus arquivos, suas permissões e assim por diante.
Como um exemplo de multi-tarefa, podemos citar que você pode consultar um arquivo texto que está no diretório X, enquanto acessa o disquete, e o CD-ROM, tudo ao mesmo tempo. Ou seja, você faz as coisas, mas não fica preso somente a elas, pode executar outras tarefas enquanto uma já estiver sendo executada. Todos os sistemas atuais são multi-tarefa, então este conceito não deve ser muito novo para você. Um exemplo de sistema que não é multi-tarefa é o DOS.
É muito importante destacar o multi-usuário do Linux. Tudo vai ser dividido por usuários, e junto com essas divisões haverá também as restrições. Há um usuário principal no Linux, chamado root. Este usuário pode acessar, controlar, e fazer tudo no sistema. Enquanto os usuários normais só poderão acessar seus documentos, ou os que o sistema (root) permitir. Uma ética importante para o Linux é nunca usar o usuário root… Então é recomendável que você crie um usuário primeiro e use ele, só utilize o root para tarefas administrativas!

A interface texto (Console)

A interface texto do Linux é indispensável para o uso do sistema. É nesta interface que você vai encontrar uma quantidade enorme de utilitários e comandos que irão lhe ajudar na administração do dia a dia. Se a tela de login for no modo texto, você se logará e logo após será presenteado com o interpretador de comando, onde você poderá mexer realmente no sistema. A interface texto não é tão amigável como a gráfica, mas certamente tem suas utilidades, e é recomendado que todos os usuários não fiquem só presos a interface gráfica, e que conheçam bem o modo texto. Outro nome que podemos dar à interface texto é console.
Então vamos ao que interessa, o modo texto é dividido inicialmente em 6 telas, em cada tela poderá se logar um usuário. Experimente apertar a combinação de teclas CTRL + ALT+F1, ALT+F2, …, ALT+F6. Isto o levará para os consoles 1, 2, 3, 4, 5 e 6. A partir do 7, o Linux reserva especialmente para as interfaces gráficas funcionarem. Como o Linux é um sistema multi-tarefa e multi-usuário, você pode se logar em todos ao mesmo tempo, com quaisquer usuários. Você pode por exemplo se logar como root no console 1 para qualquer emergência, e ficar usando um usuário normal no console 2.
Lembre-se sempre que a interface texto é o poder do Linux!

A interface gráfica (X-Window)

A interface gráfica vem crescendo cada vez mais no Linux. O que permite que o Linux tenha estes recursos gráficos todos é o servidor X (X-Window). Em todas as distribuições Linux é incluído o Xfree86, um servidor X totalmente gratuito para Linux/Unix. Mas o servidor X é apenas quem vai fornecer o recurso de gerar a interface gráfica. Para que haja um desktop, é necessário também a existência de um gerenciador de janelas (ou Window Managers) que são programas que usam a biblioteca do X-Window para gerar as aplicações, as janelas, a aparência do modo gráfico no Linux.

Estrutura de diretórios no Linux

A raiz do Linux fica no diretório “/”, e dentro deste diretório existem vários outros, cada um significando uma coisa. Vamos aqui aprender o significado de cada um para sabermos onde usar as coisas, e onde colocar os arquivos adequadamente e organizadamente. A estrutura de diretórios no Linux é basicamente dividida assim:

/bin

Arquivos executáveis que são usados pelo sistema freqüentemente. Aqui encontramos por exemplo os interpretadores de comandos (bash, ash, etc), o df, chmod, date, kill, dmesg, pwd, ls, e muito mais. São os comandos essenciais.

/boot

Neste diretório ficam os arquivos de boot, como os mapas de boot e as imagens do kernel.

/dev

Este é um diretório que carrega consigo todos os arquivos-dispositivos.

/etc

Arquivos de configuração do Linux. Este é o diretório que carrega todas as configurações dos principais (senão todos) os programas do Linux. Ele contém por exemplo os arquivos de usuários e senhas, arquivos de inicialização, configurações de rede, e mais uma bolada de configuração pra deixar qualquer um doido.

/home

Diretório dos usuários. Cada usuário tem um diretório dentro deste diretório.

/lib

Algumas bibliotecas essenciais para o funcionamento do Linux, e também os módulos do kernel.

/proc

Este é um diretório especial, ele contém informações que o kernel gera.

/root

É um diretório HOME. Só que aqui é o do usuário administrador (root).

/sbin

Executáveis poderosos, que só podem ser executados pelo root. Aqui se encontram programas para checkar e criar sistemas de arquivos, optimizar o uso do HD, configurar dispositivos, gerenciar módulos do kernel, etc.

/tmp

Diretório temporário. Neste diretório, vários utlitários criam arquivos que só serão usados por um tempinho, e depois descartados. Não há nenhuma informação importante aqui, pois pode ser acessado por qualquer usuário.

/usr

Um dos maiores diretórios, este contém as bibliotecas e arquivos gerais dos vários programas instalados no sistema.

/var

Informações variáveis que estão sempre em constante mudança, como arquivos de logs, travamentos, informações, etc.
Cada diretório tem seus subdiretórios com muita coisa para explorar. Você pode ir já dando uma olhada para ver como tudo é organizado.

O interpretador de comandos

Pronto. Você acaba de se logar no sistema, o que fazer agora? A primeira coisa que você tem de saber é o com o que você está usando: um interpretador de comandos. Você estará num prompt parecido com alguns destes:

molinaro@apollo-T400:~$ uptime
 01:16:39 up 3 days,  9:53,  3 users,  load average: 0,35, 0,42, 0,59
molinaro@apollo-T400:~$

Você está dentro de um interepretador de comandos, que no caso é o bash. O interpretador de comandos é um mediador entre o usuário e a máquina. Você digita algum comando, e o interpretador lê o que você digitou e executa a tarefa correspondente. Sem um interpretador de comandos, não haveria possibilidade de o usuário interagir com o sistema. Os interepretadores mais comuns são: sh, bash, ash, csh e tcsh. Na maioria dos casos, você estará usando o bash (que na minha opinião é realmente o melhor!).
Só uma nota… Nos prompts do Linux, quando se acaba com o símbolo “$”, isto quer dizer que você está logado com um usuário normal. Se você estiver logado com o root, ao invés do símbolo “$”, no final do prompt existirá o símbolo “#”.
Você pode ir testando seu interpretador de comandos executando comandos simples, ou fazendo scripts shell, ou o que seja. Caso você queira usar outro interpretador de comandos, você pode mudar a entrada no arquivo /etc/passwd para o usuário, ou pode simplesmente executar a shell dentro de uma shell. Por exemplo, se você digitar csh, você entrará nesta shell. Quando quiser sair da shell, utilize o comando exit (ou logout, ou também apertando CTRL+D).

Documentação

O que você faz quando está confuso com algum comando? Não sabe como ele funciona, quais são seus parâmetros, o que ele faz, e essas coisas… No Linux há uma maneira bem fácil de entender melhor e detalhadamente os comandos. Este método são as páginas de manual (manpages). Cada comando tem sua página de manual, e dentro desta há a descrição do comando, para que ele serve, quais são seus autores, quais são seus parâmetros, bugs conhecidos, arquivos e outros comandos relacionados, etc. Para acessar uma página de manual, você utiliza o seguinte comando:

$ man comando

Por exemplo, se você está com dúvida sobre o comando find, simplesmente digite man find, e aparecerá um manual falando apenas deste comando, com seus parâmetros e tudo mais. Este recurso é muito bom porque o usuário consegue uma ajuda bem rápida.

Documentos disponíveis

Um recurso muito bom de ser utilizado são as várias documentações do Linux. Se você tiver instalado toda a documentação, você poderá encontrá-los no diretório /usr/doc. As distribuições mais atuais estão começando a colocar estes documentos no /usr/share/doc. Dentre estes vários documentos, podemos citar os HOWTOs, que são documentos que ensinam a fazer alguma coisa em específico. Também há os FAQs que respondem a dúvidas freqüêntemente perguntadas pelos usuários, e alguns históricos de listas de discussões.

Comandos de ajuda

Além do comando man podemos contar com uma série de outros comandos que ajudam no dia a dia. Temos o info, que é semelhante ao man, traz informações sobre um certo comando. O comando locate procura por arquivos que estão incluídos no banco de dados do updatedb (Se você executar o comando updatedb, ele vai varrer seu disco e vai colocar todos os nomes dos arquivos no banco de dados, para o locate consultar depois). Há também o whatis que procura no banco de dados algum comando relacionado a uma certa palavra (para criar o banco de dados de comandos, digite makewhatis). Estes comandos vão certamente ser companheiros nas
horas de aperto.

Links úteis

http://www.gnu.org/
http://br.redhat.com/
https://www.suse.com/pt-br/
http://www.centos.org/
http://fedoraproject.org/pt/
http://www.slackware.com/
http://www.opensuse.org/pt-br/
http://www.debian.org/
http://www.ubuntu-br.org/