Você está na página 1de 249

ndice

1 Introduo................................................................................. 6
......................
2 Histrico do

Linux.................................................................................
..........
3 Gerncia de

10

Processos...........................................................................
..........
3.1 Consideraes

10

Iniciais.......................................................................
......
3.1.

Inicializao (boot do

10

sistema).................................................
3.2 Gerncia do Processo pelo

12

kernel............................................................
3.3 Criando e Destruindo um

13

Processo.........................................................
3.4 Executando

13

Processos....................................................................
........
4 Gerncia de

15

Memria.............................................................................
..........
4.1 Gerenciamento de Memria do
Linux.....................................................

15

4.2 Memria

16

Fsica..........................................................................
.............
4.3 Distribuio da Memria do Processo

17

Usurio........................................
4.4 Inicializao da

18

Memria.....................................................................
...
4.5 Adquirindo e Liberando

19

Memria...........................................................
4.6 Paginao

22

(Paging)......................................................................
...........
4.7 Gerenciamento de Memria

23

Cache..........................................................
4.7.

Arquitetura de Memria Cache do Linux (Linux


Flush
Architecture) ....................................................
..........................

4.7.

Implementao de Memria

24

Cache..............................................
4.7.

Arquitetura Baseada no

SMP.......................................................
4.7.3.1- Arquitetura Baseada no contexto

27

MMU/CACHE......
4.7.

Contedo de uma Arquitetura


Virtual..........................................
ndice

27

4.7.

Implicaes Referentes a

28

Arquitetura..........................................
4.7.5.1- Arquitetura baseado no contexto

28

SMP......................
4.7.5.2- Arquitetura baseado no contexto

29

MMU/CACHE.......
4.7.

Como tratar o que a Arquitetura flush no executa


com
exemplos...........................................................
..........................

4.7.

Questes Abertas na Arquitetura

30

Cache.......................................
5 Sistema de Arquivos do Linux (File

31

System)....................................................
5.1 Conceitos

31

Fundamentais............................................................
.............
5.1.

Arquivos................................................................... 31
..................

5.1.

Diretrios.................................................................. 31
..................

5.1.

Conta........................................................................ 32
..................

5.1.

Tipo de

32

Arquivos............................................................
.............

5.1.

Acesso a

33

Arquivos............................................................
...........
5.1.

Atributos dos

33

Arquivos............................................................
....
5.2 Operaes sobre

34

Arquivos.....................................................................
.
5.3 Arquivos

35

Compartilhados..........................................................
..............
5.4 Estrutura do Sistema de Arquivos Linux Realease

36

1.2.............................
5.4.

Apresentao............................................................ 36
...................

5.4.

Caractersticas Sistema de

36

Arquivos.............................................
5.4.

Composio dos

38

Diretrios..........................................................
5.4.3.1- Subdiretrio

39

/bin....................................................
...
5.4.3.1.1-

Arquivos e/ou Comandos


disponveis em
/bin.................................
..............

ndice

5.4.3.2- Subdiretrio

40

/boot..................................................
...
5.4.3.3- Subdiretrio

40

/dev...................................................
....
5.4.3.4- Subdiretrio

41

/etc....................................................
...
5.4.3.4.1-

Arquivos e/ou Comandos


disponveis em
/etc..................................
.............

5.4.3.5- Subdiretrio

42

/home................................................
....
5.4.3.6- Subdiretrio

42

/lib.....................................................
..
5.4.3.7- Subdiretrio

43

/mnt..................................................
....
5.4.3.8- Subdiretrio

43

/proc..................................................
...
5.4.3.9- Subdiretrio /root
(opcional)....................................

43

5.4.3.10 Subdiretrio
-

44

/sbin..................................................
....
5.4.3.10.1 Arquivos e/ou Comandos
-

disponveis em
/sbin................................
..............

5.4.3.10.2 Arquivos e/ou Comandos


-

opcionais em
/sbin................................
..............

5.4.3.11 Subdiretrio
-

45

/tmp...................................................
...

5.4.3.12 A hierrquia
-

45

/usr...................................................
....
5.4.3.12.1 Subdiretrio /usr
-

46

(permanente)...........

5.4.3.12.2 Subdiretrio
-

47

/usr/x386........................

5.4.3.12.3 Subdiretrio
-

47

/usr/bin..........................
.

5.4.3.12.4 Subdiretrio
-

/usr/dict.........................
.

47

5.4.3.12.5 Subdiretrio
-

47

/usr/etc...........................

5.4.3.12.6 Subdiretrio
-

48

/usr/include....................
.

5.4.3.12.7 Subdiretrio
-

49

/usr/lib...........................
.
ndice

5.4.3.12.8 Subdiretrio
-

50

/usr/local........................

5.4.3.12.9 Subdiretrio
-

50

/usr/man........................
.

5.4.3.12.1 Subdiretrio
0-

52

/usr/bin..........................
.

5.4.3.12.1 Subdiretrio
1-

/usr/share.......................

5.4.3.12.1 Subdiretrio
2-

54

/usr/src...........................

5.4.3.13 A hierrquia
-

53

54

/var....................................................
...
5.4.3.13.1 Subdiretrio
-

/var/adm.........................

54

5.4.3.13.2 Subdiretrio
-

55

/var/catman....................
.

5.4.3.13.3 Subdiretrio
-

56

/var/lib............................

5.4.3.13.4 Subdiretrio
-

56

/var/local........................

5.4.3.13.5 Subdiretrio
-

57

/var/ock.........................

5.4.3.13.6 Subdiretrio
-

57

/var/og............................

5.4.3.13.7 Subdiretrio
-

58

/var/name.......................

5.4.3.13.8 Subdiretrio
-

58

/var/nis...........................

5.4.3.13.9 Subdiretrio
-

58

/var/preview...................

5.4.3.13.1 Subdiretrio
0-

58

/var/run..........................

5.4.3.13.1 Subdiretrio
1-

58

/var/spool.......................

5.4.3.13.1 Subdiretrio
2-

59

/var/tmp.........................
.

5.4.

Alguns Dilemas sobre o Sistema de


Arquivos...............................

59

5.4.

Descrio sucinta do contedo dos

61

manuais.................................
6 Pontos Positivos e

63

Negativos...........................................................................
7 Concluso................................................................................. 64
.......................
ndice
9 Apndices.................................................................................. 65
......................
A-

Comandos Bsicos do Sistema

65

Unix........................................................
B-

Perguntas mais Frequentes (FAQs) colocadas na Linux-

77

BR.....................
C-

Copyrights Linux e Esquema de numerao verso

127

Linux.......................
D-

Contrato de

128

Licena.......................................................................
.........
8 Bibliografia e

134

Referncias........................................................................
.........

1 - Introduo

O Linux um clone UNIX de distribuio livre para PCs


baseados em processadores 386/486/Pentium.
O Linux uma implementao independente da especificao
POSIX, com a qual todas as verses do UNIX padro (true UNIX) esto
convencionadas.
O Linux foi primeiramente desenvolvido para PCs baseados em
386/486/Pentium, mas atualmente tambm roda em computadores
Alpha da DEC, Sparcs da SUN, mquinas M68000 (semelhantes a
Atari e Amiga), MIPS e PowerPCs.
O Linux foi escrito inteiramente do nada, no h cdigo
proprietrio em seu interior.
O Linux est disponvel na forma de cdigo objeto, bem como
em cdigo fonte.
O Linux pode ser livremente distribudo nos termos da GNU
General Public License (veja apndice).
O Linux possui todos as caractersticas que voc pode esperar
de um UNIX moderno, incluindo:

Multitarefa real

Memria virtual

Biblioteca compartilhada

"Demand loading"

Gerenciamento de memria prprio

Executveis "copy-on-write" compartilhados

Rede TCP/IP (incluindo SLIP/PPP/ISDN)

X Windows

10

A maioria dos programas rodando em Linux so freeware


genricos para UNIX, muitos provenientes do projeto GNU.
Muitas pessoas tem executado benchmarks em sistemas Linux
rodando em 80486, e tem achado o Linux comparvel com
workstations mdias da Sun e da Digital.
O Linux est disponvel atravs da Internet por meio de
centenas de sites FTP.
O Linux est sendo usado hoje em dia por centenas e centenas
de pessoas pelo mundo. Est sendo usado para desenvolvimento de
softwares, networking (intra-office e Internet), e como plataforma de
usurio final. O Linux tem se tornado uma alternativa efetiva de custo
em relao aos caros sistemas UNIX existentes.
Um exemplo de pacote de distrribuio do Linux mais populares

distribuido

pela

InfoMagic

(http://www.infomagic.com,

e-mail

info@infomagic.com), a verso LINUX Developers Resource CD-ROM,


de dezembro de 1996, contm 6 CD-ROMs, seu contedo sucinto :
Verso Red Hat 4.0 (instalando kernel 2.0.18)
Verso Slackware 3.1 (Slackware 96 - instalando kernel 2.0)
Verso Debian GNU/Linux 1.2
X-Windows - Xfree86 version 3.2
Arquivos Linux de tsx-11.mit.edu e sunsite.unc.edu
Arquivos GNU de prep.ai.mit.edu
Documnetao completa on-line & HOWTOs (Guia de Instalao e
Guia do Administrador da Rede, em ingls)
Softwares demostrao comerciais como : BRU, dbMan, StarOffice,
Cockpit, Flagship, Smartware, GP Modula-2, Pathfinder, Scriptum,
etc.

11

2. Historia do Linux

O Kernel do Linux foi, originalmente, escrito por Linus Torvalds


do Departamento de Cincia da Computao da Universidades de
Helsinki, Finlndia, com a ajuda de vrios programadores voluntrios
atravs da Internet.
Linus Torvalds iniciou cortando (hacking) o kernel como um
projeto particular, inspirado em seu interesse no Minix, um pequeno
sistema UNIX desenvolvido por Andy Tannenbaum. Ele se limitou a
criar, em suas prprias palavras, "um Minix melhor que o Minix" ("a
better Minix than Minix"). E depois de algum tempo de trabalho em
seu

projeto,

sozinho,

ele

enviou

seguinte

mensagem

para

comp.os.minix:
Voc suspira por melhores dias do Minix-1.1,
quando homens sero homens e escrevero seus
prprios "device drivers" ? Voc est sem um bom
projeto e esta morrendo por colocar as mos em
um S.O. no qual voc possa modificar de acordo
com suas necessidades ? Voc est achando
frustrante quando tudo trabalha em Minix ? Chega
de atravessar noites para obter programas que
trabalhem correto ? Ento esta mensagem pode ser
exatamente para voc.
Como eu mencionei a um ms atrs, estou
trabalhando em uma verso independente de um
S.O. similar ao Minix para computadores AT-386.
Ele est, finalmente, prximo do estgio em que
poder ser utilizado (embora possa no ser o que
voc esteja esperando), e eu estou disposto a
12

colocar os fontes para ampla distribuio. Ele est


na verso 0.02... contudo eu tive sucesso rodando
bash, gcc, gnu-make, gnu-sed, compresso, etc.
nele.
No dia 5 de outubro de 1991 Linus Torvalds anunciou a
primeira verso "oficial" do Linux, verso 0.02. Desde ento muitos
programadores tm respondido ao seu chamado, e tm ajudado a
fazer do Linux o Sistema Operacional que hoje.
Ultimas verses do kernel do Linux
Release v1.0
1.0.9
Data: Sat Apr 16 21:18:02 UTC 1994
Release v1.1
1.1.95
Data: Thu Mar 2 07:47:10 UTC 1995
Release v1.2
1.2.13
Data: Wed Aug 2 12:54:12 UTC 1995
Release v1.3
pre2.0.14
Data: Thu Jun 6 19:30:56 UTC 1996
Release v2.0
2.0.28
Data: Tue Jan 14 12:33:26 UTC 1997
ftp://ftp.cs.Helsinki.FI/pub/Software/Linux/Kernel/v2.0/linux
-2.0.28.tar.gz

13

Release v2.1
2.1.23
Data: Sun Jan 26 14:12:18 UTC 1997
ftp://ftp.cs.Helsinki.FI/pub/Software/Linux/Kernel/v2.1/linux
-2.1.23.tar.gz

14

3 - Gerncia de Processos

3.1 - Consideraes Iniciais

Para explicarmos como o Linux gerncia processos, faremos


consideraes iniciais sobre o cdigo fonte do kernel do Linux (onde
encontramos a implementao da Gerncia de Processos) e a
inicializao boot do sistema.
Neste tpico tentaremos explicar, de uma maneira ordenada o
cdigo fonte do Linux, tentando conseguir um bom entendimento
sobre como o cdigo fonte est situado e como as caractersticas mais
relevantes do UNIX foram implementadas. O objetivo ajuda-lo a se
familiarizar com o projeto geral do Linux. Ento, vamos comear por
onde o Linux comea: seu sistema de boot.
Um bom entendimento da linguagem C necessrio para
entender este material, assim como familiaridade com conceitos de
UNIX e arquitetura dos PCs. Porm, nenhum cdigo C aparecer neste
material, mas referencias de onde podem ser encontrados.
Qualquer referencia "pathname" arquivos tem como ponto de
partida a arvore principal de fontes, usualmente /usr/src/linux.
A maioria das informaes reportadas aqui tem como referencia
o cdigo fonte do Linux verso 1.0. Referencias a verses posteriores
contero o smbolo novo.
Caso o smbolo no estiver presente, significa que no
houveram modificaes aps as verses 1.0.9-1.1.76.
mais Ocasionalmente um pargrafo como este ocorrer no texto.
Indicando onde poderam ser obtidas mais informaes sobre o
assunto corrente (geralmente o cdigo fonte).
3.1.1 - Inicializao ("boot" do sistema)

15

Quando o PC ligado, o processador 80x86 encontra-se em


modo real e executa o cdigo contido no endereo 0xFFFF0, que
corresponde a um endereo ROM-BIOS. O BIOS do PC realiza alguns
testes no sistema e inicializa o vetor de interrupes no endereo fsico
0. Depois disto ele carrega o primeiro setor do device bootavel em
0x7C00, e passa a execuo para este endereo. O device ,
usualmente, o disquete ou o disco rgido. A descrio anterior um
tanto simplificada, mas tudo que se necessita para entender o
trabalho inicial do kernel.
A primeirssima parte do kernel Linux est escrito em linguagem
assembly 8086 (boot/bootsect.S). Quando executado, ele se move
para o endereo absoluto 0x90000, carrega os prximos 2 kBytes de
cdigo do device de boot at o endereo 0x90200, e o resto do kernel
para o endereo 0x10000. A mensagem "Loading..." apresentada
durante o carregamento do sistema. O controle , ento passado para
o cdigo contido em boot/Setup.S, outro cdigo assembly de modo
real.
A parte de "setup" identifica algumas caractersticas do sistema
(hardware) e o tipo da placa VGA. Se requerido, pede ao usurio para
escolher o modo do vdeo da console. E, ento, move todo o sistema do
endereo 0x10000 para o endereo 0x1000, passa para o modo
protegido e passa o controle para o resto do sistema (endereo
0x1000).
O prximo passo a descompresso do kernel. O cdigo em
0x1000 vem de zBoot/head.S que inicializa os registradores e invoca
decompress_kernel(),

qual

composto

por

zBoot/inflate.c,

zBoot/unzip.c e zBoot/misc.c. O dado "descompresso" vai para o


endereo 0x100000 (1 Mega), e esta a principal razo do por que o
Linux no pode rodar com menos de 2 Megas de RAM.

16

mais O encapsulamento do kernel em um arquivo gzip realizado por


Makefile e utilitrios no diretrio zBoot. So arquivos interessantes
para se dar uma olhada.
novo A verso 1.1.75 moveu os diretrios boot e zBoot para
arch/i386/boot. Esta modificao pretendeu possibilitar a construo
de "kernel verdadeiro" para diferentes arquiteturas.
O cdigo "descompresso" executado a partir do endereo
0x1010000 , onde todo o setup 32-bit esta lotado: IDT, GDT e LDT so
carregados, o processador e o co-processador so identificados, a
rotina start_kernel invocada. Os arquivos fonte das operaes acima
esto em boot/head.S. Este, talvez, seja o cdigo mais difcil em todo o
kernel do Linux.
Note que se algum erro ocorrer durante alguns dos passos
precedentes, o computador ir travar. O sistema operacional no pode
manipular erros enquanto no estiver totalmente operante.
start_kernel() reside em init/main.c. Tode de agora em diante
esta codificado em linguagem C, exceto gerncia de interrupes e
chamadas de sistemas (Bem, a maior parte das macros possuem
cdigos assembly embutidos, tambm).
Depois dos procedimentos com todas as questes iniciais,
start_kernel() inicializa todas as partes do kernel, especificamente:

Inicializa a memria e chama paging_init().

Inicializa os traps, canais IRQ e scheduling.

Se requerido, aloja um profiling buffer.

Inicializa todos device drives e buffers de discos, bem como outras


partes menores.

Regula o delay loop (calcula o numero "BogoMips").

Checa se a interrupo 16 est trabalhando com o co-processador.

17

Finalmente, o kernel est pronto para move_to_user_mode(), em


seguida fork (bifurca) o processo de inicializao, cujos cdigos esto
no mesmo arquivo fonte. E o processo nmero 0, tambm chamado
idle task (tarefa preguiosa), se mantm rodando em um loop infinito.
O processo de inicializao tenta executar

/etc/init, ou

/bin/init, ou /sbin/init.
Se nenhum deles tem sucesso, o cdigo se desvia para
"/bin/sh /etc/rc" e cria um root shell no primeiro terminal (console).
Este cdigo remanescente do Linux 0.01, quando o S.O. era feito
para um kernel stand-alone, e no havia processo de login.
Depois de exec() o programa de inicializao de um dos lugares
padro (deve haver um deles), o kernel no tem controle direto sobre
o fluxo do programa. Sua funo, de agora em diante, prover
processos atravs de chamadas ao sistema (system calls), assim como
prover eventos para servios assncronos (como uma interrupo do
hardware).

multitarefa

est

inicializada,

inicializar

gerenciamento de acesso a multiusurios, atravs do fork() e


processos de login.
Estando

kernel

carregado

provendo

servio,

vamos

prosseguir dando uma olhada nesses servios ("system calls").

3.2 - Gerncia de processo pelo kernel


Do ponto de vista do kernel, um processo uma entrada na
tabela de processos. Nada mais.
A tabela de processos, ento, uma das mais importantes
estruturas de dados no sistema, conjuntamente com a tabela de
gerenciamento de memria e o buffer cache. O item individual na
tabela

de

processos

estrutura

task_struct,

definida

em

include/linux/sched.h. Com a task_struct, tanto informaes de baixo


quanto de alto nvel, so mantidas variando da cpia de alguns

18

registradores de hardware at o inode do diretrio de trabalho para o


processo.
A tabela de processos tanto um array quanto uma lista
duplamente ligada, como uma rvore. A implementao fsica um
array esttico de ponteiros, cujo tamanho NR_TASKS, uma
constante definida em include/linux/tasks.h, e cada estrutura reside
em uma pagina de memria reservada. A estrutura da lista est entre
os ponteiros next_task e prev_task, a estrutura em arvore um tanto
complexa, e no ser descrita aqui. Voce pode desejar mudar
NR_TASKS do seu valor default (que 128), mas esteja certo de que
h dependncias, e ser necessrio recompilar todos os arquivos fonte
envolvidos.
Depois do boot, o kernel est sempre trabalhando em um dos
processos, e a varivel global "current", um ponteiro para um item da
task_struct, usado para guardar o processo que est rodando. A
varivel "current" s mudada pelo scheduler, em kernel/sched.c.
Quando, porm, todos os processos necessitarem estar looked, a
macro for_each_task usada. Isto consideravelmente mais rpido
que uma procura seqencial no array.
Um processo est sempre rodando em ou em "modo usurio" ou
em "modo kernel". O corpo principal de um programa de usurio
executado em modo usurio e chamadas a sistema so executados em
modo kernel. A pilha usada pelos processos netes dois modos de
execuo so diferentes um seguimento de pilha convencional
usado para o modo usurio, enquanto uma pilha de tamanho fixo
(uma pgina, cujo processo dono) usada no modo kernel. A pgina
de pilha para o modo kernel nunca swapped out, porque ela pode
estar disponvel sempre que um system call introduzido.
Chamadas a sistema (System calls), no kernel do Linux, so
como funes da linguagem C, seu nome "oficial" esta prefixado por
"sys_". Uma chamada a sistema de nome, por exemplo, burnout
invoca a funo de kernel sys_burnout().

19

mais O mecanismo de chamadas a sistema (System calls) est descrito


no

captulo

do

Linux

Kernel

Hackers'

(http://www.redhat.com:8080/HyperNews/get/khg.html).

Guide
Uma

olhada em for_each_task e SET_LINKS, em include/linux/sched.h


pode ajudar a entender a lista e a estrutura de rvore da tabela de
processos.

20

3.3 - Criando e destruindo processos

Um sistema UNIX cria um processo atravs da chamada a


sistema fork(), e o seu trmino executado por exit(). A implementao
do Linux para eles reside em kernel/fork.c e kernel/exit.c.
Executar o "Forking" fcil, fork.c curto e de fcil leitura. Sua
principal tarefa suprir a estrutura de dados para o novo processo.
Passos relevantes nesse processo so:

Criar uma pgina livre para dar suporte task_struct

Encontrar um process slot livre (find_empty_process())

Criar uma outra pgina livre para o kernel_stack_page

Copiar a LTD do processo pai para o processo filho

Duplicar o mmap (Memory map - memoria virtual) do processo pai

sys_fork() tambm gerencia descritores de arquivos e inodes.


novo A verso 1.0 do kernel possui algum vestgio de suporte ao
"threading" (trabalho ou processo em paralelo), e a chamada a sistema
fork() apresenta algumas aluses ele.
A morte de um processo difcil, porque o processo pai
necessita ser notificado sobre qualquer filhos que existam (ou deixem
de existir). Alm disso, um processo pode ser morto (kill()) por outro
processo (isto um aspecto do UNIX). O arquivo exit.c , portanto, a
casa do sys_kill() e de variados aspectos de sys_wait(), em acrscimo
sys_exit().
O cdigo pertencente exit.c no descrito aqui - ele no to
interessante. Ele trabalha com uma quantidade de detalhes para
manter o sistema em um estado consistente. O POSIX "standard", por

21

conseguinte, dependente de sinais (flags), e tinha que trabalhar com


eles.

3.4 - Executando Processos

Depois de executar o fork(), duas copias do mesmo programa


esto rodando. Uma delas usualmente executa - exec() - outro
programa. A chamada a sistema exec() deve localizar a imagem binria
do arquivo executvel, carrega-lo e executa-lo. "Carrega-lo" no
significa, necessriamente, copiar na memria a imagem binria do
arquivo, para que, assim, o Linux possa atender a demanda de
programas a serem executados.
A implementao Linux do exec() suporta formatos binrios
diferentes. Isto dotado atravs da estrutura linux_binfmt, a qual
embute dois ponteiros para funes - um para carregar o executvel e
o outro para carregar a "library" associada, cada formato binrio deve
conter, portanto, o executvel e sua "library".
O sistema UNIX prove, ao programador, seis formas para a
funo exec(). Quase todos podem ser implementados como uma
"library" de funes, e o kernel do Linux implementa sys_execve()
independentemente das providas pelo UNIX. Ele executa uma nica
tarefa: carregar o cabealho do executvel, e tenta executa-lo. Se os
dois primeiros bytes so "#!", ento a primeira linha ignorada e um
interpretador invocado, caso contrrio o formato binrio, registrado,
executado seqencialmente.
O formato nativo do Linux suportado diretamente por
fs/exec.c,

as

funes

relevantes

so

load_aout_binary

load_aout_library. Assim como para os binrios a funo de


carregamento "a.out" invocada, e a funo mmap() (memory map memria virtual ) aloca espao em disco (no caso da memria real
22

estar cheia) para o processo, ou invoca read_exec(), caso haja espao


em memria. "The former way uses the Linux demand loading
mechanism to fault-in program pages when they're accessed, while
the latter way is used when memory mapping is not supported by the
host filesystem (for example the "msdos" filesystem)".
novo A partir da verso 1.1 do kernel, o Linux embutiu um sistema de
arquivos (filesystem) revisado do msdos, que suporta mmap() (memory
map - memria virtual). Alm disso a estrutura linux_binfmt uma
"lista ligada" e no um array, para permitir carregar um novo formato
binrio como um mdulo do kernel. Finalmente a estrutura, por si
mesma, foi estendida para acessar rotinas com o formato relativo
core-dump.

23

4 - Gerncia de Memria

4.1 - Gerenciamento de Memria do Linux (LMM)

A execuo do LMM (Linux Memory Manager) exige uma


estratgia de paginao com uma copy-on-write confiando nas 386
pginas auxiliares. Um processo alcana suas tabelas de pginas de
seu parent (durante um fork ) com as entradas marcadas como readonly ou trocado. Ento, se o processo tenta escrever para este espao
de memria e a pgina uma copy on write page, isto copiado e a
pgina marcada read-write. Um exec ( ) resulta na leitura de uma
pgina ou mais do executvel. O processo ento erra em qualquer
outra pgina que precisar.
Cada processo tem uma tabela de pgina que significa que pode
acessar 1 Kb de tabela de pgina indicando para 1 Kb de 4 Kb,
pginas que 4 Gb de mmoria. Um diretrio de pgina do processo
iniciado durante um Fork por copy-page-tables. O processo inativo
tem seu diretrio de pgina inicializado durante a sequncia de
inicializao.
Cada processo usurio tem uma tabela descritria local que
contm um cdigo de segmento e um segmento de dados. Estes
segmentos usurios extendem de 0 para 3 Gb (0 X c 0000000). Nos
espaos

usurios,

endereos

lineares

endereos

lgicos

so

idnticos.
No 80386, endereos lineares vo de 0 Gb para 4 Gb. Um endereo
linear indica uma posio particular de memria dentro deste espao.
Um endereo linear no um endereo fsico --- isto um endereo
virtual. Um endereo lgico consiste de um seletor e um offset. O
seletor indica para um segmento e o offset diz que distncia na seo
o endereo localizado.

24

O cdigo Kernel e o segmento de dados so sees privilegiados


definidos na tabela descritora global e extende de 3Gb para 4Gb. O
Swapper - page - dir organizado para que estes endereos lgicos e
fsicos sejam idnticos no espao Kernel.
O espao 3Gb acima aparece no process page directory como
indicadores para tabelas de pginas Kernel. Este espao invisvel
para o processo no user mode, mas o modo privilegiado acionado,
por exemplo, para sustentar um sistema de ligao. O modo
surpevisor inserido dentro do contexto do processo atual ento a
traduo do endereo ocorre com respeito ao diretrio de pgina do
processo,

mas

usando

segmentos

Kernel.

Isto

idntico

no

mapeamento produzido com o uso de swapper - pg - dir e segmentos


Kernel como ambos diretrios de pginas usa a mesma tabela de
pgina neste espao. Apenas task [0] (A tarefa inativa, s vezes
chamada de "tarefa trocadora"

por razes histricas, mesmo assim

isto no tem relao com trocas nos implementos Linux) usa o


swapper - pg - dir diretamente.
O segmento base do processo usurio = o X 00, page - dir
particular, para o processo.
O processo usurio faz um sistema de ligao : segment base = 0 X
c 0000000 page - dir = mesmo usurio page dir.
swapper - pg - dir contm um mapeamento para todas as pginas
fsicas de 0 X 0000000 para 0 X c 0000000 + and_mem, ento as
primeiras 768 entradas em swapper - pg - dir so 0's, e ento h 4
ou mais que indicam na tabela de pginas Kernel.
O user page directories tm as mesmas entradas como swapper - pg
- dir dos 768 acima. As primeiras 768 entradas mapeam o espao
usurio.
A vantagem que sempre que o endereo linear acima de 0 X
c 0000000 tudo usa a mesma tabela de pginas Kernel (Kernel page
Tables).

25

O monte usurio permanece no topo do segmento de dados do


usurio e desce. O Kernel Stack no uma bonita estrutura ou
segmento de dados que eu possa apontar com um "aqui um Kernel
Stack". Um Kernel Stack_frame (uma pgina) associada com cada
novo processo criado e usado sempre que o Kernel opera dentro do
contexto deste processo. Coisas ruins aconteceriam se Kernel Stack
descesse abaixo de seu corrente stack frame. [ Onde o Kernel Stack
guardado? Eu sei que h um para cada processo, mas onde isto
armazenado quando isto no est sendo usado? ]
Pginas usurios podem ser roubados ou trocados - Um user
page um que mapeado abaixo de 3 Gb em uma tabela de pginas
usurios. Esta regio no contm page directories ou page tables.
Apenas pginas sujas so trocadas.
Menores alteraes so necessrias em alguns lugares ( testes para
limites de memria vem para a mente) para prover suporte para
definidos segmentos programados. [ H agora uma modificao - |c| +
O sistema de ligao usado por dosane, Wine, Twin, and Wabi para
criar segmentos arbitrrios. ]

4.2 - Memria Fsica

Aqui est um mapa de memria fsica antes que qualquer


processo de usurio for executado. A coluna da esquerda mostra o
endereo de partida do item e os nmeros em negrito so
aproximados.
A coluna do meio mostra os nomes dos itens. A grande coluna
da direita mostra a rotina relevante ou o nome varivel ou explicaes
para ingresso.
* Projeto - Inits que adquirem memria so (principais.c) profil buffer, com, init, psaux, init, rd, , init, scsi.dev - init.

26

Note que toda memria no marcada como livre reservada


(mem-init). Pginas reservadas pertencem ao Kernel e nunca esto
livres ou trocadas.
Uma viso de memria do user process.
O cdigo de segmento e dados do segmento extendem todo o
caminho de 0 X 00 para 3 Gb. Correntemente o page fault handler do
wp_page confere para assegurar que um processo no escreve para
seu cdigo de espao.
De qualquer modo, pegando o sinal segu, possvel escrever
para o code space, causando ocorrncia de um copy - on - write. O
Handler do_no_page assegura que qualquer pgina nova que o
processo adquira pertena ao executvel, uma biblioteca dividida, ao
stack, ou dentro do valor do brK.
Um usurio de processo pode reordenar seu valor brK
chamando sbrK ( ). Isto o que malloc ( ) faz quando precisa. O texto e
a poro de dados so distribudos em pginas separadas ao menos
que algum escolha o N opo composta. A biblioteca dividida carrega
endereos so correntemente tornadas da imagem dividida por ele
mesmo.
O endereo entre 1.5 Gb e 3 Gb, exceto em casos especiais.
4.3 - Distribuio da memria do processo usurio

O Stack, shlibs e os dados so muito afastados um do outro


para serem spanned por uma tabela de pgina. Todas KPT so
divididas por todos processo e deste modo eles no esto na lista.
Apenas pginas sujas so trocadas. Pginas limpas so roubadas e
deste modo o processo pode t-los de volta para o executvel se for
desejado. A maioria das vezes apenas as pginas limpas so divididas.
Uma pgina suja termina dividida sobre um fork at que parent ou
child escolham para escrever isto de novo.
Administrao dos dados da memria na tabela do processo.
27

Aqui est um sumrio de algum dos dados mantidos na tabela


do processo que usado para administrao da memria.
Limites do processo da memria.
Ulong - start_code - and_code - and_data - brk, atart - stock
Erro de contagem de pgina.

Tabela do descritor local.

Sturct desc - sturct ldt {32} a mesa descritora local


para tarefa.
Nmeros de pginas residentes.
Swappable - trocveis
Se ento as pginas do processo no sero trocados.
Kernel Stack page
Indicador para a pgina distribuda no fork.
Saved - Kernel - Stack
V86 modo material (stuff)
stract tss
pilha de segmentos (stack segments)
indicador da pilha Kernel
Kernel stack pointer
segmento da pilha Kernel
Kernel stack segment (0X10)
ssi = esp 2 = ss2 = 0
Nveis de previlgio no usados.
Segmentos seletores. Ds=es=fs=gs=ss=ok17,cs
Todos indicam para segmentos no corrente 1 dt [ ]
c r 3 : indicam para o page directory para este processo
1 dt - LDT (n) seletores para tarefas correntes do LDT

28

4.4 - Inicializao da memria

No Start Kernel (main.c)

h 3 variveis relatadas para

inicializao da memria:
memory_start

comea a 1 Mb atualizado pelo projeto de

inicializao.
memory_end

trmino da memria fsica: 8 Mb, 16 Mb, ou

qualquer outro.
Low memory_start

trmino do cdigo Kernel e dados que

carregado inicialmente
Cada projeto init tipicamente torna memory_start e retorna um
valor atualizado, se distribui espaos no memory_start (simplesmente
pegando-a). Paging init ( ) inicializa a page-tables no { \ tt swapper pg - dir} ( comeando a 0 X 0000000)

para cobrir toda a memria

fsica do memory_start para memory_end. Na verdade o primeiro 4 Mb


feito no startup_32 (heads).memory_start incrementado se
quaisquer nova page-tables so adicionados.
A primeira pgina zerada para bloquear os indicadores das
referncias do alapo nulo no Kernel.
No sched_init ( ) o 1 dt e tss descritores para tarefa [0] so
postos no GDT, e carregado para dentro do TR e LDTR (a nica vez
que isto feito explicitamente). Um trap gate (0X80) ordenado para
system-call.( ).
A bandeira tarefa aninhada desligada na preparao para
entrada do modo usurio: O cronmetro ligado. O task-struct para
task [0] aparece por inteiro em < linux / sched.h >
mem_map ento construdo por mem_init ( ) para refletir o corrente
uso das pginas fsicas. Este o estado refletido no mapa da memria
fsica da seo anterior. Ento Dinux move para dentro do modo
usurio com um iret aps empurrar o corrente ss, esp, etc.
29

Claro que o segmento usurio para task [0] so mapeados bem sobre
os segmentos Kernel e deste modo a execuo continua exatamente
onde isto termina.
Task [0]:
pg_dir = swapper - pg - dir que sigmifica apenas endereos mapeados
esto no alcance 3 Gb para 3 Gb + High memory.
LTD [1] = cdigo usurio, base = 0 x 0000000, tamanho = 640 K
LDT [2] = dados usurios, base = 0 x 0000000, tamanho = 640 k
O primeiro exec ( ) pe a LTD entrada para task [1] para os
valores usurios da base = 0x0, limite = task_size = 0 x c 0000000.
Depois disso, nenhum processo v os segmentos Kernel enquanto no
modo usurio.
Processos e a Administrao da Memria.
Memria relacionada trabalho feito por fork ( ):
distribuio de memria
1 pgina para o Task-struct
1 pgina para o Kernel Stack
1 para o pg_dir e algumas para pg_tables (cpias - pginas tabelas)
Outras mudanas
sso pe para o segmento Kernel stack (0x10) para ter certeza?
espo pe para o topo da nova distribuio Kernel - stack - page.
c r 3 pe por copy - page - tables ( ) para indicar para nova pgina
de diretrio distribuda
1 dt = LDT (task_nr) cria novo 1 dt descritor
descritores pe no gdt para novo tss e 1 dt [ ]
Os registros restantes so herdados do parent.
Os processos resultam dividindo seus cdigos e segmentos de
dados (embora eles tenham tabelas descritoras locais separados, as

30

entradas indicam para os mesmos segmentos). O stack e pginas de


dados sero copiados quando o parent ou child escreve para eles
( copy-on-write).
Memria relacionada trabalho feito por exec ( ):
distribuio de memria
1 pgina para exec header para omagic
1 pgina ou mais para stack (max_arg_pages)
clear-pgina-tables ( ) usado para remover pginas velhas.
change 1 dt ( ) pe os descritores no novo 1 dt [ ]
1 dt [1] = cdigo base = 0 x 00, limite = task - size
1 dt [2] = data base = 0 x 00, limite = task - size
Estes segmentos so dpl = 3, p=1, s=1, g=1. Tipo = a (cdigo or
2 dados)
Eleva para MAX_ARG_PAGES pginas sujas de arqu e enup so
distribudos e guardado ao topo do segmento de dados para o novo
usurio pilha criado.
Ponha os indicadores de instruo do caller cip = ex.a_cutry
Ponha o stack indicador do caller para o stack criado (esp=stack
indicador). Este sero eliminados do Stack quando o caller resume.
Limites de Memria Atualizados
cud_code = ex.a_text
cud_data = cud_code + &x.d_data
brK = end_data + ex._bss
Interrupes e traps so sustentadas dentro do contexto da
corrente tarefa. Em particular, o diretrio de pginas do corrente
processo usado na traduo de endereos. Os segmentos, de
qualquer modo, so segmentos Kernel para que todos os endereos
lineares apontem para dentro da memria Kernel quer acessar uma
varivel no endereo 0 x 01. O endereo linear 0 x 00000001
(usando segmentos Kernel) e o endereo fsico 0 x 01. O ltimo

31

porque

pgina

do

processo

diretrio

mapea

esta

extenso

exatamente como page_pg_dir.


O espao Kernel (0 x c 0000000 + high - memory) e mapeado
pela tabela de pginas Kernel que so eles mesmos parte da memria
reservada. Eles so consequentemente divididas por todos processos.
Durante um fork copy-page-tables ( ) trata tabela de pginas
reservadas diferentemente. Isto pe indicadores no diretrio de
pginas de processo para indicar para tabelas de pgina Kernel e na
verdade no distribui novas tabelas de pginas como isto faz
normalmente. Como um exemplo o Kernel - Stack - page ( que ocupa
algum lugar no espao Kernel ) no precisa de um associado page table distribudos no pg-dir do processo para mape-lo.
O interruptor de instrues pe o indicador stack e o segmento
stack do privilgio valor salvo no Tss do corrente task. Note que o
Kernel stack um objeto realmente fragmentado - Isto no um
objeto nico, mas sim um grupo de stack frames. Cada um
distribudo quando um processo criado e deixado quando ele sai. O
Kernel stack no deveria crescer to rapidamente dentro de um
contexto de um processo que extende abaixo da corrente frame.

4.5 - Adquirindo e liberando memrias

Quando qualquer rotina Kernel precisa de memria isto acaba


chamando get-free-page ( ). Este est num nvel mais baixo do que
Kmallor ( ) (de fato Kmalloc ( ) get-free-page ( ) quando isto precisa
mais memria).
Get-free-page ( ) toma um parmetro, a prioridade.
Possveis valores so gfp_buffer_gfp, Kernel, gfp,nfs e gfp atomic.
Isto tira uma pgina do the free-page-list, atualizados mem_map,
zeram a pgina e retorna o endereo fsico da pgina (note que
Kmalloc) retorna um endereo fsico. A lgica do mm depende do
mapa da identidade entre o endereo lgico e fsico.
32

Isto por ele mesmo bastante simples. O problema claro,


que o free-page-list pode estar vazio. Se voc no requisitar uma
operao atmica, nesta etapa, voc entra dentro do domnio de uma
page stealing e que ns discutiremos em um momento. Como um
ltimo recurso ( e para requisitos atmicos) uma pgina separada do
secundary-page-list (como voc pode ter achado, quando pginas so
libertadas, o secundary-page-list enche primeiro a manipulao atual
da page-list e mem-map ocorre neste misterioso macro chamado
remove-from-mem-queve ( ) que voc provavelmente nunca quer
investigar. O suficiente para dizer que interrupes so incapacitados.
[Eu penso que isto deveria ser explicado aqui. Isto no to difcil...]
Agora de volta ao "Roubando pginas" get-free-page ( ) chame
try-to-fre-page ( ) que chame repetidamente shrink_buffers ( ) e swapout ( ) nesta ordem at conseguir liberar uma pgina. A prioridade
aumentada em cada iteration sucessiva para que estas duas rotinas
processem suas page-sterling-loops mais frequentemente. Aqui est
um exemplo do processo swap-out:
Faa a tabela do processo e adquira uma swappable task, por
exemplo, Q.
Ache um user page-table (no reservado) no espao de Q.
Para cada pgina na tabela try-to-swap-out (page)
Termina quando a pgina liberada.
Note que swap-out ( ) (chamada try-to-free-page ( )) mantm
variveis estatsticas e deste modo isto pode resumir a procura onde
terminar a chamada anterior try-to-swap-out ( ) examine os pagetables de todos usar process e obrigue o sterling policy:
1)

No brincar com as pginas (reserved) reservadas

2)

Envelhear a pgina se ela marcada acessada (1 bit)

3)

