FACULDADE DE TECNOLOGIA OSWALDO CRUZ
FACULDADE DE TECNOLOGIA OSWALDO CRUZ
SISTEMAS DE INFORMAÇÃO
SISTEMAS DE INFORMAÇÃO
SISTEMA GNU/LINUX
SISTEMA GNU/LINUX
André Luiz Ribeiro Simões
André Luiz Ribeiro Simões
Renato Pinheiro Destro
Renato Pinheiro Destro
Danilo Amaral Mota
Danilo Amaral Mota
Alexandre Ideo Suzuki
Alexandre Ideo Suzuki
Ivanildo Souza
Ivanildo Souza
São Paulo São Paulo 17/11/2005 - 16h33 17/11/2005 - 16h33SUMÁRIO
SUMÁRIO
1 INTRODUÇÃO...3 1 INTRODUÇÃO...3 1.2 UM KERNEL...3 1.2 UM KERNEL...32 A HISTÓRIA DO SISTEMA LINUX...5
2 A HISTÓRIA DO SISTEMA LINUX...5
2.2 UM BREVE HISTÓRICO DO UNIX...5
2.2 UM BREVE HISTÓRICO DO UNIX...5
2.3 O PADRÃO POSIX...6
2.3 O PADRÃO POSIX...6
2.4 O MINIX...7
2.4 O MINIX...7
2.5 A 2.5 A HISTÓRIA DO SOFTWHISTÓRIA DO SOFTWARE LIVRE...ARE LIVRE...8...8
2.6 O PROJETO GNU...10 2.6 O PROJETO GNU...10 2.7 O KERNEL LINUX...13 2.7 O KERNEL LINUX...13 2.8 TUX, O MASCOTE...15 2.8 TUX, O MASCOTE...15
2.9 SISTEMA LINUX OU SISTEMA GNU/LINUX?...16
2.9 SISTEMA LINUX OU SISTEMA GNU/LINUX?...16
3 CARACTERÍSTICAS DE UM SISTEMA LINUX...17
3 CARACTERÍSTICAS DE UM SISTEMA LINUX...17
3.2 SISTEMA MODULARIZADO...18 3.2 SISTEMA MODULARIZADO...18 3.3 GERENCIAMENTO DE PROCESSOS...19 3.3 GERENCIAMENTO DE PROCESSOS...19 4 O SISTEMA DE ARQUIVOS...20 4 O SISTEMA DE ARQUIVOS...20 4.2 ESTRUTURA DE DIRETÓRIOS...21 4.2 ESTRUTURA DE DIRETÓRIOS...21
5 INTERFACE COM O USUÁRIO...22
5 INTERFACE COM O USUÁRIO...22
5.2 INTERATIVA...23 5.2 INTERATIVA...23 5.3 NÃO-INTERATIVA...23 5.3 NÃO-INTERATIVA...23 6. USUÁRIOS E GRUPOS...24 6. USUÁRIOS E GRUPOS...24
7. ARQUIVOS E SUAS PERMISSÕES...25
7. ARQUIVOS E SUAS PERMISSÕES...25
8. X WINDOW (AMBIENTE GRÁFICO)...26
8. X WINDOW (AMBIENTE GRÁFICO)...26
8.1 O QUE É X WINDOW?...26
8.1 O QUE É X WINDOW?...26
8.2 INICIANDO O X...26
8.2 INICIANDO O X...26
8.3 TERMINAL VIRTUAL (CONSOLE)...27
8.3 TERMINAL VIRTUAL (CONSOLE)...27
9. COMO OBTER AJUDA NO SISTEMA...28
9. COMO OBTER AJUDA NO SISTEMA...28
9.1 PÁGINAS DE MANUAL...28
9.1 PÁGINAS DE MANUAL...28
9.2 INTERNET...30
9.2 INTERNET...30
9.2.1 PÁGINAS DE 9.2.1 PÁGINAS DE REFERÊNCIA NA REFERÊNCIA NA INTERNETINTERNET...30...30
10. SURGIMENTO DAS DISTRIBUIÇÕES...31
10. SURGIMENTO DAS DISTRIBUIÇÕES...31
10.2. PADRONIZAÇÃO...31
10.2. PADRONIZAÇÃO...31
10.3. DIFERENÇAS ENTRE AS DISTRIBUIÇÕES...32
10.3. DIFERENÇAS ENTRE AS DISTRIBUIÇÕES...32
10.31. PRINCIPAIS DISTRIBUIÇÕES DE GNU/LINUX...33
10.31. PRINCIPAIS DISTRIBUIÇÕES DE GNU/LINUX...33
10.3.1. DEBIAN...33
10.3.1. DEBIAN...33
10.3.2. RED HAT...34
10.3.3. FEDORA...34 10.3.3. FEDORA...34 10.3.4. MANDRIVA...35 10.3.4. MANDRIVA...35 10.3.4.1 MANDRAKE...35 10.3.4.1 MANDRAKE...35 10.3.4.2 CONECTIVA...36 10.3.4.2 CONECTIVA...36 10.3.5.SUSE...36 10.3.5.SUSE...36 10.3.6. SLACKWARE...37 10.3.6. SLACKWARE...37
10.3.7. LINUX FROM SCRATCH...38
10.3.7. LINUX FROM SCRATCH...38
10.3.8. GENTOO...39 10.3.8. GENTOO...39 11. O GERENCIADOR DE PACOTES...39 11. O GERENCIADOR DE PACOTES...39 11.1. OS PACOTES RPM...39 11.1. OS PACOTES RPM...39 11.2. OS PACOTES DEBIAN...41 11.2. OS PACOTES DEBIAN...41
111.3. FERRAMENTAS DE GERENCIAMENTO DE 1.3. FERRAMENTAS DE GERENCIAMENTO DE PPACOTES...ACOTES...42...42
11.3.1. O DPKG...42 11.3.1. O DPKG...42 11.3.2. O APT...42 11.3.2. O APT...42 12. BIBLIOGRAFIA...43 12. BIBLIOGRAFIA...43 13. CONCLUSÃO...44 13. CONCLUSÃO...44 ÍNDICE DE ILUSTRAÇÕES ÍNDICE DE ILUSTRAÇÕES FIGURA 1: HARDWARE FIGURA 1: HARDWARE, KERNEL E SHELL..., KERNEL E SHELL...4...4
FIGURA 2: DENNIS RITCHIE (ESQUERDA), KEN THOMPSON (DIREITA) E O MAINFRAME ONDE FIGURA 2: DENNIS RITCHIE (ESQUERDA), KEN THOMPSON (DIREITA) E O MAINFRAME ONDE NASCEU O UNIX ... 5
NASCEU O UNIX ... 5
FIGURA 3: DR. ANDREW STUART TANENBAUM, AUTOR DO LIVRO SISTEMAS FIGURA 3: DR. ANDREW STUART TANENBAUM, AUTOR DO LIVRO SISTEMAS OPERACIONAIS...7
OPERACIONAIS...7
FIGURA 4: RICHARD STA FIGURA 4: RICHARD STALLMAN, FUNDADOR DO PROJETO GNU...LLMAN, FUNDADOR DO PROJETO GNU...8...8
FIGURA 5: O PDP-10 DA DEC EXIGIA A ASSINATURA DE UM NDA PARA FIGURA 5: O PDP-10 DA DEC EXIGIA A ASSINATURA DE UM NDA PARA UTILIZAÇÃO...9
UTILIZAÇÃO...9
FIGURA 6: LOGOTIPO DO PROJETO GNU... FIGURA 6: LOGOTIPO DO PROJETO GNU...11...11
FIGURA 7: LINUS TORV FIGURA 7: LINUS TORVALDS, CRIADOR ALDS, CRIADOR DO KERNEL LINUX...13DO KERNEL LINUX...13
FIGURA 8: TUX, O MASCOTE E SIMBOLO DO SISTEMA...15
FIGURA 8: TUX, O MASCOTE E SIMBOLO DO SISTEMA...15
FIGURA 9: HARDWARE, KERNELLINUX E FIGURA 9: HARDWARE, KERNELLINUX E APLICAAPLICATIVOS GNU...16TIVOS GNU...16
FIGURA 10: TIPOS DE TERMINAIS DE UM SISTEMA LINUX...18
FIGURA 10: TIPOS DE TERMINAIS DE UM SISTEMA LINUX...18
FIGURA 1 FIGURA 11: PROCESSAMENTO INTERNO 1: PROCESSAMENTO INTERNO DO KERNEL-LINUX...20DO KERNEL-LINUX...20
FIGURA 12: OS ESTADOS DE UM PROCESSO E OS COMANDOS DO ESCALONADOR DE FIGURA 12: OS ESTADOS DE UM PROCESSO E OS COMANDOS DO ESCALONADOR DE PROCESSOS...20
PROCESSOS...20
FIGURA 13: ESQUEMA DE RELAÇÃO ENTRE OS PROCESSOS E O FIGURA 13: ESQUEMA DE RELAÇÃO ENTRE OS PROCESSOS E O SERVIDOR X...27SERVIDOR X...27
1 INTRODUÇÃO
1 INTRODUÇÃO
Este trabalho tem como objetivo dar uma visão geral da arquitetura de um sistema Este trabalho tem como objetivo dar uma visão geral da arquitetura de um sistema operacional GNU/Linux. Vamos abordar desde a sua criação, sua arquitetura, suas operacional GNU/Linux. Vamos abordar desde a sua criação, sua arquitetura, suas motivações, objetivos e arriscar
motivações, objetivos e arriscar algumas previsões.algumas previsões.
Não pretendemos que este sistema é melhor que seus concorrentes mas quermos Não pretendemos que este sistema é melhor que seus concorrentes mas quermos mostar que nos dias atuais o
mostar que nos dias atuais o GNU/Linux é tão funcional quanto seus concorrentes.GNU/Linux é tão funcional quanto seus concorrentes.
1.2
1.2 UM
UM KERNEL
KERNEL
Todo sistema operacional é formado por um
Todo sistema operacional é formado por um kernel kernel 11, que é o núcleo do sistema, que é o núcleo do sistema
operacional responsável pela comunicação com o
operacional responsável pela comunicação com o hardwarehardware, ele é composto por , ele é composto por
chamadas de acesso aos recursos da
chamadas de acesso aos recursos da máquina.máquina. O
O kernel kernel pode ser entendido com uma série de arquivos escritos em linguagem C epode ser entendido com uma série de arquivos escritos em linguagem C e
em linguagem Ass
em linguagem Assembly que constituem o núcleo do embly que constituem o núcleo do sistema operacional. É o kernelsistema operacional. É o kernel que controla todo o acesso ao hardware do computador. Ele pode ser visto como que controla todo o acesso ao hardware do computador. Ele pode ser visto como uma interface entre os programas e todo o hardware. Cabe ao kernel as tarefas de uma interface entre os programas e todo o hardware. Cabe ao kernel as tarefas de permitir que todos os processos sejam executados pela CPU e permitir que estes permitir que todos os processos sejam executados pela CPU e permitir que estes consigam compartilhar a
consigam compartilhar a memória do computador.memória do computador. A camada seguinte é a
A camada seguinte é a interfaceinterface, é o nome genérico dado ao interpretador de, é o nome genérico dado ao interpretador de
comandos, esta camada é formada por uma classe de programas específicos. comandos, esta camada é formada por uma classe de programas específicos. Exi
Existestem m gragrandendes s difdifereerençanças s ententre re asas interfacesinterfaces da da sissistemtemas as opeoperacracionionais ais dada Microsoft
Microsoft , como o DOS e Windows e os sistemas que seguem o padrão POSIX, como o DOS e Windows e os sistemas que seguem o padrão POSIX
(Unix) que usam uma
(Unix) que usam uma interfaceinterfacedo tipodo tipo shell shell ..
Pode parecer estranho começar falando do
Pode parecer estranho começar falando do kernel kernel mas o objetivo é mostar que estamas o objetivo é mostar que esta
é uma das partes mais importantes de um sistema operacional. A alguns anos o é uma das partes mais importantes de um sistema operacional. A alguns anos o
kernel
kernel erera a um um cocompmpleleto to dedescscononhehecicido do ataté é memesmsmo o papara ra mumuititos os tétécncnicicos os dede
informática, mas nos últimos 14 anos um sistema fez deste ilustre desconhecido o informática, mas nos últimos 14 anos um sistema fez deste ilustre desconhecido o pivô de um dos maiores debates ideológicos, comerciais e filosóficos dos últimos pivô de um dos maiores debates ideológicos, comerciais e filosóficos dos últimos tempos.
tempos.
Sem exageros podemos dizer que por causa de um
Sem exageros podemos dizer que por causa de um kernel kernel de sistema operacionalde sistema operacional
est
está á proprovodvodandando o mudmudananças ças drádrástisticas cas em em metmetedoedologlogias ias de de tratrabalbalho, ho, visvisão ão dede ne
negócgóciosios, , parparadiadigmgmas as de de desdesenvenvolvolvimeimento nto e e comcomercercialializaização ção de de propropripriedaedadede intelectual, desde pequenas comunidades a grandes corporações multinacionais. intelectual, desde pequenas comunidades a grandes corporações multinacionais. É um pouco desta história que estamos vivendo, muitas vezes sem se dar conta, É um pouco desta história que estamos vivendo, muitas vezes sem se dar conta, que pretendemos mostrar com este trabalho.
que pretendemos mostrar com este trabalho. Figura 1:
Figura 1: HardwarHardware, Kernel e e, Kernel e Shell.Shell. Hardware Hardware Hardware Hardware Kernel Kernel Kernel Kernel Interface Interface Interface Interface
2
2 A
A HISTÓRIA
HISTÓRIA DO SISTEMA
DO SISTEMA LINUX
LINUX
Para compreender melhor a arquitetura, a forma de desenvolvimento, a comunidade Para compreender melhor a arquitetura, a forma de desenvolvimento, a comunidade e a filosofia do sistema GNU/Linux é necessário conhecer a sua historia desde o e a filosofia do sistema GNU/Linux é necessário conhecer a sua historia desde o início.
início.
2.2
2.2 UM
UM BREVE HI
BREVE HISTÓRICO
STÓRICO DO UN
DO UNIX
IX
Porque citar o Unix se
Porque citar o Unix se o objetivo da pesquisa é o o objetivo da pesquisa é o sistema GNU/Linux? Porque contar sistema GNU/Linux? Porque contar a origem do sistema do pinguim sem citar seus modelos seria como contar a história a origem do sistema do pinguim sem citar seus modelos seria como contar a história do Brasil ignorando toda história anterior
do Brasil ignorando toda história anterior a independência.a independência.
As raízes do sistema UNIX encontram-se no final da década de 1960 e início da de As raízes do sistema UNIX encontram-se no final da década de 1960 e início da de 1970, o ambiente dominante na época eram os
1970, o ambiente dominante na época eram os mainframesmainframes2 2 com uma série decom uma série de
terminais ligados a ele. Esta arquitetura era caríssima e de difícil acesso, por isso terminais ligados a ele. Esta arquitetura era caríssima e de difícil acesso, por isso era necessário um sistema operacional multitarefa e principalmente multiusuário. era necessário um sistema operacional multitarefa e principalmente multiusuário.
22 MainfrMainframe é um supercame é um supercomputaomputadordor, ou comput, ou computador de grande portador de grande porte, dedicade, dedicado normalmo normalmente aoente ao processamento de um volume grande de informações.
Para compreenção da evolução deste sistema observe sua cronologia do UNIX: Para compreenção da evolução deste sistema observe sua cronologia do UNIX:
•
• 1965: Os Laboratórios Bell com o MIT e a General Eletric começam um1965: Os Laboratórios Bell com o MIT e a General Eletric começam um
programa grandioso de criar um novo sistema operacional, o
programa grandioso de criar um novo sistema operacional, o Multics.Multics.
•
• 1970: A AT&T insatisfeita com o progresso do Multics cortou o projeto e1970: A AT&T insatisfeita com o progresso do Multics cortou o projeto e
al
alguguns ns prprogograramamadodoreres s da da BeBell ll quque e trtrababalalhahavavam m no no prprojojeteto, o, enentãtão o eleleses implementaram a primeira versão do sistema de arquivos do UNIX em um implementaram a primeira versão do sistema de arquivos do UNIX em um computador PDP-7 com alguns usuários, Brian Kernighan deu o nome do computador PDP-7 com alguns usuários, Brian Kernighan deu o nome do novo sistema de UNIX como deboche em relação ao
novo sistema de UNIX como deboche em relação ao Multics.Multics.
•
• 1970: Tempo zero do UNIX.1970: Tempo zero do UNIX. •
• 1973: O UNIX é reescrito em C, uma nova linguaguem de programação,1973: O UNIX é reescrito em C, uma nova linguaguem de programação,
sendo de alto nível fi
sendo de alto nível ficava fácil portar novas máquinas.cava fácil portar novas máquinas.
•
• 1974: At&T licencia o UNIX para 1974: At&T licencia o UNIX para universidades e empresas.universidades e empresas. •
• 1977: cerca de 500 computadores com UNIX no 1977: cerca de 500 computadores com UNIX no mundo todo.mundo todo. •
• 1981984: 4: CerCerca ca de de 100100.00.000 0 comcomputputadoadores res co co UNIUNIX X rodrodandando o em em difdifereerententess
plataformas. plataformas.
•
• 1988: A 1988: A AAT&T T&T Sun se unem para desenvolver SolarSun se unem para desenvolver Solaris e UnixWare.is e UnixWare.
Figura 2: Dennis Ritchie (esquer
Figura 2: Dennis Ritchie (esquerda), da), Ken Thompson (dirKen Thompson (direita) e oeita) e o Mainframe onde nasceu o Unix.
2.3
2.3 O
O P
PADRÃO
ADRÃO POSIX
POSIX
A norma POSIX especifica as interfaces de usuário e do software ao sistema A norma POSIX especifica as interfaces de usuário e do software ao sistema operacional. POSIX é o nome de uma família de normas relacionadas definidas pelo operacional. POSIX é o nome de uma família de normas relacionadas definidas pelo IEEE
IEEE33 e designada formalmente por IEEE 1003, sendo a designação internacionale designada formalmente por IEEE 1003, sendo a designação internacional
da norma é ISO/IEC 9945. Estes padrões são a base dos sistemas inspirados e/ou da norma é ISO/IEC 9945. Estes padrões são a base dos sistemas inspirados e/ou derivados do Unix.
derivados do Unix.
A normalização das especificações POSIX surgiram de um projeto, iniciado por volta A normalização das especificações POSIX surgiram de um projeto, iniciado por volta de
de 19198585, , quque e titinhnha a cocomo mo obobjejetivtivo o nonormrmalalizizar ar a a ininteterfrfacace e de de prprogograramamaçãção o dede aplicações para software desenhado para correr em variantes do sistema operativo aplicações para software desenhado para correr em variantes do sistema operativo UNIX. O termo POSIX foi sugerido por Richard Stallman em resposta a um pedido UNIX. O termo POSIX foi sugerido por Richard Stallman em resposta a um pedido da IEEE de um nome memorável. É uma sigla aproximada de Portable Operating da IEEE de um nome memorável. É uma sigla aproximada de Portable Operating System Interface, com o X a representar a herança que o interface de programação System Interface, com o X a representar a herança que o interface de programação de aplicações tem do sistema UNIX.
de aplicações tem do sistema UNIX.
2.4
2.4 O
O MINIX
MINIX
O MINIX é uma versão do Unix, livre e com o código fonte disponível. Isso significa O MINIX é uma versão do Unix, livre e com o código fonte disponível. Isso significa que qualquer programador experiente pode fazer alterações nele. Ele foi criado que qualquer programador experiente pode fazer alterações nele. Ele foi criado originalmente para uso educacional, para quem quisesse estudar o Unix "em
originalmente para uso educacional, para quem quisesse estudar o Unix "em casa".casa". Seu autor, Dr. And
Seu autor, Dr. Andrew Stuart rew Stuart TTanenbaum o escreveu como anenbaum o escreveu como material de material de apoio ao apoio ao livrolivro Sistemas Operacionais, no decorrer da leitura é passado os códigos fonte dos Sistemas Operacionais, no decorrer da leitura é passado os códigos fonte dos programas e serviços do sistema e ao final tem-se um
programas e serviços do sistema e ao final tem-se um sistema operacional "completo".
sistema operacional "completo".
O problema é que até o final da década de 1980, o O problema é que até o final da década de 1980, o MI
MININIX X erera a susupoportrtadado o apapenenas as popor r cocommpuputatadodoreress eq
equipuipadados os cocom m o o prprococesessasadodoreres s InIntetel l 80808686, , esestete
33 InstitInstituto de Engeuto de Engenharia Elnharia Elétrica e Eétrica e Eletrôniletrônica ou IEEca ou IEEE (pronunE (pronuncia-se Icia-se I-3-E ) é uma o-3-E ) é uma organizarganizaçãoção profissional e não-lucrativa. Um de seus papéis mais importantes é o estabelecimento de padrões profissional e não-lucrativa. Um de seus papéis mais importantes é o estabelecimento de padrões para formatos de computadores e dispositivos.
para formatos de computadores e dispositivos.
Figura 3: Dr. Andrew Stuart Figura 3: Dr. Andrew Stuart
Tanenbaum, autor do livro Tanenbaum, autor do livro Sistemas Operacionais. Sistemas Operacionais.
equipamento estava disponível nas universidades mas já não um equipamento muito equipamento estava disponível nas universidades mas já não um equipamento muito comum neste época onde os computadores pessoais eram equipados com os comum neste época onde os computadores pessoais eram equipados com os processadores Intel 80386, desta forma forma o MINIX ficava limitado ao ambiente processadores Intel 80386, desta forma forma o MINIX ficava limitado ao ambiente acadêmico porque na época não havia interesse do Dr. Tanenbaum em atualizá-lo acadêmico porque na época não havia interesse do Dr. Tanenbaum em atualizá-lo porque ele estava trabalhando em um outro livro e apesar do Minix ter seus porque ele estava trabalhando em um outro livro e apesar do Minix ter seus códigos-fontes disponíveis com o livro, na época sua licença de distribuição o vinculava ao fontes disponíveis com o livro, na época sua licença de distribuição o vinculava ao livro, que por ventura pertencia a editora, sendo assim o MINIX não podeia ser livro, que por ventura pertencia a editora, sendo assim o MINIX não podeia ser alterado por mais ninguém.
alterado por mais ninguém.
Hoje o MINIX é distribuído sob uma licença própria (que é um clona da licança BSD Hoje o MINIX é distribuído sob uma licença própria (que é um clona da licança BSD original).
original).
Mas o que tem haver
Mas o que tem haver o Minix com o GNU/Linux?o Minix com o GNU/Linux?
A história do sistema GNU/Linux vem se misturando a história de muitos projetos, A história do sistema GNU/Linux vem se misturando a história de muitos projetos, como UNIX, MINIX e como veremos agora com o
como UNIX, MINIX e como veremos agora com o projetoprojetoGNU GNU ..
2.5
2.5 A
A HISTÓRIA DO
HISTÓRIA DO SOFTWARE LIVRE
SOFTWARE LIVRE
Na década de 1970 era comum entre os programadores e pesquisadores das Na década de 1970 era comum entre os programadores e pesquisadores das un
univiverersisidadadedes s trotrocacarerem m ininfoformrmaçaçõeões s sosobrbre e susuas as pepesqsquiuisasas s e e isisto to ininclcluíuía a osos programa para computadores desenvolvidos para auxiliar este desenvolvimento. A programa para computadores desenvolvidos para auxiliar este desenvolvimento. A lógica aplicada era que se cada programador tivesse que desenvolver a sua visão lógica aplicada era que se cada programador tivesse que desenvolver a sua visão de uma mesmo solução cada um estaria reinventado a roda centenas de vezes, é de uma mesmo solução cada um estaria reinventado a roda centenas de vezes, é muito mais fácil compartilhar o conhecimento e adaptar o que outra pessoas fez que muito mais fácil compartilhar o conhecimento e adaptar o que outra pessoas fez que chegue próximo a nossa necessidade, do que sempre começar tudo do zero.
chegue próximo a nossa necessidade, do que sempre começar tudo do zero.
E foi neste ambiente que a maioria das tecnologias que usamos hoje foram criadas, E foi neste ambiente que a maioria das tecnologias que usamos hoje foram criadas, em um determinado momento o laboratório de Inteligência Artificial do Instituto de em um determinado momento o laboratório de Inteligência Artificial do Instituto de Tecnologia de Massachusets (o famoso MIT) ganhou uma impressora da XEROX, Tecnologia de Massachusets (o famoso MIT) ganhou uma impressora da XEROX, um modelo de uma tecnologia nova utilizando laser no lugar de uma matriz de um modelo de uma tecnologia nova utilizando laser no lugar de uma matriz de pontos, porém esta impressora apresentava problemas constantes de atolamento do pontos, porém esta impressora apresentava problemas constantes de atolamento do
papel, como os programadores não tinham conhecimento técnico da mecânica da papel, como os programadores não tinham conhecimento técnico da mecânica da impressora eles pensaram que poderiam concerta-la modificando no código-fonte do impressora eles pensaram que poderiam concerta-la modificando no código-fonte do driver como a impressora controla os motores de
driver como a impressora controla os motores de passo que movimentam o papel.passo que movimentam o papel. U
Um m dedeststes es prprooggrarammadadorores es eera ra RiRicchahard rd MM.. Stallman, ele tinha um amigo no Instituto Carneige Stallman, ele tinha um amigo no Instituto Carneige Mellon que recebeu da XEROX o código-fonte do Mellon que recebeu da XEROX o código-fonte do driver, ele não pensou duas vezes e ligou para o driver, ele não pensou duas vezes e ligou para o seu amigo pedindo que lhe enviasse o código, seu amigo pedindo que lhe enviasse o código, pa
para ra susua a susurprpreresa sa e e dedececepçpção ão seseu u amamigo igo nãnãoo ate
atendendeu u seu seu pedpedido ido alealegangando do ter ter assassinainado do umum contrato
contrato NDANDA44 com a XEROX que o impedia decom a XEROX que o impedia de
fornecer o código para qualquer pessoa. fornecer o código para qualquer pessoa.
Isto o deixou profundamente irritado, porque sempre houve colaboração entre os Isto o deixou profundamente irritado, porque sempre houve colaboração entre os programadores das universalidades, porque isso tinha que mudar? Mas o pior ainda programadores das universalidades, porque isso tinha que mudar? Mas o pior ainda estava por vir, em 1982 o laboratório comprou um computador PDP-10 da
estava por vir, em 1982 o laboratório comprou um computador PDP-10 da DEC, esteDEC, este co
compmpututadador or ututililizizadada a um um sisiststemema a opopereracacioionanal l prpropoprierietátário rio e e nãnão o o o sisiststememaa de
desesenvnvololvivido do pepelos los prprogograramamadodoreres s do do MIMITT, , quque e erera a o o sisiststemema a ututililizizadado o nonoss computadores qu
computadores que antecederam o PDPe antecederam o PDP-10. -10. Na mesma époNa mesma época outros computadoreca outros computadoress como o VAX também utilizavam sistemas operacionais proprietários, o problema era como o VAX também utilizavam sistemas operacionais proprietários, o problema era que para utilizar estes computadores era a
que para utilizar estes computadores era a obrigatoriedade de assinar umobrigatoriedade de assinar umNDANDA..
4
4 NDA, NDA, Non DiNon Disclususclusure re AgreemAgreement ou ent ou ContraContrato de Nto de Não Reveão Revelação.lação.
Figura 4: Richard Stallman, Figura 4: Richard Stallman, fundador do projeto GNU. fundador do projeto GNU.
Richard Stallman se recusava assinar este contrato porque acreditava que não Richard Stallman se recusava assinar este contrato porque acreditava que não compartilhar seus códigos era um retrocesso, apesar das vantagens econômicas compartilhar seus códigos era um retrocesso, apesar das vantagens econômicas qu
que e o o memercrcadado o de de ininfoformrmátáticica a quque e esestatava va ememerergigindndo, o, elele e acacrerediditatava va ququee conhecimento não deve ser tratado como produto mas como um bem comum e os conhecimento não deve ser tratado como produto mas como um bem comum e os
NDAs
NDAs estavam acabando com a comunidade colaborativa que ele vivia até então.estavam acabando com a comunidade colaborativa que ele vivia até então.
Ele lutou até as últimas conseqüências, porém chegou um momento onde ele teve Ele lutou até as últimas conseqüências, porém chegou um momento onde ele teve que fazer uma escolha, ou assinava um NDA para continuar nos projetos que MIT que fazer uma escolha, ou assinava um NDA para continuar nos projetos que MIT estava envolvido e com isso poderia ganhar muito dinheiro ou pedia demissão e estava envolvido e com isso poderia ganhar muito dinheiro ou pedia demissão e deixaria de programar que sempre foi sua paixão, para ele ainda era uma opção deixaria de programar que sempre foi sua paixão, para ele ainda era uma opção melhor do que abandonar seus princípios e se
melhor do que abandonar seus princípios e se vender para a indústria que vender para a indústria que estava seestava se formando em torno dos
formando em torno dos computadores.computadores.
2.6
2.6 O
O PROJETO
PROJETO GNU
GNU
Para Richard Stallman ser tornou óbvio
Para Richard Stallman ser tornou óbvio que ele deveria criar que ele deveria criar um sistema operacionalum sistema operacional livre 100%, mas ele não podia fazer isso como funcionário do MIT, ou o instituto livre 100%, mas ele não podia fazer isso como funcionário do MIT, ou o instituto poderia exigir para si os direitos sobre todo o código criado por ele, então ele pediu poderia exigir para si os direitos sobre todo o código criado por ele, então ele pediu demissão.
demissão.
Figura 5: O PDP-10 da DEC exigia a assinatura de um NDA para Figura 5: O PDP-10 da DEC exigia a assinatura de um NDA para
utilização. utilização.
Para
Para a arquiteta arquitetura do sistemura do sistema ele escolha ele escolheu o padrão POSIeu o padrão POSIX, ele escolX, ele escolheu esteheu este padrão porque já haviam muitos programadores para a plataforma UNIX e isso padrão porque já haviam muitos programadores para a plataforma UNIX e isso facilitaria para conquistar novos contribuidores, não financeiros mas contribuidores facilitaria para conquistar novos contribuidores, não financeiros mas contribuidores de código.
de código.
O nome escolhido para o projeto foi
O nome escolhido para o projeto foi GNU GNU 5 5 que significaque significa GNU GNU isis Not Not Unix Unix , afinal ele, afinal ele
estava criando um sistema
estava criando um sistema Unix Unix queque nãonão eraera oo Unix Unix e este tipo de “brincadeira” ée este tipo de “brincadeira” é
muito comum no universo
muito comum no universo hacker hacker ..
O desenvolvimento do sistema GNU começou em 1984, um sistema operacional é O desenvolvimento do sistema GNU começou em 1984, um sistema operacional é composto por diversos programas, editores de texto, cliente de e-mail, interfaces composto por diversos programas, editores de texto, cliente de e-mail, interfaces com usuário, camadas de protocolos, compiladores, etc. Para que este sistema com usuário, camadas de protocolos, compiladores, etc. Para que este sistema fosse livre de qualquer processo judicial era necessário que cada um desses fosse livre de qualquer processo judicial era necessário que cada um desses programas fosse escrito a partir do ZERO e foi exatamente isso que ele fez, ele programas fosse escrito a partir do ZERO e foi exatamente isso que ele fez, ele convidou dezenas de voluntário e conseguiu a permissão do MIT para continuar a convidou dezenas de voluntário e conseguiu a permissão do MIT para continuar a utilizar seus laboratórios.
utilizar seus laboratórios.
O primeiro programa do projeto GNU a ficar pronto foi o GNU Emacs, um software O primeiro programa do projeto GNU a ficar pronto foi o GNU Emacs, um software que é um editor de textos, um cliente de e-mail, entre outras funcionalidades, o que é um editor de textos, um cliente de e-mail, entre outras funcionalidades, o Emacs já era conhecido e existiam muitas pessoas interessadas em usa-lo, então Emacs já era conhecido e existiam muitas pessoas interessadas em usa-lo, então Stallman resolveu distribuí-lo da seguinte forma, quem quisesse o Emacs deveria Stallman resolveu distribuí-lo da seguinte forma, quem quisesse o Emacs deveria pagar US$ 150,00, porém a grande diferença era que ao pagar esta quantia quem pagar US$ 150,00, porém a grande diferença era que ao pagar esta quantia quem co
compmprarasssse e o o EmEmacacs s recrecebebereria ia umuma a fifita ta cocom m o o prprogograrama ma no no foformrmatato o bibinánáririoo
55 GNU é um GNU é um acrônimacrônimo recurso recursivo, o G ivo, o G da siglda sigla GNU sia GNU signifignifica GNU (ca GNU (pronúncpronúncia-seia-seGuinú Guinú ).). Figura 6: Logotipo do projeto GNU.
(executável), os códigos-fonte e toda a documentação disponível para ele, tutoriais, (executável), os códigos-fonte e toda a documentação disponível para ele, tutoriais, manuais e uma licença que dava aos usuários do
manuais e uma licença que dava aos usuários do Emacs quatro liberdades básicas:Emacs quatro liberdades básicas:
•
• Liberdade 1: A liberdade de executar o programa, Liberdade 1: A liberdade de executar o programa, para qualquer propósito;para qualquer propósito;
•
• Liberdade 2: A liberdade de estudar como o programa funciona, e adaptá-loLiberdade 2: A liberdade de estudar como o programa funciona, e adaptá-lo
para as
para as suas necessisuas necessidadesdades. Acesso ao . Acesso ao códigcódigo-fono-fonte te é é um pré-requisum pré-requisito ito parapara esta liberdade.
esta liberdade.
•
• Liberdade 3: A liberdade de redistribuir cópias de modo que você possaLiberdade 3: A liberdade de redistribuir cópias de modo que você possa
ajudar ao seu próximo. ajudar ao seu próximo.
•
• LiLibeberdrdadade e 4: 4: A A lilibeberdrdadade e de de apapererfefeiçiçoaoar r o o prprogograramama, , e e lilibeberarar r os os seseusus
aperfeiçoamentos, de modo que toda a comunidade se beneficie. Acesso ao aperfeiçoamentos, de modo que toda a comunidade se beneficie. Acesso ao código-fonte é um pré-requisito para esta
código-fonte é um pré-requisito para esta liberdade.liberdade.
Mas como uma empresa ou alguém poderia usar este software e modifica-lo e Mas como uma empresa ou alguém poderia usar este software e modifica-lo e vende-lo sem garantir estas quatro liberdades, Richard Stallman criou também o vende-lo sem garantir estas quatro liberdades, Richard Stallman criou também o conceito de Copyleft (uma brincadeira com o termo Copyright), na licença idealizada conceito de Copyleft (uma brincadeira com o termo Copyright), na licença idealizada por Stallman ao utilizar um software ou parte de um software que lhe tenha sido por Stallman ao utilizar um software ou parte de um software que lhe tenha sido fornecido com as quatro liberdades básicas, você deve redistribuí-lo concedendo as fornecido com as quatro liberdades básicas, você deve redistribuí-lo concedendo as mesmas liberdades que recebeu.
mesmas liberdades que recebeu.
Esta “longa” história marca o surgimento do movimento do Software Livre como Esta “longa” história marca o surgimento do movimento do Software Livre como conhecido hoje em dia, mas como pôde ser observado o conceito não era novo, conhecido hoje em dia, mas como pôde ser observado o conceito não era novo, compartilhar programas ou trecho de códigos de programas era algo considerado compartilhar programas ou trecho de códigos de programas era algo considerado natural, com o nascimento da indústria de software, a motivação por dinheiro natural, com o nascimento da indústria de software, a motivação por dinheiro transformou o ato dos programadores de se ajudar compartilhando conhecimento, transformou o ato dos programadores de se ajudar compartilhando conhecimento, algo que antes era natural e espontâneo em um crime comparado ao crime de algo que antes era natural e espontâneo em um crime comparado ao crime de saquear
saquear embarcaçõesembarcações.. A popularidade do projeto
A popularidade do projeto GNU GNU , cresceu e o volume dos seus contribuidores cresceu, cresceu e o volume dos seus contribuidores cresceu
j
considerável de aplicativos básicos para colocar um sistema em plena atividade, considerável de aplicativos básicos para colocar um sistema em plena atividade, mas o principal elemento de um sistema não estava pronto,
mas o principal elemento de um sistema não estava pronto, ookernel kernel ..
Na realidade o projeto
Na realidade o projeto GNU GNU tem umtem um kernel kernel , seu nome é, seu nome é Hurd Hurd , e esta sendo, e esta sendo
desenvolvido com uma arquitetura de
desenvolvido com uma arquitetura de micro-kernel micro-kernel , nesta arquitetura cada elemento, nesta arquitetura cada elemento
do
do kernel kernel é independente do seu núcleo (acesso a dispositivos, driver, etc...). Estesé independente do seu núcleo (acesso a dispositivos, driver, etc...). Estes
elemendos são executados como
elemendos são executados como DaemonsDaemons6 6 e são chamados automaticamente peloe são chamados automaticamente pelo
kernel
kernel principal somente quando principal somente quando necessário.necessário.
Esta arquitetura é muito moderna e já vou pivô de um famoso debate entre o Dr. Esta arquitetura é muito moderna e já vou pivô de um famoso debate entre o Dr. Andrew Tanenbaum e Linux Torvalds, apesar de ser considerada por muitos como o Andrew Tanenbaum e Linux Torvalds, apesar de ser considerada por muitos como o futuro dos sistemas operacionais, na arquitetura de micro-kernel é extremamente futuro dos sistemas operacionais, na arquitetura de micro-kernel é extremamente dificil depurar os programas compilados sob ela, tamanho a dificuldade de se dificil depurar os programas compilados sob ela, tamanho a dificuldade de se mapear a troca de mensagens entre os
mapear a troca de mensagens entre os DaemonsDaemons o que acontece no núcleo doo que acontece no núcleo do
sistema. sistema.
Por causa desta dificuldade o Hurd ainda está um pouco longe de ser tornar tão Por causa desta dificuldade o Hurd ainda está um pouco longe de ser tornar tão funcional quando o Linux, mas seu desenvolvimento nunca foi interrompido.
funcional quando o Linux, mas seu desenvolvimento nunca foi interrompido.
2.7
2.7 O
O KERNEL
KERNEL LINUX
LINUX
No final da década de 1980, Linus Benedict Torvalds, aluno da Universadade de No final da década de 1980, Linus Benedict Torvalds, aluno da Universadade de Helsinque, na Finlândia,
Helsinque, na Finlândia, recebeu uma recomerecebeu uma recomendação de leitura de seu profendação de leitura de seu professor dessor de sistemas ope
sistemas operacionais, a recomracionais, a recomendação era o endação era o livro Sistemas Opelivro Sistemas Operacionais do racionais do DrDr.. Andrew Stuart Tanenbaum.
Andrew Stuart Tanenbaum.
Apesar de estudar o MINIX na uni
Apesar de estudar o MINIX na univesidade não era possível fazer o mesmo em casavesidade não era possível fazer o mesmo em casa po
porqrque ue os os únúnicicos os cocompmpututadadorores es disdispoponíníveveis is na na épépococa a ereram am eqequiuipapadodos s cocomm pr
prococesessasadodores res InIntetel l 808038386, 6, cocomo mo viviststo o ananteterioriormrmenentete, , neneststa a épépococa a o o MIMININIXX suportava apenas processadores 8086.
suportava apenas processadores 8086.
66 ProgramPrograma executa executado com a fiado com a finalidadnalidade de adminie de administrar as sostrar as solicitalicitações de um sções de um serviço oerviço ou outrou outro programa.
D
Diaiantnte e ddesesse se imimppasassse, e, LiLinunus s TToorvrvalaldds s reresosollveveuu desenvolver um
desenvolver um kernel kernel a partir do zero, estea partir do zero, este kernel kernel seriaseria
um
um clclonone e do do MIMININIX X quque e popodederiria a seser r exexececututadado o emem computadores com processadores 80386. E após perder computadores com processadores 80386. E após perder al
algugummas as sesemmananas as dedentntro ro de de cacasasa, , elele e coconsnsegeguiuiuu de
desensenvolvolver ver umum kernel kernel quque e coconsnsegeguiuia a exexececututar ar oo
compilador desenvolvido pelo projeto
compilador desenvolvido pelo projeto GNU GNU e alguns dee alguns de
seus aplicativos básicos. seus aplicativos básicos. C
Coom m uumm kernel kernel incincomomplepleto, to, ententretaretanto nto tottotalmalmententee
funcional, Linus percebeu que desenvolver um sistema funcional, Linus percebeu que desenvolver um sistema
operacional completo era um trabalho praticamente impossível para uma única operacional completo era um trabalho praticamente impossível para uma única pessoa e seguindo os princípios defendidos pela
pessoa e seguindo os princípios defendidos pela FSF FSF e pelo projetoe pelo projeto GNU GNU , Linus, Linus
resolveu distribuir o código fonte e toda a documentação disponível do seu projeto resolveu distribuir o código fonte e toda a documentação disponível do seu projeto sob a licença
sob a licença GPLGPL e em 5 de outube em 5 de outubro de 199ro de 1991, as 5 hora1, as 5 horas e s e 41 min41 minutoutos, s, LinLinusus
enviou uma mensagem para a lista de distribuição COMP.OS.MINIX da Usenet, enviou uma mensagem para a lista de distribuição COMP.OS.MINIX da Usenet, di
divuvulglganando do a a veversrsão ão 0.0.02 02 do do LiLinunux x (d(de e LiLinunus s + + UnUnixix), ), veveja ja a a rereprprododuçução ão dada mensagem:
mensagem:
"From: "Linus Benedict Torvalds" <torvalds@klaava.Helsinki.FI>
"From: "Linus Benedict Torvalds" <torvalds@klaava.Helsinki.FI>
Data: 5 Oct 91 05:41:06 GMT
Data: 5 Oct 91 05:41:06 GMT
Local: Sab 5 out 1991 03:41
Local: Sab 5 out 1991 03:41
Subject: Free minix-like kernel sources for 386-AT
Subject: Free minix-like kernel sources for 386-AT
Do you pine for the nice days of minix-1.1, when men were men and wrote
Do you pine for the nice days of minix-1.1, when men were men and wrote
their own device drivers? Are you without a nice project and just dying
their own device drivers? Are you without a nice project and just dying
to cut your teeth on a OS you can try to modify for your needs? Are you
to cut your teeth on a OS you can try to modify for your needs? Are you
finding it frustrating when everything works on minix? No more
finding it frustrating when everything works on minix? No more
all-nighters to get a nifty program working? Then this post might be just
nighters to get a nifty program working? Then this post might be just
for you :-)
for you :-)
As I mentioned a month(?) ago, I'm working on a free version of a
As I mentioned a month(?) ago, I'm working on a free version of a
minix-lookalike for AT-386
minix-lookalike for AT-386 computers. computers. It has It has finally reached finally reached the stagethe stage
where it's even usable (though may not be depending on what you want),
where it's even usable (though may not be depending on what you want),
and I
and I am willing to am willing to put out the put out the sources for wider distribution. sources for wider distribution. It isIt is
just version 0.02 (+1 (very small) patch already), but I've successfully
just version 0.02 (+1 (very small) patch already), but I've successfully
run bash/gcc/gnu-make/gnu-sed/compress etc under it.
run bash/gcc/gnu-make/gnu-sed/compress etc under it.
Sources for this pet project of mine can be found at nic.funet.fi
Sources for this pet project of mine can be found at nic.funet.fi
(128.214.6.100) in
(128.214.6.100) in the the directory /pub/OS/Linux. directory /pub/OS/Linux. The The directory alsodirectory also
contains some README-file and a couple of binaries to work under linux
contains some README-file and a couple of binaries to work under linux
(bash, update and
(bash, update and gcc, what gcc, what more can more can you ask you ask for :-). for :-). Full kernelFull kernel
source is
source is provided, as no provided, as no minix code has minix code has been used. been used. Library sources areLibrary sources are
only partially
only partially free, so free, so that cannot that cannot be distributed be distributed currently. currently. TheThe
system is
system is able to able to compile "as-is" and compile "as-is" and has been has been known to known to work. work. Heh.Heh.
Sources to the binaries (bash and gcc) can be found at the same place in
Sources to the binaries (bash and gcc) can be found at the same place in
/pub/gnu.
/pub/gnu.
ALERT! WARNING! NOTE! These sources still need minix-386 to be compiled
ALERT! WARNING! NOTE! These sources still need minix-386 to be compiled
(and gcc-1.40, possibly 1.37.1, haven't tested), and you need minix to
(and gcc-1.40, possibly 1.37.1, haven't tested), and you need minix to
Figura 7:
Figura 7: Linus TLinus Torvalds,orvalds, criador do kernel linux. criador do kernel linux.
set it up if you want to run it, so it is not yet a standalone system
set it up if you want to run it, so it is not yet a standalone system
for those of you without minix. I'm working on it. You also need to be
for those of you without minix. I'm working on it. You also need to be
something of a hacker to set it up (?), so for those hoping for an
something of a hacker to set it up (?), so for those hoping for an
alternative to minix-386, please ignore me. It is currently meant for
alternative to minix-386, please ignore me. It is currently meant for
hackers interested in operating systems and 386's with access to minix.
hackers interested in operating systems and 386's with access to minix.
The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. If
The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. If
you are still interested, please ftp the README/RELNOTES, and/or mail me
you are still interested, please ftp the README/RELNOTES, and/or mail me
for additional info.
for additional info.
I can
I can (well, almost) hear (well, almost) hear you asking yourselves you asking yourselves "why?". "why?". Hurd will Hurd will bebe
out in a year (or two, or next month, who knows), and I've already got
out in a year (or two, or next month, who knows), and I've already got
minix.
minix. This This is is a a program for program for hackers by hackers by a a hacker. hacker. I've I've enjouyed doingenjouyed doing
it, and somebody might enjoy looking at it and even modifying it for
it, and somebody might enjoy looking at it and even modifying it for
their own
their own needs. needs. It is It is still small still small enough to enough to understand, use andunderstand, use and
modify, and I'm looking forward to any comments you might have.
modify, and I'm looking forward to any comments you might have.
I'm also interested in hearing from anybody who has written any of the
I'm also interested in hearing from anybody who has written any of the
utilities/library functions for minix. If your efforts are freely
utilities/library functions for minix. If your efforts are freely
distributable (under copyright or even public domain), I'd like to hear
distributable (under copyright or even public domain), I'd like to hear
from you, so I can add them to the system. I'm using Earl Chews estdio
from you, so I can add them to the system. I'm using Earl Chews estdio
right now (thanks for a nice and working system Earl), and similar works
right now (thanks for a nice and working system Earl), and similar works
will be very wellcome. Your (C)'s will of course be left intact. Drop me
will be very wellcome. Your (C)'s will of course be left intact. Drop me
a line if you are willing to let me use your code.
a line if you are willing to let me use your code.
Linus
Linus
PS. to PHIL NELSON! I'm unable to get through to you, and keep getting
PS. to PHIL NELSON! I'm unable to get through to you, and keep getting
"forward error - strawberry unknown domain" or something."
"forward error - strawberry unknown domain" or something."
Fo
Foi i asassisim m quque e nanascsceu eu eseste te sisiststemema a e e esesta ta mmenensasagegem m é é a a susua a cecertrtididão ão dede na
nasciscimementonto. . DepDepois ois desdesta ta memensansagem gem dezdezenaenas s de de proprogragramadmadoreores s que que lialiam m asas men
mensgens da lista sgens da lista COMPCOMP.OS.MIN.OS.MINIX começarIX começaram da am da palpipalpites e tes e mais impormais importantetante,, começaram a contribuir com código para o sistema desenvolvido por Linus, com o começaram a contribuir com código para o sistema desenvolvido por Linus, com o tempo este dezena de programadores se tranformou em uma centena e hoje em dia tempo este dezena de programadores se tranformou em uma centena e hoje em dia são milhares de programadores engajados em
são milhares de programadores engajados em continuar melhorando o sistema.continuar melhorando o sistema.
2.8
2.8 TUX,
TUX, O
O MASCOTE
MASCOTE
Basta um pingüim aparecer em um
Basta um pingüim aparecer em um sitesite, revista, cartaz ou propaganda que todo, revista, cartaz ou propaganda que todo
mundo já se pergunta: “O que será que estão falando do Linux?”. O pingüim mundo já se pergunta: “O que será que estão falando do Linux?”. O pingüim
gordinho
gordinho batizado de Tux, se tornou a identidade visual de qualquer sistema quebatizado de Tux, se tornou a identidade visual de qualquer sistema que
utilize o
utilize o kernel kernel Linux, mas muitos se perguntam porque um pingüim?Linux, mas muitos se perguntam porque um pingüim?
Em 1996 na lista de distribuição Kernel-Linux, surgiu uma discussão sobre criar uma Em 1996 na lista de distribuição Kernel-Linux, surgiu uma discussão sobre criar uma indentidade visual para o sistema, algo que só de olhar pudesse fazer as pessoas indentidade visual para o sistema, algo que só de olhar pudesse fazer as pessoas pensarem no sistema. Surgiram então várias sugestões, águias, tubarões, entre pensarem no sistema. Surgiram então várias sugestões, águias, tubarões, entre outros monstros e gozações com os logotipos dos sistemas concorrentes, então outros monstros e gozações com os logotipos dos sistemas concorrentes, então
Linus Torvalds mandou apenas uma mensagens, com a seguinte informação: “...eu Linus Torvalds mandou apenas uma mensagens, com a seguinte informação: “...eu gosto muito de pingüins.”
gosto muito de pingüins.”
Isso foi o suficiente, a partir desde e-mail todas as sugestões eram pingüins, hora Isso foi o suficiente, a partir desde e-mail todas as sugestões eram pingüins, hora carregando o mu
carregando o mundo, ora dominandndo, ora dominando computadores ou o computadores ou satirizando os satirizando os logotipos doslogotipos dos sistemas concorrentes, mais uma vez Linus interveio e mandou outra mensagem: sistemas concorrentes, mais uma vez Linus interveio e mandou outra mensagem: “...eu acho que
“...eu acho que deveria ser um deveria ser um pingüim, simpáticopingüim, simpático, “gordinho” com c, “gordinho” com cara de satisfeitoara de satisfeito como se tivesse acabado de comer.”.
como se tivesse acabado de comer.”.
Logo chegou a lista uma sugestão enviada por Logo chegou a lista uma sugestão enviada por Larry Ewing, que usou o programa GIMP rodando Larry Ewing, que usou o programa GIMP rodando em um sistema Linux para criá-lo. Larry licenciou em um sistema Linux para criá-lo. Larry licenciou a
a imimagagem em de de foformrma a a a pepermrmititor or quque e ququalalququer er pudesse fazer as modificações que quisesse da pudesse fazer as modificações que quisesse da mesma forma como o sistema é desenvolvido. mesma forma como o sistema é desenvolvido. Seu nome ainda é um mistério, alguns defendem Seu nome ainda é um mistério, alguns defendem a tese que o nome TUX é um acrônimo de a tese que o nome TUX é um acrônimo de T
Torvorvaldalds s LinLinUXUX, , ououtrtros os quque e vevem m da da papalalavrvraa TUXEDO que é um sinônimo para
TUXEDO que é um sinônimo para smoking smoking emem
inglês, isso porque o corpo do pingüim é preto e inglês, isso porque o corpo do pingüim é preto e branco lambrando um
branco lambrando um smoking smoking ..
2.9
2.9 SISTEMA
SISTEMA LINUX OU
LINUX OU SISTEMA
SISTEMA GNU/LINUX
GNU/LINUX??
Há uma polêmica sem fim na comunidade software livre, como deve ser chamado o Há uma polêmica sem fim na comunidade software livre, como deve ser chamado o sistema, Sistema Linux ou Si
sistema, Sistema Linux ou Sistema GNU/Linux?stema GNU/Linux?
Como pôde ser observado, o que foi desenvolvido por Linus Torvalds foi o
Como pôde ser observado, o que foi desenvolvido por Linus Torvalds foi o kernel kernel ee
qu
que e papara ra cocololocacar r esestete kernel kernel em em funfunciocionamnamentento o LinLinus us utilutilizoizou u os os aplaplicaicativtivosos
desevolvidos para o sistema GNU. desevolvidos para o sistema GNU.
Figura 8: Tux, o mascote e simbolo do Figura 8: Tux, o mascote e simbolo do sistema.
Usando a figura 1 como base, podemos exemplificar da seguinte f
Usando a figura 1 como base, podemos exemplificar da seguinte forma:orma:
Richard Stallman pede que as pessoas chamem o sistema de GNU/Linux e do seu Richard Stallman pede que as pessoas chamem o sistema de GNU/Linux e do seu ponto de vista ele realmente tem
ponto de vista ele realmente tem razão.razão. Do outro lado
Do outro lado Linus TLinus Torvalds, defende que isso é orvalds, defende que isso é uma grande bobagem, porque semuma grande bobagem, porque sem um kernel, um punhado de aplicativos não tem função, se instalarmos o Emacs no um kernel, um punhado de aplicativos não tem função, se instalarmos o Emacs no Windows o sistema passa a se chamar GNU/Windows? Segundo Linus Torvalds Windows o sistema passa a se chamar GNU/Windows? Segundo Linus Torvalds para
para seguseguir a lógica de Richair a lógica de Richard Stallmrd Stallman o nome do sistean o nome do sistema então devma então deveria ser:eria ser: GNU/Gnome/OpenOffice/Mozilla/.../Linux.
GNU/Gnome/OpenOffice/Mozilla/.../Linux.
Enfim, até hoje nem Linus nem Stallman chagaram a um acordo quanto a este Enfim, até hoje nem Linus nem Stallman chagaram a um acordo quanto a este impace, mas cada um de nós deve analisar os dois pontos de vista e aplicar o nome impace, mas cada um de nós deve analisar os dois pontos de vista e aplicar o nome que julgar mais correto de
que julgar mais correto de acordo com o entendimento de cada um.acordo com o entendimento de cada um.
Para facilitar a leitura neste trabalho, a partir de agora quando for citada a palavra Para facilitar a leitura neste trabalho, a partir de agora quando for citada a palavra Linux, esteremos no referindo ao conjunto do sistema, aplicativos
Linux, esteremos no referindo ao conjunto do sistema, aplicativos GNU GNU ,, kernel kernel ,,
servidores e demais programas inseridos nas
servidores e demais programas inseridos nas distribuições.distribuições. Figura 9:
Figura 9: HardwarHardware, KernelLinux e Aplicativos GNU.e, KernelLinux e Aplicativos GNU. Hardware Hardware Hardware Hardware Kernel Linux Kernel Linux Kernel Linux Kernel Linux Aplicativos GNU Aplicativos GNU Aplicativos GNU Aplicativos GNU
3
3 CARACTERÍSTICAS DE
CARACTERÍSTICAS DE UM
UM SISTEMA
SISTEMA LINUX
LINUX
É um sistema multi-tarefa podendo executar vários programas simultâneamente, na É um sistema multi-tarefa podendo executar vários programas simultâneamente, na verdade o
verdade o kernel kernel tem a capacisade de escalonar os processos em execução detem a capacisade de escalonar os processos em execução de
modo a transparecer aos usuários que os programas são executados ao mesmo modo a transparecer aos usuários que os programas são executados ao mesmo tem
tempo. po. EstEste e esescalcalonaonamemento nto é é rearealizlizado ado em em um um intintervervalo alo defdefiniinido do pelpeloo kernel kernel
(geralmente 20 milissegundos). Além do escalonamento delimitado pelo tempo o (geralmente 20 milissegundos). Além do escalonamento delimitado pelo tempo o
kernel
kernel prioriza alguns processos de acordo com a importancia e prioriza alguns processos de acordo com a importancia e necessidade.necessidade.
O Linux é um sistema multi-usuário, ou seja, mais de um usuário pode acessá-lo ao O Linux é um sistema multi-usuário, ou seja, mais de um usuário pode acessá-lo ao mesmo tempo por meio de terminais virtuais (padrão de todo sistema), físicos ou mesmo tempo por meio de terminais virtuais (padrão de todo sistema), físicos ou outros computadores que simulem terminais (remoto).
outros computadores que simulem terminais (remoto).
O Linux possue uma memória virtual paginada, isso possibilita ao sistema executar O Linux possue uma memória virtual paginada, isso possibilita ao sistema executar programas e processos que ocupem mais espaço do que o tamanho da memória programas e processos que ocupem mais espaço do que o tamanho da memória real, esta memória paginada é mantida em uma patição isolada do resto do sistema real, esta memória paginada é mantida em uma patição isolada do resto do sistema de arquivos.
de arquivos.
Figura 10: Tipos de terminais de um sistema Linux. Figura 10: Tipos de terminais de um sistema Linux.
3.2
3.2 SISTEMA
SISTEMA MODULARIZ
MODULARIZADO
ADO
O Linux é um sistema modularizado, isso quer dizer que os
O Linux é um sistema modularizado, isso quer dizer que os driversdrivers7 7 (módulos)(módulos)
necessários para execução des programas ou utilização de outrss dispositivos de necessários para execução des programas ou utilização de outrss dispositivos de
hardware
hardware, não são carregados em sua t, não são carregados em sua totalidade quando o sistema é inicializado.otalidade quando o sistema é inicializado.
Os módulos são carregados somente quando o
Os módulos são carregados somente quando o kernel kernel decidir ser necessário, o quedecidir ser necessário, o que
oco
ocorre rre somsomentente e quaquando ndo um um proprocescesso so ou ou proprogragrama ma solsoliciicita. ta. IssIsso o gargarantante e ousousoo otimizado d memória RAM, pois são carregados na memória somente os módulos otimizado d memória RAM, pois são carregados na memória somente os módulos necessáios, entretanto o tempo entre o
necessáios, entretanto o tempo entre o kernel kernel identificar a necessiade de carregar identificar a necessiade de carregar
um módulo e deixá-lo disponível é maior do em sistemas onde os drivers são um módulo e deixá-lo disponível é maior do em sistemas onde os drivers são carregados já na inicialização do sistema.
carregados já na inicialização do sistema. Um
Um driver driver pode ser carregado diretamente na memória pelopode ser carregado diretamente na memória pelo kernel kernel , desde o, desde o boot boot
quando este módulo é compilado incluído no
quando este módulo é compilado incluído no kernel kernel . A performace do módulo é. A performace do módulo é
muito maior mas os recursos por ele
muito maior mas os recursos por ele alocados ficam permanentemente ocupadoalocados ficam permanentemente ocupados.s.
3.3
3.3 GERENCIAMENT
GERENCIAMENTO
O DE
DE PROCESSOS
PROCESSOS
Por definição um processo é um programa em execução, mas para ser mais Por definição um processo é um programa em execução, mas para ser mais específico, do ponto de vista do sistema um processo é uma estrutura responsável específico, do ponto de vista do sistema um processo é uma estrutura responsável pela manutenção das informações necessárias à execução de
pela manutenção das informações necessárias à execução de um programa.um programa.
Os processos são entidades independentes e individualmente possuem permissões Os processos são entidades independentes e individualmente possuem permissões de acesso e atributos distintos. Para manterem este individualidade os processos de acesso e atributos distintos. Para manterem este individualidade os processos são identificados por um número o PID, ou
são identificados por um número o PID, ou PProcessrocess IDIDentificationentification88, , oo kernel-linux kernel-linux
como qualquer outro é o responsável por gerenciar os processos em execução no como qualquer outro é o responsável por gerenciar os processos em execução no sistema de forma a otimizar a
sistema de forma a otimizar a utilização da CPU, memória e periféricos.utilização da CPU, memória e periféricos.
No diretório /proc é criado um subdiretório para cada processo em execução, estes No diretório /proc é criado um subdiretório para cada processo em execução, estes
77 Drivers sDrivers são prograão programas e estmas e estruturas de druturas de dados que posados que possibilsibilitam a comitam a comunicaçunicação de progrão de programas e deamas e de sistemas operacionais com os dispositivos conectados
sistemas operacionais com os dispositivos conectados a um computador.a um computador. 88 ProcesProcess Idens Identificatification qtion quer diuer dizer Izer Identifdentificação icação de Pde Processorocesso..
subdiretórios recebem os nomes dos PID dos processos, nos arquivos
subdiretórios recebem os nomes dos PID dos processos, nos arquivos cmdlinecmdline,, environ
environ ee statusstatus, , que que encencontontramram-se -se dendentro tro desdesses ses dirdiretóetóriorios s sãsão o armarmazeazenadnadasas
informações detalhadas sobre a execução dos
informações detalhadas sobre a execução dos processos.processos.
Para se obter informações sobre os processos pode-se usar os comandos
Para se obter informações sobre os processos pode-se usar os comandos ps ps,, pstree pstree
ee toptop. É possivel também alterar a prioridade de execução dos processos por meio. É possivel também alterar a prioridade de execução dos processos por meio
do
dos s cocomamandndos os ninice ce e e renrenicice, e, isisso so dá dá ao ao adadmimininiststraradodor r do do sisiststemema a o o cocontntrorolele individual dos processos em execução.
individual dos processos em execução.
Este é um esquema simplificado do processamento interno do
Este é um esquema simplificado do processamento interno do kernel-linux kernel-linux ::
Quando um processo está sendo executado ele passa por vários estados e recebe Quando um processo está sendo executado ele passa por vários estados e recebe div
diversersos os comcomandandos os intinternernos os cocontrntroledoledos os pelpelo o escescaloalonadnador or de de proprocescessossos, , parparaa entendermos melhor este procedimento vamos observar a figura 12:
entendermos melhor este procedimento vamos observar a figura 12: Figura 11: Processamento interno do kernel-linux
Figura 11: Processamento interno do kernel-linux
Figura 12: Os estados de
Figura 12: Os estados de um processo e os comandos doum processo e os comandos do escalonador de processos.
O Linux organiza suas informações em arquivos e esses arquivos podem conter O Linux organiza suas informações em arquivos e esses arquivos podem conter textos, informações de programação,
textos, informações de programação, scriptsscripts dede shell shell ou qualquer outro tipo deou qualquer outro tipo de
informação. informação.
Algumas características sobre o sistema de arquivos do Linux: Algumas características sobre o sistema de arquivos do Linux:
•
• No Windows, os dispositivos de armazenamento (Hds, CD-ROMs e drivesNo Windows, os dispositivos de armazenamento (Hds, CD-ROMs e drives
disquetes) são identificados por letras, por exemplo: C:, D: e A:. No Linux disquetes) são identificados por letras, por exemplo: C:, D: e A:. No Linux esles são representados de acordo com a sua montagem na própria estrutura esles são representados de acordo com a sua montagem na própria estrutura de diretórios, por exemplo: /media/floppy ou /
de diretórios, por exemplo: /media/floppy ou /media/cd-rom (antigamente).media/cd-rom (antigamente).
•
• No Windows os nomes dos arquivos seguem o esquema 255 x 3, sendo 255No Windows os nomes dos arquivos seguem o esquema 255 x 3, sendo 255
caracteres para o nome e 3 para a extenção, no Linux os nomes podem ter caracteres para o nome e 3 para a extenção, no Linux os nomes podem ter até 255 caracteres também mas podem ter mais de um ponto, por exemplo: até 255 caracteres também mas podem ter mais de um ponto, por exemplo: arquivo.faculdade.trabalho.tar.gz.
arquivo.faculdade.trabalho.tar.gz.
•
• Como em todo sistema no padrão Unix, o Linux diferencia letras maiúsculasComo em todo sistema no padrão Unix, o Linux diferencia letras maiúsculas
de minúsculas, por exemplo:
de minúsculas, por exemplo: relatoriorelatorio,, RelatorioRelatorio,, relatoriOrelatoriO ee relAtoriorelAtorio, são, são
arquivos diferentes para o sistema. arquivos diferentes para o sistema.
•
• Não há extenções compulsórias como .COM, .EXE e .BAT para arquivos deNão há extenções compulsórias como .COM, .EXE e .BAT para arquivos de
lote (
lote (scriptsscripts), o que determina se um arquivo é executável ou não são suas), o que determina se um arquivo é executável ou não são suas
permissões ou a primeira linha do
permissões ou a primeira linha do aqruivo no caso dosaqruivo no caso dos scriptsscripts..
Existem vários sistemas de arquivos para o Linux (EXT2, EXT3, ReiserFS, XFS, Existem vários sistemas de arquivos para o Linux (EXT2, EXT3, ReiserFS, XFS, JFS), cada um que possue características particulares que os deferenciam, como JFS), cada um que possue características particulares que os deferenciam, como perfo
performacermace, , segusegurançarança,, journaling journaling , , enentre tre ououtratras, s, enentrtretaetantnto o totododos s seseguguem em osos
padrões de sistemas de arquivos especificados pelo padrão POSIX. padrões de sistemas de arquivos especificados pelo padrão POSIX.
4.2
4.2 ESTRUTURA
ESTRUTURA DE
DE DIRETÓRIOS
DIRETÓRIOS
A distribuição dos arquivos no disco fica a critério de quem monta uma distribuição, A distribuição dos arquivos no disco fica a critério de quem monta uma distribuição, entretanto para facilitar o aprendizado do Linux e padronizá-lo para compatibilizar entretanto para facilitar o aprendizado do Linux e padronizá-lo para compatibilizar cada distribuição com os mais diversos programas, foi criado o LSB Linux Standad cada distribuição com os mais diversos programas, foi criado o LSB Linux Standad Base, com o propósito de padronizar certas estruturas como a árvore de diretórios, Base, com o propósito de padronizar certas estruturas como a árvore de diretórios,
veja a tabela abaixo: veja a tabela abaixo:
•
• / - Diretório raíz do / - Diretório raíz do sistema de arquivo.sistema de arquivo. •
• /bin/ - Utilitários do usuário, fundamentais para os ambientes de multi-usuário/bin/ - Utilitários do usuário, fundamentais para os ambientes de multi-usuário
e mono-usuário. e mono-usuário.
•
• /boot/ - Arquivos e programas de configuração que são usados durante o/boot/ - Arquivos e programas de configuração que são usados durante o
processo de inicialização do sistema operacional. processo de inicialização do sistema operacional.
•
• /dev/ - Dispositivos de controle./dev/ - Dispositivos de controle. •
• /etc/ - Arquivos e scripts de configuração do sistema./etc/ - Arquivos e scripts de configuração do sistema. •
• /home - Onde ficam os /home - Onde ficam os diretórios home das contas dos usuários do sistema.diretórios home das contas dos usuários do sistema. •
• /m/mntnt/ / - - DiDireretótório rio vavazizio o nonormrmalalmementnte e ututiliilizazado do pepelolos s adadmimininiststraradodoreres s dede
sistemas como ponto de
sistemas como ponto de montagem temporário.montagem temporário.
•
• /proc/ - Sistema de /proc/ - Sistema de arquivos de processos.arquivos de processos. •
• /root/ - Diretório home da conta de usuário root./root/ - Diretório home da conta de usuário root. •
• /sb/sbin/ in/ - - UtilUtilitáitáriorios s de de proprogragramas mas e e admadminiinistrstraçãação, o, funfundamdamententais ais parpara a osos
ambientes de multi-usuário e
ambientes de multi-usuário e mono-usuário.mono-usuário.
•
• /tmp/ - Arquivos temporários./tmp/ - Arquivos temporários. •
• /usr/ - A maioria dos utilitários e aplicações de usuários./usr/ - A maioria dos utilitários e aplicações de usuários. •
• /var/ - Arquivos de log de múltiplos propósitos, arquivos temporários, de/var/ - Arquivos de log de múltiplos propósitos, arquivos temporários, de
transição, e arquivos de bobina (spool). transição, e arquivos de bobina (spool).
5
5 INTERFACE
INTERFACE COM
COM O
O USUÁRIO
USUÁRIO
O
O inteinterprrpretaetafor for de de comcomandandos os ou ou comcomo o é é maimais s conconhechecidoido Shell Shell , , é é a a ccamamadadaa
responsável em interpretar as instruções enviadas pelo
responsável em interpretar as instruções enviadas pelo usuário e seus programas aousuário e seus programas ao siste
sistema operama operacionacional. l. Ele que execuEle que executa comandta comandos lidos do dispositos lidos do dispositivo de entradaivo de entrada padrão (teclado) ou de um arquivo executável.
padrão (teclado) ou de um arquivo executável. É a
É a prinprincipcipal ligaçal ligação entre o ão entre o usuusuáriário, os o, os proprogragramamas s e o e o kerkernelnel. . O O LinLinux possux possuiui diversos tipos de interpretadores de comandos, entre eles posso destacar o bash, diversos tipos de interpretadores de comandos, entre eles posso destacar o bash, ash
comandos do DOS, por exemplo, é o `command.com'. Os comandos podem ser comandos do DOS, por exemplo, é o `command.com'. Os comandos podem ser enviados de duas maneiras para o interpretador: interativa
enviados de duas maneiras para o interpretador: interativa e não-interativa.e não-interativa.
5.2 INTERATIVA
5.2 INTERATIVA
Os comandos são digitados no aviso de comando e passados ao interpretador de Os comandos são digitados no aviso de comando e passados ao interpretador de comandos um
comandos um a um. a um. Neste modo, o compuNeste modo, o computador depende do usuário para exectador depende do usuário para executar utar uma tarefa, ou
uma tarefa, ou próximo comando.próximo comando.
5.3 NÃO-INTERATIVA
5.3 NÃO-INTERATIVA
São usados arquivos de comandos criados pelo usuário (scripts) para o computador São usados arquivos de comandos criados pelo usuário (scripts) para o computador executar os com
executar os comandos na ordem encandos na ordem encontrada no arquivo. ontrada no arquivo. Neste modo, o comNeste modo, o computador putador executa os comandos do arquivo um por um e dependendo do término do comando, executa os comandos do arquivo um por um e dependendo do término do comando, o script pode checar qual será o próximo comando que será executado e dar o script pode checar qual será o próximo comando que será executado e dar continuidade ao
continuidade ao processamento.processamento.
Este sistema é útil quando temos que digitar por várias vezes seguidas um mesmo Este sistema é útil quando temos que digitar por várias vezes seguidas um mesmo coma
comando ou para compilndo ou para compilar algum prograar algum programa complma complexo. exo. O shell Bash possui aindO shell Bash possui aindaa ou
outrtra a cacararactctererísístitica ca inintetereressssanantete: : A A cocompmpleletataçãção o dodos s nonomemes. s. IsIsto to é é fefeititoo pressionando-se a tecla "TAB".
pressionando-se a tecla "TAB".
Por exemplo, se digitar "ls tes" e pressionar <tab>, o Bash localizará todos os Por exemplo, se digitar "ls tes" e pressionar <tab>, o Bash localizará todos os ar
arququivivos os quque e ininiciciaiam m cocom m "t"teses" " e e cocompmpleletatará rá o o rereststanante te do do nonomeme. . CaCaso so aa com
complepletaçtação ão de de nomnomes es encencontontre re mamais is do do que que uma uma expexpresressão são que que satsatisfisfaçaça a aa pesquisa, ou nenhuma, é emitido um beep. Se você apertar novamente a tecla TAB pesquisa, ou nenhuma, é emitido um beep. Se você apertar novamente a tecla TAB imediatamente depois do beep, o interpretador de comandos irá listar as diversas imediatamente depois do beep, o interpretador de comandos irá listar as diversas possibilidades que satisfazem a pesquisa, para que você possa escolher a que lhe possibilidades que satisfazem a pesquisa, para que você possa escolher a que lhe int
intereeressassa. . A compA completletaçãação o de de nomnomes funcioes funciona na sem probsem problemlemas as parpara a comcomandandosos internos.