
Guia de Administrao do Sistema Linux 
Verso 0.6 

Lars Wirzenius 

Projeto de Documentao do Linux

Esta  a verso 0.6 do Guia de Administrao Linux
Publicada em 15 de Novembro de 1997

Traduzido e Adaptado pela Conectiva Informtica 
Ltda.





ndice



       

     Introduo

     Viso Geral do Linux
          Diversas partes de um sistema operacional
          Partes importantes do kernel
          Principais servios do kernel  
               init 
               acesso a partir de terminais
               Mensagens do Sistema 
               Comandos peridicos: cron e at               
                Interface grfica
               Rede 
               Acesso via Rede 
               Sistema de Arquivos de Rede (NFS) 
               Correio eletrnico
               Impresso
          A estrutura do sistema de arquivos 
Viso geral da rvore de diretrios 
          Background
          O sistema de arquivos raiz
              O diretrio /etc
              O diretrio /dev
         O sistema de arquivos /usr
         O sistema de arquivos /var
         O sistema de arquivos /proc

Utilizando discos rgidos e outros dispositivos de 
armazenamento
          Dois tipos de dispositivos
          Discos rgidos
          Discos flexveis
          CD-ROMs
          Fitas
          Formatao
          Parties 
               MBR, setores de inicializao e 
tabela de parties
               Parties lgicas e estendidas
               Tipos de partio
               Particionando um disco rgido
               Arquivos de dispositivos e parties
          Sistema de arquivos
              O que  um sistema de arquivos?
               Diversidade de sistemas de arquivos 
               Qual  sistema de arquivos deve ser 
usado?
               Criando um sistema de arquivos
               Montando um sistema de arquivos
               Verificando a integridade de um 
sistema de arquivos com fsck
               Verificando blocos com erro em 
discos rgidos
                Evitando fragmentao
                Outras ferramentas para todos 
sistemas de arquivos 
                Outras ferramentas para sistemas de 
arquivos ext2
          Discos sem sistemas de arquivos
          Alocando espao em disco
               Esquemas de particionamento
               Requisitos de espao      
               Exemplos de alocao de espao em 
disco  
               Adicionado espao em disco ao Linux
               Dicas para economizar espao 
     Gerenciamento de Memria
               O que  memria virtual?
               Criando uma rea de swap
               Usando a rea de swap
               Compartilhando rea de swap com 
outros sistemas operacionais
               Alocando rea de swap
               O cache de buffer 
      Iniciando e Desligando
           Uma viso geral da inicializao e 
encerramento do sistema
           O processo de inicializao em maiores 
detalhes
           Reinicializando
           Mais informaes sobre o encerramento do 
sistema
           Modo monousurio
           Disquetes de emergncia    
      init 
          init vem em primeiro lugar
          configurando o init: o arquivo 
/etc/inittab
          nveis de execuo
          configuraes especiais no /etc/inittab
          iniciando em modo monousurio

     Entrando e saindo do sistema 
          Acesso via terminais
          Acesso via rede
          O que o acesso ao sistema faz
          X e xdm
          Controle de acessos
          Ativao do ambiente de trabalho (shell)
     Gerenciando contas de usurios
          O que  uma conta?
          Criando um usurio
                /etc/passwd e outros arquivos
               Escolhendo um  nmero de usurio e 
identificao de grupo
                Ambiente inicial: /etc/skel
                Criando um usurio manualmente
           Alterando as caractersticas de um 
usurio
           Removendo um usurio
           Desabilitando um usurio temporariamente
       
     Cpias de Segurana
         O que  importante copiar?
          Selecionando o dispositivo de backup
          Selecionando a ferramenta de backup
          Cpias simples
                Cpias de segurana com tar
                Restaurando arquivos com tar
          Cpias em diversos nveis
          O que copiar
          Arquivos compactados
     Manuteno de Data/Hora
           Zonas de tempo
           Os relgios de hardware e software
           Quando o relgio est errado
     Medidas de Segurana   
     Comandos e Programas Relacionados
     HOWTOS relacionados 
     Glossrio (DRAFT) 
     Referncias 
     ndice 
     Sobre este documento ... 
     Sobre esta traduo.. 



Lars Wirzenius 




Contedo  

