Você está na página 1de 159

ndice

1
2
3
3.1
3.1.1
3.2
3.3
3.4
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.7.1
4.7.2
4.7.3
4.7.3.1
4.7.4
4.7.5
4.7.5.1
4.7.5.2
4.7.6
4.7.7
5
5.1
5.1.1
5.1.2
5.1.3
5.1.4
5.1.5
5.1.6
5.2
5.3
5.4
5.4.1
5.4.2
5.4.3
5.4.3.1
5.4.3.1.1
5.4.3.2
5.4.3.3
5.4.3.4
5.4.3.4.1
5.4.3.5
5.4.3.6
5.4.3.7
5.4.3.8

Introduo
Histrico do Linux
Gerncia de Processos
Consideraes Iniciais
Inicializao (boot do sistema)
Gerncia do Processo pelo kernel
Criando e Destruindo um Processo
Executando Processos
Gerncia de Memria
Gerenciamento de Memria do Linux
Memria Fsica
Distribuio da Memria do Processo Usurio
Inicializao da Memria
Adquirindo e Liberando Memria
Paginao (Paging)
Gerenciamento de Memria Cache
Arquitetura de Memria Cache do Linux (Linux Flush Architecture)
Implementao de Memria Cache
Arquitetura Baseada no SMP
Arquitetura Baseada no contexto MMU/CACHE
Contedo de uma Arquitetura Virtual
Implicaes Referentes a Arquitetura
Arquitetura baseado no contexto SMP
Arquitetura baseado no contexto MMU/CACHE
Como tratar o que a Arquitetura flush no executa com exemplos
Questes Abertas na Arquitetura Cache
Sistema de Arquivos do Linux (File System)
Conceitos Fundamentais
Arquivos
Diretrios
Conta
Tipo de Arquivos
Acesso a Arquivos
Atributos dos Arquivos
Operaes sobre Arquivos
Arquivos Compartilhados
Estrutura do Sistema de Arquivos Linux Realease 1.2
Apresentao
Caractersticas Sistema de Arquivos
Composio dos Diretrios
Subdiretrio /bin
Arquivos e/ou Comandos disponveis em /bin
Subdiretrio /boot
Subdiretrio /dev
Subdiretrio /etc
Arquivos e/ou Comandos disponveis em /etc
Subdiretrio /home
Subdiretrio /lib
Subdiretrio /mnt
Subdiretrio /proc

06
08
10
10
10
12
13
13
15
15
16
17
18
19
22
23
23
24
25
27
27
28
28
29
29
30
31
31
31
31
32
32
33
33
34
35
36
36
36
38
39
39
40
40
41
41
42
42
43
43

5.4.3.9
5.4.3.10
5.4.3.10.1
5.4.3.10.2
5.4.3.11
5.4.3.12
5.4.3.12.1
5.4.3.12.2
5.4.3.12.3
5.4.3.12.4
5.4.3.12.5
5.4.3.12.6
5.4.3.12.7
5.4.3.12.8
5.4.3.12.9
5.4.3.12.10
5.4.3.12.11
5.4.3.12.12
5.4.3.13
5.4.3.13.1
5.4.3.13.2
5.4.3.13.3
5.4.3.13.4
5.4.3.13.5
5.4.3.13.6
5.4.3.13.7
5.4.3.13.8
5.4.3.13.9
5.4.3.13.10
5.4.3.13.11
5.4.3.13.12
5.4.4
5.4.5
6
7
8
A
B
C
D
9

Subdiretrio /root (opcional)