No mexa com pgina adquirida recentemente (last-free-pages


( ))

33

4)

Deixe pginas sujas com map-counts > 1 intocadas

5)

Diminua o map-count das pginas limpas

6)

Librere pginas limpas se elas no so mapeadas

7)

Troque pginas sujas com um map-count de 1


De todas essas aes, 6 e 7 vo parar o processo poruqe eles

resultam na liberao atual de uma pgina fsica.


A quinta ao resulta uma dos processos perdendo uma pgina
limpa no dividida que no foi acessada recentemente (diminuindo Q
rss) que no to ruim, mas os efeitos cumulativos de algumas
iterations pode atrasar o processo muito. No presente, h 6 iterations,
deste modo uma pgina dividida por 6 processos pode ser roubada se
est limpa. Page table ento so atualizados e o TLB invalidado. O
trabalho atual de liberar uma pgina feito por free-page ( ), a
complementao de get-free-page ( ). Isto ignora pginas reservadas,
atualiza mem-map, e libera a pgina e atualiza o page-list (s) se no
mapeada. Para troca (em 6 em cima), write-swap-page ( ) chamada e
no faz nada notvel da perspectiva da administrao da memria. Os
detalhes de shink-buffers ( ) nos levaria muito longe. Essencialmente
isto procura free "buffers" (buffers so uma parte da memria que
segura informao temporariamente quando dados transferem de um
lugar para outro) em seguida escreve buffers sujos, e depois comea
com buffers ocupados e chama free-page ( ) quando pode liberar todos
os buffers numa pgina.
Note que page directories, page-table, e reserved pages no so
trocadas, roubadas ou envelhecidas. Eles so mapeadas no process
page directories com reserved page tables. Eles so liberados somente
na sada do processo.
The page Fault Handles
Quando um processo criado por fork, ele comea com um page
directoru e uma pgina ou mais do executvel. Deste modo the page

34

fault handles a forte da maioria da memria do processo. The page


fault handles do page-fault ( ) recupera o endereo faltando no registro
c r 2. O cdigo do erro ( recobrado no sys-call.s) diferencia o acesso do
user / supervisior e a regio para o fault-write proteo de uma
pgina faltando. O anterior sustentado pelo do-wp-page ( ) e o
posterior pelo do-no-page ( ). Se o endereo falatando maior do que
Task-Size, o processo recebe um SIGKILL [ Por que este controle? Isto
pode acontecer somente em Kernel mode por causa da proteo do
nvel do segmento. Estas rotinas tem algumas sutilezas como elas
podem ser chamadas num interrompimento. Voc no ode supor que
a tarefa corrente que est executando de-no-page ( ) sustenta trs
situaes possveis:
1)

A pgina trocada

2)

A pgina pertence a biblioteca executvel ou dividida.

3)

A pgina est faltando uma pgina de dados no foi


distribuda

Em todas as causas get-empty-pgtable ( ) chamada primeiro para


assegurar a existncia de uma page table que cobre o endereo
falatando. No terceiro para providenciar uma pgina no endereo
requerido e no caso de uma pgina trocada, swap-in ( ) chamado. No
segundo caso, o handles calls share-page ( ) para ver se a pgina pode
ser dividida com algum outro processo. Se isto falhar leia a pgina do
executvel ou biblioteca (Isto repete a chamada para Share-page ( ) se
um outro processo fez o mesmo enquanto isso). Qualquer poro da
pgina fora do valor brK zerada.
A pgina lida do disco contada como um erro maior. Isto acontece
com um swap-in ( ) ou quando lida da executvel ou uma biblioteca.
Outras casos so consideradas erros menores (mim-flt). Quando uma
pgina divisvel achada ela corite-protected. Um processo que
escreve para uma pgina dividida vai precisar passar por um do-wppage ( ) que faz o copy-on-write.
Do-wp-page ( ) faa o seguinte:

35

Mande SIGSEGV se qualquer usar process o est escrevendo para o


corrente code-space.
Se a pgina velha no dividida, ento simplesmente no proteja-o.
Seno get-free-page ( ) and copy-page ( ). A pgina adquirire a
bandeira suja da pgina velha. Diminua a conta do mapa da pgina
velha.

4.6 - Paginando (Paging)

Paginando a troca numa base da pgina melhor do que os


processos inteiros. Ns vamos usar trocando aqui para referir
"paginando" , uma vez que apenas Linux pgina, e no trocar, e
pessoas so mais acostumadas palavra "Swap" / "trocar" do que
"page" / "paginar". Kernel pages nunca so trocadas pginas limpas
tambm

no

so

escritas

para

trocar.

Elas

so

liberadas

recarregadas quando requerida. O trocador mantm um nico bit de


informao de envelhecimento nas Pginas acessadas bit da page
table cutries - [ O que so os detalhes de manuteno? Como isto
usado?]
Linux suporta mltiplos swap files ou projetos que podem ser
ligados ou desligados pelas ligaes de swapoff system. Cada swap file
ou projeto descrito por uma strut-swap-info.
O campo das bandeiras (SWP-USED ou SWP-WRITE ok) usado
para controlar acesso para o swap files. Quando SWP- WRITE ok
desligado, o espao no vai ser distribudo neste arquivo. Isto usado
por Swapoff quando isto tenta de no usar um arquivo. Quando
swapoff adiciona um arquivo de troca nova isto aplica SWP-USED. Um
varivel imvel no Swap files armazena o nmero dos arquivos ativos
correntemente ativos.

Os campos lowest - bit e hihgest - bit limitam

36

a regio livre na pasta de troca e so usadas para adiantar a procura


por espao de troca livre.
O programa do usurio m | < swap inicializa um swap device ou
file. A primeira pgina contm uma assinatura (swap-space) nos
ltimos 10 bytes, e contm um mapa de bit. Inicialmente 1's no
bitmap significam pginas ruins A'1' no bitmap significa que a pgina
correspondente livre. Esta pgina nunca distribuda deste modo a
inicializao precisa ser feita somente uma vez.
The Syscall Swapor ( ) chamado pelo user program swapon
tipicamente de / etc / rc. Algumas pginas da memria so
distribudas por swap-map e swap-lockmap, swap-map contm um
byte para cada pgina no swapfile. Isto inicializado do bitmap para
conter 0 para pginas disponveis e 128 para pginas que no pode
ser usadas. Isto para manter uma conta das peties da troca em
cada pgina no swap file. Swap-lockmap contm um bit para cada
pgina que usada para assegurar excluso mtua quando lendo ou
escrevendo swap-files.
Quando uma pgina da memria est para ser trocada, um
ndice para posio da troca obtido com uma chamada para getswap-page ( ). Este ndice deste modo guardado em bits 1-31 da
page table entry para que a pgina trocada possa ser localizada pela
page fault handles, do-no-page ( ) quando necessrio.
Os 7 bits mais altos do ndice do o swap file ( ou projeto) e os
24 bits mais baixos do o nmero da pgina neste projeto. Isto faz at
128 swap files, cada um com espao para mais ou menos 64 Gb, mas
o espao em cima devido o swap map seria grande. Ao invs o
tamanho do swap file limitado para 16 Mb, porque o swap map
ento toma 1 pgina.
A funo swap-duplicate ( ) usado por copy-page-tables ( ) para
deixar o processo da child herdar pginas trocadas durante um fork.
Isto somente incrementa a conta mantendo no Swap-map para aquela
pgina. Cada processo vai trocar numa cpia da pgina separa

37

quando acess-la. Swap-free diminui a conta mantendo no swap-map.


Quando a conta abaixa para 0 a pgina pode ser redistribuda por getswap-page ( ). Isto chamado cada vez que uma pgina trocada lida
na memria ( swap-inc ) ou quando uma pgina est para ser
descartada ( free-one-table ( ), etc ).

4.7 - Gerenciamento de Memria Cache

4.7.1 - Arquitetura de Memria Cache do Linux (Linux Flush


Architecture)

O TBL mais uma entidade virtual do que um modelo estrito


quanto a Linux flush architecture e concernida. As caracterstica
nica so isto mantem em ordem o mapeamento do processo kernel
de algum modo, queira softivare ou hardware.
Cdigo especfico de arquitetura pode precisar ser modificado
quando o kernel tiver mudado um processo/mapeamento kernel.
O shell (um lugar seguro p/ guardar dinheiro ou coisas) esta
entidade essencialmente memory state/estado da memoria como
o flush architecture o v. Em geral isto tem as propiedades seguintes:
Isto sempre vai segurar cpias de dados que podem ser visto como
atualizado pelo processo local.
O funcionamento prprio pode ser relacionado ao TLB e o
mapeamento do processo/Kernel page de algum jeito, isto para
dizer que eles podem depender um do outro.

38

Isto pode, numa configurao cached virtual, causar problemas


aliasing se uma pgina fisica mapeada no mesmo tempo da que
duas pginas virtuais e por causa dos bits de um endereo usado
para catalogar a linha cache, a mesma poro do dedo pode acabar
residindo no cache duas vezes, deixando resultados incompativis.
Projetos e DMA podem ou no ter capacidade para ver a cpia de
um dedo mais atualizado que resida no cache do processo local.
Corretamente,

suposto

que

coerncia

num

ambiente

multiprocessador mantida pelo subsistema cache/memria. Isto


que dizer que, quando um processador requerer um dado no
memory bus de maneira e um outro processador tem uma cpia
mais atualizada, de qualquer jeito o requesitor vai obter uma cpia
atualizada que pertena um outro processador.
(NOTA: SMP arquiteturas sem hardware cache conferece mechansms
so realmente possveis, o arquitetura current flush no sustenta isto
corretamente, se em algum ponto o Zinux apontar em algum sistema
onda isto uma questo debatida, eu vou adicionar os ganchos
necessrios mas no vai ser bonito)
Sobre o que o Fluch Architecture se importa: sempre, a viso da
administrao de memria hardware de um conjunto de mapeamento
do processo Kernel sero consistentes com aqueles do Kernel page
tables.
Se o memory managemat kernel code faz uma modificao para
a user process page modificando o dado via kernel space alias da
pgina fsica subjacente, o fio controle de usurio vai ser o dado
correto antes que permitido continuar a execuo, indiferente da
cache architecture e/ou a semntica.

39

Em geral, quando o estado do espao de endereo mudado


somente

(em

cdigo

genrico

da

administrao

da

memria

kernelnome de generic kernel management cade) o fluch architecture


hook apropriado vai ser chamado descrevendo que o estado muda
totalmente.
Sobre

que

flush

architecture

no

importa:

que

mapeamento do DMA DMA/driver coerncia. Isto inclui DMA


mappings (no sentido do MMU mappings) e o cache/DMA dado
consistncia. Estes tipos des assuntos no devem esta no flush
architecture, veja embaixo como eles devem ser manuseados.
Split Instrution/data cache consistncia com respeitro as
modificaes feito para processo de instruo de espao realizado pelo
cdigo de sinal de despacho signal dispatch cade. De novo, veja
embaixo como isto devem ser manuseado de um outro jeito.
As interfaces para a flushachitesture e como execut-los em
geral todas as rotinas descritos embaixo vo ser chamados na
sequncia seguinte: Fluch-cache-foo(...);
modify-address-space ();
clush - tlb-foo (...)
a lgica aqui : Isto pode ser ilegal num arquitetura dada por um
pedao de dado cache para ensitir quando o mapeamento por aquele
dado no existe, portanto o flush deve ocorrer antes que a mudana
feita.
possivl para uma arquitertura de MMU/TLB dada realizar
um andamento da tabela hardware hardware table wolk dos kernel
page tables, portanto o TLV flush feito depois que os page tables
terem sido mudados para que depois o hardware s pode carregar a
cpia nova da informao de page table para o TLB
void flush - cache - all (void);
void flush - tlb - all (void);

40

Essas rotinas so para notificar o architecture specific

cade que

mapeamento do espao do endereo kernel uma mudana foi feita ao


kernel address space mappings, que significa que os mapeamentos de
todos processos foram efetivamente mudados.

4.7.2 - Implementao da Memria Cache

Uma implementao deve:


Eliminar todos os entradas do cache que so vlidas neste
momento quando flush-cache-all invocado isto refere-se ao virtual
cache architecture, se a cache is write-back, essa rotina vai
submeter o dado da cache para memoria antes do que invalidar
cada ingresso. Para caches fsicos, no necessrio realizar uma
ao j que mapeamento fsico no tem ponto de apoio no address
space translations.
Para flush-tlb-all todos TLB mappings para o kernel address space
devem ser feito consitente com os OS page tables de qualquer
maneira. Norte que com um arquitetura que possua a nao
Para flush-tlb-mm, o tlb/mmu hardware para estar localizado
num estado onde isto vai ver (agora corrente) kernal page table
entradas para o espao de endereo pelo mm-strust.
flush_cache_range(struct mm_struct *mm, unsigned long start,
unsigned long end);
flush_tlb_range(struct mm_struct *mm, unsigned long start,
unsigned long end);
uma chance para uma particular range do user address no adelrass
space descrito pelo mm-struct passada esta ocorrendo. As duas notas
41

acima para FLUSH - mm( ) relecianando a mm-struct passada


aplicam-se aqui tambm.
Para Flush-cache-range num virtualmente cached system, todas
entradess cache que so nolidas pena a range partem para o fim no
address space descrito pelo mm-struect so para ser invalidadas.
Para Flush-tlb-range, qualquer ao necessria para causar o
MMUITLB hardware no conter tradues estragados so para ser
realizados. Isso significa que quaiquer tradues esto no Kernel
page tables no range start para acabar no address space descrito
pelo mm-struet so para que a administrao da memoria hardware
sera deste ponto avanado, por qualquer significado.
void flush_cache_page(struct vm_area_struct *vma, unsigned long
address);
void

flush_tlb_page(struct

vm_area_struct

*vma,

unsigned

long

address);
Uma chance para uma nica pgina no address dentro do usar
space para o address space descrito pelo um area-struet passado esta
ocorrendo. Uma efetivao, se necessria, pode obter na mm-struet
associado para este address space via uma um - Flags. Este caminho
em uma efetivao onde a instruo e dara space no so unificados,
alguem pode conferir para ver se um-exee esta posto no uma-sumflags para possivelmente avistar flushing o instruction space, por
exemplos:
As duas notas acima para flush-*-mm( ) concermindo o mm-struct
(passado indiretamente via uma -um-mm) aplica aqui tambm.
A implemetao deve tambm :

42

Para flush-cache-range, num virtualmente cache systam, todas


entradas cacha que so validas para a pgina no addrees no
address space descrito pelo uma so para ser invalidados.
Para flush-tlb-range, qualquer ao necessria para causar o
MMU/TLB hardware para no conter tradues estragadas so para
ser efetuadas. Isto significa que quaisquer tradues esto nos
kernel page tables para a pgina no address space descrito pelo
uma passado so para que a administrao de memria hardware,
sero vistas deste ponto avanado de qualquer maneira.

4.7.3 - Carregando o Flush-PAGE para a RAM (Unsigned Long Page);

Este o patinho feio. Mas sera semntica necessrio em


muitas

arquiteturas

que

precisei

para

adicionar

isto

apra

arquitetura flush para linux. Brevemente, quando (como um exemplo)


serve um kernel um enode cow, isto usa o suposto mapeamento de
todas memorias fisicas no espao kernal para efetuar a cpia da
pgina em questo para uma nova pgina. Este apresenta um
problema para caches virtualmente catalogados que so write-back
escritos de volta na natureza. Neste caso, o Kernel toca duas pginas
fisicas no espao Kernel. A sequencia do cdigo sendo descrito aqui
essencialmente
parece como:
do_wp_page()
{
[ ... ]
copy_cow_page(old_page,new_page);
flush_page_to_ram(old_page);
flush_page_to_ram(new_page);
flush_cache_page(vma, address);
43

modify_address_space();
free_page(old_page);
flush_tlb_page(vma, address);
[ ... ]
}
Alguns

dos

cdigos

atuais

tem

sido

simplificados

para

propositos espesificos.
Considere um cache virtualmente catalogados que escrito de
volta write-back. Neste momento que a cpia da pgina acontece para
o supisto espao kernel, possivel para usar space a viso da pgina
original para estar no caches (no endereo do usurio, por exemplo,
onde o erro esta ocorrendo). A cpia da pgina pode trazer este dado
(para a pgina velha) dentro do caches. Ser tambm colocado o dado
(no novo suporte kernel mapeado da pgina) sendo copiado para
dentro da cache, e para write-back escrever de volta chachas este
dado vai ser sujo ou modificado no cache.
Em tal caso a memoria principal no ser a cpia mais recente
do dado. Os caches so estpidos, ento para a nova pgina que
estamos dando ao usurio, sem forar o dado cached no suposto
kernel para a memria principal o processo ser o contedo velho da
pgina. (Por exemplo qualquer lixo que estarem l antes da cpia ter
sido feita pelo processamento COW acima).

4.7.3.1 - Exemplo concreto de flush-page

Considere um processo que divide uma pgina, l somente


READ-ONLY com maior uma tarefa (ou varias) no endereo virtual
Ox2000, no usar space. E para propsito espesficos deixe nos dizer
que este endereo virtual mapeia para a pgina fsica 0x14000.
44

Se a tarefa 2 tenha escrever para a pgina l apenas no


endereo 0x2000 ns alteremos um esso e (eventual fragmento do
cdigo)
mente resultado no code fragment mostrando acima no do-WP-PAGE (
).
O Kernel vai obter uma nova pgina para tarefa 2, deixe-nos
dizer que esta e uma pgina fsica 0x2600, e deixe-nos tambem dizer
que os mapeamentos do suposto Kernel para pginas fsicas 0x14000
e 0x26000 podem residir em dias nicos linhas cache ao mesmo
tempo buscando no esquema da linha catalogada deste cache.
O contedo da pgina e copiado do mapeamento Kernel para
pgina fsica 0x14000 para uns para pgina fsica 0x26000.
Neste

momento,

numa

arquitetura

cache

virtualmente

catalogada write - back nos temos uma inconsistncia potencial. O


novo dado copiado dentro da pgina fsica 0x26000 no e necessrio
na memria principal neste momento, de fato isto poder estar toda
no cache apenas no suposto kernel do endereo fsico.
Tambm, o (no modificando, por exemplo, limpo) dado para a
(velha) pgina original esta no cache do suposto kernel para pgina
fsica 0x14000, isto pode produzir uma inconsistncia mais tarde,
ento para proteger isto e melhor eliminar as cpias cached deste
dado tambm.
Deixe-nos dizer no escrevemos os dados de volta para a pgina
no 0x256000 e nos apenas deixamos isto l. Nos retornariamos para a
tarefa 2 (Quem teve esta nova pgina agora mapeada no endereo
virtual 0x2000) ele completaria sua escrita, ento ele leria algumas
outras pores de dados nesta nova pgina (por exemplo, esperando o
contedo que existe l antes). Neste momento seo dado e deixado no
cache no suposto kernel para nova pgina fsica, o usurio obter o
que que estava na memria principal antes da cpia para sua leitura.
Isto pode levar a resultados dasastrosos.

45

4.7.4 - Contedo de uma arquitetura virtual

Numa arquitetura cache virtualmente catalogada, fica o que foi


necessrio para fazer a memria principal consistente com a cpia
cached da pgina passada do espao kernel.
Nota: Isto na verdade necessrio para esta rotina invalidar linhos em
um cache virtual que no escrito de volta write - back na natureza.
Para ver porque isto e realmente necessrio, refaa o exemplo acima
com a tarefa 1 e 2, mas agora fork ( ) ainda outra tarefa 3 antes dos
erros do cow ocorreram, considere o contedo do caches no kernel e
user space se a sequencia seguinte ocorre na exata sucesso:

1.

Tarefa 1 l uma parte da pgina no 0x2000

2.

Tarefa 2 COW erra a pgina no 0x2000

3.

Tarefa 2 efetiva suas escritas para a nova pgina no 0x2000

4.

Tarefa 3 COW erra a pgina 0x2000


Mesmo

em

um

cache

no

escrito

devolta

virtualmente

catalogado, a tarefa 3 pode ver o dado incossistente depois do erro


COW se FLUSH-PAGE-TO-RAM no invalida a pgina fsica do
suposto kernel do cache.
VOID-UP-DATE
Embora no estritamente parte da arquitetura flush, em certas
arquiteturas algumas operaes e controles precisam ser eferuados
aqui parea as coisas darem certo proporcionalmente e para o sistema
manter-se consistente.
Em particular, para caches virtualmente catalogados esta rotina
deve conferir para ver que o novo mapeamento que vem sendo
46

adicionado pelo conente erro de pgina no adiciona um bad alias