Os fontes do documento original em LaTex e outros 
formatos pode ser encontrado na Internet, via FTP 
annimo em sunsite.unc.edu, no diretrio 
/pub/Linux/docs/LDP.  Encontra-se tambm disponvel 
nos formatos  Postscript e TeX.DVI. A pgina 
oficial deste livro encontra-se em 
texttt{http://www.iki.fi/liw/linux/sag/}.A verso 
atualizada tambm pode ser encontrada naquela 
localizao.

 Copyright  1993-1997 Lars Wirzenius. 

Marcas registradas so de propriedade dos seus 
autores.

 permitido reproduzir e distribuir cpias deste 
manual , desde que acompanhadas 
dos devidos registros de direitos e este aviso seja 
divulgado em todas as cpias.

 permitido processar este documento em TeX ou 
outros formatos e imprimir os 
resultados, e distribuir os documentos impressos, 
desde que acompanhados de permisses expressas  e  
que este aviso esteja presente em todas as cpias, 
incluindo-se as referncias das fontes onde estas 
informaes foram encontradas e o endereo da 
pgina oficial na Internet.    

 permitidos copiar e distribuir diferentes verses 
deste manual sob as mesmas 
condies acima mencionadas, e desde que o trabalho 
da derivado seja distribudo sob os mesmos termos 
desta permisso e que este aviso esteja presente.
 
 permitido a cpia e distribuio deste manual  em 
outras lnguas, sob as 
mesmas condies mencionadas para cpias 
modificadas.

O autor gostaria de ser avisado das modificaes, 
tradues e  verses 
impressas. 

Obrigado.


Adendo

A Conectiva Informtica Ltda., no seu papel de 
buscar popularizar o uso Linux no Brasil, buscou 
traduzir da melhor forma o contedo dessa 
publicao do LDP - Projeto de Documentao Linux, 
assim como agregou comentrios e informaes 
adicionais que pudessem enriquecer o seu uso.

Quaisquer incorrees ou problemas detectados, 
pedimos que sejam comunicados por email para 
info@conectiva.com.br, a fim de que os ajustes 
sejam realizados para as prximas verses.

Agradecemos a todos aqueles que tem participado 
ativamente no desenvolvimento dos  trabalhos de 
traduo, internacionalizao, divulgao e 
adaptao do Linux  realidade brasileira, pois 
muito de nosso esforo est calcado no processo 
participativo desta comunidade.

Esperamos que esse livro seja de utilidade ao 
administradores de sistemas que busquem uma 
ferramenta de auxlio s suas atividades dirias, e 
que possa enriquecer e facilitar os seus 
conhecimentos.

Linux: Quem Compara, Usa!


Conectiva Informtica Ltda.
1998

  




Introduo

No comeo o arquivo foi escrito sem  forma e void; 
e  o vcuo estava sobre a face dos bits. E os Dedos 
do Autor moveram-se sobre o teclado. E o Autor 
disse: que haja palavras, e fizeram-se as 
palavras.


O Guia de Administrao Linux, descreve aspectos da  
administrao do sistema Linux e est voltado para 
usurios  com pouco conhecimento de administrao 
de sistemas, mas que tenham uma base mnima. Este 
manual no descreve como instalar o Linux,  o que  
apresentado no Guia do Servidor Linux. 

Administrao de sistemas  o conjunto de tarefas 
necessrias para manter o computador em boas 
condies de uso. Isso inclui atividades como 
efetuar cpias de segurana (e restaur-las, se 
necessrio), instalar novos programas, criar contas 
de usurios (e apag-las quando no mais forem 
necessrias), estar certo que os sistemas de 
arquivos esto ntegros, e assim por diante. Se um 
computador fosse, por exemplo, uma casa,  
administrao do sistema poderia ser comparada a 
manuteno, a qual inclui a limpeza, arrumar 
vidraas quebradas, e coisas do gnero. 
Administrao de sistemas no  chamada de 
manuteno, por que encerra outros aspectos, no 
abrangidos por este conceito.

A estrutura deste manual permite que muitos 
captulos possam ser utilizados de maneira 
independente, isto , caso sejam necessrias por 
exemplo informaes sobre cpias de segurana, 
pode-se ler somente aquele captulo. Espera-se com 
isto tornar este livro um manual de referncia e 
treinamento, e dentro do possvel, que somente 
partes pequenas sejam consultadas quando 
necessrio, ao invs de exigir a sua leitura 
completa. Ainda assim o fato deste manual ser ainda 
uma ferramenta de ajuda e de referncia , para 
mim, uma uma feliz coincidncia.   

Este manual no pretende ser usado com nica 
ferramenta de consulta. Muitas informaes  
importantes para a administrao de sistemas podem 
ser encontradas nos documentos Linux. Alm disso o 
administrador do sistema  somente um usurio com 
privilgios e tarefas especiais. Um dos recursos 
importantes so as pginas de manual on-line, que 
devem  servir de referncia sempre que um comando 
no for familiar.

O processo de traduo e adaptao do manual buscou 
acrescentar os comandos e HOWTOS relacionados aos 
temas aqui abordados, os quais esto em Apndices 
especfico.  

Enquanto este manual est voltado para o Linux, 
princpios gerais de administrao podem ser 
utilizados em outros sistemas UNIX. Infelizmente 
pelo fatos das variaes serem grandes entre 
diferentes verses de UNIX, a possibilidade de 
cobrir completamente o tema  muito pequena. O 
prprio Linux  difcil de ser abrangido em todas 
as suas possibilidades, dada  natureza de seu 
desenvolvimento.

No h uma distribuio oficial do Linux, e pessoas 
diferentes utilizam diferentes configuraes da 
mesma distribuio, e muitos ainda possuem as suas 
prprias personalizadas. Este livro no pretende 
fixar-se em uma distribuio especfica,  apesar do 
autor utilizar o Debian GNU/Linux e o tradutor o 
Conectiva Linux exclusivamente. Sempre que possvel 
procurar-se- apresentar as diferenas entre elas. 

Tentou-se descrever como as coisas funcionam, ao 
invs de descrever-se somente 
cinco passos simples para cada executar uma 
tarefa. Isso significa que muita informao aqui 
pode no ser necessria, mas pode ser simplesmente  
ignorada para utilizao em um sistema pr-
configurado. Uma leitura completa naturalmente 
aprimorar o conhecimento do sistema e poder 
tornar a administrao mais agradvel.      

Como todo o desenvolvimento do Linux, que funciona 
atravs de trabalho 
voluntrio, este trabalho foi realizado porque 
pensamos que seria agradvel e porque ns sentimos 
que ele precisava ser realizado. Ainda assim, como 
em qualquer trabalho voluntrio h limites de tempo 
despendido e de  conhecimento. Isso significa que 
este manual pode no ser necessariamente to bom 
quanto desejaramos, porm pensamos que ele seja 
muito bom e que as informaes aqui contidas devam 
ser divulgadas. 

Outro ponto que deve ser ressaltado  que muitas 
coisas j documentadas em 
outros manuais no foram aqui exploradas 
profundamente. Isso aplica-se especialmente  
documentao de programas especficos, como por 
exemplo a documentao do mkfs (n.t.: na edio 
brasileira adaptada os programas so apresentados 
em Apndice especfico). Foi descrito somente o 
propsito e o seu uso como ferramenta dentro dos 
princpios deste manual. Para maiores informaes, 
 sugerido ao gentil leitor o uso de outros 
manuais, normalmente os referenciados no projeto de 
documentao do Linux. 

Fizemos um grande esforo para tornar este manual o 
melhor possvel, porm gostaramos de ouvir 
qualquer sugesto que possa melhor-lo. Erros de 
linguagem, informaes incorretas, idias para 
novos tpicos, sees reescritas, informaes sobre 
como os diversos sistemas UNIX funcionam, so bem-
vindas. O email para correspondncias em ingls 
pode ser encontrado em  http://www.iki.fi/liw/mail-
to-lasu.html.  necessrio ler aquelas pginas para 
ultrapassa os filtros de emails indesejados. Para 
sugestes em portugus, por favor envie  as 
mensagens para info@conectiva.com.br.

Muitas pessoas ajudaram no desenvolvimento deste 
livro, direta ou indiretamente. Eu gostaria de 
agradecer especialmente a Matt Welsh pela 
inspirao e liderana na LDP, Andy Oram por levar-
me a trabalhar novamente com o seu valioso 
feedback,  Olaf Kirch por mostrar que isso poderia 
ser executado, e Adam Richter da Yggdrasil e 
diversas outras pessoas por me mostrarem que este 
trabalho poderia ser til e interessante.  

Stephen Tweedie, H. Peter Anvin, Rmy Card, 
Theodore Ts'o, e Stephen Tweedie que me emprestaram 
seus trabalhos (e tornaram este livro menor e mais 
rico). Estou muito agradecido e peo desculpas por 
verses anteriores que possam estar sem os devidos 
crditos.

Adicionalmente gostaria de agradecer a Mark 
Komarinski por enviar seu material em 1993 e s 
muitas colunas de administrao de sistemas do 
Linux Journal. Foram muito instrutivas e 
inspiradoras.

Muitos comentrios teis foram enviados por um 
grande nmero de pessoas. No poderia enumerar 
todos eles, mas alguns, em ordem alfabtica devem 
ser lembrados: Paul Caprioli, Ales Cepek, Marie-
France Declerfayt, Dave Dobson, Olaf Flebbe, Helmut 
Geyer, Larry Greenfield e seu pai, Stephen Harris, 
Jyrki Havia, Jim Haynes, York Lam, Timothy Andrew 
Lister, Jim Lynch, Michael J. Micek, Jacob 
Navia,Dan Poirier, Daniel Quinlan, Jouni K 
Seppnen, Philippe Steindl, G.B. Stotte. 

Peo desculpas aqueles que por ventura no tenham 
sido citados.


O Projeto de Documentao Linux (LDP)

O Projeto de Documentao Linux ou LDP,  um time 
de escritores, leitores e 
editores que trabalham juntos para prover uma 
documentao completa do sistema operacional Linux. 
O coordenado geral do projeto  Greg Hankins. 

Este manual  um de um conjunto  distribudo pela 
LDP, incluindo Guia do Usurio 
Linux, Guia de Administrao do Sistema, Guia de 
Administrao de Rede, e o Guia de Programadores. 
Estes manuais esto disponveis em formatos LaTeX, 
dvi e postscript e disponveis para FTP no 
sunsite.unc.edu, no diretrio /pub/Linux/docs/LDP. 

Ns encorajamos qualquer um com pendor para escrita 
ou editorao, a juntar-se a 
ns para melhorar a documentao Linux. Caso voc 
tenha um endereo email, pode contactar Greg 
Hankins em gregh@sunsite.unc.edu. 

Os Versos da LDP 

Algo  imenso
E belo,
Isto  escrever
Um livro.

Eu gostaria de cantar
Sobre o suor,
O sangue e as lgrimas,
Que foram derramados.

Comeou no passado,
Mil novecentos e noventa e dois,
Quando usurios proclamavam
Ns no podemos fazer nada!

Ele queriam saber
Qual era a causa de seus problemas
E como resolv-los
(para ontem).

Ns pusemos as respostas
Em um Linux FAQ,
Esperando termos resolvido
Qualquer necessidade de escrever novamente.

Isto  muito grande
Difcil de pesquisar
E no podemos ler,
De nenhum modo!

Ento alguns de ns
Juntaram-se
(virtualmente, voc sabe)
e comeamos a LDP.

Comeamos a escrever,
Ou a planejar, no mnimo,
Diversos livros,
Um para cada necessidade.

O comeo foi divertido,
Muita conversa,
Uma  manchete,
Ento freou!

O silncio veio,
O trabalho comeou,
Alguns escreveram menos,
Outros escreveram mais. 

Uma tela em branco,
, isto  horrvel,
Ela  prostada  l
Rindo na minha cara.

Ainda esperamos,
O dia final.
Quando tudo estar pronto.

At l
Tudo o que temos
 um rascunho,
Para voc coment-lo!



Viso Geral do Linux

Deus olhou sobre tudo o que ele fez e viu que 
estava bom!
Genesis 1:31 


Este captulo apresenta uma viso geral do Linux. 
Primeiramente, dos principais 
servios disponibilizados pelo sistema operacional 
e aps os programas que os implementam, porm sem 
um detalhamento muito profundo. O propsito deste 
captulo  dar um entendimento do sistema como um 
todo, onde cada parte ser descrita em detalhes 
mais adiante.


      
Diversas partes de um sistema operacional
          Partes importantes do kernel
          Principais servios do kernel  
               init 
               acesso a partir de terminais
               Mensagens do Sistema 
               Comandos peridicos: cron e at               
                Interface grfica
               Rede 
               Acesso via Rede 
               Sistema de Arquivos de Rede (NFS) 
               Correio eletrnico
               Impresso
A estrutura do sistema de arquivos 


Diversas partes de um sistema operacional

Um sistema operacional UNIX consiste de um kernel 
(kernel) e alguns programas de 
sistema. H ainda aplicaes que executam diversas 
tarefas. O kernel  o corao do sistema 
operacional. Ele mantm o controle dos arquivos em 
disco, programas que iniciam e so executados 
simultaneamente, aloca memria e outros recursos 
para os diversos processos, recebe e envia pacotes 
da rede, etc... O kernel faz muito pouco sozinho, 
na verdade ele prov ferramentas com as quais os 
servios podem ser executados. Ele ainda evita que 
qualquer um possa acessar diretamente os 
componentes de hardware, forando o uso das 
ferramentas disponveis, provendo assim alguma 
proteo para os usurios. As ferramentas 
disponibilizadas pelo kernel so utilizadas atravs 
das chamadas de sistema  (system calls). Para 
maiores informao veja o Apndice Comandos e 
Programas Relacionados ou pginas de manual on-
line, seo 2, para maiores informaes sobre elas.

Os programas de sistema utilizam as ferramentas 
disponibilizadas pelo kernel 
para implementar os diversos servios necessrios 
para o sistema operacional. Programas de sistema e 
todo os demais, so executados sobre o kernel, o 
que  denominado em modo usurio. A diferena entre 
programas do sistema e aplicaes 
est no seu objetivo: as ltimas visam que coisas 
teis sejam realizadas (como  por ex. brincar, caso 
seja um jogo), enquanto os primeiros so 
necessrios para que o sistema operacional possa 
funcionar. Um editor de textos  uma aplicao, 
telnet  um programa do sistema. A diferena  
algumas vezes muito pequena, e somente  importante 
para classificadores compulsivos.

Um sistema operacional pode ainda conter 
compiladores e suas bibliotecas correspondentes 
(GCC e C no caso do Linux), ainda que nem todas as 
linguagens devam ser parte integrante do sistema 
operacional. Documentao e mesmo jogos podem  
fazer parte. Tradicionalmente o sistema operacional 
tem sido definido como o  contedo nos discos de 
instalao, o que no Linux pode variar bastante, 
j que ele pode ser encontrado em diverso sites ao 
redor do mundo. 

Partes importantes do kernel

O kernel do Linux  formado por diferentes partes: 
gerenciador de processos, gerenciador de memria, 
controle de dispositivos de hardware, controle de 
sistemas de arquivos, gerenciador de rede e vrios 
outros. A figura 2.1 mostra alguns deles.

  
Figura 2.1: algumas das partes mais importantes do 
kernel do Linux

Provavelmente as partes mais importantes do kernel 
(nada funciona sem elas) so o gerenciador de 
memria, responsvel pela liberao de memria para 
a rea de swap (swap),  para os processos, para os 
demais componentes do kernel e para o cache de 
disco,  e o gerenciador de processos, responsvel 
por criar os processos e implementar a capacidade 
de execuo de diversas tarefas simultaneamente, 
atravs da swap dos processos ativos no 
processador. 

No  nvel mais baixo, o kernel contm componentes 
de controle (drivers) para 
cada dispositivo de hardware suportado. Uma vez que 
existem inmeros hardwares, o nmero de programas 
de controle tambm  muito grande. A similaridade 
de funcionalidades permite que se tenham classes de 
programas de controle para suportar funes 
similares, ou seja cada membro de uma determinada 
classe de hardwares tem a mesma interface com o 
resto do kernel, mas diferem somente no que  
necessrio para implementar as suas caractersticas 
especficas. Por exemplo todos os discos rgidos 
parecem iguais para o resto do kernel, isto  todos 
tm operaes como inicializar o dispositiivo , 
ler setor N e gravar setor N.

Alguns servios de softwares disponibilizados pelo 
kernel tem propriedades similares, e podem ser 
tambm derivados em classes. Por exemplo, os 
diversos protocolos de rede so abstrados em uma 
interface de programao, a biblioteca BSD. Outros 
exemplo  a camada do sistema virtual de arquivos 
(VFS), a qual abstrai as operaes dos diversos 
sistemas de arquivos. Quando alguma entidade tenta 
utilizar um sistema de arquivos, a requisio  
direcionada ao VFS, a qual  a reencaminha  para o 
dispositivo de controle adequado ao sistema de 
arquivos solicitado.    


Principais servios em um sistema Unix

Esta seo descreve como partes importantes dos 
servios UNIX so implementadas. Elas so descritas 
mais detalhadamente nos prximos captulos.


===================================================
====================

  
               init 
               acesso a partir de terminais
               Mensagens do sistema 
               Comandos peridicos: cron e at               
               Interface grfica
               Rede 
               Acesso via Rede 
               Sistema de Arquivos de Rede (NFS) 
               Correio eletrnico
               Impresso



init

O mais importante servio isolado disponvel em um 
sistema UNIX  denominado init. Init  o primeiro 
processo iniciado em todos os sistemas UNIX, aps a 
carga do kernel do sistema. Quando o init comea, 
ele continua o processo de inicializao do 
sistema, executando diversas tarefas necessrias ao 
funcionamento do sistema (checando e montando 
sistemas de arquivos, iniciando programas 
residentes, etc...)

A lista exata de tarefas que o init realiza depende 
do nvel de execuo do sistema. Ele prov o 
conceito de modo monousurio, no qual ningum alm 
do superusurio (root) pode entrar no sistema, 
sendo utilizado somente o ambiente de trabalho da 
console do sistema, ou o modo multiusurio, o modo 
padro de incio do sistema. Algumas verses 
generalizam isso, denominando como nveis de 
execuo; sendo os modos mono e multiusrio 
considerados como nveis, podendo existir diversos 
outros, como por exemplo, aquele que permita a 
execuo do X (interface grfica) na console. 

Em uma operao normal, o init certifica-se que os 
programas getty esto sendo 
executados (para permitir o acesso dos usurios) e 
adota processos rfos (processos cujos programas 
que os iniciaram (chamados pais) morreram (no 
esto mais sendo executados)). Em UNIX todos os 
processos (programas) esto em uma estrutura em 
rvore, devendo todos eles terem um "pai".

Quando um sistema  desligado,  o init que se 
encarrega de finalizar todos os outros processos, 
desmontando todos os sistemas de arquivos e parando 
o processador junto com tudo o mais que esteja 
sendo executado.


acesso a partir de terminais

Os accessos a partir de terminais (via linhas 
seriais) e atravs da console (quando no se est 
executando o X (interface grfica)) so 
disponibilizados pelo programa getty. O init inicia 
uma instncia distinta do getty para cada terminal, 
nos quais o acesso  permitido. O programa getty l 
o nome do usurio e executa o programa de acesso 
(login), o qual por sua vez processa a validao da 
senha do usurio. Caso usurio e senha sejam 
vlidos, o programa de acesso inicia o shell do 
usurio (programa de ambiente de trabalho). Quando 
um shell  finalizado, isto , o usurio sai do 
sistema, ou quando o  login  finalizado porque 
usurio ou senha so incorretos, o init avisa do 
ocorrido na sida padro e inicia uma nova 
instncia do getty. O kernel no tem conhecimentos 
dos acessos, pois tudo isso  controlado pelos 
programas de sistema. 

Mensagens do Sistema

O kernel e muitos programas do sistema produzem 
avisos, mensagens de erro, e outros comunicados.  
importante que estas mensagens sejam lidas 
freqentemente, mesmo que muito tempo aps da sua 
ocorrncia. Para que isso seja possvel elas so 
gravadas pelo programa syslog em um arquivo. O 
syslog pode ser configurado para ordenar as 
mensagens em diferentes arquivos de acordo com o 
nvel de importncia ou origem. Por exemplo, 
mensagens do kernel so freqentemente direcionadas 
para arquivos distintos, desde que esse tipo de 
mensagem  mais importante e  necessrio que seja 
lida com mais freqncia do que as de outras 
origens.   


Comandos peridicos: cron e at

Tanto administradores do sistema como usurios 
comuns necessitam, com freqncia executar 
periodicamente determinados programas ou comandos. 
Por exemplo o administrador do sistema pode 
executar um comando para limpar os diretrios que 
contenham arquivos temporrios antigos (/tmp e 
/var/tmp), evitando assim que os discos rgidos 
fiquem cheios de arquivos sem utilizadade, uma vez 
que nem todos os programas apagam os arquivos 
temporrios aps a sua execuo.  

O servio cron foi criado para atender a essa 
demanda. Cada usurio tem uma tabela do cron 
(crontab)  sua disposio, onde se pode listar os 
comandos desejados e a freqncia com que eles 
devem ser executados. O programa residente (daemon) 
cron  o encarregado de executar os comandos no 
dias e horrios definidos.

O servio at  similar ao cron, mas est limitado  
uma nica execuo: o comando  executado em um 
determinado horrio fornecido, mas no repetidas 
vezes.


Interface grfica

UNIX e Linux no incorporam a interface do usurio 
ao kernel. Ela  implementada pelos programas a 
nvel de usurio, tanto a interfaces texto como a 
grfica.

Esta configurao ganha em flexibilidade, mas tem a 
desvantagem de, pela facilidade de implementao,  
se ter uma multiplicidade exagerada de interfaces, 
uma para cada programa, tornando o sistema mais 
complexo de ser utilizado.  

O ambiente grfico primrio usado com Linux  
chamado X Window (resumido por X), o qual na 
verdade no implementa a interface grfica, somente 
disponibiliza as ferramentas para tal. As 
interfaces grficas mais populares para Linux so: 
KDE, Gnome, Motif, Open Look, etc...  

Rede

Rede pode ser definida como a conexo entre dois ou 
mais computadores, de forma que eles possam 
comunicar-se entre si. Os mtodos de conexo e 
comunicao so um pouco complexos, porm os 
resultados so muito teis.

Sistemas UNIX tm muitas facilidades para 
implantao de redes. Os servios mais bsicos, 
como impresso, cpias de segurana, sistemas de 
arquivos, etc... podem ser realizados por seu 
intermdio. Isso pode tornar a administrao do 
sistema mais simples, uma vez que permite a sua 
realizao de forma centralizada, mantendo os 
benefcios do processamento distribudo e do uso de 
microcomputadores, como por exemplo menores custos 
e melhor tolerncia  falhas.  
 
Ainda que este livro aborde superficialmente o 
tema, veja o Guia do Administrador de Redes para 
maiores informaes, inclusive uma descrio mais 
profunda sobre o funcionamento de redes.

Acesso via Rede

Acessos via rede so um pouco diferentes dos 
acessos normais, onde h uma linha serial distinta 
para cada terminal, atravs da qual  possvel 
acessar o sistema. Nos casos de acesso via rede, 
para cada usurio que conecta-se ao sistema, h uma 
conexo virtual separada, podendo haver 
(teoricamente) um nmero ilimitado delas. No  
mais possvel executar um getty para cada conexo 
virtual possvel, pois alm disso h muitas formas 
diferentes de conectar-se via rede, sendo o telnet 
e rlogin os servios TCP/IP mais utilizados. 

Acessos via rede, ao invs de um nico programa 
getty, utilizam um programa residente para cada 
tipo de acesso (por exemplo telnet e rlogin 
utilizam programas diferentes), os quais monitoram 
as tentativas de acesso. Quando percebem alguma, 
iniciam uma nova instncia de si prprios para 
controlar uma nica conexo, enquanto a instncia 
original continua monitorando novas tentativas. As 
novas instncias funcionam de maneira similar ao 
getty. 


Sistema de Arquivos de Rede (NFS)
  
Uma das maiores facilidades disponibilizadas pelos 
servios de rede  o compartilhamento de arquivos 
atravs de sistemas de arquivos em rede. O mais 
usado  conhecido como NFS (Network File System), 
tendo sido desenvolvido pela Sun.

Com um sistema de arquivos em rede, qualquer 
operao com arquivos executada por um programa em 
uma determinada mquina, pode ser enviada pela rede 
para outro computador. Esse procedimento pode 
enganar o programa, levando-o a pensar que 
todos os arquivos encontram-se no mesmo equipamento 
onde ele est sendo executado. Isso torna o 
compartilhamento de informaes muito simples, j 
que no requer nenhuma modificaes na programao.  
 
Correio eletrnico

Correio eletrnico  normalmente o mais importante 
meio de comunicao entre os usurios. Uma mensagem 
eletrnica fica armazenada em arquivos com formatos 
especiais, e programas de correio especficos so 
utilizados para ler e enviar mensagens.

Cada usurio tem uma caixa de entrada de mensagens 
(um arquivo com um formato especial) onde todas as 
novas mensagens so armazenadas. Quando algum 
envia uma nova mensagem, o programa de correio 
localiza a caixa do destinatrio e adiciona a nova 
mensagem ao arquivo de recebidas. Caso a caixa de 
entrada esteja em outra mquina, a mensagem  
enviada atravs da rede para o equipamento que 
mantm os arquivos de correio do destinatrio.    

O sistema de correio  constitudo por uma srie de 
programas. A entrega de mensagens para usurio 
remotos  realizada por um programa especfico (o 
agente de transferncia de mensagens  MTA, como 
por exemplo sendmail ou qmail), enquanto os 
programas de usurios so tambm distintos (agente 
de correio do usurio  MUA, como por exemplo pine, 
elm, kmail, Netscape,...). As caixas postais so 
normalmente armazenadas no diretrio 
/var/spool/mail.


Impresso

Hoje somente um usurio pode utilizar uma 
impressora a cada vez, mas seria antieconmico no 
compartilhar esse recurso entre os demais usurios 
da rede. A impressora  ento gerenciada por um 
software que implementa o conceito de fila de 
impresso: todos os trabalhos so colocados em uma 
fila e toda vez que a impressora finaliza um 
trabalho de impresso, o seguinte  iniciado 
automaticamente.  Isso evita que os usurios tenham 
que organizar esta fila ou que haja problemas no 
controle do uso da impressora. 

O software de fila de impresso tambm grava os 
trabalhos de impresso em disco, ou seja os textos 
so mantidos em um arquivo enquanto estejam na fila 
de impresso. Isso permite que uma aplicao 
transfira rapidamente os trabalhos de impresso 
para o software gerenciador da fila, no tendo que 
esperar que o trabalho de impresso seja finalizado 
para continuar a sua execuo. 


A estrutura do sistema de arquivos 


O sistema de arquivos  dividido em diversas 
partes, normalmente utilizando uma estrutura em 
rvore, com um sistema de arquivos chamado raiz 
(root), simbolizado por '/'. Debaixo deste podemos 
ter diversos outros, como  por exemplo: /bin, /lib, 
/etc, /dev, etc.... Um sistema de arquivos /usr 
pode conter programas e dados no atualizveis, o 
/var pode conter dados variveis (como arquivos de 
histricos) e um sistema /home pode ter arquivos 
pessoais de todos os usurios. Dependendo da 
configurao de hardware e das definies do 
administrador do sistema, a diviso pode variar 
substancialmente, sendo possvel inclusive que 
todos os contedos estejam em um nico sistema de 
arquivos. 

Adiante apresentaremos a estrutura dos sistemas de 
arquivos em mais detalhes, sendo que o documento 
que descreve o Sistema de Arquivos Padro do Linux 
cobre o tema mais profundamente.



Viso geral da rvore de diretrios 

 Dois dias depois, havia Pooh,
sentado em seu banco, balanando suas pernas,
e havia ainda, ao seu lado, quatro potes de mel...
(A.A. Milne) 

Este captulo descreve a importncia dos 
componentes padres da rvore de diretrios Linux, 
baseado no Sistema de Arquivos Padro do Linux - 
FSSTND. Ele descreve a forma usual de dividir a 
rvore de diretrios em diferentes sistemas de 
arquivos com diferentes propsitos, justificando a 
adoo de cada diviso. Algumas opes alternativas 
so tambm descritas.


===================================================
=====================
       
         Background
         O sistema de arquivos raiz
              O diretrio /etc
              O diretrio /dev
         O sistema de arquivos /usr
         O sistema de arquivos /var
         O sistema de arquivos /proc



Background

Este captulo est de certa forma baseado no 
Sistema de Arquivos Padro do Linux  (FSSTND), 
verso 1.2, o qual busca definir uma padronizao 
para a organizao da rvore de diretrios Linux. 
Tal padro tem a funo de facilitar o 
desenvolvimento e o porte para o Linux, assim como 
a administrao de mquinas Linux, uma vez que tudo 
estar localizado em caminhos conhecidos. No h 
obrigatoriedade da adoo desta padronizao,  nem 
nada que obrigue quem quer que seja a utiliz-la, 
alm do bom senso, uma vez que ela tem o apoio da 
maioria, seno da totalidade, das distribuies 
Linux. Portanto no  aconselhvel alterar o padro 
da rvore de diretrios, a menos que se tenha 
razes muito fortes para isso. O FSSTND busca 
manter os padres antigos do UNIX, conciliando-os 
com novas demandas, fazendo com o que o Linux 
torne-se mais familiar para aqueles com alguma 
experincia em outros UNIX e vice e versa.

Este captulo no  to detalhado como o FSSTND. Um 
administrador de sistemas deveria  ler aquela 
especificao  para seu um completo entendimento. 
Tambm no so descritos todos os arquivos em 
detalhes. A inteno  de apresentar uma viso 
geral, sob um ponto de vista de sistemas de 
arquivos. Maiores informaes sobre cada arquivo 
podem ser encontradas em outros pontos deste manual 
ou nas pginas de manual on-line do Linux.

A rvore de diretrios deve ser dividida em partes 
menores, cada uma com o seu prprio disco ou 
partio, facilitando questes como limites de 
tamanhos de disco ou a gerao de cpias de 
segurana. Os maiores sistemas de arquivos so o 
raiz (root), /usr , /var , e /home (vide figura 
3.1). Cada parte tem um propsito diferente. O 
desenho da rvore foi idealizado para funcionar 
tambm em rede, tanto em mquinas que necessitem 
compartilhar partes do sistemas de arquivos com 
autorizao somente de leitura (por exemplo um CD-
ROM), assim como 
em mquinas com sistemas de arquivos de rede (NFS). 


Figura 3.1: Partes da rvore de diretrios Unix. 
Linhas tracejadas indicam os limites da parties.

As regras para tal diviso so descritas a seguir.

O sistema de arquivos raiz (root)  especfico de 
cada mquina ( geralmente armazenado em um disco 
local, apesar de poder estar presente em um disco 
em memria ou em uma unidade de rede) e contm os 
arquivos necessrios para a inicializao do 
sistema e para permitir o acesso aos demais 
sistemas de arquivos. O contedo do raiz dever ser 
suficiente ainda para que o sistema possa ser 
executado em modo monousurio. Ele contm ainda 
ferramentas para resolver eventuais problemas e 
recuperar arquivos a partir das cpias de 
segurana. 

O sistema de arquivos /usr contm os comandos, 
bibliotecas, pginas de manual e outros arquivos 
imutveis, necessrios para a operao normal do 
sistema. Os arquivos em /usr no devem ser 
especficos para uma determinada mquina e no 
devem ser alterados durante o uso normal. Isso 
permite que estes arquivos possam ser 
compartilhados atravs da rede, o que pode ser 
bastante interessante pela possvel economia de 
espao em disco (o /usr pode conter facilmente 
centenas de megabytes) e torna a administrao mais 
simples (uma vez que somente o /usr na mquina 
principal necessita ser atualizado e mantido em 
dia). Mesmo que este sistema de arquivos esteja no 
disco local, ele deve ser montado com autorizao 
somente de leitura, para diminuir a chance de 
corrupo de arquivos durante um eventual acidente.   

O sistema de arquivos /var contm arquivos 
mutveis, como diretrios de arquivos temporrios 
(spool) para correio eletrnico, impresses, logs, 
pginas de manual formatadas, etc... 
Tradicionalmente o contedo de /var estaria em 
algum lugar sob o /usr, poprm isso torna 
impossvel montar o /usr com permisses somente de 
leitura  

O sistema de arquivos /home contm os diretrios 
pessoais dos usurios, ou seja, todas as 
informaes armazenadas por estes no sistema. 
Separar diretrios pessoais em sua prpria rvore 
de diretrios ou sistema de arquivos simplifica a 
gerao de cpias de segurana, uma vez que outras 
partes do sistema normalmente no necessitam serem 
copiadas com a mesma frequncia. Um /home muito 
grande pode ser dividido em diversos sistemas de 
arquivos que requerem um nvel adicional na sua 
denominao, como por exemplo /home/alunos ou 
/home/funcionrios.

Apesar das diferentes partes acima serem chamadas  
de sistemas de arquivos, no h obrigatoriedade de 
elas estejam assim separadas. Elas podem facilmente 
estarem no mesmo sistema em uma pequena mquina 
utilizada por um nico usurio que deseje mant-las 
de uma forma mais simplificada. A rvore de 
diretrios pode estar dividida ainda em diferentes 
sistemas de arquivos, dependendo do tamanho de cada 
disco e de quanto espao ser alocado para cada 
finalidade. A parte importante  que os nomes 
padres sejam mantidos e sejam utilizados da forma 
correta.   
 
A estrutura dos sistemas de arquivos Unix prev um 
agrupamento de acordo com o propsito. Ou seja os 
comandos esto todos em uma determinada rea, todos 
os arquivos de dados em uma outra, documentao em 
uma terceira, e assim por diante. Uma alternativa 
seria agrupar os arquivo de acordo com os programas 
a que eles pertenam, isto , os arquivo do Emacs 
estariam todos em um nico diretrio, todos os 
arquivos de TeX em outro, e assim por diante. O 
problema dessa abordagem reside no compartilhamento 
de arquivos (um arquivo de programas contm todos 
os tipos de arquivos: estticos, dinmicos, 
compartilhados e no compartilhados,...) e algumas 
vezes em encontrar alguns desse arquivos (por 
exemplo uma pgina de manual a ser pesquisada em um 
grande nmero de diretrios).   


O Sistema de arquivos raiz (root)

O sistema de arquivos raiz deve geralmente ser 
pequeno, deste que contm  somente os arquivos 
fundamentais para o incio e funcionamento do 
sistema. Um sistema pequeno e pouco modificado tem 
uma chance maior de no ter problemas. Um sistema 
de arquivos raiz corrompido pode geralmente 
significar que o sistema no poder ser 
inicializado, exceto atravs de medidas especiais 
(como por exemplo, por disquetes).

O diretrio raiz geralmente no contm nenhum 
arquivos, exceto talvez pela imagem de 
inicializao (boot) do sistema, normalmente 
chamada /vmlinuz. Todos os outros arquivos esto em 
subdiretrios do raiz:

/bin  
Comandos necessrios durante a inicializao do 
sistema que podem ser utilizados pelos usurios 
(provavelmente aps a ativao do sistema).
/sbin  
Similar ao /bin, porm os comandos no so 
destinados aos usurios comuns, apesar de poderem 
ser utilizados por estes se necessrio.
/etc  
Arquivos de configurao especficos da mquina.
/root  
O diretrio pessoal do superusurio (root).
/lib  
Bibliotecas compartilhadas necessrias aos 
programas residentes no sistema de arquivos raiz.
/lib/modules  
Mdulos dinmicos e carregveis pelo kernel, 
especialmente aqueles necessrios para inicializar 
o sistema em caso de acidentes (por exemplo 
programas de controle de sistemas de arquivos de 
redes).
/dev  
Arquivos de controle de dispositivos. 
/tmp  
Arquivos temporrios. Programas que so executados 
aps a ativao do sistema devem usar o /var/tmp e 
no o /tmp, uma vez que provavelmente encontraro 
mais espao disponvel naquele sistema de arquivos.
/boot  
Arquivos utilizados pelo carregador de 
inicializao do sistema, por exemplo, LILO. 
Imagens do kernel so normalmente mantidas aqui ao 
invs de no diretrio raiz. Casa haja inmeras 
imagens, o diretrio pode facilmente crescer 
demasiadamente, sendo aconselhvel mant-lo em um 
sistema de arquivos  parte. Outra razo  estar 
seguro de que as imagens do kernel estejam nos 
primeiros 1024 cilindros de um disco IDE.
/mnt 
Ponto para montagens temporrias realizadas pelo 
administrador do sistema. Programas usualmente no 
prevem a montagem automtica em /mnt. Este deve 
estar dividido em subdiretrios, como por exemplo 
/mnt/dosa sendo uma unidade de disquetes utilizando 
um sistemas de arquivos MS-DOS, e /mnt/exta pode 
ser a mesma unidade,porm com uma extenso ext2.
/proc, /usr, /var e /home
Pontos de montagem para outros sistemas de 
arquivos.

O diretrio /etc 

O diretrio /etc contm inmeros arquivos. Alguns 
deles esto descritos a seguir. Para outras 
descries  necessrio determinar a quais 
programas eles pertencem e ler as pginas de manual 
daqueles programas. Muitos arquivos de configurao 
de programas de rede esto em /etc, assim como 
encontram-se descritos no Guia de Administrao de 
Rede.  

/etc/rc  ou /etc/rc.d  ou /etc/rc?.d  
So arquivos de lote (scripts) ou os diretrios de 
arquivos de lote que so executados no incio do 
sistema. Veja o captulo sobre o processo init para 
maiores informaes.  

/etc/passwd  
A base de dados de usurios, cujos campos definem 
nome do usurio, nome real, diretrio pessoal, 
senha cifrada e outras informaes especficas de 
cada usurio. O formato est documentado na pgina 
de manual do comando passwd (man passwd) ou no 
Apndice de Comandos e Programas Relacionados.

/etc/fdprm  
A tabela de parmetros de disquetes. Descreve os 
diferentes formatos disponveis.  utilizada pelo 
programa setfdprm. Para maiores informaes veja a 
pgina de manual on-line setfdprm ou no Apndice de 
Comandos e Programas Relacionados. 

/etc/fstab  
Lista os sistemas de arquivos montados 
automaticamente, durante a inicializao do 
sistema, pelo comando mount -a (em etc/rc ou 
arquivo de inicializao similar). Sob Linux, 
contm ainda informaes sobre as reas de swaps 
(swap) usadas automaticamente pelo comando swapon -
a. Veja a pgina de manual do comando mount para 
maiores informaes ou o Apndice de Comandos e 
Programas Relacionados.

/etc/group  
Similar ao /etc/passwd, porm descreve grupos ao 
invs de usurios. Veja a pgina de manual de grupo 
para maiores informaes ou o Apndice de Comandos 
e Programas Relacionados.

/etc/inittab  
Arquivo de configurao do init.

 /etc/issue  
Sada do programa getty antes do prompt de acesso 
ao sistema. Normalmente contm uma breve descrio 
ou mensagens de boas-vindas. O contedo fica a 
critrio do administrador do sistema.

/etc/magic  
O arquivo de  configurao para o comando file. 
Contm as descries de vrios formatos de 
arquivos. Veja as pginas de manual de magic e file 
para maiores informaes ou o Apndice de Comandos 
e Programas Relacionados.
 
/etc/motd  
A mensagem do dia, automaticamente apresentada aps 
um acesso bem sucedido. Contedos so a critrio do 
administrador do sistema. Normalmente so usadas 
para enviar informaes para os usurios, como por 
exemplo avisos de desligamentos planejados.

/etc/mtab  
Lista dos sistemas de arquivos montados. 
Inicialmente configurado por programas de lotes e 
posteriormente atualizado pelo comando mount. Usado 
quando uma lista de sistemas de arquivos  
necessria, como por exemplo pelo comando df.

/etc/shadow  
Arquivos de segurana de senhas em sistemas onde o 
software shadow password esteja instalado. Esta 
opo move as senhas cifradas de /etc/passwd para o 
arquivo /etc/shadow, o qual somente pode ser lido 
pelo superusurio (root). Isso d uma maior 
segurana s senhas dos usurios.

/etc/login.defs  
Arquivo de configurao do programa de acesso ao 
sistema (login).

/etc/printcap  
Similar ao /etc/termcap, mas direcionado a 
impressoras e com sintaxe diferente.  

/etc/profile , /etc/csh.login , /etc/csh.cshrc  
Arquivos executados no acesso ou em tempo de incio 
do sistema pelos ambientes de trabalho Bourne Shell 
ou C Shell. Estes permitem ao administrador 
utilizar padres de variveis para todos os 
usurios. Veja as pginas de manual especficas dos 
respectivos ambientes ou o Apndice de Comandos e 
Programas Relacionados.

/etc/securetty  
Identifica terminais seguros, ou seja aquele nos 
quais  permitido que o superusurio acesso o 
sistema. Normalmente somente as consoles virtuais 
so listadas, tornando muito difcil obter os 
privilgios de superusurio do sistema atravs da 
rede ou de uma conexo via modem.

/etc/shells  
Lista os ambientes de trabalho (shells) 
autorizados. O comando chsh permite que os usurios 
mudem o ambiente padro durante o acesso ao 
sistema, porm somente para aqueles listados neste 
arquivo. ftpd, o servidor de processos que prov os 
servios de transferncia de arquivos em uma 
mquina, checar se o ambiente do usurio est 
listado em /etc/shells e no aceitar acessos que 
no estejam l presentes.

/etc/termcap  
O arquivo de configurao de terminal. Descreve as 
diversas seqncias de "escape" para os diversos 
terminais. Os programas ao invs de escreverem 
diretamente uma seqncia que somente funcionaria 
em determinado tipo de terminal, devem buscar a 
seqncia correta para fazer o que quer que seja em 
/etc/termcap, resultando que devem funcionar na 
maioria dos terminais suportados. Veja as pginas 
de manual termcap, curs_termcap e terminfo para 
maiores informaes ou no Apndice de Comandos e 
Programas Relacionados. 
	
O diretrio /dev 
O diretrio /dev contm arquivos especiais 
(drivers) de controle de todos os dispositivos. 
Estes arquivos utilizam uma denominao especial 
descrita na lista Device. Os arquivos de controle 
so criados durante a instalao, e posteriormente 
atravs do programa /dev/MAKEDEV. O 
/dev/MAKEDEV.local  um programa de lotes escrito 
pelo administrador do sistema e que cria somente os 
arquivos de controles de dispositivos locais que 
no faam parte do padro do MAKEDEV, como arquivos 
de controle para dispositivos especiais.

O sistema de arquivos /usr
O sistema de arquivos /usr normalmente tem um 
tamanho razovel, uma vez que todos os programas 
esto ali instalados. Todos os arquivos em /usr 
normalmente vem com a distribuio Linux, sendo que 
programas instalados localmente esto normalmente 
em /usr/local. Isso torna a atualizao do sistema 
possvel para uma nova verso da distribuio ou 
mesmo para uma distribuio completamente nova, sem 
que seja necessrio instalar todos os programas 
novamente. Alguns dos subdiretrios de /usr esto 
listados a seguir (outros menos importantes podem 
ser encontrados no FSSTND para maiores 
informaes). 

/usr/X11R6  
Os arquivos do sistema X Window. Para simplificar o 
desenvolvimento e a instalao do X, seus arquivos 
no foram integrados ao restante do sistema. H uma 
rvore de diretrios sob /usr/X11R6 similar ao 
/usr.

/usr/X386  
Similar ao /usr/X11R6 , mas destinado a verso 5 do 
X11.
 
/usr/bin  
Praticamente todos os comandos de usurios. Alguns 
outros podem ser encontrados em /bin ou 
/usr/local/bin.

/usr/sbin  
Comandos de administrao do sistema que no 
necessitem estar no sistema de arquivos raiz, como 
por exemplo programas de servidores.

/usr/man , /usr/info , /usr/doc  
Pginas de manual, documentos Info GNU e diversos 
outros documentos, respectivamente.
 
/usr/include  
Arquivos header para a linguagem de programao C. 
Este diretrio deveria estar sob /usr/lib, porm 
por tradio tem sido suportado neste formato.

/usr/lib  
Arquivos estticos de dados para programas e 
subsistemas, incluindo alguns arquivos de 
configurao de todo o site. O nome lib vem de 
library (biblioteca), pois originalmente as 
bibliotecas de programao eram armazenadas neste 
subdiretrio.
 
/usr/local  
O local para softwares instalados localmente e 
outros arquivos.

O sistema de arquivos /var 
O sistema de arquivos /var contm dados que so 
alterados quando o sistema est sendo executado.  
especfico de cada sistema, ou seja, no 
compartilhado atravs da rede com outros 
equipamentos.

/var/catman  
Um cache para pginas de manual que so formatadas 
quando solicitadas. Os fontes para as pginas so 
armazenados em /usr/man/man*, sendo que algumas 
pginas podem vir pr-formatadas, estando 
armazenadas em /usr/man/cat*.  Outras pginas 
necessitam ser formatadas quando acessadas, sendo 
que a verso final fica armazenada em /var/man, 
fazendo com outro usurio que necessite de uma 
verso formatada, tenha ela pronta e disponvel. O 
diretrio /var/catman  freqentemente esvaziado, 
da mesma forma que os arquivos temporrios.   

/var/lib  
Arquivos que mudam enquanto o sistema  executado 
normalmente.
 
/var/local  
Dados variveis para programas que estejam 
instalados em /usr/local, por exemplo programas que 
foram instalados pelo administrador do sistema. 
Note-se que mesmo quando instalado localmente estes 
programas podem usar ainda outros diretrios /var, 
como por exemplo /var/lock.

/var/lock  
Arquivos de controle. Muitos programas seguem uma 
conveno de criarem arquivos em /var/lock para 
indicar que eles esto utilizando um dispositivo em 
particular ou um determinado arquivo. Outros 
programas percebero a existncia do arquivo de 
controle e no tentaro utilizar o mesmo 
dispositivo ou arquivo enquanto o arquivo existir.

/var/log  
Arquivos de histricos de vrios programas, 
especialmente o de acesso (var/log/wtmp, o qual 
registra todas as entradas e sadas do sistema) e 
syslog (var/log/messages, o qual contm as 
mensagens do kernel e programas do sistema). 
Arquivos em /var/log podem crescer indefinidamente 
com frequncia e podem requerer limpezas 
peridicas.  

/var/run  
Arquivos que contm informaes sobre o sistema e 
que so vlidas at a prxima inicializao. Por 
exemplo /var/run/utmp contm informaes sobre os 
usurios atualmente conectados.

/var/spool  
Diretrios de mensagens, notcias, filas de 
impresso e outros trabalhos em fila. Cada 
funcionalidade tem o seu prprio subdiretrio sob 
/var/spool, como por exemplo as mensagens de 
correio eletrnico esto armazenadas em 
/var/spool/mail.  

/var/tmp  
Arquivos temporrios que sejam muito grandes ou que 
necessitem existir por um perodo maior que o 
definido para /tmp. Note-se que o administrador do 
sistema poder no permitir arquivos muitos antigos 
tambm em /var/tmp.  

O sistema de arquivos /proc 

O sistema de arquivos /proc contm um conjunto de 
arquivos virtual. Na verdade ele no existe em um 
disco rgido, mas ao invs  criado em memria pelo 
kernel, sendo usado para prover informaes sobre o 
sistema (originalmente sobre os processos, da a 
origem de seu nome). Alguns dos arquivos mais 
importantes e diretrios so detalhados abaixo. 
Este sistema de arquivos  descrito mais 
detalhadamente na pgina de manual proc ou no 
Apndice de Comandos e Programas Relacionados.

/proc/1  
Um diretrio com as informaes do processo nmero 
1 (init). Cada processo tem um diretrio embaixo de 
/proc, cujo nome equivale ao seu nmero de 
identificao.

/proc/cpuinfo  
Informaes sobre o processador, tais como tipo, 
fabricante, modelo, e performance.
 
/proc/devices  
Lista de programas de controle de dispositivos 
configurados no kernel atualmente em execuo.

/proc/dma  
Mostra quais canais DMA esto sendo utilizados no 
momento.
 
/proc/filesystems  
Sistemas de arquivos configurados no kernel.
 
/proc/interrupts  
Mostra quais interrupes esto em uso  e quantas 
existem.
 
/proc/ioports  
Apresenta quais portas de entrada e sada esto em 
uso no momento.
 
/proc/kcore  
Imagem da memria fsica do sistema. Tem exatamente 
o mesmo tamanho da memria fsica, mas no ocupa 
toda aquela rea, sendo normalmente gerada durante 
o acesso por um determinado programa.

/proc/kmsg  
Mensagens de sada do kernel. So direcionadas 
tambm para o syslog.

 /proc/ksyms  
Tabela de smbolos para o kernel. 
 
/proc/loadavg  
A carga mdia do sistema, contendo trs indicadores 
de quanto trabalho o sistema est executando no 
momento.

/proc/meminfo  
Informaes sobre o uso de memria, tanto fsica 
como de virtual de swap (swap)

/proc/modules  
Descreve quais mdulos esto carregados no momento.
 
/proc/net  
Informaes sobre a situao dos protocolos de 
rede.
 
/proc/self  
Uma ligao simblica para o diretrio de processos 
(/proc). Quando dois processos acessam /proc, podem 
utilizar diferentes ligaes, o que  conveniente 
para programas que utilizem este diretrio como seu 
diretrio de processos.
 
/proc/stat  
Diversas estatsticas sobre o sistema, como o 
nmero de pginaes desde seu incio, I/O, 
processos executados, etc...
 
/proc/uptime  
Tempo que o sistema est ativo.
 
/proc/version  
Verso do kernel do sistema.

Note-se que enquanto os arquivos acima so de fcil 
leitura, por estarem em formato texto, eles podem 
eventualmente estar em outros formatos, de leitura 
mais complexa. H muitos comandos que lem os 
arquivos acima e formatam o seu contedo para um 
melhor entendimento. Por exemplo o programa free l 
o contedo de /proc/meminfo e converte as 
quantidades dadas em bytes em kilobytes, com  
algumas pequenas informaes adicionais.





Usando discos e outros dispositivos de 
armazenamento

" Em um disco vazio pode-se pesquisar eternamente"

Ao instalar ou atualizar o sistema,  necessrio 
ter uma quantidade razovel de espao em disco. Ao 
gerar-se sistemas de arquivos em disco, inmeros 
arquivos podem ser armazenados e espaos podem ser 
reservados para as diferentes partes do sistema. 
 
Este captulo explica todas estas atividades. 
Normalmente, uma vez que o sistema esteja 
configurado, no  necessrio executar esta 
atividade novamente, exceto ao se utilizar 
disquetes. Ser necessrio retornar a este captulo 
caso um novo disco seja adicionado ao sistema ou se 
deseje refinar a utilizao do disco j instalado.


As atividades bsicas na administrao dos discos 
so:
? Formatar o disco. Nesta atividade vrias tarefas 
so executadas, como por exemplo a  checagem de 
setores defeituosos (a formatao hoje no  
mais necessria para diversos discos rgidos).
? Particionar o disco. Indicado caso estejam 
previstas a execuo de diversas tarefas 
independentes entre si. Uma razo para o 
particionamento  manter diferentes sistemas 
operacionais no mesmo disco, outra seria a 
manuteno de arquivos de usurios separados de 
arquivos do sistema, simplificando a gerao de 
cpias de segurana e auxiliando na proteo dos 
arquivos do sistema operacional.
? Gerar um sistema de arquivos (de tipo mais 
adequado) para cada disco ou partio. O disco 
em si no tem significado para o Linux, at que 
um sistema de arquivos seja criado e acessado.
? Organizar diferentes sistemas de arquivos para 
formar uma nica rvore de diretrios, 
automtica ou manualmente montadas (note-se que 
sistemas de arquivos montados manualmente, 
necessitam ser desmontados da mesma forma). 

O captulo 5 contm ainda informaes sobre memria 
virtual e cache de disco, as quais so necessrias 
para se conhecer o correto uso do disco.

Neste captulo explicaremo todo o necessrio para 
conhecer discos rgidos, disquetes, CD-ROMs e 
unidades de fita.


=================================================== 

          Dois tipos de dispositivos
          Discos rgidos
          Discos flexveis
          CD-ROMs
          Fitas
          Formatao
          Parties 
               MBR, setores de inicializao e 
tabela de parties
               Parties lgicas e estendidas
               Tipos de partio
               Particionando um disco rgido
               Arquivos de dispositivos e parties
          Sistema de arquivos
              O que  um sistema de arquivos?
               Diversidade de sistemas de arquivos 
               Qual  sistema de arquivos deve ser 
usado?
               Criando um sistema de arquivos
               Montando um sistema de arquivos
               Verificando a integridade de um 
sistema de arquivos com fsck
               Verificando blocos com erro em 
discos rgidos
                Evitando fragmentao
                Outras ferramentas para todos 
sistemas de arquivos 
                Outras ferramentas para sistemas de 
arquivos ext2
          Discos sem sistemas de arquivos
          Alocando espao em disco
               Esquemas de particionamento
               Requisitos de espao      
               Exemplos de alocao de espao em 
disco  
               Adicionado espao em disco ao Linux
               Dicas para economizar espao 
     

Dois tipos de dispositivos

Unix, e tambm o Linux, reconhecem dois tipos de 
dispositivos: de acesso randmico em blocos (como 
discos rgidos) e dispositivos a caracter (como 
fitas e linhas seriais), alguns dos quais podem 
tambm ser de acesso randmico, sendo outros de 
acesso sequencial. Cada dispositivo suportado  
representado no sistema de arquivos como um arquivo 
de dispositivo. Ao ler ou gravar em um arquivo de 
dispositivo, as informaes vo e vem para o 
dispositivo por ele representado. Desta forma 
nenhum programa especial (e nenhum mtodo especial 
de programao, como descobrir interrupes ou 
vasculhar portas seriais)  necessrio para acessar 
os dispositivos. Por exemplo para enviar um arquivo 
para uma impressora pode-se simplesmente comandar: 

     $ cat filename > /dev/lp1 
     $ 

e o contedo do arquivo ser impresso (o arquivo 
obviamente deve estar em um formato ininteligvel 
para a impressora). Note-se que no  exatamente 
uma boa idia ter-se diversos arquivos direcionados 
para a impressora atravs do comando cat. Deve-se 
utilizar o comando lpr, que assegura que somente um 
arquivo ser impresso por vez, e enviar o arquivo 
seguinte imediatamente aps a concluso da 
impresso do anterior. Algo similar pode ser 
necessrio para a maioria dos dispositivos. Na 
verdade, raramente os arquivos de dispositivos so 
utilizado diretamente. 

Desde que os dispositivos so apresentados como 
arquivos no sistema de arquivos (no diretrio 
/dev),  fcil verificar quais dispositivos existem 
utilizando-se por exemplo  o comando ls ou outro 
similar. Na sada do comando ls -l, a primeira 
coluna indica o tipo de arquivo e suas permisses. 
Um exemplo ao examinar-se um dispositivo serial:

$ ls -l /dev/cua0 
crw-rw-rw- 1 root uucp 5, 64 Nov 30 1993 /dev/cua0 
$ 

O primeiro caracter na primeira coluna acima, isto 
 `c' em crw-rw-rw-, mostra-nos o tipo do arquivo, 
neste caso um dispositivo a caracter. Para arquivos 
comuns o primeiro caracter ser `-', para 
diretrios ser 'd' e para dispositivos em blocos 
ser 'b'. Verifique a pgina de manual on-line do 
comando ls para maiores detalhes ou o Apndice de 
Comandos e Programas Relacionados.

Veja que normalmente todos os arquivos de 
dispositivos existem mesmo que o dispositivo em si 
no esteja instalado. Quer dizer que mesmo que 
exista um arquivo /dev/sda, no significa que 
realmente haja um disco SCSI instalado. Ter-se 
todos os arquivos de dispositivos gerados durante a 
instalao torna-a mais simples, assim como 
facilita a adio de novos componentes de hardware, 
pois no h necessidade de encontrar os parmetros 
corretos para criar os arquivos de novos 
dispositivos.

Discos Rgidos

Esta sub-seo introduz terminologias relacionadas 
com discos rgidos. Caso estes termos e conceitos 
j sejam de seu conhecimento, pode-se passar 
diretamente para a prxima sub-seo. 


A figura 4.1 apresenta um esquema das partes 
importantes de um disco rgido. Ele consiste em um 
ou mais pratos circulares, cada um com ambas as 
faces coberta por uma substncia magntica usada 
para a gravao de dados. Para cada face, h uma 
cabea de leitura e gravao que examina ou altera 
os dados ali gravados. Os pratos giram em um eixo 
comum e tipicamente a velocidade  de 3.600 
rotaes por minuto, sendo que discos de alta 
performance atingem velocidades maiores. As cabeas 
movimentam-se ao longo do raio dos pratos, cujo 
movimento combinado com a rotao dos pratos 
permite o acesso pelas cabeas a qualquer parte da 
superfcie.

O processador (CPU) e o disco comunicam-se atravs 
da controladora de discos. Isso retira dos outros 
componentes do computador o trabalho de saber como 
acessar o dispositivo, uma vez que as controladoras 
para diferentes tipos de discos podem utilizar a 
mesma interface com o restante do computador. Assim 
o restante do sistema somente necessita solicitar 
as informaes necessrias, ao invs de enviar uma 
srie complexa de sinais eltricos para mover as 
cabeas para o local adequado e esperar pelo 
correto posicionamento dos pratos e todos os demais 
passos necessrios. Na realidade a interface da 
controladora  bastante complexa, mas muito menos 
do que poderia ser um acesso direto ao disco. A 
controladora pode ainda executar outras tarefas 
como cache e realocao de setores defeituosos.  

Estas so as informaes necessrias para entender 
o funcionamento do hardware. H ainda muitos outros 
aspectos, como o motor que gira os pratos e move as 
cabeas, o qual eletronicamente controla as partes 
mecnicas do disco, porm estes aspectos no so 
relevantes para o processo de entendimento dos 
princpios bsicos do disco. 

A superfcie dos pratos  normalmente dividida em 
anis concntricos, chamados trilhas e estes por 
sua vez esto divididos em setores. Esta diviso  
utilizada para especificar as localizaes dentro 
do disco e para alocao de espao para os 
arquivos. Para encontrar um determinado ponto em um 
disco, deve-se dizer "face 3, trilha 5, setor 7". 
Normalmente o nmero de setores  o mesmo em todas 
as trilhas e todos os setores tem o mesmo tamanho 
fsico, cabendo nas trilhas externas maiores. 
Tipicamente um setor comporta 512 bytes de dados. O 
disco por si s no pode manipular quantidades 
menores de dados em um setor.
 
Figura 4.1: Desenho esquemtico de um disco rgido

Cada face  dividida em trilhas (e setores) de 
mesma formato. Assim quando uma cabea est sobre 
uma trilha, as cabeas das outras faces esto na 
mesma trilha correspondente. Todas as trilhas 
correspondentes formam um cilindro. O movimento das 
cabeas de uma trilha (ou cilindro) para outro 
utiliza um determinado intervalo de tempo. Ento se 
os dados que so normalmente acessados de forma 
conjunta (digamos um arquivo) estiverem em 
localizaes contguas dentro do disco, o movimento 
das cabeas ser menor, melhorando a performance do 
sistema. Porm nem sempre  possvel armazenar os 
arquivos desta forma, e arquivos que esto 
dispostos em diversos locais do disco so chamados 
de fragmentados.  

O nmero de faces (ou cabeas, que  o mesmo), 
cilindros e setores varia bastante. A especificao 
deste nmero  chamada geometria do disco rgido. A 
geometria  normalmente arquivada de forma 
especial, em uma posio da memria alimentada por 
pilhas, chamada CMOS RAM, da qual o sistema 
operacional pode recuperar durante a inicializao 
do sistema.

Infelizmente a BIOS tem um desenho limitado, o que 
torna impossvel especificar na CMOS RAM um nmero 
de trilhas maiores que 1.024, o que  muito pouco 
para poder controlar discos maiores. A sada 
encontrada para isso foi a controladora "mentir" 
sobre a geometria e converter os endereos dados 
pelo computador em endereos corretos. Por exemplo, 
consideremos que um disco rgido tenha 8 cabeas, 
2048 trilhas e 35 setores por trilha. A 
controladora pode informar que o disco tem 16 
cabeas, 1024 trilhas e 35 setores por trilha, no 
excedendo o limite do nmero de trilhas e dividindo 
por 2 o nmero de cabeas e multiplicando por dois 
o de trilhas para chegar  capacidade exata do 
disco. Na realidade a matemtica pode ser um pouco 
mais complicada, porque os nmeros podem no ser 
to exatos como no nosso exemplo, porm estes 
detalhes no so relevantes para o entendimento do 
princpio. Esta converso distorce a viso do disco 
pelo sistema operacional, tornando impraticvel o 
uso de todos os dados em um cilindro para o 
incremento da performance.   

A converso  somente um dos problemas em discos 
IDE. Discos SCSI tem um nmero seqencial de 
setores, isto  a controladora traduz o nmero 
seqencial do setor  em um endereo composto po 
cabea, cilindro e setor, e usa um mtodo 
completamente diferente de comunicao entre a CPU 
e a controladora, no tendo este tipo de problema. 
Note-se que de qualquer forma o computador pode 
tambm no saber tambm a real geometria de um 
disco SCSI. 

Desde que o Linux com frequncia no conhecer a 
real geometria de um disco, seus sistemas de 
arquivos sequer tentaro manter os arquivos em um 
nico cilindro. Ao invs disso ele tentar utilizar 
setores consecutivos, o que proporciona quase a 
mesma performance. O tema um pouco mais complicado 
 o cache de disco  e acessos automticos feitos 
pela controladora.  

Cada disco rgido  representado por um arquivo de 
dispositivo distinto. Eles podem (normalmente) ser 
somente um ou dois para discos IDE, e so 
conhecidos como /dev/hda, /dev/hdb, /dev/hdc e 
/dev/hdd, respectivamente. Discos SCSI so 
conhecidos como /dev/sda, /dev/sdb, /dev/sdc e 
/dev/sdd. Convenes similares para nomes existem 
para outros tipos de discos (que podem ser 
conhecidos na lista Linux de dispositivos de Peter 
Anvin). Note-se que os arquivos de dispositivos de 
discos rgidos do acesso a todo o disco, sem 
preocupar-se com as parties (que sero discutidas 
adiante), e pode ser simples misturar as 
informaes entre as parties caso no se tenha 
cuidado. Os arquivos de dispositivos de discos so 
normalmente utilizados somente para a obteno de 
dados do registro mestre de inicializao (MBR). 

Disquetes

Um disquete consiste em uma membrana flexvel 
coberta em um ou ambos os lados com uma substncia 
magntica similar a de um disco rgido. O disquete 
por si s no tem uma cabea de leitura e gravao, 
a qual est na unidade de disquetes. Um disquete 
corresponde a um prato do disco rgido, porm   
removvel e uma unidade de disquetes pode tratar 
diferentes disquetes, enquanto um disco rgido  
uma unidade indivisvel.

Como um disco rgido, um disquete est dividido em 
trilhas e setores (e as trilhas de ambos os lados 
do disquete equivalem a um cilindro), mas muito 
menores e em menor quantidade que em um disco 
rgido.

Uma unidade de disquetes pode normalmente tratar 
diferentes formatos de disquetes de forma 
automtica, como por exemplo, uma unidade de 3.5" 
pode usar tanto discos de 720 Kb como de 1.44 Mb. 
Porm o dispositivo ter que operar de forma um 
pouco diferente e o sistema operacional dever 
saber qual o real tamanho do disquete. Para tanto  
h diversos arquivos de dispositivos para unidades 
de disquetes, uma para cada combinao de 
dispositivo e tipo de disquete. H /dev/fd0H1440 
que  o primeiro dispositivo de disquetes (fd0), 
que serve para uma unidade de 3.5", de alta 
densidade (high - H) e com a capacidade de 1440 Kb. 

Os nomes dos arquivos de controle de unidades de 
disquetes so complexos, porm no Linux h tipos 
especiais de dispositivos que podem detectar 
automaticamente o tipo de disco na unidade. Isso 
funciona atravs da tentativa de ler o primeiro 
setor de um disquete recm inserido, usando 
diferente tipos, at que um deles consiga ler o 
disquete corretamente. Isso naturalmente requer que 
o disquete esteja formatado. Os dispositivos 
automticos so chamados /dev/fd0, /dev/fd1 e assim 
por diante. 

Os parmetros dos dispositivos automticos a serem 
utilizados podem ser configurados atravs do 
programa setfdprm. Isso pode ser til caso no se 
utilizem tamanhos usuais de discos, ou se, por 
exemplo, eles tm um nmero diferente de setores, 
ou se a autodeteco falhou por alguma razo.

Linux pode manusear diversos formatos de disquetes 
no padronizados, alm dos padres. Alguns desses 
formatos requerem a utilizao de programas 
especiais de formatao. No comentaremos esses 
tipos, porm pode-se conhec-los ao se examinar o 
arquivo /etc/fdprm. Ele especifica os parmetros 
que o comando setfdprm reconhece. 

O sistema operacional deve saber toda a vez que o 
disquete for substitudo na unidade, para, por 
exemplo, evitar, manter dados no cache de um 
disquete no mais disponvel. Infelizmente a linha 
de sinalizao utilizada para transmitir esta 
informao algumas vezes pode no estar disponvel 
ou pior nem sempre haver notificao ao se usar o 
dispositivo dentro do DOS. Caso problemas estranhos 
estejam ocorrendo, esta pode ser uma possvel 
razo. O nico meio de corrigir este problema  
substituir a unidade de disquetes. 
 
CD-ROM

Um dispositivo CD-ROM utiliza um leitor tico e um 
disco recoberto de plstico. A informao  gravada 
na superfcie do disco  em pequenos orifcios 
alinhados ao redor de uma espiral do centro para a 
borda. O dispositivo direciona um feixe laser na 
espiral para poder ler os dados contidos no disco. 
Quando o laser atinge um dos orifcios, o laser  
refletido de uma determinada forma, quando ele 
atinge a superfcie lisa  refletido de outra. Isso 
permite a criao de um cdigo de bits e portanto 
de informao. O restante  simples, mera mecnica.

Dispositivos de CD-ROM so lentos, quando 
comparados a discos rgidos. Onde um disco rgido 
tpico tem um tempo mdio de acesso de menos de 15 
milisegundos, um CD-ROM rpido pode chegar a 
dcimos de segundos a cada leitura. A taxa atual de 
transferncia est acima das centenas de kilobytes 
por segundo. A lentido dos CD-ROM significa que 
eles no so to agradveis de usar quanto os 
discos rgidos. Porm para instalaes de novos 
softwares, CD-ROMs so muito indicados , uma vez 
que a velocidade no  essencial nestes momentos. 
Algumas distribuies de Linux provem sistemas de 
arquivos prontos para execuo em CD-ROMs, tornando 
a instalao mais simples e economizando bastante 
espao em disco.   

H muitas formas de arrumar os dados em um CD-ROM. 
O mais popular  o especificado pelo padro 
internacional ISO 9660. Este padro especifica um 
sistema de arquivos mnimo, que  mais rudimentar 
do que o do DOS. Por outro lado,  to simples que 
qualquer sistema operacional poder mape-lo em 
modo nativo.
 
Para uso normal em Unix, o sistema de arquivos ISO 
9660 no  muito til, sendo que foram produzidas 
extenses denominadas Rock Ridge. Estas extenses 
permitem nomes longos de arquivos, ligaes 
simblicas e uma srie de outras facilidades, 
tornando o CD-ROM similar a qualquer sistema de 
arquivos Unix. E melhor ainda, um sistema de 
arquivos Rock Ridge  ainda um sistema de arquivos 
vlido para o ISO 9660, tornando-o passvel de 
utilizao tambm sob sistemas no-Unix. Linux 
suporta ambos os formatos: ISSO 9660 e Rock Ridge, 
sendo as extenses reconhecidas automaticamente.
  
O sistema de arquivos  somente metade da questo. 
Muitos CD-ROMs contm dados que requerem programas 
especiais de acesso e muitos desse programas podem 
no ser compatveus com Linux (exceto, 
possivelmente, sob o dosemu, a emulao Linux do 
MS-DOS).

Um dispositivo de CD-ROM  acessado atravs do 
arquivo de dispositivo correspondente. H muitas 
formas de conectar uma unidade de CD-ROM ao 
computador: via SCSI, via placa de som, ou via 
EIDE. Os detalhes de hardware esto fora do escopo 
deste livro. Porm o tipo de conexo definir o 
arquivo de dispositivo.  Consulte a lista de 
dispositivos de Peter Anvin para maiores detalhes.



Fitas

Uma unidade de fitas utiliza fita similares aos 
cassetes usados para msica. Uma fita  serial por 
natureza, o que significa que para obter qualquer 
informao ali armazenada,  necessrio passar por 
todas as outras partes que estejam antes do ponto 
desejado. Um disco pode ser acessado 
randomicamente, isto , pode buscar-se um dado 
diretamente, independente do ponto em que esteja no 
disco. O acesso serial torna as fitas bastante 
lentas, quando comparadas com disco rgidos.

Por outro lado, fitas so relativamente baratas, 
uma vez que elas no necessitem ser rpidas. Elas 
podem facilmente ser geradas em um perodo longo, 
porm contendo uma grande quantidade de dados. Isso 
torna as fitas muito apropriadas para atividades 
como arquivamentos ou cpias de segurana, os quais 
no requerem grandes velocidades, devido aos 
benefcios de custos baixos e alta capacidade de 
armazenamento. 

Formatando
Formatar  o processo de inicializar uma mdia 
magntica, gerando-se as marcas de trilhas e 
setores. Antes de um disco ser formatado, a sua 
superfcie magntica  uma total confuso de sinais 
magnticos. Aps a sua formatao, alguma ordem  
dada a esse caos, basicamente delineando-se as 
linhas onde as trilhas estaro presentes e onde 
elas estaro divididas em setores. O detalhamento 
deste processo mostra algumas diferenas em relao  
ao princpio, porm dentro do escopo deste manual 
isto no e relevante. O que realmente importa  que 
um disco no pode ser utilizado at que seja 
formatado. 

A terminologia pode ser um pouco confusa aqui: no 
DOS a palavra formatao  utilizada com a 
abrangncia tambm da criao dos sistemas de 
arquivos (o qual ser discutido a seguir). E estes 
dois processo esto geralmente combinados, 
especialmente em disquetes. Quando uma distino 
faz-se necessria, a real formatao  chamada de 
baixo nvel, enquanto que a gerao de sistemas de 
arquivos  denominada de alto nvel. Em Unix as 
duas so denominadas: formatao e criao de 
sistemas de arquivos, e  assim que utilizaremos 
neste livro. 

Para discos IDE e alguns SCSI, a formatao  
realizada na fbrica e no necessita ser repetida, 
ou no h porque preocupar-se com o tema. Na 
verdade formatar um disco rgido pode causar 
problemas no seu funcionamento, por exemplo, por 
ser necessrio formatar de uma forma especial ou 
diferente para permitir a realocao automtica de 
setores defeituosos.

Discos que necessitem ser formatados freqentemente 
requerem um programa especial, uma vez que a 
interface de formatao lgica dentro do 
dispositivo varia de disco para disco. O programa 
de formatao  normalmente fornecido com a 
controladora ou atravs de um programa DOS, sendo 
que nenhum dos dois tende a ser de simples 
utilizao sob o Linux.  

Durante a formatao pode-se encontrar pontos ruins 
no disco, chamados de blocos ou setores 
defeituosos. Algumas vezes isso  administrado pelo 
prprio dispositivo, mas mesmo assim, caso o seu 
nmero seja muito grande,  algo precisar ser feito 
para evitar o uso destas partes do disco.  A 
soluo para essa situao reside nos sistemas de 
arquivos, ou seja em manter as informao acima 
descritas. Alternativamente pode-se criar uma 
pequena partio que abrigue somente os setores 
defeituosos do disco, sendo essa abordagem mais 
adequada caso existam pores substanciais do disco 
com defeitos, uma vez que essas grande reas 
normalmente geram problemas em outros sistemas de 
arquivos.   

Disquetes so formatados com fdformat. O arquivo de 
dispositivos da unidade de disquetes  informado 
atravs de parmetro. Por exemplo. O seguinte 
comando  dado para formatar um disco de 3.5 e de 
alta densidade na primeira unidade de disquetes:

     $ fdformat /dev/fd0H1440 
     Double-sided, 80 tracks, 18 sec/track. Total 
capacity 1440 kB. 
     Formatting ... done 
     Verifying ... done 
     $ 

Note-se que caso se necessite auto-detectar o tipo 
de dispositivo (por exemplo /dev/fd0), deve-se 
configurar os parmetros com o comando setfdprm 
primeiramente. Para atingir o resultado desejado, 
deve-se observar os seguintes passos:   

$ setfdprm /dev/fd0 1440/1440 
$ fdformat /dev/fd0 
Double-sided, 80 tracks, 18 sec/track. Total 
capacity 1440 kB. 
Formatting ... done 
Verifying ... done 
$ 

Normalmente  mais conveniente escolher o arquivo 
de dispositivo que se adequa com o tipo de 
disquete. Note-se que isto no pode ser usado para 
formatar disquetes com uma capacidade maior de  
armazenamento do que aquela original de fbrica.

fdformat validar o disquete, isto , verificar os 
blocos defeituosos, e ainda tentar arrum-los 
diversas vezes (pode-se ouvir isto quando o barulho 
da unidade cresce substancialmente). Se o disquete 
tem somente problemas superficiais (como sujeira na 
cabea de leitura e gravao, alguns erros podem 
ser falsos), e fdformat ser executado normalmente, 
mas se um erro real for encontrado, o processo ser 
finalizado imeadiatamente. O kernel apresentar 
mensagens de erro para cada um que seja encontrado, 
as quais sero apresentadas na console, ou, caso o 
syslog esteja sendo usado,  no arquivo 
/usr/adm/messages. fdformat no identificar nem 
apresentar a localizao exata do erro, pois um 
disquete  barato o suficiente para que possa ser 
substitudo imediatamente.    

$ fdformat /dev/fd0H1440 
Double-sided, 80 tracks, 18 sec/track. Total 
capacity 1440 kB. 
Formatting ... done 
Verifying ... read: Unknown error 
$ 
O comando badblocks pode ser utilizado para 
pesquisar qualquer disco ou partio na deteco de 
blocos defeituosos (inclusive em um disquete). Ele 
no formata o disco, portanto pode ser utilizado 
mesmo para sistemas de arquivos j existentes. O 
exemplo a seguir verifica um disquete de 3.5 que 
apresentou dois blocos com defeitos: 


$ badblocks /dev/fd0H1440 1440 
718 
719 
$ 

A sada do programa apresenta o nmero dos blocos 
defeituosos encontrados. Muitos sistemas de 
arquivos podem evitar tais blocos. Eles mantm uma 
lista destes, a qual  inicializada quando o 
sistema de arquivos  gerado e posteriormente 
atualizada. A pesquisa inicial por blocos 
defeituosos pode ser realizada pelo comando mkfs 
(que inicializa sistemas de arquivos), mas 
posteriormente deve ser realizada pelo comando 
badblocks e novos blocos podem ser adicionados com 
o comando fsck. Estes comandos sero descritos 
posteriormente. 

Muitos discos modernos avisam sobre blocos 
defeituosos e tentam consert-los, usando em seu 
lugar um bloco especial, que no tenha problemas e 
reservado  para estas situaes. Isso  
transparente para o sistema operacional e tal 
facilidade deve estar documentada nos manuais do 
disco rgido. Mesmo discos podem falhar caso o 
nmero de blocos defeituosos cresa demasiadamente, 
o que deve provavelmente ocasionar a inutilizao 
do dispositivo.  


Parties

Um disco rgido pode ser divido em diversas 
parties. Cada partio funciona como se fosse um 
disco rgido em separado. A idia  que se h 
somente um disco rgido, e se deseje ter por 
exemplo dois sistemas operacionais, pode-se dividi-
lo em duas parties. Cada sistema operacional 
teria a sua partio prpria, sem interferir nos 
dados do outro sistema. Desta forma eles podem 
coexistir pacificamente no mesmo dispositivo. Sem 
parties deveriam haver dois discos, um para cada 
sistema.

Disquetes no so particionados. No h razes 
tcnicas contrrias, porm pelo fato de serem to 
pequenos, parties no tm aplicao prtica nesta 
mdia. CD-ROMs tambm normalmente no so 
particionados, uma vez que  muito simples utiliz-
los como um grande disco, e dificilmente haver 
mais de um sistema operacional em um CD.

===================================================

       
               MBR, setores de inicializao e 
tabela de parties
               Parties lgicas e estendidas
               Tipos de partio
               Particionando um disco rgido
               Arquivos de dispositivos e parties


MBR, setores de inicializao e tabela de parties

As informaes de como um disco rgido est 
particionado  armazenada no seu primeiro setor 
(isto , no primeiro setor, da primeira trilha do 
primeiro prato). O primeiro setor  o registro 
mestre de inicializao (MBR) do disco. Este  o 
setor que a BIOS l e inicializa,  quando a mquina 
 ligada. O registro mestre de inicializao contm 
um pequeno programa que l a tabela de parties, 
verifica quais parties esto ativas (isto , 
marcadas como inicializveis) e l o primeiro setor 
de cada partio, o setor de inicializao da 
partio (o MBR tambm  um setor de inicializao, 
mas tem um nome diferente por executar diferentes 
funes). O setor de inicializao contm outro 
pequeno programa que l a primeira parte do sistema 
operacional armazenado naquela partio (assumindo 
que ela seja inicializvel, ou seja, que possa 
iniciar o sistema operacional) e ativa o sistema 
operacional l armazenado.

O esquema de particionamento no  definido pelo 
hardware, muito menos pela BIOS.  somente uma 
conveno que diversos sistemas operacionais 
seguem. Os poucos que no a seguem so considerados 
excees. Alguns sistemas operacionais suportam 
parties, mas uma partio que ocupe todo um disco 
e usam mtodos de particionamento interno naquela 
partio. Esse tipo de partio pode conviver 
pacificamente com outros sistemas operacionais, 
inclusive com o Linux, e no requerem medidas 
especiais, porm um sistema operacional que no 
suporte esta facilidade no poder coexistir no 
mesmo disco. 

Uma medida preventiva  anotar-se as parties em 
um papel, assim mesmo que a tabela de parties 
esteja corrompida no se perdero todos os arquivos 
(uma tabela defeituosa pode ser consertada com 
fdisk). A informao relevante  fornecida pelo 
comando fdisk l: 

$ fdisk -l /dev/hda 

Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders 
Units = cylinders of 855 * 512 bytes 

Device Boot Begin Start End Blocks Id System 
/dev/hda1 1 1 24 10231+ 82 Linux swap 
/dev/hda2 25 25 48 10260 83 Linux native 
/dev/hda3 49 49 408 153900 83 Linux native 
/dev/hda4 409 409 790 163305 5 Extended 
/dev/hda5 409 409 744 143611+ 83 Linux native 
/dev/hda6 745 745 790 19636+ 83 Linux native 
$

Parties Lgicas e estendidas

O esquema original de parties  para discos 
rgidos de PCs permite somente quatro parties . 
Isso rapidamente tornou-se muito reduzido para o 
atendimento das necessidades do mundo real, 
principalmente porque as pessoas desejavam utilizar 
diversos sistemas operacionais (Linux, MS-DOS, 
OS/2, Minix, FreeBSD, NetBSD, ou Windows/NT, para 
enumerar alguns), assim como particionar o disco 
mesmo com um nico sistema operacional  uma boa 
idia. Por exemplo a rea de swap (swap), por 
questes de performance, deve ter a sua prpria 
partio no Linux, ao invs de utilizar a partio 
principal. 

Para solucionar estes problemas de projeto, foram 
criadas as parties estendidas. Este truque 
permite que a partio primria seja particionada 
em subparties. A partio primria subdividida  
uma partio estendida, a subpartio  uma  
partio lgica. Elas comportam-se exatamente como 
parties primrias, mas so criadas de forma 
deferente, no havendo diferena de velocidade 
entre elas.  

A estrutura de parties de um disco rgido pode 
aparentar algo similar  figura 4.2. O disco  
dividido em trs parties primrias, a segunda das 
quais  dividida em duas parties lgicas. Parte 
do disco no est particionado. O disco como um 
todo e cada partio primria tem um setor de 
inicializao. 


Figura 4.2: Exemplo de particionamento de disco

Tipos de Parties

As tabelas de parties (uma no MBR e outras nas 
parties estendidas) contem um byte que identifica 
o tipo da partio.  uma tentativa de identificar 
o sistema operacional que utiliza aquela partio 
ou para qual a sua finalidade. O propsito primeiro 
era tornar possvel que dois sistemas operacionais 
utilizassem a mesma partio. Na verdade, sistemas 
operacionais no se importam com o byte de tipo de 
partio. Pior,  alguns deles o utilizam 
incorretamente como o DR-DOS.
No h um padro internacional para especificar o 
que cada byte significa, mas os mais comuns e 
aceitos esto descritos na tabela 4.1 A mesma lista 
est disponvel no programa fdisk do Linux.
 
Particionando um disco rgido

H muitos programas para criao e remoo de 
parties. A maioria dos sistemas operacionais tem 
o seu prprio, e pode ser uma boa idia us-los, 
para evitar situaes no suportadas pelos outros. 
Muitos programas so chamados fdisk, inclusive o 
programa do Linux, ou suas variaes. Detalhes 
sobre a utilizao do fdisk so apresentadas na 
pgina de manual on-line ou no Apndice de Comandos 
e Programas Relacionados. O comando cfdisk  
similar ao fdisk porm mais agradvel, por possuir 
uma interface mais amigvel ao usurio. No 
Conectiva Linux pode ainda ser encontrado o 
DiskDruid, um utilitrio extremamente poderoso.

Ao utilizar discos IDE, a partio de inicializao 
(aquela que contm os arquivos de imagem do kernel 
do sistema) deve residir inteiramente nos primeiros 
1024 cilindros. Isso deve-se ao fato que a partio 
 utilizada pela BIOS no incio do sistema ( e 
antes de carregar o sistema operacional) e a BIOS 
no pode gerenciar mais que 1024 cilindros. Pode-se 
ainda usar uma partio que esteja somente 
parcialmente nos  1024 cilindros iniciais, desde 
que todos os arquivos necessrios  inicializao 
do sistema estejam dentro do limite da BIOS. Porm 
esta  uma prtica desaconselhada pois novas 
compilaes do kernel ou fragmentaes do disco 
podem colocar os arquivos fora deste limite. De 
qualquer forma h que se estar seguro de os 
arquivos necessrios  inicializao do sistema 
estejam nos primeiros 1024 cilindros.

Algumas verses novas de BIOS e discos IDE 
conseguem efetivamente gerenciar discos com mais de 
1024 cilindros. Caso se tenha um sistema desses 
disponvel, este problema no existir e os 
arquivos de inicializao podem estar em qualquer 
ponto do disco. 

Cada partio deve ter um nmero par de setores, 
uma vez que os sistemas de arquivos Linux usam 
blocos de 1 Kb de tamanho, ou seja dois setores. Um 
nmero mpar resultar na no utilizao do ltimo 
setor. Isso no  necessariamente um problema, 
porm  bastante desagradvel e algumas verses de 
fdisk podem alertar sobre o problema.

Alterar o tamanho de uma partio normalmente 
requer que primeiramente seja efetuada uma cpia de 
segurana de tudo o que se deseje salvar e que 
esteja presente na partio (preferencialmente do 
disco todo como medida preventiva), apag-la, criar 
uma nova, e restaurar os arquivos na nova partio. 
Se a partio estiver crescendo, pode-se ter que 
tambm ajustar o tamanho de parties relacionadas 
(assim como das cpias de segurana). 

Uma vez que alterar o tamanho das parties  
bastante trabalhoso,  prefervel t-las bem 
dimensionadas desde o incio, ou ter-se um 
eficiente sistema de cpias de segurana 
implementado. Caso a instalao seja a partir de 
uma mdia que no requeira muita interveno humana 
(digamos CD-ROM comparado com disquetes),  
aconselhvel testar diferentes configuraes num 
primeiro momento, j que no h dados para serem 
copiados, tornando menos trabalhoso modificar o 
tamanho das parties diversas vezes.

H um programa para parties MS-DOS chamado fips, 
que no requer cpias e restauraes de arquivos, 
mas para outro tipo de sistema arquivos o 
procedimento completo ainda ser necessrio.

Arquivos de dispositivos e parties

Cada partio e partio estendida tem o seu 
prprio arquivo de dispositivo. A conveno da 
nomenclatura destes arquivos  formada por um 
nmero adicionado aps o nome do disco, variando de 
1 a 4 para parties primrias (independentes de 
quantas elas sejam) e de 5 a 8 para as parties 
lgicas (independente de onde elas residam). Por 
exemplo o /dev/hda1  o primeira partio primria 
no primeiro disco IDE e /dev/sdb7  a terceira 
partio estendida no segundo disco SCSI.

Sistemas de Arquivos

 
               O que  um sistema de arquivos?
               Diversidade de sistemas de arquivos 
               Qual  sistema de arquivos deve ser 
usado?
               Criando um sistema de arquivos
               Montando um sistema de arquivos
               Verificando a integridade de um 
sistema de arquivos com fsck
               Verificando erros no disco com 
badblocks
                Evitando fragmentao
                Outras ferramentas para todos 
sistemas de arquivos 
                Outras ferramentas para sistemas de 
arquivos ext2

O que so sistemas de arquivos?

Um sistema de arquivos  o mtodo e a estrutura de 
dados que um sistema operacional utiliza para 
administrar arquivos em um disco ou partio, ou 
seja a forma pela qual os arquivos esto 
organizados em um disco. A expresso tambm  
utilizada para se referenciar a uma partio ou 
disco que seja usado para armazenar os arquivos ou 
outros tipos de sistemas de arquivos. Algum pode 
dizer que h dois sistemas de arquivos, 
significando que tem duas parties nas quais 
armazena arquivos.  

A diferena entre um disco ou partio e um sistema 
de arquivos  bastantes significativa. Poucos 
programas (inclusive os programas que criam 
sistemas de arquivos) operam diretamente em setores 
no inicializados de um disco ou partio, e caso 
exista um sistema de arquivos ele ser destrudo ou 
danificado seriamente. Muitos programas operam em 
um sistema de arquivos e no funcionam em uma 
partio que no contenha um (ou que contenha um de 
tipo errado).  

Antes de uma partio ou disco ser usado como um 
sistema de arquivos ele necessita se inicializado, 
e a estrutura bsica de dados necessita ser gravada 
no disco. Este processo  chamado criao de um 
sistema de arquivos.

Muitos sistemas de arquivos Unix tem uma estrutura 
geral similar, apesar dos detalhes exatos variarem 
um pouco. Os conceitos bsicos de superbloco, 
inode, bloco de dados, bloco de diretrios e bloco 
de indireo so similares. O superbloco contm as 
informaes sobre o sistema de arquivos como um 
todo, como por exemplo seu tamanho (a informao 
exata depende do sistema de arquivos). Um inode 
contm as informaes sobre um determinado arquivo, 
exceto seu nome, o qual est armazenado no 
diretrio, junto com o nmero do inode. Uma entrada 
de diretrio  formada pelo nome e pelo nmero do 
inode que representa o arquivo. O inode contm o 
nmero de diversos blocos de dados usados para 
armazenar as informaes do arquivo. H espao 
somente para uns poucos nmeros de blocos de dados 
no inode, e,  caso um nmero maior seja necessrio, 
mais espao para ponteiros ser liberado 
dinamicamente. Esta alocao dinmica  composta 
pelos blocos de indireo que, como o nome indica, 
contm endereos para outros blocos.         

Sistemas de arquivos Unix normalmente permitem a 
criao de espaos vazios em um arquivo (isso   
feito com o comando lseek; veja a pgina de manual 
para maiores informaes ou o Apndice Comandos e 
Programas Relacionados), o que significa que o 
sistema de arquivos simplesmente aloca um espao 
de zero bytes para uma determinada parte do 
arquivo, mas nenhum setor de disco  reservado (o 
que significa que o arquivo usar um pouco menos de 
espao em disco). Isso ocorre freqentemente para 
pequenos binrios, bibliotecas compartilhadas, 
algumas bases de dados e outros poucos casos 
especiais. Espaos so implementados atravs do 
armazenamento de valores especiais de endereos de 
blocos de dados no bloco de indireo ou no inode. 
Este endereo especial significa que no h blocos 
de dados realmente alocados para aquela parte do 
arquivo, ou seja h um buraco .   
 
Espaos vazios so razoavelmente teis. No sistema 
do autor, uma medio mostrou uma economia de pelo 
menos 4 Mb de espao em disco, de um total de 200 
Mb utilizado com o sistema (2%). Veja que este 
sistema contm relativamente poucos programas e 
bases de dados. A ferramenta de medio est 
descrita no Apndice A. 

Classificao de Sistemas de Arquivos

O Linux suporta diversos tipos de sistemas de 
arquivos. Dentre esses destacamos:

minix 
O mais antigo e presumivelmente o mais confivel, 
mas bastante limitado em facilidades (algumas datas 
no aparecem , mximo de 30 caracteres para nome de 
arquivos,etc...) e restries de armazenamento (no 
mximo 64 Mb por sistema de arquivos).
 
xia 
Uma verso modificada do sistema de arquivos minix, 
o qual aumenta os limite de nomes de arquivos e de 
sistemas de arquivos, mas no introduz novas 
facilidades. No  muito popular, mas comenta-se 
que funcione muito bem.

ext2 
O mais poderoso e popular sistema de arquivos 
nativo do Linux. Desenhado para ser facilmente 
compatvel com os avanos das novas verses, sem a 
necessidade de refazimento dos sistemas de arquivos 
j existentes.   

ext 
Uma verso antiga do ext2 que no  mais compatvel 
comn verses atuais.  raro v-las instalada em 
sistemas novos e mesmo os mais antigos tem sido 
convertidos para ext2. 

Adicionalmente h o suporte a diversos outros 
sistemas de arquivos, para simplificar a swap de 
informaes com outros sistemas operacionais. Estes 
sistemas de arquivos funcionam como se fossem 
nativos, exceto pela perda de algumas facilidades 
presentes no Unix, ou apresentam algumas 
particularidades.    

msdos 
Compatibilidade com MS-DOS (e OS/2 e Windows NT) 
atravs de sistemas de arquivos FAT.

umsdos 
sistemas de arquivos msdos estendidos para suportar 
nomes longos, donos, permisses, ligaes e 
arquivos de dispositivos do Linux. Isso permite que 
um sistema de arquivos msdos possa ser usado como 
se fosse um sistema Linux, removendo a necessidade 
de uma partio distinta para o Linux.

iso9660 
O sistema de arquivos padro do CD-ROM. A extenso 
Rock Ridge que permite nomes longos tambm  
suportada automaticamente.

nfs 
Sistemas de arquivos de redes que permitem o 
compartilhamento e o fcil acesso aos arquivos 
entre diversos computadores da rede.
 
hpfs 
O sistema de arquivos do OS/2.
 
sysv 
Sistema de arquivos do System V/386, Coherent e 
Xenix. 

A opo do sistema de arquivos a ser usado depende 
da situao. Caso compatibilidade ou outras razes 
tornam um dos sistemas de arquivos no nativos 
necessrios, ento este deve ser utilizado. Caso a 
opo seja livre, ento provavelmente a deciso 
mais acertada seja usar o ext2, uma vez que ele 
traz diversas facilidades sem sofrer perda de 
performance.  

H ainda o sistema de arquivos proc, normalmente 
acessvel atravs do diretrio /proc, o qual no  
um sistema de arquivos real, apesar de parecer um. 
O sistema de arquivos proc torna mais simples o 
acesso a determinadas estruturas do kernel, como 
por exemplo a lista de processos. Isso torna a 
estrutura de dados parecer um sistema de arquivos 
que pode ser manipulado com as ferramentas usuais. 
Por exemplo para obter uma lista de todos os 
processos pode-se usar o comando: 

$ ls -l /proc 
total 0 
dr-xr-xr-x 4 root root 0 Jan 31 20:37 1 
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 63 
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 94 
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 95 
dr-xr-xr-x 4 root users 0 Jan 31 20:37 98 
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 99 
-r--r--r-- 1 root root 0 Jan 31 20:37 devices 
-r--r--r-- 1 root root 0 Jan 31 20:37 dma 
-r--r--r-- 1 root root 0 Jan 31 20:37 filesystems 
-r--r--r-- 1 root root 0 Jan 31 20:37 interrupts 
-r-------- 1 root root 8654848 Jan 31 20:37 kcore 
-r--r--r-- 1 root root 0 Jan 31 11:50 kmsg 
-r--r--r-- 1 root root 0 Jan 31 20:37 ksyms 
-r--r--r-- 1 root root 0 Jan 31 11:51 loadavg 
-r--r--r-- 1 root root 0 Jan 31 20:37 meminfo 
-r--r--r-- 1 root root 0 Jan 31 20:37 modules 
dr-xr-xr-x 2 root root 0 Jan 31 20:37 net 
dr-xr-xr-x 4 root root 0 Jan 31 20:37 self 
-r--r--r-- 1 root root 0 Jan 31 20:37 stat 
-r--r--r-- 1 root root 0 Jan 31 20:37 uptime 
-r--r--r-- 1 root root 0 Jan 31 20:37 version 
$ 
(Podem haver alguns mais, porm o exemplo acima foi 
resumido por questes didticas).

Note-se que apesar de ser chamado como sistema de 
arquivos, o proc no acessa o disco rgido. Ele 
existe somente no kernel do sistema. Toda vez que 
algum tente acessar alguma parte do sistema de 
arquivos proc, o kernel torna esta parte visvel em 
algum lugar. Ento mesmo que parea existir um 
arquivo com diversos megabytes denominado 
/proc/kcore, ele no utiliza um nico byte do disco 
rgido. 
 
Qual sistema de arquivos deve ser usado?

Faz pouco sentido utilizar muitos sistemas de 
arquivos diferentes. Atualmente ext2fs  o mais 
popular , e provavelmente a deciso mais acertada. 
Dependendo da necessidade de recursos adicionais na 
manuteno das estruturas, velocidade, segurana, 
estabilidade, compatibilidade e diversas outras 
razes, pode ser desejvel utilizar outro tipo de 
sistema de arquivos. Esta necessidade deve ser 
analisada caso a caso.

Criando um Sistema de Arquivos

Sistemas de arquivos so criado, ou melhor 
inicializados, atravs do comando mkfs. Atualmente 
h um comando especfico para cada tipo de sistema 
de arquivos. mkfs  somente uma interface que 
executa o programa adequado ao tipo desejado. 

O tipo pode ser selecionado atravs da opo t 
tipo.

Os programas acionados pelo mkfs podem ter uma 
interface de linha de comando ligeiramente 
diferente. As opes comuns e mais importantes 
esto resumidas a seguir (veja a pgina de manual 
on-line para maiores informaes ou consulte o 
Apndice Comandos e Programas Relacionados).

-t tipo_sistema_arquivos
   seleciona o tipo do sistema de arquivos 
-c pesquisa blocos defeituosos e inicializa a lista                      
de blocos ruins 
-l nome_do_arquivo 
   L a lista de blocos ruins a partir do arquivo 
informado.
 
Para criar um sistema de arquivos do tipo ext2 em 
um disquete, basta executar o comando:

$ fdformat -n /dev/fd0H1440 
Double-sided, 80 trilhas, 18 set/trilha. Capacidade 
Total 1440 Kb. 
Formatando ... feito 
$ badblocks /dev/fd0H1440 1440 > blocos-def 
$ mkfs -t ext2 -l blocos-def /dev/fd0H1440 
mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10 
360 inodes, 1440 blocos 
72 blocos (5.00%) reservados para o superusurio 
Primeiro bloco de dados=1 
Tamanho do bloco=1024 (log=0) 
Tamanho de fragmento=1024 (log=0) 
1 grupo de blocos 
8192 blocos por grupo, 8192 fragmentos por grupo 
360 inodes por grupo 

Gravando tabela de inodes: Feito
Gravando estatsticas de superblocos e sistemas de 
arquivos: Feito 
$

Inicialmente o disquete foi formatado (a opo n 
inibe a checagem de blocos defeituosos). Aps o 
comando badblocks faz a checagem e redireciona as 
mensagens de sada para o arquivo blocos-def, e 
finalmente o sistema de arquivos  criado, com a 
lista de blocos defeituosos inicializada com o que 
quer que o comando badblocks tenha encontrado.

A opo c pode ser utilizada em conjunto com o 
comando mkfs, ao invs do comando badblocks e de um 
arquivo em separado, conforme o exemplo a seguir: 

$ mkfs -t ext2 -c /dev/fd0H1440 
mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10 
360 inodes, 1440 blocos 
72 blocos (5.00%) reservados para o superusurio 
Primeiro bloco de dados=1 
Tamanho do bloco=1024 (log=0) 
Tamanho de fragmento=1024 (log=0) 
1 grupo de blocos 
8192 blocos por grupo, 8192 fragmentos por grupo 
360 inodes por grupo

Pesquisando setores defeituosos (teste de leitura): 
feito 
Gravando tabela de inodes: Feito
Gravando estatsticas de superblocos e sistemas de 
arquivos: Feito 
$ 

A opo c  mais conveniente que o uso do comando 
badblocks em separado, porm este ltimo  
necessrio para uma verificao mais acurada, aps 
a criao do sistema de arquivos. 
 
O processo de preparar sistemas de arquivos em 
discos rgidos ou parties  o mesmo para 
disquetes, exceto pelo fato da formatao no ser 
necessria.

Montando e Desmontando Sistemas de Arquivos

Antes de um sistema de arquivos poder ser 
utilizado, ele necessita ser montado. O sistema 
operacional executa diversas verificaes para 
estar seguro de que tudo est funcionando bem. Uma 
vez que todos os arquivos em Unix esto em uma 
rvore de diretrios, a operao de montagem far 
com que o novo sistema de arquivos parea um 
subdiretrio existente em algum sistema de arquivos 
j montado.    
  
Por exemplo, a figura 4.3 mostra trs diferentes 
sistemas de arquivos, cada qual com o seus prprio 
diretrio raiz. Quando os dois ltimos so montados 
sob /home e /usr, respectivamente, no primeiro 
sistema de arquivos, temos somente uma nica rvore 
de diretrios e suas entradas, conforme a figura 
4.4.

 
Figura 4.3: Trs sistemas de arquivos distintos.

  
Figura 4.4: /home e /usr foram montados.

As montagens podem ser executadas, por exemplo, da 
seguinte forma: 

$ mount /dev/hda2 /home 
$ mount /dev/hda3 /usr 
$ 

O comando mount tem dois argumentos. O primeiro  o 
arquivo de dispositivo correspondente ao disco ou 
partio que contenha o sistema de arquivos. O 
segundo  o diretrio sob o qual ele ser montado. 
Aps esse comando o contedo dos dois sistemas de 
arquivos parecero simplesmente dois diretrios: 
/home e /usr respectivamente. Pode-se ento dizer 
que /dev/hda2 est montado em /home e similarmente 
/dev/hda3 est montado em /usr. Para examinar estes 
sistemas de arquivos, pode-se acessar estes 
diretrios exatamente da mesma forma que qualquer 
outro.  importante ressaltar a diferena entre os 
arquivos /dev/hda2 e o diretrio montado /home. 
Enquanto o primeiro d acesso ao dados brutos do 
disco, o diretrio permite o acesso aos arquivos 
contidos no mesmo disco. O diretrio montado  
chamado ponto de  montagem.

O Linux suporta diversos tipos de sistemas de 
arquivos. A montagem tenta verificar qual o tipo de 
sistema de arquivos est sendo montado. Pode-se 
utilizar opcionalmente a opo t 
tipo_sistema_arquivos para especificar o tipo 
diretamente na montagem. Isso pode ser til quando 
a verificao automtica no funcione corretamente. 
Por exemplo para montar um disquete MS-DOS, pode-se 
usar o seguinte comando:   

$ mount -t msdos /dev/fd0 /floppy 
$ 

O diretrio montado no necessita estar vazio, na 
verdade ele somente deve existir. Alguns arquivos 
porm podem estar inacessveis enquanto o sistema 
de arquivos  montado (qualquer arquivo que j 
tenha sido aberto estar disponvel. Arquivos que 
contm ligaes diretas com outros diretrios 
tambm podem ser acessados atravs daqueles nomes). 
Nenhum dano ser causado ao sistema de arquivos e 
isso pode, por vezes, ser bastante til. Por 
exemplo caso se deseje ter /tmp e /var/tmp como 
sinnimos, faz-se uma ligao simblica de /var/tmp 
para /tmp. Quando o sistema  inicializado, antes 
que o sistema de arquivos /usr seja montado, o 
diretrio /var/tmp residente no diretrio raiz  
usado em seu lugar. Quando /usr  montado, ele 
tornar o diretrio /var/tmp no raiz indisponvel. 
Caso este diretrio no existisse no raiz seria 
impossvel usar arquivos temporrios antes de 
montar /var.    

Caso no se pretenda gravar absolutamente nada no 
sistema de arquivos,pode-ese usar o parmetro r 
para montar o sistema de arquivos permitindo 
somente operaes de leitura. Isso far com que o  
kernel do sistema bloqueie qualquer tentativa de 
gravao naquele sistema de arquivos. Montagens de 
leitura somente so necessrias para mdias no 
gravveis como por exemplo CD-ROMs. 

O leitor mais atento perceber um pequeno problema 
logstico. Como o primeiro sistema de arquivos 
(chamado raiz, por conter o diretrio raiz (/))  
montado, uma vez que obviamente ele no pode ser 
montado a partir de outros sistemas de arquivos? 
Isso  feito de maneira automtica. O sistema de 
arquivos raiz  montado automaticamente durante a 
inicializao do sistema operacional e pode-se 
estar certo de que ele sempre estar disponvel, 
pois de outra forma o sistema no poder ser 
inicializado. O nome do sistema de arquivos que  
montado como /  compilado junto com o kernel do 
sistema ou configurado no LILO ou atravs do 
comando rdev. 

O sistema de arquivos raiz normalmente  montado 
com permisses somente de leitura. Os programas de 
lote iniciais executaro o comando fsck para 
verificar sua integridade e se por ventura h algum 
problema. Caso tudo corra bem, ele ser montado 
novamente, agora com permisses de gravao. O 
programa fsck no deve ser executado em sistemas de 
arquivos montados, pois quaisquer alteraes no 
sistema durante a sua execuo podem causar 
problemas. Uma vez que o sistema de arquivos raiz  
montado com permisses somente de leitura, fsck 
pode ser executado e regularizar qualquer 
anormalidade encontrada, uma vez que aps a 
remontagem com permisses de gravao, os eventuais 
ajustes sero efetuados automaticamente. 
 
Em muitos sistemas, h outros sistemas de arquivos 
que devem ser montados automaticamente durante a 
sua inicializao. Estes sistemas de arquivos devem 
ser especificados no arquivo /etc/fstab (veja a 
pgina de manual do fstab para maiores informaes 
sobre seu formato ou o  Apndice Comandos e 
Programas Relacionados). Os detalhes exatos de como 
cada sistema de arquivos ser montado depende de 
muitos fatores e pode ser efetuado de acordo com a 
necessidade de cada administrador. Aps o captulo 
de inicializao do sistema, pode-se obter mais 
informaes sobre o tema. 

Quando um sistema de arquivos no necessita mais 
estar montado, ele pode ser desmontado atravs do 
comando umount. Este comando necessita de somente 
um argumento: ou o arquivo de dispositivo ou o 
ponto de montagem. Por exemplo para desmontar os 
diretrios do exemplo anterior deve-se comandar:   

     $ umount /dev/hda2 
     $ umount /usr 
     $ 

Para maiores informaes sobre este comando, 
sugerimos a leitura da pgina de manual on-line ou  
o Apndice Comandos e Programas Relacionados.  
fundamental que um disquete sempre seja desmontado. 
No se deve simplesmente retirar o disquete da 
unidade, pois dados podem estar em memria e ainda 
no terem sido gravados. Isso somente ocorre aps a 
execuo do comando umount. Retir-lo antes pode 
danificar o contedo do disquete. Caso se esteja 
somente lendo do disquete isso pode no ser to 
crtico, mas caso se esteja gravando algum contedo 
o resultado pode ser catastrfico.

Montar e desmontar sistemas de arquivos requer 
privilgios de superusurio, isto , somente o 
usurio root pode faz-lo. A razo para isso  que 
se qualquer usurio pudesse montar um disquete como 
um sistema de arquivos, o nvel de segurana do 
sistema seria muito menor, pois esse diretrio 
poderia conter por exemplo um programa do tipo 
Cavalo de Tria  disfarado como um /bin/sh, ou 
como  muitos outros programas utilizados com 
frequncia. H muitas formas de resolver isto:

? Dar aos usurios a senha do superusurio. Esta  
obviamente a pior soluo, mas  a mais simples. 
Deve funcionar bem caso no haja outras 
necessidades de segurana no equipamento, no 
caso de mquinas fora da rede ou sistemas de uso 
pessoal. 

? Usar um programa como o sudo que permite aos 
usurios utilizar o comando mount. Ainda no  
uma soluo segura, mas no d privilgios de 
superusurio a todos os usurios.

? Indicar o uso das ferramentas mtools, um pacote 
de manipulao de sistemas de arquivos DOS, sem 
ter que mont-los. Isso funciona bem  para 
arquivos MS-DOS, mas ainda no  a soluo 
ideal. 

? Listar as unidade de disquetes e os pontos de 
montagem permitidos no arquivo /etc/fstab.


Esta ltima alternativa pode ser implementada 
adicionando-se um linha similar  seguinte no 
/etc/fstab:

     /dev/fd0 /a: msdos user,noauto 0 0 

As colunas so: arquivo do dispositivo a ser 
montado, diretrio de montagem, tipo do sistema de 
arquivos, opes, frequncia da realizao de 
cpias de segurana (usado pelo comando dump), e 
nmero de passagem do fsck (especifica a ordem em 
que o sistema de arquivos deve ser verificados aps 
a inicializao. 0 significa sem checagem). 
 
A opo noauto inibe a montagem automtica na 
inicializao do sistema (ou seja inibe a ao do 
comando mount a no arquivo fstab). A opo user 
permite que qualquer usurio possa montar o sistema 
de arquivos e, por razes de segurana, desabilita 
a execuo de programas (em modo normal ou atravs 
de setuid) e a interpretao de arquivos de 
dispositivos a partir do sistema de arquivos 
montado. Aps isso, para montar o disquete com um 
sistema de arquivos DOS, basta utilizar o comando:

     $ mount /a: 
     $ 

O disquete pode  (e deve, conforme exposto acima) 
ser desmontado com o comando umount correspondente. 

Caso seja necessrio prover acesso a diversos tipos 
de disquetes, pode-se ter diversos pontos de 
montagem. Os parmetros podem ser diferentes para 
cada um. Por exemplo para dar acesso a disquetes 
DOS e ext2, pode-se fazer o seguinte: 

/dev/fd0    /dos_a:    msdos   user,noauto  0  0
/dev/fd0    /ext2_a:   ext2    user,noauto  0  0

Para sistemas de arquivos DOS (no somente em 
disquetes), provavelmente queira-se restringir o 
acesso usando opes de mscaras de usurios, uid e 
gid, descritos na pgina de manual do comando 
mount. Caso estas precaues no sejam tomadas, 
qualquer usurio poder no mnimo ler todos os 
arquivos DOS daquele sistema de arquivos, o que no 
parece ser uma boa idia. 

Verificando a integridade de um sistema de arquivos 
com fsck

Sistemas de arquivos so estrutura complexas, e 
devem estar livres de erros para o perfeito 
funcionamento do sistema. A validao e correo de 
erros  de um sistema de arquivos podem ser 
realizadas atravs do comando fsck. Ele pode ser 
configurado para resolver qualquer tipo de problema 
que ele encontre e para alertar o usurio sobre 
erros incorrigveis. Felizmente os programas que 
implementam os sistemas de arquivos so muito bem 
desenvolvidos e  muito raro ter-se problemas desta 
natureza, porm ocorrncias causadas por falhas de 
energia, falhas de hardware ou erros de operao  
por exemplo, podem desligar o sistema de maneira 
imprpria.
 
Muitos sistemas esto configurados para executarem 
o fsck automaticamente no momento de sua 
inicializao, sendo que vrios problemas podem ser 
encontrados e corrigidos desta forma, antes da 
utilizao do sistema. O uso de sistemas de 
arquivos corrompidos tende a piorar o problema: se 
as estruturas de dados contm erros, utilizar o 
sistema de arquivos pode provocar uma perda ainda 
maior de dados. Ainda que o fsck possa demorar um 
pouco em grandes sistemas de arquivos e desde que 
problemas raramente ocorrem quando se desliga a 
mquina apropriadamente, alguns truques so usadas   
para evitar a checagem nestes casos. O primeiro  
baseado na existncia do arquivo /etc/fastboot; 
caso ele exista, nenhuma checagem  realizada. O 
segundo consiste em utilizar o e2fsck (a verso do 
fsck para sistemas de arquivos do tipo ext2). Os 
sistemas de arquivos ext2 tm uma marca especial no 
superbloco, a qual informa se o sistema foi 
desligado de maneira apropriada. Caso positivo, o 
programa no checar todo o sistema de arquivos. 
Ainda que o uso do fastboot dependa dos programas 
de inicializao do sistema, o e2fsck no ir 
validar o sistema de arquivos, desde que o sistema 
tenha sido desligado corretamente (veja a pgina de 
manual do e2fsck  para maiores informaes ou o 
Apndice Comandos e Programas Relacionados).

A checagem automtica funciona somente para os 
sistemas de arquivos que so montados 
automaticamente na inicializao do sistema. Para 
os demais, como por exemplo disquetes, o programa 
fsck deve ser executado manualmente.

Caso o fsck encontre problemas irreparveis, ser 
necessrio um conhecimento profundo de como os 
sistemas de arquivos funcionam e em especial do 
tipo de sistema corrompido, ou ento trazer sempre 
de forma atualizada as cpias de segurana do 
sistema. A segunda opo  mais simples de ser 
posta em prtica, j a primeira pode depender de 
pesquisas em grupos de notcias, listas de 
discusso e servios de suporte. O programa debugfs 
de Theodore T'so pode ajudar nesta tarefa. 
 
fsck deve ser executado somente em sistemas de 
arquivos desmontados e nunca naqueles que j 
estejam montados (exceto o sistema de arquivos 
raiz, montado com permisses somente de leitura, 
durante a inicializao do sistema). Isso se deve 
ao fato do fsck acessar diretamente os dados brutos 
do sistema, podendo inclusive modific-los sem que 
o sistema operacional perceba. Caso outro programa 
tente acessar ou alterar os dados durante a 
checagem, os resultados so imprevisveis.

Verificando erros em disco com  badblocks

 aconselhvel checar periodicamente o disco 
rgido. Isto poder ser feito atravs da execuo do 
programa badblocks. Ele gera uma lista com os 
nmeros dos blocos defeituosos encontrados. Esta 
lista pode servir de entrada, por exemplo, para o 
comando fsck, a fim de informar as estruturas de 
dados do sistema de arquivos que tenham problemas, 
a fim de que o sistema no armazene dados naqueles 
blocos. O seguinte exemplo mostra como isso pode 
ser feito:   

$ badblocks /dev/fd0H1440 1440 > bad-blocks 
$ fsck -t ext2 -l bad-blocks /dev/fd0H1440 
Parallelizing fsck version 0.5a (5-Apr-94) 
e2fsck 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10 
Pass 1: Checking inodes, blocks, and sizes 
Pass 2: Checking directory structure 
Pass 3: Checking directory connectivity 
Pass 4: Check reference counts. 
Pass 5: Checking group summary information. 

/dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED 
***** 
/dev/fd0H1440: 11/360 files, 63/1440 blocks 
$
Caso algum bloco defeituoso j esteja em uso, 
e2fsck tentar mover o bloco para outro local. Caso 
o problema seja realmente grave  e no somente um 
erro superficial, o arquivo poder estar 
definitivamente corrompido.

Evitando Fragmentao

Quando um arquivo  gravado em disco, ele nem 
sempre pode ser gravado em blocos consecutivos. Um 
arquivo que no esteja armazenado em blocos 
consecutivos estar fragmentado.  Um arquivo com 
essa organizao leva mais tempo para ser lido, uma 
vez que as cabeas do disco rgido levaro mais 
tempo, j que tero que  movimentar-se mais.  
desejvel evitar a fragmentao, apesar de no ser 
exatamente um problema grave quando se utiliza um 
bom buffer de dados  de leitura avanada.

Os sistemas de arquivos ext2 tentam manter a 
fragmentao no mnimo, mantendo todos os blocos de 
um arquivo juntos, mesmo que eles no possam ser 
armazenados em setores consecutivos, pois ext2 
efetivamente sempre aloca o bloco livre mais 
prximo dos demais blocos do arquivo. Para ext2,   
muito raro preocupar-se com fragmentao. H um 
programa para desfragmentao de sistemas de 
arquivo do tipo ext2. Para maiores detalhes, 
consulte  ftp://sunsite.unc.edu/pub/Linux/system/ 
Filesystems/defrag-0.6.tar.gz. 

Para sistemas DOS h diversos programas de 
desfragmentao que movem os blocos dentro do 
sistema de arquivos, diminuindo o nvel de 
fragmentao. Para outros sistema de arquivos, a 
desfragmentao pode ser realizada atravs da 
realizao de cpias de segurana do sistema de 
arquivos, recriao do sistema e restaurao dos 
arquivos. Realizar uma cpia de segurana do 
sistema de arquivos antes de desfragment-lo  uma 
boa medida,  uma vez que muitas coisas ocorrem 
durante esse processo.


Outras ferramentas para sistemas de arquivos

Algumas ferramentas so ainda muito teis no 
gerenciamento de sistemas de arquivos.  O comando 
df apresenta o espao livre em disco para um ou 
mais sistemas de arquivos. du  mostra o espao 
ocupado por um diretrio e todos os seus arquivos, 
e pode ser usado para encontrar os grandes usurios 
de espao em disco. 

sync fora a gravao  de todos 
os blocos no gravados e que estejam em memria (no 
cache).  raro execut-lo manualmente , o programa 
residente encarregado de sua execuo faz isso 
automaticamente, mas pode ser til em problemas 
como a  morte  dos programas update ou bdflush, 
ou case se deseje desligar o equipamento 
imediatamente, sem esperar pela sua execuo. 

Outras Ferramentas para Sistemas de Arquivos Ext2

Em adio ao criador de sistemas de arquivos 
(mke2fs) e ao verificador (e2fsck) acessados 
diretamente ou atravs de uma interface, o sistema 
de arquivos ext2 tem algumas ferramentas que podem 
ser de grande utilidade.

Tune2fs ajusta os parmetros do sistema de 
arquivos. Alguns parmetros interessantes so:

? Um contador do nmero de vezes que o sistema de 
arquivos foi montado. E2fsck fora uma checagem 
toda vez que o sistema seja montado n vezes, 
mesmo que o indicador de normalidade esteja 
assinalado. Para um sistema que  usado em 
desenvolvimento ou testes,  sugerido reduzir 
este nmero.
? Um tempo mximo entre as checagens. e2fsck pode 
ser executado automaticamente caso o tempo 
mximo tenha transcorrido, mesmo que o indicador 
de normalidade esteja assinalado. Esta opo 
pode ser desabilitada, a critrio do 
administrador.
? Nmero de blocos reservado para o raiz. Ext2 
reserva alguns blocos para o sistema de arquivos 
raiz, que mesmo que ele esteja cheio, pode-se 
ter ainda algo em torno de 5% de espao 
adicional sem ter-se que apagar nenhum arquivo. 
Para disquetes esta facilidade no  
disponibilizada.

Veja a pgina de manual do tune2fs para maiores 
informaes sobre o assunto ou o Apndice Comandos 
e Programas Relacionados.

Dumpe2fs apresenta algumas informaes sobre um 
sistema de arquivos ext2, a maioria extrada a 
partir do superbloco. Algumas informaes so 
extremamente tcnicas e exigem um certo 
conhecimento de como o sistema de arquivos 
funciona, mas muitas das informaes so do alcance 
da maioria dos administradores.

Figura 4.5: exemplo da sada do programa  dumpe2fs 

Debugfs  um programa destinado  validao de um 
sistema de arquivos. Ele permite o acesso direto s 
estruturas  de dados armazenadas em disco e pode 
ser usado para reparar problemas em discos, que 
talvez nem mesmo o fsck possa corrigir 
automaticamente. Tambm  utilizado para recuperar 
arquivos apagados. Porm ele exige um alto nvel de 
conhecimento das tarefas que esto sendo 
executadas; uma falha no entendimento pode destruir 
todos os dados do disco. 

Dump e restore podem ser 
usados para gerao de cpias de segurana de um 
sistema de arquivos ext2. Elas so verses 
especficas para o ext2 de tradicionais ferramentas 
Unix. Veja o captulo 10 para maiores informaes 
sobre cpias de segurana.

Aqui aqui aqui 


Discos sem sistemas de arquivos

Nem todos os discos ou parties so usadas como 
sistemas de arquivos. Uma partio de swap (swap), 
por exemplo, no conter um sistema de arquivos. 
Muitos disquetes so usados como uma emulao de um 
dispositivo de fita, podendo o comando tar e outro 
gravar os dados em formato imagem diretamente no 
dispositivo, sem um sistema de arquivos. Os 
disquetes de inicializao do Linux no contm um 
sistema de arquivos, mas somente a imagem do 
kernel.

Evitar a utilizao de um sistema de arquivos tem a 
vantagem de tornar uma maior parte do disco 
utilizvel, uma vez que o sistema de arquivos 
sempre traz algum trabalho extra de manuteno. 
Isso tambm torna o disco mais compatvel com 
outros sistemas: por exemplo o formato de arquivo 
tar  o mesmo em todos os sistemas, enquanto que os 
sistemas de arquivos so diferentes na maioria. Um 
administrador rapidamente acostuma-se ao uso de 
discos sem sistemas de arquivos, caso necessrio. 
Disquetes inicializveis do Linux tambm no tm 
sistemas de arquivos, apesar de isso ser possvel.

Uma razo para usar discos de forma direta  a de 
fazer imagens deles. Por exemplo, se um disco tem 
parte do sistema de arquivos danificada,  uma boa 
idia fazer-se uma cpia antes de tentar consert-
lo, podendo o trabalho ser reiniciado caso as 
tentativas tenham danificado os dados restantes. 
Uma forma de fazer-se isso  atravs do comando dd:
 
$ dd if=/dev/fd0H1440 of=floppy-image 
2880+0 records in 
2880+0 records out 
$ dd if=floppy-image of=/dev/fd0H1440 
2880+0 records in 
2880+0 records out 
$ 

O primeiro dd gera uma imagem exata do disquete 
para o arquivo floppyimage, o segundo grava a 
imagem para o disquete (o usurio presumivelmente 
substituiu o disquete antes do segundo comando. De 
outra forma o procedimento torna-se intil).


Alocando Espao Em Disco

   Esquemas de particionamento


No  fcil particionar um disco na melhor maneira possvel. Pior, no h
uma forma correta universal de faz-lo, devido ao nmero de fatores
envolvidos. 

O modo tradicional sugere um pequeno sistema de arquivos raiz,
quem contm os diretrios /bin, /etc, /dev, /lib, /tmp e outros
necessrios para o sistema ser inicializado e para que ela permanea
ativo. Desta forma o sistema de arquivos raiz (na sua prpria partio e
no seu prprio disco) contm todo o necessrio para manter o sistema
ativo. A razo par a o raiz ter um tamanho reduzido  porque ele  pouco
usado, correndo-se assim um risco menor de ter-se arquivos ou blocos
corrompidos caso o sistema tenha algum problema. Aps criam-se parties
separadas para a rvore de diretrios sob /usr, para os dir etrios
pessoais (normalmente sob /home) e para a rea de swap (swap).
Separando-se a rea de diretrios pessoais em sua prpria partio torna
as cpias de segurana mais simples, uma vez que no  necessrio copiar
os programas (que esto normalmente e m /usr). Em um ambiente de rede 
possvel ainda compartilhar o /usr entre diversas mquinas (usando NFS por
exemplo), reduzindo-se assim o espao total de disco requerido entre todas
as mquinas, gerando economia de dezenas ou centenas de megabytes, depe
ndendo do nmero de mquinas. 

O problema de ter-se muitas parties  que
elas dividem o espao livre total do disco em pequenas parte menores,
sendo muito mais simples a manuteno de cpias de segurana. Hoje, que os
discos e sistemas operacionais so mais confiveis, e muitos prefe rem ter
somente uma partio com todos os arquivos. Para um disco pequeno, talvez
a melhor opo seja esta. Para discos grandes,  prefervel ter-se poucas
parties grandes, para os casos em que algo de anormal ocorra. Note-se
que pequenas ou grandes s o usadas aqui em um sentido relativo, j que
dependem das necessidades e dos equipamentos disponveis. 

Caso haja vrios discos disponveis  aconselhvel se ter o sistema de 
arquivos raiz (inclusive o /usr) em um e os diretrios pessoais em outro.  

 interessante ainda estar preparado para experimentar diferentes esquemas
de particionamento. Pode ser bastante trabalhoso instalar um sistema desde
seu incio diversas vezes, porm pode ser a nica forma de estar seguro do
resultado final mais adequado. 
     


Requisitos de Espao

A distribuio Linux que for instalada trar algumas indicaes do espao
necessrio para sua instalao. Programas instalados em separado
provavelmente faam a mesma coisa. Isso ajudar no planejamento da
utilizao do espao em disco, porm deve-se esta r preparado para o
futuro, reservado-se algum espao para extra para as demandas que
surgiro.  

A quantidade de espao necessria para os usurios dependem das
tarefas que eles executaro. Algumas pessoas fazem somente edio de
textos e necessitam de alguns megabytes, outros podem fazer processamento
de imagens e utilizarem gigabytes. 

Por oportuno ao comparar tamanhos de
arquivos em kilobytes e megabytes e espao em disco dado em megabytes, 
importante saber-se que so unidades diferentes. Alguns fabricantes de
discos deixam a entender que um kilobyte  igual a 1.000 bytes e um
megabyte igual a 1.  000 kilobytes, enquanto o resto do mundo usa 1.024 em
ambos os fatores. Em assim sendo um disco de aparentemente 345 Mb, tem na
verdade 330 Mb disponveis.

A alocao de espao em disco para a rea de swap (swap)  discutida na
seo 5.5. 


Exemplo de Alocao de Discos

Eu estou acostumado a um disco rgido de 109 Mb, porm tenho agora um
disco de 330 Mb, e apresentarei como este disco est particionado. 

O disco de 109 Mb foi particionado de diversas formas,  medida as
necessidades e o sistema operacional foram mudando. Apresentarei dois
cenrios bsicos. Primeiro, executando-se DOS em conjunto com Linux. Para
isso foram utilizados 20 Mb, para conter, no
 mnimo, o MS-DOS, um compilador C, um editor e algumas outras utilidades,
um programa em desenvolvimento , e algum espao em disco para no criar
"claustrofobia". Para o Linux foi reservado um espao de 10 Mb para a rea
de swap e os 79 Mb restantes, fo ram alocados em uma nica partio com
todos os arquivos do Linux. Foi experimentado o particionamento em raiz,
/usr e /home, mas como havia pouco espao disponvel em disco, uma nica
partio tornou-se a opo mais interessantes. 

Quando o DOS no era ma is
necessrio, o disco foi reparticionado, e foi criada uma rea de swap de
12 Mb, e novamente o espao restante foi alocado em uma nica partio. 

O disco de 330 Mb foi particionado em diversas parties, como por
exemplo: 


A partio de testes est designada 
para atividade que requerem uma 
partio prpria, como por exemplo, 
testar diferentes distribuies Linux 
ou comparar a velocidade de diferentes 
sistemas de arquivos. Quando  
necessrio algo adicional, pode-se 
utilizar a rea de swap (eu gosto de 
ter uma srie de janelas abertas).

Adicionando mais espao em disco para o 
Linux
Adicionar  mais espao ao Linux  
simples, ao menos aps o hardware ter 
sido adequadamente instalado (a 
instalao de hardware esta alm do 
escopo deste livro). Basta formatar, 
criar as parties e os sistemas de 
arquivos conforme descrito 
anteriormente, e adicionar as linhas 
adequadas ao /etc/fstab que os montar 
automaticamente.

Dicas para Economizar Espao em Disco
A melhor dica para economizar espao em disco  
evitar a instalao de programas desnecessrios. 
Muitas distribuies Linux tem opes de instalao 
de somente alguns componentes ou pacotes dos 
inmeros disponveis, e analisando as suas 
necessidades, perceber que no necessitar muitos 
deles (talvez a maioria). Isso ajudar a salvar 
muito espao em disco, j que muitos programas so 
muito grandes. Mesmo que voc necessite de um 
determinado programa, talvez somente alguns 
componentes j sejam suficientes. Por exemplo, 
alguma documentao on-line pode ser desnecessria, 
assim como alguns dos arquivos Elisp para o GNU 
Emacs, alguns fontes do X11, ou bibliotecas de 
programao.

Caso no seja possvel desinstalar algum pacote, 
deve-se tentar comprimi-los. Programas de 
compresso como gzip ou zip iro comprimir (e 
descomprimir) arquivos em grupo ou individuais. O 
sistema gzexe ir comprimir e descomprimir 
programas automaticamente para o usurio (programas 
sem uso so compactados, e descompactados quando 
utilizados). O programa experimental DouBle ir 
comprimir todos os arquivos do sistema de arquivos, 
automaticamente e de forma transparente para os 
usurios e programas que os utilizem (princpio 
similar ao  produto Stacker para MS-DOS, por 
exemplo).


mem/mem.tex

Gerenciamento de Memria

Minnet, jag har tappat mitt minne, 
r jag svensk eller finne 
kommer inte ihg...
(Bosse sterberg) 

Esta seo descreve como l Linux gerencia as 
funcionalidade de memria, isto , memria virtual 
e o cache de disco. Os aspectos necessrios para o 
administrador do sistema esto descritos neste 
captulo.

               O que  memria virtual?
               Criando uma rea de swap
               Usando a rea de swap
               Compartilhando rea de swap com 
outros sistemas operacionais
               Alocando rea de swap
               O cache 


O que  memria virtual?  

O Linux suporta a funcionalidade de memria
virtual, isto , utilizar o disco como extenso da memria RAM, fazendo
com que o tamanho de memria disponvel cresa consideravelmente. O kernel
ir gravar o contedo de blocos de memria sem uso no disco rgido,
podendo aquela rea agora ser utilizada para outros propsitos. Quando o
contedo original faz-se necessrio, eles so lidos e colocados novamente
na memria. Isso  feito de maneira totalmente transparente para o
usurio, programas sendo executados sob Linux somente vem a quantidade
total de memria disponvel, sem perceber que partes dela residem no disco
de tempos em tempos. Obviamente, ler e gravar em disco  mais lento (na
ordem de 1.000 vezes mais lento) que utilizar memria real, tornando
portando os programas tambm mais lentos. A parte do disco que  usada
como memria virtual  chamada rea de swap (swap space). 


Linux pode usar tanto um arquivo normal de um sistema de arquivos ou uma
partio separada para a rea de swap. Uma partio dedicada  mais
rpida, porm  mais fcil mudar o tamanho de um arquivo de swap (no h
necessidade de reparticionar o disco inteiro, e possivelmente instalar o
sistema desde o incio). Quando se sabe a quantidade de espao de swap
necessria, o mais indicado  utilizar uma partio dedicada, mas em caso
de dvida, deve-se utilizar um arquivo de swap inicialmente, at que se
esteja seguro sobre a quantidade necessria. Aps ento  indicada a
criao de uma partio especfica.  

Cabe salientar que o Linux permite a
utilizao simultnea de diversas parties e arquivos de swap. Isso
significa que caso seja necessrio ocasionalmente uma rea de swap maior,
pode-se criar um arquivo com esta finalidade, ao invs de gerar uma
partio com todo o espao necessrio. 

Nota sobre termos em sistemas
operacionais: cincia da computao normalmente faz distino entre swaps
(gravar todo o contedo de um processo em uma rea de swap) e paginao
(gravas partes fixas da memria, normalmente poucos kilobytes, de cada
vez). Paginao  normalmente mais eficiente e  o que o Linux faz, mas
por tradio a terminologia em Linux foi mantida como swap (swapping). 


Criando uma rea de Troca 

Uma rea de swap  um arquivo comum, sem nenhum
tratamento especial para o kernel. A nica coisa que importa para o kernel
 que no h espaos, e ele foi preparado para uso pelo utilitrio mkswap.
Ele deve residir em um disco local, ainda que possa estar em um sistema de
arquivos que foi montado via NFS devido  razes de implementao.  

A questo sobre ausncia de espaos  importante. A rea de swap reserva um
espao em disco para que o kernel possa rapidamente swapr uma pgina sem
ter que checar itens necessrios para gravar um arquivo, como alocao de
setores e outros. O kernel simplesmente utiliza qualquer setor que tenha
sido alocado para o arquivo. Como um espao vazio no arquivo significa que
no h setores de disco alocados (naquele local), no  interessante para
o kernel utiliz-lo.  

Uma boa maneira de criar uma rea de swap sem
espaos vazios  utilizar o seguinte comando: 
 
$ dd if=/dev/zero of=/extra-swap 
bs=1024 count=1024
1024+0 records in 
1024+0 records out 
$ 

Onde /extra-swap  o nome do arquivo de swap e o tamanho  dados pelo
parmetro count=. O tamanho mais indicado deve ser mltiplo de 4, uma vez
que o kernel utiliza pginas de memria de 4 Kb de tamanho. Caso no seja
mltiplo alguns kilobytes no sero utilizados. 

Uma partio de swap tambm no tem nada de especial.  criada como
qualquer outra partio, a nica diferena  que ela  acessada de maneira
direta, isto  no contm nenhum sistema de arquivos.  aconselhvel
marcar a partio de swap como de tipo 82 (Troca  Linux), isso tornar
mais claro na lista das parties, mesmo que no seja necessrio para o
kernel. 

Aps criar a partio de swap ou um arquivo de swap, 
necessrio gravar uma assinatura no seu incio, que contm algumas
informaes administrativas utilizadas pelo kernel. O comando utilizado 
o mkswap, da seguinte forma:

$ mkswap /extra-swap 1024
Setting up swapspace, size = 1044480 bytes 
$

Note-se que o espao de swap ainda no est sendo utilizado; ele existe,
mas o kernel no o est utilizando para prover a memria virtual. 

Deve-se ser extremamente cuidados com o comando mkswap, uma vez que ele no 
checa se o arquivo ou a partio j est sendo utilizada para outra finalidade,
ou seja pode-se facilmente sobrescrever arquivos importantes ou mesmo
parties inteiras. Felizmente este comando somente  necessrio durante a
instalao do sistema. 

O gerenciador de memria do Linux limita o tamanho da rea de swap em
cerca de 127 Mb (por vrias razes tcnicas, o limite atual  em bytes, ou
exatamente 127.6875 Mb). Pode-se porm utilizar at 16 reas de swaps
simultaneamente, totalizando cerca de 2 Gb. 



Usando a rea de swap

Uma rea de swap  ativada atravs do comando swapon. Este comando diz ao
kernel que a rea de swap pode ser usada. O caminho para a rea de swap
 dado como um argumento. Para iniciar o processo de swap em um arquivo
temporrio pode-se usar o seguinte comando:  $ swapon /extra-swap $

reas de swaps podem ser usadas automaticamente ao serem listadas no
arquivo /etc/fstab: 
 
/dev/hda8 none swap sw 0 0 
/swapfile none swap sw 0 0 

Os programas de lotes executaro o comando swapon  a, inicializar o
processo de swap em todas as reas listadas no arquivo /etc/fstab. O
comando swapon pode ser usado ainda quando se deseje reas extras de
swap.  Pode-se monitorar o uso de rea das reas de swap atravs do
comando free. Ele apresentar o total de rea de swap disponvel:  

$ free
total used free shared buffers Mem: 15152 14896 256 12404 2528 -/+
buffers: 12368 2784 Swap: 32452 6684 25768 $

O primeiro item da sada (Mem:) mostra a memria fsica. A coluna de total
no apresenta a memria fsica usada pelo kernel, a qual gira em torno de
um megabyte. A segunda coluna apresenta a memria utilizada. A coluna de
memria livre mostra a quantidade de memria sem uso. A coluna de memria
compartilhada mostra a memria utilizada por diversos processos. A coluna
de buffers apresenta o tamanho atual do cache de buffer de disco. 

A ltima linha (Swap:) mostra informaes similares sobre a rea de swap.  

As mesmas informaes podem ser obtidas atravs do comando top ou atravs do
arquivo /proc/meminfo no sistema de arquivos proc.   um pouco difcil
obter informaes de uso de uma determinada rea de swap.  

Uma rea de swap pode ser desativada atravs do comando swap0ff. Normalmente isso no
 necessrio, exceto para reas temporrias. Qualquer pgina em uso na
rea ser devolvida  memria primeiro, e caso no haja memria fsica
disponvel para manter todas as pginas, Linux comear a dispens-las,
aps um perodo ela pode ser recuperada, mas neste meio tempo estar
indisponvel. Pode-se checar, com o comando free por exemplo, se h
memria livre suficiente para remover a rea de swap em uso.  

Todas as
reas de swap que so usadas automaticamente atravs do comando swapon a
podem ser removidas pelo comando swapoff a, o qual verufica o contedo do
arquivo /etc/fstab para descobrir quais arquivos devem ser removidos. As
reas de swap manualmente ativadas permanecero em uso. 

Algumas vezes uma
grande quantidade de rea de swap pode ser usada, apesar de existir uma
grande quantidade de memria fsica livre. Isso pode ocorrer por exemplo
quando se em determinado momento h necessidade de efetuar uma swap,
porm logo aps um processo que ocupava muita memria fsica foi
concludo, liberando a memria fsica em uso. Os dados que foram gravados
na rea de swap no so automaticamente retornados para a memria fsica
at que isso seja necessrio, podendo a memria fsica ficar um longo
tempo sem uso. No h com o que se preocupar em relao a esta situao,
porm  bom saber que ela ocorre. 
 

Compartilhando rea de swap com outros sistema 
operacionais

Memria virtual  uma funcionalidade disponvel em diversos sistemas
operacionais. Uma vez que cada sistema somente a utiliza quando estiver
rodando, ou seja, nunca ao mesmo tempo, pois no  possvel executar mais
de um sistema ao mesmo tempo, uma idia mais eficiente seria compartilhar
uma nica rea de swap. Isso  possvel, mas requer um conhecimento
avanado. O Tips-HOWTO contm algumas orientaes sobre a forma de
implementar isto.



Alocando espao para rea de swap

Algumas pessoas diro que se deve alocar o dobro da memria fsica para a
rea de swap, mas esta  uma regra simplista. 

Para estimar isso
corretamente deve-se:  

1. Estimar o total de memria necessria. Ou seja a
maior quantidade de memria necessria ao mesmo tempo, ou seja a soma dos
requisitos de memria de todos os programas que podem rodar
simultaneamente. Isso pode ser feito atravs ao se executar ao mesmo tempo
todos os programas que podem rodar ao mesmo tempo. 

Por exemplo, caso se
deseje executar o X, deve-se alocar ao redor de 8 Mb para ele, gcc usa
diversos megabytes (alguns arquivos necessitam grandes quantidades de
memria, at dezenas de megabytes, mas normalmente ao redor de 4 Mb deve
ser suficiente, e assim por diante. O kernel utiliza ao redor de 1 Mb, e o
ambiente de trabalho padro e outros pequenos utilitrios usam alguns
poucos kilobytes (digamos 1 Mb se somados). No h necessidade de ser
exato, estimativas aproximadas so suficientes, mas neste caso deve-se
sempre estimar pelo ponto mximo. 

Note-se que se h diversos usurios
utilizando o sistema ao mesmo tempo, eles iro consumir memria, ainda que
neste caso no se deve imaginar um consumo em dobro, pois as pginas de
cdigo e bibliotecas compartilhadas existem em somente uma instncia. Os
comandos free e ps so muito teis para estimar a memria necessria.  

2.
Adicionar uma margem de segurana  estimativa do passo 1. Isso porque
certamente h outros programas que sero necessrios e provavelmente no
foram lembrados e para se ter uma certa margem de segurana. Alguns
megabytes devem atender ( melhor alocar uma rea de swap de sobra do que
uma rea muito pequena, mas no h necessidade de alocar o disco inteiro,
pois afinal a rea de swap  um espao perdido, pois no pode ser
utilizado para outras finalidades). Uma vez que nmeros pares so mais
indicados, pode-se arredondar o valor para o prximo megabytes.  

3.
Baseado nos clculos acima, pode-se saber quanta memria ser necessria
ao total. Ento para alocar a rea de swap, basta somente subtrair o
tamanho da memria fsica do total de memria necessria e se obter o
tamanho necessrio para a rea de swap (em alguns sistemas Unix, 
necessrio alocar espao para uma imagem da memria fsica,. Ento o valor
encontrado no passo 2  o valor necessrio para a rea de swap).  

4. Caso
a rea de swap seja muito maior que a memria fsica (algumas vezes
maior), ser necessrio possivelmente aumentar o total de memria fsica
instalada, pois de outra forma a performance ser sofrvel.

 aconselhvel ter ao menos alguma rea de swap, mesmo que os clculo
indiquem que nenhuma rea  necessria. Linux usa a rea de swap de forma
agressiva, ento  desejvel manter o mximo possvel de memria fsica
livre. Linux ir transferir para a rea de swap as pginas de memria que
no estejam sendo utilizadas, mesmo que a memria fsica no esteja sendo
requisitada para outra tarefa. Isso evita esperas quando a memria for
necessria  a swap pode ser feita mais cedo, quando o disco est
disponvel.  

A rea de swap pode ser dividida em diversos discos. Isso
pode eventualmente aumentar a performance, dependendo da velocidade
relativa dos discos e do tipo de acesso aos discos. Pode-se experimentar
alguns esquemas, mas  importante salientar que as experincias podem ser
bastante complexas. No se deve crer que um esquema  superior ao outro
sem antes verificar a sua real aplicabilidade. 




Cache de buffer

A leitura do disco  muito lenta quando comparada com o acesso  memria
real. Adicionalmente,  comum ler-se a mesma parte do disco diversas vezes
durante um perodo de tempo relativamente curto. Por exemplo algum que
esteja lendo um email, o acessar novamente no editor de mensagens para
reenvi-lo ou respoder, e colocar o mail em uma pasta para arquivamento.
Ou deve se considerar quo frequentemente o comando ls  executado em um
sistema com diversos usurios. Ao ler as informaes do disco e
mantendo-os em memria at que no mais seja necessrio, pode agilizar
todos os acessos posteriores ao primeiro. Isso  chamado de buffering de
disco, e a memria usada para este fim  chamada de cache de buffer.  

Uma
vez que a memria  infelizmente finita, digamos, um recurso escasso, o
cache de buffer pode no ser grande o suficiente, ou seja pode no conter
todos os dados que os usurios necessitam. Quando o cache est cheio, os
dados sem uso h mais tempo so descartados e a memria  liberada para
uso por dados novos.  


Buffering de disco funciona tambm para gravao.
Por outro lado dados que so gravados so tambm lidos com muita
frequncia (por exemplo o cdigo fonte de um programa, salvo em um
arquivo, e aps lido pelo compilador). Ento colocar os dados gravados em
um cache  tambm uma boa idia. Por outro lado, colocar os dados a serem
gravados somente em memria, sem grav-los efetivamente em disco, agiliza
o programa que deveria grav-los. A gravao pode ento ser feita em
segundo plano, sem diminuir a velocidade de gravao dos outros programas. 


Muitos sistemas operacionais tm cache de buffer (apesar de s vezes
receber outro nome), mas nem todos funcionam dentro dos mesmos princpios.
Alguns so de gravao imediata: os dados so gravados no disco
imediatamente (e so mantidos no cache obviamente), outros so de gravao
posterior, isto  a gravao somente  feita aps intervalos de tempo.
Gravao posterior  mais eficiente, mas mais suscetvel a erros: caso uma
mquina tenha algum problema, ou a energia eltrica  cortada em um mau
momento, ou o disquete  removido sem ser desmontado, as mudanas
registradas no cache so perdidas. Isso pode significar que o sistema de
arquivos no funcionar bem, talvez devido a dados no gravados que
continham informaes crticas a manuteno do sistema. 

Por causa disso,
nunca deve-se desligar um equipamento sem seguir os procedimentos
adequados ou remover um disquete da unidade sem que o dispositivo esteja
desmontado ou aps o que quer que o programa tenha realizado. O comando
sync esvazia o buffer, isto  fora a gravao de dados ainda no
atualizados, e pode ser utilizado quando se quer ter certeza que tudo est
em segurana e atualizados. Em sistemas Unix tradicionais, h um programa
chamado update que roda em segundo plano, no sendo normalmente necessrio
o uso do comando sync. Linux tem ainda um programa residente chamado
bdflush, o qual executa uma sincronizao imperfeita mais frequentemente
para evitar travamentos sbitos devido ao grande trfego de entrada e
sada gerado pelo comando sync. 

No Linux, o bdflush  ativado pelo update. No h razo para perocupar-se
sobre isso, mas se o bdflush finalizar por alguma razo, o kernel emitir
um aviso sobre a ocorrncia e ele dever ser reinicialidao (/sbin/update).
O cache no pem arquivos no buffer, mas sim blocos, que so as menores
partes de um disco (em Linux, normalmente com 1 Kb de tamanho). Dessa
forma diretrios, superblocos, outros sistemas de arquivos e discos sem
sistemas de arquivos so colocados em cache de buffer.

A efetividade do cache  definida basicamente pelo seu tamanho. Um cache
pequeno  quase intil:  ele manter to pouca informao que toda a
informao ser retirada do cache antes de ser usada novamente. O tamanho
correto depende do volume de dados que  lido e gravado simultaneamente. A
nica forma de saber  experimentando.  Caso o cache tenha um tamanho
fixo,  melhor no defini-lo com um tamanho muito grande, pois isso pode
diminuir demasiadamente a memria livre e causar um volume excessivo de
swaps (e consequentemente lento). Para tornar mais eficiente o uso da
memria real, Linux automaticamente usa toda a memria livre como cache de
buffer, mas tambm a diminui quando os programas necessitam de mais
memria. Em Linux no h o que fazer para utilizar o cache, tudo acontece
automaticamente. Exceto por seguir os procedimentos de desligamento e
remoo de disquetes, no h com o que se preocupar. 
 

Iniciando e Desligando

Inicie-me
Ah...voc tem que faz-lo...voc tem que faz-lo
Nunca, nunca, nunca pare
Inicie-o
Ah...inicie-o, nunca, nunca, nunca
Voc far um homem adulto chorar,
Voc far um homem adulto chorar
(Rolling Stones)
       
Esta seo explica como um sistema Linux pode ser inicializado e
desligado, e como isto pode ser feito adequadamente. Caso os procedimentos
adequados no sejam seguidos, os arquivos podem se corrompidos ou
perdidos. 

           O processo de inicializao em maiores 
detalhes
           Reinicializando
           Mais informaes sobre o encerramento do 
sistema
           Modo monousurio
           Disquetes de emergncia    




Viso Geral da Inicializao e Encerramentos do 
Sistema

O ato de ligar o computador e carregar o sistema operacional  chamado
inicializao (booting - calar). O nome vem da imagem do computador
puxando a si prprio, mas o ato em si mesmo  um pouco mais realista.


Durante a arrancada, o computador carrega inicialmente uma pequena poro
de cdigo chamada carregador da inicializao, o qual carrega e inicia o
sistema operacional. O carregador da inicializao  normalmente
armazenado em uma localizao fixa no disco rgido ou disquete. A razo
para estes dois passos  que o sistema operacional  grande e complicado,
mas a primeira parte a ser carregada tem que ser muito pequena (poucas
centenas de bytes), evitando-se a necessidade de fabricao de firmwares
muito complicados. 

Diferentes computadores tm carregadores diferentes.
Para PCs, o computador (a BIOS) l o primeiro setor (chamado setor de
inicializao) do disquete e disco rgido. O carregador de inicializao
est neste setor. Ele carrega o sistema operacional, onde quer que ele
esteja no disco (ou em qualquer outro local onde ele esteja).  

Aps a
carga do Linux, o hardware  inicializado e os arquivos de controles de
dispositivos so inicializados, e  ento executado o processo init, o
qual inicia os demais processos que permitem o acesso aos usurios e que
eles possam executar outros programas. Os detalhes desta fase sero
discutidas a seguir.  

Para desligar o sistema, inicialmente todos os
processos recebem o aviso para desligarem-se (isso faz com que os arquivos
sejam fechados e todos os procedimentos para que tudo fique em ordem sejam
tomados), aps, os sistemas de arquivos e reas de swap so desmontados e
finalmente uma mensagem  apresentada na console, de que a alimentao
eltrica pode ser desligada. Caso o procedimento correto no seja seguido,
coisas muito desagradveis podem ocorrer e s vezes ocorrem, como por
exemplo a perda de todos os dados no cache de buffer de disco, sendo que o
sistema de arquivos em disco pode ficar incosistente e at mesmo
inutilizado. 




O processo de inicializao em maiores detalhes

Pode-se iniciar o Linux a partir de um disquete ou do disco rgido. A
seo de instalao do guia Instalao e Comeando em Linux descreve como
instalar o Linux e inici-lo da forma que se queira. 

Quando um PC 
inicializado, a BIOS executar diversos testes para checar se tudo est em
perfeita ordem, buscando a seguir a inicializao atual. Ela escolher o
disco rgido (tipicamente o primeiro dispositivo de disquete, se houver um
instalado; a ordem porm pode ser configurada) e ler o primeiro setor.
Este  chamado de setor de inicializao, e no caso de discos rgidos 
chamado de registro mestre de inicializao, uma vez que um disco rgido
pode conter diversas parties, cada qual com o seu prprio setor de
inicializao. 

O setor de inicializao contm um pequeno programa,
pequeno o suficiente para caber em um setor, o qual tem a funo de ler o
sistema operacional instalado e inicializ-lo. Quando a inicializao 
realizada a partir de um disquete, o setor de inicializao contm um
determinado cdigo que apenas l algumas centenas de blocos (dependendo do
tamanho do kernel) em uma determinada rea da memria. Em um disquete de
carga do Linux, no h sistema de arquivos, o kernel est armazenado em
setores consecutivos, uma vez que isso simplifica o processo de
inicializao.  possvel, porm, inicializar a partir de um disco que
contenha um sistema de arquivos, utilizando-se o LILO, o carregador Linux.

Ao inicializar a partir de um disco rgido, o cdigo do registro mestre de
inicializao examinar a tabela de parties (tambm localizada no
registro mestre), identificar a partio ativa (a partio indicada como
inicializvel), ler o setor de inicializao daquela partio e iniciar
o programa gravado naquele setor. O cdigo no setor de inicializao faz
exatamente o que o setor do disquete faz: ler o kernel de uma partio e
o executar. Os detalhes variam, uma vez que no  muito til ter uma
partio separada somente para manter uma imagem do kernel, uma vez que o
cdigo no setor de inicializao no pode simplesmente ler o disco
seqencialmente , e sim tem que encontrar os setores aonde quer que o
sistema de arquivos o tenha colocado. H diversas solues para o
problemas, mas o mais utilizado  utilizar o LILO (os detalhes sobre como
fazer isso so irrelevantes, para maiores informaes verifique a
documentao do LILO). 

Quando o sistema  iniciado utilizado o LILO, ele
normalmente segue adiante e l a inicializao padro.  possvel
configurar o LILO para iniciar um dos possveis kernels, ou mesmo iniciar
outros sistemas diferentes do Linux, sendo possvel us-lo para escolher
toda vez que o sistema for ligado, qual sistema ou kernel utilizar. Para
tanto pode-se pressionar alt, shift ou ctrl durante a inicializao do
sistema (quando o LILO  carregado) e sero apresentadas as opes
disponveis, ao invs da inicializao automtica com o sistema definido
como padro.  Alternativamente, o LILO pode ser configurado para sempre
perguntar qual sistema deve ser carregado, e aps um tempo mximo
configurvel de espera carregar o sistema definido como padro.  Como o
LILO  possvel ainda enviar linhas de comando ao kernel do sistema,
imediatamente aps o nome do sistema operacional. 

Note-se que h outros gerenciadores de inicializao, alm do LILO, como
por exemplo o loadlin. Informaes sobre estes sistemas podem ser
adicionadas em futuras verses deste manual. 

O sistema pode ser inicializado a partir de disquetes ou de discos
rgidos, porm a segunda alternativa tende a ser a melhor, uma vez que
evita os problemas inerentes aos disquetes, alm de ser mais rpido. Ainda
assim pode haver um certo nvel de problemas ao instalar-se a partir de um
disco rgido, fazendo com que muitos usurios utilizem disquetes para uma
primeira inicializao do sistema, executem a sua instalao no disco
rgido, assim como a do LILO, e somente a partir da passem a utilizar o
disco rgido como unidade de incio do sistema. 

Aps a carga do kernel do Linux em memria, independente da forma, e o
sistema estando efetivamente em execuo, ocorrem os seguintes eventos: 

? kernel do Linux  instalado inicialmente em um formato compactado, sendo
ento descompactado de forma automtica, atravs de um pequeno programa
que est localizado no incio da imagem do kernel. 

? Caso se esteja utilizando uma placa de vdeo Super VGA, Linux faz o seu
reconhecimento e pode adotar alguns procedimentos especiais (como utilizar
100 colunas por 40 linhas), perguntando que modo se deseja utilizar.
Durante a compilao do kernel,  possvel pr-definir um modo de vdeo, e
essa pergunta nunca ser apresentada. Isso pode ser feito tambm atravs
do LILO ou do comando rdev. 

? Aps, o kernel verifica os demais hardwares (discos rgidos, disquetes,
placas de rede, etc...) e configura os arquivos de controle de
dispositivos mais adequados. AO encontrar os arquivos de controle diversas
mensagens so apresentadas, como por exemplo: 

LILO boot:
Loading linux.
Console: colour EGA+ 80x25, 8 
virtual consoles
Serial driver version 3.94 with 
no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 
16450
tty01 at 0x02f8 (irq = 3) is a 
16450
lp_init: lp1 exists (0), using 
polling driver
Memory: 7332k/8192k available 
(300k kernel code, 384k reserved, 
176k data)
Floppy drive(s): fd0 is 1.44M, 
fd1 is 1.2M
Loopback device init
Warning WD8013 board not found at 
i/o = 280.
Math coprocessor using irq13 
error reporting.
Partition check:
  hda: hda1 hda2 hda3
VFS: Mounted root (ext 
filesystem).
Linux version 0.99.pl9-1 
(root@haven) 05/01/93 14:12:20

O texto exato difere de equipamento para equipamento, dependendo do
hardware disponvel, assim como da verso do Linux e de como ele esteja
configurado.  

? kernel tentar ento montar o sistema de arquivos raiz. A
origem deste sistema pode ser configurada em tempo de compilao, ou a
qualquer tempo atravs do LILO ou do rdev. O tipo de sistema de arquivos 
detectado automaticamente. Caso a sua montagem falhe, por exemplo devido
ao esquecimento de incluso do sistema de arquivos raiz no kernel, este
dar uma mensagem de erro fatal (panic) e abortar a inicializao do
sistema. 


O sistema de arquivos raiz  normalmente montado com parmetros
de acesso limitados a somente leitura (o que pode ser configurado de
acordo com a necessidade do administrador).   possvel validar o sistema
de arquivos enquanto ele  montado, porm no  uma boa idia para
sistemas de arquivos com acesso somente de leitura.  

? Aps o kernel
executar o programa init (localizado em /sbin/init) em modo de execuo
secundrio (e ele sempre ter o nmero de processo igual a 1). init
executa a ativao de diversos servios. O que ele far exatamente depende
de como ele est configurado. No mnimo ele iniciar alguns programas
residentes essenciais.  

? init ento passar o sistema para o modo
multiusurio e iniciar o programa getty, permitindo o uso de consoles
virtuais e linhas seriais. getty  o programa que permite que os usurios
acesse o sistema e pode tambm iniciar outros programas, dependendo de
como esteja configurado. ? Aps estes passos o sistema estar ativo e
pronto para uso. 



@@@@@@ linhas em branco (ou preto :-) )@@@@@@@@@@@@


Este procedimento, avisar a todos os usurios que o sistema ser
desligado em dez minutos, e que eles podero perder seus dados. O aviso 
apresentado em todo o terminal que estiver conectado, inclusive terminais
X

     Broadcast message from root (ttyp0) Wed Oct 28 
01:03:25 1998... 

     Iremos instalar um novo disco rgido.
     O sistema estar ativo em 1 hora
     The system is going DOWN for system halt in 10 
minutes !! 


O procedimento  automaticamente repetido algumas vezes antes do
desligamento, e a intervalos cada vez menores,  medida que o tempo passe. 

Quando o desligamento do sistema tem incio, todos os sistemas de arquivos
(exceto o raiz) so desmontados, os processos de usurios (casa haja algum
ainda utilizando o sistema) so finalizados, programas residentes so
encerrados, e finalmente o sistemas de arquivos raiz  desmontado. Quando
isso ocorre o processo init apresenta a mensagem de autorizao do
desligamento da mquina. Agora, e jamais antes disso, pode-se desligar o
equipamento. 

Algumas vezes, apesar disso ser muito raro em bons sistemas,  impossvel
desligar o sistema de forma adequada. Por exemplo, caso ocorra um erro
fatal com o kernel, pode ser impossvel emitir qualquer novo comando,
tornando o desligamento correto invivel, e tudo o que se pode fazer 
esperar que nenhum dano maior ocorra e ento desligar a mquina. Caso os
problemas sejam menos srios (digamos que algum quebrou o seu teclado com
um machado (), e o kernel est rodando normalmente,  aconselhvel
aguardar alguns minutos para que os dados sejam atualizados, esvaziando
assim o cache de disco, e somente aps desligar o equipamento. 

Alguns usurios gostam de utilizar o comando sync trs vezes, aguardando
pelo final do E/S, e somente aps desligar o equipamento. Caso no haja
programas sendo executados, esse procedimento equivale ao shutdown. Ainda
assim nenhum sistema de arquivos  desmontado o que pode gerar problemas
com o marcador de sistema de arquivos do tipo ext2fs. Em assim sendo este
mtodo no  recomendado. 

(A razo dos trs comandos sync remonta aos primeiros tempos do UNIX, onde
os comandos eram digitados separadamente, o que dava tempo suficiente para
que as operaes de E/S fossem finalizadas).



Modo monousurio

O comando shutdown tambm pode ser usado para colocar o sistema em modos
monousurio, o qual ningum, alm do superusurio (root), pode acessar, e
assim mesmo somente na console. Isso  muito til para tarefas de
administrao que no podem ser executadas caso o sistema esteja sendo
executado normalmente. Este modo de operao  melhor discutido mais
adiante neste livro. 



Disquetes de Emergncia

Nem sempre pode ser possvel inicializar o sistema a partir do disco
rgido. Por exemplo um erro grave na configurao do LILO, pode tornar o
sistema incapaz de ser iniciado. Para essas situaes,  necessrio ter
uma alternativa de inicializao que funcione sempre (desde que o hardware
tambm funcione). Para PCs tpicos, isso pode significar inicializar o
sistema a partir da unidade de disquetes.

Muitas distribuies de Linux, inclusive o Conectiva Red Hat Linux,
permite a criao de disquetes de emergncia durante a instalao.  uma
excelente idia cri-los, ainda que algumas vezes ele possa conter somente
o kernel do sistema, e presuma que os programas sero utilizados a partir
dos discos de instalao da distribuio, para corrigir o que quer que
seja. Algumas vezes isso pode no ser suficiente, como por exemplo, quando
se deseje restaurar alguns arquivos a partir de cpias de segurana feitos
atravs de softwares no presentes nos discos de instalao.

Pode ser necessrio ento criar-se um disquete raiz personalizado. O HOWTO
de Disco de Inicializao desenvolvido por Graham Chapman contm as
instrues de como fazer isso. Mas deve-se atentar para manter-se os
disquetes de emergncia e raiz atualizados. 

No se pode utilizar a unidade de disquetes utilizada para montar o
disquete raiz para qualquer outra finalidade. Isso pode ser incoveniente
caso se tenha somente uma unidade de disquetes. Ainda assim, caso haja
memria suficiente, pode-se configurar o disquete raiz para carregar o seu
contedo para a memria (o disco de inicializao do kernel necessita ser
especialmente configurado para isso). Uma vez que o disquete tenha sido
carregado em memria, a unidade estar liberada para montar outros discos. 



Init

Uuno on numero yksi 

Este captulo descreve o processo init, o qual  o primeiro processo de
nvel de usurio que  iniciado pelo kernel. init tem diversas tarefas
importantes, como iniciar o getty (aps o qual os usurio podem acessar o
sistema), implementar os nveis de execuo, e tomar conta dos processos
rfos. Este captulo explica como o nit  configurado e como fazer uso
dos diferentes nveis de execuo. 

      
          init vem em primeiro lugar
          configurando o init: o arquivo 
/etc/inittab
          nveis de execuo
          configuraes especiais no /etc/inittab
          iniciando em modo monousurio



init vem em primeiro lugar

init  um dos programas absolutamente essenciais para a operao de um
sistema Linux, mas que o usurio pode ainda ignorar. Uma boa distribuio
Linux conter a configurao de um init que funcionar com a maioria dos
sistemas, e no haver necessidade de fazer absolutamente nada.
Usualmente, o administrador somente ir preocupar- se com o init caso
necessite lidar com terminais seriais, modems configurados para
atendimento (e no para chamadas) ou caso deseje mudar o nvel de execuo
padro do sistema. 

Quando o kernel se auto inicializa ( carregado em memria, comea a
rodar, inicia todos os arquivos de controles de dispositivos e estrutura
de dados), ele finaliza as suas tarefas na inicializao do sistema ao
iniciar o programa de nvel de usurio init. E init  sempre o primeiro
processo do sistema (o seu nmero de processo  sempre igual a 1). 

O kernel procura pelo init em algumas localizaes que vem sendo usadas
historicamente para isso, porm a localizao correta em um sistema Linux
 o /sbin/init. Caso o kernel consiga encontr-lo, ele executar o
programa /bin/sh e caso ocorra algum problema, a inicializao do sistema
 abortada. 

Quando o init comea, ele finaliza o processo de inicializao ao executar
uma srie de tarefas administrativas, como a checagem dos sistemas de
arquivos, limpeza do /tmp, incio de vrios servios e do getty para cada
terminal e console virtual atravs dos quais os usurios sero autorizados
a acessar o sistema.

Aps o sistema ter sido adequadamente inicializado, o init reinicia um
getty para cada terminal aps a sada do usurio do sistema (permitindo
que o prximo usurio possa acessar o sistema). Alm disso, init adota
tambm todos os processos rfos: quando um processo inicia um processo
filho e  finalizado antes de seu filho, imediatamente o processo restante
torna-se filho do init. Isso  importante por vrias razes tcnicas, mas
 importante conhecer para entender as listas de processos e a rvore de
processos.

H poucas variantes disponveis do init. Muitas distribuies Linux usam o
sysvinit (escrita por Miquel van Smoorenburg), a qual  baseada no desenho
do init do System V. AS verses BSD tem um init diferente. As diferenas
bsicas residem nos nveis de execuo presentes somente no System V.
Essas diferena no  essencial e ns examinaremos somente o sysvinit. 



configurando o init: o arquivo /etc/inittab


Quando  inicializado, o processo init l o arquivo de configurao
/etc/inittab. Enquanto o sistema estiver no ar, ele ser lido novamente,
caso seja enviado um sinal HUP, tornando desnecessrio inicializar todo o
sistema para que as mudanas do init faam efeito. 

O arquivo /etc/inittab  um pouco complicado, porm comearemos pelos
casos mais simples, ou seja configurando as linhas do getty. Linhas do
arquivo /etc/inittab consistem de quatro campo delimitados por dois
pontos: 

     id:nvel_de_execuo:ao:processo 


Os campos so descritos a seguir. Em adio o /etc/inittab podem conter
algumas linhas vazias, e linhas que comecem com # sero consideradas
comentrios. 

id Identifica a linha no arquivo. Para linhas referentes ao getty
especifica o terminal em que eles so executados (os caracteres aps o
/dev/tty no nome do arquivo de dispositivo). Para outras linhas no tem
efeito (exceto pelas restries de tamanho), e devem ser nicas, ou sejam
no pode haver mais de uma linha com o mesmo nmero. 

nvel_de_execuo Os nveis de execuo que devem ser considerados para a
linha. Os nveis de execuo so definidos atravs de dgitos sem
delimitadores e so melhor descritos na prxima seo. 

ao Define ao que deve ser executara pela linha. Por exemplo, respawn
para executar novamente o comando do prximo campo, quando ele existir ou
once para execut-lo somente uma nica vez. 

processo
O comando a ser executado
 
Para iniciar o getty no primeiro terminal virtual (/dev/tty1), em todos os
modos de execuo multiusurio (de 2 a 5), deve-se informar a seguinte
linha. 

     1:2345:respawn:/sbin/getty 9600 tty1 


O primeiro campo diz que a linha deve ser executada para /dev/tty1; o
segundo que ele aplica-se aos nveis de execuo de 2 a 5; o terceiro que
o comando deve ser executado diversas vezes, ou seja reinicializado
diversas vezes (ou seja quando um usurio desconectar-se de um terminal, o
processo getty ser executado novamente para que outro usurio possa
conectar-se). O ltimo campo executa o processo getty no primeiro terminal
virtual.

Caso deseje-se adicionar terminais ou modems para recebimento de chamadas
ao sistema, deve-se adicionar mais linhas ao arquivo /etc/inittab, uma
para cada terminal ou modem. Para maiores detalhes veja as pginas de
manual init (8), inittab (5) and getty (8). 

Caso o comando falhe ao ser executado, e o init esteja configurado para
reinicializ-lo, isso certamente consumir uma grande quantidade de
recursos pois o processo de iniciar o comando se repetir indefinidamene.
Para prevenir esse tipo de problema, init verificar a frequncia de
reinicializao do comando e caso esta seja muito grande, o init aguardar
automaticamente por cinco minutos antes de inici-lo novamente. 



Nveis de Execuo

Nvel de execuo  o estado do init e de todo o sistema que define que
servios estaro operacionais. Eles so identificados por nmeros, de
acordo com a tabela a seguir. No h nenhum consenso de como utilizar os
nveis definidos pelo usurio (de 2 a 5). Alguns administradores de
sistema utilizam os nveis de execuo para definir quais subsistemas
sero executados, por exemplo se o X estar disponvel ou as
funcionalidades de rede e assim por diante. Outros tem todos os
subsistemas sendo ativados e sendo finalizados individualmente, sem mudar
o nvel de execuo, j que este pode ser um pouco complexo para controlar
seus sistemas. Cada administrador deve definir qual o mtodo mais adequado
s suas necessidades, porm seguir a forma definida pela distribuio em
uso deve ser o meio mais simples.

0 - Parar o sistema
1 - Monousurio (para tarefas de administrao do 
sistema)
2-5 - Operao normal (definida pelo usurio)
6 - Reinicializar

Tabela de Nveis de Execuo

Nveis de execuo so configurados no /etc/inittab 
por linhas como as seguintes:

l2:2:wait:/etc/init.d/rc 2 

O primeiro campo  uma etiqueta arbitrria; o segundo significa que ele se
aplica ao nvel de execuo 2. O terceiro significa que o init deve
executar o comando contido no quarto campo quando o nvel de execuo for
informado, e que o init deve aguardar que ele seja concludo. O
/etc/init.d/rc executa todos comandos necessrios para iniciar e parar os
servios previstos para este nvel.

O comando no quarto campo executa todo o trabalho duro de configurar um
nvel de execuo. Ele inicia os servios que ainda no estejam sendo
executados e finaliza os servios que no devem rodar neste nvel.
Exatamente qual o comando a ser utilizado ou como o nvel est configurado
depende de cada distribuio Linux. 

Quando o init  iniciado, ele procura por uma linha no /etc/inittab que
especifique o nvel de execuo padro: 

     id:2:initdefault: 


Pode-se informar ao init para iniciar o sistema em um nvel de execuo
fora do padro, informando ao kernel um comando com argumentos de
inicializao em nvel monousurio ou de emergncia. Isso permite escolher
o nvel 1, descrito na prxima seo. 

Enquanto o sistema est sento executado o comando telinit pode mudar o
modo de execuo, o que faz com que o init execute o comando apropriado
definido no /etc/inittab. 



Configuraes especiais no /etc/initttab


O arquivo /etc/inittab tem algumas funcionalidades especiais que permitem
aes diferenciadas em situaes especiais. Estas funcionalidades so
definidas atravs de palavras chaves utilizadas no terceiro campo. Alguns
exemplos: 

powerwait permite que o init desligue o sistema, na falta de energia
eltrica. Assume que o sistema est utilizando uma unidade de alimentao
extra (no- break) e que o software da unidade informar sobre a falta de
enrgia. 

ctrlaltdel permite o init reinicializar o sistema, quando as teclas
control-alt-del do teclado forem pressionadas simultaneamente. Veja que o
administrador pode configurar C-A-D ou qualquer outra combinao para
funcionarem desta forma, aplicvel por exemplo, nos casos em que o sistema
esteja em uma localizao pblica. 


sysinit 

comando que deve ser executado quando o sistema for inicializado. Por
exemplo, limpar o contedo de /tmp. 

Esta lista no  completa. Veja a pgina de manual on-line do inittab (5)
para todas as possibilidades e detalhes de como utiliz-las. 


iniciando em modo monousurio

Um nvel de execuo extremamente importante  o modo monousurio (nvel
1), no qual somente o administrador do sistema utiliza a mquina e o menor
nmero possvel de servios (como nmero de acessos ao sistema) estaro
disponveis. Este modo de execuo  necessrio para algumas pequenas
tarefas administrativas, tais como na execuo do fsck na partio /usr, o
que requer que a partio esteja desmontada, o que no pode ocorrer a
menos que todos os servios do sistemas estejam finalizados. 

Um sistema em execuo pode ser alterado para o nvel de execuo
monousurio atravs do comando telinit. Durante a inicializao do sistema
a palavra single ou emergency na linha de comando do kernel faz com que o
init seja informado do nvel de execuo (a linha de comando do kernel
pode variar de sistema para sistema). 

Inicializando em modo monousurio pode ser necessrio para executar-se o
comando fsck manualmente, antes de que qualquer montagem ou processo
acesse a partio /usr (qualquer atividade em um sistema de arquivos
inconsistente somente pode trazer mais problemas, devendo o fsck ser
executado o mais rapidamente possvel). 

Os programas de lote de inicializao do init automaticamente entraro em
modo monousurio caso o comando fsck executado de forma automtica
apresente algum problema durante a inicializao do sistema. Esta  uma
tentativa de prevenir que o sistema utilize um sistema de arquivos
danificado e que o fsck no possa corrigir automaticamente. Tais casos so
relativamente raros e usualmente envolvem um disco rgido com problemas ou
uma verso experimental do kernel, porm  desejvel que se esteja
preparado. 

Como medida de segurana, um sistema adequadamente configurado pedir a
senha do superusurio (root)  antes de iniciar um ambiente de trabalho
monousurio. De outra forma seria simples simplesmente informar uma linha
ao LILO e ganhar acesso ao sistema como superusurio. Caso o problemas
esteja no arquivo /etc/passwd, o melhor e ter-se  mo um disquete de
inicializao. 



Entrando e saindo do sistema

Este captulo necessita de um comentrio. 
Sugestes, algum?

Esta seo descreve o que acontece quando um usurio acessa ou sai de um
sistema. As vrias interaes entre os processos executados em segundo
plano, arquivos de histricos, arquivos de configurao, etc... so
descritos em detalhes. 

          Acesso via terminais
          Acesso via rede
          O que o acesso ao sistema faz
          X e xdm
          Controle de acessos
          Ativao do ambiente de trabalho (shell)

       



Acesso via terminais

A figura a seguir mostra como acontece o acesso via terminal.
Primeiramente o init assegura-se de que h um programa getty para aquele
terminal ou console. O programa getty fica aguardando que o usurio
informe que ele est pronto para acessar o sistema (normalmente atravs da
digitao de qualquer de qualquer coisa). Ao detectar um usurio, getty
apresenta uma mensagem de boas vindas (armazenada em /etc/issue) e
solicita a identificao do usurio e finalmente executa o programa login.
Este recebe o nome do usurio como parmetro e solicita ao usurio a sua
senha. Caso a senha esteja correta, o programa login iniciar o ambiente
de trabalho (shell) que est configurado para o usurio. Caso a senha no
confira ele simplesmente encerra o processo (talvez aps dar ao usurio
outra chance de informar seus dados). O processo init percebe que o
processo foi concludo e inicia um novo getty para o terminal. 


 

  
Figura 8.1: Acesso via terminal: a interao do 
init, getty, login e shell. 

Note-se que o nico processo novo  criado pelo init (usando a chamada de
sistema fork); getty e login somente substituem o programa que estava
sendo executado pelo processo (atravs da chamada de sistema exec). 


Um programa em separado, para detectar usurios  necessrio para linhas
seriais, desde que pode (e tradicionalmente ) mais complicado detectar
quando um terminal se torna ativo. getty adota ainda a velocidade e outros
parmetros de comunicao, os quais so importantes para receber as
requisies de conexo, onde esses parmetros pode variar de conexo para
conexo. 

H ainda diversas verses do getty e init em uso, todas com pontos
favorveis e desfavorveis.  aconselhvel aprender sobre as verses do
sistema em uso, e tambm sobre outras verses (pode-se usar o Mapa de
Softwares Linux para pesquisas). Caso no se tenha recebimento de
chamadas, provavelmente getty no ser to importante, porm o init 
ainda muito importante. 



Acessos Via Rede 

Dois computadores na mesma rede esto normalmente conectados atravs de um
nico cabo fsico. Quando ele comunicam-se atravs da rede, os programas
em cada computador que interagem na comunicao esto interligados por uma
conexo virtual, algo como um cabo imaginrio. At aonde os programas e a
conexo virtual interessam, eles tem o monoplio de seu prprio cabo. Uma
vez que o cabo no  real, somente imaginrio, o sistema operacionadl de
cada computador pode Ter diversas conexes virtuais compartilhando o mesmo
cabo fsico. Desta forma usando somente um nico cabo, diversos programas
podem comunicar-se sem ter que preocupar-se com as outras conexes. 
posssvel ainda ter-se diversos computadores no mesmo cabo; as conexes
virtuais existentem entre dois computadores, e os demais ignoram aquelas
conexeas das quais eles no fazem parte. 

Esta  uma descrio resumida da realidade, porm deve ser boa o
suficiente para o entendimento do porque acesso via rede so bastante
diferentes de acessos normais. As conexes virtuais so estabelecidas
quando h dois programas em diferentes computadores que desejam
comunicar-se. Desde que, a princpio, qualquer computador pode
comunicar-se com qualquer outro, h um grande nmero de potenciais
comunicaes virtuais. Devido a isso, no  muito prtico iniciar um
processo getty para cada acesso em potencial.

H somente um nico processo denominado inted (correspondente ai getty)
que administra todos os acessos de rede. Quando  detectada um pedido de
acesso via rede (isto , a deteco de uma requisio de abertura de nova
conexo virtual com algum outro computador),  iniciado um novo processo
que administra aquela conexo. O processo original  mantida e continua
atendendo a novos pedidos de acesso. 

Para tornar as coisas um pouco mais complexas, h diversos protocolos de
acesso via rede. Os dois mais utilizados so telnet e rlogin. Em adio
aos acessos h diversos outros tipos de conexes virtuais que podem ser
realizadas (como FTP, Gopher, HTTP, e outros servios de rede). 
desnecessria a manuteno de processos separados para diferentes tipos de
conexes. Ento ao invs disso, h somente um processo quepode reconhecer
o tipo de conexo e iniciar o tipo correto de programa para atender o
servio solicitado. Para maiores informaes sobre o inetd consulte o Guia
de Administrao de Redes Linux. 



Como funciona o acesso ao sistema

O programa de acesso ao sistema preocupa-se com a autenticao do usurio
(assegurando que o nome do usurio e a senha conferem), e por configurar
um ambiente inicial para o usurio atravs das configuraes de permisses
para a linha serial e incio do ambiente de trabalho (shell). 

Parte da configurao inicial  a apresentao do contedo do arquivo
/etc/motd (mensagens do dia) e da checagem do correio eletrnico. Isso
pode ser desabilitado atravs da criao de um arquivo chamado .hushlogin
no diretrio pessoal do usurio. 

Caso o arquivo /etc/nologin exista, os acessos estaro desabilitados. Este
arquivo  criado tipicamente atravs do comando shutdown e comandos
relacionados. O login verifica a existncia desse arquivos e ir recusar
qualquer acesso, caso ele exista. Caso ele exista, o processo login
apresentar o seu contedo no terminal antes de ser finalizado. 

As falhas de logins so registradas em um arquivos de histrico do sistema
(via syslog). Ele ainda armazena todos os acessos realizados pelo
superusurio (root). Ambos podem ser teis na deteco de intrusos. 

Os usurio conectados em determinado momento esto listado no arquivo
/var/usr/utmp. Este arquivo  vlido somente at a prxima inicializao
do sistema, pois a cada evento desta natureza  reinicalizado. Ele lista
cada usurio e terminal (ou conexo de rede) que esteja sendo utilizada,
em conjunto com algumas outras informaes adicionais. O comando w - who -
e outros similares lem o contedo de utmp a fim de verificar quem est
conectado. 

Todos os acessos bem sucedidos so gravados em /var/log/wtmp. Este arquivo
 incrementado sem limites, devendo-se ser limpo periodicamente, por
exemplo atravs de uma tarefa semanal programada no cron. O comando last
mostra o contedo de wtmp. 

Tanto utmp quanto wtmp esto em formato binrio (vide a pgina de manual
on-line de utmp); o que torna incoveniente o seu acesso sem o uso de
programas especiais. 



X e xdm

X implementa acessos via xdm. Maiores informaes podem ser obtidas na
pgina de manual on-line dos comandos xterm e xdm. 


Controle de acesso

A base de dados de usurios est normalmente localizado no arquivo
/etc/passwd. Alguns sistemas utilizam a opo shadows, a qual move as
senhas para o arquivo /etc/shadow. Localizaes que tenham muitos
computadores que compartilhem contas de acesso podem usar NIS ou outros
mtodos de armazenamento da base de dados de usurios, podendo copiar
automaticamente a base de dados de uma localizao central para todos os
computadores da rede.

A base de dados de usurios no contm somente as senhas, mas contm
tambm informaes adicionais sobre os usurios, como os seus nomes reais,
diretrios pessoais e ambientes de trabalho no acesso ao sistema. Estas
informaes so pblicas, logo qualquer usurio pode l-las, sendo que a
senha dos usurios ''e armazenada encriptada no sistema. Isso produz o
incoveniente de que qualquer usurio que tenha acesso ao sistema e algum
conhecimento tcnico, possa usar mtodos criptogrficos para descobrir as
senhas dos demais, sem o uso de tentativas de acessos no autorizados.  A
opo shadow tenta evitar isso, movendo as senhas para outro arquivo, o
qual somente pode ser acessado pelo superusurios (root), sendo que as
senhas ainda permanecem cifradas. Cabe ressalatar que a instalao dsta
opo em sistemas que no tem suporte a esta funcionalidade pode ser um
tanto difcil. 

 importante assegurar-se e orientar os usurios para que todas as
existentes sejam complexas o suficiente para que no sejam facilmente
quebradas.  Os programas de quebra de senha tentam adivinhar a senha do
usurio atravs de procedimentos comuns de criao de senhas (datas, nomes
comuns, etc...). Uma vez que um programa de quebra possa ser rodado por um
invasor, deve ser executado tambm pelo administrador, para verificar o
nvel de segurana das senhas utilizadas no sistema. Boas senhas podem ser
fornecidas pelo programa passwd,pois exigiro muito mais esforo
computacional para quebr-las.

A base da dados dos grupos  mantida no /etc/group, e para sistemas com a
opo shadow ativa,  mantida em /etc/shadow.group. 

O superusurio no pode normalmente conectar-se via rede, somente nos
terminais listados em /etc/securetty. Isso obriga ao acesso fsico a um
desses terminais.  possvel ainda conectar-se via qualquer terminal como
um outro usurio, e utilizar o comando su para tornar-se o superusurio
(root). 



Ativao do ambiente de trabalho (shell)

Quando um ambiente de trabalho (shell) interativo  iniciado,
automaticamente so executados um ou mais arquivos pr-definidos.
Diferentes ambientes podem executar diferentes arquivos. Para maiores
informaes, deve ser examinada a documentao de cada ambiente.

Muitos ambientes executam inicialmente um arquivo global, por exemplo o
Bourne shell (/bin/sh) e seus derivados executam o /etc/profile, e
adicionalmente executam o arquivo .profile no diretrio pessoal do
usurio. O arquivo /etc/profile permite que o administrador do sistema
possa definir algum item de ambiente comum a todos os usurios,
especialmente a varivel PATH para incluso de diretrios de programas e
comandos em adio aos diretrios padres. Por outro lado o arquivo
.profile permite que o usurio possa customizar o ambiente de acordo com
as suas prprias necessidades, e se necessrio alterar as opes padro de
ambiente. 




Gerenciando contas de usurios


As semelhanas entre os administradores de sistemas e os traficantes de
drogas: ambos medem as coisas em K's e ambos tm usurios (velha e surrada
piada de informticos). 
 
Este captulo explica como criar novas contas de usurios, como modificar
suas propriedades e como remev-las. Diferentes sistemas Linux tem
diferentes ferramentas para execuo destas tarefas. 

    O que  uma conta?
          Criando um usurio
                /etc/passwd e outros arquivos
               Escolhendo um  nmero de usurio e 
identificao de grupo
                Ambiente inicial: /etc/skel
                Criando um usurio manualmente
           Alterando as caractersticas de um 
usurio
           Removendo um usurio
           Desabilitando um usurio temporariamente




O que  uma conta?


Quando o computador  usado por muitas pessoas  usualmente necessrio
diferenciar os usurios, como por exemplo, permitir que os arquivos
pessoais permaneam privativos aos seus dosnos. Isto  importante mesmo
que o computador seja usado somente por um usurio por vez, o que ocorre
em muitos microcomputadores. Alm disso, cada usurio tem um nome nico
que  utilizado na sua identificao ao acessar o sistema.

H mais coisa relacionadas a um usurios do que somente seu nome. Uma
conta compreende todos os arquivos, recursos e informaes pertencentes a
um usurio. O termo aproxima-se da sua utilizao na rea bancria, e como
em uma conta em um banco que tem alguma disponibilidade associada, uma
conta em Linux tem uma srie de recursos associados, que podem ser gastos
em diferentes velocidades  medida que se utilize o sistema. Por exemplo,
o espao em disco pode Ter uma limitao de uso em megabytes ao dia, e o
processamento pode ter um preo por segundo. 



Criando um usurio

O kernel do sistema trata usurios como nmeros.  Cada usurio 
identificado como um nmero inteiro nico, denomidado identificao do
usurio (user id ou uid), poruqe nmeros so mais simples e rpidos de
serem processados do que os nomes dos usurios. Um banco de dados separado
do kernel relaciona cada usurio a um nome textual, o nome do usurio
(username), a uma identificao do usurio. O arquivo contm ainda outras
informaes. 

Para criar um usurio,  necessrio informar algumas informaes
adicionais sobre o usurio para incluso na base de dados e criar um
diretrio pessoal para ele. Pode ser necessrio ainda auxiliar o usurio e
configurar algumas varveis de ambiente iniciais. 

Muitas distribuies Linux vm com um programa para criao de usurios.
H diversos programas disponveis. Dois programas muito utilizados so o
adduse e useradd, que podem ter inclusive uma interface grfica.
Independente do programa o resultado  muito similar para todos eles.
Todavia este manual descreve como faz-lo manualmente. Mesmo que os
detalhes possam parecer um pouco intrincados, esses programas fazem tudo
parecer mais trivial. 


/etc/passwd e outros arquivos

A base de dados de usurios bsica est em formato texto e est localizada
em /etc/passwd (chamada arquivos de senhas), a qual contm todos os nomes
vlidos de usurios e as informaes associadas a estes. O arquivo contm
um nome de usurio pode linhas e est dividido em sete colunas delimitadas
por dois pontos: 

   1.Nome do usurio. 
   2.Senha em formato encriptado. 
   3.Identificao numrica do usurio 
   4.Identificao numrica do grupo 
   5.Nome completo ou outra descrio da conta. 
   6.Diretrio pessoal. 
   7.Ambiente de trabalho (programa que ser 
executado no acesso ao sistema (shell)). 

O formato  explicado em mais detalhes nas pginas de manual do sistema em
passwd (5). 


Qualquer usurio de sistema pode ler o arquivo passwd, podendo conhecer
por exemplo, o nome de outros usurios do sistema. Isso significa que a
senha (segundo campo) tambm est disponvel para qualquer usurio. O
arquivo de senhas encripta as senhas, que em teoria estaro seguras. Ainda
assim a criptografia pode ser quebrada, especialmente se a senha for muito
simples (por exemplo uma senha muito curta ou pertencente ao dicionrio).
Logo no  aconselhvel manter as senhas no arquivo passwd.

Muitos sistemas Linux tem a opo de shadow para senhas. Este pode ser um
meio alternativo de armazenamento: as senhas criptografas so armazenadas
em um arquivo em separado, o /etc/shadow, o qual pode ser lido somente
pelo superusurio (root). O arquivo /etc/passwd contm somente uma marca
especial no campo se senha.  Qualquer programa que necessite verificar a
senha do usurio tem a identificao do dono do programa alterada, podendo
ento acessar o arquivo de senhas shadow. Programas normais que necessitem
somente usar os demais campos do arquivo passwd , no precisam ter acesso
s senhas dos usurios. 



Escolhendo um  nmero de usurio e identificao de 
grupo

Em muitos sistemas no faz diferena qual a identificao do usurio ou do
grupo utilizadas, mas caso se esteja utilizando um sistema de arquivos em
rede (NFS), ser necessrio Ter o mesmo uid e gid em todos os sistemas.
Isso deve-se ao fato do NFS identificar os usurios com uids numricas.
caso no se esteja utilizando NFS, pode- se permitir que o programa de
criao de contas escolha um nmero de forma automtica. 

Caso se esteja utilizando NFS, ter que ser criado um mecanismo de
sincronismo de informaes de contas. Uma alteranativa  utiliza o sistema
NIS. 


Deve-se evitar a reutilizao de uids numricas e nomes de usurios,porque
os novos usurios poderiam ter acesso aos arquivos dos antigos donos da
conta. 


Ambiente inicial: /etc/skel
                

Quando um diretrio pessoal  criado, ele  inicializado com arquivos
oriundos do diretrio /etc/skel. O administrador do sistema pode criar
arquivos em /etc/skel que podem prover um excelente padro de ambiente
para os usurios. Por exemplo, ele pode criar um arquivo
/etc/skel/.profile que inicializa a varivel de ambiente EDITOR com algum
editor que seja amigvel para novos usurios. 

 importante tentar mante o /etc/skel o menor possvel, uma vez que poder
ser extremamente trabalhoso ter que atualizar todos os arquivos dos
usurios j existentes. Por exemplo, se o nome do editor mudar, todos os
usurios com a varivel inicializada em seus arquivos .profile tero que
ser alteradas. Pode-se tentar fazer isso automaticamente, mas a
possibilidade de gerar algum problema para alguns usurios  muito grande. 

Sempre que possvel,  melhor colocar alguma configurao genrica em
arquivos de configurao global, como por exemplo o /etc/profile. Assim 
possvel realizar atualizaes sem alterar diretamente as configuraes
dos usurios. 



Criando um usurio manualmente

Para criar um usurio manualmente, devem ser seguidos os seguntes passos: 

Editar o arquivo /etc/passwd com o utilitrio vipw (vide a pgina de
manual on-line para maiores informaes) e adicionar uma nova linha para a
nova conta. Atentar para a sintaxe do arquivo. No editar diretamente com
outro editor, pois o vipw trava o arquivo, no permitindo a sua
atualizao ao mesmo tempo por outros aplicativos. Deve-se informar '*' no
campo senha, assim o acesso no ser possvel.  

De formar similar editar o
arquivo /etc/group com o utilitrio vigr, caso seja necessrio criar
tambm um novo grupo.  Criar um diretrio pessoal com o comando mkdir. 
Copiar os arquivos do diretrio /etc/skel para o novo diretrio pessoal
criado.  Ajustar as permisses e donos atravs dos comandos chown e chmod.
A opo -R pode ser muito til. As permisses corretas podem variar de um
local para outros, mas normalmente os seguintes comandos devem atender: 
          
    cd /home/nome_do_usurio 
          chown -R nome_do_usurio.grupo . 
          chmod -R go=u,go-w . 
          chmod go= .
 
6. Ajustar a senha atravs do comando passwd (1).


Aps a configurao da senha, a conta estar apta a funcionar. No se deve
configur-la at que todo os demais passos tenham sido executados, de
outra maneira o usurio poder ter acesso ao sistemas, enquanto os
arquivos esto sendo copiados. 

Algumas vezes pode ser necessrio criar contas annimas que no so
utilizadas por qualquer usurio. Por exemplo para configurar um servidor
FTP annimo (permitindo que qualquer usurio possa fazer a cpia de
arquivos a partir do servidor, sem a obrigatoriedade de ter-se uma conta
criada para o usurio) deve-se criar uma conta chamada ftp. Neste casos
no  necessrio configurar uma senha (ltimo passo acima). Ao contrrio,
 melhor no faz- lo,pois nimgumpoder usar a conta, a menos que antes
se torne o superusurio, uma vez que o root pode transformar-sem em
qualquer usurio (comando su). 



Alterando as caractersticas de um usurio

H poucos comandos para alterar as vrias caractersticas de uma conta (ou
seja, os campos relevantes do arquivo /etc/passwd): 

chfn - altera o nome completo do usurio 
chsh - altera o ambiente de trabalho inicial 
(shell) do usurio 
passwd - altera a senha

O superusurio pode usar ester comando para alterar as propriedades de
qualquer conta. Usurio normais podem somente alterar as propriedades de
sua prpria conta. Algumas vezes  necessrio desabilitar estes comandos
(com chmod) para usurios normais, por exemplo em ambientes com muitos
usurios iniciantes. 

Outras tarefas necessrias devero ser executadas manualmente. Por exemplo
para alterar o nome do usurio  necessrio editar o arquivo /etc/passwd
diretamente (com vipw). Da mesma forma, para adicionar ou remover o
usurios de grupos,  necessrio editar o arquivo /etc/group (com vigr).
Tal procedimento tende a ser raro, devendo porm ser realizado com extrema
ateno, pois a swap do nome de um usurio poder fazer com que ele, por
exemplo, no receba mais mensagens, e assim por diante. 


Romovendo um usurio


Para rremover um usurio, deve-se inicialmente remover todos os seus
arquivos, caixas de correio, nomes alternativos para mail, trabalhos de
impresso, trabalhos programados via cron e at, e todas as referncias que
existirem ao usurio. Aps, pode-se remover as linhas relevantes dos
arquivos /etc/passwd e /etc/group (deve-se retirar quaisquer referncias
ao usurio em todos os grupos que ele tenha sido adicionado).  indicado
antes de iniciar este processo desabilitar o usurio, previnindo assim o o
uso da conta enquanto ela est sendo removida. 

Lembre-se que usurios podem ter arquivos fora do diretrio pessoal. O
comando find pode encontr- los, atravs da seguinte sntaxe:

     find / -user username 

Note-se que se h um disco rgido muito grande, o comando acima pode levar
um tempo maior para a sua execuo. Caso se tenha discos montados em rede,
tem-se que tomar certas precaues em no carregar toda a rede no
servidor. 

Algumas distribuibuies Linux vm com comandos especiais para esta
tarefa; verifique o comando deluser ou userdel. No Conectiva Linux pode
ser utilizado o comando XXXXXX. Ainda que esses comandos possam ser teis,
algumas vezes eles no fazem todo o trabalho necessrio. 



Desabilitando tem

Desabilitando um usurio temporariamente

Algumas vezes  necessrio desabilitar temporariamente uma conta, sem
necessariamente remov-la. Por exemplo, o usurio pode no ter pago suas
dvidas, ou o administrador do sistema pode suspeitar que a senha daquela
conta tenha sido violada. 

A melhor forma de fazer isso  alterar o ambiente de trabaho da conta para
um programa especial que somente apresente uma mensagem. Desta forma, toda
vez que se tente acessar o sistema utilizando esta conta, ocorrer um
falha, e a mensagem pode indicar, por exemplo, que o administrador do
sistema seja contactado. 

Pode ainda ser possvel alterar o nome do usurio ou a senha para algum
outro valor, mas ento o usurio no saber o que est ocorrendo, podendo
gerar uma certa confuso. 

Uma forma simples de criar programas especiais  gravar scripts: 


     #!/usr/bin/tail +2
     Esta conta foi fechada devido a questes de 
segurana.
     Por favor chame a 332-1234 e aguarde a chegada 
do homens de preto.      

Os primeiros dois caracteres (`#!') dizem ao kernel que o restante da
linha  um comando que deve ser executado. O comando tail, neste caso,
imprime na sada padro as duas ltimas linhas. 

Caso o usurio hboy seja suspeito de um furo de segurana, o administrador
do sistema pode fazer algo como: 

     # chsh -s /usr/local/lib/no-login/security 
hboy 
     # su - tester 
     Esta conta foi fechada devido a questes de 
segurana.
     Por favor chame a 332-1234 e aguarde a chegada 
do homens de preto.      
     # 

O propsito do comando su  testar se a mudana de ambiente de trabalho
no apresentou problemas. 

Scripts como estes, utilizando tail, devem ser mantidos em diretrios
separados, assim os seus nomes no interferiro com os comandos normais de
usurios. 



Cpias de Segurana

Hardware  indeterminadamente confivel,
Software  indeterminadamente confivel,
Pessoas so indeterminadamente confiveis,   
Natureza  determinadamente confivel. 


Este captulo explilca porue, como e quando fazer cpias de segurana, e
como restaurar itens das cpias realizadas. 
 

O que  importante copiar?
          Selecionando o dispositivo de backup
          Selecionando a ferramenta de backup
          Cpias simples
                Cpias de segurana com tar
                Restaurando arquivos com tar
          Cpias em diversos nveis
          O que copiar
          Arquivos compactados