Subdiretrio /sbin
Arquivos e/ou Comandos disponveis em /sbin
Arquivos e/ou Comandos opcionais em /sbin
Subdiretrio /tmp
A hierrquia /usr
Subdiretrio /usr (permanente)
Subdiretrio /usr/x386
Subdiretrio /usr/bin
Subdiretrio /usr/dict
Subdiretrio /usr/etc
Subdiretrio /usr/include
Subdiretrio /usr/lib
Subdiretrio /usr/local
Subdiretrio /usr/man
Subdiretrio /usr/bin
Subdiretrio /usr/share
Subdiretrio /usr/src
A hierrquia /var
Subdiretrio /var/adm
Subdiretrio /var/catman
Subdiretrio /var/lib
Subdiretrio /var/local
Subdiretrio /var/ock
Subdiretrio /var/og
Subdiretrio /var/name
Subdiretrio /var/nis
Subdiretrio /var/preview
Subdiretrio /var/run
Subdiretrio /var/spool
Subdiretrio /var/tmp
Alguns Dilemas sobre o Sistema de Arquivos
Descrio sucinta do contedo dos manuais
Pontos Positivos e Negativos
Concluso
Apndices
Comandos Bsicos do Sistema Unix
Perguntas mais Frequentes (FAQs) colocadas na Linux BR
Copyrights Linux e Esquema de numerao verso Linux
Contrato de Licena.
Bibliografia e Referncias

43
44
44
45
45
45
46
47
47
47
47
48
49
50
50
52
53
54
54
54
55
56
56
57
57
58
58
58
58
58
59
59
61
63
64
65
65
77
127
128
134

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

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.

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 a 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
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
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

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)

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(), o 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.

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.

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). A multitarefa est inicializada, e
inicializar o gerenciamento de acesso a multiusurios, atravs do fork() e processos de login.
Estando o kernel carregado e 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 a 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
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().

mais O mecanismo de chamadas a sistema (System calls) est descrito no captulo 3 do Linux
Kernel Hackers Guide (http://www.redhat.com:8080/HyperNews/get/khg.html). 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.

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 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, e as funes relevantes so
load_aout_binary e 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 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 theyre 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.

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 copyon-write confiando nas 386 pginas auxiliares. Um processo alcana suas tabelas de pginas de
seu parent (durante um fork ) com as entradas marcadas como read-only 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 e 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.
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 0s, 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).
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? ]

10

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.

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.

11

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

12

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.
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

13

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 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 porque a 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.

14

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 freepage-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.
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 swap-out ( ) 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)
2)
3)
4)
5)
6)
7)

No brincar com as pginas (reserved) reservadas


Envelhear a pgina se ela marcada acessada (1 bit)
No mexa com pgina adquirida recentemente (last-free-pages ( ))
Deixe pginas sujas com map-counts > 1 intocadas
Diminua o map-count das pginas limpas
Librere pginas limpas se elas no so mapeadas
Troque pginas sujas com um map-count de 1

15

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 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-wp-page ( ) que faz o copy-on-write.
Do-wp-page ( ) faa o seguinte:

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.

16

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 e
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 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
1s no bitmap significam pginas ruins A1 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 get-swap-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-nopage ( ) 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 quando acess-la. Swapfree diminui a conta mantendo no swap-map. Quando a conta abaixa para 0 a pgina pode ser
redistribuda por get-swap-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 ).

17

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.

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 a 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)

18

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.
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 o que o flush architecture no importa: que o 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);
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
19

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 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 umexee esta posto no uma-sum-flags 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.

20

A implemetao deve tambm :

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 a 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);
modify_address_space();
free_page(old_page);
flush_tlb_page(vma, address);
[ ... ]
}

Alguns dos cdigos atuais tem sido simplificados para propositos espesificos.

21

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.

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.

22

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.
2.
3.
4.

Tarefa 1 l uma parte da pgina no 0x2000


Tarefa 2 COW erra a pgina no 0x2000
Tarefa 2 efetiva suas escritas para a nova pgina no 0x2000
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 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.

23

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 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 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

24

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.

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 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

25

5. Sistema de Arquivo no Linux (File System)


5.1.
5.1.1

- Conceitos Fundamentais
- 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

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.

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 acesslos rapidamente e facilmente, ao entra pela primeira vez em sua conta, o usurio j esta em um
subdiretrio denominado subdiretrio de entrada.

5.1.3

- Conta

26

uma senha que aberta pelo administrador do sistema (denominado de root) onde o
usurio indentifica-se para o 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.

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 entrada/sada e so
usados para 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.

27

Figura 03
carvalho:/usr$ ls

X11@
etc/
lib/
spool@

X11R6/
games/
local/
src/

