Capítulo 1. Básico

Índice
Definindo o Linux
O surgimento do Linux
Distribuições Linux
Visão geral do sistema operacional Linux

Neste capítulo será feito um estudo sobre o Linux e suas principais características.

Definindo o Linux

De maneira simples pode-se dizer que o Linux é um sistema operacional multiusuário, multitarefa e multiprocessado, de livre distribuição, baseado no sistema operacional UNIX - o nome Linux vem do nome de seu criador, o finlandês Linus Torvalds.

Mas o que tudo isso quer dizer? Ser multiusuário significa que é possível várias pessoas utilizarem o mesmo computador ao mesmo tempo, através de conexões remotas ou de terminais. Esse conceito é particularmente importante, pois, mesmo que apenas uma pessoa utilize o computador os vários processos (programas) que estão rodando nele podem pertencer a usuários diferentes, com permissões diferentes.

Multitarefa significa que o Linux é capaz de executar diversos programas ou serviços ao mesmo tempo, ou seja, é possível rodar simultaneamente um servidor web, um servidor de e-mail e um banco de dados. E tudo isso de maneira eficiente e transparente ao usuário.

Multiprocessado se refere ao fato de que o Linux pode ser instalado em máquinas com mais de um processador e é capaz de utilizar de maneira inteligente esses vários processadores, de maneira o obter a melhor desempenho possível.

E por fim, livre distribuição significa que o Linux pode ser copiado e distribuído sem que se tenha que comprar licenças ou pagar por isso. Além do mais, os códigos-fontes do sistema estão ao alcance de quem quiser vê-los e modificá-los.

Além disso, o Linux possui capacidades avançadas de rede. Uma vez que o desenvolvimento do Linux se deu através da colaboração pela Internet, o suporte a rede entrou em um estágio bastante cedo do desenvolvimento do Linux. O Linux tem sido usado por centenas de laboratórios de informática de universidades e empresas, além de um grande número de entusiastas que auxiliam a melhorar o sistema. Todas essas pessoas procuram um servidor confiável e com bom desempenho de rede nas mais diversas situações.

O Linux suporta os mais diversos protocolos utilizados na Internet, como E-mail, News, Gopher, Telnet, WWW, FTP, Talk, POP, NTP, IRC, NFS, DNS, NIS, SNMP, Kerberos, WAIS e muitos outros. O Linux pode operar como um cliente ou como servidor de qualquer um dos protocolos citados acima.

O Linux pode se integrar facilmente à sua rede local, não importando a combinação de sistemas que já estejam sendo utilizados, pois ele é capaz de usar os protocolos de comunicação nativos do Macintosh®, DOS®, Windows®, Windows NT®, Novell® e OS/2®, entre outros.

O surgimento do Linux

O Linux foi criado por um jovem estudante de Ciência da Computação da Universidade de Helsinque, na Finlândia, chamado Linus Torvalds. O Linux foi inicialmente concebido como uma alternativa aos caros sistemas UNIX da época. A primeira versão pública do kernel do Linux (a versão 0.02) foi distribuída em 1991 pela Internet, juntamente com o seu código-fonte.

A idéia de lançar o Linux seguindo a licença GPL[1], um tipo de licença que garante que um software possa ser distribuído e copiado livremente, juntamente com o seu código-fonte, se mostrou bastante acertada, e uma verdadeira legião de programadores começou a contribuir através da Internet para o desenvolvimento do sistema.

Linus Torvalds criou apenas o kernel do sistema. Muitos dos aplicativos que acompanham o kernel, como compiladores e editores de texto, foram criados pela GNU[2]; por isso, é comum se referir ao sistema como GNU/Linux. Embora o mais correto seja utilizar o termo Linux para se referir apenas ao kernel, será adotado ao longo desse livro, o termo Linux para identificar o sistema como um todo.

Software Livre, freeware, shareware e software Comercial

Vamos aqui abrir um parênteses para uma pequena explicação do que vem a ser cada um dos termos citados.

