SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Sumário
1 Introdução ao Linux.........................................................................................................................2
Historia.................................................................................................................................................2
1.1 O nome Linux...........................................................................................................................2
1.2 Características do UNIX..........................................................................................................3
1.2.2 Origem do nome Linux........................................................................................................5
1.3 Creative commons.........................................................................................................................7
1.3.1 Como escolher uma licença....................................................................................................7
1.3.2 Linux tem licença GPL..........................................................................................................9
1.3.3 Arquitetura..............................................................................................................................9
1.3.4 Portabilidade..........................................................................................................................9
1.3.5 Termos de Licenciamento.....................................................................................................10
1.3.6 Sistemas de arquivos suportados..........................................................................................10
1.3.7 Sistema Operacional.............................................................................................................10
1.4 Distribuições.................................................................................................................................11
1.4.1Distribuições de propósito geral............................................................................................13
1.4.2. Usando o Linux....................................................................................................................17
1.4.3. O que é o Linux...................................................................................................................17
1.4.4 Linguagens de Programação.................................................................................................18
1.4.5. Makefiles (arquivos make)..................................................................................................20
1.4.5. Depuração com o gdb..........................................................................................................21
1.5.1. RPM.....................................................................................................................................21
1.5.2. DPKG...................................................................................................................................21
1.5.3. Arquivos .tar.gz ou .tgz........................................................................................................22
1.6. Roteiro de algumas curiosidades.................................................................................................22
1.6.1. Alguns comandos disponíveis..............................................................................................23
1.6.2. Terminais virtuais.................................................................................................................25
1.6.3. O sistema de arquivos e diretórios importantes...................................................................26
1.6.4. X Window System...............................................................................................................27
1.6.5. Conceitos sobre o X ............................................................................................................27
1.6.6. Os Gerenciadores de Janelas................................................................................................28
1.6.7. Editores de texto..................................................................................................................29
1 Introdução ao Linux
Historia
1.1 O nome Linux
O nome Linux surgiu da mistura de Linus + Unix. Linus é o nome do criador do Linux, Linus
Torvalds. E Unix, é o nome de um sistema operacional de grande porte, no qual contaremos sua
história agora, para que você entenda melhor a do Linux.
A origem do Unix tem ligação com o sistema operacional Multics, projetado na década de 1960. Esse
projeto era realizado pelo Massachusets Institute of Technology (MIT), pela General Eletric (GE) e
pelos laboratórios Bell (Bell Labs) e American Telephone na Telegraph (AT&T). A intenção era de que
o Multics tivesse características de tempo compartilhado (vários usuários compartilhando os recursos
de um único computador), sendo assim o sistema mais arrojado da época. Em 1969, já existia uma
versão do Multics rodando num computador GE645.
Ken Thompsom era um pesquisador do Multics e trabalhava na Bell Labs. No entanto, a empresa se
retirou do projeto tempos depois, mas ele continuou seus estudos no sistema. Desde então, sua idéia
não era continuar no Multics original e sim criar algo menor, mas que conservasse as idéias básicas
do sistema. A partir daí, começa a saga do sistema Unix. Brian Kernighan, também pesquisador da
Bell Labs, foi quem deu esse nome.
Em 1973, outro pesquisador da Bell Labs, Dennis Ritchie, rescreveu todo o sistema Unix numa
linguagem de alto nível, chamada C, desenvolvida por ele mesmo. Por causa disso, o sistema passou
a ter grande aceitação por usuários externos à Bell Labs.
Entre 1977 e 1981, a AT&T, alterou o Unix, fazendo algumas mudanças particulares e lançou o
System III. Em 1983, após mais uma série de modificações, foi lançado o conhecido Unix System IV,
que passou a ser vendido. Até hoje esse sistema é usado no mercado, tornando-se o padrão
internacional do Unix. Esse sistema é comercializado por empresas como IBM, HP, Sun, etc. O Unix,
é um sistema operacional muito caro e é usado em computadores poderosos (como mainframes) por
diversas multinacionais.
Qual a relação entre o Unix e o Linux, ou melhor, entre o Unix e Linus Torvalds?
Para responder essa pergunta, é necessário falar de outro sistema operacional, o Minix. O Minix é
uma versão do Unix, porém, gratuita e com o código fonte disponível. Isso significa que qualquer
programador experiente pode fazer alterações nele. Ele foi criado originalmente para uso
educacional, para quem quisesse estudar o Unix "em casa". No entanto, vale citar que ele foi escrito
do "zero" e apesar de ser uma versão do Unix, não contém nenhum código da AT&T e por isso pode
ser distribuído gratuitamente.
A partir daí, "entra em cena" Linus Torvalds. Ele era um estudante de Ciências da Computação da
Universidade de Helsinki, na Filândia e em 1991, por hobby, Linus decidiu desenvolver um sistema
mais poderoso que o Minix. Para divulgar sua idéia, ele enviou uma mensagem a um grupo pela
Usenet (uma espécie de antecessor da Internet). A mensagem pode ser vista no final deste artigo. No
mesmo ano, ele disponibilizou a versão do kernel (núcleo dos sistemas operacionais) 0.02 e
continuou trabalhando até que em 1994 disponibilizou a versão 1.0. Até o momento em que este
2
artigo estava sendo escrito, a versão atual era a 2.6.
O Linux é um sistema operacional livre e é uma re-implementação das especificações POSIX
(padronização da IEEE, Instituto de Engenharia Elétrica e Eletrônica) para sistemas com extensões
System V e BSD. Isso signfica que o Linux é bem parecido com Unix, mas não vem do mesmo lugar
e foi escrito de outra forma.
Mas por que o Linux é gratuito?
Linus Torvalds, quando desenvolveu o Linux, não tinha a inteção de ganhar dinheiro e sim fazer um
sistema para seu uso pessoal, que atendesse suas necessidades. O estilo de desenvolvimento que
foi adotado foi o de ajuda coletiva. Ou seja, ele coordena os esforços coletivos de um grupo para a
melhoria do sistema que criou. Milhares de pessoas contribuem gratuitamente com o
desenvolvimento do Linux, simplesmente pelo prazer de fazer um sistema operacional melhor.
Licença GPL
O Linux está sob a licença GPL, permite que qualquer um possa usar os programas que estão sob
ela, com o compromisso de não tornar os programas fechados e comercializados. Ou seja, você pode
alterar qualquer parte do Linux, modificá-lo e até comercialiazá-lo, mas você não pode fechá-lo (não
permitir que outros usuários o modifiquem) e vendê-lo.
GNU
A história do Linux não termina aqui. É necessário saber também o que é GNU. GNU é um projeto
que começou em 1984 com o objetivo de desenvolver um sistema operacional compatível com os de
padrão Unix. O Linux em si, é só um kernel. Linus Torvalds, na mesma época que escrevia o código-
fonte do kernel, começou a usar programas da GNU para fazer seu sistema. Gostando da idéia,
resolveu deixar seu kernel dentro da mesma licença.
Mas, o kernel por si só, não é usável. O kernel é a parte mais importante, pois é o núcleo e serve de
comunicador entre o usuário e o computador. Por isso, com o uso de variantes dos sistemas GNU
junto com o kernel, o Linux se tornou um sistema operacional.
Mas você pode ter ficado confuso agora. O que é o Linux então? O que é GNU? Simplesmente,
várias pessoas uma versões modificadas dos sistemas GNU, pensando que é o Linux em si. Os
programadores que trabalham com ele, sabem que o Linux, é basicamente o kernel, conforme já foi
dito, mas todos, chamam esse conjunto de Linux (há quem defenda o uso de GNU/Linux).
� �Finalizando, o projeto GNU é um dos responsáveis pelo sucesso do Linux, pois graças à mistura
de seus programas com o kernel desenvolvido por Linus Torvalds, o Linux vem mostrando porque é
um sistema operacional digno de habilidades insuperáveis por qualquer outro sistema.
O UNIX foi desenvolvido no final da década de 1960 e vai seguindo seu percurso de crescimento.
1.2 Características do UNIX
1. Sistema multitarefa e multiusuário
2. Disponível para diversas plataformas.
3
3. Sistema robusto e confiável.
4. Sistema maduro.
A principal desvantagem do UNIX é por ser muito caro e só funcionar em plataformas de hardware
com preço inacessível a maioria dos profissionais.
Entre 1977 e 1981, a AT&T, alterou o Unix, fazendo algumas mudanças particulares e lançou o
System III. Em 1983, após mais uma série de modificações, foi lançado o conhecido Unix System IV,
que passou a ser vendido. Até hoje esse sistema é usado no mercado, tornando-se o padrão
internacional do Unix. Esse sistema é comercializado por empresas como IBM, HP, Sun, etc. O Unix,
é um sistema operacional muito caro e é usado em computadores poderosos (como mainframes) por
diversas multinacionais.
Versões do UNIX comerciais:
» HP-UX
» AIX
» Solaris
» IRIX
A versão livre do UNIX se chama FreeBSD.
Essa história da origem do Unix é só um resumo, para que vocês possam entender a origem do
Linux.
Apresentando o Linux
Como se percebe o UNIX é inacessível a maioria dos mortais, pois é caro e exige um hardware
adequado. Isso, vai inspirar alguém a criar algo acessível. Mas antes disso vamos falar de outra
pessoa.
Dr. Andrew Tanenbaum
O Dr. Andrew Tanenbaum motivado para fins educacionais, criou um sistema operacional chamado
MINIX, baseado nos processadores INTEL 8086 que era na época a plataforma mais barata e atual.
O Minix só poderia ser usado para fins acadêmicos devido as suas limitações técnicas. Só
endereçava até 1MB de cada vez. Não tinha memória virtual.
Ótimo. Já temos a primeira parte do sistema operacional.
O que é GNU e a FSF?
A Fundação do Software Livre – FSF (Free Software Foundation) fundada por Richard Stallman no
ano de 1983fundou a (Fundação do Software Livre). Foi criado o projeto GNU. Este projeto tinha a
responsabilidade de criar um clone do UNIX. Um detalhe deste clone é que tinha que ser livre e não
poderia usar código fonte no UNIX pois tinha uma versão livre do UNIX – o BSD.
O projeto não deu certo em partes, pois chegou ao final da década de 80 sem cumprir seus
propósitos que eram criar o clone do UNIX. Mas o fracasso não foi total.
4
Não se conseguiu fazer o clone do UNIX mas foram criadas as ferramentas necessárias para que
Linux Torvalds conseguisse desenvolver o Linux.
Então, Linux Benedict Torvalds aluno da Universidade de Helsinque, na Finlândia usou tudo o que
tinha até o momento: O Minix e as Ferramentas do GNU.
Linus, inicia o desenvolvimento de um kernel que fosse um clone do UNIX que possuísse memória
virtual, multitarefa preemptiva e capacidade de multiusuários. Era um trabalho que ele sozinho não
conseguiria terminar em tempo hábil.
Então, ele disponibilizou o código fonte do que ele veio a chamar de Linux.
O nome Linux surgiu da mistura de Linus + Unix. Linus é o nome do criador do Linux, Linus Torvalds.
Alguns linuxistas mais radicais chamam o sistema operacional do pingüim de GNU/LINUX, já que
Linux Torvalds, conseguiu algum sucesso usando as ferramentas do projeto GNU.
1.2.2 Origem do nome Linux
O nome Linux surgiu da mistura de Linus + Unix. Linus é o nome do criador do Linux, Linus Torvalds.
E Unix, é o nome de um sistema operacional de grande porte.
O nome do mascote Tux (o pingüim do Linux), foi escolhido por votação, pelo próprio Linus. Segundo
ele "gostaria de um pingüim cheio, satisfeito por ter comido muitos peixes". Diz a lenda que o motivo
por trás da escolha do Tux como mascote foi uma mordida que Linus levou de um pingüim em um
zoológico.
O MINIX DO DR. ANDREW TANENBAUM
Um outro sistema operacional importante é o Minix. A partir dele é que Linux Torvalds começou a
desenvolver o que chamamos de Linux. Mas ele não fez tudo.
Veja a seguir a frase do Linux Torvalds que ele publicou na USENET.
Mensagem de Linus Torvalds na Usenet
Abaixo segue a mensagem publicada por Linus Torvalds via Usenet na divulgação de seu projeto. A
tradução para português foi disponibilizada logo abaixo da mensagem em inglês. Ambas as
mensagens foram retiradas deste link:
http://www.rootlinux.com.br/documentos/downloads/Historia_do_Linux.txt
O que significa gratuito no Linux?
O Linux depois de pronto foi baseado numa licença chamada GPL. Nem ele como criador original do
5
Linux pode alterá-la ou requerer o Linux novamente para ele.
Licença GPL
Software livre não significa que uma empresa não possa comercializá-lo. Pode sim. O Linux, pode ser
vendido sem problemas, mas, desde que siga quatro princípios de liberdade:
» Liberdade 0: - O direito de executar o programa, para qualquer propósito.
» Liberdade 1: - O direito de estudar como o programa funciona e adptá-lo para suas necessidades..
» Liberdade 2: O direito de redistribuir cópias, permitindo assim que você ajude outras pessoas.
» Liberdade 3: - O direito de aperfeiçoar o programa, e distribuir seus aperfeiçoamentos para o
público, beneficiando assim toda a comunidade.
Você terá os direitos acima especificados contanto que Você cumpra com os requisitos expressos
nesta Licença. Os principais requisitos são:
Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do
autor.
Qualquer direito de uso legítimo (ou "fair use") concedido por lei, ou qualquer outro direito protegido
pela legislação local, não são em hipótese alguma afetados pelo disposto acima.
Fonte: http://creativecommons.org/licenses/GPL/2.0/
Então, para que um programa seja considera livre, ele tem que está baseado nestas quatro
liberdades. Mas as pessoas e empresas podem cobrar para distribuir cópias do programa. A única
coisa que não pode acontecer é o autor revogar estas 4 liberdades.
Então, para garantir estas liberdades é que as licenças foram criadas. A mais famosa é a GPL –
6
General Public License (Licença Geral Pública).
COPYLEFT VERSUS COPYRIGHT
O COPYLEFT garante que qualquer usuário tenha o direito de copiar, modificar e redistribuir o código
de um programa derivado do mesmo se os termos de distribuição não forem modificados.
É o oposto do COPYRIGHT
1.3 Creative commons
Quando foi criado o conceito de copyleft, apenas programas computacionais começaram a ser
licenciados assim, mas, depois, o movimento pela livre circulação da cultura e do saber estendeu-se
a outros tipos de conteúdos, especialmente os artísticos, literários, musicais, científicos e os
jornalísticos.
Em 2001 surgiram outras licenças que estão consagradas pela Creative Commons, uma organização
sem fins lucrativos fundada por Lawrence Lessig, então professor de Direito da Universidade de
Stanford.
No livro "Cultura Livre" Lessig demonstra que empresas dos EUA conseguiram junto ao Congresso
daquele país aumentar o prazo pelo qual uma obra permanece "protegida", de modo a não permitir
que inúmeros produtos culturais e imateriais, como livros, músicas e filme sejam utilizados para
produzir novas obras. Assim, Lessig defende que a cultura seria mais rica se as leis que regulam os
direitos autorais fossem mais flexíveis.
As licenças Creative Commons facilitam o compartilhamento e recombinação de conteúdos culturais,
como textos, músicas, imagens, filmes e outros, sob a égide de uma filosofia copyleft. Assim, os
autores desses produtos podem abdicar em favor do público de alguns dos seus direitos inerentes às
suas criações, ainda que retenham outros desses direitos.
Há vários tipos de licença, incluindo opções que permitem abdicação quase total de direitos
patrimoniais pelo licenciante a tipos mais restritivos, que vedam a possibilidade de criação de obras
derivadas ou o uso comercial dos materiais licenciados.
Assim, quando um autor escolhe a licença para a sua obra, decide se alguém pode ou não fazer uso
comercial, se pode modificá-la ou se a obra derivada deve ou não ter o mesmo tipo de licença
relativamente à original.
É muito importante compreender que os diversos tipos de obras culturais podem e devem ter licenças
diferentes. Por exemplo, a livre modificação de textos pode ser aplicada a alguns tipos de trabalhos,
como textos de manuais de programas, que até podem ser empreendimentos coletivos. Já, com
relação à produção científica, a modificação do texto não faz sentido, pois é absolutamente
necessário identificar o autor, atribuir-lhe responsabilidades e garantir a confiabilidade da fonte.
Em geral, essas novas licenças são centradas na manutenção da integridade da obra e usam o
Copyleft para garantir a liberdade de reprodução. E garantem ao autor o direito de ser remunerado
quando seu trabalho intelectual tiver que ser consubstanciado em meio físico para fins de comércio.
Assim, supera-se a velha ideologia da "propriedade intelectual" e instala-se a tutela do "trabalho
intelectual".
7
Vídeo: Creative Commons - Seja Criativo (Get Creative) Portuguese
http://br.youtube.com/watch?v=izSOrOmxRgE (acessado novamente em 2/09/2009)
(Versão em português com explicação sobre a diferença de copyright para Creative Commons.)
1.3.1 Como escolher uma licença
Não se abre mão de direitos autorais quando se oferece uma obra sob uma licença Creative
Commons. Esse ato significa apenas que se oferece alguns direitos para qualquer pessoa, mas
somente sob determinadas condições.
Sobre as condições
Atribuição
O autor permite que outras pessoas copiem, distribuam e executem sua obra, e as obras derivados
criadas a partir dela, somente se for dado crédito da maneira que o autor estabeleceu.
Uso Não Comercial
O autor permite que outras pessoas copiem, distribuam e executem sua obra, e as obras derivadas
criadas a partir dela, somente para fins não comerciais.
Não à Obras Derivadas
O autor permite que outras pessoas copiem, distribuam e executem somente cópias exatas da sua
obra, mas sem modificações, ou seja, naõ permite obras derivadas.
Compartilhamento pela mesma Licença
O autor permitir que outras pessoas distribuam obras derivadas somente sob a mesma licença que
rege sua obra.
As licenças
by-nc-nd - Atribuição - Uso Não Comercial - Não a Obras Derivadas
Esta é a mais restritiva dentre as seis licenças principais que permitem redistribuição. É chamada de
propaganda grátis".
Permite: que outros façam cópia e compartilhem a obra, contanto que mencionem e façam o link ao
autor.
Não permite: Modificar a obra. E, de nenhum modo, usar a obra para fins comerciais.
by-nc-sa - Atribuição - Uso Não Comercial - Compartilhamento pela mesma Licença
Permite: que outros remixem, adaptem e criem obras derivadas com fins não comerciais, contanto
que atribuam crédito ao autor e licenciem as novas criações sob os mesmos parâmetros. Outros
podem fazer cópias ou redistribuir a obra e também podem traduzir, fazer remixes e elaborar novas
histórias com base na original.
Não permite: Toda nova obra feita deverá ser licenciada com a mesma licença, de modo que qualquer
obra derivada não poderá ser usada para fins comerciais.
by nc - Atribuição - Uso Não Comercial
8
Permite: que outros remixem, adaptem, e criem obras derivadas, sendo vedado o uso com fins
comerciais. As novas obras devem conter menção ao autor nos créditos.
Não permite: Uso com fins comerciais., mas as obras derivadas não precisam ser licenciadas sob os
mesmos termos.
by nd - Atribuição - Não a Obras Derivadas
Permite: redistribuição e o uso para fins comerciais e não comerciais, contanto que a obra seja
redistribuída sem modificações e completa, e que os créditos sejam atribuídos ao autor.
by-sa - Atribuição - Compartilhamento pela mesma Licença
Comumente comparada a licenças de software livre.
Permite: que outros remixem, adaptem, e criem obras derivadas ainda que para fins comerciais,
contanto que o crédito seja atribuído ao autor e que essas obras sejam licenciadas sob os mesmos
termos.
by - Atribuição
Esta é menos restritiva.
Permite: que outros distribuam, remixem, adaptem ou criem obras derivadas, mesmo que para uso
com fins comerciais, contanto que seja dado crédito ao autor pela criação original.
1.3.2 Linux tem licença GPL
O Linux foi lançado sob uma licença que proibia qualquer uso comercial. Logo isso foi alterado para a
licença GPL.
Essa licença, detalhada aqui, permite a distribuição e até a venda de versões modificadas do Linux,
mas requer que todas as cópias sejam lançadas dentro da mesma licença e acompanhadas do
código fonte.
Um grande parte do código do linux (incluindo as contribuições de Linus Torvalds) menciona apenas a
GPL versão 2. Isso determina que o kernel esteja sob a versão 2 exclusivamente.
O termo Linux refere-se ao núcleo (em inglês: "kernel") do sistema operativo. O termo também é
usado pelos meios de comunicação e usuários para referir-se aos sistemas operacionais baseados
no núcleo Linux agregado a outros programas. Segundo Tanenbaum e Silberschatz, um núcleo pode
ser considerado o próprio sistema operativo, quando este é definido como um gerenciador de
recursos de hardware.
1.3.3 Arquitetura
O Linux é um núcleo monolítico: as funções do núcleo (escalonamento de processos, gerenciamento
de memória, operações de entrada/saída, acesso ao sistema de arquivos) são executadas no espaço
de núcleo. Uma característica do núcleo Linux é que algumas das funções (drivers de dispositivos,
suporte à rede, sistema de arquivos, por exemplo) podem ser compiladas e executadas como
módulos (em inglês: LKM - loadable kernel modules), que são bibliotecas compiladas separadamente
9
da parte principal do núcleo e podem ser carregadas e descarregadas após o núcleo estar em
execução.
1.3.4 Portabilidade
Embora Linus Torvalds não tenha tido como objetivo inicial tornar o Linux um sistema portável, ele
evoluiu nessa direção. Linux é hoje um dos núcleos de sistemas operativos mais portáveis, correndo
em sistemas desde o iPaq (um computador portátil) até o IBM S/390 (um denso e altamente custoso
mainframe).
Os esforços de Linus foram também dirigidos a um diferente tipo de portabilidade. Portabilidade, de
acordo com Linus, era a habilidade de facilmente compilar aplicações de uma variedade de código
fonte no seu sistema; consequentemente, o Linux originalmente tornou-se popular em parte devido ao
esforço para que os códigos-fonte GPL ou outros favoritos de todos corressem em Linux.
O Linux hoje funciona em dezenas de plataformas, desde mainframes até um relógio de pulso,
passando por várias arquitecturas: x86 (Intel, AMD), x86-64 (Intel EM64T, AMD64), ARM, PowerPC,
Alpha, SPARC e etc, com grande penetração também em sistemas embarcados, como handhelds,
PVR, consola de videojogos e centros multimídia, entre outros.
1.3.5 Termos de Licenciamento
Inicialmente, Torvalds lançou o Linux sob uma licença de software que proibia qualquer uso
comercial. Isso foi mudado de imediato para a GNU General Public License. Essa licença permite a
distribuição e mesmo a venda de versões possivelmente modificadas do Linux mas requer que todas
as cópias sejam lançadas dentro da mesma licença e acompanhadas do código fonte.
Apesar de alguns dos programadores que contribuem para o núcleo permitirem que o seu código seja
licenciado com GPL versão 2 ou posterior, grande parte do código (incluído as contribuições de
Torvalds) menciona apenas a GPL versão 2. Isto faz com que o núcleo como um todo esteja sob a
versão 2 exclusivamente, não sendo de prever a adoção da nova GPLv3.
1.3.6 Sistemas de arquivos suportados
O Linux possui suporte de leitura e escrita a vários sistema de arquivos, de diversos sistemas
operacionais, além de alguns sistemas nativos. Por isso, quando o Linux é instalado em dual boot
com outros sistemas (Windows, por exemplo) ou mesmo funcionando como Live CD, ele poderá ler e
escrever nas partições formatadas em FAT e NTFS. Por isto, Live CDs Linux são muito utilizados na
manutenção e recuperação de outros sistemas operacionais.
Entre os sistemas de ficheiros suportados pelo Linux, podemos citar FAT, NTFS, JFS, XFS, HPFS,
Minix e ISO 9660 (sistema de ficheiros usado em CD-ROMs). Alguns sistemas de ficheiros nativos
são, dentre outros, Ext2, Ext3, Ext4, ReiserFS e Reiser4.[5] Alguns sistemas de ficheiros com
características especiais são SWAP, UnionFS, SquashFS, Tmpfs, Aufs e NFS, dentre outros.
1.3.7 Sistema Operacional
Richard Stallman, fundador do projeto GNU para um sistema operacional livre.Logo que Linus
Torvalds passou a disponibilizar o Linux, ou seja na sua versão 0.01, já havia suporte ao disco rígido,
tela, teclado e portas seriais, o sistema de arquivos adotava o mesmo layout do Minix (embora não
houvesse código do Minix no Linux), havia extensos trechos em assembly, e ela já era capaz de rodar
10
o bash e o gcc.
A linha guia quando implementei o Linux foi: fazê-lo funcionar rápido. Eu queria o núcleo simples,
mas poderoso o suficiente para rodar a maioria dos aplicativos Unix.[6]
O próprio usuário deveria procurar os programas que dessem funcionalidade ao seu sistema,
compilá-los e configurá-los. Talvez por isso, o Linux tenha carregado consigo a etiqueta de sistema
operativo apenas para técnicos. Foi neste ambiente que surgiu a MCC Interim Linux, do Manchester
Computer Centre, a primeira distribuição Linux, desenvolvida por Owen Le Blanc da Universidade de
Manchester, capaz de ser instalada independentemente em um computador. Foi uma primeira
tentativa de facilitar a instalação do Linux.
Desde o começo, o núcleo Linux incluía um sistema básico para chamadas do sistema e acesso aos
dispositivos do computador. O núcleo de um sistema operativo define entre várias operações, o
gerenciamento da memória, de processos, dos dispositivos físicos no computador e é uma parte
essencial de qualquer sistema operacional utilizável, contudo para um sistema operacional adquirir
funcionalidade são necessários também vários outros aplicativos que determinam funções específicas
que aquele sistema será capaz de desenvolver, os aplicativos existentes em um sistema operacional
com a única exceção do núcleo são determinados pelo usuário do computador, como por exemplo:
interpretadores de comandos, gerenciadores de janelas, que oferecem respectivamente uma interface
para o usuário do computador, CLI ou GUI, e outros aplicativos como editores de texto, editores de
imagem, tocadores de som, e, mas não necessariamente, compiladores.
A maioria dos sistemas inclui ferramentas e utilitários baseados no BSD e tipicamente usam XFree86
ou X.Org para oferecer a funcionalidade do sistemas de janelas X — interface gráfica. Assim como
também oferecem ferramentas desenvolvidas pelo projeto GNU.
No momento do desenvolvimento do Linux, vários aplicativos já vinham sendo reunidos pelo Projeto
GNU da Free Software Foundation (‘Fundação Software Livre’), que embarcara em um subprojeto
que ainda continua para obter um núcleo, o GNU Hurd. Porém devido a várias complicações o projeto
GNU e demora em desenvolver o Hurd, Stallman acabou adotando o núcleo Linux como base para
distribuir os programas do projeto GNU , não obstante diversas pessoas e instituições tiveram a
mesma idéia e assim várias distribuições começaram a surgir baseadas no núcleo desenvolvido
inicialmente por Linus.
1.4 Distribuições
Ver artigo principal: Distribuições de Linux
Atualmente, um Sistema Operacional (em Portugal Sistema Operativo) Linux ou GNU/Linux completo
(uma "Lista de distribuições de Linux ou GNU/Linux") é uma coleção de software livre (e por vezes
não-livres) criados por indivíduos, grupos e organizações de todo o mundo, incluindo o núcleo Linux.
Companhias como a Red Hat, a SuSE, a Mandriva (união da Mandrake com a Conectiva) e a
Canonical (desenvolvedora do Ubuntu Linux), bem como projetos de comunidades como o Debian ou
o Gentoo, compilam o software e fornecem um sistema completo, pronto para instalação e uso.
Patrick Volkerding também fornece uma distribuição Linux, o Slackware.
As distribuições do Linux ou GNU/Linux começaram a receber uma popularidade limitada desde a
segunda metade dos anos 90, como uma alternativa livre para os sistemas operacionais Microsoft
Windows e Mac OS, principalmente por parte de pessoas acostumadas com o Unix na escola e no
trabalho. O sistema tornou-se popular no mercado de Desktops e servidores, principalmente para a
Web e servidores de bancos de dados.
No decorrer do tempo, várias distribuições surgiram e desapareceram, cada qual com sua
característica. Algumas distribuições são maiores outras menores, dependendo do número de
aplicações e sua finalidade. Algumas distribuições de tamanhos menores cabem num disquete com
1,44 MB, outras precisam de vários CDs, existindo até algumas versões em DVD. Todas elas tem o
seu público e sua finalidade, as pequenas (que ocupam poucos disquetes) são usadas para
recuperação de sistemas danificados ou em monitoramento de redes de computadores.
11
De entre as maiores, distribuídas em CDs, podem-se citar: Slackware, Debian, Suse, e Conectiva. O
que faz a diferença é como estão organizadas e pré-configuradas as aplicações. A distribuição
Conectiva Linux, por exemplo, tinha as suas aplicações traduzidas em português, o que facilitou que
usuários que falam a Língua Portuguesa tenham aderido melhor a esta distribuição. Hoje esta
distribuição foi incorporada à Mandrake, o que resultou na Mandriva. Para o português, existe
também a distribuição brasileira Kurumin (Essa distribuição foi descontinuada pelo seu mantedor),
construída sobre Knoppix e Debian, e a Caixa Mágica, existente nas versões 32 bits, 64 bits, Live CD
32 bits e Live CD 64 bits, e com vários programas open source: OpenOffice.org, Mozilla Firefox, entre
outros.
Existem distribuições com ferramentas para configuração que facilitam a administração do sistema.
As principais diferenças entre as distribuições estão nos seus sistemas de pacotes, nas estruturas
dos diretórios e na sua biblioteca básica. Por mais que a estrutura dos diretórios siga o mesmo
padrão, o FSSTND é um padrão muito relaxado, principalmente em arquivos onde as configurações
são diferentes entre as distribuições. Então normalmente todos seguem o padrão FHS (File Hierarchy
System), que é o padrão mais novo. Vale lembrar, entretanto, que qualquer aplicativo ou driver
desenvolvido para Linux pode ser compilado em qualquer distribuição que vai funcionar da mesma
maneira.
Quanto à biblioteca, é usada a Biblioteca libc, contendo funções básicas para o sistema Operacional
Linux. O problema está quando do lançamento de uma nova versão da Biblioteca libc, algumas das
distribuições colocam logo a nova versão, enquanto outras aguardam um pouco. Por isso, alguns
programas funcionam numa distribuição e noutras não. Existe um movimento LSB (Linux Standard
Base) que proporciona uma maior padronização. Auxilia principalmente vendedores de software que
não liberam para distribuição do código fonte, sem tirar características das distribuições. O sistemas
de pacotes não é padronizado.
ArchLinux, Debian, Fedora, Mandriva, Mint, Opensuse, PCLinuxOS, Puppy, Sabayon, Slackware e
Ubuntu são algumas das distribuições mais utilizadas actualmente, listadas aqui por ordem alfabética.
Um exemplo de distribuição que corre num CD é o Kurumin Linux, criado por Carlos Eduardo
Morimoto, baseada no Knoppix.
De entre as distribuições consideradas mais difíceis de gerir (por preferirem assegurar a estabilidade
tecnológica em detrimento da interface de utilizador), destacam-se a Debian, Gentoo e Slackware.
Código Aberto e Programas Livres
Um programa, assim como toda obra produzida atualmente, seja ela literária, artística ou tecnológica,
possui um autor. Os Direitos sobre a idéia ou originalidade da obra do autor, que incluem
essencialmente distribuição, reprodução e uso é feito no caso de um programa através de sua
licença.
Existem dois movimentos que regem o licenciamento de programas no mundo livre, os programas de
código aberto e os programas livres. Os dois representados respectivamente pela OSI e pela FSF
oferecem licenças para produção de software, sendo seus maiores representantes a licença BSD e a
GPL.
O Linux oferece muitos aplicativos de open source, contudo nem todos podem ser considerados
programas livres, dependendo exclusivamente sob qual licença estes programas são distribuídos. Os
programas distribuídos sob tais licenças possuem as mais diversas funcionalidades, como desktops,
escritório, edição de imagem e inclusive de outros sistemas operacionais.
Também existem organizações inclusive no mundo livre como a organização Linux Simples para o
Usuário Final (SEUL) que tem como objetivo adotar a maior gama possível de aplicativos de alta
qualidade produzidos sobre a GPL. É um projeto voluntário que atualmente se foca no aprendizado
de Linux, seu uso na ciência e em documentos de advocacia, bem como gerenciar e coordenar
projetos de desenvolvimento de aplicativos.
Controvérsias quanto ao nome
Linux foi o nome dado ao núcleo de sistema operacional criado por Linus Torvalds. Por extensão,
12
sistemas operacionais que usam o núcleo Linux são chamados genericamente de Linux. Entretanto, a
Free Software Foundation afirma tais sistemas operacionais são, na verdade, sistemas GNU, e o
nome mais adequado para tais sistemas é GNU/Linux, uma vez que grande parte do código-fonte dos
sistemas operacionais baseados em Linux são ferramentas do projeto GNU.[7]
Há muita controvérsia quanto ao nome. Eric Raymond afirma, no Jargon File, que a proposta da FSF
só conseguiu a "aceitação de uma minoria" e é resultado de uma "disputa territorial".[8] Linus Torvalds
afirma que consideraria "justo" que tal nome fosse atribuído a uma distribuição do projeto GNU, mas
que chamar os sistemas operacionais Linux como um todo de GNU/Linux seria "ridículo".[9] Linus
disse não se importar sobre qual o nome usado, considera a proposta da GNU como "válida" ("ok")
mas prefere usar o termo "Linux".[10]
Sobre o símbolo
O símbolo do software foi escolhido pelo seu criador, que achou a foto de um pinguim na internet. [11]
Em 1996, muitos integrantes da lista de discussão "Linux-Kernel" estavam discutindo sobre a criação
de um logotipo ou de um mascote que representasse o Linux. Muitas das sugestões eram paródias
ao logotipo de um sistema operacional concorrente e muito conhecido. Outros eram monstros ou
animais agressivos. Linus Torvalds acabou entrando nesse debate ao afirmar em uma mensagem que
gostava muito de pingüins. Isso foi o suficiente para dar fim à discussão.
Tux.Depois disso, várias tentativas foram feitas numa espécie de concurso para que a imagem de um
pingüim servisse aos propósitos do Linux, até que alguém sugeriu a figura de um "pingüim
sustentando o mundo". Em resposta, Linus Torvalds declarou que achava interessante que esse
pingüim tivesse uma imagem simples: um pingüim "gordinho" e com expressão de satisfeito, como se
tivesse acabado de comer uma porção de peixes. Torvalds também não achava atraente a idéia de
algo agressivo, mas sim a idéia de um pingüim simpático, do tipo em que as crianças perguntam
"mamãe, posso ter um desses também?". Ainda, Torvalds também frisou que trabalhando dessa
forma, as pessoas poderiam criar várias modificações desse pingüim. Isso realmente acontece.
Quando questionado sobre o porquê de pingüins, Linus Torvalds respondeu que não havia uma razão
em especial, mas os achava engraçados e até citou que foi mordido por um "pingüim assassino" na
Austrália e ficou impressionado como a mordida de um animal aparentemente tão inofensivo podia
ser tão dolorosa.
1.4.1Distribuições de propósito geral
ALT Linux v • e
Arch Linux v • e
Debian v • e
BrDesktop v • e
BRLix v • e
13
Damn Small Linux v • e
Freedows v • e
Insigne GNU Linux v • e
KeeP-OS v • e
Knoppix v • e
Kurumin v • e NG
DreamLinux v • e
Big Linux v • e
gnuLinEx v • e
Resulinux v • e
Rxart v • e
Satux v • e
Skolelinux v • e
SuiteTelecentro v • e
Ubuntu v • e
Alinex v • e
Fluxbuntu v • e
gNewSense v • e
Gobuntu v • e
Goobuntu v • e
Jolicloud v • e
Kubuntu v • e
Kubuntu Netbook Remix v • e
Linux Educacional v • e 3.0
Linux Mint v • e
Ubuntu Netbook Remix v • e
Ubuntu Studio v • e
Ultimate Edition v • e
Xubuntu v • e
ZeVenOS v • e
Xandros v • e
Foresight Linux v • e
Gentoo v • e
Guaranix v • e
Librix v • e
Litrix Linux v • e
Sabayon Linux v • e
Tutoo v • e
GoboLinux v • e
Linux From Scratch v • e
Neo Dizinha v • e
OpenSuSE v • e
Puppy Linux v • e
Red Hat Linux v • e
Caixa Mágica v • e
CentOS v • e
Fedora v • e
Ekaaty v • e
Insigne GNU Linux v • e - versão 3
Libertas v • e
Muriqui v • e
Vixta v • e
Mandriva v • e
PCLinuxOS v • e
Yellow Dog Linux v • e
Resulinux v • e
Slackware Linux v • e
GoblinX v • e
Slax v • e
Vector Linux v • e
14
[editar] Distribuições LiveCD
As distribuições em LiveCD rodam direto do cd-rom.
ALT Linux v • e
Arch Linux v • e
Arco-Debian Linux v • e
BRLix v • e (Baseado no Debian) Ambiente similar ao Windows XP/Vista
Big Linux v • e
Caixa Mágica LiveCD v • e
CentOS v • e
CLive v • e (baseada em Conectiva Linux)
Damn Small Linux v • e
Dizinha Linux v • e (baseada no Kurumin)
Dreamlinux v • e
Fedora v • e
Fenix Linux v • e
Gentoo v • e
GoblinX v • e
Gnoppix v • e (baseada em Knoppix)
Incognito v • e
Insigne GNU Linux v • e (baseada em Debian/Fedora)
Litrix Linux v • e
Linux Mint v • e
Linux Educacional v • e 3.0
Linius (Basado em caixa mágica)
Kya Linux v • e (baseada em Slackware Linux)
Kalango Linux v • e (baseada no Kurumin)
Kanotix v • e (baseada em Knoppix)
KeeP-OS v • e
Knoppix v • e (baseada em Debian Linux)
Kubuntu v • e
Kurumin v • e (baseada em Knoppix)
Kurumin Games v • e (Baseada no Kurumin)
NUbuntu v • e
LinuxFX v • e
Mandriva v • e
Mepis v • e
Moblin v • e
Morphix v • e
Neo Dizinha v • e
NimbleX v • e
openSUSE v • e
Paipix v • e
PCLinuxOS v • e
PHLAK v • e (Baseado no Morphix)
Poseidon Linux v • e (baseada no Ubuntu) (live-DVD)
Puppy Linux v • e
Quantix v • e
Resulinux v • e
Sabayon Linux v • e
Sacix v • e
Satux v • e (Baseada em Debian )
Slax v • e (baseada em Slackware Linux)
SliTaz (distribuição completa e minimalista) (Live-CD)
Super OS v • e
Tatui x v • e
Ubuntu v • e (baseada em Debian Linux)
Vixta v • e (projeto baseado no Fedora com aparencia do Windows Vista)
Yoper v • e
[editar] Distribuições de propósito especial
15
andLinux v • e , versão do Ubuntu que roda integrada ao Windows junto com o Explorer.
Ångström v • e - Desenvolvida para o console portátil Pandora.
Android v • e - Sistema operacional voltada para smartphones, desenvolvida pela Google.
Arm-Linux v • e
BackTrack v • e (Fusão do Whax com Auditor Security Collection)
Bootable Business Card v • e
BrazilFW v • e
Coyote Linux v • e
Cytrun Linux v • e
Dyne:Bolic v • e
Edubuntu v • e
Embedded Debian v • e
Endian Firewall v • e
EOS Enhanced Operating System v • e - Desenvolvida para automatizar instalação de produtos.
F.I.R.E v • e
FREESCO v • e
GeexBox v • e
Helix v • e - distribuição baseada em Ubuntu,dedicada à investigação ou ciência forense informática.
Indymix v • e
IPCop v • e
Linux Educacional v • e - Voltados para uso de professores, gestores e alunos da rede pública de
ensino brasileira.
Live Android v • e - É um projeto que visa a utilização do sistema Android para PC's.
Mikrotik v • e
Musix v • e
Mythbuntu v • e
Openfiler v • e
Pentoo v • e
Portable Ubuntu for Windows v • e - Outra versão do Ubuntu que roda integrada ao Windows junto
com o Explorer.
Progeny Debian v • e
Sentry Firewall v • e
Skolelinux v • e
SliTaz - Distribuição voltada para computadores antigos e/ou com baixo desempenho.
Sysresccd v • e - Distro com ferramentas essenciais para manutenção em geral
Terabeauts v • e - Distro em disquete destinada à criação e manutenção de sistemas de arquivos
The Linux Router Project v • e
Tupiserver v • e
Ubuntu Studio v • e
μClinux v • e
[editar] Desktops
Desktop padrão KDE 4.3
Desktop Gnome 2.20
Desktop do Xfce - GoblinXO sistema operacional Linux possui dois tipos de interfaces para que o
usuário possa interagir com o sistema operacional. As interfaces gráficas e a interface de linha de
comando.
As interfaces gráficas foram desenvolvidas inicialmente por Douglas C. Engelbart e também
chamadas de ambientes gráficos, Desktop's ou GUI (Graphical User Interfaces). Alguns exemplos
para o Linux são:
Kde
Gnome
LXDE
Xfce
Fluxbox
Blanes
Blackbox
Windowmaker
16
Afterstep
Enlightenment
IceWM
FVWM
Kahakai
ZappWM
dwm
SithWM
Whim
Karmen
Sawfish
XIGE
Framer
Mavosxwm
WindowLab
OpenBox
xmonad
[editar] Desktops 3D
Os desktops 3D, são na verdade, plugins para adicionar efeitos incríveis às outras interfaces:
AIGLX/Beryl
XGL/Compiz
Compiz Fusion[1]
Metisse
KWin gerenciador de janelas do KDE com efeitos nativos.
[editar] Sistemas móveis (Mobile)
Motomagx - sistema especialmente desenvolvido para celulares Motorola
LinuxMod - sistema baseado no Motomagx
[editar] Interpretadores de comandos
Usando o Bash - FramebufferRepresentando a interface de acesso no modo texto, ou CLI (Command
Line Interface) do Linux, eles são a principal forma de controle remoto e gerenciamento do sistema.
Exemplos de interfaces de linha de comando, também chamados de Shell's ou interpretadores de
comandos:
sh
ksh
pdksh
bash
csh
tcsh
zsh
ash
dash
rc
rsh
ssh
screen
1.4.2. Usando o Linux
Para aqueles que nunca usaram o Linux, iremos expor aqui os conceitos preliminares estritamente
necessários para se programar usando o GTK. Portanto, esta primeira seção, onde iremos apenas
apresentar alguns pontos que consideramos fundamentais, é dedicada aos iniciantes e àqueles que
ainda não estão familiarizados com o sistema. Se esta não é a sua situação, vá direto para a próxima
seção.
Nosso primeiro principal objetivo será motivá-lo a usar o GTK. Esperamos que qualquer um que tenha
noções básicas de C sinta-se encorajado a usar o GTK após ler este tutorial, independentemente do
17
sistema operacional que vinha usando até então. Por isso, é muito importante para nós ter acesso a
possíveis dúvidas e comentários. Teremos o maior prazer em responder.
Partimos do princípio de que você tem o Linux instalado e funcionando corretamente. Caso você
ainda precise passar por essa etapa, recomendamos a instalação de uma das diversas distribuições
disponíveis, entre elas a da Red Hat (www.redhat.com.br), uma das mais fáceis de ser instalada e
atualizada. Em seguida, leia o texto "Linux Installation and Getting Started"
(http://www.infomagic.com/linux/ldp/LDP/gs/gs.html), ou "Linux Installation HOWTO"
(http://www.cube.net/Linux-HOWTO/Installation-HOWTO.html) de Matt Welsh, ou ainda Linux
Installation HOWTO (http://www.linuxdoc.org/HOWTO/Installation-HOWTO.html"), de Eric S.
Raymond. Parte desses textos corresponde aos capítulos iniciais do livro Dominando o LINUX, de
Matt Welsh e Lar Kaufman, cuja leitura é muito recomendada. Visite
http://www.infomagic.com/catalog2.htm para obter mais informações sobre o livro.
O site de referência ao Linux é: http://www.linux.org/. Vale a pena visitá-lo de vez em quando!
1.4.3. O que é o Linux
O Linux é um sistema multiusuário e multitarefa, o que significa que várias pessoas podem trabalhar
de uma vez, e que este é capaz de realizar diversas tarefas ao mesmo tempo. Além disso, o Linux é
um sistema operacional em constante evolução. Isto implica num eterno aprendizado por parte de
seus usuários.
Quando se usa um computador em que o sistema LINUX foi instalado, a primeira coisa que se deve
fazer é informar o seu login, e em seguida a sua senha, o que lhe dará acesso a todos os recursos
disponíveis. Em geral, apenas o usuário denominado "root" tem acesso irrestrito a todo o sistema, e é
ele quem administra o restante das configurações.
Uma vez digitado o login e a senha, você terá acesso ao prompt. Esse prompt (que aqui será
simbolizado por um sinal de $) é gerado por um programa chamado shell (literalmente, casca ou
aparência exterior) que é responsável por lidar com os seus comandos.
1.4.4. O que é um comando
No Linux, os comandos são arquivos que possuem permissão para serem executados. A maioria dos
comandos inerentes ao Linux encontra-se no diretório /bin. Assim como no DOS, existe uma lista de
diretórios onde o shell pesquisa à procura de comandos. Essa lista de diretórios se chama path (ou
18
caminho). Para ver como está o seu caminho atual, digite:
$echo $PATH
Uma observação muito importante é que, diferentemente do DOS, o Linux não pesquisa
automaticamente no seu diretório atual a procura de comandos a serem executados.
O diretório atual é simbolizado por um ponto, e o diretório pai é simbolizado por dois pontos. Se você
quiser executar um arquivo chamado "nomearq.exe", que se encontra no diretório atual, e informar
apenas:
$ nomearq
receberá uma mensagem do tipo "File not found". Você deverá informar explicitamente ao sistema
que execute o arquivo "nomearq.exe", que se encontra no diretório atual:
$./nomearq.exe
Uma alternativa seria incluir um ponto ( . ) na variável $PATH. No bash, use:
$ export PATH=$PATH:.
Esse comando irá tornar o seu caminho igual ao caminho antigo mais o diretório atual (o ponto).
No tcsh, forneça:
$ set path = ( $PATH . ) 1
1.4.4 Linguagens de Programação
1.4.1. Como programar com o gcc
O gcc é um compilador C/C++ poderoso. Isto se deve ao fato de que o C é a linguagem nativa do
Linux.
O gcc (GNU C Compiler) funciona a partir da linha de comandos do shell. Para saber todas as opções
que esse compilador oferece, consulte a página manual do mesmo. Visite a página www.gnu.org para
saber mais sobre o projeto GNU.
A sintaxe básica para se chamar o gcc é:
$ gcc [opções] [arquivos]
Muitas opções do gcc consistem de mais de um caracter. Por isso, diferentemente da maioria dos
outros comandos do shell, cada opção deve ser precedida pelo seu próprio hífen. Você não pode
agrupar opções depois de um único hífen. Os dois comandos a seguir, por exemplo, não são
idênticos:
$ gcc -p -g test.c
$ gcc -pg test.c
Se você compilar um arquivo e não especificar nenhum parâmetro na linha de comando, o gcc irá
19
automaticamente criar um arquivo executável, e irá chamá-lo de a.out. Para testar, clique aqui para
baixar o arquivo teste.c (o tradicional "Hello World!" escrito em C), copie-o para o diretório adequado
e lá digite:
$ gcc teste.c
Para especificar um outro nome para o arquivo de saída, deve-se usar a opção -o (do inglês, output).
Para compilar um programa chamado teste.c e gerar um executável chamado hello, digite o seguinte:
$ gcc -o hello teste.c
O processo de gerar um arquivo executável se divide em duas etapas. Primeiro é gerado o código
objeto, a partir do código fonte. Esse arquivo objeto é praticamente equivalente ao código de
máquina. Em seguida, o arquivo objeto é linkado ("ligado") para produzir um executável.
Essa etapa consiste em informar ao programa onde encontrar as bibliotecas de que este necessita
para funcionar. Existem dois tipos de bibliotecas: as estáticas e as compartilhadas. As bibliotecas
estáticas são anexadas ao arquivo a ser executado, de modo que passam a fazer parte do programa
final. Isso, no entanto, pode ser pouco prático, caso muitos programas usem as mesmas sub-rotinas
de bibliotecas em comum. Nesses casos, costuma-se usar as bibliotecas compartilhadas.
Quando o programa for ligado a uma biblioteca compartilhada, ao invés de ser anexado todo o código
da biblioteca ao programa, será apenas fornecida uma referência para a mesma no disco, de modo
que o carregador possa encontrá-la durante a execução.
Bibliotecas
Para o compilador saber onde encontrar os arquivos de inclusão e as bibliotecas, use as opções -I e
-L respectivamente, seguidas pelos diretórios onde encontram-se os mesmos. Por exemplo:
$ gcc -I/usr/include -L/usr/lib -o exemplo exemplo.c -lstuff
Neste exemplo, a opção -I informa ao gcc para que acrescente o diretório /usr/include ao caminho
onde serão pesquisados os arquivos de inclusão. A opção -L informa ao gcc que acrescente o
diretório /usr/lib ao caminho onde serão pesquisadas as bibliotecas. Por fim, a opção -lstuff indica ao
gcc que ligue a biblioteca libstuff.a ao executável. Por padrão todas as bibliotecas começam com as
iniciais "lib". As bibliotecas que terminam com a extensão ".a" são estáticas, e as que terminam com
extensão ".so" são compartilhadas. Por padrão, o compilador irá tentar primeiro ligar as bibliotecas
compartilhadas. Para especificar que você deseja usar bibliotecas estáticas, utilize a opção -static.1
Mais opções...
É recomendável que se ative a opção -w ao se usar o gcc. Esta ativa todas as mensagens de aviso e
de erro que o compilador possa gerar.
Pode-se especificar até que ponto o gcc irá processar o código fonte. A opção -c indica ao gcc que
apenas gere o código objeto. A opção -S indica ao gcc que pare após gerar o código assembly.
É possível ainda otimizar o seu código fonte, usando as opções -O, que fará otimizações básicas, e
-O2, que trará otimizações avançadas. Ao ativar essas opções, o processo de compilação se tornará
mais lento, mas o seu executável será mais rápido.
Finalmente, para poder futuramente depurar ou analisar detalhes sobre o código, use a opção -g, se
for usar o gdb (Gnu Debugger), -p se for usar o prof ou ainda -pg, se você for usar o gprof. 3
Para saber como compilar programas que fazem uso da biblioteca GTK, consulte a seção 2.2.2.
--------------------------------------------------------------------------------
20
1.4.5. Makefiles (arquivos make)
Se você estiver trabalhando num projeto com diversos arquivos, o make é um programa bastante útil,
que lhe poderá poupar muito tempo. Ao compilar o seu projeto usando o make, este irá consultar um
registro de dependências entre os seus arquivos e atualizar apenas aqueles que foram alterados
desde a última atualização.
O formato geral de uma entrada de um arquivo make é:
destino: dependências
(TAB) lista de comandos
Note que a lista de comandos deve começar com uma tabulação, e não com espaços.
Digamos, por exemplo, que você deseja construir um programa chamado felicidade, que dependa dos
arquivos saude.c e amor.c. Você deverá editar um arquivo chamado makefile, ou Makefile, como
preferir, contendo as seguintes três entradas:
felicidade: amor.o saude.o
gcc -o felicidade amor.o saude.o
amor.o: amor.c
gcc -c amor.c
saude.o: saude.c
gcc -c saude.c
Agora, digite na linha de comando:
$ make felicidade
O programa make irá procurar no seu diretório atual um arquivo chamado, literalmente, makefile ou
Makefile. Ao encontrar o arquivo que você acabou de fornecer, ele irá interpretar, a partir da primeira
linha do mesmo, que "felicidade" é construída a partir de amor.o e saude.o. Recursivamente, o make
irá verificar que amor.o depende de amor.c, e que saude.o depende de saude.c. Sempre que um dos
arquivos de dependência for alterado, ou não existir, a lista de comandos referentes a ele será
executada. Para saber se um arquivo foi alterado, o make consultará a data e a hora associados ao
mesmo pelo sistema operacional. Para saber quando determinado arquivo foi modificado pela última
vez, execute o comando: ls -l. 1
1.4.5. Depuração com o gdb
O gdb (GNU Debugger) possui muitos comandos que lhe irão permitir executar diferentes operações
de depuração. Clique aqui para obter algumas delas. E lembre-se! Ligue as opções de depuração
quando compilar o programa, a fim de poder posteriormente depurá-lo.
21
1.5. Instalação de novos programas
Instalar novos programas no seu ambiente Linux é uma tarefa simples, principalmente se você tiver a
sua disposição um dos gerenciadores de pacotes como o RPM ou o DPKG.
1.5.1. RPM
Se você usa a distribuição da Red Hat ou alguma outra que dê suporte ao RPM, eis aqui algumas das
funções mais comuns:
rpm <parâmetros> <nome do pacote>
-i : instalação básica
- U : atualização de um programa
-- nodeps : não procura por dependências
-- help : lista opções
- q : (do inglês, query) mostra informações sobre o pacote
- e : exclui um pacote
Para verificar se você tem instalado o pacote gtk voltado para desenvolvedores, por exemplo, digite:
$ rpm -q gtk+-devel
seguido da tecla tab e enter.
Caso não possua, baixe o arquivo clicando aqui e, no diretório adequado, digite na linha de comando:
$ rpm -ivh gtk+-devel
seguido da tecla tab e enter.
1.5.2. DPKG
Usado para manusear pacotes da Debian.
dpkg <parâmetros> <nome do pacote>
-i : instalar
-r : remover
22
1.5.3. Arquivos .tar.gz ou .tgz
Digitando, na linha de comando, no diretório adequado
tar -xzvg nome_do_arquivo
o arquivo será descompactado. Provavelmente você encontrará um arquivo chamado README ou
INSTALL. Leia-o e siga as instruções recomendadas. Caso não exista este arquivo, tente digitar
simplesmente
$ ./configure
$ make
no prompt do shell, para compilar, e depois
$ make install
para instalar (normalmente como root). 2
1.6. Roteiro de algumas curiosidades
Finalmente, apresentamos aqui um roteiro para você dar os primeiros passo com o GTK.
a. Instalar o Linux.
b. a partir do shell inicializar uma seção do X (digitando startx, kde, ou o nome de algum outro
gerenciador de janelas que esteja instalado e lhe agrade).
c. instalar o GTK. Se preferir, instale o Gimp (no Red-Hat, basta executá-lo pela primeira vez, clicando
no seu ícone), que automaticamente o GTK será instalado.
d. abrir uma janela do xterm (shell) ou, alternativamente, efetuar login num outro console virtual.
e. usar esse console virtual ou o xterm para inicializar um editor de textos e digitar o código fonte de
seu programa.
f. compilar o programa, usando o gcc ou o make.
g. executá-lo, no sistema de janelas X, digitando o nome do programa criado, numa janela do xterm.
Não se esqueça da observação importante
1.6.1. Alguns comandos disponíveis
O formato geral de um comando é:
comando [-[opção1][opção2]...] parâmetro
23
onde o que está entre colchetes é opcional.
A familiarização com os comandos do Linux é obtida com a experiência. Em tempo, iremos apenas
apresentar a lista de alguns comandos básicos, sua finalidade, sintaxe e parâmetros. Para obter mais
informações sobre qualquer comando, basta consultar as páginas manuais, digitando no prompt
"man" seguido do nome do comando. Por exemplo: $man ls.
A tabela abaixo lista alguns dos principais comandos do Linux, suas finalidades, sintaxes e
parâmetros: 2
Comando
Finalidade
Sintaxe
Parâmetros
ls
list
Lista o conteúdo de um diretório.
ls -lar --color diretório
-l: lista longa
-a: lista arquivos ocultos
-r: lista recursivamente
--color: ativa cores
cd
change directory
Troca de diretório.
cd diretório
rm
remove
Remove arquivos e diretórios.
rm -irf arquivo
-i: apaga confirmando
-r: apaga recursivamente
-f: apaga forçadamente
cp
copy
Copia arquivos.
cp fonte destino
mkdir
make directory
Cria um diretório.
mkdir diretório
rmdir
remove directory
Apaga um diretório.
rmdir diretório
touch
Cria um arquivo vazio.
touch arquivo
24
more
Exibe conteúdo do arquivo.
more arquivo
clear
Limpa a tela.
clear
su
Muda de login.
su [-] login
find
Procura arquivos em diretórios.
find caminho expr.
--name: procura pelo nome
ps
process
Mostra os processos rodando na máquina.
ps - aux
grep
Procura padrões em um arquivo.
grep expr. arquivo
-a: todos os processos
-x: mostra processos que não foram iniciados no console
-u: nome do usuário e hora de início
df
disk free
Mostra espaço em disco livre.
df partição
du
disk usage
Mostra uso de disco.
du -s arquivo
-s: mostra apenas o total
pwd
print working directory
Mostra o nome do diretório corrente.
pwd
finger
Mostra informações sobre um usuário.
finger usuário
25
passwd
password
Definir senha.
passwd
logout
Sair do sistema.
logout
halt
Desliga o sistema.
halt
Observe que no comando ls, a opção color deve ser precedida por dois hífens. Nos comados em
geral, qualquer parâmetro que possua mais de um caracter (no caso, a palavra "color" possui cinco
caracteres) deve ser passado com dois hífens na frente. Se quisermos mostrar uma lista longa dos
arquivos, incluindo os ocultos, com cores, devemos digitar:
$ ls -la --color
Atenção! Em um sistema monousuário, antes de desligar o computador sempre execute o comando
halt e aguarde a mensagem "System halted!". Em muitos sistemas apenas o usuário root pode
executar o comando halt.
Para colocar qualquer comando em segundo plano, basta proceder normalmente e digitar um & antes
de pressionar enter.
1.6.2. Terminais virtuais
No prompt do shell, ao pressionar a tecla Alt à esquerda e uma das teclas de função, de F1 a F7,
você poderá navegar pelos consoles virtuais. Cada um deles está associado a uma nova tela. Desse
modo pode-se trabalhar com atividades diferentes em seções distintas. Observação: numa seção do
X, pressione Ctrl, Alt e uma das teclas de função, de F1 a F7, para saltar para um outro console. Em
geral, o sistema de janelas X é carregado no terminal virtual de número sete.
Dentro de um console virtual, um recurso muito útil para se navegar no sistema é o uso da tecla tab
para completar seus comandos em geral. Experimente digitar:
$ cd /usr/sb
e tecle tab em seguida. Se você usa o shell bash, ksh, tcsh ou zsh, este irá preencher para você as
informações que faltam na sua linha de comando. Caso exista mais de uma possibilidade de término
de palavra, pressione tab mais uma vez e aparecerão todas as opções disponíveis. 1
26
1.6.3. O sistema de arquivos e diretórios importantes
Algo que você certamente mais cedo ou mais tarde irá querer fazer é acessar a unidade de disco, cd-
rom ou até mesmo uma partição que contenha dados do Windows 95/98. Para isso, é necessário
inicialmente "montá-la" usando o comando mount. A sua sintaxe é:
mount -f tipo dispositivo ponto_de_montagem
Um exemplo de utilização, para acessar os dados do Windows 98 contidos na partição de número um
do terceiro disco rígido, ou seja, do dispositivo chamado hdc1, seria:
$ mkdir /win98
$ mount -f vfat /dev/hdc1 /win98
Feito isso, nesse exemplo os dados da nova unidade montada podem ser acessados a partir do
diretório win98. Uma observação importante é que nem todos os usuários podem usar o mount em
todas as situações. Consulte a página de manual do mount para maiores detalhes.
Para acessar a unidade de disco, por exemplo, você poderá recorrer aos mtools, caso estejam
instalados no seu sistema. Digite man mtools na linha de comando para obter mais informações.
Os diretórios que guardam os arquivos de sistema do Linux, em sua maioria, são padronizados.
Alguns diretórios importantes são:
/home
/bin
/usr
/usr/bin
/usr/spool
/dev
/usr/sbin
/sbin
/etc
O diretório "root" (raiz).
/home
Abriga os diretórios dos usuários. Por exemplo, um usuário cujo login seja "ana" provavelmente
quando entrar no sistema será encaminhado direto para o diretório /home/ana, e terá acesso a todos
os dados contidos no mesmo.
/bin
Guarda os programas e comandos básicos do Linux. bin é um mnemônico para "binaries" (binários),
ou seja, arquivos executáveis. Na realidade todos os arquivos armazenados num computador estão
em formato binário. Infelizmente, usa-se como jargão, por motivos históricos, o termo "arquivos
binários" como sendo sinônimo de arquivos executáveis.
/usr
Armazena muitos outros diretórios com conteúdo orientado aos usuários.
/usr/docs
Documentos, incluindo informação útil sobre o Linux.
/usr/man
Páginas de manual, acessadas digitando man <comando>
/usr/games
27
Jogos!
/usr/bin
Neste diretório estão contidos programas voltados aos usuários do sistema em geral.
/usr/spool
Este diretório possui vários subdiretórios. Entre eles mail, que guarda mensagens, spool, onde são
guardados arquivos a serem impressos e uucp que abriga arquivos copiados entre máquinas Linux.
/dev
No Linux, tudo é acessado por meio de arquivos! O diretório /dev armazena dispositivos. Estes, na
realidade, são pontes para os verdadeiros componentes físicos da máquina. Por exemplo, se você
copia para /dev/fd0, na realidade você está enviando dados para uma unidade de disco. O seu
terminal é um arquivo /dev/tty. Partições do disco rígido são da forma /dev/hd0. Até a memória do
sistema é um dispositivo!
Um dispositivo famoso é o /dev/null, que corresponde a uma lixeira. Toda informação desviada para
/dev/null é descartada.
/usr/sbin
Aqui estão os arquivos de administração do sistema.
/sbin
Neste diretório estão contidos arquivos executados em geral automaticamente pelo sistema
operacional.
/etc
Este diretório e seus subdiretórios abrigam muitos arquivos de configuração. Estes arquivos são na
maioria do tipo texto, e podem ser editados para alterar parâmetros do sistema. 3
1.6.4. X Window System
28
1.6.5. Conceitos sobre o X
O X Window System, ou Sistema de Janelas X, é basicamente um conjunto padronizado de rotinas
de tratamento de tela, desenvolvido no MIT, que permite a criação de interfaces gráficas
independentes do hardware. 4
Neste esquema, você pode observar que os aplicativos trocam dados com o Sistema de Janelas X, o
qual passa as informações para o vídeo. Não existe um acesso direto ao monitor de vídeo por parte
das aplicações, tornando-se estas mais facilmente portáveis. Isto é, o mesmo programa pode ser
executado sobre qualquer hardware sem ser modificado ou recompilado.
Além disso, o X Window System é um sistema de janelas que pode executar aplicações em rede de
forma transparente. Portanto, vários aplicativos, que podem estar rodando em máquinas distribuídas
por toda a rede, geram simultaneamente texto e gráficos na tela de um determinado usuário. 5
No prompt de seu shell, digite startx. Se o X for inicializado, e o cursor aparecer no vídeo, você está
pronto para utilizá-lo. Caso contrário, será necessário configurá-lo. Clique aqui para fazer o download
de um tutorial a fim de aprender a configurar o seu Sistema de Janelas X.
1.6.6. Os Gerenciadores de Janelas
Note que, ao definirmos o Sistema de Janelas X, nos referimos a um conjunto de rotinas
padronizadas para acessar o vídeo. Em outras palavras, o Sistema de Janelas X é apenas um
protocolo. Em cima desse protocolo é que rodam todos os aplicativos. Inclusive os gerenciadores de
janelas (ou window managers), que são responsáveis por gerar a interface externa do sistema ao
usuário.
29
É função dos gerenciadores de janelas prover:
- barras de título, bordas e outras decorações para as janelas das aplicações
- ícones uniformes
- um meio uniforme de se mover e redimensionar as janelas
- uma interface uniforme para se mover entre as aplicações
Entre os window managers mais famosos podemos citar o fvwm, o KDE ( www.kde.org ) e o Window
Maker (www.windowmaker.org) entre vários outros (este último foi desenvolvido em grande parte na
Universidade Federal do Rio Grande do Sul). É o window manager que determinará a aparência do
seu sistema X, portanto escolha o que mais lhe agradar.
1.6.7. Editores de texto
Em praticamente todos os sistemas Linux estão instalados o vim e o Emacs. Por isso, é de grande
utilidade saber utilizar bem um desses dois editores. Se você tem instalado o X, sua distribuição deve
provavelmente incluir também o gvim e uma versão para o X do emacs.
Para aprender a usar o vim, visite http://www.vim.org/. O emacs também possui a sua página em
http://www.emacs.org
Note que o vim e o emacs são editores de textos simples. Para formatar os textos, existem os
processadores de textos, entre eles o TEX/Latex, o groff e o Textinfo. Por meio de comandos
inseridos no texto o usuário pode transformar um documento simples em um documento formatado
usando um desses processadores.
30

Mais conteúdo relacionado

Mais procurados

Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01Ivaldo Cardoso
 
História do linux ppt
História do linux pptHistória do linux ppt
História do linux pptshade09
 
Linux Como Tudo Começou
Linux Como Tudo ComeçouLinux Como Tudo Começou
Linux Como Tudo Começouguestaa94fe
 
O que é o Linux? Quais seus benefícios?
O que é o Linux? Quais seus benefícios?O que é o Linux? Quais seus benefícios?
O que é o Linux? Quais seus benefícios?Rodnei Reis
 
Sistema Operativo Linux
Sistema Operativo LinuxSistema Operativo Linux
Sistema Operativo Linuxfilipereira
 
Introdução ao Linux
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linuxguest82cc1d
 
Linux - Sistema Operacional
Linux - Sistema Operacional Linux - Sistema Operacional
Linux - Sistema Operacional Carine Furlanetto
 
Como surgiu o linux
Como surgiu o linuxComo surgiu o linux
Como surgiu o linuxy3vg3n
 
UNIX - História e filosofia
UNIX - História e filosofiaUNIX - História e filosofia
UNIX - História e filosofiaNEO Empresarial
 
Sistema operacional linux
Sistema operacional linuxSistema operacional linux
Sistema operacional linuxgabiel-felipe
 
Windows vs Linux
Windows vs LinuxWindows vs Linux
Windows vs LinuxPepe Rocker
 
Sistemas Operacionais - Gnu/Linux
Sistemas Operacionais - Gnu/LinuxSistemas Operacionais - Gnu/Linux
Sistemas Operacionais - Gnu/LinuxLuiz Arthur
 

Mais procurados (20)

Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01
 
Caixa magica, linux
Caixa magica, linuxCaixa magica, linux
Caixa magica, linux
 
Linux
LinuxLinux
Linux
 
História do linux ppt
História do linux pptHistória do linux ppt
História do linux ppt
 
Trabalho linux
Trabalho linuxTrabalho linux
Trabalho linux
 
Linux
LinuxLinux
Linux
 
Linux Como Tudo Começou
Linux Como Tudo ComeçouLinux Como Tudo Começou
Linux Como Tudo Começou
 
O que é o Linux? Quais seus benefícios?
O que é o Linux? Quais seus benefícios?O que é o Linux? Quais seus benefícios?
O que é o Linux? Quais seus benefícios?
 
Linux para leigos
Linux para leigos Linux para leigos
Linux para leigos
 
Sistema Operativo Linux
Sistema Operativo LinuxSistema Operativo Linux
Sistema Operativo Linux
 
Introdução ao Linux
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linux
 
Linux - Sistema Operacional
Linux - Sistema Operacional Linux - Sistema Operacional
Linux - Sistema Operacional
 
Soa cap1 introducao a linux
Soa cap1 introducao a linuxSoa cap1 introducao a linux
Soa cap1 introducao a linux
 
Kernel do Linux
Kernel do LinuxKernel do Linux
Kernel do Linux
 
Unix
UnixUnix
Unix
 
Como surgiu o linux
Como surgiu o linuxComo surgiu o linux
Como surgiu o linux
 
UNIX - História e filosofia
UNIX - História e filosofiaUNIX - História e filosofia
UNIX - História e filosofia
 
Sistema operacional linux
Sistema operacional linuxSistema operacional linux
Sistema operacional linux
 
Windows vs Linux
Windows vs LinuxWindows vs Linux
Windows vs Linux
 
Sistemas Operacionais - Gnu/Linux
Sistemas Operacionais - Gnu/LinuxSistemas Operacionais - Gnu/Linux
Sistemas Operacionais - Gnu/Linux
 

Semelhante a Introdução ao Linux: história, características, distribuições e conceitos básicos

Linux valter 1
Linux valter 1Linux valter 1
Linux valter 1valterbh
 
1-Sistemas Operativos.pdf
1-Sistemas Operativos.pdf1-Sistemas Operativos.pdf
1-Sistemas Operativos.pdfSandraNovo5
 
01.01 - Introdução ao Linux.pdf
01.01 - Introdução ao Linux.pdf01.01 - Introdução ao Linux.pdf
01.01 - Introdução ao Linux.pdfSergio778021
 
AdministraçãO Gnu Linux
AdministraçãO Gnu LinuxAdministraçãO Gnu Linux
AdministraçãO Gnu Linuxpeter_lucas
 
Curso de Introdução ao Software Livre - Aula de 23/09/2009
Curso de Introdução ao Software Livre - Aula de 23/09/2009Curso de Introdução ao Software Livre - Aula de 23/09/2009
Curso de Introdução ao Software Livre - Aula de 23/09/2009Antônio Arapiraca
 
Unidade 3.1 Introdução ao Sistema Operacional Linux
Unidade 3.1   Introdução ao Sistema Operacional LinuxUnidade 3.1   Introdução ao Sistema Operacional Linux
Unidade 3.1 Introdução ao Sistema Operacional LinuxJuan Carlos Lamarão
 
Histórial dos sistemas operativos e Marcos históricos.pptx
Histórial dos sistemas operativos e Marcos históricos.pptxHistórial dos sistemas operativos e Marcos históricos.pptx
Histórial dos sistemas operativos e Marcos históricos.pptxXaneYT
 
História dos Sistemas Operacionais
História dos Sistemas OperacionaisHistória dos Sistemas Operacionais
História dos Sistemas OperacionaisSheldon Led
 
Tarefa sistema linux [2]
Tarefa sistema linux [2]Tarefa sistema linux [2]
Tarefa sistema linux [2]nunesgilvicente
 
Linux
LinuxLinux
LinuxRita
 
Linux - So por Prazer
Linux - So por PrazerLinux - So por Prazer
Linux - So por Prazers4nx
 

Semelhante a Introdução ao Linux: história, características, distribuições e conceitos básicos (20)

Linux valter 1
Linux valter 1Linux valter 1
Linux valter 1
 
2545 2122 linux
2545 2122 linux2545 2122 linux
2545 2122 linux
 
1-Sistemas Operativos.pdf
1-Sistemas Operativos.pdf1-Sistemas Operativos.pdf
1-Sistemas Operativos.pdf
 
01.01 - Introdução ao Linux.pdf
01.01 - Introdução ao Linux.pdf01.01 - Introdução ao Linux.pdf
01.01 - Introdução ao Linux.pdf
 
Linux mint apostila
Linux mint apostilaLinux mint apostila
Linux mint apostila
 
Resumolinux
ResumolinuxResumolinux
Resumolinux
 
Linux
LinuxLinux
Linux
 
Módulo 6 - Gnu/Linux
Módulo 6 - Gnu/LinuxMódulo 6 - Gnu/Linux
Módulo 6 - Gnu/Linux
 
AdministraçãO Gnu Linux
AdministraçãO Gnu LinuxAdministraçãO Gnu Linux
AdministraçãO Gnu Linux
 
Aula 08
Aula 08Aula 08
Aula 08
 
Linux
LinuxLinux
Linux
 
Curso de Introdução ao Software Livre - Aula de 23/09/2009
Curso de Introdução ao Software Livre - Aula de 23/09/2009Curso de Introdução ao Software Livre - Aula de 23/09/2009
Curso de Introdução ao Software Livre - Aula de 23/09/2009
 
Linux Distros
Linux DistrosLinux Distros
Linux Distros
 
Unidade 3.1 Introdução ao Sistema Operacional Linux
Unidade 3.1   Introdução ao Sistema Operacional LinuxUnidade 3.1   Introdução ao Sistema Operacional Linux
Unidade 3.1 Introdução ao Sistema Operacional Linux
 
Linux basico jolim 2007
Linux basico jolim 2007Linux basico jolim 2007
Linux basico jolim 2007
 
Histórial dos sistemas operativos e Marcos históricos.pptx
Histórial dos sistemas operativos e Marcos históricos.pptxHistórial dos sistemas operativos e Marcos históricos.pptx
Histórial dos sistemas operativos e Marcos históricos.pptx
 
História dos Sistemas Operacionais
História dos Sistemas OperacionaisHistória dos Sistemas Operacionais
História dos Sistemas Operacionais
 
Tarefa sistema linux [2]
Tarefa sistema linux [2]Tarefa sistema linux [2]
Tarefa sistema linux [2]
 
Linux
LinuxLinux
Linux
 
Linux - So por Prazer
Linux - So por PrazerLinux - So por Prazer
Linux - So por Prazer
 

Mais de SENAC RIO

Proftpd instalação
Proftpd   instalaçãoProftpd   instalação
Proftpd instalaçãoSENAC RIO
 
Linux x Windowns
Linux x WindownsLinux x Windowns
Linux x WindownsSENAC RIO
 
Linux ubuntu guia do iniciante
Linux ubuntu guia do inicianteLinux ubuntu guia do iniciante
Linux ubuntu guia do inicianteSENAC RIO
 
Linux cursos
Linux cursosLinux cursos
Linux cursosSENAC RIO
 
Gentoo por marcelo rocha
Gentoo por marcelo rochaGentoo por marcelo rocha
Gentoo por marcelo rochaSENAC RIO
 
Funcionamento kernel
Funcionamento kernelFuncionamento kernel
Funcionamento kernelSENAC RIO
 
Apostila ubuntu
Apostila ubuntuApostila ubuntu
Apostila ubuntuSENAC RIO
 
Apostila linux.sxw
Apostila linux.sxwApostila linux.sxw
Apostila linux.sxwSENAC RIO
 
Apostila de comandos linux resumidos (universidade católica de brasília)
Apostila de comandos linux   resumidos (universidade católica de brasília)Apostila de comandos linux   resumidos (universidade católica de brasília)
Apostila de comandos linux resumidos (universidade católica de brasília)SENAC RIO
 
linux pocket guide+ command
linux pocket guide+ commandlinux pocket guide+ command
linux pocket guide+ commandSENAC RIO
 

Mais de SENAC RIO (13)

Proftpd instalação
Proftpd   instalaçãoProftpd   instalação
Proftpd instalação
 
Modulo+4
Modulo+4Modulo+4
Modulo+4
 
Linux
LinuxLinux
Linux
 
Linux x Windowns
Linux x WindownsLinux x Windowns
Linux x Windowns
 
Linux ubuntu guia do iniciante
Linux ubuntu guia do inicianteLinux ubuntu guia do iniciante
Linux ubuntu guia do iniciante
 
Linux cursos
Linux cursosLinux cursos
Linux cursos
 
Gentoo por marcelo rocha
Gentoo por marcelo rochaGentoo por marcelo rocha
Gentoo por marcelo rocha
 
Funcionamento kernel
Funcionamento kernelFuncionamento kernel
Funcionamento kernel
 
Apostila ubuntu
Apostila ubuntuApostila ubuntu
Apostila ubuntu
 
Apostila linux.sxw
Apostila linux.sxwApostila linux.sxw
Apostila linux.sxw
 
Apostila
ApostilaApostila
Apostila
 
Apostila de comandos linux resumidos (universidade católica de brasília)
Apostila de comandos linux   resumidos (universidade católica de brasília)Apostila de comandos linux   resumidos (universidade católica de brasília)
Apostila de comandos linux resumidos (universidade católica de brasília)
 
linux pocket guide+ command
linux pocket guide+ commandlinux pocket guide+ command
linux pocket guide+ command
 

Introdução ao Linux: história, características, distribuições e conceitos básicos

  • 1. Sumário 1 Introdução ao Linux.........................................................................................................................2 Historia.................................................................................................................................................2 1.1 O nome Linux...........................................................................................................................2 1.2 Características do UNIX..........................................................................................................3 1.2.2 Origem do nome Linux........................................................................................................5 1.3 Creative commons.........................................................................................................................7 1.3.1 Como escolher uma licença....................................................................................................7 1.3.2 Linux tem licença GPL..........................................................................................................9 1.3.3 Arquitetura..............................................................................................................................9 1.3.4 Portabilidade..........................................................................................................................9 1.3.5 Termos de Licenciamento.....................................................................................................10 1.3.6 Sistemas de arquivos suportados..........................................................................................10 1.3.7 Sistema Operacional.............................................................................................................10 1.4 Distribuições.................................................................................................................................11 1.4.1Distribuições de propósito geral............................................................................................13 1.4.2. Usando o Linux....................................................................................................................17 1.4.3. O que é o Linux...................................................................................................................17 1.4.4 Linguagens de Programação.................................................................................................18 1.4.5. Makefiles (arquivos make)..................................................................................................20 1.4.5. Depuração com o gdb..........................................................................................................21 1.5.1. RPM.....................................................................................................................................21 1.5.2. DPKG...................................................................................................................................21 1.5.3. Arquivos .tar.gz ou .tgz........................................................................................................22 1.6. Roteiro de algumas curiosidades.................................................................................................22 1.6.1. Alguns comandos disponíveis..............................................................................................23 1.6.2. Terminais virtuais.................................................................................................................25 1.6.3. O sistema de arquivos e diretórios importantes...................................................................26 1.6.4. X Window System...............................................................................................................27 1.6.5. Conceitos sobre o X ............................................................................................................27 1.6.6. Os Gerenciadores de Janelas................................................................................................28 1.6.7. Editores de texto..................................................................................................................29
  • 2. 1 Introdução ao Linux Historia 1.1 O nome Linux O nome Linux surgiu da mistura de Linus + Unix. Linus é o nome do criador do Linux, Linus Torvalds. E Unix, é o nome de um sistema operacional de grande porte, no qual contaremos sua história agora, para que você entenda melhor a do Linux. A origem do Unix tem ligação com o sistema operacional Multics, projetado na década de 1960. Esse projeto era realizado pelo Massachusets Institute of Technology (MIT), pela General Eletric (GE) e pelos laboratórios Bell (Bell Labs) e American Telephone na Telegraph (AT&T). A intenção era de que o Multics tivesse características de tempo compartilhado (vários usuários compartilhando os recursos de um único computador), sendo assim o sistema mais arrojado da época. Em 1969, já existia uma versão do Multics rodando num computador GE645. Ken Thompsom era um pesquisador do Multics e trabalhava na Bell Labs. No entanto, a empresa se retirou do projeto tempos depois, mas ele continuou seus estudos no sistema. Desde então, sua idéia não era continuar no Multics original e sim criar algo menor, mas que conservasse as idéias básicas do sistema. A partir daí, começa a saga do sistema Unix. Brian Kernighan, também pesquisador da Bell Labs, foi quem deu esse nome. Em 1973, outro pesquisador da Bell Labs, Dennis Ritchie, rescreveu todo o sistema Unix numa linguagem de alto nível, chamada C, desenvolvida por ele mesmo. Por causa disso, o sistema passou a ter grande aceitação por usuários externos à Bell Labs. Entre 1977 e 1981, a AT&T, alterou o Unix, fazendo algumas mudanças particulares e lançou o System III. Em 1983, após mais uma série de modificações, foi lançado o conhecido Unix System IV, que passou a ser vendido. Até hoje esse sistema é usado no mercado, tornando-se o padrão internacional do Unix. Esse sistema é comercializado por empresas como IBM, HP, Sun, etc. O Unix, é um sistema operacional muito caro e é usado em computadores poderosos (como mainframes) por diversas multinacionais. Qual a relação entre o Unix e o Linux, ou melhor, entre o Unix e Linus Torvalds? Para responder essa pergunta, é necessário falar de outro sistema operacional, o Minix. O Minix é uma versão do Unix, porém, gratuita e com o código fonte disponível. Isso significa que qualquer programador experiente pode fazer alterações nele. Ele foi criado originalmente para uso educacional, para quem quisesse estudar o Unix "em casa". No entanto, vale citar que ele foi escrito do "zero" e apesar de ser uma versão do Unix, não contém nenhum código da AT&T e por isso pode ser distribuído gratuitamente. A partir daí, "entra em cena" Linus Torvalds. Ele era um estudante de Ciências da Computação da Universidade de Helsinki, na Filândia e em 1991, por hobby, Linus decidiu desenvolver um sistema mais poderoso que o Minix. Para divulgar sua idéia, ele enviou uma mensagem a um grupo pela Usenet (uma espécie de antecessor da Internet). A mensagem pode ser vista no final deste artigo. No mesmo ano, ele disponibilizou a versão do kernel (núcleo dos sistemas operacionais) 0.02 e continuou trabalhando até que em 1994 disponibilizou a versão 1.0. Até o momento em que este 2
  • 3. artigo estava sendo escrito, a versão atual era a 2.6. O Linux é um sistema operacional livre e é uma re-implementação das especificações POSIX (padronização da IEEE, Instituto de Engenharia Elétrica e Eletrônica) para sistemas com extensões System V e BSD. Isso signfica que o Linux é bem parecido com Unix, mas não vem do mesmo lugar e foi escrito de outra forma. Mas por que o Linux é gratuito? Linus Torvalds, quando desenvolveu o Linux, não tinha a inteção de ganhar dinheiro e sim fazer um sistema para seu uso pessoal, que atendesse suas necessidades. O estilo de desenvolvimento que foi adotado foi o de ajuda coletiva. Ou seja, ele coordena os esforços coletivos de um grupo para a melhoria do sistema que criou. Milhares de pessoas contribuem gratuitamente com o desenvolvimento do Linux, simplesmente pelo prazer de fazer um sistema operacional melhor. Licença GPL O Linux está sob a licença GPL, permite que qualquer um possa usar os programas que estão sob ela, com o compromisso de não tornar os programas fechados e comercializados. Ou seja, você pode alterar qualquer parte do Linux, modificá-lo e até comercialiazá-lo, mas você não pode fechá-lo (não permitir que outros usuários o modifiquem) e vendê-lo. GNU A história do Linux não termina aqui. É necessário saber também o que é GNU. GNU é um projeto que começou em 1984 com o objetivo de desenvolver um sistema operacional compatível com os de padrão Unix. O Linux em si, é só um kernel. Linus Torvalds, na mesma época que escrevia o código- fonte do kernel, começou a usar programas da GNU para fazer seu sistema. Gostando da idéia, resolveu deixar seu kernel dentro da mesma licença. Mas, o kernel por si só, não é usável. O kernel é a parte mais importante, pois é o núcleo e serve de comunicador entre o usuário e o computador. Por isso, com o uso de variantes dos sistemas GNU junto com o kernel, o Linux se tornou um sistema operacional. Mas você pode ter ficado confuso agora. O que é o Linux então? O que é GNU? Simplesmente, várias pessoas uma versões modificadas dos sistemas GNU, pensando que é o Linux em si. Os programadores que trabalham com ele, sabem que o Linux, é basicamente o kernel, conforme já foi dito, mas todos, chamam esse conjunto de Linux (há quem defenda o uso de GNU/Linux). � �Finalizando, o projeto GNU é um dos responsáveis pelo sucesso do Linux, pois graças à mistura de seus programas com o kernel desenvolvido por Linus Torvalds, o Linux vem mostrando porque é um sistema operacional digno de habilidades insuperáveis por qualquer outro sistema. O UNIX foi desenvolvido no final da década de 1960 e vai seguindo seu percurso de crescimento. 1.2 Características do UNIX 1. Sistema multitarefa e multiusuário 2. Disponível para diversas plataformas. 3
  • 4. 3. Sistema robusto e confiável. 4. Sistema maduro. A principal desvantagem do UNIX é por ser muito caro e só funcionar em plataformas de hardware com preço inacessível a maioria dos profissionais. Entre 1977 e 1981, a AT&T, alterou o Unix, fazendo algumas mudanças particulares e lançou o System III. Em 1983, após mais uma série de modificações, foi lançado o conhecido Unix System IV, que passou a ser vendido. Até hoje esse sistema é usado no mercado, tornando-se o padrão internacional do Unix. Esse sistema é comercializado por empresas como IBM, HP, Sun, etc. O Unix, é um sistema operacional muito caro e é usado em computadores poderosos (como mainframes) por diversas multinacionais. Versões do UNIX comerciais: » HP-UX » AIX » Solaris » IRIX A versão livre do UNIX se chama FreeBSD. Essa história da origem do Unix é só um resumo, para que vocês possam entender a origem do Linux. Apresentando o Linux Como se percebe o UNIX é inacessível a maioria dos mortais, pois é caro e exige um hardware adequado. Isso, vai inspirar alguém a criar algo acessível. Mas antes disso vamos falar de outra pessoa. Dr. Andrew Tanenbaum O Dr. Andrew Tanenbaum motivado para fins educacionais, criou um sistema operacional chamado MINIX, baseado nos processadores INTEL 8086 que era na época a plataforma mais barata e atual. O Minix só poderia ser usado para fins acadêmicos devido as suas limitações técnicas. Só endereçava até 1MB de cada vez. Não tinha memória virtual. Ótimo. Já temos a primeira parte do sistema operacional. O que é GNU e a FSF? A Fundação do Software Livre – FSF (Free Software Foundation) fundada por Richard Stallman no ano de 1983fundou a (Fundação do Software Livre). Foi criado o projeto GNU. Este projeto tinha a responsabilidade de criar um clone do UNIX. Um detalhe deste clone é que tinha que ser livre e não poderia usar código fonte no UNIX pois tinha uma versão livre do UNIX – o BSD. O projeto não deu certo em partes, pois chegou ao final da década de 80 sem cumprir seus propósitos que eram criar o clone do UNIX. Mas o fracasso não foi total. 4
  • 5. Não se conseguiu fazer o clone do UNIX mas foram criadas as ferramentas necessárias para que Linux Torvalds conseguisse desenvolver o Linux. Então, Linux Benedict Torvalds aluno da Universidade de Helsinque, na Finlândia usou tudo o que tinha até o momento: O Minix e as Ferramentas do GNU. Linus, inicia o desenvolvimento de um kernel que fosse um clone do UNIX que possuísse memória virtual, multitarefa preemptiva e capacidade de multiusuários. Era um trabalho que ele sozinho não conseguiria terminar em tempo hábil. Então, ele disponibilizou o código fonte do que ele veio a chamar de Linux. O nome Linux surgiu da mistura de Linus + Unix. Linus é o nome do criador do Linux, Linus Torvalds. Alguns linuxistas mais radicais chamam o sistema operacional do pingüim de GNU/LINUX, já que Linux Torvalds, conseguiu algum sucesso usando as ferramentas do projeto GNU. 1.2.2 Origem do nome Linux O nome Linux surgiu da mistura de Linus + Unix. Linus é o nome do criador do Linux, Linus Torvalds. E Unix, é o nome de um sistema operacional de grande porte. O nome do mascote Tux (o pingüim do Linux), foi escolhido por votação, pelo próprio Linus. Segundo ele "gostaria de um pingüim cheio, satisfeito por ter comido muitos peixes". Diz a lenda que o motivo por trás da escolha do Tux como mascote foi uma mordida que Linus levou de um pingüim em um zoológico. O MINIX DO DR. ANDREW TANENBAUM Um outro sistema operacional importante é o Minix. A partir dele é que Linux Torvalds começou a desenvolver o que chamamos de Linux. Mas ele não fez tudo. Veja a seguir a frase do Linux Torvalds que ele publicou na USENET. Mensagem de Linus Torvalds na Usenet Abaixo segue a mensagem publicada por Linus Torvalds via Usenet na divulgação de seu projeto. A tradução para português foi disponibilizada logo abaixo da mensagem em inglês. Ambas as mensagens foram retiradas deste link: http://www.rootlinux.com.br/documentos/downloads/Historia_do_Linux.txt O que significa gratuito no Linux? O Linux depois de pronto foi baseado numa licença chamada GPL. Nem ele como criador original do 5
  • 6. Linux pode alterá-la ou requerer o Linux novamente para ele. Licença GPL Software livre não significa que uma empresa não possa comercializá-lo. Pode sim. O Linux, pode ser vendido sem problemas, mas, desde que siga quatro princípios de liberdade: » Liberdade 0: - O direito de executar o programa, para qualquer propósito. » Liberdade 1: - O direito de estudar como o programa funciona e adptá-lo para suas necessidades.. » Liberdade 2: O direito de redistribuir cópias, permitindo assim que você ajude outras pessoas. » Liberdade 3: - O direito de aperfeiçoar o programa, e distribuir seus aperfeiçoamentos para o público, beneficiando assim toda a comunidade. Você terá os direitos acima especificados contanto que Você cumpra com os requisitos expressos nesta Licença. Os principais requisitos são: Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor. Qualquer direito de uso legítimo (ou "fair use") concedido por lei, ou qualquer outro direito protegido pela legislação local, não são em hipótese alguma afetados pelo disposto acima. Fonte: http://creativecommons.org/licenses/GPL/2.0/ Então, para que um programa seja considera livre, ele tem que está baseado nestas quatro liberdades. Mas as pessoas e empresas podem cobrar para distribuir cópias do programa. A única coisa que não pode acontecer é o autor revogar estas 4 liberdades. Então, para garantir estas liberdades é que as licenças foram criadas. A mais famosa é a GPL – 6
  • 7. General Public License (Licença Geral Pública). COPYLEFT VERSUS COPYRIGHT O COPYLEFT garante que qualquer usuário tenha o direito de copiar, modificar e redistribuir o código de um programa derivado do mesmo se os termos de distribuição não forem modificados. É o oposto do COPYRIGHT 1.3 Creative commons Quando foi criado o conceito de copyleft, apenas programas computacionais começaram a ser licenciados assim, mas, depois, o movimento pela livre circulação da cultura e do saber estendeu-se a outros tipos de conteúdos, especialmente os artísticos, literários, musicais, científicos e os jornalísticos. Em 2001 surgiram outras licenças que estão consagradas pela Creative Commons, uma organização sem fins lucrativos fundada por Lawrence Lessig, então professor de Direito da Universidade de Stanford. No livro "Cultura Livre" Lessig demonstra que empresas dos EUA conseguiram junto ao Congresso daquele país aumentar o prazo pelo qual uma obra permanece "protegida", de modo a não permitir que inúmeros produtos culturais e imateriais, como livros, músicas e filme sejam utilizados para produzir novas obras. Assim, Lessig defende que a cultura seria mais rica se as leis que regulam os direitos autorais fossem mais flexíveis. As licenças Creative Commons facilitam o compartilhamento e recombinação de conteúdos culturais, como textos, músicas, imagens, filmes e outros, sob a égide de uma filosofia copyleft. Assim, os autores desses produtos podem abdicar em favor do público de alguns dos seus direitos inerentes às suas criações, ainda que retenham outros desses direitos. Há vários tipos de licença, incluindo opções que permitem abdicação quase total de direitos patrimoniais pelo licenciante a tipos mais restritivos, que vedam a possibilidade de criação de obras derivadas ou o uso comercial dos materiais licenciados. Assim, quando um autor escolhe a licença para a sua obra, decide se alguém pode ou não fazer uso comercial, se pode modificá-la ou se a obra derivada deve ou não ter o mesmo tipo de licença relativamente à original. É muito importante compreender que os diversos tipos de obras culturais podem e devem ter licenças diferentes. Por exemplo, a livre modificação de textos pode ser aplicada a alguns tipos de trabalhos, como textos de manuais de programas, que até podem ser empreendimentos coletivos. Já, com relação à produção científica, a modificação do texto não faz sentido, pois é absolutamente necessário identificar o autor, atribuir-lhe responsabilidades e garantir a confiabilidade da fonte. Em geral, essas novas licenças são centradas na manutenção da integridade da obra e usam o Copyleft para garantir a liberdade de reprodução. E garantem ao autor o direito de ser remunerado quando seu trabalho intelectual tiver que ser consubstanciado em meio físico para fins de comércio. Assim, supera-se a velha ideologia da "propriedade intelectual" e instala-se a tutela do "trabalho intelectual". 7
  • 8. Vídeo: Creative Commons - Seja Criativo (Get Creative) Portuguese http://br.youtube.com/watch?v=izSOrOmxRgE (acessado novamente em 2/09/2009) (Versão em português com explicação sobre a diferença de copyright para Creative Commons.) 1.3.1 Como escolher uma licença Não se abre mão de direitos autorais quando se oferece uma obra sob uma licença Creative Commons. Esse ato significa apenas que se oferece alguns direitos para qualquer pessoa, mas somente sob determinadas condições. Sobre as condições Atribuição O autor permite que outras pessoas copiem, distribuam e executem sua obra, e as obras derivados criadas a partir dela, somente se for dado crédito da maneira que o autor estabeleceu. Uso Não Comercial O autor permite que outras pessoas copiem, distribuam e executem sua obra, e as obras derivadas criadas a partir dela, somente para fins não comerciais. Não à Obras Derivadas O autor permite que outras pessoas copiem, distribuam e executem somente cópias exatas da sua obra, mas sem modificações, ou seja, naõ permite obras derivadas. Compartilhamento pela mesma Licença O autor permitir que outras pessoas distribuam obras derivadas somente sob a mesma licença que rege sua obra. As licenças by-nc-nd - Atribuição - Uso Não Comercial - Não a Obras Derivadas Esta é a mais restritiva dentre as seis licenças principais que permitem redistribuição. É chamada de propaganda grátis". Permite: que outros façam cópia e compartilhem a obra, contanto que mencionem e façam o link ao autor. Não permite: Modificar a obra. E, de nenhum modo, usar a obra para fins comerciais. by-nc-sa - Atribuição - Uso Não Comercial - Compartilhamento pela mesma Licença Permite: que outros remixem, adaptem e criem obras derivadas com fins não comerciais, contanto que atribuam crédito ao autor e licenciem as novas criações sob os mesmos parâmetros. Outros podem fazer cópias ou redistribuir a obra e também podem traduzir, fazer remixes e elaborar novas histórias com base na original. Não permite: Toda nova obra feita deverá ser licenciada com a mesma licença, de modo que qualquer obra derivada não poderá ser usada para fins comerciais. by nc - Atribuição - Uso Não Comercial 8
  • 9. Permite: que outros remixem, adaptem, e criem obras derivadas, sendo vedado o uso com fins comerciais. As novas obras devem conter menção ao autor nos créditos. Não permite: Uso com fins comerciais., mas as obras derivadas não precisam ser licenciadas sob os mesmos termos. by nd - Atribuição - Não a Obras Derivadas Permite: redistribuição e o uso para fins comerciais e não comerciais, contanto que a obra seja redistribuída sem modificações e completa, e que os créditos sejam atribuídos ao autor. by-sa - Atribuição - Compartilhamento pela mesma Licença Comumente comparada a licenças de software livre. Permite: que outros remixem, adaptem, e criem obras derivadas ainda que para fins comerciais, contanto que o crédito seja atribuído ao autor e que essas obras sejam licenciadas sob os mesmos termos. by - Atribuição Esta é menos restritiva. Permite: que outros distribuam, remixem, adaptem ou criem obras derivadas, mesmo que para uso com fins comerciais, contanto que seja dado crédito ao autor pela criação original. 1.3.2 Linux tem licença GPL O Linux foi lançado sob uma licença que proibia qualquer uso comercial. Logo isso foi alterado para a licença GPL. Essa licença, detalhada aqui, permite a distribuição e até a venda de versões modificadas do Linux, mas requer que todas as cópias sejam lançadas dentro da mesma licença e acompanhadas do código fonte. Um grande parte do código do linux (incluindo as contribuições de Linus Torvalds) menciona apenas a GPL versão 2. Isso determina que o kernel esteja sob a versão 2 exclusivamente. O termo Linux refere-se ao núcleo (em inglês: "kernel") do sistema operativo. O termo também é usado pelos meios de comunicação e usuários para referir-se aos sistemas operacionais baseados no núcleo Linux agregado a outros programas. Segundo Tanenbaum e Silberschatz, um núcleo pode ser considerado o próprio sistema operativo, quando este é definido como um gerenciador de recursos de hardware. 1.3.3 Arquitetura O Linux é um núcleo monolítico: as funções do núcleo (escalonamento de processos, gerenciamento de memória, operações de entrada/saída, acesso ao sistema de arquivos) são executadas no espaço de núcleo. Uma característica do núcleo Linux é que algumas das funções (drivers de dispositivos, suporte à rede, sistema de arquivos, por exemplo) podem ser compiladas e executadas como módulos (em inglês: LKM - loadable kernel modules), que são bibliotecas compiladas separadamente 9
  • 10. da parte principal do núcleo e podem ser carregadas e descarregadas após o núcleo estar em execução. 1.3.4 Portabilidade Embora Linus Torvalds não tenha tido como objetivo inicial tornar o Linux um sistema portável, ele evoluiu nessa direção. Linux é hoje um dos núcleos de sistemas operativos mais portáveis, correndo em sistemas desde o iPaq (um computador portátil) até o IBM S/390 (um denso e altamente custoso mainframe). Os esforços de Linus foram também dirigidos a um diferente tipo de portabilidade. Portabilidade, de acordo com Linus, era a habilidade de facilmente compilar aplicações de uma variedade de código fonte no seu sistema; consequentemente, o Linux originalmente tornou-se popular em parte devido ao esforço para que os códigos-fonte GPL ou outros favoritos de todos corressem em Linux. O Linux hoje funciona em dezenas de plataformas, desde mainframes até um relógio de pulso, passando por várias arquitecturas: x86 (Intel, AMD), x86-64 (Intel EM64T, AMD64), ARM, PowerPC, Alpha, SPARC e etc, com grande penetração também em sistemas embarcados, como handhelds, PVR, consola de videojogos e centros multimídia, entre outros. 1.3.5 Termos de Licenciamento Inicialmente, Torvalds lançou o Linux sob uma licença de software que proibia qualquer uso comercial. Isso foi mudado de imediato para a GNU General Public License. Essa licença permite a distribuição e mesmo a venda de versões possivelmente modificadas do Linux mas requer que todas as cópias sejam lançadas dentro da mesma licença e acompanhadas do código fonte. Apesar de alguns dos programadores que contribuem para o núcleo permitirem que o seu código seja licenciado com GPL versão 2 ou posterior, grande parte do código (incluído as contribuições de Torvalds) menciona apenas a GPL versão 2. Isto faz com que o núcleo como um todo esteja sob a versão 2 exclusivamente, não sendo de prever a adoção da nova GPLv3. 1.3.6 Sistemas de arquivos suportados O Linux possui suporte de leitura e escrita a vários sistema de arquivos, de diversos sistemas operacionais, além de alguns sistemas nativos. Por isso, quando o Linux é instalado em dual boot com outros sistemas (Windows, por exemplo) ou mesmo funcionando como Live CD, ele poderá ler e escrever nas partições formatadas em FAT e NTFS. Por isto, Live CDs Linux são muito utilizados na manutenção e recuperação de outros sistemas operacionais. Entre os sistemas de ficheiros suportados pelo Linux, podemos citar FAT, NTFS, JFS, XFS, HPFS, Minix e ISO 9660 (sistema de ficheiros usado em CD-ROMs). Alguns sistemas de ficheiros nativos são, dentre outros, Ext2, Ext3, Ext4, ReiserFS e Reiser4.[5] Alguns sistemas de ficheiros com características especiais são SWAP, UnionFS, SquashFS, Tmpfs, Aufs e NFS, dentre outros. 1.3.7 Sistema Operacional Richard Stallman, fundador do projeto GNU para um sistema operacional livre.Logo que Linus Torvalds passou a disponibilizar o Linux, ou seja na sua versão 0.01, já havia suporte ao disco rígido, tela, teclado e portas seriais, o sistema de arquivos adotava o mesmo layout do Minix (embora não houvesse código do Minix no Linux), havia extensos trechos em assembly, e ela já era capaz de rodar 10
  • 11. o bash e o gcc. A linha guia quando implementei o Linux foi: fazê-lo funcionar rápido. Eu queria o núcleo simples, mas poderoso o suficiente para rodar a maioria dos aplicativos Unix.[6] O próprio usuário deveria procurar os programas que dessem funcionalidade ao seu sistema, compilá-los e configurá-los. Talvez por isso, o Linux tenha carregado consigo a etiqueta de sistema operativo apenas para técnicos. Foi neste ambiente que surgiu a MCC Interim Linux, do Manchester Computer Centre, a primeira distribuição Linux, desenvolvida por Owen Le Blanc da Universidade de Manchester, capaz de ser instalada independentemente em um computador. Foi uma primeira tentativa de facilitar a instalação do Linux. Desde o começo, o núcleo Linux incluía um sistema básico para chamadas do sistema e acesso aos dispositivos do computador. O núcleo de um sistema operativo define entre várias operações, o gerenciamento da memória, de processos, dos dispositivos físicos no computador e é uma parte essencial de qualquer sistema operacional utilizável, contudo para um sistema operacional adquirir funcionalidade são necessários também vários outros aplicativos que determinam funções específicas que aquele sistema será capaz de desenvolver, os aplicativos existentes em um sistema operacional com a única exceção do núcleo são determinados pelo usuário do computador, como por exemplo: interpretadores de comandos, gerenciadores de janelas, que oferecem respectivamente uma interface para o usuário do computador, CLI ou GUI, e outros aplicativos como editores de texto, editores de imagem, tocadores de som, e, mas não necessariamente, compiladores. A maioria dos sistemas inclui ferramentas e utilitários baseados no BSD e tipicamente usam XFree86 ou X.Org para oferecer a funcionalidade do sistemas de janelas X — interface gráfica. Assim como também oferecem ferramentas desenvolvidas pelo projeto GNU. No momento do desenvolvimento do Linux, vários aplicativos já vinham sendo reunidos pelo Projeto GNU da Free Software Foundation (‘Fundação Software Livre’), que embarcara em um subprojeto que ainda continua para obter um núcleo, o GNU Hurd. Porém devido a várias complicações o projeto GNU e demora em desenvolver o Hurd, Stallman acabou adotando o núcleo Linux como base para distribuir os programas do projeto GNU , não obstante diversas pessoas e instituições tiveram a mesma idéia e assim várias distribuições começaram a surgir baseadas no núcleo desenvolvido inicialmente por Linus. 1.4 Distribuições Ver artigo principal: Distribuições de Linux Atualmente, um Sistema Operacional (em Portugal Sistema Operativo) Linux ou GNU/Linux completo (uma "Lista de distribuições de Linux ou GNU/Linux") é uma coleção de software livre (e por vezes não-livres) criados por indivíduos, grupos e organizações de todo o mundo, incluindo o núcleo Linux. Companhias como a Red Hat, a SuSE, a Mandriva (união da Mandrake com a Conectiva) e a Canonical (desenvolvedora do Ubuntu Linux), bem como projetos de comunidades como o Debian ou o Gentoo, compilam o software e fornecem um sistema completo, pronto para instalação e uso. Patrick Volkerding também fornece uma distribuição Linux, o Slackware. As distribuições do Linux ou GNU/Linux começaram a receber uma popularidade limitada desde a segunda metade dos anos 90, como uma alternativa livre para os sistemas operacionais Microsoft Windows e Mac OS, principalmente por parte de pessoas acostumadas com o Unix na escola e no trabalho. O sistema tornou-se popular no mercado de Desktops e servidores, principalmente para a Web e servidores de bancos de dados. No decorrer do tempo, várias distribuições surgiram e desapareceram, cada qual com sua característica. Algumas distribuições são maiores outras menores, dependendo do número de aplicações e sua finalidade. Algumas distribuições de tamanhos menores cabem num disquete com 1,44 MB, outras precisam de vários CDs, existindo até algumas versões em DVD. Todas elas tem o seu público e sua finalidade, as pequenas (que ocupam poucos disquetes) são usadas para recuperação de sistemas danificados ou em monitoramento de redes de computadores. 11
  • 12. De entre as maiores, distribuídas em CDs, podem-se citar: Slackware, Debian, Suse, e Conectiva. O que faz a diferença é como estão organizadas e pré-configuradas as aplicações. A distribuição Conectiva Linux, por exemplo, tinha as suas aplicações traduzidas em português, o que facilitou que usuários que falam a Língua Portuguesa tenham aderido melhor a esta distribuição. Hoje esta distribuição foi incorporada à Mandrake, o que resultou na Mandriva. Para o português, existe também a distribuição brasileira Kurumin (Essa distribuição foi descontinuada pelo seu mantedor), construída sobre Knoppix e Debian, e a Caixa Mágica, existente nas versões 32 bits, 64 bits, Live CD 32 bits e Live CD 64 bits, e com vários programas open source: OpenOffice.org, Mozilla Firefox, entre outros. Existem distribuições com ferramentas para configuração que facilitam a administração do sistema. As principais diferenças entre as distribuições estão nos seus sistemas de pacotes, nas estruturas dos diretórios e na sua biblioteca básica. Por mais que a estrutura dos diretórios siga o mesmo padrão, o FSSTND é um padrão muito relaxado, principalmente em arquivos onde as configurações são diferentes entre as distribuições. Então normalmente todos seguem o padrão FHS (File Hierarchy System), que é o padrão mais novo. Vale lembrar, entretanto, que qualquer aplicativo ou driver desenvolvido para Linux pode ser compilado em qualquer distribuição que vai funcionar da mesma maneira. Quanto à biblioteca, é usada a Biblioteca libc, contendo funções básicas para o sistema Operacional Linux. O problema está quando do lançamento de uma nova versão da Biblioteca libc, algumas das distribuições colocam logo a nova versão, enquanto outras aguardam um pouco. Por isso, alguns programas funcionam numa distribuição e noutras não. Existe um movimento LSB (Linux Standard Base) que proporciona uma maior padronização. Auxilia principalmente vendedores de software que não liberam para distribuição do código fonte, sem tirar características das distribuições. O sistemas de pacotes não é padronizado. ArchLinux, Debian, Fedora, Mandriva, Mint, Opensuse, PCLinuxOS, Puppy, Sabayon, Slackware e Ubuntu são algumas das distribuições mais utilizadas actualmente, listadas aqui por ordem alfabética. Um exemplo de distribuição que corre num CD é o Kurumin Linux, criado por Carlos Eduardo Morimoto, baseada no Knoppix. De entre as distribuições consideradas mais difíceis de gerir (por preferirem assegurar a estabilidade tecnológica em detrimento da interface de utilizador), destacam-se a Debian, Gentoo e Slackware. Código Aberto e Programas Livres Um programa, assim como toda obra produzida atualmente, seja ela literária, artística ou tecnológica, possui um autor. Os Direitos sobre a idéia ou originalidade da obra do autor, que incluem essencialmente distribuição, reprodução e uso é feito no caso de um programa através de sua licença. Existem dois movimentos que regem o licenciamento de programas no mundo livre, os programas de código aberto e os programas livres. Os dois representados respectivamente pela OSI e pela FSF oferecem licenças para produção de software, sendo seus maiores representantes a licença BSD e a GPL. O Linux oferece muitos aplicativos de open source, contudo nem todos podem ser considerados programas livres, dependendo exclusivamente sob qual licença estes programas são distribuídos. Os programas distribuídos sob tais licenças possuem as mais diversas funcionalidades, como desktops, escritório, edição de imagem e inclusive de outros sistemas operacionais. Também existem organizações inclusive no mundo livre como a organização Linux Simples para o Usuário Final (SEUL) que tem como objetivo adotar a maior gama possível de aplicativos de alta qualidade produzidos sobre a GPL. É um projeto voluntário que atualmente se foca no aprendizado de Linux, seu uso na ciência e em documentos de advocacia, bem como gerenciar e coordenar projetos de desenvolvimento de aplicativos. Controvérsias quanto ao nome Linux foi o nome dado ao núcleo de sistema operacional criado por Linus Torvalds. Por extensão, 12
  • 13. sistemas operacionais que usam o núcleo Linux são chamados genericamente de Linux. Entretanto, a Free Software Foundation afirma tais sistemas operacionais são, na verdade, sistemas GNU, e o nome mais adequado para tais sistemas é GNU/Linux, uma vez que grande parte do código-fonte dos sistemas operacionais baseados em Linux são ferramentas do projeto GNU.[7] Há muita controvérsia quanto ao nome. Eric Raymond afirma, no Jargon File, que a proposta da FSF só conseguiu a "aceitação de uma minoria" e é resultado de uma "disputa territorial".[8] Linus Torvalds afirma que consideraria "justo" que tal nome fosse atribuído a uma distribuição do projeto GNU, mas que chamar os sistemas operacionais Linux como um todo de GNU/Linux seria "ridículo".[9] Linus disse não se importar sobre qual o nome usado, considera a proposta da GNU como "válida" ("ok") mas prefere usar o termo "Linux".[10] Sobre o símbolo O símbolo do software foi escolhido pelo seu criador, que achou a foto de um pinguim na internet. [11] Em 1996, muitos integrantes da lista de discussão "Linux-Kernel" estavam discutindo sobre a criação de um logotipo ou de um mascote que representasse o Linux. Muitas das sugestões eram paródias ao logotipo de um sistema operacional concorrente e muito conhecido. Outros eram monstros ou animais agressivos. Linus Torvalds acabou entrando nesse debate ao afirmar em uma mensagem que gostava muito de pingüins. Isso foi o suficiente para dar fim à discussão. Tux.Depois disso, várias tentativas foram feitas numa espécie de concurso para que a imagem de um pingüim servisse aos propósitos do Linux, até que alguém sugeriu a figura de um "pingüim sustentando o mundo". Em resposta, Linus Torvalds declarou que achava interessante que esse pingüim tivesse uma imagem simples: um pingüim "gordinho" e com expressão de satisfeito, como se tivesse acabado de comer uma porção de peixes. Torvalds também não achava atraente a idéia de algo agressivo, mas sim a idéia de um pingüim simpático, do tipo em que as crianças perguntam "mamãe, posso ter um desses também?". Ainda, Torvalds também frisou que trabalhando dessa forma, as pessoas poderiam criar várias modificações desse pingüim. Isso realmente acontece. Quando questionado sobre o porquê de pingüins, Linus Torvalds respondeu que não havia uma razão em especial, mas os achava engraçados e até citou que foi mordido por um "pingüim assassino" na Austrália e ficou impressionado como a mordida de um animal aparentemente tão inofensivo podia ser tão dolorosa. 1.4.1Distribuições de propósito geral ALT Linux v • e Arch Linux v • e Debian v • e BrDesktop v • e BRLix v • e 13
  • 14. Damn Small Linux v • e Freedows v • e Insigne GNU Linux v • e KeeP-OS v • e Knoppix v • e Kurumin v • e NG DreamLinux v • e Big Linux v • e gnuLinEx v • e Resulinux v • e Rxart v • e Satux v • e Skolelinux v • e SuiteTelecentro v • e Ubuntu v • e Alinex v • e Fluxbuntu v • e gNewSense v • e Gobuntu v • e Goobuntu v • e Jolicloud v • e Kubuntu v • e Kubuntu Netbook Remix v • e Linux Educacional v • e 3.0 Linux Mint v • e Ubuntu Netbook Remix v • e Ubuntu Studio v • e Ultimate Edition v • e Xubuntu v • e ZeVenOS v • e Xandros v • e Foresight Linux v • e Gentoo v • e Guaranix v • e Librix v • e Litrix Linux v • e Sabayon Linux v • e Tutoo v • e GoboLinux v • e Linux From Scratch v • e Neo Dizinha v • e OpenSuSE v • e Puppy Linux v • e Red Hat Linux v • e Caixa Mágica v • e CentOS v • e Fedora v • e Ekaaty v • e Insigne GNU Linux v • e - versão 3 Libertas v • e Muriqui v • e Vixta v • e Mandriva v • e PCLinuxOS v • e Yellow Dog Linux v • e Resulinux v • e Slackware Linux v • e GoblinX v • e Slax v • e Vector Linux v • e 14
  • 15. [editar] Distribuições LiveCD As distribuições em LiveCD rodam direto do cd-rom. ALT Linux v • e Arch Linux v • e Arco-Debian Linux v • e BRLix v • e (Baseado no Debian) Ambiente similar ao Windows XP/Vista Big Linux v • e Caixa Mágica LiveCD v • e CentOS v • e CLive v • e (baseada em Conectiva Linux) Damn Small Linux v • e Dizinha Linux v • e (baseada no Kurumin) Dreamlinux v • e Fedora v • e Fenix Linux v • e Gentoo v • e GoblinX v • e Gnoppix v • e (baseada em Knoppix) Incognito v • e Insigne GNU Linux v • e (baseada em Debian/Fedora) Litrix Linux v • e Linux Mint v • e Linux Educacional v • e 3.0 Linius (Basado em caixa mágica) Kya Linux v • e (baseada em Slackware Linux) Kalango Linux v • e (baseada no Kurumin) Kanotix v • e (baseada em Knoppix) KeeP-OS v • e Knoppix v • e (baseada em Debian Linux) Kubuntu v • e Kurumin v • e (baseada em Knoppix) Kurumin Games v • e (Baseada no Kurumin) NUbuntu v • e LinuxFX v • e Mandriva v • e Mepis v • e Moblin v • e Morphix v • e Neo Dizinha v • e NimbleX v • e openSUSE v • e Paipix v • e PCLinuxOS v • e PHLAK v • e (Baseado no Morphix) Poseidon Linux v • e (baseada no Ubuntu) (live-DVD) Puppy Linux v • e Quantix v • e Resulinux v • e Sabayon Linux v • e Sacix v • e Satux v • e (Baseada em Debian ) Slax v • e (baseada em Slackware Linux) SliTaz (distribuição completa e minimalista) (Live-CD) Super OS v • e Tatui x v • e Ubuntu v • e (baseada em Debian Linux) Vixta v • e (projeto baseado no Fedora com aparencia do Windows Vista) Yoper v • e [editar] Distribuições de propósito especial 15
  • 16. andLinux v • e , versão do Ubuntu que roda integrada ao Windows junto com o Explorer. Ångström v • e - Desenvolvida para o console portátil Pandora. Android v • e - Sistema operacional voltada para smartphones, desenvolvida pela Google. Arm-Linux v • e BackTrack v • e (Fusão do Whax com Auditor Security Collection) Bootable Business Card v • e BrazilFW v • e Coyote Linux v • e Cytrun Linux v • e Dyne:Bolic v • e Edubuntu v • e Embedded Debian v • e Endian Firewall v • e EOS Enhanced Operating System v • e - Desenvolvida para automatizar instalação de produtos. F.I.R.E v • e FREESCO v • e GeexBox v • e Helix v • e - distribuição baseada em Ubuntu,dedicada à investigação ou ciência forense informática. Indymix v • e IPCop v • e Linux Educacional v • e - Voltados para uso de professores, gestores e alunos da rede pública de ensino brasileira. Live Android v • e - É um projeto que visa a utilização do sistema Android para PC's. Mikrotik v • e Musix v • e Mythbuntu v • e Openfiler v • e Pentoo v • e Portable Ubuntu for Windows v • e - Outra versão do Ubuntu que roda integrada ao Windows junto com o Explorer. Progeny Debian v • e Sentry Firewall v • e Skolelinux v • e SliTaz - Distribuição voltada para computadores antigos e/ou com baixo desempenho. Sysresccd v • e - Distro com ferramentas essenciais para manutenção em geral Terabeauts v • e - Distro em disquete destinada à criação e manutenção de sistemas de arquivos The Linux Router Project v • e Tupiserver v • e Ubuntu Studio v • e μClinux v • e [editar] Desktops Desktop padrão KDE 4.3 Desktop Gnome 2.20 Desktop do Xfce - GoblinXO sistema operacional Linux possui dois tipos de interfaces para que o usuário possa interagir com o sistema operacional. As interfaces gráficas e a interface de linha de comando. As interfaces gráficas foram desenvolvidas inicialmente por Douglas C. Engelbart e também chamadas de ambientes gráficos, Desktop's ou GUI (Graphical User Interfaces). Alguns exemplos para o Linux são: Kde Gnome LXDE Xfce Fluxbox Blanes Blackbox Windowmaker 16
  • 17. Afterstep Enlightenment IceWM FVWM Kahakai ZappWM dwm SithWM Whim Karmen Sawfish XIGE Framer Mavosxwm WindowLab OpenBox xmonad [editar] Desktops 3D Os desktops 3D, são na verdade, plugins para adicionar efeitos incríveis às outras interfaces: AIGLX/Beryl XGL/Compiz Compiz Fusion[1] Metisse KWin gerenciador de janelas do KDE com efeitos nativos. [editar] Sistemas móveis (Mobile) Motomagx - sistema especialmente desenvolvido para celulares Motorola LinuxMod - sistema baseado no Motomagx [editar] Interpretadores de comandos Usando o Bash - FramebufferRepresentando a interface de acesso no modo texto, ou CLI (Command Line Interface) do Linux, eles são a principal forma de controle remoto e gerenciamento do sistema. Exemplos de interfaces de linha de comando, também chamados de Shell's ou interpretadores de comandos: sh ksh pdksh bash csh tcsh zsh ash dash rc rsh ssh screen 1.4.2. Usando o Linux Para aqueles que nunca usaram o Linux, iremos expor aqui os conceitos preliminares estritamente necessários para se programar usando o GTK. Portanto, esta primeira seção, onde iremos apenas apresentar alguns pontos que consideramos fundamentais, é dedicada aos iniciantes e àqueles que ainda não estão familiarizados com o sistema. Se esta não é a sua situação, vá direto para a próxima seção. Nosso primeiro principal objetivo será motivá-lo a usar o GTK. Esperamos que qualquer um que tenha noções básicas de C sinta-se encorajado a usar o GTK após ler este tutorial, independentemente do 17
  • 18. sistema operacional que vinha usando até então. Por isso, é muito importante para nós ter acesso a possíveis dúvidas e comentários. Teremos o maior prazer em responder. Partimos do princípio de que você tem o Linux instalado e funcionando corretamente. Caso você ainda precise passar por essa etapa, recomendamos a instalação de uma das diversas distribuições disponíveis, entre elas a da Red Hat (www.redhat.com.br), uma das mais fáceis de ser instalada e atualizada. Em seguida, leia o texto "Linux Installation and Getting Started" (http://www.infomagic.com/linux/ldp/LDP/gs/gs.html), ou "Linux Installation HOWTO" (http://www.cube.net/Linux-HOWTO/Installation-HOWTO.html) de Matt Welsh, ou ainda Linux Installation HOWTO (http://www.linuxdoc.org/HOWTO/Installation-HOWTO.html"), de Eric S. Raymond. Parte desses textos corresponde aos capítulos iniciais do livro Dominando o LINUX, de Matt Welsh e Lar Kaufman, cuja leitura é muito recomendada. Visite http://www.infomagic.com/catalog2.htm para obter mais informações sobre o livro. O site de referência ao Linux é: http://www.linux.org/. Vale a pena visitá-lo de vez em quando! 1.4.3. O que é o Linux O Linux é um sistema multiusuário e multitarefa, o que significa que várias pessoas podem trabalhar de uma vez, e que este é capaz de realizar diversas tarefas ao mesmo tempo. Além disso, o Linux é um sistema operacional em constante evolução. Isto implica num eterno aprendizado por parte de seus usuários. Quando se usa um computador em que o sistema LINUX foi instalado, a primeira coisa que se deve fazer é informar o seu login, e em seguida a sua senha, o que lhe dará acesso a todos os recursos disponíveis. Em geral, apenas o usuário denominado "root" tem acesso irrestrito a todo o sistema, e é ele quem administra o restante das configurações. Uma vez digitado o login e a senha, você terá acesso ao prompt. Esse prompt (que aqui será simbolizado por um sinal de $) é gerado por um programa chamado shell (literalmente, casca ou aparência exterior) que é responsável por lidar com os seus comandos. 1.4.4. O que é um comando No Linux, os comandos são arquivos que possuem permissão para serem executados. A maioria dos comandos inerentes ao Linux encontra-se no diretório /bin. Assim como no DOS, existe uma lista de diretórios onde o shell pesquisa à procura de comandos. Essa lista de diretórios se chama path (ou 18
  • 19. caminho). Para ver como está o seu caminho atual, digite: $echo $PATH Uma observação muito importante é que, diferentemente do DOS, o Linux não pesquisa automaticamente no seu diretório atual a procura de comandos a serem executados. O diretório atual é simbolizado por um ponto, e o diretório pai é simbolizado por dois pontos. Se você quiser executar um arquivo chamado "nomearq.exe", que se encontra no diretório atual, e informar apenas: $ nomearq receberá uma mensagem do tipo "File not found". Você deverá informar explicitamente ao sistema que execute o arquivo "nomearq.exe", que se encontra no diretório atual: $./nomearq.exe Uma alternativa seria incluir um ponto ( . ) na variável $PATH. No bash, use: $ export PATH=$PATH:. Esse comando irá tornar o seu caminho igual ao caminho antigo mais o diretório atual (o ponto). No tcsh, forneça: $ set path = ( $PATH . ) 1 1.4.4 Linguagens de Programação 1.4.1. Como programar com o gcc O gcc é um compilador C/C++ poderoso. Isto se deve ao fato de que o C é a linguagem nativa do Linux. O gcc (GNU C Compiler) funciona a partir da linha de comandos do shell. Para saber todas as opções que esse compilador oferece, consulte a página manual do mesmo. Visite a página www.gnu.org para saber mais sobre o projeto GNU. A sintaxe básica para se chamar o gcc é: $ gcc [opções] [arquivos] Muitas opções do gcc consistem de mais de um caracter. Por isso, diferentemente da maioria dos outros comandos do shell, cada opção deve ser precedida pelo seu próprio hífen. Você não pode agrupar opções depois de um único hífen. Os dois comandos a seguir, por exemplo, não são idênticos: $ gcc -p -g test.c $ gcc -pg test.c Se você compilar um arquivo e não especificar nenhum parâmetro na linha de comando, o gcc irá 19
  • 20. automaticamente criar um arquivo executável, e irá chamá-lo de a.out. Para testar, clique aqui para baixar o arquivo teste.c (o tradicional "Hello World!" escrito em C), copie-o para o diretório adequado e lá digite: $ gcc teste.c Para especificar um outro nome para o arquivo de saída, deve-se usar a opção -o (do inglês, output). Para compilar um programa chamado teste.c e gerar um executável chamado hello, digite o seguinte: $ gcc -o hello teste.c O processo de gerar um arquivo executável se divide em duas etapas. Primeiro é gerado o código objeto, a partir do código fonte. Esse arquivo objeto é praticamente equivalente ao código de máquina. Em seguida, o arquivo objeto é linkado ("ligado") para produzir um executável. Essa etapa consiste em informar ao programa onde encontrar as bibliotecas de que este necessita para funcionar. Existem dois tipos de bibliotecas: as estáticas e as compartilhadas. As bibliotecas estáticas são anexadas ao arquivo a ser executado, de modo que passam a fazer parte do programa final. Isso, no entanto, pode ser pouco prático, caso muitos programas usem as mesmas sub-rotinas de bibliotecas em comum. Nesses casos, costuma-se usar as bibliotecas compartilhadas. Quando o programa for ligado a uma biblioteca compartilhada, ao invés de ser anexado todo o código da biblioteca ao programa, será apenas fornecida uma referência para a mesma no disco, de modo que o carregador possa encontrá-la durante a execução. Bibliotecas Para o compilador saber onde encontrar os arquivos de inclusão e as bibliotecas, use as opções -I e -L respectivamente, seguidas pelos diretórios onde encontram-se os mesmos. Por exemplo: $ gcc -I/usr/include -L/usr/lib -o exemplo exemplo.c -lstuff Neste exemplo, a opção -I informa ao gcc para que acrescente o diretório /usr/include ao caminho onde serão pesquisados os arquivos de inclusão. A opção -L informa ao gcc que acrescente o diretório /usr/lib ao caminho onde serão pesquisadas as bibliotecas. Por fim, a opção -lstuff indica ao gcc que ligue a biblioteca libstuff.a ao executável. Por padrão todas as bibliotecas começam com as iniciais "lib". As bibliotecas que terminam com a extensão ".a" são estáticas, e as que terminam com extensão ".so" são compartilhadas. Por padrão, o compilador irá tentar primeiro ligar as bibliotecas compartilhadas. Para especificar que você deseja usar bibliotecas estáticas, utilize a opção -static.1 Mais opções... É recomendável que se ative a opção -w ao se usar o gcc. Esta ativa todas as mensagens de aviso e de erro que o compilador possa gerar. Pode-se especificar até que ponto o gcc irá processar o código fonte. A opção -c indica ao gcc que apenas gere o código objeto. A opção -S indica ao gcc que pare após gerar o código assembly. É possível ainda otimizar o seu código fonte, usando as opções -O, que fará otimizações básicas, e -O2, que trará otimizações avançadas. Ao ativar essas opções, o processo de compilação se tornará mais lento, mas o seu executável será mais rápido. Finalmente, para poder futuramente depurar ou analisar detalhes sobre o código, use a opção -g, se for usar o gdb (Gnu Debugger), -p se for usar o prof ou ainda -pg, se você for usar o gprof. 3 Para saber como compilar programas que fazem uso da biblioteca GTK, consulte a seção 2.2.2. -------------------------------------------------------------------------------- 20
  • 21. 1.4.5. Makefiles (arquivos make) Se você estiver trabalhando num projeto com diversos arquivos, o make é um programa bastante útil, que lhe poderá poupar muito tempo. Ao compilar o seu projeto usando o make, este irá consultar um registro de dependências entre os seus arquivos e atualizar apenas aqueles que foram alterados desde a última atualização. O formato geral de uma entrada de um arquivo make é: destino: dependências (TAB) lista de comandos Note que a lista de comandos deve começar com uma tabulação, e não com espaços. Digamos, por exemplo, que você deseja construir um programa chamado felicidade, que dependa dos arquivos saude.c e amor.c. Você deverá editar um arquivo chamado makefile, ou Makefile, como preferir, contendo as seguintes três entradas: felicidade: amor.o saude.o gcc -o felicidade amor.o saude.o amor.o: amor.c gcc -c amor.c saude.o: saude.c gcc -c saude.c Agora, digite na linha de comando: $ make felicidade O programa make irá procurar no seu diretório atual um arquivo chamado, literalmente, makefile ou Makefile. Ao encontrar o arquivo que você acabou de fornecer, ele irá interpretar, a partir da primeira linha do mesmo, que "felicidade" é construída a partir de amor.o e saude.o. Recursivamente, o make irá verificar que amor.o depende de amor.c, e que saude.o depende de saude.c. Sempre que um dos arquivos de dependência for alterado, ou não existir, a lista de comandos referentes a ele será executada. Para saber se um arquivo foi alterado, o make consultará a data e a hora associados ao mesmo pelo sistema operacional. Para saber quando determinado arquivo foi modificado pela última vez, execute o comando: ls -l. 1 1.4.5. Depuração com o gdb O gdb (GNU Debugger) possui muitos comandos que lhe irão permitir executar diferentes operações de depuração. Clique aqui para obter algumas delas. E lembre-se! Ligue as opções de depuração quando compilar o programa, a fim de poder posteriormente depurá-lo. 21
  • 22. 1.5. Instalação de novos programas Instalar novos programas no seu ambiente Linux é uma tarefa simples, principalmente se você tiver a sua disposição um dos gerenciadores de pacotes como o RPM ou o DPKG. 1.5.1. RPM Se você usa a distribuição da Red Hat ou alguma outra que dê suporte ao RPM, eis aqui algumas das funções mais comuns: rpm <parâmetros> <nome do pacote> -i : instalação básica - U : atualização de um programa -- nodeps : não procura por dependências -- help : lista opções - q : (do inglês, query) mostra informações sobre o pacote - e : exclui um pacote Para verificar se você tem instalado o pacote gtk voltado para desenvolvedores, por exemplo, digite: $ rpm -q gtk+-devel seguido da tecla tab e enter. Caso não possua, baixe o arquivo clicando aqui e, no diretório adequado, digite na linha de comando: $ rpm -ivh gtk+-devel seguido da tecla tab e enter. 1.5.2. DPKG Usado para manusear pacotes da Debian. dpkg <parâmetros> <nome do pacote> -i : instalar -r : remover 22
  • 23. 1.5.3. Arquivos .tar.gz ou .tgz Digitando, na linha de comando, no diretório adequado tar -xzvg nome_do_arquivo o arquivo será descompactado. Provavelmente você encontrará um arquivo chamado README ou INSTALL. Leia-o e siga as instruções recomendadas. Caso não exista este arquivo, tente digitar simplesmente $ ./configure $ make no prompt do shell, para compilar, e depois $ make install para instalar (normalmente como root). 2 1.6. Roteiro de algumas curiosidades Finalmente, apresentamos aqui um roteiro para você dar os primeiros passo com o GTK. a. Instalar o Linux. b. a partir do shell inicializar uma seção do X (digitando startx, kde, ou o nome de algum outro gerenciador de janelas que esteja instalado e lhe agrade). c. instalar o GTK. Se preferir, instale o Gimp (no Red-Hat, basta executá-lo pela primeira vez, clicando no seu ícone), que automaticamente o GTK será instalado. d. abrir uma janela do xterm (shell) ou, alternativamente, efetuar login num outro console virtual. e. usar esse console virtual ou o xterm para inicializar um editor de textos e digitar o código fonte de seu programa. f. compilar o programa, usando o gcc ou o make. g. executá-lo, no sistema de janelas X, digitando o nome do programa criado, numa janela do xterm. Não se esqueça da observação importante 1.6.1. Alguns comandos disponíveis O formato geral de um comando é: comando [-[opção1][opção2]...] parâmetro 23
  • 24. onde o que está entre colchetes é opcional. A familiarização com os comandos do Linux é obtida com a experiência. Em tempo, iremos apenas apresentar a lista de alguns comandos básicos, sua finalidade, sintaxe e parâmetros. Para obter mais informações sobre qualquer comando, basta consultar as páginas manuais, digitando no prompt "man" seguido do nome do comando. Por exemplo: $man ls. A tabela abaixo lista alguns dos principais comandos do Linux, suas finalidades, sintaxes e parâmetros: 2 Comando Finalidade Sintaxe Parâmetros ls list Lista o conteúdo de um diretório. ls -lar --color diretório -l: lista longa -a: lista arquivos ocultos -r: lista recursivamente --color: ativa cores cd change directory Troca de diretório. cd diretório rm remove Remove arquivos e diretórios. rm -irf arquivo -i: apaga confirmando -r: apaga recursivamente -f: apaga forçadamente cp copy Copia arquivos. cp fonte destino mkdir make directory Cria um diretório. mkdir diretório rmdir remove directory Apaga um diretório. rmdir diretório touch Cria um arquivo vazio. touch arquivo 24
  • 25. more Exibe conteúdo do arquivo. more arquivo clear Limpa a tela. clear su Muda de login. su [-] login find Procura arquivos em diretórios. find caminho expr. --name: procura pelo nome ps process Mostra os processos rodando na máquina. ps - aux grep Procura padrões em um arquivo. grep expr. arquivo -a: todos os processos -x: mostra processos que não foram iniciados no console -u: nome do usuário e hora de início df disk free Mostra espaço em disco livre. df partição du disk usage Mostra uso de disco. du -s arquivo -s: mostra apenas o total pwd print working directory Mostra o nome do diretório corrente. pwd finger Mostra informações sobre um usuário. finger usuário 25
  • 26. passwd password Definir senha. passwd logout Sair do sistema. logout halt Desliga o sistema. halt Observe que no comando ls, a opção color deve ser precedida por dois hífens. Nos comados em geral, qualquer parâmetro que possua mais de um caracter (no caso, a palavra "color" possui cinco caracteres) deve ser passado com dois hífens na frente. Se quisermos mostrar uma lista longa dos arquivos, incluindo os ocultos, com cores, devemos digitar: $ ls -la --color Atenção! Em um sistema monousuário, antes de desligar o computador sempre execute o comando halt e aguarde a mensagem "System halted!". Em muitos sistemas apenas o usuário root pode executar o comando halt. Para colocar qualquer comando em segundo plano, basta proceder normalmente e digitar um & antes de pressionar enter. 1.6.2. Terminais virtuais No prompt do shell, ao pressionar a tecla Alt à esquerda e uma das teclas de função, de F1 a F7, você poderá navegar pelos consoles virtuais. Cada um deles está associado a uma nova tela. Desse modo pode-se trabalhar com atividades diferentes em seções distintas. Observação: numa seção do X, pressione Ctrl, Alt e uma das teclas de função, de F1 a F7, para saltar para um outro console. Em geral, o sistema de janelas X é carregado no terminal virtual de número sete. Dentro de um console virtual, um recurso muito útil para se navegar no sistema é o uso da tecla tab para completar seus comandos em geral. Experimente digitar: $ cd /usr/sb e tecle tab em seguida. Se você usa o shell bash, ksh, tcsh ou zsh, este irá preencher para você as informações que faltam na sua linha de comando. Caso exista mais de uma possibilidade de término de palavra, pressione tab mais uma vez e aparecerão todas as opções disponíveis. 1 26
  • 27. 1.6.3. O sistema de arquivos e diretórios importantes Algo que você certamente mais cedo ou mais tarde irá querer fazer é acessar a unidade de disco, cd- rom ou até mesmo uma partição que contenha dados do Windows 95/98. Para isso, é necessário inicialmente "montá-la" usando o comando mount. A sua sintaxe é: mount -f tipo dispositivo ponto_de_montagem Um exemplo de utilização, para acessar os dados do Windows 98 contidos na partição de número um do terceiro disco rígido, ou seja, do dispositivo chamado hdc1, seria: $ mkdir /win98 $ mount -f vfat /dev/hdc1 /win98 Feito isso, nesse exemplo os dados da nova unidade montada podem ser acessados a partir do diretório win98. Uma observação importante é que nem todos os usuários podem usar o mount em todas as situações. Consulte a página de manual do mount para maiores detalhes. Para acessar a unidade de disco, por exemplo, você poderá recorrer aos mtools, caso estejam instalados no seu sistema. Digite man mtools na linha de comando para obter mais informações. Os diretórios que guardam os arquivos de sistema do Linux, em sua maioria, são padronizados. Alguns diretórios importantes são: /home /bin /usr /usr/bin /usr/spool /dev /usr/sbin /sbin /etc O diretório "root" (raiz). /home Abriga os diretórios dos usuários. Por exemplo, um usuário cujo login seja "ana" provavelmente quando entrar no sistema será encaminhado direto para o diretório /home/ana, e terá acesso a todos os dados contidos no mesmo. /bin Guarda os programas e comandos básicos do Linux. bin é um mnemônico para "binaries" (binários), ou seja, arquivos executáveis. Na realidade todos os arquivos armazenados num computador estão em formato binário. Infelizmente, usa-se como jargão, por motivos históricos, o termo "arquivos binários" como sendo sinônimo de arquivos executáveis. /usr Armazena muitos outros diretórios com conteúdo orientado aos usuários. /usr/docs Documentos, incluindo informação útil sobre o Linux. /usr/man Páginas de manual, acessadas digitando man <comando> /usr/games 27
  • 28. Jogos! /usr/bin Neste diretório estão contidos programas voltados aos usuários do sistema em geral. /usr/spool Este diretório possui vários subdiretórios. Entre eles mail, que guarda mensagens, spool, onde são guardados arquivos a serem impressos e uucp que abriga arquivos copiados entre máquinas Linux. /dev No Linux, tudo é acessado por meio de arquivos! O diretório /dev armazena dispositivos. Estes, na realidade, são pontes para os verdadeiros componentes físicos da máquina. Por exemplo, se você copia para /dev/fd0, na realidade você está enviando dados para uma unidade de disco. O seu terminal é um arquivo /dev/tty. Partições do disco rígido são da forma /dev/hd0. Até a memória do sistema é um dispositivo! Um dispositivo famoso é o /dev/null, que corresponde a uma lixeira. Toda informação desviada para /dev/null é descartada. /usr/sbin Aqui estão os arquivos de administração do sistema. /sbin Neste diretório estão contidos arquivos executados em geral automaticamente pelo sistema operacional. /etc Este diretório e seus subdiretórios abrigam muitos arquivos de configuração. Estes arquivos são na maioria do tipo texto, e podem ser editados para alterar parâmetros do sistema. 3 1.6.4. X Window System 28
  • 29. 1.6.5. Conceitos sobre o X O X Window System, ou Sistema de Janelas X, é basicamente um conjunto padronizado de rotinas de tratamento de tela, desenvolvido no MIT, que permite a criação de interfaces gráficas independentes do hardware. 4 Neste esquema, você pode observar que os aplicativos trocam dados com o Sistema de Janelas X, o qual passa as informações para o vídeo. Não existe um acesso direto ao monitor de vídeo por parte das aplicações, tornando-se estas mais facilmente portáveis. Isto é, o mesmo programa pode ser executado sobre qualquer hardware sem ser modificado ou recompilado. Além disso, o X Window System é um sistema de janelas que pode executar aplicações em rede de forma transparente. Portanto, vários aplicativos, que podem estar rodando em máquinas distribuídas por toda a rede, geram simultaneamente texto e gráficos na tela de um determinado usuário. 5 No prompt de seu shell, digite startx. Se o X for inicializado, e o cursor aparecer no vídeo, você está pronto para utilizá-lo. Caso contrário, será necessário configurá-lo. Clique aqui para fazer o download de um tutorial a fim de aprender a configurar o seu Sistema de Janelas X. 1.6.6. Os Gerenciadores de Janelas Note que, ao definirmos o Sistema de Janelas X, nos referimos a um conjunto de rotinas padronizadas para acessar o vídeo. Em outras palavras, o Sistema de Janelas X é apenas um protocolo. Em cima desse protocolo é que rodam todos os aplicativos. Inclusive os gerenciadores de janelas (ou window managers), que são responsáveis por gerar a interface externa do sistema ao usuário. 29
  • 30. É função dos gerenciadores de janelas prover: - barras de título, bordas e outras decorações para as janelas das aplicações - ícones uniformes - um meio uniforme de se mover e redimensionar as janelas - uma interface uniforme para se mover entre as aplicações Entre os window managers mais famosos podemos citar o fvwm, o KDE ( www.kde.org ) e o Window Maker (www.windowmaker.org) entre vários outros (este último foi desenvolvido em grande parte na Universidade Federal do Rio Grande do Sul). É o window manager que determinará a aparência do seu sistema X, portanto escolha o que mais lhe agradar. 1.6.7. Editores de texto Em praticamente todos os sistemas Linux estão instalados o vim e o Emacs. Por isso, é de grande utilidade saber utilizar bem um desses dois editores. Se você tem instalado o X, sua distribuição deve provavelmente incluir também o gvim e uma versão para o X do emacs. Para aprender a usar o vim, visite http://www.vim.org/. O emacs também possui a sua página em http://www.emacs.org Note que o vim e o emacs são editores de textos simples. Para formatar os textos, existem os processadores de textos, entre eles o TEX/Latex, o groff e o Textinfo. Por meio de comandos inseridos no texto o usuário pode transformar um documento simples em um documento formatado usando um desses processadores. 30