X386@
i486-linux/
man/
tclX/
adm@
i486-linuxaout/
opemwin/
tkX/
bin/
i486-sesv4/
prerve@
tmp@
dict/
include/
sbin/
doc/
info/
share/
ftpusers
mtools.conf
sesog.conf
carvalho:/usr$

28

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
total 11
lrwxrwxrwx

rw-rr-rw-rr-rw-rr-rw-rr--

drwxr-xr-x

1 root

2 root
rw-rr-rw-rr--

root
1 root
1 root
1 root
1 root

9
root
root
root
root

root
1 root
1 root

Dec
743
86
21394
23580

1024
root
root

Dec
314
342

9 14:01 rmt -> /sbin/rmt*


Jul 31 1994 rpc
Jan 28 1994 securette
Dec
9 14:22 sendmail.000
Jan
6 12:28 sendmail.cf
9 13:59 skel/
Jan
Jan

9 1995 slip.hosts
9 1995 slip.login

lrwxrwxrwx

1 root

root

13

Dec

9 13:59 utmp -> /var/og/utmp

lrwxrwxrwx

1 root

root

13

Dec

9 13:59 wtmp -> /var/og/wtmp

rw-rr--

1 root

root

76

Mae

8 1995 e 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

29

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 programa. Passaremos a explicar a codificao, escolhemos aleatoriamente o stimo
arquivo skel/ da figura 04 :

nome do arquivo

10

skel/

obs : o que est em negrito,caixa maior, corresponde a posio do arquivo skel/

1 - informa o tipo de arquivo


2 - Permisses do Proprietrio
3 - Permisses do Proprietrio
4 - Permisses do Proprietrio
5 - Permisses do Grupo
6 - Permisses do Grupo
7 - Permisses do Grupo
8 - Permisses do Sistema
9 - Permisses do Sistema
10 -Permisses do sistema

(ddiretrio,l link, - demais arquivo)


(r leitura, , - no permitida leitura )
(w escrita, - no permitida escrita)
(x execuo, - no permitida execuo)
(r leitura, , - no permitida leitura )
(w escrita, - no permitida escrita)
(x execuo, - no permitida execuo)
(r leitura, , - no permitida leitura )
(w escrita, - no permitida escrita)
(x execuo, - no permitida 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 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
30

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 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 e 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 vrios usurios esto trabalhando juntos em um projeto, ele comumente precisam
compartilhar arquivos. Em decorrncia disto, muitas vezes conveniente que um arquivo
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, a forma
como o Linux implementa compartilhamentdo arquivo.

5.4- Estrutura do Sistema de arquivos do LINUX Release 1.2

31

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 email 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/linux-standards/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.

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.

32

A informao esttica inclui arquivos, biblilotecas, documentao e tudo aquilo que no precisa da
interveno do administrador do sistema. A informao varivel tudo aquilo que se troca com a
interveno do administrador.
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 cdrom, 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 ambos tipos de informao varivel e esttica e
os arquivos 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 .

33

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 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

etc
Configurao do sistema da mquina local com arquivos diversos para a
administrao de sistema.
home

diretrios local(home) dos usurios.

34

lib

arquivos da biblilotecas compartilhadas usados com freqencia

mnt

Ponto de montagem de partio temporrios

root

Diretrio local do superusurio (root)

sbin

Arquvios de sistema essenciais

tmp

arquivos temporrios gerados por alguns utilitrios

usr

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. No abra
subdiretrios dentro /bin.
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.

35

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 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}.

5.4.3.2

- Subdiretrio /boot:

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.

36

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 na instalao,
estes ligao seguramente no se atualizaram se houverem trocas locais no hardware. 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.

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

37

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) e Xmodmap. O
/etc/X11/xdm contm os arquivos de configurao xdm. Estes so a 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, ftpusers, gateway, hosts, host.conf, host.equiv, host.lpd, inetd.conf, networks, 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.
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)

38

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 pode
estar armazenada remotamente usando sistemas como NIS.

5.4.3.6

- Sudiretrio /lib:

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.*, e 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. A localizao usual do arquivo /usr/lib/gcc-lib/ <target>/<verso>/cpp.
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 necessitar. O contedo deste diretrio um assunto local e no deve afetar a
maneira que executamos nenhum programa. recomendamos a no utilizao deste diretrio