para o user space.
Um Bad Alias e definido como dois ou mais mapeamentos
(pelo menos um dos quais e escrevivel) para duas ou mais o pginas
que traduzem para a exata pgina fsica, e devido ao algarismo
catalogado do cache pode tambm residir na nica e mutualmente
exclusiva linhas cache.
Se um BAD ALIAS detectado, uma implementao precisa
resolver esta inconsistncia de alguma maneira, uma soluo e andar
atravs de todo os mapeamentos e mudar as page-tables para fazer
estas pginas como no concreveis se o hardaware permite tal coisa.
As conferncias para isto so muito simples, tudo que uma
implementao precisa fazer :
Se ((uma -Um - Flags 6 (Um - Write/Um - Shared)) confere sua
potncia mau supostas, ento para o caso comum (mapeamento
escrevveis devidos so extremamente raros) apenas uma comparao
necessitada para sistemas COW CAHCES virtualmente catalogados.

4.7.5 - Implicaes Referentes a Arquitetura


4.7.5.1 - Arquitetura baseada no Modelo SMP

Dependendo

da

arquitetura

certos

consertos

podem

ser

necessrios para permitir a arquitetura FLUSH para trabalhar num


sistema SMP.
O principal assunto e se uma das operaes FLUSH acima
fazem que o sistema inteiro veja o FLUSH globalmente, ou o FLUSH e
apenas garantido para ser visto pelo processador local.
Em um ltimo caso um CROSS CALLING MECHANISM
necessrio. Os dois correntes sistemas SMP suportados no LiNUX
(intel e space) usam inter-processor interrupts para transmitir a
operao FLUSH e faz isto correr localmente em todo processador se

47

necessrio como um exemplo, no sistema SUNHM Space todos


precessadores no sistema precisam executar o pedido FLUSH para
garantir a consistncia atravs do sistema inteiro.

De

qualquer

modo, nas mquinas SUNHD Space, TLB FLUSHES efetivamente no


processador local so transmitidos sobre o BUS-SYSTEM pelo
hardware e desta forma uma ligao cruzada no e necessria

4.7.5.2 - Implicaes para arquitetura baseados no contexto


MMU/CACHE.

A idia inteira por trs do conceito de MMU e facilidades do


contexto cache para permitir muitos ADDRESS SPACES para dividir
os recursos CACHE/MMU no CPU.
Para levar total vantagem de tal facilidade, e ainda manter a
coerncia descrita acima, requer-se algumas consideraes extras do
implementador.
As questes envolvidas variam muito de uma implementao
para outro, pelo menos esta tem sido a experincia do autor. Mas em
particular algumas destas questes so provavelmente para ser:

A relao do mapeamento do espao Kernel para os USER-SPACE,


num contexto so convertidas, alguns mapeamentos do sistema
kernel tem um atributo global, naquele o hardware no concerde ele
mesmo com o contexto da informao quando uma traduo feita,
que tem seu atributo. Desta forma um FLUSH (em qualquer
contexto) de um mapeamento de um Kernel CACHE/MMU poderia
ser suficiente.
De qualquer maneira e possvel um outros implementaes para

o Kernel para dividir o contexto chave associado com um ADDRESS


SPACE particular. Pode ser necessrio em tal caso andar por todos

48

contextos que so contentemente vlidos e efetuam o Flush completo


em cada um para um Kernall Address Space Flush.
O custo por contexto Flush podem tornar uma questo chave,
especialmente com respeito ao TLB. Por exemplo, se um Tlb Flush e
necessrio, em um grande Range de endereos (ou um inteiro Address
Space) pode ser mais prudente distribuir e assumir um nova contexto
MMU/para este processo por causa da eficincia

4.7.6 - Como tratar o que a arquitetura flush no executa com


exemplos

A arquitetura Flush descrita no faz emendas para coerncia de


projetos DMA com dados Cached. Isto tambm no tem provises para
nenhuma estratgia de mapeamento necessrios pelo DMA e projetos
se forem necessrios em um certa mquina Linux Portad To.
Nenhuma destas questes so para a arquitetura Flush.
Tais questes so negociadas mais claramente no nvel do
Driver do projeto. O autor est mais convencido disto depois de sua
experincia com um conjunto comum de sparc device drivers que
precisaram de toda funo corretamente em mais do que uma hand
full de cache/mmu e bus architetures no mesmo kernel. De fato esta
implementao mais eficiente porque o motorista sabe exatamente
quando o DMA precisa ver o dado consistente ou quando o DMA est
indo criar uma inconsistncia que deve ser resolvida. Nenhuma
tentativa para atingir este nivel de eficiencia via cochetes soma ao
codigo de administracao generica da memoria kernel seria complexo e
muito obscura como um exemplo, considere no sparc como os DMA
buffers so manuscrito. Quando um device driver deve efetuar o DMA
para/de um nico buffer, ou uma dispersa lista de muitos buffers, ele
usa um conjunto de rotinas abstratas.

49

Char * (*mmu_get_scsi_one)(char de char *, unsigned linux_sbus longo


de struct *sbus);
sem

(*mmu_sglist (*mmu_get_scsi_sgl)(struct de efeito *, int,

linux_sbus de struct *sbus);


sem (*mmu_release_scsi_one)(char de efeito *, unsigned linux_sbus
longo de struct *sbus);
sem (*mmu_sglist (*mmu_release_scsi_sgl)(struct de efeito *, int,
linux_sbus de struct *sbus);
sem

(*mmu_map_dma_area)(unsigned de efeito addr longo, len de

int);
Essencialmente o mmu_get_* rotinas so passadas por um
indicador ou um conjunto de indicadores e especificaes de tamanho
para res no espao kernel para que o DMA ocorra, eles retornam
para o endereo capaz do DMA (por exemplo um que pode ser
carregado do controlador do DMA para o transferidor). Quando o
driver feiro como DMA e o transferidor tiver completado com o(s)
endereo(s) DMA para que recursos possam ser liberados (se
necessario) e cache flushes possam ser efetivados (se necessario). A
rotina ter um bloqueio de memoria de DMA por um longo periodo de
tempo, por exemplo, um motorista de networking usaria isto para
uma transmissao de pesquisa ou receber buffers. O argumento final
uma entidade especifica Sparc que permite o codigo do nivel da
maquina efetuar o mapeamento se o mapeamento do DMA so
ordenados em uma base por-bus.

4.7.7 - Questes abertas na Arquitetura Cache

H pareceres para muita estupidas arquiteturas cache l fora


que queira causar problemas quando um alias est situado dentro do
cache (mesmo um protegido onde nenhuma das entradas do cache
suposto so escreviveis!). Da nota est o mipsr4000 que dar uma
50

exceo quando tal situao ocorre, elas podem ocorrer quando o


processamento cow est acontecendo na corrente implementao. No
mais chips que fazem algo estupido como isto, um exception handler
pode flush as entradas no cache que est sendo reclamado e tudo est
em ordem. O autor esta mais concernido sobre o custo dessas
excees durante o processamento cow e seus efeitos que ocorrero na
performance cow, que essencialmente est para flush um user space
page e se no o fazendo ento causaria os problemas acima descritos.
Tem sido tardiamente aquecida a conversa sobre muito
inteligentes networking hardware. Pode ser necessario estender a
arquitetura flush para prover as interfaces e facilidades necessarias
para estas mudanas para o codigo networking. claro que, a
arquitetura flush sempre sujeita a aperfeioamentos e mudanas
para buscar novas questes ou novos hardwares que apresentam um
problema que estava at este ponto desconhecido

51

5. Sistema de Arquivo no Linux (File System)

5.1. - Conceitos Fundamentais


5.1.1 - Arquivos

Conceitualmente, arquivos so mecanismos de abstrao que


fornece uma forma de armazenar e recuperar informaes em disco. A
caractersticas mais importante de qualquer mecanismo abstrao a
forma de identificar os objetos como os quais o mecanismo trata.
Quando um processo cria um arquivo, preciso que tal arquivo
receba um nome, normalmente dado

pelo processo. Quando tal

processo termina sua execuo, o arquivo continua a existir, podendo


ser acessado

por outros processos, usando

para tanto o nome

atribuido ao arquivo.
O Linux faz distino entre nome maisculos e minsculos.
Normalmente um nome de arquivo composto de

nome e uma

extenso, separada por ponto no Linux, o tamanho da extenso, se


houver, fica a critrio do usurio, e uma arquivo pode at ter duas ou
mais extenes, exemplo : prog.c.Z.
No h limite de nmeros de caracteres utilizados para dar
nome a arquivos.
O Sistema Operacional Linux, olha o arquivo como uma
sequncia de byte, sem nenhuma estrutura, isto d uma
flexibilidade espantosa ao sistema de arquivo. Os programas de
usurios, podem colocar o que desejarem nos arquivos e
identific-los da forma que lhe for mais conveniente, o Unix no
influncia em NADA nesta processo de identificao.
5.1.2 - Diretrios

52

Para tratar dos arquivos, o sistema operacional normalmente


lana mo do diretrios, no caso do Linux diretrios hierrquico,vide
figura 01. Os diretrios so um tipo de arquivo.

Sis t e m a de Di r e tr ios Hie r r quic os


F ig . 0 1
/

bin

...

- Raiz

usr - Subdiretrios

dev

... - Subdiretrios

Dirson

Raulison

Weslei

No Linux todos os arquivos fazem parte de um diretrio, assim


eles so mantidos e organizados, os diretrios so meios de
oferecer endereos dos arquivos, de maneira que o SO possa
acess-los rapidamente e facilmente, ao entra pela primeira vez
em

sua

conta,

usurio

esta

em

um

subdiretrio

denominado subdiretrio de entrada.

5.1.3 - Conta

uma senha que aberta pelo administrador do sistema


(denominado

de

root)

onde

usurio

indentifica-se

para

computador, que ento d acesso ao seu diretrio de entrada, onde


voc pode executar os comandos permitidos a sua senha. Nos SO
padro Unix, a conta obrigatria para todos, a figura 02 mostra um
exemplo de abertura de conta no Linux.

53

Figura 02

Linux 2.0.0 (carvalho.cpd.ufg.br)


(tte p0)
carvalho login: root
Password:
Ast login: Wed Jan 29 12:16:37
from jacaranda.cpd.uf
Linux 2.0.0.
carvalho:~$

5.1.4 - Tipos de arquivos

O Linux suporta arquivos regulares, arquivos de diretrio,


arquivos especiais de caracteres e arquivos especiais blocados.
Os arquivos regulares so aqueles que contm informaes de
usurios, por exemplos, tipo ASCII. Arquivos diretrios so arquivos
usado na manuteno do sistema de arquivo. Arquivos especiais de
caracteres esto diretamente ligado
para

entrada/sada e so usados

dispositivos seriais de entrada/sada, tais como terminais,

impressoras e rede. Os arquivos especiais blocados so usado modelar


dispositivos. Um exemplo de tipos de arquivos utilizados no Linux
pode ser visto na figura 03.

54

Figura 03

carvalho:/usr
$ ls
X11@
X11R6/
X386@
adm@
bin/
dict/
doc/
ftpusers
carvalho:/usr

etc/
games/
i486-linux/
i486-

lib/
local/
man/
opemwin/

spool@
src/
tclX/
tkX/

linuxaout/
i486-sesv4/
include/
info/
mtools.conf

prerve@
sbin/
share/
sesog.conf

tmp@

5.1.5 - Acesso a arquivos


O Sistema Operacional Linux, bem como os demais SO, trata o
acesso a arquivos de forma radmica, ou seja, seus byte ou registros
podem ser lidos em qualquer ordem.

5.1.6 - Atributos dos arquivos

Cada arquivo tem necessariamente um nome e um conjunto


dados. Alm disso, o Sistema Operacional associa a cada arquivo
algumas outras informaes que chamaremos de atributos de
arquivos. A figura 04, nos mostra alguns dos atributos dos arquivos.
Figura 04

carvalho:/etc$ ls -l
55

total 11
lrwxrwxrwx

1 root

rmt -> /sbin/rmt*


-rw-r--r-1 root
-rw-r--r-1 root

root

root
root

securette
-rw-r--r-1 root
root
-rw-r--r-1 root
root
drwxr-xr-x
2 root
skel/
-rw-r--r--

1 root

743
86
21394
23580
root

Dec
Jul
Jan

Dec
Jan
1024

14:01

31 1994 rpc
28
1994

9 14:22 sendmail.000
6 12:28 sendmail.cf
Dec 9
13:59

root

314

Jan

slip.hosts
-rw-r--r-1 root
root
lrwxrwxrwx
1 root

342

Jan

root

13

9 1995 slip.login
Dec 9
13:59

utmp -> /var/og/utmp


lrwxrwxrwx
1 root

root

13

Dec

wtmp -> /var/og/wtmp


-rw-r--r-1 root
root

76

Mae 8

1995

13:59
1995

p.conf.example
Como vimos neste exemplo, o Sistema de Arquivo do Linux
permite restringir o acesso aos arquivos e diretrios permitindo que
somente determinados usurios possam acess-los. A cada arquivo e
diretrio associado um conjunto de permisses. Essas permisses
determinam quais usurios podem ler, escrever, ou alterar um
arquivo, e no caso de arquivos executveis como programas, quais
usurios podem execut-lo. Se um usurio tem permisso de
execuo de um diretrio, significa que ele pode realizar buscas dentro
daquele

diretrio, e no execut-lo como se fosse

Passaremos a explicar a codificao,

programa.

escolhemos aleatoriamente o

stimo arquivo skel/ da figura 04 :


d

nome

do

arquivo
1
2
3
4
5
6
7
8
9
10
skel/
obs : o que est em negrito,caixa maior, corresponde a posio do arquivo
skel/

56

(ddiretrio,l link, - demais

1 - informa o tipo de arquivo


arquivo)

(r leitura, , - no permitida

2 - Permisses do Proprietrio
leitura )

(w escrita, - no permitida

3 - Permisses do Proprietrio
escrita)

(x execuo, - no permitida

4 - Permisses do Proprietrio
execuo)

(r leitura, , - no permitida

5 - Permisses do Grupo
leitura )

(w escrita, - no permitida

6 - Permisses do Grupo
escrita)

(x execuo, - no permitida

7 - Permisses do Grupo
execuo)

(r leitura, , - no permitida

8 - Permisses do Sistema
leitura )

(w escrita, - no permitida

9 - Permisses do Sistema
escrita)

(x execuo, - no permitida

10 -Permisses do sistema
execuo)

5.2 - Operaes sobre arquivos

Os arquivos existem para armazenar informaes e permitir a


sua

recuperao.

As

Chamadas

de

Sistemas

mais

comum

relacionadas ao Sistema de Arquivo Linux so chamadas que operam


sobre arquivos individuais ou envolvendo

diretrios e sistema de

arquivos como um todo .


A chamada CREAT no s cria um arquivo, mas tambm abre
esta arquivo para escrita, indepedente do
57

modo de proteo

especificado para ele. O descritor de arquivo que a chama retorna, fd,


pode ser usado para escrever no arquivo. Se a chamada CREAT for
executada sobre um arquivo existente, esta arquivo ser truncado
para o comprimento 0, desde que os direitos do

arquivos assim o

permitam.
Para que um arquivo existente possa ser lido

ou escrito,

necessrio que ele seja primeiramente aberto e se ele esta aberto para
leitura, escrita ou para ambas as operaes. Vrias opes podem ser
especificadas. O descritor de arquivo que a chamada retorna pode
ento ser usado

para leitura ou escrita. Posteriormente, o arquivo

deve ser fechado atravs da chamada CLOSE, cuja execuo torna o


descritor de arquivo disponvel para ser novamente utilizado

numa

chamada CREAT ou OPEN subseqente.


A chamada READ utilizada para ler o arquivo, os bytes lidos
vm em posio corrente de leitura. O processo que faz a chamada
deve indicar a quantidade de informao a ser lida e providenciar um
buffer para possibilitar a leitura.
A

chamada

WRITE,

os

dados

so

escritos

no

arquivo,

geralmente a partir da posio corrente. Se tal posio for a de final de


arquivo, o tamanho do

mesmo cresce. Se a posio corrente no

momento da escrita estiver no meio do arquivo, os dados existente


nesta posio estaram perdidos para sempre, pois a operao de write
escreve os novos dados em cima dos antigos.
Apesar da maioria dos programas ler e escrever arquivos
sequncialmente, em algumas aplicaes os programas devem ser
capaz de acessar randomicamente qualquer parte do

arquivo.

Associado a cada arquivo, existe um ponteiro que indica a posio


corrente do arquivo. Quando a leitura ou escrita for seqncial, em
geral, ele aponta para o prximo byte a ser lido ou a ser escrito. A
chamada LSEEK tm trs parmetros: o primeiro do descritor de rea
para o arquivo, o segundo a posio do arquivo, o terceiro informa
se a posio relativa ao inicio do arquivo, posio corrente ou final

58

do

arquivo. O valor que o LSEEK retorna a posio absoluta no

arquivo aps a mudana no ponteiro.


Para cada arquivo o Linux mantem o modo do arquivo (regular,
diretrio ou arquivo especial), seu tamanho, o instante da ltima
modificao, e outra informaes pertinentes. Os programas podem
verificar estas informaes, usando a chamada STAT. Seu primeiro
parmetro o nome do arquivo. O segundo um ponteiro para a
estrutura onde a informao solicitada deve ser colocada.
As chamadas do sistema relacionadas com os diretrios ou com
o sistema de arquivo como um todo , em vez de um arquivo
especficos. Os diretrios so criados utilizando as chamadas MKDIR
e RMDIR, respectivamente. um diretrios o pode ser removido

se

estiver vazio.
A ligao de um arquivo cria uma nova entrada no diretrio que
aponta para um arquivo existente. A chamada LINK cria esta ligao.
Os

seus

parmetros

especificam

os

nome

originais

novo,

respectivamente. As entrada do diretrios so removidas via UNLINK.


Quando

a ltima ligao para um arquivo removida,

automaticamente apagada . Para um arquivo que nunca foi ligado, o


primeiro UNLINK faz com que ele desaparea.
Os diretrios de trabalho especificado pela chamada CHDIR.
Sua execuo faz com que haja mudana na interpretao dos nome
dos caminhos realtivos.
A chamada CHMODE torne possvel a mudana do modo um
arquivo, ou seja, de seus bits de proteo.
5.3 - Arquivos Compartilhados

Quando
projeto,

ele

vrios usurios esto trabalhando


comumente

precisam

compartilhar

juntos em um
arquivos.

Em

decorrncia disto, muitas vezes conveniente que um arquivo

59

compartilhado aparea simultneamente em diretrios diferentes que


pertenam a diferentes usurios. A coneco entre um diretrio e um
arquivo compartilhado chamada de ligao (link). O prprio sistema
de arquivo um grfico acclico dirigido , ou DAG, em vez de rvore.
No Linux os blocos do disco no so listados no diretrio, mas numa
estrutura de dados associada ao prprio arquivo. Esta estrutura
chamada

n-i,

forma

como

Linux

implementa

compartilhamentdo arquivo.

5.4 - Estrutura do Sistema de arquivos do LINUX Release 1.2

5.4.1 - Apresentao

Este trabalho baseado na verso 1.2 da Estrutura do Sistema


de arquivos do LINUX (LINUX File System Structure) FSSTND, que por
sua vez baseado em um documento de consenso da comunidade
Linux (que poder ser encontrado na internet -www.linux .org) o
layout do sistema de arquivos foi inicialmente desenvolvido dentro
da lista de e-mail FSSTND do LINUX-ACTIVISTS.
O

coordenador

do

FSSTND

Daniel

Quinlan

<Daniel.Quinlan@linux.org>. Uma parte considervel deste trabalho


foi tirado da FAQ (Lista de perguntas mais frequentes) mantida por
Ian McCoghrie (FSSTND-FAQ). Este documento est disponvel via ftp
anonymous em tsx-11.mit.edu no diretrio /pub/linux/docs/linuxstandards/fsstnd/ FSSTND-FAQ
Nosso trabalho enfocar a estrutura do sistema de arquivos
para LINUX tpico, incluindo a localizao de arquivos e diretrios, e o
contedo de alguns arquivos de sistema.
60

5.4.2 - Caractersticas Sistema de Arquivos


O sistema de arquivos Linux esta caracterizado por:
Uma estrutura hierrquica.
Um tratamento consistente da informao dos arquivos.
Proteo dos arquivos.
O sistema de arquivos Linux segue o mesmo princpio bsico
que a maioria dos sistemas de arquivos UNIX seguem. Apesar que o
sistema de arquivo no concordar em

100% com cada aspecto

possvel de alguma implementao particular do

sistema UNIX. De

qualquer forma, muitos dos aspectos da implementao do sistema de


arquivos esto baseados em idias encontradas em sistemas similar
ao UNIX system V, outros fatores tambm foram levado em conta tais
como :
Prticas comuns na comunidade LINUX.
A implementao de outras estruturas de sistemas de arquivos.
Definio das categorizao ortogonal de arquivos: Compatvel vs.
no comptivel. e varivel vs. estticos.
A informao compatvel aquela que pode ser compartida
entre vrias mquinas diferentes. A no compatvel aquela que deve
ser localizada em uma mquina particular. Por exemplo, os diretrios
local dos usurios so compatvel, porm os arquivos de bloqueio do
dispositivo (lock file) no so compatveis.
A

informao

documentao e

esttica

inclui

arquivos,

biblilotecas,

tudo aquilo que no precisa da interveno do

administrador do sistema. A informao varivel tudo aquilo que se


troca com a interveno do administrador.

61

O entendimento

destes princpios bsicos ajudar a guiar a

estrutura de qualquer sistema de arquivos bem planejado.


A distino entre informao compatvel e no compatvel
necessria por vrias razes:
Em um ambiente de rede, existe uma boa quantidade de informao
que se pode compartilhar entre diferentes mquinas para o
aproveitamento de espao e facilitar a tarefa da administrao.
Em um ambiente de rede, certos arquivos contm informao
especifica de uma s mquina, portanto, estes sistemas de arquivos
no podem ser compartilhados (antes de tomar medidas especiais).
As implementaes de fato do

sistema de arquivos no nos

permitem que a hierrquia /usr fosse montada somente para


leitura, porque possua arquivos e diretrios que necessitavam ser
escritos muito freqentemente. Este um fator que deve ser
atacado

quando

algumas parte de /usr so compartilhadas na

rede.
A distino "compatvel" pode ser usada para suportar,

por

exemplo:
uma partio /usr (o componente de /usr) montada (somente para
leitura) atravs da rede (usando NFS).
uma partio /usr (o componente de /usr) montada somente para
leitura de um cd-rom, pode ser considerado como um sistema de
arquivos somente para leitura, compartilhado com outros sistemas
LINUX utilizando o sistema de e-mail como uma rede.
A distino "esttica" contra "varivel" afeta o sistema de
arquivos de duas maneiras principais:
Arquivo da /(raiz) contm ambos tipos de informao, varivel e
esttica necessita permitir leitura e escrita.
Arquivo do /usr

tradicional contm

varivel e esttica e os arquivos

62

ambos tipos de informao

poderamos desejar montar-los

somente para leitura, necessrio proporcionar um mtodo para


fazer que /usr funcione somente para leitura. Isto se faz com a
criao de uma hierrquia /var que funciona leitura e escrita (ou
parte de uma partio leitura-escrita tal como /), que diminui muito
a funcionalidade tradicional da partio /usr.
O diretrio raiz / . Esta sesso descreve a estrutura do diretrio
raiz. O contedo do sistema de arquivos raiz ser adequado para
carregar, dar boot, restaurar, recuperar o sistema:
Para carregar o sistema, deve estar presente o suficiente como
para montar /usr e outras parte no essenciais do

sistema de

arquivos.
Esta inclui ferrramentas, informao do configurao e do boot
de inicializao (boot loader) e algum outra informao essenciais ao
inicilizar.
Para habilitar a recuperao e /ou a reparao do

sistema,

estar presente no sistema de arquivos raiz aquelas ferrramentas que


o administrador experimentado

necessitaria para diagnosticar e

reconstruir um sistema danificado .


Para restaurar um sistema, estaram presente no sistema de
arquivos raiz aquelas ferrramentas necessrias para restaurar o
sistema em floppy , fitas, etc.
A principal preocupao e que procuraremos colocar muito
pouca coisas do sistema de arquivos raiz, a meta de manter / to
pequeno quanto possvel. Por vrias razes desejvel mante-lo
pequeno.
freqentemente montado em mdia muitas pequenas. Por
exemplo muitos usurios de LINUX instalam e recuperam sistemas
montando como o disco copiado de disquete 1.44Mb.
O sistema de arquivos / tem muitos arquivos de configurao
especificos de um sistema. Possveis exemplos so de um kern, que
especficos do sistema, um hostname diferente, etc. Isto significa que

63

o sistema de arquivos / no sempre compatvel entre sistemas em


rede. Mantendo-o pequeno no sistemas de rede, se minimiza o espao
perdido

no servidor utilizados pelos arquivos no compatvel.

Tambm permite estaes de trabalho com winchesters locais


menores.
Os erros do disco, que corrompe as informao no sistema de
arquivos / so um problema maior que os erros em qualquer outra
partio. Um sistema de arquivos / pequeno menos propenso a
perder arquivos como resultado de uma falha do sistema.
recomendvel colocar

principalmente os arquivos em

/etc/mtab. De qualquer forma, no se necessita que o sistema de


arquivos / esta totalmente armazenado localmente. A partio / no
tem porque estar armazenada localmente pode ser especificada pelo
sistema por exemplo, poderiam estar montada de um servidor NFS.
O software no dever criar ou pedir arquivos de subdiretrios
especiais. A estrutura do

sistema de arquivos LINUX proporciona

suficiente flexibilidade para qualquer pacote.

5.4.3 - Composio dos Diretrios

/ --- O Diretrio Raiz


A composio do diretorio raiz de um sistema Linux tpico pode
ser representado pela Tabela 01.

Tabela 01
bin

arquivos executveis(binrios) de comandos essenciais

pertencentes ao sistema e que so usados com freqencia.


boot arquivos estticos de boot de inicializao(boot-loader)
dev arquivos de dispositivos de entrada/sada

64

etc

Configurao do sistema da mquina local com arquivos

home
lib
mnt
root
sbin
tmp
usr

diversos para a
administrao de sistema.
diretrios local(home) dos usurios.
arquivos da biblilotecas compartilhadas usados com freqencia
Ponto de montagem de partio temporrios
Diretrio local do superusurio (root)
Arquvios de sistema essenciais
arquivos temporrios gerados por alguns utilitrios
todos os arquivos de usurios devem estar aqui (segunda maior

hierrquia)
var Informao varivel
Cada diretrio listado

ser discutido

em detalhe em uma

subsesso separada mas adiante. /usr e /var, cada un tem seu


prpria sesso de documentos.
O kern do LINUX estaria localizado na raiz / ou no /boot. Se
estiver localizado

em / recomendado usar O nome VMLINUX o

VMLINUZ, nome que dever ser usados em programas fonte do kern


do

LINUX recentemente. Mais informao da localizao do

kern

pode-se encontar na sesso sobre a raiz / neste trabalho.


5.4.3.1 - Subdiretrio /bin
Composio : Arquivos Binrios de comandos essenciais de
usurios (disponveis para todos os usurios).
Contm os comandos que podem ser utilizados pelos

usurios

e pelo administrador do sistema, porm que so requeridos no modo


mono-usurio (single-user mode) pode tambm conter comandos que
so utilizados indiretamente por alguns scripts.
Todos os arquivos utilizados somente pelo root, tal como
daemons, init, gette, update, etc.

Estariam localizados em /sbin ou

/usr/sbin dependendo se so ou no essenciais.


subdiretrios dentro /bin.

65

No abra

Os arquivos dos comandos que no so suficientemente


essenciais para estar em /bin estaram localizados em /usr/bin, os
elementos que so utilizados pelos usurios isoladamente (porm no
pelo root) (mail, chsh, etc.) no so suficientemente essenciais para
estar dentro da partio /.
5.4.3.1.1 - Arquivos e/ou comandos disponveis em bin

Os arquivos que devem estar em /bin so : comandos gerais e


comandos de rede.
Comandos gerais:
Os seguintes comandos devero sido

includos porque so

essenciais.
Alguns estaram presente e tradicionalmente devero estado
em /bin.
{arch, cat, chgrp, chmod, chown, cp, date, dd, df, dmeg, echo, ed,
false, kill, in, login, mkdir, mknod, more, mount, mv, ps, pwd, rm,
rmdir, sed, setserial, sh, sfte , seu, sinc, true, umount, uname}.
Se /bin/sh bash, ento /bin/sh seria em links simblico a
/bin/bash dado que bash se comporta diferente quando carregado
como sh ou bash. A pdksh que pode ser a /bin/sh nos discos de
instalao e seria igualmente carregada a que /bin/sh faz um links
simblico a /bin/ksh. Outros links simblicos de sistemas utilizando
outros programas, ento a partio / conter os componente mnimos
necessrios.
Por exemplos, muitos sistemas incluiria cpio como de segunda
utilidade mais usado para reparos depois do tar. Porm jamais se
espera restaurar o sistema da partio /, ento estes arquivos podem
ser omitidos

(montar / em chip ROM, montar /usr no NFS). Se a

66

restaurao do sistema se planeja atravs da rede, Ento FTP o TFTP


(junto com todo o necessrio para obter uma conexo FTP) estariam
disponveis na partio /.
Os comandos de restaurao podem aparecer em

/bin ou

/usr/bin em sistemas LINUX diferentes.


Comandos de redes.

Estes so unicamente os arquivos de rede que os usurios e o


root queiram ou necessitem executar que no estejam no /usr/bin
ou /usr/local/bin {domain name, hostname, netstat, ping}.

- Subdiretrio /boot:

5.4.3.2

Composio : arquivos estticos do

boot de inicializao (boot

loader).
Este diretrio contm tudo que necessrio para carregar o
sistema, exceto os arquivos de configurao e o gerenciador de boot.
O /boot utilizado para qualquer coisa que se utiliza antes do kernel
execute /sbin/init. Este inclui setores master de inicializao (master
boot sectors) guardados, arquivos de mapa de setor e qualquer outra
coisa que no editada manualmente. Os programas necessrios para
consertar o boot de inicializao e capaz de carregar um arquivo (tal
como o gerenciador de boot [lilo]) estaram localizados em /sbin. Os
arquivos de configurao para carregar de inicializao poderiam estar
localizados em /etc.
Como o exposto acima, o kern do LINUX pode estar localizado
em / ou /boot, se estiver em /boot, recomendado usar um nome
mais descritivo.

67

5.4.3.3 - Subdiretrio /dev

Composio : arquivos de dispositivos de entrada/sada.


Este diretrio dos dispositivos. Contm um arquivo para cada
dispositivo que o kern do LINUX pode suportar.
/dev tambm contm. um script carregado MAKEDEV o qual
pode criar dispositivos quando necessitar. Pode conter um MAKEDEV
local para dispositivos locais.
MAKEDEV deve fazer previso para criar qualquer arquivo de
dispositivo especial listado

na lista de dispositivos suportados pelo

Linux.
Os links simblicos no devem ser distribuidos no sistemas
LINUX, somente como preve na lista de dispositivos de LINUX. Isto
porque as instalaes locais seguro diferem daquelas da mquina do
administrador. Alm disso, um script de instalao configura links
simblicos
atualizaram

na
se

instalao,

estes

ligao

houverem

trocas

locais

seguramente
no

hardware.

no

se

Quando

utilizados responsavelmente so de bom uso.


A lista de dispositivos compatvel com o LINUX, mantida por
Peter Anvin (peter.anvin@linux.org). Estes arquivos especial de
dispositivo esto disponvel no endereo eletrnico da internet
ftp.eggdrassiml.com, no diretrio /pub/device-list.

68

5.4.3.4 - Subdiretrio /etc

Composio : Configurao do sistema da mquina local com


arquivos diversos para a administrao de sistema.
Contm arquivos e diretrios que so locais ao sistema atual.
Nenhum arquivo deve ir diretamente dentro /etc. Os arquivos
que nas primeiras verses encontravam-se em /etc, ir em /sbin
ou /usr/sbin. Isto inclui arquivos tal como init, gette e update,
arquivos como hostname que so utilizados por usurios comuns e
pelo root no iriam em /sbin seriam em /bin.
Subdiretrios de /etc
Tipicamente /etc possui dois sudiretrios :
X11

arquivos de configurao para Ox11

sk

Esqueletos da configurao usurios


O /etc/sk a localidade para os chamados arquivos esqueletos

de usurios, que so os dados por default quando um novo usurio


recebe uma conta, esta diretrio pode conter subdiretrios para
diferente grupos de usurios (/etc/skell/apoio, /etc/skell/usurios).
O /etc/X11 o lugar recomendado

para todos os

arquivos de configurao X11 locais da mquina. Este diretrios


necessrio para permitir o controle local se /usr for colocado
somente para leitura. Os arquivos que devem ir neste diretrio
incluem

Xconfig

(e

/o

XF86Config)

Xmodmap.

/etc/X11/xdm contm os arquivos de configurao xdm. Estes


69

so

maioria

dos

arquivos

normalmente

gravados

em

/usr/lib/X11/xdm; veja /var/lib/xdm, para maior informao.

5.4.3.4.1 - Arquivos e/ou comandos disponveis em /etc

Este descrio do contedo generica, portanto no est


totalmente completa, pode haver algumas variaes dependendo do
distribuidor do Linux ou do administrador de sistema. Os arquivos
/etc so composto de :
Arquivos gerais;
Arquivos de rede.
Os arquivos gerais so necessrios na maioria dos sistemas LINUX,
tais como :
{adjtime, csh.login, disktab, fdprm, fstab, gettedefs, group,
inittab, issue, ld.so.conf, lilo.conf, magic, motd, mtab, mtools,
passwd, profile, psdaTabelase, securette , shells, se sog.conf,
tercamp, tte te pe}
Os arquivos de Rede mais utilizados na maioria dos sistemas LINUX
so :
{exports,
host.lpd,

ftpusers,

gateway,

inetd.conf,

hosts,

networks,

host.conf,

host.equiv,

printcap,

protocols,

reolv.conf.rpc, service}
Existe dois modo para a instalao dos scripts de comandos "rc"
os quais so chamados por init no momento de

carregar, ou o

modo /etc/rc.d/* etc do System V. Qualquer que seja o escolhido


pode ser utilizado uma mescla dos dois.

70

Os sistemas com a senha de passwords sombreadas (shadow


password) tero arquivos de configurao adicionais, em /etc
(/etc/shadow e outros) e /usr/bin (useradd, usermod, e outros).

5.4.3.5 - Subdiretrio /home:

Composio : diretrios locais dos usurios (opcional)


O sudiretrio /home claramente um sistema de arquivos
especfico do diretrio local. A regra de cri-lo difere de mquina para
mquina. Descreve uma localizao sugerida para os diretrios local
dos usurios, assim, recomendamos que todas as distribuies LINUX
usem esta lugar como localizao default dos diretrios locais.
Em sistemas pequenos, cada diretrio de usurio um dos
subdiretrios

debaixo

/home,

/home/dirson,

/home/raulison,

/home/weslei, etc.
Em sistemas grande (especialmente quando

os diretrios

/home so compartilhados entre vrias mquinas usando NFS) til


subdividir os diretrios local . A subdiviso pode ser implementada
utilizando

subdiretrios

tal

como

/home/apoio,

/home/docs,

/home/cartas, etc. Muitas pessoas preferem colocar as contas dos


usurios

numa variedade

de lugares,

portanto, ningum dever

confiar nesta localizao. Se voc deseja encontar o diretrio local de


qualquer usurio, deveria usar a funo de bibliloteca getpwent em
vez de contar com /etc/passwd, porque a informao
armazenada remotamente usando sistemas como NIS.

5.4.3.6 - Sudiretrio /lib:

71

pode estar

Composio : Biblilotecas compartilhadas

e mdulos do kern

essenciais.
O diretrio /lib contm aquelas biblilotecas compartilhadas que
so necessria para carregar o sistema e executar os comandos do
sistema de arquivos raiz.
Mdulos -> Mdulos de kern carregavis.
Estes incluem em /lib/libc.so.*, /lib/libm.so.*, O linkador
dinmico

compartilhado

/lib/ld.so.*,

outras

biblilotecas

compartilhadas requeridas por arquivos em /bin e /sbin.


As biblilotecas

que so necessrias somente

pelos arquivos

/usr (como qualquer arquivo X Windows) no pertencem a /lib. S


as biblilotecas compartilhadas requeridas para executar os arquivos
dentro de /bin e /sbin devem estar ali. A bibliloteca libm.so.* poderia
estar localizada em /usr/lib se no utilizada de nenhuma forma
em /bin ou /sbin.
Por razo de compatibilidade, /lib/cpp necessita existir como
uma referncia ao pre-processador C instalado no sistema.
localizao

usual

<target>/<verso>/cpp.

do

arquivo

/usr/lib/gcc-lib/

Pode existir links /lib/cpp apontando para

estes arquivo ou a qualquer outra referncia a ele que exista no


sistema

de

arquivos.

(Por

exemplo,

/usr/bin/cpp

utilizado

frequentemente). A especificao para /lib/module ainda no foi


definida, pois ainda no h um concenso na comunidade Linux.

5.4.3.7 - Subdiretrio /mnt

Composio

Utilizados

para

armazenamento

de

arquivos

montados temporariamente.
Este diretrios foi previsto para o administador poder montar
temporariamente sistemas de arquivos quando
72

necessitar.

contedo deste diretrio um assunto local e no deve afetar a


maneira que executamos nenhum programa. recomendamos a no
utilizao deste diretrio para programas de instalao, e sugerimos
utilizar um diretrio temporrio adequado que no esta em uso pelo
sistema.

5.4.3.8 - Subdiretrio /proc

Composio : Sistema de arquivos virtual de informao de


processos do kernel.
O sistema de arquivos proc utilizado para

manipular

informao de processos e de sistema em vez de /dev/kmem e outros


mtodos similares. recomendado a utilizao deste para o
armazenamento e obteno de informao de processos, assim como
outras informao do kern ou da memria.

5.4.3.9 - Subdiretrio /root (opcional)

Composio : Diretrio local do superusurio (root)


O diretrio / tradicionalmente o diretrio local do

usurio

root nos sistemas UNIX. /root utiliza-se em muitos sistemas LINUX e


em alguns sistemas UNIX. O diretrio local da conta do usurio root
pode ser determinada por preferncias locais.

As possibilidades

bvias inclue em /, /root, e /home/root. Se o diretrio local do root


no esta armazenado na partio raiz, ser necessrio assegurar-se
que tome / por default caso no seja localizado.
No recomendado o uso da conta root para coisas corriqueiras
tal como ler o e-mail e ver as notcias (mail & news), recomend-se
que seja usada somente para a administrao do sistema. Por esta

73

razo recomendamos que no apaream subdiretrios como Mail e


News no diretrio local da conta do usurio root. recomendado que
o mail para root seja redirecionados a um usurio mais adequado.

5.4.3.10 - Subdiretrio /sbin:

Composio : arquivos de

Sistema

(algumas vezes mantidos em

/etc)
Os utilitrios usados pela administrao do sistema (e outros
comandos que somente o root utiliza) esto armazenados em
/sbin, /usr/sbin, e /usr/local/sbin.

/sbin, tipicamente contm

arquivos essenciais para dar boot ao sistema, alm dos arquivos


em /bin. Qualquer coisa que se executar depois sabendo que /usr foi
montado (quando no h problemas) deveria estar em /usr/sbin. Os
arquivos da administrao do sistema root local devem

estar em

/usr/local/sbin.
Decidir que arquivos vo no diretrio de /sbin difcil.
usurio necessitar execut-lo, deve de ir para outro diretrio.

Se o
Se

somente o administrador do sistema ou o root necessitem executar,


tais como scripts da administrao, ento deve ir em /sbin (no
/usr/sbin ou

/usr/local/sbin,

se o arquivo no vital para a

operao do sistema).
Arquivos como chfn que os usurios usam ocasionalmente
devem estar em /usr/bin. ping que absolutamente necessrio para o
root tambm frequentemente usado pelos usurios, devero estar
em /bin. Os usurios comuns no tero que por os diretrios sbin em
seu caminho (path).
recomendado que os usurios tenham permisso de leitura e
execuo em tudo que se encontra em /sbin exceto talvez certos
programas; setuid e setgid. A diviso entre /sbin e /bin no foi criada
74

por motivos de segurana

para evitar que os usurios

violem o

sistema operacional, foi cirada para promover uma boa partio entre
arquivos que todos usam e os que so utilizados principalmente para
as tarefas administrativas. No h utilidade inerente na segurana em
fazer que /sbin esteja fora do alcance dos usurios.

5.4.3.10.1 - Arquivos e/ou comandos armazenados em /sbin

Arquivos armazenados so dos seguintes tipos :


comandos gerais;
comandos de sada;
comandos de manipular sistema de arquivos;
gerenciador de boot de inicializao e
comandos de rede.
Os comandos gerais so clock, gette, init, update, mkswap,
swapon, swapoff, telinit.
Os comandos de sada so fastboot, fasthalt, halt, reboot,
shutdown.
Os comandos de manipular sistemas de arquivos so fdisk,
fsck, fsck.*, mkfs, mkfs.*, onde * = um dos seguinte.

ext, ext2

minix, msdos, xia, e talvez outros.


Os comandos do sistema de arquivos ext2 (opcional) so
badbocks, dumpe2fs, e2fsck, mke2fs, mkost+found, tune2fs.
Gerenciador do boot de inicializao (lilo) e os
comandos de Rede : arp, ifconfig, route.

75

5.4.3.10.2 - Arquivos opcionais em /sbin:


Os arquivos estticos (compilados estaticamente) esto o sln e
nc esttico, nc so utilitrios quando ocorrem erros. O principal uso
do

sln (reparar links simblicos incorretos em /lib depois de uma

atualizao mal sucedidas) no a preocupao maior, j que existe o


programa ldconfig (usualmente localizado em /usr/sbin) e pode atuar
como um assistente guiando para atualizar as biblilotecas dinmicas.
O nc esttico til em algumas ocasies de emergncia.
estes no necessitam

ser

obricatoriamente

estaticamente

nc,

dos

ln

porm

verses

podem

ser

Note que

compiladas
compilados

estticamente.
O arquivo ldconfig opcional em /sbin, dado que um usurio
pode escolher executar

ldconfig ao dar boot, em vez de s quando

atualizam as biblilotecas compartilhadas . (No est claro se ou no


vantajoso executar ldconfig em cada inicializao). Assim, alguns que
gostam de ter ldconfig a mo na situao que se tem um sln, pois no
se sabe como nomear os links.

5.4.3.11- Subdiretrio /tmp

Composio : arquivos temporrios gerados por alguns arquivos


utilitrios.
O

/tmp

utilizado

para

arquivos

temporrios,

preferencialmente em dispositivo rpido (um sistema de arquivos


basado em memria por exemplo). A "permanncia" da informao
que armazenada em /tmp diferente de aquela que armazenada
em /var/tmp.

/tmp pode ser limpo em cada inicializao ou a

intervalos relativamente frequentemente.

76

Portanto, no se deve

operar a informao armazenada em /tmp permanecendo por algum


perodo determinado de tempo.
Os programas devem utilizar /tmp ou /var/tmp (que era
originalmente /usr/tmp) de acordo os requisitos esperados da
informao, pois no devem colocar nenhum arquivo particular em
qualquer diretrio de armazenamento temporrio.
Os administradores de sistemas podem querer ajuntar /tmp a
algum outro diretrio, tal como /var/tmp. Isto til, por exemplo,
para conservar espao na partio raiz. Se est executada, ento a
permanncia de arquivos em /var/tmp deve ser mesmo to grande
como a de /tmp. O subdiretrio /tmp pode estar na memria RAM,
/var/tmp nunca poder se localizar-se em algum dispositivo RAM.

5.4.3.12 - A hierrquia /usr.

O subdiretrio /usr a segunda maior seo do sistema de


arquivos. /usr informao compartilhada, somente de leitura, isto
significa que /usr, deve ser compartilhada entre vrias mquinas que
utilizam o LINUX e no deve exibir qualquer informao local de uma
mquina ou que varia com o tempo, deve ser armazenada em outro
lugar.
Nenhum pacote grande (como TeX o GNUEmacs) deve utilizar o
subdiretrio direto

abaixo de /usr, em vez disso, deve haver um

subdiretrio dentro /usr/lib (o /usr/local/lib caso tenha sido


instalado localmente), a propsito, como o sistema X Windows faz-se
uma exceo permitindo

um considervel precedente e a prtica

amplamente aceita. Exemplo de um subdiretrio /usr tpico :

carvalho:/usr
$ ls
X11@
X11R6/
X386@

etc/
games/
i486-linux/

lib/
local/
man/
77

spool@
src/
tclX/

adm@

i486-

linuxaout/
bin/
i486-sysv4/
dict/
include/
doc/
info/
carvalho:/usr

openwin/

tkX/

preserve@
sbin/
share/

tmp@

5.4.3.12.1 - Subdiretrios /usr (permanente)

Em um sistema tpico teremos mais ou menos os seguintes


diretrio :

X11R6
X386

Sistema X Windows Verso 11 release 6


Sistema X Windowss Verso 11 release 5 em plataformas

bin
dict
doc
etc
games
include
info
lib
local
man
sbir
share
src

X 386
A maioria dos comandos de usurio
Listas de palavras
Documentao miscelnia
Configurao do Sistema
Jogos e arquivos educacionais
arquivos header(cabealhos) incluidos por programas C
Diretrio primrio, o sistema GNU Info
Biblilotecas
Hierrquia local
Manual on line
Arquivos de Administrao do Sistema no vitais
Informao independente da arquitetura
Cdigo fonte

Os seguinte links simblicos a diretrios podem estar presentes.


Esta

possibilidade

baseia-se

na

necessidade

de

preservar

compatibilidade com sistemas anteriores haja visto que em todas as


implementaes pode asumir o uso da hierarquia /var, podero existir
os seguintes links :
/usr/adm

------------------>

/var/adm

78

/usr/prerve

------------------>

/var/prerve
/usr/spool

------------------>

/var/spool

/usr/tmp

------------------>

/var/tmp

/var/spool/locks ------------------>

/var/lock

Uma vez que o sistema no precise mais de alguns dos liks


anteriores, deve existir um links deste /usr/X11 apontando para a
hierarquia do sistema X Windows atual.

5.4.3.12.2 - Subdiretrio /usr/X386

composta do sistema X Windows, verso 11 release 5 em


plataformas

86,

esta

hierarquia

geralmente

idntica

/usr/X11R6, exceto que os links simblicos de /usr devem

estar

ausente se estiver instalado /usr/X11R6.

5.4.3.12.3 - Subdiretrio /usr/bin

composta da maioria dos comandos do

usurio, este o

diretrio principal de comandos executveis no sistema possui o mh


(comandos para o sistema de manipular

e-mail MH) e o X11 (link

simblico at /usr/X11R6/bin).
Os interpretadores de scripts dos shell (invocados com #! <rota>
na primeira linha do

script de shell) no podem depender de uma

rota, vantajoso o padronizar a localizao dos elos. A shell Bourne


e C to fixos em /bin, pois Perl, Pethon, Tlc se encontram em muitos
lugares diferentes /usr/bin/perl, /usr/bin/pethon e /usr/bin/tcl
devem refernciar a os interpretador de shell perl, pethon e tcl
respectivamente. Estes podem ser links simblicos a
fsica dos interpretador da shell.

79

localizao

5.4.3.12.4 - Subdiretrio /usr/dict - Listas de palavras

Arquivos recomendados em /usr/dict (words), tradicionalmente


esta diretrio contm somente arquivos words de palavras inglesas, o
qual utilizado por "look" para vrios programas de ortografia, words
pode utilizar ortografia americana ou britnica.

Os usurios que

precisam ambos, podem concatenar words a /usr/dict/americanenglish ou /usr/dict/ british-english.


As listas de palavras para outros linguagem pode usar o nome
em

ingls

para

linguagem,

por

exemplo,

/usr/dict/french,

/usr/dict/danish, etc. Estes devem, se possvel, utilizar o jogos de


caracteres ISO 8859 que faz aprpriado para linguagem em questo,
e se

possvel, o jogo de caracteres ISO 8859-1 (Atin1) deve ser

utilizado (muito raramente possvel faz-lo)


Qualquer outra lista de palavras, tal como o diretrio web2,
deve ser incluido aqui,
razovel ter aqui s as listas de palavras, e que elas so os
nicos arquivos comum a todos os verificadores de ortografia.

5.4.3.12.5 - Subdiretrio /usr/etc

Contm a configurao do sistema, porm armazenar a


configurao /usr/etc do

software que se encontra em /usr/bin e

/usr/sbin um problema. Montar /usr somente para leitura de um


CD-ROM ou atravs de NFS difcil no melhor dos casos.
Uma

possvel

soluo

que

considerada

foi

eliminar

completamente /usr/etc e especificar que todas as configuraes se


armazenem em /etc.

Acontece que existe a

possibilidade de que

muitos site podem querer ter alguns arquivos de configurao que no


estejam na sua mquina local.

80

Eventualmente, decide-se que /etc dever ser o nico diretrio


que seja referenciado pelos programas (Isto , todos devem buscar
configuraes em /etc e no /usr/etc).

Qualquer arquivo de

configurao que necessissrio para todo o sistema e que no era


necessrio antes de montar /usr (em uma situao de emergncia
deve estar localizado em /usr/etc). Arquivos especificos em /etc, em
mquinas especficas podem ter ou no um link simblicos aos
arquivos de configurao localizados em /usr/etc. Isto tambm
significa que /usr/etc tecnicamente um diretrio opcional no sentido
restrito, mesmo assim recomendamos que todos os sistemas LINUX o
incorporem.
No recomendado que /usr/etc contenha links simblicos que
apontem para arquivos /etc. Isto desnecessrio e interferem no
controle local das mquinas que compartem o diretrio/usr.

5.4.3.12.6 - Subdiretrio /usr/include

Neste diretrio onde todos os arquivos include de uso geral do


sistema para programao em linguagem C e C++ podem ser
localizados.
Descrio dos principais sudiretrios de /usr/include :
/usr/include
X11

arquivos include

Link simblico at /usr/X11R6/include/X11

arpa Definio do protocolo definido por ARPNET.


asm Link simblico at /usr/scr/linux/include/asm-<arch>.
bsd

arquivos include de compatibilidade com BSD.

g++

arquivos include de GNU C++.

gnu

arquivos include GNU.

linux Link simblico a /usr/src/linux/include/linux.


net

Definio genricas relacionadas com rede.


81

netax25

Definio especficas a +AX25 ( ARRL AX25).

Netinet

Definio especficas a TCP/IP.

netipx

Definio especficas a +IPX (NovOIPX/SPX).

protocols

Definio de protocolos( basadas em INET)

readline

A bibliloteca readline GNU.

rpc

Definio RPC de Sun Microsystem.

Rpcsvc
sys

Definio de servios RPC de Sun Microsystem.

arquivos include de gerao de sistemas


O subdiretrio arpa contm definies de header de protocolos

para os protocolos ARPANET, TCP/IP, definies para ftp, prototipos


telnet e material similar.
O subdiretrio net contm

definies genricas relacionadas

com a rede, define a interface sistema vs. kern, detalhes da famlia de


protocolo, etc.
O subdiretrio netinet contm

definies especficas de INET

(DARPA Internet, que tambm contida no TCP/IP )


ARRL AX.25 melhor conhecido como pacote de transmisso
via radio (packet radio). Os protocolos novell IPX/SPX so parte dos
servios de arquivos Novell Netware.
5.4.3.12.7 - Subdiretrio /usr/lib
Inclui as biblilotecas para programas e pacotes, inclue as
biblilotecas objeto, arquivos de

programa compilador, informao

esttica de vrias casos, ambos, cdigos executvel (por exemplo os


arquivos internos de gcc esto localizados abaixo /usr/lib/gcc-lib) e
outros tipos de informao.
/usr/lib/ - biblilotecas para programao e pacotes:
X11

Link simblico para /usr/X11R6/lib/X11

82

emacs

arquivos de suporte estticos para o editor GNUEmacs.

games

arquivos de dados estticos para /usr/games.

groff Biblilotecas / diretrios para GNU groff


gcc-lib

arquivos/diretrios especificos do sistema para gcc.

kbd

Tabelas de traduo de teclado e informao relacionada.

Mh

Biblilotecas para o sistema de manipular e-mail MH:

news Cnews/INN.
smail Smail.
terminfo

diretrios para a base de dados terminfo.

texmf TeX/MF ( e ATeX ) biblilotecas de informao.


uucp Comandos de UUCP.
zoneinfo

Configurao e informao da zona horaria.

Historicamente, /usr/lib incluido alm disso alguns comandos


executveis tais como sendmail e makewhatis.
Dado

que makewhatis no refernciado

por outros

programas, no h problemas ao mover para um diretrio de arquivos


executveis.

Arquivos

que

os

usurios

precisam

para

usar

makewhatis, /usr/lib de onde pertencem. O arquivo catman que


repassa ao script makewhatis em muitos sistemas LINUX, deve
tambm estar em usr/bin.
O arquivo sendmail refernciado por muitos programas com
seu nome histrico /usr/lib/sendmail. Este deve ser um links
simblico, a localizao layout para os agente de transferncia de email com uma interface de linha de comando compatvel com o
sendmail, /usr/bin/sendmail.
Em sistemas que utilizam smail devem localizar smail em
/usr/sbin/smail e /usr/bin/sendmail deve ser um links simblico a
smail.
Este regra vai de encontro tambm com a nova ocorrncia no
layout sendmail definida em Sendmail 8.6.x e BSD 4.4.

83

Note

que

esta

localizao

requer

que

/usr/sbin

/usr/sbin/sendmail devem ser executveis para usurios normais.


Qualquer pacote de programa que contenha
informao

e precisa

que no necessite ser modificada deve armazenar tal

informao em /usr/lib (o /usr/local/lib, esta instalado localmente).


Recomenda-se a utilizao de um subdiretrio em /usr/lib para este
propsito.
A informao de jogos armazenada em /usr/lib/games deve ser
apenas informao esttica. Qualquer arquivo modificvel tal como
arquivos demarcado, registros de jogos e similar, devem de ser
localizados em var/lib. necessrio para compatibilidade de jogos,
pode-se

usar

um

links

simblico

desde

/usr/games/lib

at

/usr/lib/games.
Nota: nenhuma informao especifica de host para o sistema X
Windows deve armazenar-se em /usr/lib/X11 (que realmente
/usr/X11R6/lib/X11). Os arquivos de configurao especificos do
host tal como Xconfig o XF86Config devem ser armazenados
/etc/X11. Este deve incluir informao

em

de configurao como o

stem.twmrc, se for somente um links simblico, um arquivo de


configurao

mais

global

(talvez

em

/usr/etc/X11

ou

/usr/X11R6/lib/X11).

5.4.3.12.8 - Subdiretrio /usr/local


A

hierarquia

/usr/local

est

administrador de sistemas quando

para

ser

utilizada

pelo

instala o Linux localmente.

Necesssita ficar a salvo de ser sobrescrito quando

o software

do

sistema se atualiza. Pode ser usado por programas e por informao


que so compatvel entre um grupo mquinas, pois no se encontram
em /usr.

84

/usr/local Diretrios da Hierrquia local


bin

arquivos

doc

Documentao local

etc

arquivos de configurao utilizados somente no local

games

Jogos instalados localmente

lib

Biblilotecas para /usr/local

info

Pginas de informao local

man Hierrquias de pginas de manual para /usr/local


sbin Administrao do sistema
scr

Cdigo fonte local.


Este diretrio deve estar vazio ao terminar de instalar LINUX

pela primeira vez. No deve haver excees regra , exceto quia os


subdiretrios vazios listados.
O software instalado localmente deve estar localizado dentro de
/usr/local, em vez de /usr a menos que esteja sendo instalado para
reemplantar ou atualizar software em /usr.
Note que o software localizado em / ou em /usr pode ser
sobrescrito por atualizaes do sistema (assim mesmo, recomendado
que as distribuies no sobrescrevam informaes /etc fora destas
circunstncias). Por esta razo, o software local no deve se colocado
fora de /usr/local sem uma boa causa.
5.4.3.12.9 - Subdiretrio /usr/man
Inclui as paginas do manual, detalha
pginas do manual atravs do

organizao

das

sistema, devem estar dentro de

/usr/man.
As

pginas

do

manual

esto

armazenadas

<mandir>/<locais>/man [1-9]. Faremos uma pequena listagem de


<mandir> e <locais> :

85

<mandir>/<locais>

uma hierarquia de pginas de manual.

man1 Programas para usurios.


man2 Chamadas do sistema.
man3 Subrotinas e funes de bibliloteca.
man4 Dispositivos.
man5 Formatos arquivos.
man6 Jogos.
man7 Miscelneas.
man8 Administrao do Sistema.
man9 Funes e variveis internas do kernel.
O

<mandir>

primrio

do

sistema

/usr/man

contm

informao do manual para comandos e informao abaixo dos


sistemas de arquivos / e /usr. Obviamente no h pginas de manual
em / porque no se necessitam para carregar nas emergncias.
Deve-se fazer reserva na estrutura de /usr/man para o suporte
de pginas do

manual que esto escritas em diferentes idiomas

(multiplos idiomas). Estas providncias devem levar em conta o


armazenamento e referncia destas pginas do

manual. Os fatores

relevantes incluir no idioma (inclue diferenas basedas na geografia) e


cdigo do conjunto caracteres.
Esta nomenclatura dos subdiretrios de idiomas de /usr/man
esta basada no apndice e do padro POSIX 1003.1 que descreve a
cadeia de identificao locais.
O mtodo mas aceito para descrever um ambiente cultural. A
cadeia <locais> :
<idioma>[<_territorio>][.<conjunto_de_caracteres>][,<verso>]
O campo <idioma> vem do
representao

dos

nomes

dos

ISO639 (um cdigo para a

idiomas).

Seja

os

caracteres

especificado no padro ISO, com minsculas somente.


O campo <_territorio> ser o cdigo

das letras de ISO3116

(uma especificao da representao dos nomes dos pases, se

86

possvel (muita gente est familiarizada com o cdigo

2 letras

espelhado no cdigo pas como e-mail).


O campo <conjunto_de_caracteres> deve representar o layout
que

descreve

cdigo

caracteres.

Se

campo

<conjunto_de_caracteres> s uma especificao numrica, o nmero


representa o nmero do layout internacional que descreve o conjunto
caracteres. Recomenda-se que utilizar uma representao numrica,
sempre que for possvel (especialmente o padro ISO), que no inclua
smbolos de pontuao e que todas as letras sejam minsculas.
Um parmetro que especifique <verso> do
colocada depois do

perfil pode ser

campo <conjunto_de_caracteres >. Esta pode

utilizar-se para diferenciar as necessidade culturais.


Em sistemas que usem s um idioma e um cdigo do conjunto
de caracteres para todas as pginas do

manual, pode-se omitir a

subcadeia <locais> e armazenar todas as pginas do

manual em

<mandir>. Por exemplo no sistemas que s tem pginas do manual


em ingls codificados

na ASCII, podem armazenar as pginas do

manual (Os diretrios man[1-9]) diretamente em /usr/man.


Em pases nos quais existe um cdigo do conjunto caracteres
no layout, pode omitir o campo <conjunto_de_caracteres>, porm
bastante recomendado que a inclua, especialmente para pases com
vrios layouts.
Exemplos de vrios manuais encontrados :

87

Idioma

Pases

Conjunto

Diretrio

Ingls
Ingls
Ingls

-------Reino Unido
Estados

caracteres
ASCII
ASCII
ASCII

/usr/man/em
/usr/man/em_GB
/usr/man/em_US

Francs
Francs
Alemo

Unidos
Canad
Frana
Alemanha

ISO8859-1
ISO8859-1
ISO646-DE

/usr/man/fr_CA
/usr/man/fr_FR
/

ISO6937
ISO8859-1

usr/man/de_DE646de
/usr/man/de_DE6937
/

Alemo
Alemo

Alemanha
Alemanha

usr/man/de_DE.8859
Alemo
Japons
Japons
Japons

Suia
Japo
Japo
Japo

ISO646-CH

1
/

JIS
SJCS
UJ ( EUC-J)

usr/man/de_CH.646ch
/usr/man/ja_JP.jis
/usr/man/ja_JP.sjis
/usr/man/ja_JP.ujis

As pginas do manual para os comandos e informao que se


encontra abaixo /usr/local esto armazenadas em /usr/local/man.
As pginas do manual para o sistema X Windows esto armazenadas
em /usr/X11R6/man. Logo todas as hierarquias de pginas do
manual no sistema devem ter a mesma estrutura que /usr/man. Os
diretrios

vazios podem ser omitidos da hierarquia de pginas do

manual. Por exemplo se, /usr/local/man no tem pginas do manual


na seo 4 (dispositivos) ento se pode omitir /usr/local/man/man4.
As sees da pginas cat (cat[1-9]) que contm pginas do
manual formatadas, tambm se encontram dentro os subdiretrios
/<mandir>/<locais>,

pois

no so requeridas

nem

devem

ser

distribuidas no lugar das fonte nroff das pginas do manual.


As pginas do Manual do sistema de manipulao de e-mail mh
devem ter o prefixo mh em todos os nomes de arquivos das pginas.

88

As pginas do sistema X Windows devem de ter o prefixo X em


todos os nomes dos arquivos das pginas.
A prtica de colocar as pginas do

manual de diferentes

idiomas, nos subdiretrios aprpriados de /usr/man tambm se


aplica a as outras hierarquias de pginas do

manual, tais como

/usr/local/man e /usr/X11R6/man. Isto tambm aplicvel a


estrututura opcional de /var/catman, mostrada no subdiretrio /var.
5.4.3.12.10 - Subdiretrio /usr/sbin
Este diretrio contm quaisquer arquivo no essenciais utilizado
exclusivamente pelo administrador do sistema.
Os programas de administrao do sistema que sejam utilizados
para a reparao do

sistema, montado no /usr, outras funes

essenciais devem localizar-se em /sbin em vez de /usr/bin.


Tipicamente /usr/sbin contm os deamons de rede, quaisquer
ferramenta

de

administrao

no

essenciais

arquivos

para

programas servidores no-crticos. Estes inclue os deamons da


internet que so chamados por inted (chamados in.*) tais como
in.telnetd e in.fingerd e os deamons basados em rpc manipulados por
portmap (chamados rcp.*), tais como rcp.infsd e rcp.mountd.
Estes programas servidores so utilizados quandoocorre um
estado

que o System

V conhece como "run levO2" (estado multi-

usurio) e o "run levO3" (estado em rede) ou estado

que o BSD

conhece como "modo multi-usurio", neste ponto ficam disponveis os


servios para os usurios (suporte de impresso) e at outras
mquinas (por exemplo, exportar NFS).
Os programas administrativos instalados localmente devem
estar localizados em: /usr/local/sbin.
5.4.3.12.11 - Subdiretrio /usr/share

89

So informao

que independente da arquitetura, quaisquer

especificao para /usr/share ser incluida em um documento


suplementar ao FSSTND, de acordo com a Linux Organization, os
pesquisadores do FSSTND acham que /usr/share no necessrio na
maioria dos sistemas Linux.
5.4.3.12.12 - Subdiretrio /usr/src
Contm o Cdigo fonte para o kern do Linux, qualquer cdigo
fonte no local deve localizar-se neste diretrio . O nico cdigo fonte
que sempre deve localizar-se em um lugar especficos o cdigo do
kern(quando

exista ou

esteja enlaado como parte de uma

estrutura /usr/include). Podem-se usar subdiretrios que desejar.


O cdigo fonte para Kern deve sempre estar em seu lugar
mesmos. Os arquivos include do cdigo do kernel. Esses arquivos
esto localizados neste diretrios.
/usr/src/linux/include/asm-<arch>
/usr/src/linux/include/linux
/usr/include deve conter links a estes diretrios, chamados
asm e linux, dados que so necessitados pelo compilador de C, ao
menos estes arquivos include devem sempre ser distribuidos nas
intalaes que incluem um compilador C. Devem ser distribuidos no
diretrio/usr/src/linux de forma que no existo problemas quanto
os administradores do sistema atualizem sua verso do kern pela
primeira vez.
/usr/src/linux pode tambm ser um links simblico a um rvore de
cdigo fonte do kernel.
5.4.3.13 - A Hierrquia /var

90

/var

Informao varivel

adm

Informaes administrativa do

catman
lib
local
ock
og
named
nis
run

simblico at
/var/og
Pginas do manual formatadas localmente
Informao do estado das aplicaes
Informao varivel do software de /usr/local
arquivos de bloqueio
arquivos de Agenda
arquivos DNS, somente rede
arquivos base de dados NIS
arquivos relevantes a processos execuo do sistema

sistema (obsoleto). Link

spool

Diretrios de trabalhos em fila para realizar-se depois

tmp

arquivos temporrios, utilizado para manter /tmp menor

possvel
/var contm arquivos com informao
arquivos e diretrios

varivel. Esta incluem

em fila de execuo, informao

de ordem

administrativa e arquivos temporrios e transitorios.


Algumas poro de /var so no compatvel entre diferentes sistemas.
Por exemplo, /var/og, /var/ock e /var/run. Outras poro so
compatvel, notoriamente /var/spool/mail e /var/spool/news.
/var especificada aqui para fazer possvel montar /usr
somente para leitura. Tudo aquilo que alguma vez ficou em /usr
escrito durante a operao normal do sistema (no durante a
instalao e manuteno do software) deve ir em /var.
Se /var no pode ser uma participao separada, preferivel
mover /var para fora do diretrio raiz, pois dentro da partio /usr
(Isto se fazia algumas vezes para reduzir o tamanho da partio raiz
ou quando h pouco espao na partio raiz). Sendo assim, /var no
deve ser enlaada a /usr, porque fazia que a separao entre /usr
e /var seja mais difcil e seguramente criar um conflito do nomes,
em vez links /var e / usr/var.

91

5.4.3.13.1 - /var/adm : Agenda do sistema e arquivos contabilizados


(obsoleto)
Este diretrio tem sido

repassado

para /var/og e outros

diretrios . Deve ser um links simblico a /var/og at que todos os


programas no se refiram mas a algum arquivo em /var/adm.
utmp seja movido a /var/run. Todos os arquivos agendas vo
ser movidos a /var/og incluindo o arquivo wtmp.
O suporte de empacotamento das distribuies deve armazenar
em /var/lib/<nome>.
Nota: O links simblico /var/adm no deve ser necessrio a
maioria dos sistemas Linux-i386ELF dado que Otroca foi
introducido antes que ELF fora liberado al pblico.
5.4.3.13.2

- /var/catman : Pginas do

Manual

Formatadas

localmente (opcional)
Este diretrio poporcionara uma localizao

padro

para os

computadores que utilizam uma partio /usr somente para leitura ,


pois desejam permitir o armazenamento temporrio de pginas do
manual

formateados

localmente.

Os

administradores

que

montaram /usr como escrita (intalaes mono-usurios) podem


escolher no usar /var/catman e exibir as pginas do

manual

formatadas dentro dos diretrios cat[1-9] dentro /usr diretamente.


Recomendamos que a maioria dos administradores utilizem uma das
seguintes opes em seu lugar.
Preformatando todas as pginas do manual dentro /usr com o
programa (catman).
No ser permido o armazenamento temporrio das pginas
formatadas do manual e precise que se execute nroff cada vez que
necessite uma pgina.

92

Se permita o armazenamento temporrio local das pginas do


manual em /var/catman.
A estrutura de /var/catman necessita refrear ambos, O trecho
da existencia de multiplas hierarquias de pgina do

manual e a

possibilidade do uso de multiplos idiomas.


Dada uma pgina do manual sem formatar que normalmente
aparece

em

/usr/<rota1>/man/man[1-9],

verso

formatada

armazenada temporriamente deve ir em /var/catman/<rota2>/cat[19], aonde <rota2> <rota1>. Os componentes <rota2> e <rota1> esto
ausente no caso de /usr/man e /var/catman.
Por

exemplo,

/usr/man/man1/ls.1

formatado

/var/catman/cat1/ls.1

em
e

/usr/X11R6/man/<locais>/man3/XtCass.3x

esta

formatado

em

/var/catman/X11R6/ <locais>/cat3/XtCass.3x .
As pginas do

manual escritas em /var/catman/cat[1-9]

podem eventualmente, transferir-se a /usr/<rota>/cat[1-9]. De igual


forma

as

pginas

do

manual

formatadas

dentro

de

/usr/<rota>/cat[1-9] podem expirar se no so acceitas num perodo


do tempo.
Se tivessem pginas do manual preformatadas com um sistema
Linux num meio somente para leitura (por exenplo um CD-ROM),
devem estar instaladas em /usr/<rota>/cat[1-9]. /var/catman est
reenviado para um lugar de armazenamento temporrio para pginas
de manual formatados.
5.4.3.13.3 - /var/lib : Informao de Estado das Aplicaes.
/var/lib.- Informao de Estado das Aplicaes

emacs

Diretrio do estado do Emacs

games

Informao varivel de jogos

93

news Arquivos variveis de Cnews/INN


texmf Informao varivel asociada com TeX
xdm arquivos de autenticao e cdigo de erros de aplicaes X
Windows.
/var/lib/<nome>

lugar

apropriado

para

suporte

de

empacotamento de todas as distribuies. Diferentes distribuies de


Linux podem utilizar diferentes nomes para suporte.
/var/lib/emacs
O diretrio do estado GNU Emacs, O lugar do ndos arquivos de
informao independente da arquitetura, que Emacs modifica quando
executa, deve ser /var/lib. No presente, Emacs somente localiza seu
diretrio de arquivos de bloqueio abaixo do diretrio de estado (em
<direstado >/emacs/lock), pois pode fazer uso mais extenso do
mesmo no futuro, notoriamente, s requer a adio de uma opo
sensvel no programa configure de Emacs para fazer esta troca (antes
de compilar).
/var/lib/games
Assim

como

os

subdiretrios

antes

citados,

quaisquer

informao varivel relacionada com os jogos que se encontram em


/usr/games, devem estar aqui. /var/lib/games deve incluir a
informao

varivel

que

/usr/lib/games. A informao

previamente

ser

encontrada

em

esttica, tal como textos de ajuda,

descries do niveis devem permanecer em /usr/lib/games.


/var/lib/news

94

/var/lib/news deve usar para armazenar toda a informao


varivel asociada com os servidores de news tais como Cnews e INN,
inclusive o arquivo histrico, o arquivo ativo.
/var/lib/texmf
/var/lib/texmf deve usar para armazenar a informao varivel
associada

com

armazenaram

TeX.
todas

Particularmente,
as

fonte

em

/var/lib/texmf/fonts

tipogrficas

que

so

geradas

automticamente por MakeTeXPK.


Deve haver um links desde /usr/lib/texmf/fonts/tmp at
/usr/lib/texmf/fonts. Este links permite os usurios

fazer uso de

uma s rota /usr/lib/texmf/fonts/tfm quando houver trocas da sua


varivel

TEXFONTS (Esta A rota default nas ferramentas TeX de

Karl Berre distribuidas por ftp.cs.umb.edu:pub/tex [A razo de


mencionar-lo aqui que so o padro de fato nas intalaes UNIX,
estas ferramentas so amplamente usadas na comunidade LINUX]. Se
se utiliza outra distribuo de TeX, deve fazer um links deste diretrio
de fonte apropriada at /usr/lib/texmf/fonts).
O MakeTeXPK que se distribue e com dvipsk colocar os
arquivos

.pk

em

fonts/pk/<dispositivo>/<nome_da_fonte>,

(por

exemplo, fonts/pk/Canon_CX/cmr10.300pk). Os arquivos .pk podem


ser plugados periodicamente do

rvore /var/lib/texmf ou pode-se

mover dentro da rvore /usr/lib/texmf. Se usarem geradores


automticos de .mf ou .tfm, estes devem por sua informaes nos
subdiretrios mf ou tfm de /var/lib/texmf/fonts.
/var/lib/xdm
/var/lib/xdm contm a informao

varivel de xdm que

consiste nos arquivos xdm-errors e quaisquer arquivo pertencentes a


xdm. Os arquivos de xdm tais como chooser devem at estar

95

localizados na localidade histrica em /usr/X11R6/lib/X11/xdm. O


arquivo xdm-pid devem estar em /var/lib/xdm apesar de existir
/var/run. Os arquivos restantes devem estar em /etc/X11/xdm.

5.4.3.13.4 - /var/local : Informao varivel do software que est em


/usr/local

Este diretrio contm toda a informao


relacionada com o software

varivel que esta

que se encontra em /usr/local.

Naturalmente a implementao desta subdiretrio prerrogativa do


administrador do

sistema . Como a informao

pode estar noutro

lugar do diretrio/var, no deve colocar em /var/local. Por exemplo,


todos os arquivos de bloqueios estaro em /var/ock.

5.4.3.13.5 - /var/ock : arquivos de Bloqueio

Os arquivos de bloqueio devem de armazenar-se

dentro uma

estrutura do diretrio de /var/ock.


Para preservar a habilidade de montar /usr somente para
leitura , no se dever colocar os arquivos de bloqueio na partio
/usr.
Os arquivos de boqueio dos dispositivo, tais como os arquivos
de boqueio do

dispositivos serie que antes se encontravam em

/usr/spool/ock ou em /usr/spool/uucp devem agora ser armazenado


em /var/ock. A conveno para a nomenclatura que deve utilizar-se
LCK., seguido do nome base do

dispositivo. Por exemplo, para

bloquear /dev/cua0 se dever criar o arquivoLCK..cua0.


O formato usado para os arquivos de bloqueios de dispositivo
no Linux dever ser o Formatos arquivos de bloqueio HDB UUCP. O
formato HDB armazenado em OPID (Identificador de processo) com

96

um nmero decimal na ASCII de 10 bytes, com um caracter de linha


nova.
Por exemplo, se o processo 1230 retm um arquivo de bloqueio,
contm dados seguinte onze(11) caracteres: espao, espao, espao,
espao, espao, espao, um, dois, trs, qautro e nova linha.
Ento quaisquer coisa que usar /dev/cua0, pode ler o arquivo
de

bloqueio e atuar de acordo

(todos os arquivos de bloqueio em

/var/ock devem ser lidos por todos).

54.3.13.6 - /var/og : Arquivos agenda e diretrios

Este diretrio contm arquivos agenda miscelneos. A maioria


dos arquivos agenda se devem exibir neste diretrios ou subdiretrios
aprpriados.

astog

Registro do ltimo acesso de cada usurio

mesage

Mensagem do sistema desde que logou ao sistema

wtmp

Registro de todos os acessos e sadas


Pode requerer um links simblico desde /var/og/utmp at

/var/run/utmp

basta

que

nenhum

programa

se

refira

/var/adm/utmp (/var/adm em si mesmo um links simblico


transicional at /var/og).

5.4.3.13.7 - /var/named : arquivos DNS

Este diretrio contm todos os arquivos de trabalho do servidor


de nomes Internet, named. Recomendamos que /etc/named.boot seja
um

links

simblico

at

/var/named/named.boot,

97

dado

que

/etc/named.boot o arquivo de inicializao default, se no fornece


argumentos a named.

98

5.4.3.13.8 - /var/nis

Arquivos de base de dados do servio de informao de rede


(NIS) o sistema de informao

de rede (NIS) era anteriormente

conhecido como as pginas Amarelas Sun. A funcionalidade e


localizao de diretrios de ambos o mesmo pois o nome (yelow
Page) uma marca registrada no Reino Unido , pertencem a Bristish
Telecommunications plc. e no pode ser usada sem permiso.

5.4.3.13.9 - /var/preview:arquivos guardados depois de uma coliso


ou uma termino inesperado, exemplo vi (editor de texto).

Este diretrio contm os arquivos que so armazenados antes


de quaisquer terminao no esperada de ex. vi.

5.4.3.13.10 - /var/run : arquivos variveis de tempo de execuo

Este diretrio contm arquivos com informao do sistema que


o descrevem desde que inicializou. Geralmente os arquivos neste
diretrio devem ser deletar (remover ou truncar) aol comenar o
processo de inicializao.
Os arquivos identificados do processo (PID), que estavam
originalmente /etc,

devem colocar em /var/run. A conveno de

nomenclatura dos arquivos PID <nome-programa>.pid, por exemplo


o arquivo PID de crond se chama /var/run/crond.pid.
O formato interno dos arquivos PID permanecem sem troca. O
arquivo deve conter o indicador de ponto decimal codificado como
ASCII, seguido por um caracter nova linha. Por exemplo, o processo
nmero 25, /var/run/cond.pid conter 3 caracteres, dos cinco e nova
linha.

99

Os programas que leiam arquivos PID devem ser flexvel na


acepo, por exemplo devem ignorar os espaos extras, zeros a
esquerda, ausncia do caracter nova linha ou linhas adicionais no
arquivo PID. Os programas que criam arquivos PID devem utilizar a
especificao dada no pargrafo anterior.
O arquivo utmp, que armazena informao

acerca de quem

est atualmente utilizando o sistema, se localiza neste subdiretrio .


Os programas que mantenham sockets transitorios de dominio
UNIX, devem coloca-los neste diretrio.

5.4.3.13.11 - /var/spool

Diretrios de fila de trabalhos para procedimento posterior


/var/spool tradicionalmente utilizado para a informao

local de

mquina que enviada para processo depois, at o subsistemas UNIX.


Por exemplo, trabalhos de impresso que so armazenados aqui para
entrega posterior ao daemon da impressora, o e-mail que sa
armazenado aqui para entrega a sistemas remotos e os arquivos
UUCP so armazenados aqui para transmisso dos sistemas UUCP
vencidos o e-mail que entra e as noticias so armazenadas aqui para
entregar-se aos usurios e os trabalhos de at e cron so armazenados
aqui para execuo posterior pelo daemon cron.
/var/spool
at

Trabalhos de at

cron Trabalhos de cron


lpd

Diretrio de impressora *

mail arquivos caixa-postal dos usurios


mqueueFila de espera dos correio
news Diretrio de noticias *
rwhod

arquivos rwhod
100

smail Diretrio de smail *


uucp Diretrio de UUCP
Nota:
* Segnifica fila de trabalhos para processamento posterior.
Os arquivos de bloqueio UUCP devem localizar-se em /var/ock.
Veja a seo acerca de /var/ock.

/var/spool/lpd

/var/spool/lpd

---

Diretrio

de

fila

de

trabalhos

para

processamento posterior a impresso


<impressora>

---

Diretrio que tem a fila especifica desta

impressora
O arquivo de bloqueio para lpd, lpd.ock deve estar localizado
em /var/spool/lpd. O arquivo de bloqueios de cada impressora deve
localizar-se no diretrio<impressora> da impressora especifica e deve
chamar ock.

5.4.3.13.12 - /var/tmp : Arquivos temporrios, utilizando para


manter /tmp pequeno.

Os arquivos que esto no /var/tmp esto armazenados por uma


durao no especifica. (Lembre-se que os diretrios temporrios do
sistema no garantiram manter a informao por nenhum perodo
particular).
A informao armazenada em /var/tmp tipicamente esta numa
"forma definida localmente", pois usualmente menos frequentemente

101

que /tmp. Se pode encontar informao sobre diretrios temporrios


na seleo dedicada a /tmp (acima).
Deve existir um links simblico desde /usr/tmp at var/tmp
por razo de compatibilidade.

5.4.4 - Alguns dilemas sobre o Sistema de Arquivos

A rede apresenta um dilema intirerante, algumas pessoas


quiseram separar os arquivos de rede e configurao dos outros
arquivos de configurao. Ou seja, esto em desacordo . Sentimos que
a rede no um "pacote", seno uma parte integral da maioria das
mquinas UNIX (e similares). No se deve colocar a rede em um s
diretrio

seno

localizar-se

sistematicamente

nos

diretrios

aprpriados.
/bin {hostname, netstat, ping} Qualquer coisa

que algum usurio

queiram utilizar considerado vital.


/sbin {arp, ifconfig, route}

Qualquer coisa que s root necessita e

considera vital.
/usr/bin {finger, rep, rogin, telnet, etc.}

Alguns arquivos que algum

usurio queira utilizar e que no so vitais.


/usr/sbin {in.ftpd, inetd, lpd, portmap, etc..}

Alguns arquivos que

somente o administrador utiliza, que no so vitais.


Pode parecer confuso a princpio (leva

tempo digerindo), tem

sentido . Se por alguma razo voc s pode montar a partio raiz, e


necessita acessar a rede para reparar seu sistema, no quer que os
arquivos esto em /usr/etc (como esto algumas vezes). Os arquivos
que necessitam

para montar /usr as situaes normais (e de

emergncia) esto coocados dentro da sub-rvore raiz, e quaisquer


outros podem colocar em /usr, para manter
sistema de arquivos raiz pequeno.
102

tamanho

do

Os arquivos de configurao para a rede pertencem a /etc.


A

Estruturas

independente

da

arquitetura,

diretrio/usr/share tipicamente contm arquivos independente da


arquitetura, tais como pginas do manual, fuso horrio, informao
de

terminais,

etc.

No

momento

presente

no

diferentes

arquiteturas para Linux, pois com o tempo, veremos que Linux


incluir outras arquiteturas e outros sistemas similares a UNIX.
Nota: Nenhum programa nunca dever fazer referncia a
alguma coisa em /usr/share. Por exemplo, um programa de pginas
do

manual

no

deve

nunca

/usr/share/man/man1/1s.1,
/usr/man/man1/1s.1.

sempre

Qualquer

"apontada" atravs do uso do

coisa

buscar
deve
em

diretamente
referir

/usr/share,

ser

enlac smbolos de outras reas do

sistema de arquivos, tais como /usr/man, /usr/lib/<algo>, etc.


At se trabalhar as especificaes de /usr/share.
Os Link simblicos, existe muitos usos para os link simblicos
em cada sistemas de arquivos. Embora este documento

como esta

no respalda o uso do link simblicos na implementao default (os


encontrados depois de instalar Linux), usam frequentemente com
bons propsitos em diferentes sistemas. O ponto que os link
simblicos devem estar ali para manter todos os arquivos e diretrios
onde cada usurio espera encontar.
Estar preparado para acertar que certos diretrios, at aqueles
contidos no diretrio raiz, at sejam link simblicos. Por exemplo em
alguns

sistemas

simbolicamente

/home

no

estar

na

raiz,

seno

enlaado

a um diretrio/var ou algum outro lugar. /home

poderia ter tambm sua prpria partio fsica e desde logo, ser
montada como tal.
Similarmente, dado que /usr poderia estar em um servidor de
arquivos central montado

va NFS, /usr/local pode-se enlaar

simbolicamente a /var/local. Este troca pode-se justificar recordando


A razo principal de ter /var: separadas de diretrios de arquivos que

103

variam com o tempo e entre diferentes sistemas e mquinas daqueles


que podem compartilhar e sejam somente para leitura .
Alguns sistemas alm disso enlaar /tmp a /var/<algo> se a
partio raiz se torne muito pequena (ou

muito pequena). Existe

mais exemplos de bons usos de link simblicos, pois todo o assunto


no se reduz a estas

coisas: os pacotes devem ser capazes de

encontar as coisas onde esperam (razoavelmente) e os link simblicos


pode-se utilizar para resolver os problemas de muitos casos. Ou seja,
se podem gerar problemas com o uso demasimados link simblicos.
Este problema influi sobre a confiana nos link simblicos para
resolver problemas, confuso resultante do

sobre o uso do link

simblicos e as preferncias estticas das diferentes pessoas.


Os Arquivos

Compilados Estticamente o Linux

executa

atualmente em uma gama de sistemas, alguns com somente um


usurio e disco pequeno, outros como servidores em ambiente com
rede muito grande, dada esta variedade , esta documento no impe
regra sobre quais arquivos esto compilados estaticamente ou
dinamicamente , com as seguinte excees. Ambos ln e se nc, devem
existir em /bin; quaisquer verso esttica pode-se colocar em /sbin ou
repassa-la em /bin.
Os grande sistemas Linux podem desejar incluir outros arquivos
estticos (sh, init, mkfs, fsch, tunefs, mount, umount, swapon, swopff,
gette , login e outros). Os instaladores e os administradores de
sistemas, so livres para conectar dinmicamente ou estaticamente
estes outros arquivos segundo sua convenincia, sempre que a
localizao dos arquivos arquivos no troque.
Em sistemas de rede, (especialmente aqueles que no tem
unidade de disco flexivel), podem querer compilar estaticamente
ifconfig,

route,

hostname

outras

ferramentas

usualmente no necessrio.
5.4.5 - Descries sucinta do contedo dos manuais.

104

de

rede.

Isto

man1: Programas de usurio.


As pginas deste manual descrevem os comandos aceitos
publicamente.

A maioria da docomentao dos programas que o

usurio necessita encontra-se aqui.


man2: Chamadas do Sistema.
Esta seo descreve todas as chamadas do sistema (requisio
do kern do Linux para realizar certas operaes).
man3: Subrotinas e funes de bibliloteca.
Descreve programas e rotinas da bibliloteca que no so
chamadas diretas do servios do kernel. Esta seo e a man2 so de
interessante de programdores.
man4: arquivos especiais.
Esta seo descreve os arquivos especiais, funes relacionadas
com os manipuladores e o suporte a rede que esto disponveis no
sistema. Esta documentao incluem os arquivos de dispositivo que
encontram-se em /dev e a interface do kern para suporte de
protocolos de rede.
man5: Formatos de arquivos.
Aqui se encontram os formatos para muitos dos arquivos cujo o
formato no seja intuitivo. Esta incluem

vrios arquivos include,

arquivos de sada de programas, e arquivos de sistema.

man6: Jogos.(arquivos educativos)


Esta seo do comenta os jogos, demos e programas triviais.

105

man7: Miscelnia
As pginas do manual que so difcil de classificar e designar,
pertencente a seo 7. As

troff e outros macro pacotes de

procedimento do texto encontram-se aqui.


man8: Administrao do Sistema
Aqui esta a documentao dos programas utilizados pelos
administradores de sistemas para a operao e manuteno. Alguns
destes programas so ocasionalmente utilitrios para usurios
normais.
man9: Funes e variveis internas do kernel
Contm informaes

do cdigo fonte do

Linux.

106

kern no Sistemas

6 - Pontos Positivos e negativos

O Linux sem dvida a melhor opo de Unix para PC, pois


possui todas as caractersticas
multitarefa

real,

um UNIX moderno, tais como :

multiusurio,

memria

virtual,

biblioteca

compartilhada, interface grfica (X Windows) etc. O Linux possui


centenas de comandos embutidos, chamado utilitrios e ferramentas,
cada ferramenta um programa distinto, destinado a fazer um tarefa
especfica de forma rpida e segura, vide item 5.4.3 - Compisio dos
diretrios do Linux.
O fato de ser um sistema aberto extremamente flexvel
(usurio tem acesso ao fonte do sistema) outro ponto positivo.
O preo outro atrativo US$ 44,00 (no Brasil, US$ 22,00 nos
E.U.A), incluem 6 CDs do Linux Developers Resourses CD-ROM,
distribuido pela InfoMagic.
Diversos grupos de estudo do Linux no mundo inteiro garante
atualizaes do software praticamente mensais. Aliado a isto, cada
nova verso incorpora dispositivos perfericos que so lanado no
mercado, trazendo a seu usurio suporte as mais recentes conquista
da indstria do hardware.
O Linux tem excelente mercado a nvel acadmico, o que nos faz
crer constantes melhoras no software, pois grande parte dos melhores
professores/pesquisadores de sistemas operacionais colaboram para o
seu desenvolvimneto tecnolgico.
A documentao detalhada e completa (em ingls), em
portugus bastante escassa (ponto negativo). Toda a documentao
pode ser facilmente acessada pela internet em diversos sites ou na
documentao que acompanha o software.
O suporte tcnico um dos pontos fracos do sistema, feito
basicamente atravs da internet, no existe nenhuma empresa no
Brasil especializada no suporte ao Linux.
107

O nmero de aplicativos limitado e no existe a curto prazo


pespectiva de entrada de grandes software house desenvolvendo
aplicativos para Linux, sem aplicativos no h como um sistema se
tornar popular no mundo dos PCs.
O sistema de arquivos varia de um distribuio a outro, tornado
difcil a vida do administrador de sistema, que muitas vezes tem
dificuldade de descobrir o que essencial em cada subdiretrio, limpar,
criar, preparar, verificar, encontar e montar outros sistemas de
arquivos (possvelmente em mquinas remotas), todas estas tarefas
podem ser dificultadas se no encontrarmos os arquivos aonde
esperamos.
A administrao e a operao de um modo geral bem mais
complexa em um ambiente unix, inclusive o Linux, do que no
ambiente DOS/Windows, o que dificulta sua popularizao.
A Interface Grfica X-Windows, Xfree86 verso 3.2, ainda
precisa

ser

melhorada,

principalmente

os

aplicativos

que

so

desenvolvidos para a mesma, ainda muito pobres comparada com a


GUI do Windows95.

108

Concluso

O Linux, um sistema operacional do tipo Unix, o padro


System V esta embutido no seu kernel, foi desenvolvido para a
plataforma IBM-PC, sendo assim, ele possui a robustez e segurana e
flexibilidade do Unix. Alm disso ele possui uma interface grfica
chamada de X Windows(XFree86 verso 3.2, por exemplo, existe
outrasinterface grfica), que semelhante a do Windows 95, menos
sofisticada, menos aplicativos e menos elaborada, porm funcional.
O Projeto Linux foi desenvolvido para ser uma arquitetura
aberta, voc ter toda a liberdade de desenvolver software para sua
plataforma. Os fontes so distribuidos junto com o produto. Por outro
lado, no existe um grande mercado para a plataforma Linux, sendo
assim, as grandes softwares houses do mundo, como a Microsoft,
Lotus,

Corel,

Borland,

Novell,

etc

no

se

preocuparam

em

desenvolvem aplicativos para ele. O desenvolvimento de aplicativos


ainda pequeno, colaboradores, em sua maioria pesquisadores,
desenvolve os softwares e a distribuio feita, preferencialmente, no
mesmo pacote a preos mdicos, todo o pacote custa no Brasil US$
44,00 (US$ 22,00 nos USA), pode ser comprado utilizando qualquer
Carto de Crdito Internacional.
Outro problema do Linux a falta de suporte tcnico, no existe
a nvel comercial no Brasil, as informaes so obtidas atravs de
diversos manuais contidos no software, ou atravs da internet. Existe
uma farta documentao disponvel na rede, diversos servidores WWW
(World Wide Web), lista de discusses (servios que permite o
intercmbio de mensagem entre vrios usurios, funciona como uma
extenso do correio eletrnico, onde qualquer mensagem enviada a
este

endereo

fictcio,

conhecido

como

alias,

reenviada

automaticamente para todos os endereos da lista associada),


109

Netnews ou USENET ou NEWS (semelhante a lista de discusso, s


que as mensagem so enviadas a um determinado computador da
rede que as reenvia em bloco, para outros computadores que aceitam
o servio), FTP (File Transfer Protocol, servio bsico de tranferncia
de arquivos na rede), etc.
O mercado do Linux no Brasil restrito, praticamente, ao meio
acadmico e alguns provedores da Internet (ex.: Universidade Federal
de Gois utiliza como roteador e servidor de WWW em algumas
unidade acadmicas). difcil acreditar no crescimento do mercado
Linux no Brasil a curto e a mdio prazo fora deste nincho de mercado,
devido a sua dificuldade de operao, o Linux foi projetado por
programadores para programadores, a fim de ser utilizado em
ambiente onde a maioria dos usurios tenha uma certa experincia,
soma-se a isto a falta de software para a plataforma Linux que
dificulta a sua popularizao. As empresas que utilizam o Unix
comercialmente na plataforma RISC, utilizam sistemas proprietrios
desenvolvidos por empresas como Sun, IBM,

Dec, etc, que fazem

tanto o hardware quanto SO, embora exista verses do Linux para


algumas destas plataformas (ex. Sun) no acreditamos no crescimento
do Linux neste mercado, pois estritamente fechado.
Apesar disto, o Linux uma opo sria como sistemas
operacional do tipo Unix para o mundo PC, podemos recomend-lo
sem medo de errar, se sua empresa ou aplicao precisar de um
sistema com as caractersticas do Unix, voc possue mquinas Intel
ou compatveis, pode utilliz-lo a melhor opo hoje e com grandes
possibilidades de crescimento nesta faixa de mercado.

110

Apndices

A - Comandos bsicos do sistema UNIX

Principais comandos - ordem albabtica

Comandos

em

Unix

possuem

algumas

caractersticas

particulares. Eles podem ser controlados por opes e devem ser


digitados em letras minsculas.
1 - cat : Oficialmente usado para concatenar arquivos. Tambm usado
para exibir todo o contedo de um arquivo de uma s vez, sem pausa.
Sintaxe: cat < arquivo1 > < arquivo2 >... < arquivo n
>,
onde (arquivo1) at (arquivo n) so os arquivos a serem mostrados.
"cat" l cada arquivo em sequencia e exibe-o na sada padro. Deste
modo , a linha de comando:
cat < arquivo >
exibir o arquivo em seu terminal; e a linha de comando :
cat < arquivo1 > < arquivo2 > > < arquivo3 >

111

concatenar "arquivo1" e "arquivo2", e escrever o resultado em . O


smbolo ">", usado para redirecionar a sada para um arquivo, tem
carter destrutivo; em outras palavras, o comando acima escrever
por cima do contedo de < arquivo3 >. Se, ao invs disto, voc
redirecionar com o smbolo ">>", a sada ser adicionada a <arquivo3
>, ao invs de escrever por cima de seu contedo.
2 - cd : Muda o diretrio de trabalho corrente.
Sintaxe : cd < diretrio >
onde (diretrio) o nome do diretrio para o qual voc deseja mudar.
O smbolo "." refere-se ao diretrio corrente e o smbolo ".." refere-se
ao "diretrio-pai". Para mover para um "diretrio-pai", ou seja, um
diretrio acima do que voc est, use o comando :
cd ..
( Note o espao entre "cd" e ".." )
Voc tambm pode usar nomes-de-caminho (pathnames) como
argumento para o comando cd. Por exemplo :
cd /diretorio1/diretorio2
o posicionar diretamente em "diretrio2". O uso de "cd" sem nenhum
argumento far com que voc retorne para o seu "home-directory" .
3 - chgrp : Modifica o grupo de um arquivo ou diretrio.
Sintaxe: chgrp [-f] [-h] [-R] gid nome-do-arquivo

112

"chgrp" modifica o identificador de grupo ("group ID" , gid) dos


arquivos passados como argumentos.
"gid" pode ser um nmero decimal especificando o group id, ou um
nome de grupo encontrado no arquivo "/etc/group". Voc deve ser o
proprietrio do arquivo, ou o super-usurio, para que possa utilizar
este comando.
Opes
Sada
-f
Esta opo no reporta erros
-h
Se o arquivo for um link simblico, esta opo modifica o grupo
do link simblico. Sem esta opo, o grupo do arquivo referenciado
pelo link simblico modificado.
-R
Esta opo recursiva."chgrp" percorre o diretrio e os
subdiretrios, modificando o GID medida em que prossegue.

4 - chmod : Modifica as permisses de um arquivo ou diretrio.Voc


deve ser o proprietrio de um arquivo ou diretrio, ou ter acesso ao
root, para modificar as suas permisses.
Sintaxe : chmod permisses nome_do_arquivo
onde :
permisses - indica as permisses a serem modificadas;
nome

- indica o nome do arquivo ou diretrio cujas permisses

sero afetadas.

113

As permisses podem ser especificadas de vrias maneiras. Aqui


est uma das formas mais simples de realizarmos esta operao :
1- Use uma ou mais letras indicando os usurios envolvidos:
. u (para o usurio)
. g (para o grupo)
. o (para "outros")
. a (para todas as categorias acima)
2- Indique se as permisses sero adicionadas (+) ou removidas (-).
3- Use uma ou mais letras indicando as permisses envolvidas :
. r (para "read") (ler)
. w (para "write") (escrever)
. x (para "execute") (executar)
Exemplo : No exemplo a seguir, a permisso de escrita ("write")
adicionada ao diretrio "dir1" para usurios pertencentes ao mesmo
grupo. (Portanto, o argumento "permisses" g+w e o argumento
"nome" dir1).
$ ls -l dir1
drwxr-xr-x 3 dir1

1024 Feb 10 11:15 dir1

$ chmod g+w dir1


$ ls -l dir1
drwxrwxr-x 3 dir1

1024 Feb 10 11:17 dir1

$
Como voc pde verificar, o hfen (-) no conjunto de caracteres
para grupo foi modificado para "w" como resultado deste comando.

114

Quando voc cria um novo arquivo ou diretrio, o sistema


associa permisses automaticamente. Geralmente, a configurao
"default" (assumida) para os novos arquivos :
-rw-r--r-e para novos diretrios :
drwxr-xr-x
5 - chown : Modifica o proprietrio de um arquivo ou diretrio.
Sintaxe: chown [-fhR] (proprietrio) (nome-doarquivo)
O argumento "proprietrio" especifica o novo proprietrio do
arquivo.Este

argumento

deve

ser

ou

um

nmero

decimal

especificando o userid do usurio ou um "login name" encontrado no


arquivo "/etc/passwd".
Somente o proprietrio do arquivo ( ou o super-usurio ) pode
modificar o proprietrio deste arquivo.
Opces
Sada
-f
Esta opo no reporta erros.
-h
Se o arquivo for um link simblico, esta opo modifica o
proprietrio do link simblico. Sem esta opo, o proprietrio do
arquivo referenciado pelo link simblico modificado.
-R

115

Esta opo recursiva."chown" percorre o diretrio e os


subdiretrios,

modificando

as propriedades

medida

em que

prossegue.
6 - cp : Copia arquivos para um outro arquivo ou diretrio.
Sintaxe: cp (arquivo1) (arquivo2) ... (arquivo n) (destino)
onde (arquivo1) at (arquivo n) so os arquivos a serem
copiados, e (destino) o arquivo ou o diretrio para onde os arquivos
sero copiados. O(s) arquivo(s) fonte(s) e o (destino) no podem ter o
mesmo nome. Se o arquivo-destino no existe, "cp" criar um arquivo
com o nome especificado em . Se o arquivo-destino j existia antes e
no for um diretrio, "cp" escrever o novo contedo por cima do
antigo.
Exemplo : $ cp -r temp temp1
Este comando copia todos os arquivos e subdiretrios dentro do
diretrio temp para um novo diretrio temp1. Esta uma cpia
recursiva, como designado pela opco -r. Se voc tentar copiar um
diretrio sem utilizar esta opco, voc ver uma
mensagem de erro.
7 - du : Exibe o espao ocupado de um diretrio e de todos os seus
subdiretrios, em blocos de 512 bytes; isto , unidades de 512 bytes
ou caracteres..
"du" mostra a utilizao do disco em cada subdiretrio.

116

8 - date : Exibe a data configurada no sistema.

O comando "date",a nvel de usurio, exibe na tela a data


configurada no sistema. Ele pode se usado com opes mostram a
data local ou data universal GMT - Greenwich Mean Time. A
configurao dos dados deste comando s podem se realizadas pelo
super-usurio.
Para exibir a data local, basta executar "date". Caso queira a
data GMT utilize a opo "-u".
Veja:
%date
Wed Jan 8 12:05:57 EDT 1997
Aqui a data exibida em 6 campos que representam o dia da semana
abreviado, o ms do ano abreviado, o dia do ms, a hora disposta em
horas/minutos/segundos, a zona horria e o ano.
9 - file : Exibe o tipo de um arquivo.
Alguns arquivos, tais como arquivos binrios e executveis, no
podem ser visualizados na tela. O comando "file" pode ser til se voc
no tem certeza sobre o tipo do arquivo. O uso do comando permitir
a visualizao do tipo do arquivo.
Exemplo :

$file copyfile
copyfile: ascii text

117

10 - grep : Exibe todas as linhas, dos arquivos especificados, que


contm um certo padro.
O

comando

"grep"

exibe

todas

as linhas, dos

arquivos

nomeados, que so iguais ao padro especificado.


Sintaxe:
grep [padro] <arquivo_1> <arquivo_2> ...
<arquivo_n>
onde [padro] uma expresso regular, e "arquivo_1" at
"arquivo_n" so os arquivos nos quais a procura ser feita.
Por exemplo, o comando
grep trabalho /trabalho/unix/grep.html
mostrar todas as linhas no arquivo /trabalho/unix/grep.html que
contm o padro "trabalho".
11 - ls : Exibe informaes sobre arquivos nomeados e diretrios,
usado para visualizar o contedo de um diretrio.
Sintaxe: ls (diretrio)[opes]
Quando executado sem qualquer parmetro, mostra o contedo do
diretrio corrente.Assim, a linha de comando:
$ ls
mostra o contedo do diretrio corrente naquele momento.Como na
maioria dos comandos UNIX, "ls" pode ser controlado por opes que
comeam com um hfen (-). Tenha sempre o cuidado de deixar um

118

espao antes do hfen. Uma opo bastante til -a (que vem do


ingls 'all', tudo), e ir mostrar detalhes que voc nunca imaginou
sobre o seu diretrio. Por exemplo:
$ cd
$ ls -a
Digitando estes comandos em sequncia, o sistema vai para o
seu home directory, atravs do comando cd e em seguida mostra o
contedo do mesmo, que ser exibido da seguinte forma:
.

.bacshrc

.fvwmrc

..

.emacs

.xinitrc

.bash_history

.exrc

Aqui, o ponto simples refere-se ao diretrio corrente, e o ponto


duplo refere-se ao diretrio imediatamente acima dele. Mas o que so
estes outros arquivos que se iniciam com um ponto? Eles so
chamados arquivos escondidos. A colocao do ponto na frente de
seus nomes os impede de serem mostrados durante um comando "ls"
normal.
Outra opo bastante utilizada -l (que vem do ingls "long").
Ela mosta informao extra sobre os arquivos . Assim, o comando:
$ ls -l
mostra, alm do contedo do diretrio, todas os detalhes sobre cada
arquivo pertencente a ele. Por exemplo, suponha que voc tenha
executado este comando e na tela apareceu algo assim:

-rw-r--r-- 1 xyz users 2321 Mar 15 1994

119

Fontmap

-rw-r--r-- 1 xyz users 14567 Feb 3 1995


drwxr-xr-x

2 xyz

users 1024

file003

Apr 23 1995

Programs
drwxr-xr-x 3 xyz users 1024

Apr 30 1995

bitmaps

Lendo da esquerda para direita, este primeiro caracter indica se


o arquivo um diretrio ( d ) ou um arquivo comum (-). Em seguida
temos as permisses de acesso ao arquivo, sendo as trs primeiras
referentes ao proprietrio, as seguintes ao grupo e, por ltimo, aos
demais usurios.
A segunda coluna desta listagem mostra o nmero de links que
o arquivo possui.
A terceira coluna mostra o proprietrio do referido arquivo,
neste caso, o usurio cujo user name "xyz".
Na prxima coluna mostrado o grupo ao qual pertence o
proprietrio do arquivo ( no exemplo temos o grupo users). Na quinta
coluna temos o tamanho do arquivo em bytes.
Por fim, na sexta e stima colunas, temos a data da ltima
modificao feita no arquivo e o nome do mesmo, respectivamente.
Vale lembrar que vrias opes podem ser usadas de forma composta.
Por exemplo, podemos executar o comando:
$ ls -la
e este mostrar todos os detalhes que as opes -l e -a dispem.
12 - man : Exibe uma pgina do manual interno do Unix, para um
dado comando ou ou recurso (isto , qualquer utilitrio do sistema
que no seja comando, por exemplo, uma funo de biblioteca).
como um "help" interno ao sistema.
Sintaxe :

120

man <comando>
onde "comando" e o nome do comando ou recurso que se
deseja obter a ajuda.
13 - mkdir : Cria usado para a criao de novos diretrios.
Sintaxe : mkdir (diretrio 1) (diretrio 2) ...(diretrio
n)
onde (diretrio 1) at (diretrio n) so os diretrios a serem criados.
As entradas padro em um diretrio (por exemplo, os arquivos ".",
para o prprio diretrio, e ".." para o diretrio pai ) so criadas
automaticamente. A criao de um diretrio requer permisso de
escrita no diretrio pai.
O identificador de proprietrio (owner id), e o identificador de
grupo (group id) dos novos diretrios so configurados para os
identificadores de proprietrio e de grupo do usurio efetivo,
respectivamente.
* Opes:
-m (mode)
Esta opo permite aos usurios especificar o modo a ser usado para
os novos diretrios.
-p
Com esta opo, mkdir cria o nome do diretrio atravs da criao de
todos os diretrios-pai no existentes primeiro.

121

Exemplo:
mkdir -p diretrio 1/diretrio 2/diretrio 3
cria a estrutura de subdiretrios "diretrio 1/diretrio 2/diretrio 3".

14 - more : Exibe o contedo de arquivos nomeados, fazendo pausas


a cada tela cheia.
Ele exibe um arquivo, uma tela cheia de cada vez, fazendo
normalmente uma pausa aps cada tela cheia, quando exibe "--More-" na parte de baixo da tela.
Ao teclar-se (Enter), more ir exibir uma linha a mais; ele exibe
outra tela cheia ao teclar-se o caracter "espao". O caracter "b" faz
com que "more" exiba a tela anterior. O caracter "q" provoca a parada
de execuo do comando more.
Sintaxe: more (arquivo 1) (arquivo 2) ... (arquivo n)
onde (arquivo 1) at (arquivo n) so os arquivos a serem exibidos.
Pode-se

procurar

por

uma

palavra

(ou

uma

cadeia

de

caracteres) em um arquivo. Para isso, pressione o caracter "/", digite a


palavra (ou a cadeia de caracteres),e tecle (Enter).
* Opes:
-c

122

Limpa a tela antes de exibir o contedo do arquivo. Esta opo


ignorada se o terminal no tem a abilidade para limpar at o final de
uma linha.

15 - mv : Move arquivos para um outro arquivo ou diretrio.


O comando "mv" utilizado para mover arquivo(s) para outro
arquivo ou diretrio. Este comando faz o equivalente a uma cpia
seguida pela deleo do arquivo original. Pode ser usado para
renomear arquivos.
Sintaxe: mv (arquivo 1) (arquivo 2) ... (arquivo n)
(destino)
onde (arquivo 1) at (arquivo n) so os arquivos a serem movidos, e
(destino) o arquivo ou o diretrio para onde os arquivos sero
movidos.
Se (destino) no for um diretrio, somente um arquivo dever
ser especificado como fonte. Se for um diretrio, mais de um arquivo
poder ser especificado.
Se (destino) no existir, "mv" criar um arquivo com o nome
especificado. Se (destino) existir e no for um diretrio, seu contedo
ser apagado e o novo contedo ser escrito no lugar do antigo. Se
(destino) for um diretrio, o(s) arquivo(s) ser(o) movido(s) para este
diretrio.
Os arquivos "fonte" e "destino" no precisam compartilhar o
mesmo diretrio pai.
*Opes:
-i

123

Com esta opo, "mv" ir perguntar a voc se permitido escrever por


cima do contedo de um arquivo destino existente.
Uma resposta "y" (yes = sim) significa que a operao poder ser
executada. Qualquer outra resposta impedir que "mv" escreva por
cima do contedo de um arquivo j existente.
Exemplo: $ pwd
/home/usurio1/temp
$ ls
teste
$ mv teste ../temp1
$ ls ../temp1
teste

Neste exemplo, o diretrio teste foi movido de temp para temp1 com o
comando "mv".
16 - passwd : Modifica a senha pessoal.

Para garantir a segurana do sistema, o sistema Unix requer o


uso de uma senha. Se voc achar que algum utilizou sua conta sem
permisso, mude sua senha imediatamente.
Algumas dicas para a escolha da senha:

Escolha uma senha que voc possa lembrar sem a necessidade de


escrever.

A sua password deve ter ao menos seis caracteres e deve conter


pelo menos um nmero.

124

No use seu prprio nome ou suas iniciais.

No use nomes de animais ou objetos relacionados a seu interesse.

Se voc tem mais de uma conta, no use a mesma senha para


todas as contas.
O comando "passwd" utilizado para modificar a senha pessoal.
A seguir esto os passos que acontecem quando "passwd"

utilizado:
$ passwd
Changing password for (nome-do-usurio)
Old password:
New password:
Retype new password:
$
-> Quando o sistema pedir "Old Password:" , digite sua senha atual.
Se nenhuma senha estiver associada a sua conta, o sistema ir
omitir este prompt. Note que o sistema no mostra a senha que voc
digita na tela. Isto previne que outros usurios descubram sua senha.
-> Quando o sistema pedir "New Password:", digite sua nova senha.
-> O ltimo prompt , "Retype new password", pede que voc digite a
nova senha novamente.
Se voc no digitar a senha da mesma maneira em que digitou
da primeira vez, o sistema se recusa a modificar a senha e exibe a
mensagem "Sorry".

125

17 - pwd : Exibe o diretrio corrente.


Este comando utilizado para exibir o seu diretrio corrente no
sistema de arquivos.
18 - rm :

Este comando utilizado para apagar arquivos.

importante lembrar que quando os arquivos so apagados, no sistema


Unix, impossvel recuper-los.
Sintaxe: rm (arquivo 1) (arquivo 2) ... (arquivo n)
onde (arquivo 1) at (arquivo n) so os arquivos a serem apagados.
Se um arquivo no possuir permisso de escrita e a sadapadro for um terminal, todo o conjunto de permisses do arquivo
ser exibido, seguido por um ponto de interrogao. um pedido de
confirmao. Se a resposta comear com "y" ("yes" = sim), o arquivo
ser apagado, caso contrrio ele ser mantido no sistema.
Quando voc apaga um arquivo com o comando "rm", voc est
apagando somente um link (ligao ou entrada) para um arquivo. Um
arquivo somente ser apagado verdadeiramente do sistema quando ele
no possuir mais nenhuma ligao para ele, isto , nenhum link
referenciando-o. Geralmente, arquivos possuem somente um link,
portanto o uso do comando "rm" ir apagar o(s) arquivo(s). No entanto,
se um arquivo possuir muitos links, o uso de "rm" ir apagar somente
uma ligao; neste caso, para apagar o arquivo, necessrio que voc
apague todos os links para este arquivo.
Voc pode verificar o nmero de links que um arquivo possui
utilizando o comando ls, com a opo "-l".
*Opes:

126

-f
Remove todos os arquivos (mesmo se estiverem com proteo de
escrita) em um diretrio sem pedir confirmao do usurio.
-i
Esta opo pedir uma confirmao do usurio antes de apagar
o(s) arquivo(s) especificado(s).
-r
Opco recursiva para remover um diretrio e todo o seu
contedo, incluindo quaisquer subdiretrios e seus arquivos.
-> CUIDADO : diretrios e seus contedos removidos com o comando
"rm -r" no podem ser recuperados.
19 - rmdir : utilizado para apaga diretrios vazios.
Sintaxe: rmdir (diretrio 1) (diretrio 2) ... (diretrio
n)
onde (diretrio 1) at (diretrio n) so os diretrios a serem apagados.
O comando "rmdir" se recusa a apagar um diretrio inexistente,
exibindo a mensagem:
rmdir : (nome-do-diretrio) : No such file or
directory

127

Quando usar "rmdir", lembre-se que o seu diretrio de trabalho


corrente no pode estar contido no(s) diretrio(s) a ser(em) apagado(s).
Se voc tentar remover seu prprio diretrio corrente, ser exibida a
seguinte mensagem:
rmdir : . : Operation not permited
Se o diretrio o qual voc deseja remover no estiver vazio,
utilize o comando "cd" para acessar os arquivos dentro do diretrio, e
ento remova estes arquivos utilizando o comando "rm".
Opes:
-p
Permite aos usurios remover o diretrio e seu diretrio pai, o
qual se torna vazio. Uma mensagem ser exibida na sada padro
informando se o caminho ("path") inteiro foi removido ou se parte do
caminho persiste por algum motivo.
-> CUIDADO : diretrios removidos com o comando "rmdir" no
podem ser recuperados!
20 - touch : atualiza o ltimo tempo de acesso e/ou modificaco de
um arquivo.
Um arquivo vazio ser criado se o nome especificado ainda no
existir.
Sintaxe: touch [opces] [mmddhhMM[yy]] nome-doarquivo

128

sendo :

mm ms
dd dia
hh hora
MM minuto
yy ano (ltimos dois dgitos)

Se no for especificada nenhuma data, a data atual ser utilizada.


*Opces:
-a
Atualiza somente o tempo de acesso respectivo.
-m
Atualiza somente o tempo de modificaco.
-c
Previne a criaco de um arquivo se ele no existia anteriormente.
-> As opes default so : -am.

Fonte: Universidade Federal de Gois, Instituto de Informtica, homepage do

Projeto de Apoio ao Usurio Internet

(http://www.dei.ufg.br/~apoio/unix.html)

129

B - Perguntas Freqentemente Colocadas na Linux-BR (FAQ)

Original

de

Maio

1996,

Ian

Jackson

<ijackson@gnu.ai.mit.edu>
Verso em portugus mantida por Alfredo K. Kojima
<kojima@inf.ufrgs.br>

Esta a lista de perguntas freqentemente colocadas (FAQ) sobre


Linux, o Unix gratuito para 386/486/586 [Veja P1.1 para mais
informaes].

Leia-a

juntamente

com

os

documentos

HOWTO,

disponveis em:
ftp.funet.fi (128.214.6.100) : /pub/OS/Linux/doc/HOWTO
tsx-11.mit.edu (18.172.1.2) : /pub/linux/docs/HOWTO
sunsite.unc.edu (152.2.22.81) : /pub/Linux/docs/HOWTO
e em outros espelhos -- veja P2.5 "Onde pego material sobre Linux por
FTP?".
Veja P2.1 "Onde eu pego os HOWTOs e outra documentao?" para
uma lista dos HOWTOs e outras informaes. O INFO-SHEET e
META-FAQ, disponveis no mesmo lugar, tambm indicam outras
fontes de informaes sobre Linux.
Este

documento

QUESTIONS

baseia-se

WITH

no

LINUX

ANSWERS,

FREQUENTLY
mantida

ASKED

por

Ian

Jackson<ijackson@gnu.ai.mit.edu>. Alm da traduo completa


do documento original em ingls, ela contm perguntas freqentes na
lista de discusses Linux-BR [Veja Quais so as listas de discusses
sobre Linux?
130

para obter informaes sobre como assinar a lista]


Os

documentos

sunsite.unc.edu

do
em

Linux

Documentation

/pub/Linux/docs/LDP.

Project
Esses

esto

em

documentos

(existem mais em preparao) so indispensveis para os novatos ou


para serem usados como referncia.
Por favor, d uma olhada nesses documentos e neste FAQ,
especialmente em P12.1 "Vocs ainda no responderam minha
pergunta!", antes de enviar sua pergunta a um grupo de discusso ou
Linux-BR.
Veja P13.2 Formatos em que este FAQ est disponvel para detalhes
de onde pegar as versoes em PostScript, HTML (WWW) e ASCII puro
deste documento, bem como a verso original em ingls em diversos
formatos.
Uma nova verso deste documento ser criada mensalmente. Se esta
cpia tiver mais de um ms, ela pode estar desatualizada.

131

ndice
Seo 1. Introduo e Informaes Gerais
P1.1 O que Linux?
P1.2. Que programas ele suporta?
P1.3. Ele roda no meu micro? Que hardware ele suporta?
P1.4. Para quais plataformas ele foi portado?
P1.5. De quanto espao em disco ele precisa?
P1.6. O Linux est em Domnio Pblico? Tem Copyright?
Seo 2. Material na Rede e outros Recursos
P2.1. Onde pego os HOWTOs e outra documentao?
P2.2. O que tem na World Wide Web sobre Linux?
P2.3. Que grupos de discusso (newsgroups) sobre Linux existem?
P2.4. Como instalo o Linux?
P2.5. Onde eu pego material sobre Linux por FTP?
P2.6. Eu no tenho acesso a FTP. Como eu consigo o Linux?
P2.7. Eu nao tenho acesso Usenet. Onde consigo informaes?
P2.8. Quais so as listas de discusso sobre Linux?
P2.9. Os newsgroups so arquivados em algum lugar? (inclui
Linux-BR)
Seo 3. Compatibilidade com outros sistemas operacionais
P3.1. Eu posso instalar o Linux junto com o DOS? OS/2?
386BSD? Win95?
P3.2. Como eu acesso arquivos na minha partio DOS ou em
disquetes?

132

P3.3. Eu posso usar drives do DOS com Stacker/Double


Space/etc?
P3.4. Eu posso acessar parties HPFS do OS/2 no Linux?
P3.5. Eu posso acessar sistemas de arquivos como o FFS do BSD,
UFS do SysV, Mac, Amiga etc?
P3.6. Eu posso rodar programas do Microsoft Windows no Linux?
P3.7. Como eu posso iniciar o Linux a partir do Boot Manager do
OS/2?
P3.8. Como eu fao para usar a mesma partio de swap no
Windows e no
Linux?
Seo 4. O tratamento do Linux para sistemas de arquivos, discos e
unidades
de disco.
P4.1. Como posso fazer o Linux funcionar com meu disco "grande"
de mais
de 1024 cilindros lgicos?
P4.2. Como posso reaver (undelete) arquivos apagados?
P4.3. H algum desfragmentador para ext2fs e outros sistemas de
arquivos?
P4.4. Como posso formatar um disquete e criar nele um sistema de
arquivos?
P4.5. Estou recebendo mensagens estranhas sobre "inodes",
"blocks", e
coisas desse gnero.
P4.6. Minha rea de paginao (swap) no funciona.
P4.7. Como posso desinstalar o LILO e voltar a reiniciar meu
sistema
pelo DOS?
P4.8. Porque no posso usar fdformat, exceto como root?

133

P4.9. H algum produto como Stacker ou Doublespace para Linux?


P4.10. Minhas parties ext2fs so verificadas toda vez que reinicio
o
sistema.
P4.11. Meu sistema de arquivos principal est "read-only"!
P4.12. Tem um arquivo /proc/kcore enorme! Posso apag-lo?
P4.13. Minha controladora AHA1542C no funciona com Linux.
Seo 5. Portando, compilando e obtendo programas
P5.1. Como porto XXX para Linux?
P5.2. O que ld.so e onde posso obt-lo?
P5.3. Algum j portou / compilou / escreveu XXX para Linux?
P5.4. possvel usar um programa ou compilador compilado para
um 486
em um 386?
P5.5. O que gcc -O6 faz?
P5.6. Onde esto <linux/*.h> e <asm/*.h>?
P5.7. Eu recebo erros quando tento compilar o kernel
P5.8. Como fao uma bilioteca dinmica?
P5.9. Meus executveis so (muito) grandes.
P5.10. O Linux suporta "threads" ou processos "lightweight"?
P5.11. Onde posso obter `lint' para Linux?
Seo 6. Solues para problemas comuns diversos.
P6.1. free no funciona.
P6.2. Meu relgio est totalmente errado.
P6.3. Scripts setuid parecem no funcionar.
P6.4. A memria livre mostrada pelo free fica diminuindo.
P6.5. Linux fica muito lento quando coloco mais memria.
P6.6. Alguns programas (xdm) no me deixam "logar".

134

P6.7. Alguns programas me deixar "logar" sem senha.


P6.8. Minha mquina roda muito lentamente quando eu executo
GCC / X /
...
P6.9. Eu s consigo me "logar" como root.
P6.10. Minha tela est cheia de caracteres esquisitos ao invs de
letras.
P6.11. Houve um desastre em meu sistema e no consigo me logar
para
consert-lo.
P6.12. Descobri uma falha de segurana enorme no rm!
P6.13. lpr e/ou lpd no esto funcionando.
P6.14. A hora dos arquivos de parties msdos esto gravados
incorretamente.
P6.15. Como fao o LILO carregar o arquivo vmlinux?
Seo 7. Como fao isso ou aquilo...?
P7.1. Como fao para rolar a tela para cima em modo texto?
P7.2. Como troco de console virtual? Como os habilito?
P7.3. Como configuro o timezone (fuso-horrio)?
P7.4. Que verso de Linux e que mquina estou usando?
P7.5. Como posso habilitar ou desabilitar core dumps?
P7.6. Como atualizo/recompilo meu kernel?
P7.7. Posso ter mais de 3 portas seriais compartilhando
interrupes?
P7.8. Como fao um disquete inicializvel?
P7.9. Como remapeio meu teclado para portugus, francs etc.
P7.10. Como fao para deixar o NUM LOCK ligado por default?
P7.11. Como posso ter mais de 128Mb de swap?
P7.12* Como fao para obter acentuao no Linux?

135

Seo 8. Perguntas respondidas e informaes diversas.


P8.1. Como programo XYZ no Linux?
P8.2. O que esse tal de ELF?
P8.3. O que so arquivos .gz? E .tgz? E ...?
P8.4. O que significa VFS?
P8.5. O que um BogoMip?
P8.6. O que o Linux Journal e onde posso consegui-lo?
P8.7. Quantas pessoas usam Linux?
P8.8. Como se pronuncia Linux?
Seo 9. Mensagens de erro freqentemente encontradas
P9.1. "Unknown terminal type linux" e semelhantes
P9.2. Durante a "linkagem" aparecem Undefined symbol _mcount
P9.3. lp1 on fire
P9.4. INET: Warning: old style ioctl(IP_SET_DEV) called!
P9.5. ld: unrecognized option '-m486'
P9.6. GCC diz Internal compiler error
P9.7. make diz Error 139
P9.8. shell-init: permission denied quando me logo.
P9.9. No utmp entry. You must exec ... quando me logo.
P9.10. Warning - bdflush not running
P9.11. Warning: obsolete routing request made.
P9.12. EXT2-fs: warning: mounting unchecked filesystem
P9.13. EXT2-fs warning: maximal count reached
P9.14. EXT2-fs warning: checktime reached
P9.15. df diz Cannot read table of mounted filesystems
P9.16. fdisk says Partition X has different physical /logical...
P9.17. fdisk: Partition 1 does not start on cylinder boundary
P9.18. fdisk diz partition n has an odd number of sectors
P9.19. mtools diz cannot initialise drive XYZ

136

P9.20. Memory tight no comeo da inicializao


P9.21. You don't exist. Go away.
Seo 10. O Sistema de Janelas X
P10.1. O Linux suporta X Windows?
P10.2. Onde posso conseguir um XF86Config para meu sistema?
P10.3. Logins pelo "xterm" aparecem de forma estranha em who,
finger
etc.
P10.4. No consigo fazer o X Windows funcionar
P10.5* O X tem suporte para TGUI9xxx / Diamond Stealth / ... ?
Seo 11. Perguntas aplicveis a programas muito antigos
P11.1. Emacs s faz core dump
P11.2. fdisk diz cannot use nnn sectors of this partition
P11.3. GCC algumas vezes usa quantidades enormes de memria
virtual e
quebra
P11.4. Meu teclado fica todo esquisito quando troco de VCs.
Seo 12. Como conseguir mais ajuda
P12.1. Vocs ainda no respondero minha pergunta.
P12.2. O que colocar em pedido de ajuda.
P12.3. Quero mandar e-mail a algum sobre meu problema.
Seo 13. Informaes administrativas e outros
P13.1. Comentrios so bem-vindos
P13.2. Formatos em que este FAQ disponvel

137

P13.3. Autores e agradecimentos


P13.4. Copyright e outras informaes legais

Questo 1.1. O que Linux?


Linux um clone do Unix escrito por Linus Torvalds com a assistncia
de um
grupo de hackers espalhados pela Internet. Pretende-se que ele
conforme com
o padro POSIX.
Ele faz tudo o que voc esperaria de um Unix moderno e completo,
incluindo
multi-tarefa real, memria virtual, shared libraries (bibliotecas de
"linkagem" dinmica), carregamento por demanda, redes TCP/IP, alem
de nomes
de arquivos com at 255 caracteres, proteo entre processos (crash
protection), suporte a UNICODE etc.
Ele roda principalmente em PCs baseados em 386/486/586, usando
recursos de
hardware da famlia de processadores 386 (segmentos TSS etc.) para
implementar essas funes. Ports (verses modificadas para outro
sistema)
para outras arquiteturas esto a caminho. [ P1.4. Para quais
plataformas ele
foi portado?].
Veja o INFO-SHEET do Linux [ P2.1. Onde pego os HOWTOs e outra
documentao?
] para mais detalhes.

138

O kernel (ncleo do sistema operacional) distribudo sob os termos


do GNU
General Public License - veja P1.6. O Linux est em Domnio Pblico?
Tem
Copyright? para mais detalhes.
Questo 1.2. Que programas ele suporta?
O Linux tem GCC, Emacs, X-Windows, todos os utilitrios Unix
padro, TCP/IP
(inclusive SLIP e PPP) e centenas de outros programas compiladas ou
portadas
para ele por diversas pessoas.
Existe um emulador de DOS (veja em tsx-11.mit.edu em
/pub/linux/ALPHA/dosemu) que pode rodar o DOS e algumas (no
todos)
aplicaes DOS. H rumores de que agora ele pode rodar o Windows
3.1 em modo
avanado.
Um emulador iBCS2 (Intel Binary Compatibility Standard) para
binrios ELF de
SVR4 e COFF de SVR3.2 est em um estgio consideravelmente
avanado de
desenvolvimento. Veja o arquivo /pub/linux/BETA/ibcs2/README
em
tsx-11.mit.edu.
trabalho no emulador para binrios do MS Windows [ P3.6. Eu posso
rodar

139

programas do Microsoft Windows no Linux? ] esta progredindo;


alternativamente, a equipe do emulador de DOS tem tido sucesso em
rodar o
prprio Windows dentro do dosemu - haver um anncio se e quando
ele
funcionar.
Para mais informaes leia o INFO-SHEET, que um dos HOWTOs
[ P2.1. Onde
pego os HOWTOs e outra documentao? ]. Veja tambm P5.1 Como
eu porto XXX
para o Linux?.
Algumas empresas tm software comercial disponvel, incluindo Motif.
Eles os
anunciam no grupo comp.os.linux.announce --- tente dar uma olhada
nos
repositrios de mensagens [ P2.9. Os newsgroups so arquivados em
algum
lugar?].
Questo 1.3. Ele roda no meu micro? Que hardware ele suporta?
Voc precisa de um 386, 486 ou 586, com pelo menos 2Mb de RAM e
um drive
para experiment-lo. Para fazer qualquer coisa til, mais RAM (4Mb
para
instalar a maioria das distribuies, e 8Mb altamente recomendado
para
rodar X) e um disco rgido so necessrios.
VESA local bus e PCI so ambos suportados.

140

Existem problemas com mquinas que usam MCA (barramento


proprietrio da
IBM), principalmente com o controlador de discos. H um prlanamento para
desenvolvedores para drives ESDI de PS/2 em invaders.dcrl.nd.edu
em
/pub/misc/linux. Alguns controladores SCSI tambm funcionam,
pelo que
entendo. Existe trabalho em andamento para criar uma verso
adaptada da
distribuio Slackware. Para maiores detalhes tente perguntar para
Arindam
Banerji <axb@defender.dcrl.nd.edu> .
Linux roda em Laptops baseados na famlia 386, com X na maioria.
Uma pgina
relevante http://www.cs.utexas.edu/users/kharker/linux-laptop/.
Para detalhes de exatamente quais PCs, placas de vdeo, controladores
de
disco etc. funcionam, leia o INFO-SHEET e o Hardware HOWTO
[ P2.1. Onde pego
os HOWTOs e outra documentao?].
Existe um port do Linux para 8086, conhecido como Embeddable
Linux Kernel
Subset (ELKS). Este um subconjunto de 16-bits do kernel do Linux,
que ir
ser usado principalmente em embeded systems{?}. Veja
http://www.linux.org.uk/Linux8086 para mais informaoes. Linux
jamais rodar

141

totalmente em um 8086 ou 286, pois ele requer recursos de


gerenciamento de
memria e de chaveamento de tarefas no encontrado nesses
processadores.
Verses recentes do Linux (1.3.35 e posteriores) suportam mquinas
multiprocessadas

(SMP),

apesar

dele

ainda

nao

estar

satisfatoriamente
estvel.
Questo 1.4. Para quais plataformas ele foi portado?
Um projeto para portar o Linux para sistemas baseados na famlia
68000, como Ataris e Amigas, est em andamento. Ele j tem
qualidade beta e tem um servidor X. H uma lista de discusso sobre
linux-680x0 [ P2.8. Quais so as listas de discusso sobre Linux? ] e
um

FAQ

Linux/68K

em

http://pfah.informatik.uni-

kl.de:8000/pers/jmayer/linux68k-faq e em
ftp://tsx-11.mit.edu/pub/linux/680x0/FAQ; h mais informaes em
http://www-users.informatik.rwth-aachen.de/~hn/linux68k.html. H
uma lista de discusses sobre o port do Atari - mande um mail para
majordomo@phil.uni-sb.de

com

corpo

da

mensagem

contendo

somente subscribe atarix - e uma rea de FTP em ftp.phil.uni-sb.de


em /pub/atari/linux.
Existia um projeto para portar o Linux para Macintoshes
baseados em 68000, mas sua rea de FTP desapareceu recentemente
e o projeto parece estar abandonado.
Existe um port para o PowerPC. At 7 de julho (95), ele estava
bastante precrio e no podia nem se recompilar, alm de s suportar
placas Motorola 1603. Trabalho no Motorola Ultra, PowerStack,
RS/6000 e mquinas NuBus continua. Se voc desejar contribuir ao
projeto assine a lista linux-ppc

142

[P2.8 Que listas de discusso existem?]. Existe um FAQ em


liber.stanford.edu
em /pub/linuxppc/linux-ppc-FAQ e em
http://liber.stanford.edu/linuxppc/linux-ppc-FAQ.html.
A Apple e OSF esto trabalhando em um port do Linux para o
PowerMac, baseado
no microkernel Mach da OSF. http://mklinux.apple.com/.
Existe um port para o DEC Alpha/AXP de 64bits. Veja
http://www.azstarnet.com/~ axplinux/. Tambm h uma lista de
discusses em
vger.rutgers.edu.
Ralf Baechle est trabalhando em um port para MIPS, inicialmente
para o
R4600 em mquinas Deskstation Tyne. O Linux/MIPS FAQ est
disponvel em WWW
e

na

rea

do

port

para

MIPS

em

ftp.waldorf-gmbh.de

em

/pub/linux/mips Tambm
h um canal no servidor de mail do Linux Activists e uma lista linuxmips [
P2.8. Quais so as listas de discusso sobre Linux? ]. Pessoas
interessadas
podem mandar suas perguntas e ofertas de ajuda para linux@waldorfgmbh.de.
Atualmente existem dois ports do Linux para a famlia ARM de
processadores
em andamento; um deles o ARM3, usado no Acorn A5000, e inclui
drivers de

143

I/O para o 82710/11, e o outro para o ARM610, usado no Acorn


Risc PC. O
port para o Risc PC est atualmente em estgio mdio, necessitando
da
reescrita do cdigo de gerenciamento de memria. O port para o
A5000 est em
besta-teste restrito e poder ser lanado em breve. Para informaes
mais
recentes cheque comp.sys.acorn.misc, olhe veja no WWW em
http://whirligig.ecs.soton.ac.uk/~rmk92/armlinux.html;

se

voc

quiser
voluntarear contate Martin Ebourn mje@soton.ac.uk
David Miller est trabalhando em um port para o Sparc. Ainda est
num
estgio bastante primrio; pessoas dispostas a dedicar bastante tempo
e com
acesso a Sparcs para teste devem entrar em contato com
davem@caip.rutgers.edu.
Nenhum dos ports acima poder rodar binrios do Linux/386.
O port Linux para a placa Aleph One 486 foi terminado e parece
estvel. Para
maiores detalhes: http://www.ph.kcl.ac.uk/~amb /linux.html
Questo 1.5. De quanto espao em disco ele precisa?
10Mb para uma instalao mnima, o suficiente para experimenta-lo e
pouca
coisa mais.

144

Voc pode espremer uma instalao mais completa com X Windows


em 80Mb.
Instalar quase todo o Debian 0.93R6 ocupa uns 500Mb, incluindo
algum espao
para arquivos de usurios e reas para spool.
Questo 1.6. O Linux est em Domnio Pblico? Tem Copyright?
O copyright do kernel do Linux pertence a Linus Torvalds. Ele o
colocou sob
o GNU General Public License, o que basicamente significa que voce
pode
copi-lo livremente, modifica-lo e distribu-lo, mas voc no pode
impor
quaisquer restries na sua distribuio e ainda deve deixar o cdigo
fonte
disponvel. Isto no o mesmo que domnio pblico (leia o FAQ sobre
copyright que est disponvel em rtfm.mit.edu em
/pub/usenet/news.answers/law/Copyright-FAQ, para detalhes).
Detalhes completos esto no arquivo COPYING nos fontes do kernel
do Linux
(provavelmente em /usr/src/linux em seu sistema).
As licensas dos utilitrios e programas que vm com as instalaes
so
variadas; muito desse cdigo do projeto GNU da Free Software
Foundation, e
tambm est sobre o GPL.
Note que discusses sobre o mrito ou no do GPL devem ser
postadas a

145

gnu.misc.discuss e no para os grupos comp.os.linux.


Questo 2.1. Onde pego os HOWTOs e outra documentao?
D uma olhada nesses lugares, e em outros que os espelham:
ftp.funet.fi (128.214.6.100) : /pub/OS/Linux/doc/HOWTO
tsx-11.mit.edu (18.172.1.2) : /pub/linux/docs/HOWTO
sunsite.unc.edu (152.2.22.81) : /pub/Linux/docs/HOWTO
No Brasil:
linux.if.usp.br (143.107.251.4) :
/pub/mirror/sunsite.unc.edu/pub/Linux/docs/HOWTO
farofa.ime.usp.br (143.107.251.4) : /pub/linux/docs/HOWTO
Para uma lista completa de stios de FTP veja P2.5. Onde eu pego
material
sobre Linux por FTP?
Se voc no tem acesso a FTP tente usar servidores de FTP-por-mail
em
ftpmail@decwrl.dec.com, ftpmail@doc.ic.ac.uk ou
ftp-mailer@informatik.tu-muenchen.de.
Uma

lista

completa

de

HOWTOs

est

disponvel

no

HOWTO.INDEX no
diretrio docs/HOWTO dos stions de FTP, ou na Web em
http://sunsite.unc.edu/mdw/HOWTO/HOWTO-INDEX.html
Esta uma lista (provavelmente incompleta) dos HOWTOs:
Linux INFO-SHEET
Linux META-FAQ

146

arquivo

Bootdisk HOWTO
Busmouse HOWTO
CDROM HOWTO
Commercial HOWTO
Cyrillic HOWTO
DOSEMU HOWTO
Danish HOWTO
Distribution HOWTO
ELF HOWTO
Ethernet HOWTO
Firewall HOWTO
Ftape HOWTO
German HOWTO
HAM HOWTO
Hardware HOWTO
Installation HOWTO
JE HOWTO
Kernel HOWTO
MGR HOWTO
Electronic Mail HOWTO
NET-2 HOWTO
NIS HOWTO
News HOWTO
PCI-HOWTO
PCMCIA HOWTO
Portuguese HOWTO
PPP HOWTO
Printing HOWTO
SCSI HOWTO
SCSI Programming HOWTO
Serial HOWTO
Sound HOWTO

147

Term HOWTO
Tips HOWTO
UPS HOWTO
UUCP HOWTO
XFree86 HOWTO
Outros documentos desses esto sempre em preparao. Se no
encontrar a
informao que voc precisa em um destes documentos procure em
outros
diretrios prximos nos stios de FTP. Alm destes HOWTOs ainda
existem os
mini HOWTOs, no diretrio docs/HOWTO/mini.
O arquivo WRITING contm informaes sobre como escrever um novo
HOWTO.
Os HOWTOs so coordenados por Greg Hankins gregh@cc.gatech.edu.
Os

livros

produzidos

pelo

Linux Documentation

Project

esto

disponveis em
/pub/Linux/docs/LDP em sunsite.unc.edu. Por favor leia-os se voc
for novo
em Unix e Linux. Sobretudo o Installation and Getting Started Guide.
Os
livros produzidos at o momento so:
The Linux Documentation Project manifesto
Installation and Getting Started Guide
The Kernel Hacker's Guide
Network Administration Guide
Linux System Administrator's Guide

148

Questo 2.2. O que tem na World Wide Web sobre Linux?


Matt Welsh mantm Home Page do Linux Documentation Project, em
http://sunsite.unc.edu/mdw/linux.html.
Esta pgina se refere a todos os FAQs e HOWTOs, tanto em formato
HTML quanto
em outros.
A pgina da Linux-BR est em http://www.br.freebsd.org/linuxbr/index.html.
Ela mantida pelo Eduardo Maan e possui alm de links para outras
pginas,
um repositrio de todas as mensagens vinculadas lista e verses
atualizadas deste documento.
Questo 2.3. Que grupos de discusso (newsgroups) sobre Linux
existem?
Existem 10 newsgroups Usenet internacionais devotadas ao Linux.
comp.os.linux.announce um grupo de anncios moderado; voc
deve l-lo se
pretende usar Linux. Submisses a este grupo devem ser mandadas
para
linux-announce@news.ornl.gov.
comp.os.linux.answers Contm todos os FAQs, HOWTOs e outros
documentos
importantes. Assine este grupo tambm.

149

Os

outros

grupos

na

hierarquia

comp.os.linux.*

tambm

so

recomendados -algums problemas comuns no respondidos neste FAQ podem estar


nos
newsgroups.

Esses

grupos

so

comp.os.linux.setup,

comp.os.linux.hardware,
comp.os.linux.networking,

comp.os.linux.x,

comp.os.linux.development.apps,
comp.os.linux.development.system, comp.os.linux.advocacy e
comp.os.linux.misc.
Lembre-se que como o Linux um clone do Unix, a maioria do
material em
comp.unix.* e comp.windows.x.* sera relevante. Excetuando-se de
algumas
consideraes de hardware e algum assunto obscuro ou muito tcnico
e de
baixo-nvel, voc achar que esses grupos so o lugar certo para
comear.
Por favor leia Vocs ainda no responderam minha pergunta! antes
de
postar, e certifique-se de postar no grupo certo -- veja `Welcome to the
comp.os.linux.* hierarchy' que postado a cada duas semanas em
comp.os.linux.announce, comp.os.linux.answers e outros grupos.
Crossposting (mandar a mesma mensagem para mais de um grupo de
discusso) em
grupos comp.os.linux.* diferentes raramente uma boa idia.
Podem haver grupos de discusso locais sua instituio ou rea -

150

verifique-os antes.
Os grupos comp.os.linux.development, comp.os.linux.admin and
comp.os.linux.help foram substitudos em uma reorganizao de
grupos
recente. No os use mais.
Veja tambm P2.7. Eu nao tenho acesso Usenet. Onde consigo
informaes?
P2.8. Quais so as listas de discusso sobre Linux?
Questo 2.4. Como instalo o Linux?
Existem vrias "releases" de Linux pr-empacotadas disponveis,
incluindo
Debian, Red Hat e Slackware. Cada um contm o software que voc
precisa para
rodar Linux, prontos para instalar e usar. Detalhes de quais softwares
esto
includos e como instal-los varia de verso a verso.
O Mini-linux e' um pacote pequeno (4 disquetes) -- mas que inclui
TCP/IP,
X-Windows e outras coisas -- apropriado para pessoas que querem
experimentar
o Linux sem reparticionar seus discos rigidos.
Voce deve ler o Installation HOWTO para mais detalhes em como
instalar o
pacote Slackware. O Red Hat e Debian so mais recentes, tm menos
bugs e vm

151

com esquemas de instalao sofisticados, mas no so to populares


quanto o
Slackware e no contm uma gama de software to larga.
Todos esses pacotes esto disponveis por FTP annimo em vrios
stios de
FTP P2.5. Onde eu pego material sobre Linux por FTP? Tambm existe
um garnde
nmero de outros pacotes distribudos menos globalmente, mas
atendem melhor
a necessidades locais e nacionais (como suporte melhor
internacionalizao).
Questo 2.5. Onde eu pego material sobre Linux por FTP?
Os trs stios principais de Linux so:
ftp.funet.fi (Finland, 128.214.6.100) : /pub/OS/Linux
sunsite.unc.edu (US, 152.2.22.81) : /pub/Linux
tsx-11.mit.edu (US, 18.172.1.2) : /pub/linux
O

melhor

lugar

para

se

pegar

verses

novas

de

kernels

ftp.cs.helsinki.fi
em /pub/Software/Linux/Kernel; Linus Torvalds disponibiliza as
verses mais
recentes do kernel nesse lugar.
A distribuio Debian disponvel em ftp.debian.org e a distribuio
Red
Hat em ftp.redhat.com

152

O contedo destes stios so espelhados (copiados, em geral


diariamente) por
outros stios. Por favor use um perto de voc -- ser mais rpido para
voc
e nais fcil para a rede.
src.doc.ic.ac.uk : /packages/Linux (UK)
sunacm.swan.ac.uk : /pub/Linux (UK)
ftp.ibp.fr : /pub/linux (Frana)
ftp.cc.gatech.edu : /pub/linux (EUA - sudeste: Suranet)
wuarchive.wustl.edu : /systems/linux (EUA)
uiarchive.cso.uiuc.edu : /pub/systems/linux (EUA)
ftp.cdrom.com : /pub/linux (EUA)
ftp.informatik.tu-muenchen.de : /pub/comp/os/linux (Alemanha)
ftp.ibr.cs.tu-bs.de : /pub/os/linux (Alemanha)
ftp.dfv.rwth-aachen.de : /pub/linux (Alemanha)
ftp.informatik.rwth-aachen.de : /pub/Linux (Alemanha)
bond.edu.au : /pub/OS/Linux (Austrlia)
ftp.cc.monash.edu.au : /pub/linux (Austrlia)
ftp.dstc.edu.au : /pub/Linux (Austrlia: Queensland)
ftp.sun.ac.za : /pub/linux (frica do Sul)
ftp.inf.utfsm.cl : /pub/Linux (Chile)
ftp.zel.fer.hr : /pub/Linux (Crocia)
linux.if.usp.br : /pub/mirror/sunsite.unc.edu/Linux alm de outros
em
/pub/mirror com a distribuicao Debian.
lcmi.ufsc.br

/pub/diversos/linux

(Brasil

Santa

Catarina)

Slackware
cesar.unicamp.br : /pub3/linux (Brasil : So Paulo) Slackware
ftp.ime.usp.br : /pub/linux (Brasil : So Paulo) Slackware
ftp.ufpr.br : /pub/Linux/ (Brasil : Paran) Slackware

153

Nem todos eles espelham todo contedo dos stios "originais", e alguns
tm
material que os stios "originais" no tm.
Questo 2.6 Eu no tenho acesso a FTP. Como eu consigo o Linux?
O jeito mais fcil talvez achar um amigo com acesso a FTP. Se existir
um
Grupo de Usurios de Linux perto de voc, eles podero ajud-lo.
Se voc tiver uma conexo de email razoavelmente boa, voc poderia
tentar os
servidores

de

FTP-por-mail

em

ftpmail@decwrl.dec.com,

ftpmail@doc.ic .ac.uk
ou ftp-mailer@informatik.tu-muenchen.de.
Linux tambm disponvel por correio tradicional em disquetes, CDROM e
fita. Installation HOWTO e o arquivo /pub/Linux/docs/distributions
em
sunsite.unc.edu, contm informaoes sobre essas distribuies.
Vrias empresas que comercializam CDs do Linux tm pginas na
WWW. Eles tm
um preo razovel e despacham para outros pases. Veja em
http://www.ix.de/ix/linux/bookmarks/companies.html para alguns
links de
algumas dessas empresas.
Voc

ainda

pode

tentar

lista

healyzh@holonet.net que

154

de

BBSs

de

Zane

Healy

regularmente

postado

(dia

1o

15

de

cada

ms)

em

comp.os.linux.announce e
ocasionalmente na Fidonet e RIME UNIX echoes.
Questo 2.7. Eu

no tenho acesso Usenet. Onde

consigo

informaes?
Um resumo do comp.of.linux.announce pode ser obtido mandando email contendo
subscribe

para

linux-announce-REQUEST@news-digests.mit.edu.

Recomenda-se que
voc assine esta lista, pois ela contm informaes importantes e
documentao sobre Linux.
Lembre-se de adicionar -request depois do nome do newsgroup
(linux-anounce-request) para requisitar a sua assinatura. Se -request
for
omitido, a sua mensagem ser postada no grupo de discusses.
Questo 2.8 Quais so as listas de discusso sobre Linux?
Os desenvolvedores do Linux usam principalmente o servidor
Majordomo em
majordomo@vger.rutgers.edu . Mande uma mensagem com lists no
corpo da
mensagem para receber uma lista das listas l; adicione uma linha
com help
para receber o arquivo de ajuda do Majordomo, com instrues para
inscrio
e desinscrio.

155

Note que a maioria dessas listas so usadas pelos desenvolvedores do


Linux
para falarem sobre assuntos tcnicos e desenvolvimento futuro. Elas
no
devem ser usadas para perguntas de usurio novatos.
Existe a lista linux-newbie, onde `nenhuma pergunta idiota demais';
infelizmente parece que poucos usurios experientes a lem. O trfego

bastante baixo.
No Brasil voc pode assinar a Linux-BR mandando um e-mail
contendo subscribe
linux-br <seu nome> para listproc@iqm.unicamp.br.
Questo 2.9 Os newsgroups so arquivados em algum lugar? (inclui
Linux-BR)
sunsite.unc.edu contm mensagens do comp.os.linux.announce, em
sunsite.unc.edu em /pub/Linux/docs/linux-announce.archive . Eles
so
espelhados de /usenet em src.doc.ic.ac.uk.
Existe um repositrio de fcil acesso do comp.os.linux.announce na
World
Wide

Web

http://www.leo.org/archiv/linux/archiv/ann_index.html.
O repositrio das mensagens da Linux-BR est em
http://www.br.freebsd.org/linux-br/LINUX-BRmails.html

156

em

Questo 3.1. Eu posso instalar o Linux junto com o DOS? OS/2?


386BSD? Win95?
Sim. O Linux usa o esquema padro de particionamento do PC, assim
ele pode
compartilhar o seu disco com outros sistemas operacionais. No
entanto,
muitos desses outros sistemas operacionais so mal feitos: o FDISK e
FORMAT
do DOS podem destruir dados em uma partio Linux, porque s
vezes eles usam
incorretamente os dados do setor de boot da partio, ao invs da
tabela de
partio do disco. Para previnir isso, zere o comeo da partio nova
no
Linux, antes de usar o MSDOS ou outra coisa para format-la. Digite:
dd if=/dev/zero of=/dev/hdXY bs=512 count=1
onde hdXY a partio relevante (por ex.: hda1 para a primeira
partio do
primeiro disco IDE).
O Linux pode ler e escrever arquivos em parties FAT do DOS e OS/2
e em
disquetes usando o suporte interno do kernel ou o mtools. Existe uma
verso
alpha de suporte do kernel para o sistema VFAT usado pelo Widows
95 e
Windows NT; ele est disponvel em
/pub/multimedia/linux/vfat/vfat-0.3.0.tgz.
kernel

157

Ele

foi

integrado

ao

padro na verso 1.3.60.


Veja P1.2. Que programas ele suporta? para detalhes e status dos
emuladores
de DOS, MS Windows e programas para System V.
Veja tambm P3.5. Eu posso acessar sistemas de arquivos como o
FFS do BSD,
UFS do SysV, Mac, Amiga etc?
ftp://sunsite.unc.edu/pub/Linux/docs/howto/mini/Win95+Win+Lin
ux,
ftp://sunsite.unc.edu/pub/Linux/docs/howto/mini/Linux+DOS+Win
95+OS2 e
ftp://sunsite.unc.edu/pub/Linux/docs/howto/mini/Linux+OS2+DO
S contem
instrucoes

especificas

sobre

instalacao

de

varios

sistemas

operacionais em
uma mesma maquina.
Questo 3.2. Como eu acesso arquivos na minha partio DOS ou em
disquetes?
Use o filesystem DOS, i.e. digite, por exemplo:
mkdir /dos
mount

-t

msdos

-o

conv=text,umask=022,uid=100,gid=100

/dev/hda3 /dos
Se for um disquete, no esquea de umountar ele antes de tir-lo do
drive,
ou dados sero perdidos.

158

Voc pode controlar a aparncia dos arquivos no filesystem no Linux


quanto
converso automtica de fim de linha CR/LF para CR, permisses e
propriedade
usando conv=text/binary/auto, umask=nnn, uid=nnn e gid=nnn. Se
voc montar
seu filesystem DOS colocando-o no /etc/fstab voc pode configurar as
opes
trocando o defaults pelas suas opes separadas por vrgulas.
Voc tambm pode usar o `mtools', disponvel tanto em forma binria
e em
cdigo fonte nos stios FTP -- veja P2.5. Onde eu pego material sobre
Linux
por FTP? Algumas distribuies j vm com ela.
Existe um "patch" para kernel (conhecido como fd-patches), que
permitem o
uso de disquetes com nmeros de trilhas e/ou setores diferentes do
padro;
esse patch includo na srie 1.1 de kernels em teste alpha.
Questo 3.3. Eu posso usar drives do DOS com Stacker/Double
Space/etc?
No de maneira facil. Voc pode acess-los pelo emulador de DOS
[P1.2 Que
programas ele suporta?], mas para acess-los no Linux ou pelo mtools
mais
difcil. Existe um mdulo para o kernel do Linux que pode ler volumes
comprimidos, mas no pode escrever neles. Procure o pacote ths na

159

sunsite.unc.edu em /pub/Linux/system/Filesystems
Questo 3.4. Eu posso acessar parties HPFS do OS/2 no Linux?
Sim, mas no momento apenas para leitura. Para us-lo o kernel deve
ser
compilado

com

suporte

para

ele

habilitado

[P7.6.

Como

atualizo/recompilo
meu kernel? ]. A s mont-lo com o comando mount, por ex.:
mkdir /hpfs
mount -t hpfs /dev/hda5 /hpfs

Questo 3.5. Eu posso acessar sistemas de arquivos como o FFS do


BSD, UFS do
SysV, Mac, Amiga etc?
H um filesystem Amiga precrio e em alpha-teste em
/pub/Linux/patches/amigaffs.tar.Z. Mais informaes no arquivo
affs-readme
do arquivo tar.
Kernels recentes contm suporte para o UFS no System V, Coherent e
Xenix.
Existe suporte do kernel em alpha, por enquanto somente para
leitura, para o
UFS do 4.2BSD, em sunsite.unc.edu em /pub/Linux/ALPHA/ufs.
Ainda no existe suporte para o resto.

160

Questo 3.6. Eu posso rodar programas do Microsoft Windows no


Linux?
Ainda no. Existe um projeto, o WINE, para construir um emulador de
MS
Windows para o Linux, mas ainda no est disponvel para usurios.
No
pergunte sobre ele, a no ser que voc ache que pode contribuir;
procure os
relatrios de status em comp.emulators.ms-windows.wine.
No momento, se voc precisar usar algum programa do MS Windows,
o melhor
provavelmente rodar o Windows direto sob o DOS. LILO (o bootloader
do Linux)
possui um menu para escolher o sistema a entrar --- veja a
documentao dele
para mais detalhes.

Questo 3.7. Como eu posso inicializar o Linux pelo Boot Manager do


OS/2?
1. Crie uma partio usando o FDISK do OS/2. (No serve o fdisk do
Linux).
2. Formate a partio no OS/2, em FAT ou HPFS. Isto para fazer o
OS/2
saber que a partio est formatada. (Este passo no necessrio
no
OS/2 "warp" 3.0).
3. Adicione a partio no Boot Manager.

161

4. Inicie o Linux, e crie um sistema de arquivos na partio usando


mkfs
-t ext2 ou mke2fs. A essa altura voc pode usar o fdisk do Linux
para
trocar o cdigo de tipo da partio para 83 (Linux Native) -- isso
pode
ajudar alguns scripts de instalao automtica a achar a partio
certa
para usar.
5. Instale o Linux na partio.
6. Instale o LILO na partio -- no o faa no master boot record do
disco
rgido. Isso instala o LILO como um bootloader secundrio na
partio
do Linux, para carregar o kernel especificado no arquivo de
configurao do LILO. Para isso coloque:
boot = /dev/hda2
(onde /dev/hda2 a partio de onde voc quer "bootar") no seu
arquivo
/etc/lilo/config ou /etc/lilo.conf
7. Certifique-se de que a partio do Boot Manager esteja marcada
como
ativa, para poder usar o Boot Manager para escolher o que
carregar.

Questo 3.8. Como eu fao para usar a mesma partio de swap no


Windows e no
Linux?

162

Veja o Mini-HOWTO de H. Peter Anvin hpa@yggdrasil.com sobre esse


assunto na
sunsite.unc.edu em /pub/Linux/docs/HOWTO/mini/Swap-Space.

Questo 4.1. Como posso fazer o Linux funcionar com meu disco
"grande" de
mais de 1024 cilindros lgicos?
Se seu disco for uma unidade IDE ou EIDE voc deve ler o arquivo
/usr/src/linux/drivers/block/README.ide (parte do cdigo-fonte do
"kernel"
do Linux). Esse README contm vrias sugestes teis sobre
unidades de disco
IDE.
Discos SCSI so acessados atravs de nmeros lineares de blocos; o
BIOS cria
alguma simulao de cilindros/cabeas/setores "lgicos" para atender
ao DOS.
DOS, em geral, no estar em condies de acessar parties que se
estendam
alm dos 1024 cilindros lgicos, e ir tornar a iniciao de um "kernel"
Linux a partir dessas parties no mnimo problemtica.
Voc ainda poder usar essas parties para Linux ou quaisquer
outros
sistemas

operacionais

que

acessem

diretamente.

163

controladora

de

disco

Recomendo criar no mnimo uma partio Linux contida inteiramente


dentro do
limite de 1024 cilindros lgicos e iniciar o sistema dessa partio; as
outras parties estaro "OK".

Questo 4.2. Como posso reaver (undelete) arquivos apagados?


Em geral, isso muito dificil de conseguir em sistemas Unix em razo
da sua
natureza

multitarefa.

Funes

de

recuperao

esto

em

desenvolvimento, mas
no espere grandes resultados.
H uns poucos pacotes disponveis que funcionam oferecendo novos
comandos
para apagamento (e em alguns casos cpia) que movem os arquivos
"apagados"
para

um

diretrio

"lixeira";

esses

arquivos

podem

ser

entao

recuperados, at
que sejam apagados automaticamente por processos em segundo
plano..
Outra alternativa a busca direta na prpria unidade de disco que
contm o
sistema de arquivos em questo. Esse um trabalho difcil, e voc
precisa
estar como root para isso.
Questo 4.3. H algum defragmentador para ext2fs e outros sistemas
de
arquivos?

164

Sim. H um defragmentador de sistemas de arquivos Linux para ext2,


minix e
antigos sistemas de arquivos ext disponvel em sunsite.unc.edu como
system/Filesystems/defrag-0.6.tar.gz.
Usurios

do

sistema

ext2

provavelmente

no

precisaro

de

defragmentao pois
ext2 contm cdigo extra para manter a fragmentao reduzida,
mesmo em
sistemas de arquivos muito cheios.
Questo 4.4. Como posso formatar um disquete e criar nele um
sistema de
arquivos?
Para um disquete de 3,5 polegadas:
fdformat /dev/fd0H1140
mkfs -t ext2 -m 0 /dev/fd0H1140 1440
Para um disquete de 5,25 polegadas use fd0H1200 e 1200,
respectivamente.
Para a unidade de disco 'B' use fd1 em lugar de fd0. Detalhes
completos do
que se pode fazer com unidades de disco flexvel podem ser
encontrados na
Lista de Dispositivos Linux (Linux Device List) [ P2.1. Onde pego os
HOWTOs
e

outra

documentao?

].

Voc

diretamente em

165

pode

precisar

'rodar' mk2efs

lugar de mkfs -t ext2. A opo -m 0 diz a mkfs.ext2 para no reservar


espao
no disco para o superusurio -- habitualmente os 10% finais so
reservados
para ele. O primeiro comando formata o disquete em baixo nivel (ou
fisicamente); o segundo cria um sistema de arquivos vazio nele.
Depois de
fazer isso voc pode montar o disquete como um disco rgido e
simplesmente
usar cp e mv em arquivos etc.
Questo 4.5. Estou recebendo mensagens estranhas sobre "inodes",
"blocks", e
coisas desse gnero.
Voc provavelmente tem um sistema de arquivos corrompido, talvez
provocado
por no se preparar o Linux da maneira adequada antes de desligar o
computador ou reinici-lo. Voc precisa de um programa 'shutdown'
recente
para fazer isso -- por exemplo, aquele includo no pacote 'util-linux',
disponvel em sunsite e tsx-11.
Se voc tiver sorte, o programa fsck (ou e2fsck ou xfsck como for
adequado,
se voce no possui o 'front-end' automtico para fsck) ter condies
de
reparar seu sistema de arquivos; caso contrrio, o sistema de arquivos
estar destrudo, e voc ter de reinici-lo com mkfs (ou mke2fs,
mkxfs
etc.) e restaur-lo do 'backup'.

166

Note bem: no tente verificar um sistema que est montado como


sendo de
leitura e escrita -- isso inclui a partio da raiz -- se voc no v
VFS: mounted root ... read-only
no momento da iniciao do sistema.
Questo 4.6. Minha rea de paginao (swap) no funciona.
Quando

voc

partida

ao

sistema

(ou

ativa

paginao

manualmente) voc
deve ver
Adding Swap: NNNNk swap-space
Se voc no v qualquer mensagem, provavelmente est faltando
swapon -av (o
comando para ativar a paginao) em seu arquivo /etc/rc.local ou
/etc/rc.d/*
(os 'scripts' de iniciao do sistema) ou voc esqueceu de colocar a
entrada
correta em /etc/fstab:
/dev/hda2

none

swap

por exemplo.
Se voc v
Unable to find swap-space signature

167

sw

voc esqueceu de usar mkswap. Veja a pgina do man(ual) para


detalhes;
mkswap funciona de maneira anloga ao mkfs.
Verifique

documento

Ins

tallation

HOWTO

para

instrues

detalhadas para se
configurar uma rea de paginao (swap).
Questo 4.7. Como posso desinstalar LILO e voltar a reiniciar meu
sistema
pelo DOS?
Se voc est utilizando DOS (MS-DOS 5.0 ou posterior, ou OS/2),
digite FDISK
/MBR (o que no est documentado). Isso vai restaurar um 'Master
Boot
Record' padro do MS-DOS. Se voc tem DR-DOS 6.0, acione FDISK
da maneira
habitual e selecione a opo 'Re-Write Master Boot Record'.
Se voc no tem DOS 5 ou DR-DOS, vai precisar do setor de 'boot'
original
que LILO salvou quando voc o instalou pela primeira vez. Voc
guardou
aquele arquivo, no ? E provavelmente chamado boot.0301 ou algo
assim.
Digite
dd if=boot.0301 of=/dev/hda bs=512 count=1
(ou sda se voc est utilizando um disco SCSI). Isso pode tambm
destruir

168

sua tabela de parties, portanto, cuidado! Se voc est desesperado,


pode
usar
dd if=/dev/zero of=/dev/hda bs=512 count=1
o que ir apagar seu setor de 'boot' e sua tabela de parties
completamente; voc pode ento reformatar o disco usando o
formatador de sua
preferncia; entretanto, isso tornar o contedo dos seus discos
inacessvel
-- voc vai perder tudo, a menos que seja um 'expert'.
Note que o MBR do DOS inicia qualquer (nica!) partio que esteja
marcada
como ativa: voc pode precisar usar fdisk para ligar e desligar as
marcas de
ativa das parties convenientemente.
Questo 4.8. Porque no posso usar fdformat, exceto como root?
A chamada de sistema necessria para formatar um disco flexvel
somente pode
ser acionada pelo usurio root, quaisquer que sejam as permisses de
/dev/fd0*. Se voc quiser que qualquer usurio pssa formatar um
disco
flexvel, tente conseguir o programa fdformat2; ele contorna os
problemas
por ser 'setuid' para root.
Questo 4.9 H algum produto como Stacker ou Doublespace para
Linux?

169

No presente, nenhum dos sistemas de arquivos Linux pode fazer


compresso.
H um programa chamado Zlibc que permite a aplicaes existentes
ler
transparentemente arquivos comprimidos ('GNU-zipped') como se eles
no
estivessem comprimidos. Aps sua instalao, voc pode comprimir
arquivos
com gzip e os programas ainda podero encontr-los, sem necessidade
de
mudana nos mesmos. Procure em sunsite.unc.edu, diretorio <
code>/pub/Linux/libs. O autor Alain.Knaff@imag.fr.
H um controlador de dispositivos blocados (block device driver) com
recursos de compresso, que pode prover compresso 'on the fly',
independente do sistema de arquivos, no kernel. chamado 'DouBle'.
H uma
distribuio (em forma apenas de cdigo-fonte) em sunsite.unc.edu,
diretrio
/pub/Linux/kernel/patches/diskdrives;

autor

Jean-Marc

Verbavatz
jmv@receptor.mgh.harvard.edu. Note que, devido ao fato de comprimir
'inodes'
(informao administrativa) e diretrios, alm de contedo de
arquivos,
qualquer problema de corrupo pode ser grave.
H

tambm

um

pacote

disponvel

Compressed

170

chamado

tcx

('Transparent

Executables')

que

permite

manter

executveis

pouco

usados

comprimidos e
descomprimi-los temporariamente quando voc precisar deles. Voce
encontrar
tcx nos sites FTP Linux [ P2.5. Onde eu pego material sobre Linux por
FTP?];
ele tambm foi anunciado em comp.os.linux.announce. Nota: este
programa no
o mesmo que gzexe, que uma implementao inferior do mesmo
conceito.
Questo 4.10. Minhas parties ext2fs so verificadas toda vez que
reinicio
o sistema.
Veja P9.12 'EXT2-fs: warning: mounting unchecked filesystem'
Questo 4.11 Meu sistema de arquivos raiz est "read-only"!
Remonte-o. Se /etc/fstab estiver correto voc pode simplesmente fazer
mount -n -o remount /
Se /etc/fstab est errado voc deve fornecer o nome do dispositivo e
possivelmente o tipo, e.g.:
mount -n -o remount -t ext2 /dev/hda2 /.
Para compreender porque seu sistema ficou nesse estado, veja P9.12.
'EXT2-fs: warning: mounting unchecked filesystem'.
Questo 4.12. Tem um arquivo /proc/kcore enorme! Posso apag-lo?

171

Nenhum dos arquivos em /proc esto realmente l -- eles so todos


arquivos
fictcios, criados pelo kernel, para dar a voc informaes sobre o
sistema,
e no consomem nenhum espao em disco.
/proc/kcore como um 'apelido' para a memria em seu computador;
seu
tamanho igual quantidade de RAM que ele possui, e se voc pedir
para
l-lo como um arquivo, o kernel executa leituras da memria.
Questo 4.13. Minha controladora AHA1542C no funciona com
Linux.
A opo para permitir discos com mais de 1024 cilindros somente
requerida
como uma alternativa para uma deficincia do DOS e deve ser
*desligada* sob
Linux. Para antigos kernels Linux voc precisa desligar a maioria das
opes
do 'BIOS avanado' -- todas menos a opo de procurar pelo
barramento (bus)
por dispositivos iniciveis.
Questo 5.1. Como porto XXX para Linux?
Em geral, programas Unix precisam de poucas modificaes para
serem
portados. Simplesmente siga as instrues de instalao. Se voc no
souber

172

e nem souber como encontrar as respostas para algumas das


perguntas feitas
pelo procedimento de instalao, voc pode tentar adivinhar, mas isso
tende
a produzir programas defeituosos. Neste caso, melhor voc pedir
para
alguma outra pessoas fazer a portagem.
Se voc tiver um programa para sistemas similares ao BSD, tente usar
-I/usr/include/bsd e -lbsd nos lugares apropriados.
Questo 5.2. O que ld.so e onde posso obt-lo?
ld.so um carregador de bibliotecas dinmicas. Cada binrio usando
essas
bibliotecas costumava ter cerca de 3K de cdigo de iniciliazao que
procurara e carregara essas bibliotecas. Agora, esse cdigo foi
colocado em
uma biblioteca dinmica especial, /lib/ld.so, que pode ser usado por
todos
os binrios, gastando assim menos espao em disco e facilitando
atualizaes.
Ele pode ser obtido de tsx-11.mit.edu em /pub/linux/packages/GCC
e seus
espelhos. A ltima verso, no momento da escrita deste,
ld.so.1.7.11.tar.gz.
/lib/ld-linux.so.1 a mesma coisa para ELF e vem no mesmo pacote
do
carregador a.out.

173

Questo 5.3. Algum ja portou / compilou / escreveu XXX para


Linux?
Primeiro, veja o Linux Software Map (LSM) --- ele est no diretrio
docs em
sunsite.unc.edu e outros sites de FTP. Um mecanismo de procura
disponvel
por WWW em http://www.boutell.com/lsm/.
Verifique os sites FTP (veja P2.5 Onde eu pego material sobre Linux
por
FTP?') antes --- procure por palavras apropriadas nos arquivos find-ls
ou
INDEX. Cheque o Linux Projects Map (LPM), em ftp.ix.de em
/pub/Linux/docs/Projects-Map.gz.
Se voc no encontrar nada, voc pode fazer download dos fontes e
compil-los voc mesmo [P5.1. Como porto XXX para Linux?] ou se o
pacote for
muito grande e necessitar de algumas modificaes mande uma
mensagem para o
grupo comp.os.linux.development.apps.
Se voc compilar um programa grande, por favor faa upload dele
para um ou
mais sites FTP e envie uma mensagem para comp.os.linux.announce
(submeta sua
mensagem para linux-announce@news.ornl.gov).
Se voc estiver procurando por um programa tipo aplicativo provvel
que
algum j tenha escrito uma verso gratuita. Tente ler o FAQ em

174

comp.sources.wanted para instrues de como achar fontes.


Voc tambm pode ler o Projects-FAQ, disponvel em
/pub/Linux/docs/faqs/Projects-FAQ em sunsite.unc.edu.
Questo 5.4. possvel usar um programa ou compilador compilado
para um 486
em um 386?
Sim, a menos que seja o kernel.
A opo -m486 do GCC, que usado para compilar binrios para
mquinas 486,
meramente faz algumas certas otimizaes. Isso produz binrios
levemente
maiores que rodam um pouco mais rpido em um 486. Porm eles
ainda funcionam
perfeitamente em um 386, apesar de uma pequena queda em sua
performance.
Todavia, apartir da verso 1.3.35, o kernel usar instrues
especficos de
486 em Pentium, se configurado para tais mquinas, impossibilitando
a
utilizao deles em 386s.
O GCC pode ser configurado para 386 ou 486; a nica diferena que
configurando-o para um 386, faz com que -m386 seja default e
configurando-o
para um 486, faz com que -m486 seja o default. Em qualquer caso,
essa opo
pode ser mudada em cada compilao ou editando

175

/usr/lib/gcc-lib/i*-linux/n.n.n/specs.
Existe uma verso alpha do GCC que sabe fazer otimizaes para 586,
mas ele
ainda no confivel, especialmente se forem pedidas muitas
otimizaes. O
GCC para Pentium pode ser encontrado em tsx-11.mit.edu em
/pub/linux/ALPHA/pentium-gcc. Recomendo usar o GCC normal
para 486; diz-se
que usando-se a opo -m386 produz cdigo melhor para o Pentium,
ou pelo
menos um pouco menor.
Questo 5.5. O que gcc -O6 faz?
Atualmente o mesmo que -O2 (GCC 2.5) ou -O3 (GCC 2.6, GCC 2.7);
qualquer
nmero maior que aqueles, no momento faz a mesma coisa. Os
Makefiles the
kernels mais recentes usam -O2, voc provavelmente deveria fazer o
mesmo.
Questo 5.6. Onde esto <linux/*.h> e <asm/*.h>?
Estes esto nos diretrios /usr/include/linux e /usr/include/asm.
Porm eles devem ser links simblicos para os fontes de seu kernel em
/usr/src/linuc e no diretrios reais.
Se voc no tiver os fontes do kernel faa download deles.

176

Ento use rm para remover quaisquer arquivos desnecessrios e ln


para criar
os links:
rm -rf /usr/include/linux /usr/include/asm
ln -sf /usr/src/linux/include/linux /usr/include/linux
ln -sf /usr/src/linux/include/asm /usr/include/asm
Hoje em dia /usr/src/linux/include/asm um link simblico para
um deretrio
asm-<arch> especfico para cada arquitetura - make symlinks criar
os links
simblicos. Voc tambm poder precisar fazer make config em uma
rvore de
fontes

do

kernel

recm

"desempacotada"

para

criar

<linux/autoconf.h>.
Questo 5.7. Eu recebo erros quando tento compilar o kernel
Certifique-se que /usr/include/linux e /usr/include/asm no so
realmente
diretrios e sim links simblicos para /usr/src/linux/include/linux e
/usr/src/linux/include/asm respectivamente.
Se necessrio, apague-os usando rm e ento use ln -s para criar os
links
como mostrado em P5.6. Onde esto <linux/*.h> e <asm/*.h>?'.
Lembre-se de que ao aplicar um patch a um kernel voc deve usar a
opo -p0
ou -p1; caso contrrio o patch pode ser aplicado de forma incorreta.
Veja a

177

pgina de manual do patch para detalhes.


Se voc estiver aplicando patches a um kernel mais recente que
1.1.44, voc
notar

um

novo

diretrio

/usr/src/linux/include/asm-i386.

diretrio asm l
deve ser removido. O "target" symlinks do Makefile far eles serem
links
simblicos para asm-i386 e arch/i386/boot respectivamente. A forma
mais
fcil de certificar-se de que no ocorram problemas deste tipo fazer o
download de todo kernel, ao invs de aplicar um ptach.
ld: unrecognised option `-qmagic' significa que voc deve pegar um
linker
mais novo, de tsx-11.mit.edu em /pub/linux/packages/GCC, no
arquivo
binutils-2.6.0.2.bin.tar.gz.
Questo 5.8. Como fao uma bilioteca dinmica?
Para ELF,
gcc -fPIC -c *.c
gcc -shared -Wl,-soname,libsoo.so.1 -o libfoo.so.1.0 *.o
Para a.out, pegue tools-n.nn.tar.gz de tsx-11.mit.edu, em
/pub/linux/packages/GCC/src. Ele vem com documentao que lhe
dir o que
fazer. Note que bibliotecas dinmicas para a.out so bastante
complicados.

178

Questo 5.9. Meus executveis so (muito) grandes.


Com um compilador ELF (veja P8.2. O que esse tal de ELF?) a causa
mais
comum de executveis grandes a falta de um link para a
biblioteca .so
apropriada que voc est usando. Deve haver um link como libc.so
para cada
biblioteca como libc.so.5.2.18.
Com um compilador a.out (veja P8.2. O que esse tal de ELF?) a
causa mais
comum do problema o flag -g passado ao linkeditor (compilador). Ele
produz
um programa que "linkado" estaticamente (alm de informaes para
depurao no arquivo de sada), i.e. um que inclui uma cpia da
bilioteca C,
ao invs de usar uma copia ligada dinamicamente.
Outros fatores a serem investigados so -O e -O2 que habilitam
otimizao
(veja documentao do GCC) e -s (ou o comando strip) que remove
informaes
de smbolos do binrio resultante (tornando a depurao totalmente
impossvel).
Voc pode querer usar -N em executveis muito pequenos (menores
que 8K com a
opco -N), mas voc no deve us-lo a menos que esteja ciente das
implicaes sobre a performance, e definitivamente jamais em
daemons.

179

Questo 5.10. O Linux suporta "threads" ou processos "lightweight"?


Assim como o modelo de multiprocessamento do Unix envolvendo
processos
"heavyweight", que claro, so parte do kernel padro do Linux,
existem
vrias implementaes de processos "lightweight" ou "threads", a
maioria dos
quais so pacotes genricos para qualquer Unix.
Em sipb.mit.edu: /pub/pthread ou ftp.ibp.fr:
/pub/unix/threads/pthreads. A documentao no est no
pacote, mas est
disponvel em WWW em
http://www.mit.edu:8001/people/proven/home_page.html. libcs
mais novos
do Linux contm o fonte pthreads; o compilador GNU Ada em
sunsite.unc.edu em /pub/Linux/devel/lang/ada/gnat-3.01linux+elf.tar.gz
contm binrios feitos com esse cdigo fonte.
Em ftp.cs.washington.edu: /pub/qt-001.tar.Z est QuickThreads.
Mais
informaes podem ser encontrados no relatrio tcnico disponvel
no
mesmo local como /tr/1993/05/UW-CSE-93-05-06.PS.Z.
Em gummo.doc.ic.ac.uk: /rex est lwp, uma implementao bastante
simples.
Em ftp.cs.fsu.edu: /pub/PART, est uma implementao em Ada.
Esta
til principalmente por conter vrios papers em PostScript teis
para
se aprender mais sobre "threads". Ele no diretamente usvel sob

180

Linux.
Por favor contate os autores dos pacotes em questo para detalhes.
A verso 1,3,35 do kernel possui algum soporte para threads no
kernel, mas
esse cdigo no foi bem testado.
Questo 5.11. Onde posso obter `lint' para Linux?
Funcionalidade

aproximadamente

equivalente

est

includo

no

compilador C GNU
(gcc) que usado em sistemas Linux. Use a opo -Wall para habilitar
a
maioria dos avisos teis extra. Veja o manual do GCC para mais
detalhes
(tecle contro-h seguido de i no Emacs e selecione a entrada para
GCC).
Existe um programa gratuitamente disponvel chamado `lclint' que faz
quase a
mesma coisa que o lint tradicional. O anncio e o cdigo fonte esto
disponveis em larch.lcs.mit.edu em /pub/Larch/lclint; no World
Wide Web
veja em http://larch-www.lcs.mit.edu:8001/larch/lclint.html.
Questo 6.1. free no funciona.
No Linux 1.3.57 e posteriores o formato do /proc/meminfo foi mudado
para um
formato que a implementao atual do free no entende.

181

Pegue a verso mais recente em sunsite.unc.edu em


/pub/Linux/system/Status/ps/procps-0.99.tgz.
Questo 6.2. Meu relgio est totalmente errado
Existem dois relgios no seu computador. O relgio do hardware
(CMOS)
funciona mesmo quando o computador est deslidado e usado
quando o sistema
inicia e pelo DOS (se voc us-lo). A hora do sistema, mostrada e
mudada por
date, mantido pelo kernel enquanto o Linux est rodando.
Voc pode ver a hora do relgio CMOS, ou acerta-lo pelo relgio do
sistema
ou vice-versa, com o programa /sbin/clock - veja man 8 clock.
Existem vrios outros programas que podem corrigir os relgios para
tempo de
transferncia ou ajuste sistemtico pela rede. Alguns deles j podem
estar
instalados em seu sistema. Procure por adjtimex (faz ajustes), netdate
e
getdate (pegam a hora pela rede) ou xntp (daemon de rede completo e
preciso).
Questo 6.3. Scripts setuid parecem no funcionar
Est correto. Esta caracterstica foi deliberadamente desabilitada no
kernel
do Linux porque scripts setuid so quase sempre uma falha de
segurana. Se

182

voc quiser saber porqu, leia o FAQ do comp.unix.questions.


Questo 6.4. A memria livre mostrada pelo free fica diminuindo
O item `free' mostrado por free no inclui a memria usada como
cache de
buffer de disco - mostrado na coluna `buffers'. Se voc quiser saber
quanta
memria realmente est livre, some a quantidade mostrada em
`buffers' de
`free' - verses mais recentes de free mostram uma linha a mais com
essa
informao.
O cache de buffer de disco tende a crescer logo aps o Linux iniciar,
no
momento em que voc carrega programas usando mais arquivos, o
contedo deles
vai sendo guardado na cache. Aps algum tempo o cache ir se
estabilizar.
Questo 6.5. Linux fica muito lento quando coloco mais memria
Este um sintoma comum de uma falha do cache com a memria
adicional. O
problema exato depende da sua placa-me.
Algumas vezes voc precisa habilitar a cache de certas regies na
configurao do seu BIOS. Olhe no setup do CMOS e veja se existe
alguma
opo para usar a cache na nova rea de memria e que esteja
desabilitada.

183

Aparentemente isso bastante comum num 486.


Algumas vezes a RAM precisa estar em certos soquetes para que a
cache possa
atuar.
Algumas vezes voc precisa ligar jumpers para habilitar a cache.
Algumas placas-me no usam cache para toda RAM se voc tiver
mais RAM do
que os fabricantes esperavam. Geralmente uma cache de 256K
resolver o
problema.
Em caso de dvida consulte o manual de sua placa-me. Se voc
ainda no
conseguir conserta-la porque a documenta no adequada envie
uma mensagem
para comp.os.linux.hardware dando todos os detalhes - marca,
modelo etc.,
assim, outros usurios de Linux podero evit-la.
Questo 6.6. Alguns programas (xdm) no me deixam logar
Provavelmente voc est usando programas sem shadow password,
mas est
usando shadow passwords.
Se for o caso, voc precisa pegar ou compilar uma verso para shadow
password do(s) programa(s) em questo. Programas para shadow
password podem
ser encontrados em (dentre outros lugares):

184

tsx-11.mit.edu:/pub/linux/sources/usr.bin/shadow-*
L esto o cdigos fonte; voc provavelmente encontrar os binrios
em
.../linux/binaries/usr.bin.
Questo 6.7. Alguns programas me deixar logar sem senha.
Voc provavelmente tem o mesmo problema de P6.5. Linux fica muito
lento
quando coloco mais memria., com uma complicao a mais:
Se voc estiver usando shadow passwords voc deve colocar a letra x
ou um
asterisco no campo de senha do arquivo /etc/passwd para cada
conta, dessa
forma programas que no estejam cientes sobre shadow passwords
no pensaram
que a conta no possui senha.
Questo 6.8. Minha mquina roda muito lentamente quando eu
executo GCC / X /
...
Talvez voc esteja sem reas de swap habilitadas. Voc precisa
habilitar a
paginao (swapping) para que o Linux possa mover dados que os
programas no
estejam usando no momento para o disco, liberando memria para
outros

185

programas e dados. Se voc no fizer isso, o Linux precisar se


desfazer de
pores de programas na memria, fazendo com que o Linux tenha
que
recarrega-los posteriormente.
Veja o Installation HOWTO e o Installation and Getting Started Guide [
P2.1.
Onde pego os HOWTOs e outra documentao?] para detalhes de
como adicionar
uma partio de swap ou um arquivo de swap; veja tambm P4.6.
Minha rea de
paginao (swap) no funciona..
Alternativamente, voc pode estar com muito pouca memria real. Se
voc tem
menos memria que o usado por todos os programas que voc estiver
executando, o Linux ir usar o seu disco rgido e ficar terrivelmente
lento. A soluo neste caso no rodar tantos programas ao mesmo
tempo ou
comprar mais memria. Voc pode tambm liberar alguma memria
compilando e
usando um kernel com menos opes configuradas. Veja P7.6. Como
atualizo/recompilo meu kernel? .
Voc pode ver quanta memria e/ou swap voc est usando com o
comando free,
ou digitando
cat /proc/meminfo

186

Se seu kernel est configurado com um ramdisk, isso provavelmente


um
desperdcio de espao deixando o sistema lento. Use o LILO ou rdev
para
fazer o kernel no alocar a ramdisk (veja a documentao do LILO ou
digite
man rdev).
Questo 6.9. Eu s consigo me "logar" como root.
Provavelmente voc tem problemas de permisso, ou tem um arquivo
/etc/nologin.
No caso do ltimo, coloque rm -f /etc/nologin no seu /etc/rc.local ou
nos
scripts /etc/rc.d/*.
Caso contrrio verifique as permisses do seu shell, de quaisquer
nomes de
arquivos que apaream em mensagens de erro, e tambm da
hierarquia de
diretrios que contm esses arquivos, inclusive o diretrio raiz.

Questo 6.10. Minha tela est cheia de caracteres esquisitos ao invs


de
letras.
Voc possivelmente mandou algum dado binrio para a sua tela por
engano.
Digite echo '\033c' para consertar. Muitas distribuies de Linux
contm um

187

comando reset que faz isso.

Questo 6.11. Eu acabei com meu sistema e no consigo me logar


para
consert-lo.
Inicialize o sistema com um (ou um par de) disquete de emergncia,
como por
exemplo o par de discos boot e root do Slackware (no subdiretrio
install
dos espelhos do Slackware) ou com o disquete de boot de instalao
do MCC.
Existem dois pacotes de criao de disquetes de emergncia no
sunsite.unc.edu em /pub/Linux/system/Recovery. Ser melhor se
voc colocar o
seu prprio kernel neles, dessa forma voc no correr o risco de ficar
sem
algum controlador de dispositivo, sistema de arquivos etc.
De algum prompt de shell monte seu disco rgido com algo tipo
mount -t ext2 /dev/hda1 /mnt
Assim seu sistema de arquivos estar acessvel em /mnt e voc poder
consertar o problema. Lembre-se de desmontar (umount /mnt) o seu
disco
rgido antes de reiniciar (volte ao diretrio raiz antes ou ele dir que
est ocupado).

Questo 6.12. Descobri uma falha de segurana enorme no rm!

188

No, voc no descobriu. Obviamente voc novo no Unix e precisa


ler um bom
livro sobre ele para ver como as coisas funcionam. Pista: a habilidade
de
apagar arquivos no Unix depende de permisses de escrita no
diretrio onde
eles esto.

Questo 6.13. lpr e/ou lpd no esto funcionando.


Veja Printing HOWTO [ P2.1. Onde pego os HOWTOs e outra
documentao? ].

Questo 6.14. A hora de arquivos de parties msdos esto gravados


incorretamente.
Existe um erro no programa clock (geralmente encontrado em /sbin) ele
conta incorretamente um ajuste de fuso horrio, confundindo
segundos com
minutos ou coisa parecida. Pegue uma verso mais nova dele.

Questo 6.15. Como fao o LILO carregar o arquivo vmlinux?


Nos kernel verses 1.1.80 e posteriores a imagem comprimida do
kernel, que
o que voc deve dar ao LILO, foi movido para arch/i386/boot/zImage.
O

189

arquivo vmlinux no diretrio root um kernel descomprimido e voc


no deve
tentar carreg-lo.

Questo 7.1. Como fao para rolar a tela para cima em modo texto?
Com o mapeamento de teclado (keymap) americano padro, voc pode
usar a
tecla Shift com PageUp ou PageDown (Nota: as teclas cinzas, no as
brancas
do teclado numrico!). Para outros mapeamentos de teclado, veja
/usr/lib/keytables; voc pode remapear as teclas de rolamento para
cima
(scroll up) e para baixo (scroll down) para o que voc quiser --- por
exemplo, para remapea-los para as teclas existentes em um teclado AT
de 94
teclas.
No possvel aumentar a quantidade de tela guardada, porque a
forma que
implementado usa a memria de vdeo para guardar o texto rolado.
Porm, voc
pode aumentar a quantidade de texto guardado em cada console
virtual,
reduzindo a quantidade deles -- veja o <linux/tty.h>.

Questo 7.2. Como troco de console virtual? Como os habilito?


Em modo texto, pressione Left Alt-F1 a Alt-F12 para selecionar os
consoles

190

tty1 a tty12; Right Alt-F1 vai para tty13 e assim em diante. Para
mudar de
console no X windows pressione Ctrl-Alt-F1 etc; Alt-F5 ou algo assim
ir
lev-lo de volta ao X.
Se voc quer usar um console virtual para login normal, voc precisa
listar
quais consoles virtuais possuem prompt de login em /etc/inittab.
(Nota: o X
precisa de pelo menos um console virtual para rodar).
Kernels anteriores ao 1.1.59 possuem um limite no nmero de
consoles
configurado em tempo de compilao, cujo default 8. Veja
NR_CONSOLES em
linux/include/linux/tty.h. Kernels mais recentes alocam consoles
dinamicamente, at um mximo de 63.

Questo 7.3. Como configuro o timezone (fuso-horrio)?


V ao diretrio /usr/lib/zoneinfo; pegue o pacote de timezone se voc
no
possui

esse

diretrio.

Os

fontes

podem

ser

encontrados

no

sunsite.unc.edu em
/pub/Linux/system/Admin/timesrc-1.2.tar.gz.
Faa um link simblico com o nome localtime apontando para um dos
arquivos
nesse diretrio (ou subdiretrio), e um chamado posixrules apontando
para

191

localtime. Por exemplo:


ln -sf Brazil/West localtime
ln -sf localtime posixrules
Isso tomar feito imediatamente - experimente date.
No tente usar a varivel de ambiente TZ - deixe-a indefinida.
Voc tambm deve certificar-se de que o relgio de seu kernel Linux
est
ajustado para o horrio GMT correto - digite date -u e verifique se o
horrio universal correto mostrado.

Questo 7.4. Que verso de Linux e que mquina estou usando?


Digite:
uname -a

Questo 7.5. Como posso habilitar ou desabilitar core dumps?


O Linux agora tem os corefiles desabilitados por default para todos os
processos.
Voc pode habilitar ou desabilitar os core dumps (gravao em disco
da
memria do processo, em alguns casos de erro fatal) com o comando
ulimit no

192

bash, limit no tcsh ou rlimit no ksh. Veja a pgina de manual para o


seu
shell para maios detalhes.
Esse comando afeta todos os programas executados por aquele shell
(direta ou
indiretamente) e no no sistema todo.
Se voc quiser habilitar ou desabilitar core dumps para todos os
processos
por default mude <linux/sched.h> - veja a definio de INIT_TASK, e
tambm
d uma olhada em <linux/resource.h>.
1.2.13 produzir core dumps a.out [ O que esse tal de ELF?].

Questo 7.6. Como atualizo/recompilo meu kernel?


Leia o Kernel HOWTO ou o README que acompanha o pacote do
kernel em
ftp.cs.helsinki.fi, em /pub/Software/Linux/Kernel e espelhos de l
[ P2.5.
Onde eu pego material sobre Linux por FTP?]. Voc pode j possuir
uma verso
do cdigo fonte do kernel instalado em seu sistema, mas se voc o
obteve
como parte de alguma distribuio do Linux, provvel que ele esteja
desatualizado (o que no problema se voc s quer um kernel
configurado
sob medida, mas provavelmente se voc precisa fazer uma
atualizao.)

193

Lembre-se que para fazer o novo kernel ser carregado, voc precisa
rodar o
LILO depois de copiar o kernel em sua partio raiz -- o Makefile de
verses
recentes do kernel possui um "target" zlilo especial que j faz isso;
tente
make zlilo.
Kernels com nmero de verso secundrio mpares (ie, 1.1.x, 1.3.x)
so para
teste; kernels estveis possuem nmero de verso pares (1.0.x, 1.2.x).
Se
voc quiser experimentar algum kernel de teste, assine a lista de
discusses
linux-kernel [ P2.8. Quais so as listas de discusso sobre Linux?].
Russel Nelson envia sumrios de mudanas recentes no kernel para
comp.os.linux.development , estes so arquivados em /pub/kchanges.

Questo 7.7. Posso ter mais de 3 portas seriais compartilhando


interrupes?
Sim,

mas

voc

no

poder

usar

duas

portas

comuns

que

compartilham uma
interrupo simultaneamente (sem usar alguns truques). Esta uma
limitao
da arquitetura do barramento ISA.
Veja o Serial HOWTO para informaes sobre possveis solues para
este

194

problema.

Questo 7.8. Como fao um disquete inicializvel?


Faa um sistema de arquivos nele com os diretrios bin, etc, lib e dev
-tudo que voc precisa. Instale um kernel nele e faa com que o LILO
carregue-o pelo disquete (veja a documentao do LILO em lilo.u.*.pl).
Se voc montou o kernel (ou fez o LILO dizer ao kernel) para ter um
ramdisk
do mesmo tamanho do disquete, o ramdisk ser carregado em tempo
de
inicializao (boot) e ser montado como raiz no lugar do disquete.
Veja o Bootdisk HOWTO.

Questo 7.9. Como remapeio meu teclado para portugus, francs etc.
Para kernels recentes, pegue /pub/Linux/system/Keyboards/kbd0.90.tar.gz em
sunsite.unc.edu. Certifique-se de pegar uma verso apropriada; voc
precisa
do pacote de mapeamento de teclado especfico para a verso do seu
kernel.
0.90 deve funcionar com verses de kernel apartir de 1.0.
Para kernels mais antigos, voc precisar editar o Makefile do kernel
em
/usr/src/linux.

195

Voc pode encontrar mais informaes teis no Keystroke HOWTO,


em
sunsite.unc.edu

em

/pub/Linux/docs/HOWTO/Keystroke-HOWTO

ou no
Portuguese-HOWTO , no mesmo local.

Questo 7.10. Como fao para deixar o NUM LOCK ligado por default?
Use o programa setleds, por exemplo (em /etc/rc.local ou em um dos
arquivos
/etc/rc.d/*):
for t in 1 2 3 4 5 6 7 8
do
setleds +num &lft; /dev/tty$t > /dev/null
done
setleds parte do pacote kbd (P7.8. Como fao um disquete
inicializvel?).
Alternativamente, modifique seu kernel. Voc precisa fazer com que
KBD_DEFLEDS seja definido para (1 << VC_NUMLOCK) ao compilar
drivers/char/keyboard.c.

Questo 7.11. Como posso ter mais de 128Mb de swap?


Use vrias parties ou arquivos de swap - o Linux suporta at 16
reas de
swap, cada um com at 128Mb.

196

Kernels muito velhos somente suportam reas de swap com tamanhos


de at
16Mb.

Questo 7.12. Como fao para obter acentuao no Linux?


Leia o Portuguese-HOWTO
Documentacao para outras linguas tambem podem ser uteis. Tente
ver
Danish-HOWTO.
Antonio Fernando C. M. Fo. afmoraes@if.usp.br esta organizando um
HOWTO
sobre o assunto. Ele ainda nao esta completo, mas ja possui muitas
informacoes. Tente ver em
ftp://linux.if.usp.br/pub/operating_systems/Linux/local.

Note

que

esta
localizacao do texto e' temporaria.

Questo 8.1. Como programo XYZ no Linux?


Leia os manuais ou um bom livro sobre Unix. As pginas de manual
online
(digite man man) so geralmente uma boa fonte de informaes de
referncia
sobre como usar um comando ou funo exatamente.

197

Tambm existe bastante documentao em formato GNU Info, til


como tutorial.
Rode Emacs e tecle Ctrl-h i, ou digite info info se voc no tem, ou no
gosta de Emacs. Note que o nodo libc do Emacs no descreve
exatamente o libc
do linux (que mais parecido com um libc tradicional de Unix, no
tendo
algumas das esquisitices da GNU), mas suficientemente semelhante
para
servir como tutorial de programao em C no Unix.
A ltima verso dos manuais online do Linux e uma coleo de
documentao
GNU Info, com vrias outras informaes sobre programao em
Linux pode ser
encontrada em sunsite.unc.edu em /pub/Linux/docs/man-pages.

Questo 8.2. O que esse tal de ELF?


Veja o ELF HOWTO por Daniel Barlow, note que esse no o arquivo
move-to-elf, que uma explicao de como atualizar para ELF
manualmente.
Linux est migrando para um formato diferente de executveis,
arquivos
objeto e bibliotecas de cdigo objeto, conhecido por `ELF' (o formato
antigo
chamado `a.out'). Este ter muitas vantagens, incluindo suporte
melhorado
para bibliotecas compartilhadas (shared libraries) e ligao dinmica
(dinamic linking).

198

Binrios a.out e ELF podem coexistir em um sistema. Porm, como


eles usam
bibliotecas C compartilhadas diferentes, ambos tipos devem estar
instaladas
para isso.
Se voc quer saber se seu sistema pode rodar binrios ELF, procure
/lib por
um arquivo libc.so.5. Se este existir, ele provavelmente pode. Se voc
quer
saber se a sua instalao relamtente ELF voc pode pegar um
programa
representativo, como ls, e rodar file nele:
-chiark:~> file /bin/ls
/bin/ls: Linux/i386 impure executable (OMAGIC) - stripped
valour:~> file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1, stripped
Existe um patch para fazer o 1.2.x compilar usando compiladores
ELF, e
produzir coredumps ELF, no tsx-11.mit.edu em /pub/packages/GCC.
Voc no
precisa do patch para meramente rodar binrios ELF. 1.3.x e
posteriores no
precisam do patch.

Questo 8.3. O que so arquivos .gz? E .tgz? E ...?

199

Arquivos .gz (e .z) foram comprimidos usando o GNU gzip. Voc


precisa usar o
gunzip (que um link simblico para o comando gzip que vem com a
maioria
das instalaes Linux) para descomprimir o arquivo.
.taz e .tz so tarfiles (feitos com o tar do Unix) comprimidos usando o
o
compress padro do Unix.
.tgz (ou .tpz) um tarfile comprimido com o gzip.
.lsm so entradas do Linux Software Map, sob forma de um arquivo
texto
curto. Detalhes sobre o LSM e o LSM em si esto disponveis no
subdiretrio
docs em sunsite.unc.edu.
.deb o pacote binrio Debian - o formato de pacote binrio usado
pela
distribuio Debian GNU/Linux. Ele manipulado com dpkg e dpkgdeb
(disponveis em sustemas Debian e em ftp.debian.org).
.rpm o pacote Red Hat RPM, que usado na distribuio Red Hat.
Eles podem
ser encontrados em ftp.redhat.com.
O comando file pode, na maioria dos casos, dizer o que um arquivo.
Se o gzip reclamar quando voc tenta descomprimir um arquivo
comprimido por

200

ele, voc provavelmente transferiu o arquivo em modo ASCII por


engano. Voc
deve fazer a transferncia (download) da maioria das coisas em modo
binrio
- lembre-se de digitar binary como um comando no FTP antes de usar
o get
para pegar o arquivo.

Questo 8.4. O que significa VFS?


Virtual File System. uma camada de abstrao entre o usurio e os
sistemas
de arquivos reais como ext2, minix e msdos. Entre outras coisas, sua
funo
esvaziar o buffer de leitura quando detecta uma mudana de discos
na
unidade de disco flexvel:
VFS: Disk change detected on device 2/0

Questo 8.5. O que um BogoMip?


`BogoMips' uma contrao de `Bogus MIPS'. MIPS significa
(dependendo de
por quem voc ouviu falar) Milhes de Instrues Por Segundo, ou
Meaningless
Indication of Processos Speed.
O nmero mostrado em tempo de inicializao o resultado de uma

201

calibragem de tempo do kernel, usado para loops de espera bastante


curtos por alguns controladores de dispositivo.
Como um guia bastante grosseiro, o BogoMips ser aproximadamente:
386SX

clock * 0.14

386DX

clock * 0.18

486Cyrix/IBM

clock * 0.33

486SX/DX/DX2
586

clock * 0.50

clock * 0.39

Se o nmero que voc v sensivelmente inferior ao acima, voc pode


estar
com

boto

do

Turbo

ou

velocidade

da

CPU

configurados

incorretamente, ou
ter algum tipo de problema de cache [como descrito em P6.5. Linux
fica muito
lento quando coloco mais memria. ].
Para valores encontrados em outros chips mais raros veja o BogoMips
Mini-HOWTO,

no

sunsite.unc.edu

em

/pub/Linux/docs/howto/mini/BogoMips.

Questo 8.6. O que o Linux Journal e onde posso consegui-lo?


Linux Journal uma revista mensal (impressa em papel) que
disponvel em
bancas

por

assinaturas

mundialmente.

Mande

linux@ssc.com para
detalhes. Eles esto na WWW em http://www.ssc.com/.

202

email

para

Questo 8.7. Quantas pessoas usam Linux?


Linux disponvel gratuitamente, e ningum obrigado a registrar
suas
cpias em nenhuma autoridade central, portanto isso difcil de se
saber.
Muitas empresas sobrevivem agora somente da venda e suporte ao
Linux, e
relativamente muito poucos usurios de Linux usam esses servios.
Os grupos
de discusso sobre Linux so alguns dos mais lidos na Rede, assim o
nmero
deve estar na casa das centenas de milhares, mas nmeros exatos so
difceis
de se dizer.
Contudo, uma brava alma, Harald T. Alvestrand
Harald.T.Alvestrand@uninett.no, decidiu tentar e pede que se voc
usa Linux,
mande uma mensagem para linux-counter@uninett.no com uma das
seguintes
linhas de subject:`I use Linux at home', `I use Linux at work', ou `I use
Linux at home and at work'. Ele tambm aceitar registros de
terceiros pergunte a ele por detalhes.
Alternativamente, voc pode registrar-se usando formulrios WWW em
http://domen.uninett.no/~hta/linux/counter.html.
Ele envia suas contagens para comp.os.linux.misc todo ms; voc
tambm pode

203

olhar em aun.uninett.no em /pub/misc/linux-counter ou na pgina


WWW acima.

Questo 8.8. Como se pronuncia Linux?


Este um debate religioso, claro!
Se voc quiser ouvir o prprio Linus pronuncia-lo pegue english.au ou
swedish.au

em

ftp.funet.fi

(em

/pub/OS/Linux/PEOPLE/Linus/SillySounds). Se
voc tiver uma placa de som ou o driver de udio para PC-speaker,
voc
poder ouvi-los digitando
cat english.au >/dev/audio
A diferena no na pronncia de Linux mas na lngua que Linus usa
para
dizer hello. A verso em ingls parodiada muito bem por Jin Choi as
"Hi, my
name is Leenoos Torvahlds and I pronounce Leenooks as Leenooks."
Para o benefcio daqueles que no tm o equipamento nem a
inclinao: Linus
pronuncia Linux aproximadamente como se l em portugus: Linux.

Questo 9.1. "Unknown terminal type linux" e semelhantes


Em verses 1.3.x antigas do kernel, o tipo de terminal do console
default

204

mudou de console para linux. Voc deve editar o /etc/termcap e


mudar a
linha:
console|con80x25:\
para
linux|console|con80x25:\
(Se houver um dumb a mais nesta linha, ela dever ser removida.)
Para fazer o editor funcionar, voc provavelmente ter que digitar
TERM=console (para o bash e ksh) ou setenv TERM console (csh, tcsh)
antes.
Alguns programas usam /usr/lib/terminfo em vez do /etc/termcap.
Para esses
programas voc deve atualizar seu terminfo, que parte do ncurses.

Questo 9.2. Durante a "linkagem" aparecem Undefined symbol


_mcount
Isso geralmente se deve a uma m interao entre um defeito do SLS e
as
notas de instalao da biblioteca C. Seu libc.a foi trocado pela
biblioteca
de testes. Voc deve remover libc.a, libg.a e libc_p.a e reinstalar as
bibliotecas (seguindo as notas de instalao delas).

205

Questo 9.3. lp1 on fire


Esta um mensagem tradicional/de brincadeira indicando que algum
tipo de
erro est sendo reportado pela sua impressora, mas o status do erro
invlido. Pode ser que voc tem algum tipo de conflito de I/O ou IRQ verifique a configurao de suas placas. Algumas pessoas dizem que
recebem
esta

mensagem

quando

suas

impressoras

esto

desligadas.

Provavelmente ela
no est realmente em chamas...
Em kernels mais recentes a mensagem foi mudada para lp1 reported
invalid
error status (on fire, eh?).

Questo 9.4. INET: Warning: old style ioctl(IP_SET_DEV) called!


Voc est tentando usar os utilitrios de configurao de rede antigos;
os
novos podem ser encontrados em ftp.linux.org.uk em
/pub/linux/Networking/PROGRAMS/NetTools

(somente

fontes,

acho).
Note que estes no podem ser usados como os antigos; veja o NET-2
HOWTO para
instrues de como configurar redes corretamente.

Questo 9.5. ld: unrecognized option '-m486'

206

Voc possui uma verso antiga do ld. Instale um pacote binutils mais
recente
--

ele

conter

um

ld

mais

recente.

Procure

por

binutils-

2.6.0.2.bin.tar.gz
em tsx-11.mit.edu em /pub/linux/packages/GCC.

Questo 9.6. GCC diz Internal compiler error


Se o erro reprodutvel (i.e, ele sempre ocorre no mesmo local do
mesmo
arquivo --- mesmo aps reinicializar e tentar novamente, usando um
kernel
estvel) voc descobriu um erro no GCC. Veja a documentao do
GCC em
formato Info (digite Control-h i no Emacs, e selecione GCC no menu)
para
detalhes de como reportar isso -- no entanto, certifique-se de que voc
possui a ltima verso do GCC.
Note que este provavelmente no um erro especfico do Linux; a no
ser que
voc esteja compilando um programa que muitos outros usurios
Linux
compilam, voc no deve enviar seu aviso sobre o erro para os grupos
comp.os.linux.
Se o erro for irreprodutvel voc provavelmente est experimentando
corrupo de memria --- veja P9.7 make diz Error 139.

Questo 9.7. make diz Error 139

207

Seu compilador (gcc) fez um core dump. Voc possivelmente tem uma
verso
velha, com erros ou corrompida do GCC -- pegue a ltima verso.
Voc tembm
pode estar com pouco espao de swap -- veja P6.8. Minha mquina
roda muito
lentamente quando eu executo GCC / X / ... para mais informaes.
Se isto no consertar o problema voc est provavelmente tendo
problemas de
corrupo de memria ou disco. Verifique se a velocidade do clock,
wait
states etc. de seus SIMMs e cache esto corretos (manuais de
hardware
algumas vezes esto incorretos). Se estiverem, voc pode estar com
SIMMs
defeituosos

ou

com

velocidades

conflitantes

ou

placa-me

ou

controladora ou
disco defeituosos.
Linux, como qualquer Unix, um excelente testador de memria --muito
melhor que programas de teste de memria baseados em DOS.
Alguns clones de coprocessadores aritmtico x87 podem causar
problemas;
tente compilar um kernel com emulao de processamento aritmtico
(Kernel
math emulation) habilitado; voc precisar passar o comando no387
para o

208

kernel, no prompt do LILO, para forar o kernel a us-lo ou o kernel


no
usar o cdigo de emulao.
Mais informaes sobre este problema est disponvel no WWW em
http://einstein.et.tudelft.nl/~wolff/sig11/.

Questo 9.8. shell-init: permission denied quando me logo.


Seu diretrio raiz e todos os diretrios at o seu diretrio home devem
estar com permisso de leitura e execuo para todos. Veja a pgina
de
manual do chmod ou um livro de Unix para ver como consertar o
problema.

Questo 9.9. No utmp entry. You must exec ... quando me logo.
Seu /var/run/utmp est corrompido. Voc deve ter
> /var/run/utmp
em seu /etc/rc.local ou /etc/rc.d/*. Veja Eu acabei com meu sistema
e no
consigo me logar para consert-lo. para ver como poder fazer isso.
Note que
utmp pode tambm ser encontrado em /var/adm/utmp ou /etc/utmp
em alguns
sistemas mais antigos.

209

Questo 9.10. Warning - bdflush not running


Kernels modernos usam estratgias melhores para escrever blocos de
disco em
cache. Em adio s mudanas no kernel, isto envolve a troca do
programa
update, que costumava escrever tudo a cada 30 segundos, por um (na
verdade
dois) daemon mais sutil, conhecido por bdflush.
Pegue o bdflush-n.n.tar.gz do mesmo local que os fontes do kernel
[P7.6.
Como atualizo/recompilo meu kernel?], compile-o e instale-o; ele deve
ser
iniciado antes da checagem usual dos sistemas de arquivos em tempo
de
inicializao. Ele funcionar sem problemas com kernels mais antigos,
portanto no h motivos para manter o update antigo.

Questo 9.11. Warning: obsolete routing request made.


No se preocupe com isto; isto s quer dizer que a verso do route que
voc
tem um pouco desatualizado em relao ao kernel. Voc pode se
livrar da
mensagem pegando uma verso mais recente do route do mesmo local
que os
fontes do kernel [P7.6. Como atualizo/recompilo meu kernel?].

Questo 9.12. EXT2-fs: warning: mounting unchecked filesystem

210

Voc deve rodar e2fsck (ou fsck -t ext2 se voc tem o programa fsck)
com a
opo -a para limpar o flag de `dirty', e depois desmontar a partio
durante cada finalizao (shutdown) do sistema.
A forma mais fcil de fazer isto pegar a ltima verso dos comandos
fsck,
umount e shutdown, disponveis no pacote util-linux de Rik Faith
[ P2.5.
Onde eu pego material sobre Linux por FTP?]. Voc deve certificar-se
de que
os scripts /etc/rc* usam-nos corretamente.
Nota: no tente checar um sistema de arquivos que est montado
como
read-write - isso inclui a partio raiz se voc no vir
VFS: mounted root ... read-only
durante a inicializao. Voc deve fazer com que a partio raiz seja
montada somente para leitura, chec-la se necessrio e ento
remont-la como
read-write. Leia a documentao que acompanha com o util-linux
para ver como
fazer isso.
Note que voc deve especificar a opo -n para mount para fazer com
que ele
no tente atualizar o /etc/mtab, caso contrrio ele falhar, pois o
sistema
de arquivos raiz (onde est /etc/mtab) ainda somente para leitura.

211

Questo 9.13. EXT2-fs warning: maximal count reached


Esta mensagem emitida pelo kernel quando ele monta um sistema
de arquivos
marcado como limpo, mas cujo contador de "montagens desde a
ltima checagem"
atingiu um valor pr-definido. A soluo pegar a ltima verso dos
utilitrios ext2fs (e2fsprogs-0.5b.tar.gz no momento da escrita disto)
dos
sites usuais [ P2.5. Onde eu pego material sobre Linux por FTP? ].
O nmero mximo de montagens pode ser examinado e mudado com
o programa
tune2fs deste pacote.

Questo 9.14. EXT2-fs warning: checktime reached


Kernels 1.0 em diante suportam a checagem de sistemas de arquivos
baseados
no tempo decorrido desde a ltima checagem assim como no nmero
de
montagens. Pegue a ltima verso dos utilitrios ext2fs
(e2fsprogs-0.5b.tar.gz no momento da escrita disto) dos sites usuais
[ P2.5.
Onde eu pego material sobre Linux por FTP? ].

Questo 9.15. df diz Cannot read table of mounted filesystems

212

Provavelmente h algo de errado com seus arquivos /etc/mtab ou


/etc/fstab.
Se voc possuir uma verso razoavelmente recente do mount,
/etc/mtab deve
ser esvaziado ou apagado em tempo de inicializao (em /etc/rc.local
ou
/etc/rc.d/*), usando algo como
rm -f /etc/mtab*
Algumas verses de SLS tm uma entrada para a partio raiz em
/etc/mtab
feito no /etc/rc* usando rdev. Isso incorreto: verses recentes de
mount
fazem isso automaticamente.
Outras verses do SLS tm uma linha em /etc/fstab que se parece
com:
/dev/sdb1 /root ext2 defaults
Isso errado. /root deve ser simplesmente /.

Questo 9.16. fdisk says Partition X has different physical /logical...


Se o nmero da partio (X, na mensagem acima) for 1 esse o
mesmo problema
que fdisk: Parttion 1 does not start on cylinder boundary.
Se a partio comea ou termina em um cilindro com nmero maior
que 1024,

213

isso devido ao fato das informaes do DOS sobre geometria do disco


no
suportarem nmeros de cilindro com mais de 10 bits. Leia P4.1. Como
posso
fazer o Linux funcionar com meu disco "grande" de mais de 1024
cilindros
lgicos?.

Questo 9.17. fdisk: Partition 1 does not start on cylinder boundary


A verso do fdisk que vem com muitos sistemas Linux cria parties
que
falham em seus prprios testes de consistncia. Infelizmente, se voc
j
instalou seu sistema no h muito o que se fazer sobre isso, alm de
copiar
os dados da partio, remov-lo, reconstru-lo e copiar os dados de
volta.
Voc pode evitar o problema pegando a ltima verso de fdisk, do
pacote
util-linux de Rik Faith (disponvel em todos os bons sites de FTP).
Alternativamente, se voc estiver criando uma nova partio 1 que
comea no
primeiro cilindro, voc pode fazer o seguinte para obter uma partio
que o
fdisk goste:
1. Crie a partio 1 normalmente. Uma listagem p produzir uma
reclamao
sobre inconsistncia.

214

2. Digite u para mudar a unidade de medida para setores e digite p


novamente. Copie o nmero da coluna "End".
3. Remova a partio 1.
4. Ainda com a unidade de medida em setores recrie a partio 1.
Faa com
que o primeiro setor coincida com o nmero de setores por trilha.
Este
o nmero de setor na primeira linha da sada de p. Ajuste o
ltimo
setor para o valor indicado no passo 2.
5. Digite u para mudar a unidade de volta para cilindros e continue
com as
outras parties.
Ignore as mensagens sobre setores no alocados - eles referem-se aos
setores
na primeira trilha alm do MBR, que no usado se voc comear a
primeira
partio na trilha 2.

Questo 9.18. fdisk says partition n has an odd number of sectors


O esquema de particionamento de disco do PC funciona com setores
de 512
bytes, mas Linux usa blocos de 1K. Se voc tiver uma partio com
um nmero
mpar de setores o ltimo setor no utilizado. Ignore a mensagem.

Questo 9.19. mtools diz cannot initialise drive XYZ

215

Isso significa que mtools est tendo problemas em acessar o drive.


Isso pode
ser causado por vrias coisas.
Freqentemente isso ocorre devido s permisses nos dispositivos das
unidades de disco flexvel (/dev/fd0* e /dev/fd1*) estarem incorretas
--- o
usurio rodando mtools deve ter acesso apropriado. Veja a pgina de
manual
do chmod para detalhes.
A maioria das verses do mtools distribudos com sistemas Linux (no
a
verso padro GNU) usa o contedo do arquivo /etc/mtools para ver
quais
dispositivos e densidades usar, ao invs de ter essas informaes
compilados
no

programa.

Erros

nesse

arquivo

podem

causar

problemas.

Freqentemente no
h documentao sobre isso --- produtores de distribuies por favor
notem
que isso mau.
Para a forma mais fcil de acessar seus arquivos DOS (especialmente
aqueles
em parties de disco rgido) veja P3.2. Como eu acesso arquivos na
minha
partio DOS ou em disquetes? . Nota - voc jamais deve usar mtools
para
acessar arquivos em uma partio ou disquete msdosfs montado!

216

Questo 9.20. Memory tight no comeo da inicializao


Isso significa que voc tem um kernel muito grande, o que significa
que o
Linux tem que fazer alguma mgica de gerenciamento de memria
extra para
poder inicializar-se apartir do BIOS. Isso no relacionado com a
quantidade de memria fsica em sua mquina. Ignore a mensagem
ou compile um
kernel contendo somente os drivers e funes que voc precisa P7.6.
Como
atualizo/recompilo meu kernel?

Questo 9.21. You don't exist. Go away.


Isso no uma infeco viral :-). Isso vem de vrios programas como
write,
talk e wall, se o seu uid efetivo ao executar o programa no
corresponde a
um usurio vlido (provavelmente devido a uma corrupo no
/etc/passwd), ou
se a sesso (pseudoterminal, especificamente) que voc est usando
no
estiver registrado no arquivo utmp (provavelmente porque voc o
invocou de
um jeito engraado)

Questo 10.1. O Linux suporta X Windows?

217

Sim. Linux usa XFree86 (a verso atual 3.1.2, que baseado no


X11R6).
Voc deve ter uma placa de vdeo suportado pelo XFree86. Veja o
Linux
XFree96 HOWTO para maiores detalhes.
Atualmente, a maioria das distribuies Linux vm com uma
instalao X.
Voc

tambem

pode

instala-lo

por

conta

propria,

com

/pub/Linux/X11/Xfree86-*
em sunsite.unc.edu e seus sites espelho. Leia o XFree86 HOWTO para
informaes sobre instalao.

Questo 10.2. Onde posso conseguir um XF86Config para meu


sistema?
Leia o Linux XFree86 HOWTO.
Voc dever fazer seu prprio arquivo XF86Config, porque ele depende
da
combinao exata de placa de vdeo e monitor que voc tem. Isso no

difcil de fazer -- leia as instrues que vem com o XFree86, em


/usr/X11R6/lib/X11/etc. O arquivo que voc mais precisa olhar
provavelmente o README.Config.
Voc pode usar o programa xf86config para agilizar o trabalho. Note
que
ConfigXF86 obsoleto e no deve ser usado.

218

Por favor, no pea por arquivos XF86Config em comp.os.linux.x nem


responda
a tais pedidos.

Questo 10.3. Logins pelo "xterm" aparecem de forma estranha em


who, finger
etc.
O xterm que acompanha o XFree86 2.1 e anteriores no entende
corretamente o
formato que o Linux usa para o arquivo /var/adm/utmp, onde o
sistema guarda
registros de quem est no sistema. Portanto ele no interpreta todas
as
informaes corretamente.
XFree96 3.1 conserta esse problema.

Questo 10.4. No consigo fazer o X Windows funcionar


Leia o XFree86 HOWTO - note a seo de perguntas e respostas.
Tente ler comp.windows.x.i386unix - especificamente leia o FAQ
daquele
grupo.
Por favor no envie mensagens sobre X Windows ou XFree86 para
comp.os.linux.x a no ser que sejam especficos sobre Linux.

219

Questo 10.5. O que fao para o X funcionar com a minha TGUI9440,


Diamond
Stealth...?
Suporte para placas TGUI9xxx e outras est sendo desenvolvido. Se
voc
quiser experimentar uma verso beta, d uma olhada em
http://www.xfree86.org.
Placas Diamond mais antigas no so suportadas, mas voc pode
faz-las
funcion-las

em

sua

mquina

com

algum

trabalho.

Veja

Diamond.FAQ em
ftp://sunsite.unc.edu/pub/Linux/X11/.

Placas

mais

recentes

possuem suporte.
Obtenha

mais

informaes

em

http://www.diamondmm.com/linux.html
Mais informaes sobre suporte a placas de vdeo no Hardware
HOWTO ou para o
caso do XFree86 em http://www.xfree96.org

Questo 11.1. Emacs s faz core dump


Voc provavelmente possui uma verso do Emacs que foi compilado
para
funcionar com o X11; ele precisa das bibliotecas X11 para funcionar.
Se voc
estiver usando Slackware, voc pode mudar o link simblico
/usr/bin/emacs

220

para apontar para emacs-19.29-no-x11 (veja man ln). Ele est no


arquivo
emac_nox.tgz do disco E6 do Slackware.

Questo 11.2. fdisk diz cannot use nnn sectors of this partition
Originalmente o Linux s suportava o sistema de arquivos do Minix,
que no
pode usar mais de 64Mb por partio. Essa limitao no existe em
sistemas
de arquivos mais avanados, como o ext2fs (a segunda verso do
Sistema de
Arquivos Extendido, o sistema de arquivos padro do Linux).
Se voc pretende usar o ext2fs, voc pode ignorar a mensagem.

Questo 11.3. GCC algumas vezes usa quantidades enormes de


memria virtual e
quebra
Verses antigas do GCC tinham um erro que os fazia usar muita
memria se
voc tentasse compilar um programa com uma tabela de dados
esttico nele.
Voc pode tanto atualizar seu GCC para pelo menos a verso 2.5, ou
adicionar
mais espao de swap se necessrio e simplesmente suport-lo; no
final ele
ir funcionar.

221

Questo 11.4. Meu teclado fica todo esquisito quando troco de VCs.
Este um erro em kernels de verses anteriores a 0.99pl14-alpha-n.
Algumas
vezes Linux se perde quanto a quais teclas modificadoras (Shift, Alt,
Control etc.) esto pressionadas ou no, e acha que um ou outro esto
pressionadas, quando no esto. A soluo pressionar e soltar cada
uma das
teclas modificadoras (sem pressionar outras teclas junto) --- isso far
com
que Linux saiba do estado em que o teclado realmente est.
Este problema ocorre freqentemente ao se sair do X Windows; ele
pode ser
evitado algumas vezes ao largar rapidamente as teclas Ctrl e Alt
depois de
se apertar a tecla de funo do VC para que voc est mudando.

Questo 12.1. Vocs ainda no respondero minha pergunta.


Por favor leia toda esta resposta antes de postar. Sei que ela um
pouco
comprida, mas voc pode estar a ponto de fazer papel de bobo na
frente de
50000 pessoas e gastar centenas de horas de seus tempos. Voc no
acha que
vale a pena gastar algum tempo seu lendo e seguindo estas
instrues?

222

Se voc achar que alguma resposta est incompleta ou incorreta, por


favor
envie e-mail para Ian Jackson em ijackson@gnu.ai.mit.edu ou Alfredo
Kojima
em kojima@inf.ufrgs.br
Leia os livros apropriados do Linux Documentation Project - veja P2.1.
Onde
pego os HOWTOs e outra documentao?.
Se voc um novato no Unix leia o FAQ para comp.unix.questions, e
aqueles
para quaisquer grupos comp.unix.* que podem ser relevantes.
Linux um clone de Unix, portanto quase tudo que voc ler l pode se
aplicar a Linux. Esses FAQs, assim como todos os FAQs, podem ser
encontrados
em

rtfm.mit.edu

em

/pub/usenet/news.answers

(o

mail-

server@rtfm.mit.edu pode
mandar esses arquivos para os que no tem acesso FTP). Esses so
espelhos
dos arquivos de FAQ rtfm em vrios sites - cheque o Introduction to
*.answers na USENET ou veja news-answers/introduction no diretrio
acima.
Cheque o HOWTO relevante para o assunto em questo, se existe um,
ou um
documento sub-FAQ no estilo antigo apropriado. Veja os sites FTP.
Tente experimentar -- esse a melhor forma de se conhecer Unix e
Linux.

223

Leia a documentao. Veja as pginas de manual (digite man man se


voc no
os conhece. Tente man -k <assunto> : algumas vezes isso lista
pginas de
manual relevantes e teis).
Verifique a documentao Info (digite Control-h i, no Emacs) --- nota:
isso
no s para o Emacs; por exemplo, a documentao do GCC est l
tambm.
Freqentemente haver um arquivo README junto com o pacote
dando instrues
de uso e instalao.
Certifique-se de que voc no tem cpias velhas ou corrompidas do
programas
em questo. Se possvel, pegue o novamente e reinstale-o -- talvez
voc
tenha cometido um engano da primeira vez.
Leia comp.os.linux.announce. Muitas vezes ele contm informaes
importantes
para todos usurios Linux.
Questes

sobre

Windows

gerais

pertencem

comp.windows.x.i386unix, no em
comp.os.linux.x. Mas leia o grupo antes (incluindo o FAQ), antes de
voc
postar!

224

Somente depois de ter feito tudo isso e voc ainda estiver encalhado
voc
deve enviar sua mensagem para o grupo comp.os.linux.* ou lista de
discusses
apropriada. Leia antes a prxima questo: P12.2 O que colocar num
pedido de
ajuda.

Questo 12.2. O que colocar em um pedido de ajuda.


Por favor leia cuidadosamente o seguinte conselho sobre como
escrever sua
mensagem. Ao segui-los voc aumentar as chances de um expert
e/ou
companheiro

usurio

lendo

sua

mensagem

tenha

informaes

suficientes e
motivao para responder.
Este conselho se aplica tanto para mensagens para grupos/listas de
discusso
pedindo

ajuda

quanto

para

email

mandado

para

experts

companheiros
usurios.
Certifique-se de dar detalhes completos do problema, incluindo:
Com qual programa exatamente que voc est tendo problemas.
Inclua o
nmero da verso, se conhecido, e diga onde voc o pegou. Muitos
comandos padro dizem suas verses ao serem invocados com a
opo

225

--version.
Qual distribuio de Linux voc est usando (MCC, Slackware,
Debian
etc.) e qual verso dessa distribuio.
Uma transcrio exata e completa do texto de quaisquer mensagens
de
erro mostradas.
Exatamente que efeitos voc esperava e exatamente que efeitos voc
observou. Uma transcrio de uma sesso exemplo uma boa
maneira de se
fazer isso.
O contedo de quaisquer arquivos de configurao usados pelo
programa
em questo e quaisquer programas relacionados.
Quais verses do kernel e biblioteca dinmica voc est usando. A
verso do kernel pode ser verificada com uname -a, e o da
biblioteca
dinmica com ls -l /lib/libc.so.4.
Se parecer apropriado, detalhes de qual hardware voc est usando.
Voc corre pouco risco de deixar sua mensagem comprida demais a
no ser que
inclua grandes pedaos de cdigo fonte ou arquivos com uuencode,
portanto
no se preocupe em dar informaes de mais.
Use uma linha de Subject clara e detalhada. No coloque coisas como
'no
funciona', 'Linux', 'ajuda' ou 'pergunta' nele --- nos j sabemos disso!
Guarde o espao para o nome do programa, um pedao da mensagem
de erro,
sumrio do comportamento incomum etc.

226

Se voc estiver reportando uma mensagem `unable to handle kernel


paging
request', siga as instrues do README no cdigo fonte do kernel,
para
transformar os nmeros em algo mais significativo. Se voc no fizer
isso,
ningum que ler sua mensagem poder fazer isso por voc, j que o
mapeamento
dos nmeros para nomes de funes varia de um kernel para outro.
Coloque um pargrafo de sumrio no topo de sua mensagem.
No fim de sua mensagem, pea por respostas por email particular e
diga que
voc enviar um sumrio. Aps alguns dias envie um sumrio. No
faa simples
concatenaes das respostas que voc recebeu --- sumarise. Colocar a
palavra
SUMRIO na linha de Subject de sua mensagem tambm uma boa
idia.
Considere em submeter seu sumrio para comp.os.linux.announce.
Se for postar a mensagem para grupos USENET, certifique-se de que
sua
mensagem no tem uma linha References inapropriada. Isso marca
seu artigo
como parte da discusso referida, o que ir seguidamente fazer com
que ele
no seja lido por leitores junto com o resto de uma discusso
desinteressante.

227

Se voc pode querer dizer em sua mensagem que voc j leu este FAQ
e os
HOWTOs apropriados.
Lembre-se de que voc no deve postar mensagens enviadas
particularmente a
voc sem a autorizao do autor.

Questo 12.3. Quero mandar e-mail a algum sobre meu problema.


Tente

encontrar

autor

ou

desenvolvedor

do

programa

ou

componente que est


lhe causando dificuldades. Se voc tiver um local de contato para a
distribuio Linux que voc est usando, use-o.
Coloque tudo em seu email que voc colocaria em uma mensagem
pedindo por
ajuda.
Finalmente, lembre-se de que apesar do fato da maioria da
comunidade Linux
ser bastante prestativa e responder a perguntas por email, voc estar
pedindo ajuda a um voluntrio no pago, portanto voc no tem o
direito de
esperar uma resposta.

Questo 13.1. Comentrios so bem-vindos


Por favor envie seus comentrios sobre este FAQ.

228

Sugestes de perguntas para este FAQ so aceitas em qualquer


formato;
quaisquer contribuies, comentrios e correes sero muito bem
vindas.
Por favor, mande-as para kojima@inf.ufrgs.br. Contribuies que se
referem
verso original em ingls deste FAQ ou que podem ser teis a outros
usurios
em geral (no s para os brasileiros) podem ser mandadas tanto para
kojima@inf.ufrgs.br como para o autor da verso original,
ijackson@gnu.ai.mit.edu .
Ao se referir a alguma(s) pergunta(s) faa-a pelo cabealho da(s)
pergunta(s), ao invs dos nmeros, j que a numerao no fixa.

Questo 13.2. Formatos em que este FAQ disponvel


A verso original em ingls deste documento disponvel em arquivos
texto
ASCII, documento Info do Emacs, uma pgina HTML na World Wide
Web,
PostScript e como mensagem do USENET news.
As verses em ASCII, Info do Emacs, HTML e a da USENET e um
arquivo para o
formatador de textos Lout (de onde a verso PostScript produzido)
so
gerados automaticamente por um script Perl e um arquivo no Bizarre
Format
with No Name.

229

Os arquivos gerados linux-faq.ascii, .inf e .ps um arquivo tar


linux-faq.source.tar.gz, contendo o arquivo fonte BFNN e os scripts de
converso em Perl est disponvel nos diretrios docs dos stios FTP.
A verso HTML deste FAQ em ingls disponvel como
http://www.cl.cam.ac.uk/users/iwj10/linux-faq/index.html

espelhado em
www.li.org e em outros lugares.
A

verso

USENET

postado

regularmente

para

comp.os.linux.announce,
comp.os.linux.answers, comp.answers e news.answers.
A verso brasileira do FAQ (este que voc est lendo) disponvel em
ASCII
puro e HTML, alm de ser postado Linux-BR periodicamente e estar
disponvel no servidor de listas da Linux-BR.
Voc pode encontrar um arquivo contendo todas as verses e outro
somente com
a verso ASCII em http://www.inf.ufrgs.br/~kojima/linux/pack/.

Questo 13.3. Autores e agradecimentos


A verso original do Linux FAQ, em que esta verso foi baseada, foi
compilada por Ian Jackson ijackson@gnu.ai.mit.edu, com ajuda e
comentrios
de muitas outras pessoas.
Agradecimentos especiais so devidos a Matt Welsh, que moderou o

230

comp.os.linux.announce e comp.os.linux.answers, coordenava os


HOWTOs e
escreveu uma parte substancial deles, a Greg Hankins, que coordena
os HOWTOs
agora, a Lars Wirzenius que modera comp.os.linux.announce, e a
Marc-Michel
Corsini, que escreveu o Linux FAQ original.
Agradecimentos tambm para as muitas pessoas que mandaram seus
valiosos
comentrios e sugestes, numerosos demais para serem listados.
E por ltimo, mas no menos importante, obrigado a Linus Torvalds e
os
outros contribuidores do Linux, por dar a ns o que escrever.
Esta verso brasileira do FAQ foi traduzida e extendida por Alfredo K.
Kojima,kojima@inf.ufrgs.br, Marlon Borba,trfsinf@eu.ansp.br.

Questo 13.4. Copyright e outras informaes legais


Este o copyright do documento em que este FAQ se baseia:
Note that this document is provided as is. The information in it is not
warranted to be correct; you use it at your own risk.
Linux Frequently Asked Questions with Answers is Copyright 1994,
1995, 1996
by Ian Jackson ijackson@gnu.ai.mit.edu.
It may be reproduced and distributed in its entirety (including this

231

authorship, copyright and permission notice) provided that either:


the distribution is not commercial (commercial means any situation
in
which you benefit financially - directly or indirectly such as by
inclusion in a publication which carries commercial advertising), or
the distribution is in machine-readable form (ie, a form intended to be
easily processed by a computer).
Note that this restriction is not intended to prohibit charging for the
service of printing or copying a document supplied by your customer.
Any distribution of a partial copy or extract, a translation or a
derivative
work must be approved by me before distribution. Email me - I'll
probably be
happy to oblige !
Exceptions to these rules may be granted, and I shall be happy to
answer any
questions about this copyright --- write to Ian Jackson, Churchill
College,
Cambridge,

CB3

0DS,

United

Kingdom

or

email

ijackson@gnu.ai.mit.edu . These
restrictions are here to protect the contributors, not to restrict you as
educators and learners.
Ian Jackson asserts the right to be identified as the author of this
work,
and claims the moral rights of paternity and integrity, in accordance
with
the Copyright, Designs and Patents Act, 1988.

232

233

C - Copyrights do Linux e Esquema de numerao das verses do


Linux

O Linux no um software de domnio pblico, mas sob a GNU


Public License (veja apndice), o cdigo fonte do Linux pode
permanecer livremente disponvel. As pessoas podem cobrar pela
cpia do Linux, se desejarem, desde que, com isso, no limite a
distribuio do Linux.
Muitas pessoas, pelo mundo, tem trabalhado conjuntamente
para criar o Linux, sob a direo de Linus Torvalds, o autor original, e
cada uma mantm os direitos de copyright sobre o cdigo que ele, ou
ela, tenham escrito.
A verso 1.0 do Linux foi liberada no dia 14 de maro de 1994 e,
depois disso, foram feitas numerosas verses novas. Ainda existem
bugs no sistema (como em qualquer sistema operacional), e novos
bugs vem sendo descobertos e ajustados no decorrer do tempo. O
Linux segue o modelo de desenvolvimento aberto e, por isso, a cada
nova verso liberada ao pblico, quer sim, quer no, ele considerado
um "produto de qualidade". Contudo, para dizer s pessoas se elas
esto obtendo uma verso estvel ou no, o esquema a seguir foi
implementado:
Verses r.x.y, onde x um nmero par, so verses estveis, e,
enquanto o y incrementado, apenas reparos de bugs so efetuados.
Assim da verso 2.0.2 para a 2.0.3, houve apenas reparo de bugs,
sem nenhuma caracterstica nova.
Verses r.x.y, onde x um nmero impar, so verses beta destinadas
apenas a desenvolvedores, podem ser instveis e falhar, e estaro
sendo colocadas novas caracterstica o tempo todo. De tempos em
tempos, com o atual desenvolvimento do kernel sendo considerado
"estvel", x trocado para um nmero par, e o desenvolvimento
continua com uma nova verso (x impar).
234

235

D - Contrato de licena (em Ingls)

texto

seguir

pode

ser

encontrado

em:

http://www.cs.helsinki.fi/linux/gpl.html
NOTE!
This copyright does not cover user programs that use kernel services
by normal system calls - this is merely considered normal use of the
kernel, and does not fall under the heading of "derived work". Also
note that the GPL below is copyrighted by the Free Software
Foundation, but the instance of code that it refers to (the Linux
kernel) is copyrighted by me and others who actually wrote it.
Linus Torvalds

GNU GENERAL PUBLIC LICENSE


Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass
Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom
to share and change it. By contrast, the GNU General Public License
is intended to guarantee your freedom to share and change free
236

software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors
commit to using it. (Some other Free Software Foundation software is
covered by the GNU Library General Public License instead.) You can
apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price.
Our General Public Licenses are designed to make sure that you have
the freedom to distribute copies of free software (and charge for this
service if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that you
have. You must make sure that they, too, receive or can get the source
code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on,
we want its recipients to know that what they have is not the original,

237

so that any problems introduced by others will not reflect on the


original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBCLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
MODIFICATION
0. This License applies to any program or other work which contains a
notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the
Program" means either the Program or any derivative work under
copyright law: that is to say, a work containing the Program or a
portion of it, either verbatim or with modifications and/or translated
into another language. (Hereinafter, translation is included without
limitation in the term "modification".) Each licensee is addressed as
"you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of running
the Program is not restricted, and the output from the Program is
covered only if its contents constitute a work based on the Program

238

(independent of having been made by running the Program). Whether


that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the notices
that refer to this License and to the absence of any warranty; and give
any other recipients of the Program a copy of this License along with
the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any part
thereof, to be licensed as a whole at no charge to all third parties
under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a notice
that there is no warranty (or else, saying that you provide a warranty)
and that users may redistribute the program under these conditions,

239

and telling the user how to view a copy of this License. (Exception: if
the Program itself is interactive but does not normally print such an
announcement, your work based on the Program is not required to
print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest your
rights to work written entirely by you; rather, the intent is to exercise
the right to control the distribution of derivative or collective works
based on the Program.
In addition, mere aggregation of another work not based on the
Program with the Program (or with a work based on the Program) on a
volume of a storage or distribution medium does not bring the other
work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections 1

240

and 2 above on a medium customarily used for software interchange;


or,
b) Accompany it with a written offer, valid for at least three years, to
give any third party, for a charge no more than your cost of physically
performing source distribution, a complete machine-readable copy of
the corresponding source code, to be distributed under the terms of
Sections 1 and 2 above on a medium customarily used for software
interchange; or,
c) Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed only
for noncommercial distribution and only if you received the program
in object code or executable form with such an offer, in accord with
Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to control
compilation and installation of the executable. However, as a special
exception, the source code distributed need not include anything that
is normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
If distribution of executable or object code is made by offering access
to copy from a designated place, then offering equivalent access to
copy the source code from the same place counts as distribution of
the source code, even though third parties are not compelled to copy
the source along with the object code.

241

4. You may not copy, modify, sublicense, or distribute the Program


except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying the
Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this

242

License and any other pertinent obligations, then as a consequence


you may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity

of

the

free

software

distribution

system,

which

is

implemented by public license practices. Many people have made


generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing to
distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Program under this License may add
an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among countries

243

not thus excluded. In such case, this License incorporates the


limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new
versions of the General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may differ
in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Program does not specify a
version number of this License, you may choose any version ever
published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the
author to ask for permission. For software which is copyrighted by the
Free Software Foundation, write to the Free Software Foundation; we
sometimes make exceptions for this. Our decision will be guided by
the two goals of preserving the free status of all derivatives of our free
software and of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE,
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT
PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT

244

LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY


AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
THE

COST

OF

ALL

NECESSARY

SERVICING,

REPAIR

OR

CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY
OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN
IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS

245

Bibliografia

Servidores www
http://www.openline.com.br/linux-br/ - Home Page do Linux no
Brasil
http://www.br.freebsd.org/linux-br/index.html - Home Page do Linux
em portugus
http://www.inf.ufrgs.br/~kojima/linux/faq-linux.html

Perguntas

frequentemente colocadas na linux-br (FAQ)


http://www.linux.org - Home page da Linux Organization, site oficial
do Linux
http://www.suncite.unc.edu/mdw/welcome.html - Pgina do Projeto
de Documentao do Linux.
http://www.linux.if.usp.br - Tudo para linux em portugus/ingls site
da USP.
http://www.infor.es/LuCAS - Projeto Lucas - informaes do Linux
em espanhol.
http://www.cl.com.ac.uk/users/wj10/linux-faq

Pergunta

mais

frequentes do Linux em ingls.


http://sunsite.unc.edu/mdw/linux.html - Site com tudo sobre Linux
em Ingls

Servidores de FTP
ftp.iis.com.br - diversos arquivos da internet.
ftp.versatec.com - contm diversos softwares para Linux.
ftp.ibp.fr : /pub/linux (Frana)
ftp.cc.gatech.edu : /pub/linux (EUA - sudeste: Suranet)
246

ftp.cdrom.com : /pub/linux (EUA)


ftp.informatik.tu-muenchen.de : /pub/comp/os/linux (Alemanha)
ftp.ibr.cs.tu-bs.de : /pub/os/linux (Alemanha)
ftp.dfv.rwth-aachen.de : /pub/linux (Alemanha)
ftp.informatik.rwth-aachen.de : /pub/Linux (Alemanha)
ftp.cc.monash.edu.au : /pub/linux (Austrlia)
ftp.dstc.edu.au : /pub/Linux (Austrlia: Queensland)
ftp.sun.ac.za : /pub/linux (frica do Sul)
ftp.inf.utfsm.cl : /pub/Linux (Chile)
ftp.zel.fer.hr : /pub/Linux (Crocia)
linux.if.usp.br : /pub/mirror/sunsite.unc.edu/Linux alm de outros
em
/pub/mirror com a distribuicao Debian.
lcmi.ufsc.br

/pub/diversos/linux

(Brasil

Santa

Catarina)

Slackware
cesar.unicamp.br : /pub3/linux (Brasil : So Paulo) Slackware
ftp.ime.usp.br : /pub/linux (Brasil : So Paulo) Slackware
ftp.ufpr.br : /pub/Linux/ (Brasil : Paran) Slackware

Lista de discusses (usernet newsgroup)

comp.os.linux.announce - um grupo de anncios moderado; voc


deve l-lo se
pretende usar Linux. Submisses a este grupo devem ser mandadas
para
linux-announce@news.ornl.gov.
comp.os.linux.answers - Contm todos os FAQs, HOWTOs e outros
documentos
importantes. Assine este grupo tambm.

247

Os outros grupos na hierarquia comp.os.linux.* tambm so


recomendados algums problemas comuns no respondidos neste FAQ
podem estar nos newsgroups. Esses grupos so :
comp.os.linux.setup
comp.os.linux.hardware
comp.os.linux.networking
comp.os.linux.x
comp.os.linux.development.apps,
comp.os.linux.development.system
comp.os.linux.advocacy
comp.os.linux.misc.

Endereo eletrnico de diversos colaboradores da Linux Organizao


Drew Eckhard

(US) drew@coorado .edu

Brondo n S. Allbere

(US) bsa@kf8nh.wariat.org

Ian Jackso (UK) ijackso@cus.cam.ac.uk


Rik Faith

(US) faith@cs.unc.edu

Iar Mc Coghrie

(US) ian@ucsd.edu

Stephem Harris

(UK) sweh@spudde .mew.co.uk

DaniOQuilan

(US) Daniel.Quinlan@linux.org

Fred N. vain Kemper

(US) waltje@infomagic.com

Mike Sangree

(US) mike@sojurn.lns.pa.us

Jhon A. Martir

(US) jmartin@csc.com

David H. Selber

(US) dhs@gowworm.firefle .com

Chris Netcalf

(US) metcalf@lcs.mit.edu

Theodo re Ts

(US) te tso@athema.mit.edu

Ian Murdo ck

(US) imurdo ck@debian.org

Stephem Tweedie (UK) sct@dcs.ed.ac.uk


David C. Niemi

(US) niemid@clarck.net

248

249

Você também pode gostar