O termo software livre, algumas vezes também chamado de livre distribuição, é usado para designar o software que pode ser livremente copiado e que possui código fonte disponível para quem quiser vê-lo e alterá-lo. Existem várias tipos de licença de software livre, sendo a mais comum delas a já citada GPL (para saber mais sobre ela consulte o site da GNU ).

Freeware é o software que é gratuito apenas, ou seja, embora não se pague nada para usá-lo, não se tem acesso ao código-fonte e não se pode alterá-lo de acordo com as necessidades. Shareware é uma modalidade de distribuição e comercialização de software, onde o software pode ser livremente copiado, mas ele funciona em um modo "demonstração" por determinado período de tempo. O usuário deve então, após esse período de tempo, comprar o software e ao fazer isso adquirir uma chave (normalmente um número serial) que desbloqueia as funções não disponíveis no modo demonstração.

O software comercial é aquele produzido e comercializado por uma determinada empresa, pelo qual o usuário deve adquirir uma licença de uso, e normalmente tem o seu código-fonte não disponível.

Distribuições Linux

Como será mostrado adiante, o Linux pode ser composto por um grande número de programas; logo, surgiu a necessidade de se agrupar esses programas de forma coerente e funcional, e de criar mecanismos que permitissem o gerenciamento deles; é aí que entra o conceito de distribuições Linux.

Uma distribuição Linux é o conjunto dos vários programas que compõem o Linux, o kernel e, com freqüência, um sistema gerenciador de programas e um instalador. As distribuições Linux podem ser tão pequenas a ponto de caber em apenas alguns disquetes ou grandes e completas a ponto de utilizar vários CDs. A distribuição Conectiva Linux é a primeira distribuição em português e totalmente voltada para o mercado latino-americano, contando também com versões em espanhol e inglês. Além do mais, é função de uma distribuição reunir os programas criados por programadores dos mais diversos lugares do mundo, compilá-los e testá-los.

Visão geral do sistema operacional Linux

O sistema operacional Linux é composto pelo kernel, aplicações de sistema e aplicações de usuário.

O kernel do Linux

Embora o kernel seja uma parte importante do Linux, ele sozinho não constitui o sistema GNU/Linux. O kernel é o "núcleo" do sistema e é responsável pelas funções de mais baixo nível, como o gerenciamento de memória, gerenciamento de processos e da CPU. O kernel também é o responsável pelo suporte aos sistemas de arquivos, dispositivos e periféricos conectados ao computador, como placas SCSI, placas de rede, de som, portas seriais, etc. Chamamos de Linux o conjunto do kernel e demais programas, como shells, compiladores, bibliotecas de funções, etc.

Algum cuidado deve ser tomado ao se verificar que versão de Linux está sendo utilizada, porque o kernel possui um número de versão e a sua distribuição pode possuir outro. O número que identifica a versão da distribuição é decidido pela empresa responsável pela versão, de acordo com padrões próprios. Já o kernel possui um número de versão composto por 3 partes: um número maior, um número menor e um número de release, e este número é dado pelo grupo de programadores que cuidam do desenvolvimento do kernel. O número de série de seu kernel pode ser facilmente identificado digitando-se no prompt o comando uname -r, como no exemplo abaixo:

# uname -r
2.4.21-14cl

No exemplo acima, este kernel possui o número maior 2, o menor 4 também e é a vigésima primeira release da série 2.4. Em alguns casos é adicionado também um número que identifica uma compilação feita por uma determinada distribuição (14cl no exemplo, ou seja 14ª compilação da distribuição Conectiva Linux). O número menor é particularmente importante, pois números pares identificam versões de kernel testadas e consideradas estáveis, enquanto que números ímpares identificam versões de desenvolvimento, onde novos recursos estão sendo testados.

O kernel do Linux pode ser compilado[3] para se adequar melhor ao tipo de máquina e ao tipo de tarefa que essa máquina vai executar. Por exemplo, se o servidor precisa se comunicar com outras máquinas usando o protocolo IPX, o administrador poderá compilar o kernel com suporte a esse protocolo, ou, se não houver necessidade de usar um determinado tipo de placa de rede, é possível compilar o kernel sem suporte a essa placa, resultando assim em um kernel de menor tamanho.