39

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 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. Se o usurio necessitar execut-lo, deve de
ir para outro diretrio. 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).

40

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
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. O Gerenciador do boot de inicializao (lilo) e os
comandos de Rede : arp, ifconfig, route.

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. Note que estes
no necessitam ser obricatoriamente verses compiladas estaticamente dos ln e nc, porm podem
ser 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.

41

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. 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@
etc/
lib/
spool@

X11R6/
games/
local/
src/

42

X386@
i486-linux/
man/
tclX/
adm@
i486-linuxaout/
openwin/
tkX/
bin/
i486-sysv4/
preserve@
tmp@
dict/
include/
sbin/
doc/
info/
share/
carvalho:/usr$

5.4.3.12.1 - Subdiretrios /usr (permanente)


Em um sistema tpico teremos mais ou menos os seguintes diretrio :

X11R6
Sistema X Windows Verso 11 release 6

X386

Sistema X Windowss Verso 11 release 5 em plataformas X 386


bin
A maioria dos comandos de usurio
dict
Listas de palavras
doc
Documentao miscelnia
etc

43

Configurao do Sistema
games
Jogos e arquivos educacionais
include
arquivos header(cabealhos) incluidos por programas C
info
Diretrio primrio, o sistema GNU Info
lib
Biblilotecas
local
Hierrquia local
man
Manual on line
sbir
Arquivos de Administrao do Sistema no vitais
share
Informao independente da arquitetura
src
Cdigo fonte

Os seguinte links simblicos a diretrios podem estar presentes. Esta possibilidade baseia-se na
necessidade de preservar a 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

/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

44

composta do sistema X Windows, verso 11 release 5 em plataformas X 86, esta


hierarquia geralmente idntica a /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 localizao fsica dos
interpretador da shell.

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/american-english ou /usr/dict/ british-english.
As listas de palavras para outros linguagem pode usar o nome em ingls para a
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.
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

45

/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

arquivos include

X11

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.

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 Definio de servios RPC de Sun Microsystem.


sys

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.

46

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

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,

47

/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 e-mail
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.
Note que esta localizao requer que /usr/sbin e /usr/sbin/sendmail devem ser executveis para
usurios normais.
Qualquer pacote de programa que contenha e precisa informao 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 em /etc/X11. Este deve incluir informao
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 para ser utilizada pelo administrador de sistemas


quando 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.

/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

48

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 a organizao das pginas do manual


atravs do 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> :

<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

49

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 ISO639 (um cdigo para a representao dos nomes dos 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 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 o cdigo caracteres.
Se o 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 perfil pode ser colocada depois do 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 :

Idioma
Pases
Conjunto caracteres
Diretrio

Ingls
ASCII
/usr/man/em
Ingls
Reino Unido
ASCII
/usr/man/em_GB
Ingls
Estados Unidos
ASCII

50

/usr/man/em_US
Francs
Canad
ISO8859-1
/usr/man/fr_CA
Francs
Frana
ISO8859-1
/usr/man/fr_FR
Alemo
Alemanha
ISO646-DE
/usr/man/de_DE646de
Alemo
Alemanha
ISO6937
/usr/man/de_DE6937
Alemo
Alemanha
ISO8859-1
/usr/man/de_DE.88591
Alemo
Suia
ISO646-CH
/usr/man/de_CH.646ch
Japons
Japo
JIS
/usr/man/ja_JP.jis
Japons
Japo
SJCS
/usr/man/ja_JP.sjis
Japons
Japo
UJ ( EUC-J)
/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.

51

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.
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 e 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

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

52

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

/var
Informao varivel

adm
Informaes administrativa do sistema (obsoleto). Link simblico at
/var/og
catman
Pginas do manual formatadas localmente
lib
Informao do estado das aplicaes
local
Informao varivel do software de /usr/local
ock
arquivos de bloqueio
og
arquivos de Agenda
named
arquivos DNS, somente rede
nis
arquivos base de dados NIS

53

run

arquivos relevantes a processos execuo do sistema

spool

Diretrios de trabalhos em fila para realizar-se depois

tmp

arquivos temporrios, utilizado para manter /tmp menor possvel

/var contm arquivos com informao varivel. Esta incluem arquivos e diretrios 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.

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.

54

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[19], a verso formatada armazenada temporriamente deve ir em /var/catman/<rota2>/cat[1-9],
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 em /var/catman/cat1/ls.1 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[19] 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
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> o lugar apropriado para o 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).

