Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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 :
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.
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.
Data:
Release v1.1
1.1.95
Data:
Release v1.2
1.2.13
Data:
Release v1.3
pre2.0.14
Data:
Release v2.0
2.0.28
Data:
ftp://ftp.cs.Helsinki.FI/pub/Software/Linux/Kernel/v2.0/linux-2.0.28.tar.gz
Release v2.1
2.1.23
Data:
ftp://ftp.cs.Helsinki.FI/pub/Software/Linux/Kernel/v2.1/linux-2.1.23.tar.gz
3-
Gerncia de Processos
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
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.
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.
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
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
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:
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
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
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
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.
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
12
4.4
- Inicializao da memria
memory_start
memory_end
Low memory_start
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.
distribuio de memria
13
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)
cud_code = ex.a_text
cud_data = cud_code + &x.d_data
brK = end_data + ex._bss
14
4.5
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:
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)
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.
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
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.
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.
(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
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.
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.
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.
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
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.
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).
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
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.
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
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
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.
25
- Conceitos Fundamentais
- Arquivos
- Diretrios
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
5.1.4
- Tipos de arquivos
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
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 1995 slip.hosts
9 1995 slip.login
lrwxrwxrwx
1 root
root
13
Dec
lrwxrwxrwx
1 root
root
13
Dec
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
nome do arquivo
10
skel/
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.
31
5.4.1
- Apresentao
5.4.2
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 :
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:
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:
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
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
dev
etc
Configurao do sistema da mquina local com arquivos diversos para a
administrao de sistema.
home
34
lib
mnt
root
sbin
tmp
usr
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
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
35
Comandos gerais:
{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:
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
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
37
sk
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
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.
{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}
{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:
38
5.4.3.6
- Sudiretrio /lib:
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.
5.4.3.9
5.4.3.10
- Subdiretrio /sbin:
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.
comandos gerais;
comandos de sada;
comandos de manipular sistema de arquivos;
gerenciador de boot de inicializao e
comandos de rede.
41
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.
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$
X11R6
Sistema X Windows Verso 11 release 6
X386
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.
44
45
Neste diretrio onde todos os arquivos include de uso geral do sistema para
programao em linguagem C e C++ podem ser localizados.
arquivos include
X11
arpa
asm
bsd
g++
gnu
linux
net
netax25
readline
rpc
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.
X11
Mh
news
Cnews/INN.
smail
Smail.
terminfo
texmf
uucp
Comandos de UUCP.
zoneinfo
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).
arquivos
doc
Documentao local
etc
info
man
48
sbin
Administrao do sistema
scr
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.
<mandir>/<locais>
man1
man2
Chamadas do sistema.
man3
man4
Dispositivos.
man5
Formatos arquivos.
man6
Jogos.
man7
Miscelneas.
man8
Administrao do Sistema.
man9
49
<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
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
spool
tmp
/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.
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.
54
texmf
xdm
/var/lib/emacs
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.
56
astog
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).
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.10
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 *
Diretrio de noticias *
Diretrio de smail *
uucp
Diretrio de UUCP
Nota:
/var/spool/lpd
/var/spool/lpd ---
<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.
59
5.4.4
/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
Esta seo descreve todas as chamadas do sistema (requisio do kern do Linux para realizar
certas operaes).
61
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.
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
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
Apndices
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 >,
64
cat < arquivo1 > < arquivo2 > > < arquivo3 >
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 .
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
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.
As permisses podem ser especificadas de vrias maneiras. Aqui est uma das formas mais
simples de realizarmos esta operao :
. u (para o usurio)
66
. g (para o grupo)
. o (para outros)
. a (para todas as categorias acima)
$ ls -l dir1
drwxr-xr-x 3 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--
drwxr-xr-x
5 - chown : Modifica o proprietrio de um arquivo ou diretrio.
67
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.
68
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
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.
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:
Fontmap
file003
Apr 23 1995
Programs
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
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>
13 -
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
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.
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 -
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
*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 -
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
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.
$ 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 -
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.
*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 -
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:
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 -
mm ms
dd dia
hh hora
MM minuto
yy ano (ltimos dois dgitos)
*Opces:
78
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:
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.
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
80
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
82
83
84
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.
85
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?.
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.
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.
87
estvel.
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.
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
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.
89
Para uma lista completa de stios de FTP veja P2.5. Onde eu pego
material
sobre Linux por FTP?
90
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
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.
92
93
Podem haver grupos de discusso locais sua instituio ou rea verifique-os antes.
94
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).
95
96
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.
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.
97
98
onde hdXY a partio relevante (por ex.: hda1 para a primeira partio do
primeiro disco IDE).
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,
99
mkdir /dos
mount -t msdos -o conv=text,umask=022,uid=100,gid=100 /dev/hda3 /dos
100
mkdir /hpfs
mount -t hpfs /dev/hda5 /hpfs
101
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.
boot = /dev/hda2
102
ativa, para poder usar o Boot Manager para escolher o que carregar.
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.
103
104
fdformat /dev/fd0H1140
mkfs -t ext2 -m 0 /dev/fd0H1140 1440
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.
/dev/hda2
none
swap
sw
por exemplo.
106
Se voc v
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.
(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
107
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.
Para compreender porque seu sistema ficou nesse estado, veja P9.12.
EXT2-fs: warning: mounting unchecked filesystem.
109
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.
110
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 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
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.
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
113
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.
114
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.
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.
115
A verso 1,3,35 do kernel possui algum soporte para threads no kernel, mas
esse cdigo no foi bem testado.
116
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).
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.
Questo 6.5. Linux fica muito lento quando coloco mais memria
117
Algumas vezes a RAM precisa estar em certos soquetes para que a cache possa
atuar.
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.
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-*
118
.../linux/binaries/usr.bin.
Voc provavelmente tem o mesmo problema de P6.5. Linux fica muito lento
quando coloco mais memria., com uma complicao a mais:
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.
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
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.
Inicialize o sistema com um (ou um par de) disquete de emergncia, como por
120
De algum prompt de shell monte seu disco rgido com algo tipo
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.
121
Questo 7.1. Como fao para rolar a tela para cima em modo texto?
Se voc quer usar um console virtual para login normal, voc precisa listar
122
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:
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.
Digite:
123
uname -a
Esse comando afeta todos os programas executados por aquele shell (direta ou
indiretamente) e no no sistema todo.
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?].
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.
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.
125
Questo 7.9. Como remapeio meu teclado para portugus, francs etc.
Questo 7.10. Como fao para deixar o NUM LOCK ligado por default?
for t in 1 2 3 4 5 6 7 8
do
setleds +num &lft; /dev/tty$t > /dev/null
done
Leia o Portuguese-HOWTO
Documentacao para outras linguas tambem podem ser uteis. Tente ver
Danish-HOWTO.
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
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.
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:
128
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.
.rpm o pacote Red Hat RPM, que usado na distribuio Red Hat. Eles podem
ser encontrados em ftp.redhat.com.
129
clock * 0.14
386DX
clock * 0.18
486Cyrix/IBM
486SX/DX/DX2
586
clock * 0.33
clock * 0.50
clock * 0.39
130
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.
131
console|con80x25:\
para
linux|console|con80x25:\
(Se houver um dumb a mais nesta linha, ela dever ser removida.)
Em kernels mais recentes a mensagem foi mudada para lp1 reported invalid
error status (on fire, eh?).
Note que estes no podem ser usados como os antigos; veja o NET-2 HOWTO para
instrues de como configurar redes corretamente.
Voc possui uma verso antiga do ld. Instale um pacote binutils mais recente
em tsx-11.mit.edu em /pub/linux/packages/GCC.
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.
134
Questo 9.9. No utmp entry. You must exec ... quando me logo.
> /var/run/utmp
135
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?].
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.
136
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.
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? ].
137
rm -f /etc/mtab*
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.
Isso significa que mtools est tendo problemas em acessar o drive. Isso pode
139
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!
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?
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
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.
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.
Questo 10.3. Logins pelo xterm aparecem de forma estranha em who, finger
141
etc.
Questo 10.5. O que fao para o X funcionar com a minha TGUI9440, Diamond
Stealth...?
142
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
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
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
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
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.
Por favor leia cuidadosamente o seguinte conselho sobre como escrever sua
145
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.
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.
146
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 voc pode querer dizer em sua mensagem que voc j leu este FAQ e os
HOWTOs apropriados.
Coloque tudo em seu email que voc colocaria em uma mensagem pedindo por
ajuda.
147
148
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/.
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.
149
Linux Frequently Asked Questions with Answers is Copyright 1994, 1995, 1996
by Ian Jackson ijackson@gnu.ai.mit.edu.
Note that this restriction is not intended to prohibit charging for the
service of printing or copying a document supplied by your customer.
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
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.
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).
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
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.
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
156
Bibliografia
Servidores www
Servidores de FTP
157
158
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
ian@ucsd.edu
sweh@spudde .mew.co.uk
DaniOQuilan
Daniel.Quinlan@linux.org
(US)
waltje@infomagic.com
mike@sojurn.lns.pa.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