O kernel do Conectiva Linux foi compilado para atender os mais diversos tipos de necessidades e de máquinas, além do mais, é possível incluir novos recursos sem a necessidade de compilar novamente o kernel, através do uso de módulos (veja mais no Capítulo 12). O processo de compilação de um kernel não é muito simples e é recomendado apenas a administradores de sistemas mais experientes. Para saber como se compila um kernel consulte o documento Como fazer kernel .

Aplicações do Sistema

O kernel faz muito pouco sozinho, uma vez que ele só provê os recursos que são necessários para que outros programas sejam executados. Logo, é necessária a utilização de outros programas para implementar os vários serviços necessários ao sistema operacional.

Do "ponto de vista" do kernel, as aplicações do sistema, bem como qualquer outro programa, rodam no que é chamado "modo usuário", logo, a diferença entre aplicações de sistema e aplicações do usuário se dá pelo propósito de cada aplicação. Aplicações do sistema são necessárias para fazer o sistema funcionar, enquanto as aplicações do usuário são todos programas utilizados pelo usuário para realizar uma determinada tarefa (como um processador de texto, por exemplo).

Entre as aplicações de sistema podemos citar o init, o getty e o syslog.

O init é o primeiro processo lançado após o carregamento do kernel na memória, e é ele o responsável por continuar o processo de boot lançando os outros programas. É o init o responsável, também, por garantir que o getty esteja sendo executado (para que os usuários possam entrar no sistema) e por adotar processos órfãos (processos filhos no qual o pai morreu), pois no Linux todos os processos devem estar em uma mesma árvore, e possuírem um pai (excluindo o processo init, que não tem pai).

O getty provê o serviço responsável pelo login dos usuários em terminais textos (virtuais ou não). É ele que lê o nome do usuário e a senha e chama o programa login[4] para validá-los; caso estejam corretos é lançado um shell, caso contrário o processo todo é reiniciado.

O syslog é responsável por capturar as mensagens de erro geradas pelo kernel ou por outras aplicações de sistema, e por mostrá-las posteriormente quando o administrador do sistema solicitá-las.

Aplicações do usuário

As aplicações do usuário são todas aquelas utilizadas pelo usuário para executar uma determinada tarefa. Editores de texto, editores de imagens, navegadores e leitores de e-mail se encaixam nessa categoria.

O ambiente gráfico

No Linux a responsabilidade pelo ambiente gráfico não é do kernel e sim de um programa especial, o XFree86. No entanto, o XFree86 provê apenas as funções de desenho de elementos gráficos e interação com a placa de vídeo. A interação final do usuário com a interface gráfica se dá através de programas gerenciadores de janelas, como o KDE, o WindowMaker e o GNOME, e são eles os responsáveis pela "aparência" do seu Linux.

A separação do ambiente gráfico do resto do sistema apresenta muitas vantagens. Como o ambiente gráfico consome recursos do sistema, é possível desativá-lo, principalmente em servidores, resultando assim em um melhor desempenho de outras aplicações, uma vez que o tanto de tempo de CPU que seria utilizado para o XFree86 pode ser utilizado para essas aplicações. Além do mais, o desenvolvimento do ambiente gráfico pode ocorrer de maneira independente ao do kernel.

O Linux também pode funcionar em modo texto. Nesse caso a interação com o usuário se dá por meio de um shell, como o Bash, que é capaz de interpretar e executar comandos digitados pelo usuário.

Notas

[1]

General Public License - Licença Pública Geral.

[2]

GNU é uma sigla recursiva que significa Gnu is Not Unix; é uma organização dedicada à criação de software livre.

[3]

Compilação é o processo de transformação de um código-fonte em um programa executável.

[4]

O kernel não se envolve no processo de login. Tudo é feito por outros programas.