55

/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 previamente ser encontrada em /usr/lib/games. A informao esttica, tal como
textos de ajuda, descries do niveis devem permanecer em /usr/lib/games.

/var/lib/news

/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 TeX.
Particularmente, em /var/lib/texmf/fonts armazenaram todas as fonte 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
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 varivel que esta relacionada com o software
que se encontra em /usr/local. Naturalmente a implementao desta subdiretrio
prerrogativa do administrador do sistema . Como a informao pode estar noutro

56

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 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 a /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, dado que /etc/named.boot o arquivo de inicializao
default, se no fornece argumentos a named.

57

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 <nomeprograma>.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.
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 colocalos 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.

58

/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


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
pequeno.

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

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).

59

A informao armazenada em /var/tmp tipicamente esta numa forma definida


localmente, pois usualmente menos frequentemente 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}


considerado vital.
/sbin {arp, ifconfig, route}

Qualquer coisa que algum usurio queiram utilizar


Qualquer coisa que s root necessita e considera vital.

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


no so vitais.

Alguns arquivos que algum usurio queira utilizar e que

/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
O tamanho do sistema de arquivos raiz
pequeno.
Os arquivos de configurao para a rede pertencem a /etc.
A Estruturas independente da arquitetura, o diretrio/usr/share tipicamente contm arquivos
independente da arquitetura, tais como pginas do manual, fuso horrio, informao de terminais,
etc. No momento presente no h 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 buscar diretamente
/usr/share/man/man1/1s.1, sempre deve referir a /usr/man/man1/1s.1. Qualquer coisa em
/usr/share, ser apontada atravs do uso do 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 /home no estar na raiz, seno enlaado

60

simbolicamente 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 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 e outras ferramentas de rede. Isto
usualmente no necessrio.

5.4.5

- Descries sucinta do contedo dos manuais.

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.

61

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.

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 kern no Sistemas Linux.

6 - Pontos Positivos e negativos

O Linux sem dvida a melhor opo de Unix para PC, pois possui todas as caractersticas um
UNIX moderno, tais como : multitarefa real, 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.

62

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.
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.

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, e reenviada automaticamente para todos os endereos da
lista associada), 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.

63

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.

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:

64

cat < arquivo >

exibir o arquivo em seu terminal; e a linha de comando :

cat < arquivo1 > < arquivo2 > > < arquivo3 >

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

65

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

Esta opo no reporta erros

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.

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.

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)

66

. 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.
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.

67

Sintaxe: chown [-fhR] (proprietrio) (nome-do-arquivo)

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.

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.

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.

68

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.

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

69

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 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:

70

.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-rr-- 1 xyz users 2321 Mar 15 1994


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

Fontmap
file003

drwxr-xr-x 2 xyz users 1024

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

71

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 :
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.

Com esta opo, mkdir cria o nome do diretrio atravs da criao de todos os diretrios-pai no
existentes primeiro.

Exemplo:

72

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:

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.

73

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:

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.

74

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.
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.

75

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 sada-padro 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 referenciandoo. 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:

Remove todos os arquivos (mesmo se estiverem com proteo de escrita) em um diretrio sem
pedir confirmao do usurio.

Esta opo pedir uma confirmao do usurio antes de apagar o(s) arquivo(s)
especificado(s).

76

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

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:

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!

77

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-do-arquivo


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:

Atualiza somente o tempo de acesso respectivo.

Atualiza somente o tempo de modificaco.

Previne a criaco de um arquivo se ele no existia anteriormente.

> As opes default so : -am.

78

Fonte: Universidade Federal de Gois, Instituto de Informtica, home-page do


Projeto de Apoio ao Usurio Internet (http://www.dei.ufg.br/~apoio/unix.html)

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 espelhosveja 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 baseia-se no LINUX FREQUENTLY ASKED QUESTIONS WITH ANSWERS,


mantida 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?
para obter informaes sobre como assinar a lista]

Os documentos do Linux Documentation Project esto em sunsite.unc.edu em


/pub/Linux/docs/LDP. Esses documentos (existem mais em preparao) so indispensveis para
os novatos ou para serem usados como referncia.

79

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.

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)

80

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?
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?
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.

81

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.
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?

82

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?

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

83

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
P9.20. Memory tight no comeo da inicializao
P9.21. You dont 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

84

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
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.

85

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


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?].

86

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.

Existem problemas com mquinas que usam MCA (barramento proprietrio da


IBM), principalmente com o controlador de discos. H um pr-lanamento 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
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

87

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.rwthaachen.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
[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 linux-mips [
P2.8. Quais so as listas de discusso sobre Linux? ]. Pessoas interessadas
podem mandar suas perguntas e ofertas de ajuda para linux@waldorf-gmbh.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

88

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 experimentalo e pouca


coisa mais.

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

89

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
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?

90

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 arquivo 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
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

91

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
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:

92

The Linux Documentation Project manifesto


Installation and Getting Started Guide
The Kernel Hackers Guide
Network Administration Guide
Linux System Administrators Guide

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/linux-br/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

93

importantes. Assine este grupo tambm.

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 certoveja 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 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?

94

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 coisasapropriado 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
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.

95

A distribuio Debian disponvel em ftp.debian.org e a


distribuio Red
Hat em ftp.redhat.com
O contedo destes stios so espelhados (copiados, em geral diariamente) por
outros stios. Por favor use um perto de vocser 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

Nem todos eles espelham todo contedo dos stios originais, e


alguns tm
material que os stios originais no tm.

96

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, CD-ROM 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 a lista de BBSs de Zane Healy healyzh@holonet.net que
regularmente postado (dia 1o e 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 e-mail 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.

97

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.

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 em 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

98

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. Ele foi integrado ao kernel
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+Linux,
ftp://sunsite.unc.edu/pub/Linux/docs/howto/mini/Linux+DOS+Win95+OS2 e
ftp://sunsite.unc.edu/pub/Linux/docs/howto/mini/Linux+OS2+DOS contem

99

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.

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 FTPveja 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

100

comprimidos, mas no pode escrever neles. Procure o pacote ths na


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 o 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.

Questo 3.6. Eu posso rodar programas do Microsoft Windows no


Linux?

101

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.
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 partiono 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

102

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?

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.

103

Voc ainda poder usar essas parties para Linux ou quaisquer


outros
sistemas operacionais que acessem a controladora de disco diretamente.

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?

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.

104

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 pode precisar rodar mk2efs diretamente em
lugar de mkfs -t ext2. A opo -m 0 diz a mkfs.ext2 para no reservar espao
no disco para o superusuriohabitualmente 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 issopor exemplo, aquele includo no pacote util-linux,
disponvel em sunsite e tsx-11.

105

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.

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


sendo de
leitura e escritaisso inclui a partio da raizse 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 d partida ao sistema (ou ativa a 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

sw

por exemplo.

106

Se voc v

Unable to find swap-space signature


voc esqueceu de usar mkswap. Veja a pgina do man(ual) para detalhes;
mkswap funciona de maneira anloga ao mkfs.

Verifique o 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
sua tabela de parties, portanto, cuidado! Se voc est desesperado, pode
usar

dd if=/dev/zero of=/dev/hda bs=512 count=1

107

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?
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; o autor Jean-Marc Verbavatz
jmv@receptor.mgh.harvard.edu. Note que, devido ao fato de comprimir inodes
108

(informao administrativa) e diretrios, alm de contedo de arquivos,


qualquer problema de corrupo pode ser grave.

H tambm um pacote disponvel chamado tcx (Transparent Compressed


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.

109

Questo 4.12. Tem um arquivo /proc/kcore enorme! Posso apaglo?


Nenhum dos arquivos em /proc esto realmente leles 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 avanadotodas 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
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.

110

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.

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

111

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
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
/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

112

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.

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>.

113

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
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. O 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.

114

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.

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.01-linux+elf.tar.gz

115

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
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.

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


/pub/Linux/system/Status/ps/procps-0.99.tgz.

116

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
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

117

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.
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):

tsx-11.mit.edu:/pub/linux/sources/usr.bin/shadow-*

L esto o cdigos fonte; voc provavelmente encontrar os binrios em

118

.../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
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? .

119

Voc pode ver quanta memria e/ou swap voc est usando com o comando free,
ou digitando

cat /proc/meminfo

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
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

120

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!

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

121

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
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 delesveja 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


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

122

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
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:

123

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
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.)

124

Lembre-se que para fazer o novo kernel ser carregado, voc precisa rodar o
LILO depois de copiar o kernel em sua partio raizo 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
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.

125

Questo 7.9. Como remapeio meu teclado para portugus, francs etc.

Para kernels recentes, pegue /pub/Linux/system/Keyboards/kbd-0.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.

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?


126

Use vrias parties ou arquivos de swap - o Linux suporta at 16 reas de


swap, cada um com at 128Mb.

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.

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.

127

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).

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.

128

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

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 dpkg-deb
(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


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?

129

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


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
486SX/DX/DX2
586

clock * 0.33
clock * 0.50

clock * 0.39

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


com o 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.

130

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 e por assinaturas mundialmente. Mande email para linux@ssc.com para
detalhes. Eles esto na WWW em http://www.ssc.com/.

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
olhar em aun.uninett.no em /pub/misc/linux-counter ou na pgina WWW acima.

Questo 8.8. Como se pronuncia Linux?

131

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


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


132

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).

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


133

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 issono 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

Seu compilador (gcc) fez um core dump. Voc possivelmente tem uma verso
velha, com erros ou corrompida do GCCpegue a ltima verso. Voc tembm
pode estar com pouco espao de swapveja 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

134

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
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.

135

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

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

136

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.

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

137

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,


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
138

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.
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

Isso significa que mtools est tendo problemas em acessar o drive. Isso pode

139

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!

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 dont 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

140

estiver registrado no arquivo utmp (provavelmente porque voc o invocou de


um jeito engraado)

Questo 10.1. O Linux suporta X Windows?

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 fazerleia 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.

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
141

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.

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

142

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
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.

Questo 11.4. Meu teclado fica todo esquisito quando troco de VCs.

143

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?

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.

144

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 experimentaresse a melhor forma de se conhecer Unix e Linux.

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-otalvez 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 X Windows gerais pertencem a comp.windows.x.i386unix, no em


comp.os.linux.x. Mas leia o grupo antes (incluindo o FAQ), antes de voc
postar!

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
145

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 e 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

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.

146

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.

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 o 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.

147

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.

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.

148

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 e 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


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

149

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


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 - Ill 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
150

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.

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).

D - Contrato de licena (em Ingls)

O texto a 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.

151

Linus Torvalds

GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright 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 softwareto make sure the software is free for all its users. This General Public
License applies to most of the Free Software Foundations 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 authors 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

152

on, we want its recipients to know that what they have is not the original, 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
everyones 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 (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 Programs 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.

153

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, 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 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

154

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.

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 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

155

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 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 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

156

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

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 linuxbr (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)
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)

157

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.

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

158

Drew Eckhard (US)

drew@coorado .edu

Brondo n S. Allbere

(US)

Ian Jackso

(UK)

ijackso@cus.cam.ac.uk

Rik Faith

(US)

faith@cs.unc.edu

bsa@kf8nh.wariat.org

Iar Mc Coghrie (US)

ian@ucsd.edu

Stephem Harris (UK)

sweh@spudde .mew.co.uk

DaniOQuilan

Daniel.Quinlan@linux.org

(US)

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)

Chris Netcalf

metcalf@lcs.mit.edu

(US)

Theodo re Ts (US)
Ian Murdo ck (US)
Stephem Tweedie
David C. Niemi

dhs@gowworm.firefle .com

te tso@athema.mit.edu
imurdo ck@debian.org
(UK)
(US)

sct@dcs.ed.ac.uk
niemid@clarck.net

159

Você também pode gostar