Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila de Linux
Apostila de Linux
1- Introduo.......................................................................................................
2- Histrico do Linux...........................................................................................
3- Gerncia de Processos.....................................................................................
10
10
10
12
13
13
4- Gerncia de Memria.......................................................................................
15
15
16
17
18
19
22
23
24
4.7.3.1-
27
ndice
4.7.5- Implicaes Referentes a Arquitetura..........................................
28
4.7.5.1-
28
4.7.5.2-
30
31
31
5.1.1- Arquivos.....................................................................................
31
5.1.2- Diretrios....................................................................................
31
5.1.3- Conta..........................................................................................
32
32
33
33
34
35
36
Subdiretrio /bin.......................................................
5.4.3.1.1-
38
39
3
..
ndice
5.4.3.2-
Subdiretrio /boot.....................................................
40
5.4.3.3-
Subdiretrio /dev.......................................................
40
5.4.3.4-
Subdiretrio /etc.......................................................
41
5.4.3.4.1-
5.4.3.5-
Subdiretrio /home....................................................
42
5.4.3.6-
Subdiretrio /lib.......................................................
42
5.4.3.7-
Subdiretrio /mnt......................................................
43
5.4.3.8-
Subdiretrio /proc.....................................................
43
5.4.3.9-
43
5.4.3.10-
Subdiretrio /sbin......................................................
44
5.4.3.10.1-
5.4.3.10.2-
5.4.3.11-
Subdiretrio /tmp......................................................
45
5.4.3.12-
A hierrquia /usr.......................................................
45
5.4.3.12.1-
5.4.3.12.2-
Subdiretrio /usr/x386........................ 47
5.4.3.12.3-
Subdiretrio /usr/bin........................... 47
5.4.3.12.4-
Subdiretrio /usr/dict.......................... 47
5.4.3.12.5-
Subdiretrio /usr/etc...........................
47
5.4.3.12.6-
Subdiretrio /usr/include..................... 48
5.4.3.12.7-
Subdiretrio /usr/lib............................ 49
ndice
5.4.3.13-
5.4.3.12.8-
Subdiretrio /usr/local........................ 50
5.4.3.12.9-
Subdiretrio /usr/man......................... 50
5.4.3.12.10-
Subdiretrio /usr/bin........................... 52
5.4.3.12.11-
Subdiretrio /usr/share.......................
53
5.4.3.12.12-
Subdiretrio /usr/src...........................
54
A hierrquia /var.......................................................
54
5.4.3.13.1-
Subdiretrio /var/adm......................... 54
5.4.3.13.2-
Subdiretrio /var/catman..................... 55
5.4.3.13.3-
Subdiretrio /var/lib............................ 56
5.4.3.13.4-
Subdiretrio /var/local........................ 56
5.4.3.13.5-
Subdiretrio /var/ock.........................
5.4.3.13.6-
Subdiretrio /var/og............................ 57
5.4.3.13.7-
Subdiretrio /var/name....................... 58
5.4.3.13.8-
Subdiretrio /var/nis........................... 58
5.4.3.13.9-
Subdiretrio /var/preview................... 58
5.4.3.13.10-
Subdiretrio /var/run..........................
5.4.3.13.11-
Subdiretrio /var/spool....................... 58
5.4.3.13.12-
Subdiretrio /var/tmp.......................... 59
57
58
63
7- Concluso........................................................................................................
64
ndice
9- Apndices........................................................................................................
65
A-
B-
C-
D-
Contrato de Licena................................................................................
128
8- Bibliografia e Referncias.................................................................................
134
1 - Introduo
O Linux um clone UNIX de distribuio livre para PCs baseados em processadores
386/486/Pentium.
O Linux uma implementao independente da especificao POSIX, com a qual todas as
verses do UNIX padro (true UNIX) esto convencionadas.
O Linux foi primeiramente desenvolvido para PCs baseados em 386/486/Pentium, mas
atualmente tambm roda em computadores Alpha da DEC, Sparcs da SUN, mquinas M68000
(semelhantes a Atari e Amiga), MIPS e PowerPCs.
O Linux foi escrito inteiramente do nada, no h cdigo proprietrio em seu interior.
O Linux est disponvel na forma de cdigo objeto, bem como em cdigo fonte.
O Linux pode ser livremente distribudo nos termos da GNU General Public License (veja
apndice).
O Linux possui todos as caractersticas que voc pode esperar de um UNIX moderno,
incluindo:
Multitarefa real
Memria virtual
Biblioteca compartilhada
"Demand loading"
Gerenciamento de memria prprio
Executveis "copy-on-write" compartilhados
Rede TCP/IP (incluindo SLIP/PPP/ISDN)
X Windows
A maioria dos programas rodando em Linux so freeware genricos para UNIX, muitos
provenientes do projeto GNU.
Muitas pessoas tem executado benchmarks em sistemas Linux rodando em 80486, e tem
achado o Linux comparvel com workstations mdias da Sun e da Digital.
O Linux est disponvel atravs da Internet por meio de centenas de sites FTP.
O Linux est sendo usado hoje em dia por centenas e centenas de pessoas pelo mundo. Est
sendo usado para desenvolvimento de softwares, networking (intra-office e Internet), e como
plataforma de usurio final. O Linux tem se tornado uma alternativa efetiva de custo em relao aos
caros sistemas UNIX existentes.
Um exemplo de pacote de distrribuio do Linux mais populares distribuido pela
InfoMagic (http://www.infomagic.com, e-mail info@infomagic.com), a verso LINUX Developers
Resource CD-ROM, de dezembro de 1996, contm 6 CD-ROMs, seu contedo sucinto :
2. Historia do Linux
O Kernel do Linux foi, originalmente, escrito por Linus Torvalds do Departamento de
Cincia da Computao da Universidades de Helsinki, Finlndia, com a ajuda de vrios
programadores voluntrios atravs da Internet.
Linus Torvalds iniciou cortando (hacking) o kernel como um projeto particular, inspirado em
seu interesse no Minix, um pequeno sistema UNIX desenvolvido por Andy Tannenbaum. Ele se
limitou a criar, em suas prprias palavras, "um Minix melhor que o Minix" ("a better Minix than
Minix"). E depois de algum tempo de trabalho em seu projeto, sozinho, ele enviou a seguinte
mensagem para comp.os.minix:
Voc suspira por melhores dias do Minix-1.1, quando homens sero homens
e escrevero seus prprios "device drivers" ? Voc est sem um bom projeto
e esta morrendo por colocar as mos em um S.O. no qual voc possa
modificar de acordo com suas necessidades ? Voc est achando frustrante
quando tudo trabalha em Minix ? Chega de atravessar noites para obter
programas que trabalhem correto ? Ento esta mensagem pode ser
exatamente para voc.
Como eu mencionei a um ms atrs, estou trabalhando em uma verso
independente de um S.O. similar ao Minix para computadores AT-386. Ele
est, finalmente, prximo do estgio em que poder ser utilizado (embora
possa no ser o que voc esteja esperando), e eu estou disposto a colocar
os fontes para ampla distribuio. Ele est na verso 0.02... contudo eu tive
sucesso rodando bash, gcc, gnu-make, gnu-sed, compresso, etc. nele.
No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira verso "oficial" do Linux,
verso 0.02. Desde ento muitos programadores tm respondido ao seu chamado, e tm ajudado a
fazer do Linux o Sistema Operacional que hoje.
Ultimas verses do kernel do Linux
Release v1.0
1.0.9
Data: Sat Apr 16 21:18:02 UTC 1994
Release v1.1
1.1.95
Data: Thu Mar 2 07:47:10 UTC 1995
Release v1.2
1.2.13
Data: Wed Aug 2 12:54:12 UTC 1995
Release v1.3
pre2.0.14
Data: Thu Jun 6 19:30:56 UTC 1996
Release v2.0
2.0.28
Data: Tue Jan 14 12:33:26 UTC 1997
ftp://ftp.cs.Helsinki.FI/pub/Software/Linux/Kernel/v2.0/linux-2.0.28.tar.gz
Release v2.1
2.1.23
Data: Sun Jan 26 14:12:18 UTC 1997
ftp://ftp.cs.Helsinki.FI/pub/Software/Linux/Kernel/v2.1/linux-2.1.23.tar.gz
3 - Gerncia de Processos
3.1 - Consideraes Iniciais
Para explicarmos como o Linux gerncia processos, faremos consideraes iniciais sobre o
cdigo fonte do kernel do Linux (onde encontramos a implementao da Gerncia de Processos) e a
inicializao boot do sistema.
Neste tpico tentaremos explicar, de uma maneira ordenada o cdigo fonte do Linux,
tentando conseguir um bom entendimento sobre como o cdigo fonte est situado e como as
caractersticas mais relevantes do UNIX foram implementadas. O objetivo ajuda-lo a se
familiarizar com o projeto geral do Linux. Ento, vamos comear por onde o Linux comea: seu
sistema de boot.
Um bom entendimento da linguagem C necessrio para entender este material, assim como
familiaridade com conceitos de UNIX e arquitetura dos PCs. Porm, nenhum cdigo C aparecer
neste material, mas referencias de onde podem ser encontrados.
Qualquer referencia "pathname" arquivos tem como ponto de partida a arvore principal de
fontes, usualmente /usr/src/linux.
A maioria das informaes reportadas aqui tem como referencia o cdigo fonte do Linux
verso 1.0. Referencias a verses posteriores contero o smbolo novo.
Caso o smbolo no estiver presente, significa que no houveram modificaes aps as
verses 1.0.9-1.1.76.
mais Ocasionalmente um pargrafo como este ocorrer no texto. Indicando onde poderam ser obtidas
mais informaes sobre o assunto corrente (geralmente o cdigo fonte).
3.1.1 - Inicializao ("boot" do sistema)
Quando o PC ligado, o processador 80x86 encontra-se em modo real e executa o cdigo
contido no endereo 0xFFFF0, que corresponde a um endereo ROM-BIOS. O BIOS do PC realiza
alguns testes no sistema e inicializa o vetor de interrupes no endereo fsico 0. Depois disto ele
carrega o primeiro setor do device bootavel em 0x7C00, e passa a execuo para este endereo. O
device , usualmente, o disquete ou o disco rgido. A descrio anterior um tanto simplificada,
mas tudo que se necessita para entender o trabalho inicial do kernel.
A primeirssima parte do kernel Linux est escrito em linguagem assembly 8086
(boot/bootsect.S). Quando executado, ele se move para o endereo absoluto 0x90000, carrega os
prximos 2 kBytes de cdigo do device de boot at o endereo 0x90200, e o resto do kernel para o
endereo 0x10000. A mensagem "Loading..." apresentada durante o carregamento do sistema. O
controle , ento passado para o cdigo contido em boot/Setup.S, outro cdigo assembly de modo
real.
A parte de "setup" identifica algumas caractersticas do sistema (hardware) e o tipo da placa
VGA. Se requerido, pede ao usurio para escolher o modo do vdeo da console. E, ento, move todo
o sistema do endereo 0x10000 para o endereo 0x1000, passa para o modo protegido e passa o
controle para o resto do sistema (endereo 0x1000).
O prximo passo a descompresso do kernel. O cdigo em 0x1000 vem de zBoot/head.S
que inicializa os registradores e invoca decompress_kernel(), o qual composto por zBoot/inflate.c,
zBoot/unzip.c e zBoot/misc.c. O dado "descompresso" vai para o endereo 0x100000 (1 Mega), e
esta a principal razo do por que o Linux no pode rodar com menos de 2 Megas de RAM.
mais
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.
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:
A morte de um processo difcil, porque o processo pai necessita ser notificado sobre
qualquer filhos que existam (ou deixem de existir). Alm disso, um processo pode ser morto (kill())
por outro processo (isto um aspecto do UNIX). O arquivo exit.c , portanto, a casa do sys_kill() e
de variados aspectos de sys_wait(), em acrscimo sys_exit().
O cdigo pertencente exit.c no descrito aqui - ele no to interessante. Ele trabalha
com uma quantidade de detalhes para manter o sistema em um estado consistente. O POSIX
"standard", por conseguinte, dependente de sinais (flags), e tinha que trabalhar com eles.
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 they're accessed, while the latter way is used when memory mapping is not supported by the
host filesystem (for example the "msdos" filesystem)".
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.
novo
4 - Gerncia de Memria
4.1 - Gerenciamento de Memria do Linux (LMM)
A execuo do LMM (Linux Memory Manager) exige uma estratgia de paginao com
uma copy-on-write confiando nas 386 pginas auxiliares. Um processo alcana suas tabelas de
pginas de seu parent (durante um fork ) com as entradas marcadas como 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 0's, e ento
h 4 ou mais que indicam na tabela de pginas Kernel.
O user page directories tm as mesmas entradas como swapper - pg - dir dos 768 acima. As
primeiras 768 entradas mapeam o espao usurio.
A vantagem que sempre que o endereo linear acima de 0 X c 0000000 tudo usa a
mesma tabela de pginas Kernel (Kernel page Tables).
O monte usurio permanece no topo do segmento de dados do usurio e desce. O Kernel
Stack no uma bonita estrutura ou segmento de dados que eu possa apontar com um "aqui um
Kernel Stack". Um Kernel Stack_frame (uma pgina) associada com cada novo processo criado e
usado sempre que o Kernel opera dentro do contexto deste processo. Coisas ruins aconteceriam se
Kernel Stack descesse abaixo de seu corrente stack frame. [ Onde o Kernel Stack guardado? Eu
sei que h um para cada processo, mas onde isto armazenado quando isto no est sendo usado? ]
Pginas usurios podem ser roubados ou trocados - Um user page um que mapeado
abaixo de 3 Gb em uma tabela de pginas usurios. Esta regio no contm page directories ou page
tables. Apenas pginas sujas so trocadas.
Menores alteraes so necessrias em alguns lugares ( testes para limites de memria vem para a
mente) para prover suporte para definidos segmentos programados. [ H agora uma modificao - |
c| + O sistema de ligao usado por dosane, Wine, Twin, and Wabi para criar segmentos
arbitrrios. ]
4.2 - Memria Fsica
Aqui est um mapa de memria fsica antes que qualquer processo de usurio for executado.
A coluna da esquerda mostra o endereo de partida do item e os nmeros em negrito so
aproximados.
A coluna do meio mostra os nomes dos itens. A grande coluna da direita mostra a rotina
relevante ou o nome varivel ou explicaes para ingresso.
* Projeto - Inits que adquirem memria so (principais.c) profil - buffer, com, init, psaux, init, rd, ,
init, scsi.dev - init.
Note que toda memria no marcada como livre reservada (mem-init). Pginas reservadas
pertencem ao Kernel e nunca esto livres ou trocadas.
Uma viso de memria do user process.
O cdigo de segmento e dados do segmento extendem todo o caminho de 0 X 00 para 3 Gb.
Correntemente o page fault handler do wp_page confere para assegurar que um processo no
escreve para seu cdigo de espao.
De qualquer modo, pegando o sinal segu, possvel escrever para o code space, causando
ocorrncia de um copy - on - write. O Handler do_no_page assegura que qualquer pgina nova que
o processo adquira pertena ao executvel, uma biblioteca dividida, ao stack, ou dentro do valor do
brK.
Um usurio de processo pode reordenar seu valor brK chamando sbrK ( ). Isto o que
malloc ( ) faz quando precisa. O texto e a poro de dados so distribudos em pginas separadas ao
menos que algum escolha o N opo composta. A biblioteca dividida carrega endereos so
correntemente tornadas da imagem dividida por ele mesmo.
O endereo entre 1.5 Gb e 3 Gb, exceto em casos especiais.
4.3 - Distribuio da memria do processo usurio
O Stack, shlibs e os dados so muito afastados um do outro para serem spanned por uma
tabela de pgina. Todas KPT so divididas por todos processo e deste modo eles no esto na lista.
Apenas pginas sujas so trocadas. Pginas limpas so roubadas e deste modo o processo pode tlos 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.
Aqui est um sumrio de algum dos dados mantidos na tabela do processo que usado para
administrao da memria.
Limites do processo da memria.
Ulong - start_code - and_code - and_data - brk, atart - stock
Erro de contagem de pgina.
Cada projeto init tipicamente torna memory_start e retorna um valor atualizado, se distribui
espaos no memory_start (simplesmente pegando-a). Paging init ( ) inicializa a page-tables no { \ tt
swapper - pg - dir} ( comeando a 0 X 0000000) para cobrir toda a memria fsica do
memory_start para memory_end. Na verdade o primeiro 4 Mb feito no startup_32
(heads).memory_start incrementado se quaisquer nova page-tables so adicionados.
A primeira pgina zerada para bloquear os indicadores das referncias do alapo nulo no
Kernel.
No sched_init ( ) o 1 dt e tss descritores para tarefa [0] so postos no GDT, e carregado para
dentro do TR e LDTR (a nica vez que isto feito explicitamente). Um trap gate (0X80) ordenado
para system-call.( ).
A bandeira tarefa aninhada desligada na preparao para entrada do modo usurio: O
cronmetro ligado. O task-struct para task [0] aparece por inteiro em < linux / sched.h >
mem_map ento construdo por mem_init ( ) para refletir o corrente uso das pginas fsicas. Este
o estado refletido no mapa da memria fsica da seo anterior. Ento Dinux move para dentro do
modo usurio com um iret aps empurrar o corrente ss, esp, etc.
Claro que o segmento usurio para task [0] so mapeados bem sobre os segmentos Kernel e deste
modo a execuo continua exatamente onde isto termina.
Task [0]:
pg_dir = swapper - pg - dir que sigmifica apenas endereos mapeados esto no alcance 3 Gb para 3
Gb + High memory.
LTD [1] = cdigo usurio, base = 0 x 0000000, tamanho = 640 K
LDT [2] = dados usurios, base = 0 x 0000000, tamanho = 640 k
O primeiro exec ( ) pe a LTD entrada para task [1] para os valores usurios da base = 0x0,
limite = task_size = 0 x c 0000000. Depois disso, nenhum processo v os segmentos Kernel
enquanto no modo usurio.
Processos e a Administrao da Memria.
Memria relacionada trabalho feito por fork ( ):
distribuio de memria
1 pgina para o Task-struct
1 pgina para o Kernel Stack
1 para o pg_dir e algumas para pg_tables (cpias - pginas - tabelas)
Outras mudanas
sso pe para o segmento Kernel stack (0x10) para ter certeza?
espo pe para o topo da nova distribuio Kernel - stack - page.
c r 3 pe por copy - page - tables ( ) para indicar para nova pgina de diretrio distribuda
1 dt = LDT (task_nr) cria novo 1 dt descritor
descritores pe no gdt para novo tss e 1 dt [ ]
Os registros restantes so herdados do parent.
Os processos resultam dividindo seus cdigos e segmentos de dados (embora eles tenham
tabelas descritoras locais separados, as entradas indicam para os mesmos segmentos). O stack e
pginas de dados sero copiados quando o parent ou child escreve para eles ( copy-on-write).
Memria relacionada trabalho feito por exec ( ):
distribuio de memria
1 pgina para exec header para omagic
1 pgina ou mais para stack (max_arg_pages)
clear-pgina-tables ( ) usado para remover pginas velhas.
change 1 dt ( ) pe os descritores no novo 1 dt [ ]
1 dt [1] = cdigo base = 0 x 00, limite = task - size
1 dt [2] = data base = 0 x 00, limite = task - size
Estes segmentos so dpl = 3, p=1, s=1, g=1. Tipo = a (cdigo or 2 dados)
Eleva para MAX_ARG_PAGES pginas sujas de arqu e enup so distribudos e guardado ao
topo do segmento de dados para o novo usurio pilha criado.
Ponha os indicadores de instruo do caller cip = ex.a_cutry
Ponha o stack indicador do caller para o stack criado (esp=stack indicador). Este sero
eliminados do Stack quando o caller resume.
Limites de Memria Atualizados
cud_code = ex.a_text
cud_data = cud_code + &x.d_data
brK = end_data + ex._bss
Interrupes e traps so sustentadas dentro do contexto da corrente tarefa. Em particular, o
diretrio de pginas do corrente processo usado na traduo de endereos. Os segmentos, de
qualquer modo, so segmentos Kernel para que todos os endereos lineares apontem para dentro da
memria Kernel quer acessar uma varivel no endereo 0 x 01. O endereo linear 0 x 00000001
(usando segmentos Kernel) e o endereo fsico 0 x 01. O ltimo porque a pgina do processo
diretrio mapea esta extenso exatamente como page_pg_dir.
O espao Kernel (0 x c 0000000 + high - memory) e mapeado pela tabela de pginas Kernel
que so eles mesmos parte da memria reservada. Eles so consequentemente divididas por todos
processos. Durante um fork copy-page-tables ( ) trata tabela de pginas reservadas diferentemente.
Isto pe indicadores no diretrio de pginas de processo para indicar para tabelas de pgina Kernel
e na verdade no distribui novas tabelas de pginas como isto faz normalmente. Como um exemplo
o Kernel - Stack - page ( que ocupa algum lugar no espao Kernel ) no precisa de um associado
page - table distribudos no pg-dir do processo para mape-lo.
O interruptor de instrues pe o indicador stack e o segmento stack do privilgio valor
salvo no Tss do corrente task. Note que o Kernel stack um objeto realmente fragmentado - Isto
no um objeto nico, mas sim um grupo de stack frames. Cada um distribudo quando um
processo criado e deixado quando ele sai. O Kernel stack no deveria crescer to rapidamente
dentro de um contexto de um processo que extende abaixo da corrente frame.
4.5 - Adquirindo e liberando memrias
Quando qualquer rotina Kernel precisa de memria isto acaba chamando get-free-page ( ).
Este est num nvel mais baixo do que Kmallor ( ) (de fato Kmalloc ( ) get-free-page ( ) quando isto
precisa mais memria).
Get-free-page ( ) toma um parmetro, a prioridade.
Possveis valores so gfp_buffer_gfp, Kernel, gfp,nfs e gfp atomic. Isto tira uma pgina do
the free-page-list, atualizados mem_map, zeram a pgina e retorna o endereo fsico da pgina (note
que Kmalloc) retorna um endereo fsico. A lgica do mm depende do mapa da identidade entre o
De todas essas aes, 6 e 7 vo parar o processo poruqe eles resultam na liberao atual de
uma pgina fsica.
A quinta ao resulta uma dos processos perdendo uma pgina limpa no dividida que no
foi acessada recentemente (diminuindo Q rss) que no to ruim, mas os efeitos cumulativos de
algumas iterations pode atrasar o processo muito. No presente, h 6 iterations, deste modo uma
pgina dividida por 6 processos pode ser roubada se est limpa. Page table ento so atualizados e o
TLB invalidado. O trabalho atual de liberar uma pgina feito por free-page ( ), a complementao
de get-free-page ( ). Isto ignora pginas reservadas, atualiza mem-map, e libera a pgina e atualiza o
page-list (s) se no mapeada. Para troca (em 6 em cima), write-swap-page ( ) chamada e no faz
nada notvel da perspectiva da administrao da memria. Os detalhes de shink-buffers ( ) nos
levaria muito longe. Essencialmente isto procura free "buffers" (buffers so uma parte da memria
que segura informao temporariamente quando dados transferem de um lugar para outro) em
seguida escreve buffers sujos, e depois comea com buffers ocupados e chama free-page ( ) quando
pode liberar todos os buffers numa pgina.
Note que page directories, page-table, e reserved pages no so trocadas, roubadas ou
envelhecidas. Eles so mapeadas no process page directories com reserved page tables. Eles so
liberados somente na sada do processo.
The page Fault Handles
Quando um processo criado por fork, ele comea com um page directoru e uma pgina ou
mais do executvel. Deste modo the page fault handles a forte da maioria da memria do
processo. The page fault handles do page-fault ( ) recupera o endereo faltando no registro c r 2. O
cdigo do erro ( recobrado no sys-call.s) diferencia o acesso do user / supervisior e a regio para o
fault-write proteo de uma pgina faltando. O anterior sustentado pelo do-wp-page ( ) e o
posterior pelo do-no-page ( ). Se o endereo falatando maior do que Task-Size, o processo recebe
um SIGKILL [ Por que este controle? Isto pode acontecer somente em Kernel mode por causa da
proteo do nvel do segmento. Estas rotinas tem algumas sutilezas como elas podem ser chamadas
num interrompimento. Voc no ode supor que a tarefa corrente que est executando de-no-page
( ) sustenta trs situaes possveis:
1) A pgina trocada
2) A pgina pertence a biblioteca executvel ou dividida.
3) A pgina est faltando uma pgina de dados no foi distribuda
Em todas as causas get-empty-pgtable ( ) chamada primeiro para assegurar a existncia de uma
page table que cobre o endereo falatando. No terceiro para providenciar uma pgina no endereo
requerido e no caso de uma pgina trocada, swap-in ( ) chamado. No segundo caso, o handles
calls share-page ( ) para ver se a pgina pode ser dividida com algum outro processo. Se isto falhar
leia a pgina do executvel ou biblioteca (Isto repete a chamada para Share-page ( ) se um outro
processo fez o mesmo enquanto isso). Qualquer poro da pgina fora do valor brK zerada.
A pgina lida do disco contada como um erro maior. Isto acontece com um swap-in ( ) ou quando
lida da executvel ou uma biblioteca. Outras casos so consideradas erros menores (mim-flt).
Quando uma pgina divisvel achada ela corite-protected. Um processo que escreve para uma
pgina dividida vai precisar passar por um do-wp-page ( ) que faz o copy-on-write.
Do-wp-page ( ) faa o seguinte:
Mande SIGSEGV se qualquer usar process o est escrevendo para o corrente code-space.
Se a pgina velha no dividida, ento simplesmente no proteja-o.
Seno get-free-page ( ) and copy-page ( ). A pgina adquirire a bandeira suja da pgina velha.
Diminua a conta do mapa da pgina velha.
O TBL mais uma entidade virtual do que um modelo estrito quanto a Linux flush
architecture e concernida. As caracterstica nica so isto mantem em ordem o mapeamento do
processo kernel de algum modo, queira softivare ou hardware.
Cdigo especfico de arquitetura pode precisar ser modificado quando o kernel tiver mudado
um processo/mapeamento kernel.
O shell (um lugar seguro p/ guardar dinheiro ou coisas) esta entidade essencialmente
memory state/estado da memoria como o flush architecture o v. Em geral isto tem as
propiedades seguintes:
Isto sempre vai segurar cpias de dados que podem ser visto como atualizado pelo processo
local.
O funcionamento prprio pode ser relacionado ao TLB e o mapeamento do processo/Kernel page
de algum jeito, isto para dizer que eles podem depender um do outro.
Isto pode, numa configurao cached virtual, causar problemas aliasing se uma pgina fisica
mapeada no mesmo tempo da que duas pginas virtuais e por causa dos bits de um endereo
usado para catalogar a linha cache, a mesma poro do dedo pode acabar residindo no cache
duas vezes, deixando resultados incompativis.
Projetos e DMA podem ou no ter capacidade para ver a cpia de um dedo mais atualizado que
resida no cache do processo local.
Corretamente, suposto que a coerncia num ambiente multiprocessador mantida pelo
subsistema cache/memria. Isto que dizer que, quando um processador requerer um dado no
memory bus de maneira e um outro processador tem uma cpia mais atualizada, de qualquer
jeito o requesitor vai obter uma cpia atualizada que pertena um outro processador.
(NOTA: SMP arquiteturas sem hardware cache conferece mechansms so realmente possveis, o
arquitetura current flush no sustenta isto corretamente, se em algum ponto o Zinux apontar em
algum sistema onda isto uma questo debatida, eu vou adicionar os ganchos necessrios mas no
vai ser bonito)
Sobre o que o Fluch Architecture se importa: sempre, a viso da administrao de memria
hardware de um conjunto de mapeamento do processo Kernel sero consistentes com aqueles do
Kernel page tables.
Se o memory managemat kernel code faz uma modificao para a user process page
modificando o dado via kernel space alias da pgina fsica subjacente, o fio controle de usurio vai
ser o dado correto antes que permitido continuar a execuo, indiferente da cache architecture
e/ou a semntica.
Em geral, quando o estado do espao de endereo mudado somente (em cdigo genrico
da administrao da memria kernelnome de generic kernel management cade) o fluch architecture
hook apropriado vai ser chamado descrevendo que o estado muda totalmente.
Sobre o que o flush architecture no importa: que o mapeamento do DMA DMA/driver
coerncia. Isto inclui DMA mappings (no sentido do MMU mappings) e o cache/DMA dado
consistncia. Estes tipos des assuntos no devem esta no flush architecture, veja embaixo como eles
devem ser manuseados.
Split Instrution/data cache consistncia com respeitro as modificaes feito para processo de
instruo de espao realizado pelo cdigo de sinal de despacho signal dispatch cade. De novo, veja
embaixo como isto devem ser manuseado de um outro jeito.
As interfaces para a flushachitesture e como execut-los em geral todas as rotinas descritos
embaixo vo ser chamados na sequncia seguinte: Fluch-cache-foo(...);
modify-address-space ();
clush - tlb-foo (...)
a lgica aqui : Isto pode ser ilegal num arquitetura dada por um pedao de dado cache para ensitir
quando o mapeamento por aquele dado no existe, portanto o flush deve ocorrer antes que a
mudana feita.
possivl para uma arquitertura de MMU/TLB dada realizar um andamento da tabela
hardware hardware table wolk dos kernel page tables, portanto o TLV flush feito depois que os
page tables terem sido mudados para que depois o hardware s pode carregar a cpia nova da
informao de page table para o TLB
void flush - cache - all (void);
void flush - tlb - all (void);
Essas rotinas so para notificar o architecture specific cade que mapeamento do espao do
endereo kernel uma mudana foi feita ao kernel address space mappings, que significa que os
mapeamentos de todos processos foram efetivamente mudados.
4.7.2 - Implementao da Memria Cache
submeter o dado da cache para memoria antes do que invalidar cada ingresso. Para caches
fsicos, no necessrio realizar uma ao j que mapeamento fsico no tem ponto de apoio no
address space translations.
Para flush-tlb-all todos TLB mappings para o kernel address space devem ser feito consitente
com os OS page tables de qualquer maneira. Norte que com um arquitetura que possua a nao
Para flush-tlb-mm, o tlb/mmu hardware para estar localizado num estado onde isto vai ver
(agora corrente) kernal page table entradas para o espao de endereo pelo mm-strust.
flush_cache_range(struct mm_struct *mm, unsigned long start,
unsigned long end);
flush_tlb_range(struct mm_struct *mm, unsigned long start,
unsigned long end);
uma chance para uma particular range do user address no adelrass space descrito pelo mm-struct
passada esta ocorrendo. As duas notas acima para FLUSH - mm( ) relecianando a mm-struct
passada aplicam-se aqui tambm.
Para Flush-cache-range num virtualmente cached system, todas entradess cache que so nolidas
pena a range partem para o fim no address space descrito pelo mm-struect so para ser
invalidadas.
Para Flush-tlb-range, qualquer ao necessria para causar o MMUITLB hardware no conter
tradues estragados so para ser realizados. Isso significa que quaiquer tradues esto no
Kernel page tables no range start para acabar no address space descrito pelo mm-struet so para
que a administrao da memoria hardware sera deste ponto avanado, por qualquer significado.
void flush_cache_page(struct vm_area_struct *vma, unsigned long address);
void flush_tlb_page(struct vm_area_struct *vma, unsigned long address);
Uma chance para uma nica pgina no address dentro do usar space para o address space
descrito pelo um area-struet passado esta ocorrendo. Uma efetivao, se necessria, pode obter na
mm-struet associado para este address space via uma um - Flags. Este caminho em uma efetivao
onde a instruo e dara space no so unificados, alguem pode conferir para ver se um-exee esta
posto no uma-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.
A implemetao deve tambm :
Para flush-cache-range, num virtualmente cache systam, todas entradas cacha que so validas
para a pgina no addrees no address space descrito pelo uma so para ser invalidados.
Para flush-tlb-range, qualquer ao necessria para causar o MMU/TLB hardware para no
conter tradues estragadas so para ser efetuadas. Isto significa que quaisquer tradues
esto nos kernel page tables para a pgina no address space descrito pelo uma passado so
para que a administrao de memria hardware, sero vistas deste ponto avanado de
qualquer maneira.
4.7.3 - Carregando o Flush-PAGE para a RAM (Unsigned Long Page);
Este o patinho feio. Mas sera semntica necessrio em muitas arquiteturas que precisei
para adicionar isto apra a arquitetura flush para linux. Brevemente, quando (como um exemplo)
serve um kernel um enode cow, isto usa o suposto mapeamento de todas memorias fisicas no
espao kernal para efetuar a cpia da pgina em questo para uma nova pgina. Este apresenta um
problema para caches virtualmente catalogados que so write-back escritos de volta na natureza.
Neste caso, o Kernel toca duas pginas fisicas no espao Kernel. A sequencia do cdigo sendo
descrito aqui essencialmente
parece como:
do_wp_page()
{
[ ... ]
copy_cow_page(old_page,new_page);
flush_page_to_ram(old_page);
flush_page_to_ram(new_page);
flush_cache_page(vma, address);
modify_address_space();
free_page(old_page);
flush_tlb_page(vma, address);
[ ... ]
}
Alguns dos cdigos atuais tem sido simplificados para propositos espesificos.
Considere um cache virtualmente catalogados que escrito de volta write-back. Neste
momento que a cpia da pgina acontece para o supisto espao kernel, possivel para usar space a
viso da pgina original para estar no caches (no endereo do usurio, por exemplo, onde o erro esta
ocorrendo). A cpia da pgina pode trazer este dado (para a pgina velha) dentro do caches. Ser
tambm colocado o dado (no novo suporte kernel mapeado da pgina) sendo copiado para dentro da
cache, e para write-back escrever de volta chachas este dado vai ser sujo ou modificado no cache.
Em tal caso a memoria principal no ser a cpia mais recente do dado. Os caches so
estpidos, ento para a nova pgina que estamos dando ao usurio, sem forar o dado cached no
suposto kernel para a memria principal o processo ser o contedo velho da pgina. (Por exemplo
qualquer lixo que estarem l antes da cpia ter sido feita pelo processamento COW acima).
4.7.3.1 - Exemplo concreto de flush-page
Considere um processo que divide uma pgina, l somente READ-ONLY com maior uma
tarefa (ou varias) no endereo virtual Ox2000, no usar space. E para propsito espesficos deixe nos
dizer que este endereo virtual mapeia para a pgina fsica 0x14000.
Se a tarefa 2 tenha escrever para a pgina l apenas no endereo 0x2000 ns alteremos um
esso e (eventual fragmento do cdigo)
mente resultado no code fragment mostrando acima no do-WP-PAGE ( ).
O Kernel vai obter uma nova pgina para tarefa 2, deixe-nos dizer que esta e uma pgina
fsica 0x2600, e deixe-nos tambem dizer que os mapeamentos do suposto Kernel para pginas
fsicas 0x14000 e 0x26000 podem residir em dias nicos linhas cache ao mesmo tempo buscando
no esquema da linha catalogada deste cache.
O contedo da pgina e copiado do mapeamento Kernel para pgina fsica 0x14000 para uns
para pgina fsica 0x26000.
Neste momento, numa arquitetura cache virtualmente catalogada write - back nos temos
uma inconsistncia potencial. O novo dado copiado dentro da pgina fsica 0x26000 no e
necessrio na memria principal neste momento, de fato isto poder estar toda no cache apenas no
suposto kernel do endereo fsico.
Tambm, o (no modificando, por exemplo, limpo) dado para a (velha) pgina original esta
no cache do suposto kernel para pgina fsica 0x14000, isto pode produzir uma inconsistncia mais
tarde, ento para proteger isto e melhor eliminar as cpias cached deste dado tambm.
Deixe-nos dizer no escrevemos os dados de volta para a pgina no 0x256000 e nos apenas
deixamos isto l. Nos retornariamos para a tarefa 2 (Quem teve esta nova pgina agora mapeada no
endereo virtual 0x2000) ele completaria sua escrita, ento ele leria algumas outras pores de
dados nesta nova pgina (por exemplo, esperando o contedo que existe l antes). Neste momento
seo dado e deixado no cache no suposto kernel para nova pgina fsica, o usurio obter o que que
estava na memria principal antes da cpia para sua leitura. Isto pode levar a resultados dasastrosos.
4.7.4 - Contedo de uma arquitetura virtual
Numa arquitetura cache virtualmente catalogada, fica o que foi necessrio para fazer a
memria principal consistente com a cpia cached da pgina passada do espao kernel.
Nota: Isto na verdade necessrio para esta rotina invalidar linhos em um cache virtual que no
escrito de volta write - back na natureza. Para ver porque isto e realmente necessrio, refaa o
exemplo acima com a tarefa 1 e 2, mas agora fork ( ) ainda outra tarefa 3 antes dos erros do cow
ocorreram, considere o contedo do caches no kernel e user space se a sequencia seguinte ocorre na
exata sucesso:
1.
2.
3.
4.
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
Tais questes so negociadas mais claramente no nvel do Driver do projeto. O autor est
mais convencido disto depois de sua experincia com um conjunto comum de sparc device drivers
que precisaram de toda funo corretamente em mais do que uma hand full de cache/mmu e bus
architetures no mesmo kernel. De fato esta implementao mais eficiente porque o motorista sabe
exatamente quando o DMA precisa ver o dado consistente ou quando o DMA est indo criar uma
inconsistncia que deve ser resolvida. Nenhuma tentativa para atingir este nivel de eficiencia via
cochetes soma ao codigo de administracao generica da memoria kernel seria complexo e muito
obscura como um exemplo, considere no sparc como os DMA buffers so manuscrito. Quando um
device driver deve efetuar o DMA para/de um nico buffer, ou uma dispersa lista de muitos buffers,
ele usa um conjunto de rotinas abstratas.
Char * (*mmu_get_scsi_one)(char de char *, unsigned linux_sbus longo de struct *sbus);
sem (*mmu_sglist (*mmu_get_scsi_sgl)(struct de efeito *, int, linux_sbus de struct *sbus);
sem (*mmu_release_scsi_one)(char de efeito *, unsigned linux_sbus longo de struct *sbus);
sem (*mmu_sglist (*mmu_release_scsi_sgl)(struct de efeito *, int, linux_sbus de struct *sbus);
sem (*mmu_map_dma_area)(unsigned de efeito addr longo, len de int);
Essencialmente o mmu_get_* rotinas so passadas por um indicador ou um conjunto de
indicadores e especificaes de tamanho para res no espao kernel para que o DMA ocorra, eles
retornam para o endereo capaz do DMA (por exemplo um que pode ser carregado do controlador
do DMA para o transferidor). Quando o driver feiro como DMA e o transferidor tiver completado
com o(s) endereo(s) DMA para que recursos possam ser liberados (se necessario) e cache flushes
possam ser efetivados (se necessario). A rotina ter um bloqueio de memoria de DMA por um longo
periodo de tempo, por exemplo, um motorista de networking usaria isto para uma transmissao de
pesquisa ou receber buffers. O argumento final uma entidade especifica Sparc que permite o
codigo do nivel da maquina efetuar o mapeamento se o mapeamento do DMA so ordenados em
uma base por-bus.
4.7.7 - Questes abertas na Arquitetura Cache
H pareceres para muita estupidas arquiteturas cache l fora que queira causar problemas
quando um alias est situado dentro do cache (mesmo um protegido onde nenhuma das entradas do
cache suposto so escreviveis!). Da nota est o mipsr4000 que dar uma exceo quando tal
situao ocorre, elas podem ocorrer quando o processamento cow est acontecendo na corrente
implementao. No mais chips que fazem algo estupido como isto, um exception handler pode flush
as entradas no cache que est sendo reclamado e tudo est em ordem. O autor esta mais concernido
sobre o custo dessas excees durante o processamento cow e seus efeitos que ocorrero na
performance cow, que essencialmente est para flush um user space page e se no o fazendo ento
causaria os problemas acima descritos.
Tem sido tardiamente aquecida a conversa sobre muito inteligentes networking hardware.
Pode ser necessario estender a arquitetura flush para prover as interfaces e facilidades necessarias
para estas mudanas para o codigo networking. claro que, a arquitetura flush sempre sujeita a
aperfeioamentos e mudanas para buscar novas questes ou novos hardwares que apresentam um
problema que estava at este ponto desconhecido
5.1.1 - Arquivos
Conceitualmente, arquivos so mecanismos de abstrao que fornece uma forma de
armazenar e recuperar informaes em disco. A caractersticas mais importante de qualquer
mecanismo abstrao a forma de identificar os objetos como os quais o mecanismo trata.
Quando um processo cria um arquivo, preciso que tal arquivo receba um nome,
normalmente dado pelo processo. Quando tal processo termina sua execuo, o arquivo continua a
existir, podendo ser acessado por outros processos, usando para tanto o nome atribuido ao
arquivo.
O Linux faz distino entre nome maisculos e minsculos. Normalmente um nome de
arquivo composto de nome e uma extenso, separada por ponto no Linux, o tamanho da extenso,
se houver, fica a critrio do usurio, e uma arquivo pode at ter duas ou mais extenes, exemplo :
prog.c.Z.
No h limite de nmeros de caracteres utilizados para dar nome a arquivos.
O Sistema Operacional Linux, olha o arquivo como uma sequncia de byte, sem nenhuma
estrutura, isto d uma flexibilidade espantosa ao sistema de arquivo. Os programas de
usurios, podem colocar o que desejarem nos arquivos e identific-los da forma que lhe for
mais conveniente, o Unix no influncia em NADA nesta processo de identificao.
5.1.2 - Diretrios
Para tratar dos arquivos, o sistema operacional normalmente lana mo do diretrios, no
caso do Linux diretrios hierrquico,vide figura 01. Os diretrios so um tipo de arquivo.
bin
...
- Raiz
usr - Subdiretrios
dev
... - Subdiretrios
Dirson
Raulison
Weslei
5.1.3 - Conta
uma senha que aberta pelo administrador do sistema (denominado de root) onde o
usurio indentifica-se para o computador, que ento d acesso ao seu diretrio de entrada, onde
voc pode executar os comandos permitidos a sua senha. Nos SO padro Unix, a conta obrigatria
para todos, a figura 02 mostra um exemplo de abertura de conta no Linux.
Figura 02
Linux 2.0.0 (carvalho.cpd.ufg.br) (tte p0)
carvalho login: root
Password:
Ast login: Wed Jan 29 12:16:37 from
jacaranda.cpd.uf
Linux 2.0.0.
carvalho:~$
Figura 03
carvalho:/usr$ ls
X11@
X11R6/
X386@
adm@
bin/
dict/
doc/
ftpusers
carvalho:/usr$
etc/
games/
i486-linux/
i486-linuxaout/
i486-sesv4/
include/
info/
mtools.conf
lib/
local/
man/
opemwin/
prerve@
sbin/
share/
sesog.conf
spool@
src/
tclX/
tkX/
tmp@
root
root
root
root
root
root
root
root
root
root
root
9
743
86
21394
23580
1024
314
342
13
13
76
Como vimos neste exemplo, o Sistema de Arquivo do Linux permite restringir o acesso aos
arquivos e diretrios permitindo que somente determinados usurios possam acess-los. A cada
arquivo e diretrio associado um conjunto de permisses. Essas permisses determinam quais
usurios podem ler, escrever, ou alterar um arquivo, e no caso de arquivos executveis como
programas, quais usurios podem execut-lo. Se um usurio tem permisso de execuo de um
diretrio, significa que ele pode realizar buscas dentro daquele diretrio, e no execut-lo como se
fosse programa. Passaremos a explicar a codificao, escolhemos aleatoriamente o stimo arquivo
skel/ da figura 04 :
d
r
w
x
r
x
r
x
nome do arquivo
1
2
3
4
5
6
7
8
9
10
skel/
obs : o que est em negrito,caixa maior, corresponde a posio do arquivo skel/
Para cada arquivo o Linux mantem o modo do arquivo (regular, diretrio ou arquivo
especial), seu tamanho, o instante da ltima modificao, e outra informaes pertinentes. Os
programas podem verificar estas informaes, usando a chamada STAT. Seu primeiro parmetro o
nome do arquivo. O segundo um ponteiro para a estrutura onde a informao solicitada deve ser
colocada.
As chamadas do sistema relacionadas com os diretrios ou com o sistema de arquivo como
um todo , em vez de um arquivo especficos. Os diretrios so criados utilizando as chamadas
MKDIR e RMDIR, respectivamente. um diretrios o pode ser removido se estiver vazio.
A ligao de um arquivo cria uma nova entrada no diretrio que aponta para um arquivo
existente. A chamada LINK cria esta ligao. Os seus parmetros especificam os nome originais e
novo, respectivamente. As entrada do diretrios so removidas via UNLINK. Quando a ltima
ligao para um arquivo removida, automaticamente apagada . Para um arquivo que nunca foi
ligado, o primeiro UNLINK faz com que ele desaparea.
Os diretrios de trabalho especificado pela chamada CHDIR. Sua execuo faz com que
haja mudana na interpretao dos nome dos caminhos realtivos.
A chamada CHMODE torne possvel a mudana do modo um arquivo, ou seja, de seus
bits de proteo.
5.4.1 - Apresentao
Este trabalho baseado na verso 1.2 da Estrutura do Sistema de arquivos do LINUX
(LINUX File System Structure) FSSTND, que por sua vez baseado em um documento de
consenso da comunidade Linux (que poder ser encontrado na internet -www.linux .org) o layout
do sistema de arquivos foi inicialmente desenvolvido dentro da lista de e-mail FSSTND do
LINUX-ACTIVISTS.
O coordenador do FSSTND Daniel Quinlan <Daniel.Quinlan@linux.org>. Uma parte
considervel deste trabalho foi tirado da FAQ (Lista de perguntas mais frequentes) mantida por Ian
McCoghrie (FSSTND-FAQ). Este documento est disponvel via ftp anonymous em tsx-11.mit.edu
no diretrio /pub/linux/docs/linux-standards/fsstnd/ FSSTND-FAQ
Nosso trabalho enfocar a estrutura do sistema de arquivos para LINUX tpico, incluindo a
localizao de arquivos e diretrios, e o contedo de alguns arquivos de sistema.
O sistema de arquivos Linux segue o mesmo princpio bsico que a maioria dos sistemas de
arquivos UNIX seguem. Apesar que o sistema de arquivo no concordar em 100% com cada
aspecto possvel de alguma implementao particular do sistema UNIX. De qualquer forma, muitos
dos aspectos da implementao do sistema de arquivos esto baseados em idias encontradas em
sistemas similar ao UNIX system V, outros fatores tambm foram levado em conta tais como :
Prticas comuns na comunidade LINUX.
A implementao de outras estruturas de sistemas de arquivos.
Definio das categorizao ortogonal de arquivos: Compatvel vs. no comptivel. e varivel
vs. estticos.
A informao compatvel aquela que pode ser compartida entre vrias mquinas diferentes.
A no compatvel aquela que deve ser localizada em uma mquina particular. Por exemplo, os
diretrios local dos usurios so compatvel, porm os arquivos de bloqueio do dispositivo (lock
file) no so compatveis.
A informao esttica inclui arquivos, biblilotecas, documentao e tudo aquilo que no
precisa da interveno do administrador do sistema. A informao varivel tudo aquilo que se
troca com a interveno do administrador.
O entendimento destes princpios bsicos ajudar a guiar a estrutura de qualquer sistema de
arquivos bem planejado.
A distino entre informao compatvel e no compatvel necessria por vrias razes:
Em um ambiente de rede, existe uma boa quantidade de informao que se pode compartilhar
entre diferentes mquinas para o aproveitamento de espao e facilitar a tarefa da administrao.
Em um ambiente de rede, certos arquivos contm informao especifica de uma s mquina,
portanto, estes sistemas de arquivos no podem ser compartilhados (antes de tomar medidas
especiais).
As implementaes de fato do sistema de arquivos no nos permitem que a hierrquia /usr
fosse montada somente para leitura, porque possua arquivos e diretrios que necessitavam ser
escritos muito freqentemente. Este um fator que deve ser atacado quando algumas parte de /usr
so compartilhadas na rede.
A distino "compatvel" pode ser usada para suportar, por exemplo:
uma partio /usr (o componente de /usr) montada (somente para leitura) atravs da rede
(usando NFS).
uma partio /usr (o componente de /usr) montada somente para leitura de um cd-rom, pode
ser considerado como um sistema de arquivos somente para leitura, compartilhado com outros
sistemas LINUX utilizando o sistema de e-mail como uma rede.
A distino "esttica" contra "varivel" afeta o sistema de arquivos de duas maneiras
principais:
Arquivo da /(raiz) contm ambos tipos de informao, varivel e esttica necessita permitir
leitura e escrita.
Arquivo do /usr tradicional contm ambos tipos de informao varivel e esttica e os
arquivos poderamos desejar montar-los somente para leitura, necessrio proporcionar um
mtodo para fazer que /usr funcione somente para leitura. Isto se faz com a criao de uma
hierrquia /var que funciona leitura e escrita (ou parte de uma partio leitura-escrita tal como /),
que diminui muito a funcionalidade tradicional da partio /usr.
O diretrio raiz / . Esta sesso descreve a estrutura do diretrio raiz. O contedo do sistema
de arquivos raiz ser adequado para carregar, dar boot, restaurar, recuperar o sistema:
Para carregar o sistema, deve estar presente o suficiente como para montar /usr e outras
parte no essenciais do sistema de arquivos.
Esta inclui ferrramentas, informao do configurao e do boot de inicializao (boot
loader) e algum outra informao essenciais ao inicilizar.
Para habilitar a recuperao e /ou a reparao do sistema, estar presente no sistema de
arquivos raiz aquelas ferrramentas que o administrador experimentado necessitaria para
diagnosticar e reconstruir um sistema danificado .
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.
Tabela 01
bin
boot
dev
etc
administrao de sistema.
home diretrios local(home) dos usurios.
lib
arquivos da biblilotecas compartilhadas usados com freqencia
mnt Ponto de montagem de partio temporrios
root Diretrio local do superusurio (root)
sbin Arquvios de sistema essenciais
tmp arquivos temporrios gerados por alguns utilitrios
usr
todos os arquivos de usurios devem estar aqui (segunda maior hierrquia)
var
Informao varivel
Cada diretrio listado ser discutido em detalhe em uma subsesso separada mas
adiante. /usr e /var, cada un tem seu prpria sesso de documentos.
O kern do LINUX estaria localizado na raiz / ou no /boot. Se estiver localizado em /
recomendado usar O nome VMLINUX o VMLINUZ, nome que dever ser usados em programas
fonte do kern do LINUX recentemente. Mais informao da localizao do kern pode-se encontar
na sesso sobre a raiz / neste trabalho.
5.4.3.1 - Subdiretrio /bin
Composio : Arquivos Binrios de comandos essenciais de usurios (disponveis para todos os
usurios).
Contm os comandos que podem ser utilizados pelos usurios e pelo administrador do
sistema, porm que so requeridos no modo mono-usurio (single-user mode) pode tambm conter
comandos que so utilizados indiretamente por alguns scripts.
Todos os arquivos utilizados somente pelo root, tal como daemons, init, gette, update, etc.
Estariam localizados em /sbin ou /usr/sbin dependendo se so ou no essenciais. No abra
subdiretrios dentro /bin.
Os arquivos dos comandos que no so suficientemente essenciais para estar em /bin
estaram localizados em /usr/bin, os elementos que so utilizados pelos usurios isoladamente
(porm no pelo root) (mail, chsh, etc.) no so suficientemente essenciais para estar dentro da
partio /.
5.4.3.1.1 - Arquivos e/ou comandos disponveis em bin
Os arquivos que devem estar em /bin so : comandos gerais e comandos de rede.
Comandos gerais:
Os seguintes comandos devero sido includos porque so essenciais.
Alguns estaram presente e tradicionalmente devero estado em /bin.
{arch, cat, chgrp, chmod, chown, cp, date, dd, df, dmeg, echo, ed, false, kill, in, login,
mkdir, mknod, more, mount, mv, ps, pwd, rm, rmdir, sed, setserial, sh, sfte , seu, sinc, true,
umount, uname}.
Se /bin/sh bash, ento /bin/sh seria em links simblico a /bin/bash dado que bash se
comporta diferente quando carregado como sh ou bash. A pdksh que pode ser a /bin/sh nos
discos de instalao e seria igualmente carregada a que /bin/sh faz um links simblico a /bin/ksh.
Outros links simblicos de sistemas utilizando outros programas, ento a partio / conter os
componente mnimos necessrios.
Por exemplos, muitos sistemas incluiria cpio como de segunda utilidade mais usado para
reparos depois do tar. Porm jamais se espera restaurar o sistema da partio /, ento estes arquivos
podem ser omitidos (montar / em chip ROM, montar /usr no NFS). Se a restaurao do sistema se
planeja atravs da rede, Ento FTP o TFTP (junto com todo o necessrio para obter uma conexo
FTP) estariam disponveis na partio /.
Os comandos de restaurao podem aparecer em /bin ou /usr/bin em sistemas LINUX
diferentes.
Comandos de redes.
Estes so unicamente os arquivos de rede que os usurios e o root queiram ou necessitem
executar que no estejam no /usr/bin ou /usr/local/bin {domain name, hostname, netstat, ping}.
5.4.3.2 - Subdiretrio /boot:
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.
5.4.3.3 - Subdiretrio /dev
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.
Existe dois modo para a instalao dos scripts de comandos "rc" os quais so chamados por
init no momento de carregar, ou o modo /etc/rc.d/* etc do System V. Qualquer que seja o
escolhido pode ser utilizado uma mescla dos dois.
Os sistemas com a senha de passwords sombreadas (shadow password) tero arquivos de
configurao adicionais, em /etc (/etc/shadow e outros) e /usr/bin (useradd, usermod, e outros).
5.4.3.5 - Subdiretrio /home:
Composio : diretrios locais dos usurios (opcional)
O sudiretrio /home claramente um sistema de arquivos especfico do diretrio local. A
regra de cri-lo difere de mquina para mquina. Descreve uma localizao sugerida para os
diretrios local dos usurios, assim, recomendamos que todas as distribuies LINUX usem esta
lugar como localizao default dos diretrios locais.
Em sistemas pequenos, cada diretrio de usurio um dos subdiretrios debaixo /home,
/home/dirson, /home/raulison, /home/weslei, etc.
Em sistemas grande (especialmente quando os diretrios /home so compartilhados entre
vrias mquinas usando NFS) til subdividir os diretrios local . A subdiviso pode ser
implementada utilizando subdiretrios tal como /home/apoio, /home/docs, /home/cartas, etc.
Muitas pessoas preferem colocar as contas dos usurios numa variedade de lugares, portanto,
ningum dever confiar nesta localizao. Se voc deseja encontar o diretrio local de qualquer
usurio, deveria usar a funo de bibliloteca getpwent em vez de contar com /etc/passwd, porque
a informao pode estar armazenada remotamente usando sistemas como NIS.
5.4.3.6 - Sudiretrio /lib:
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 preprocessador 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
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 para
programas de instalao, e sugerimos utilizar um diretrio temporrio adequado que no esta em
uso pelo sistema.
5.4.3.8 - Subdiretrio /proc
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).
Arquivos como chfn que os usurios usam ocasionalmente devem estar em /usr/bin. ping
que absolutamente necessrio para o root tambm frequentemente usado pelos usurios,
devero estar em /bin. Os usurios comuns no tero que por os diretrios sbin em seu caminho
(path).
recomendado que os usurios tenham permisso de leitura e execuo em tudo que se
encontra em /sbin exceto talvez certos programas; setuid e setgid. A diviso entre /sbin e /bin no
foi criada por motivos de segurana para evitar que os usurios violem o sistema operacional, foi
cirada para promover uma boa partio entre arquivos que todos usam e os que so utilizados
principalmente para as tarefas administrativas. No h utilidade inerente na segurana em fazer
que /sbin esteja fora do alcance dos usurios.
5.4.3.10.1 - Arquivos e/ou comandos armazenados em /sbin
Arquivos armazenados so dos seguintes tipos :
comandos gerais;
comandos de sada;
comandos de manipular sistema de arquivos;
gerenciador de boot de inicializao e
comandos de rede.
Os comandos gerais so clock, gette, init, update, mkswap, swapon, swapoff, telinit.
Os comandos de sada so fastboot, fasthalt, halt, reboot, shutdown.
Os comandos de manipular sistemas de arquivos so fdisk, fsck, fsck.*, mkfs, mkfs.*, onde
* = um dos seguinte. ext, ext2 minix, msdos, xia, e talvez outros.
Os comandos do sistema de arquivos ext2 (opcional) so badbocks, dumpe2fs, e2fsck,
mke2fs, mkost+found, tune2fs. O Gerenciador do boot de inicializao (lilo) e os
comandos de Rede : arp, ifconfig, route.
etc/
games/
i486-linux/
i486-linuxaout/
i486-sysv4/
lib/
local/
man/
openwin/
preserve@
spool@
src/
tclX/
tkX/
tmp@
dict/
doc/
carvalho:/usr$
include/
info/
sbin/
share/
Os seguinte links simblicos a diretrios podem estar presentes. Esta possibilidade baseiase 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
/usr/prerve
/usr/spool
/usr/tmp
/var/spool/locks
------------------>
------------------>
------------------>
------------------>
------------------>
/var/adm
/var/prerve
/var/spool
/var/tmp
/var/lock
Uma vez que o sistema no precise mais de alguns dos liks anteriores, deve existir um links
deste /usr/X11 apontando para a hierarquia do sistema X Windows atual.
5.4.3.12.2 - Subdiretrio /usr/X386
composta do sistema X Windows, verso 11 release 5 em plataformas X 86, esta
hierarquia geralmente idntica a /usr/X11R6, exceto que os links simblicos de /usr devem estar
ausente se estiver instalado /usr/X11R6.
5.4.3.12.3 - Subdiretrio /usr/bin
composta da maioria dos comandos do usurio, este o diretrio principal de comandos
executveis no sistema possui o mh (comandos para o sistema de manipular e-mail MH) e o X11
(link simblico at /usr/X11R6/bin).
Os interpretadores de scripts dos shell (invocados com #! <rota> na primeira linha do script
de shell) no podem depender de uma rota, vantajoso o padronizar a localizao dos elos. A shell
Bourne e C to fixos em /bin, pois Perl, Pethon, Tlc se encontram em muitos lugares diferentes
/usr/bin/perl, /usr/bin/pethon e /usr/bin/tcl devem refernciar a os interpretador de shell perl,
pethon e tcl respectivamente. Estes podem ser links simblicos a localizao fsica dos
interpretador da shell.
5.4.3.12.4 - Subdiretrio /usr/dict - Listas de palavras
Arquivos recomendados em /usr/dict (words), tradicionalmente esta diretrio contm
somente arquivos words de palavras inglesas, o qual utilizado por "look" para vrios programas
de ortografia, words pode utilizar ortografia americana ou britnica. Os usurios que precisam
ambos, podem concatenar words a /usr/dict/american-english ou /usr/dict/ british-english.
As listas de palavras para outros linguagem pode usar o nome em ingls para a linguagem,
por exemplo, /usr/dict/french, /usr/dict/danish, etc. Estes devem, se possvel, utilizar o jogos de
caracteres ISO 8859 que faz aprpriado para linguagem em questo, e se possvel, o jogo de
caracteres ISO 8859-1 (Atin1) deve ser utilizado (muito raramente possvel faz-lo)
Qualquer outra lista de palavras, tal como o diretrio web2, deve ser incluido aqui,
razovel ter aqui s as listas de palavras, e que elas so os nicos arquivos comum a todos
os verificadores de ortografia.
5.4.3.12.5 - Subdiretrio /usr/etc
Contm a configurao do sistema, porm armazenar a configurao /usr/etc do software
que se encontra em /usr/bin e /usr/sbin um problema. Montar /usr somente para leitura de um CDROM ou atravs de NFS difcil no melhor dos casos.
Uma possvel soluo que considerada foi eliminar completamente /usr/etc e especificar que
todas as configuraes se armazenem em /etc. Acontece que existe a possibilidade de que muitos
site podem querer ter alguns arquivos de configurao que no estejam na sua mquina local.
Eventualmente, decide-se que /etc dever ser o nico diretrio que seja referenciado pelos
programas (Isto , todos devem buscar configuraes em /etc e no /usr/etc). Qualquer arquivo de
configurao que necessissrio para todo o sistema e que no era necessrio antes de montar /usr
(em uma situao de emergncia deve estar localizado em /usr/etc).
Arquivos
especificos
em /etc, em mquinas especficas podem ter ou no um link simblicos aos arquivos de
configurao localizados em /usr/etc. Isto tambm significa que /usr/etc tecnicamente um diretrio
opcional no sentido restrito, mesmo assim recomendamos que todos os sistemas LINUX o
incorporem.
No recomendado que /usr/etc contenha links simblicos que apontem para arquivos /etc.
Isto desnecessrio e interferem no controle local das mquinas que compartem o diretrio/usr.
5.4.3.12.6 - Subdiretrio /usr/include
Neste diretrio onde todos os arquivos include de uso geral do sistema para programao
em linguagem C e C++ podem ser localizados.
Descrio dos principais sudiretrios de /usr/include :
/usr/include arquivos include
X11 Link simblico at /usr/X11R6/include/X11
arpa Definio do protocolo definido por ARPNET.
O arquivo sendmail refernciado por muitos programas com seu nome histrico
/usr/lib/sendmail. Este deve ser um links simblico, a localizao layout para os agente de
transferncia de e-mail com uma interface de linha de comando compatvel com o sendmail,
/usr/bin/sendmail.
Em sistemas que utilizam smail devem localizar smail em /usr/sbin/smail e /usr/bin/sendmail
deve ser um links simblico a smail.
Este regra vai de encontro tambm com a nova ocorrncia no layout sendmail definida em
Sendmail 8.6.x e BSD 4.4.
Note que esta localizao requer que /usr/sbin e /usr/sbin/sendmail devem ser executveis
para usurios normais.
Qualquer pacote de programa que contenha e precisa informao que no necessite ser
modificada deve armazenar tal informao em /usr/lib (o /usr/local/lib, esta instalado localmente).
Recomenda-se a utilizao de um subdiretrio em /usr/lib para este propsito.
A informao de jogos armazenada em /usr/lib/games deve ser apenas informao esttica.
Qualquer arquivo modificvel tal como arquivos demarcado, registros de jogos e similar, devem de
ser localizados em var/lib. necessrio para compatibilidade de jogos, pode-se usar um links
simblico desde /usr/games/lib at /usr/lib/games.
Nota: nenhuma informao especifica de host para o sistema X Windows deve armazenar-se
em /usr/lib/X11 (que realmente /usr/X11R6/lib/X11). Os arquivos de configurao especificos do
host tal como Xconfig o XF86Config devem ser armazenados em /etc/X11. Este deve incluir
informao de configurao como o stem.twmrc, se for somente um links simblico, um arquivo de
configurao mais global (talvez em /usr/etc/X11 ou /usr/X11R6/lib/X11).
5.4.3.12.8 - Subdiretrio /usr/local
A hierarquia /usr/local est para ser utilizada pelo administrador de sistemas quando instala
o Linux localmente. Necesssita ficar a salvo de ser sobrescrito quando o software do sistema se
atualiza. Pode ser usado por programas e por informao que so compatvel entre um grupo
mquinas, pois no se encontram em /usr.
/usr/local Diretrios da Hierrquia local
bin
arquivos
doc
Documentao local
etc
arquivos de configurao utilizados somente no local
games Jogos instalados localmente
lib
Biblilotecas para /usr/local
info Pginas de informao local
man Hierrquias de pginas de manual para /usr/local
sbin Administrao do sistema
scr
Cdigo fonte local.
Este diretrio deve estar vazio ao terminar de instalar LINUX pela primeira vez. No deve
haver excees regra , exceto quia os subdiretrios vazios listados.
O software instalado localmente deve estar localizado dentro de /usr/local, em vez de /usr a
menos que esteja sendo instalado para reemplantar ou atualizar software em /usr.
Note que o software localizado em / ou em /usr pode ser sobrescrito por atualizaes do
sistema (assim mesmo, recomendado que as distribuies no sobrescrevam informaes /etc fora
destas circunstncias). Por esta razo, o software local no deve se colocado fora de /usr/local sem
uma boa causa.
5.4.3.12.9 - Subdiretrio /usr/man
Idioma
Pases
Ingls
Ingls
Ingls
Francs
Francs
Alemo
Alemo
Alemo
Alemo
Japons
Japons
Japons
-------Reino Unido
Estados Unidos
Canad
Frana
Alemanha
Alemanha
Alemanha
Suia
Japo
Japo
Japo
Conjunto
caracteres
ASCII
ASCII
ASCII
ISO8859-1
ISO8859-1
ISO646-DE
ISO6937
ISO8859-1
ISO646-CH
JIS
SJCS
UJ ( EUC-J)
Diretrio
/usr/man/em
/usr/man/em_GB
/usr/man/em_US
/usr/man/fr_CA
/usr/man/fr_FR
/usr/man/de_DE646de
/usr/man/de_DE6937
/usr/man/de_DE.88591
/usr/man/de_CH.646ch
/usr/man/ja_JP.jis
/usr/man/ja_JP.sjis
/usr/man/ja_JP.ujis
Informao varivel
adm
catman
lib
local
ock
og
named
nis
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.
5.4.3.13.1 - /var/adm : Agenda do sistema e arquivos contabilizados (obsoleto)
Este diretrio tem sido repassado para /var/og e outros diretrios . Deve ser um links
simblico a /var/og at que todos os programas no se refiram mas a algum arquivo em /var/adm.
utmp seja movido a /var/run. Todos os arquivos agendas vo ser movidos a /var/og
incluindo o arquivo wtmp.
O suporte de empacotamento das distribuies deve armazenar em /var/lib/<nome>.
Nota: O links simblico /var/adm no deve ser necessrio a maioria dos sistemas Linuxi386ELF dado que Otroca foi
introducido antes que ELF fora liberado al pblico.
5.4.3.13.2 - /var/catman : Pginas do Manual Formatadas localmente (opcional)
Este diretrio poporcionara uma localizao padro para os computadores que utilizam
uma partio /usr somente para leitura , pois desejam permitir o armazenamento temporrio de
pginas do manual formateados localmente. Os administradores que montaram /usr como escrita
(intalaes mono-usurios) podem escolher no usar /var/catman e exibir as pginas do manual
formatadas dentro dos diretrios cat[1-9] dentro /usr diretamente. Recomendamos que a maioria dos
administradores utilizem uma das seguintes opes em seu lugar.
Preformatando todas as pginas do manual dentro /usr com o programa (catman).
No ser permido o armazenamento temporrio das pginas formatadas do manual e precise
que se execute nroff cada vez que necessite uma pgina.
Se permita o armazenamento temporrio local das pginas do manual em /var/catman.
A estrutura de /var/catman necessita refrear ambos, O trecho da existencia de multiplas
hierarquias de pgina do manual e a possibilidade do uso de multiplos idiomas.
Dada uma pgina do
manual sem formatar que normalmente aparece em
/usr/<rota1>/man/man[1-9], a verso formatada armazenada temporriamente deve ir em
/var/catman/<rota2>/cat[1-9], aonde <rota2> <rota1>. Os componentes <rota2> e <rota1> esto
ausente no caso de /usr/man e /var/catman.
Por exemplo, /usr/man/man1/ls.1 formatado em /var/catman/cat1/ls.1 e
/usr/X11R6/man/<locais>/man3/XtCass.3x
esta
formatado
em
/var/catman/X11R6/
<locais>/cat3/XtCass.3x .
As pginas do manual escritas em /var/catman/cat[1-9] podem eventualmente, transferir-se
a /usr/<rota>/cat[1-9]. De igual forma as pginas do
manual formatadas dentro de
/usr/<rota>/cat[1-9] podem expirar se no so acceitas num perodo do tempo.
Se tivessem pginas do manual preformatadas com um sistema Linux num meio somente
para leitura (por exenplo um CD-ROM), devem estar instaladas em /usr/<rota>/cat[1-9].
/var/catman est reenviado para um lugar de armazenamento temporrio para pginas de manual
formatados.
5.4.3.13.3 - /var/lib : Informao de Estado das Aplicaes.
/var/lib.- Informao de Estado das Aplicaes
emacs Diretrio do estado do Emacs
games Informao varivel de jogos
news Arquivos variveis de Cnews/INN
Pode requerer um links simblico desde /var/og/utmp at /var/run/utmp basta que nenhum
programa se refira a /var/adm/utmp (/var/adm em si mesmo um links simblico transicional at
/var/og).
5.4.3.13.7 - /var/named : arquivos DNS
Este diretrio contm todos os arquivos de trabalho do servidor de nomes Internet, named.
Recomendamos que /etc/named.boot seja um links simblico at /var/named/named.boot, dado que
/etc/named.boot o arquivo de inicializao default, se no fornece argumentos a named.
5.4.3.13.8 - /var/nis
Arquivos de base de dados do servio de informao de rede (NIS) o sistema de
informao de rede (NIS) era anteriormente conhecido como as pginas Amarelas Sun. A
funcionalidade e localizao de diretrios de ambos o mesmo pois o nome (yelow Page) uma
marca registrada no Reino Unido , pertencem a Bristish Telecommunications plc. e no pode ser
usada sem permiso.
5.4.3.13.9 - /var/preview:arquivos guardados depois de uma coliso ou uma termino
inesperado, exemplo vi (editor de texto).
Este diretrio contm os arquivos que so armazenados antes de quaisquer terminao no
esperada de ex. vi.
5.4.3.13.10 - /var/run : arquivos variveis de tempo de execuo
Este diretrio contm arquivos com informao do sistema que o descrevem desde que
inicializou. Geralmente os arquivos neste diretrio devem ser deletar (remover ou truncar) aol
comenar o processo de inicializao.
Os arquivos identificados do processo (PID), que estavam originalmente /etc, devem
colocar em /var/run. A conveno de nomenclatura dos arquivos PID <nome-programa>.pid, por
exemplo o arquivo PID de crond se chama /var/run/crond.pid.
O formato interno dos arquivos PID permanecem sem troca. O arquivo deve conter o
indicador de ponto decimal codificado como ASCII, seguido por um caracter nova linha. Por
exemplo, o processo nmero 25, /var/run/cond.pid conter 3 caracteres, dos cinco e nova linha.
Os programas que leiam arquivos PID devem ser flexvel na acepo, por exemplo devem
ignorar os espaos extras, zeros a esquerda, ausncia do caracter nova linha ou linhas adicionais no
arquivo PID. Os programas que criam arquivos PID devem utilizar a especificao dada no
pargrafo anterior.
O arquivo utmp, que armazena informao acerca de quem est atualmente utilizando o
sistema, se localiza neste subdiretrio .
Os programas que mantenham sockets transitorios de dominio UNIX, devem coloca-los
neste diretrio.
5.4.3.13.11 - /var/spool
Diretrios de fila de trabalhos para procedimento posterior /var/spool tradicionalmente
utilizado para a informao local de mquina que enviada para processo depois, at o subsistemas
UNIX. Por exemplo, trabalhos de impresso que so armazenados aqui para entrega posterior ao
daemon da impressora, o e-mail que sa armazenado aqui para entrega a sistemas remotos e os
arquivos UUCP so armazenados aqui para transmisso dos sistemas UUCP vencidos o e-mail que
entra e as noticias so armazenadas aqui para entregar-se aos usurios e os trabalhos de at e cron
so armazenados aqui para execuo posterior pelo daemon cron.
/var/spool
at
cron
Trabalhos de at
Trabalhos de cron
lpd
Diretrio de impressora *
mail arquivos caixa-postal dos usurios
mqueueFila de espera dos correio
news Diretrio de noticias *
rwhod arquivos rwhod
smail Diretrio de smail *
uucp Diretrio de UUCP
Nota:
* Segnifica fila de trabalhos para processamento posterior.
Os arquivos de bloqueio UUCP devem localizar-se em /var/ock. Veja a seo acerca de
/var/ock.
/var/spool/lpd
/var/spool/lpd --<impressora> ---
O arquivo de bloqueio para lpd, lpd.ock deve estar localizado em /var/spool/lpd. O arquivo
de bloqueios de cada impressora deve localizar-se no diretrio<impressora> da impressora
especifica e deve chamar ock.
5.4.3.13.12 - /var/tmp : Arquivos temporrios, utilizando para manter /tmp pequeno.
Os arquivos que esto no /var/tmp esto armazenados por uma durao no especifica.
(Lembre-se que os diretrios temporrios do sistema no garantiram manter a informao por
nenhum perodo particular).
A informao armazenada em /var/tmp tipicamente esta numa "forma definida localmente",
pois usualmente menos frequentemente que /tmp. Se pode encontar informao sobre diretrios
temporrios na seleo dedicada a /tmp (acima).
Deve existir um links simblico desde /usr/tmp at var/tmp por razo de compatibilidade.
5.4.4 - Alguns dilemas sobre o Sistema de Arquivos
A rede apresenta um dilema intirerante, algumas pessoas quiseram separar os arquivos de
rede e configurao dos outros arquivos de configurao. Ou seja, esto em desacordo . Sentimos
que a rede no um "pacote", seno uma parte integral da maioria das mquinas UNIX (e
similares). No se deve colocar a rede em um s diretrio seno localizar-se sistematicamente nos
diretrios aprpriados.
/bin {hostname, netstat, ping}
Qualquer coisa que algum usurio queiram utilizar considerado
vital.
/sbin {arp, ifconfig, route} Qualquer coisa que s root necessita e considera vital.
/usr/bin {finger, rep, rogin, telnet, etc.}
Alguns arquivos que algum usurio queira utilizar e
que no so vitais.
/usr/sbin {in.ftpd, inetd, lpd, portmap, etc..}
Alguns arquivos que somente o administrador
utiliza, que no so vitais.
Pode parecer confuso a princpio (leva tempo digerindo), tem sentido . Se por alguma razo
voc s pode montar a partio raiz, e necessita acessar a rede para reparar seu sistema, no quer
que os arquivos esto em /usr/etc (como esto algumas vezes). Os arquivos que necessitam para
montar /usr as situaes normais (e de emergncia) esto coocados dentro da sub-rvore raiz, e
quaisquer outros podem colocar em /usr, para manter
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
simbolicamente a um diretrio/var ou algum outro lugar. /home poderia ter tambm sua prpria
partio fsica e desde logo, ser montada como tal.
Similarmente, dado que /usr poderia estar em um servidor de arquivos central montado va
NFS, /usr/local pode-se enlaar simbolicamente a /var/local. Este troca pode-se justificar
recordando A razo principal de ter /var: separadas de diretrios de arquivos que variam com o
tempo e entre diferentes sistemas e mquinas daqueles que podem compartilhar e sejam somente
para leitura .
Alguns sistemas alm disso enlaar /tmp a /var/<algo> se a partio raiz se torne muito
pequena (ou muito pequena). Existe mais exemplos de bons usos de link simblicos, pois todo o
assunto no se reduz a estas coisas: os pacotes devem ser capazes de encontar as coisas onde
esperam (razoavelmente) e os link simblicos pode-se utilizar para resolver os problemas de muitos
casos. Ou seja, se podem gerar problemas com o uso demasimados link simblicos. Este problema
influi sobre a confiana nos link simblicos para resolver problemas, confuso resultante do sobre
o uso do link simblicos e as preferncias estticas das diferentes pessoas.
Os Arquivos Compilados Estticamente o Linux executa atualmente em uma gama de
sistemas, alguns com somente um usurio e disco pequeno, outros como servidores em ambiente
com rede muito grande, dada esta variedade , esta documento no impe regra sobre quais arquivos
esto compilados estaticamente ou dinamicamente , com as seguinte excees. Ambos ln e se nc,
devem existir em /bin; quaisquer verso esttica pode-se colocar em /sbin ou repassa-la em /bin.
Os grande sistemas Linux podem desejar incluir outros arquivos estticos (sh, init, mkfs,
fsch, tunefs, mount, umount, swapon, swopff, gette , login e outros). Os instaladores e os
administradores de sistemas, so livres para conectar dinmicamente ou estaticamente estes outros
arquivos segundo sua convenincia, sempre que a localizao dos arquivos arquivos no troque.
Em sistemas de rede, (especialmente aqueles que no tem unidade de disco flexivel), podem
querer compilar estaticamente ifconfig, route, hostname e outras ferramentas de rede. Isto
usualmente no necessrio.
5.4.5 - Descries sucinta do contedo dos manuais.
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.
O mercado do Linux no Brasil restrito, praticamente, ao meio acadmico e alguns
provedores da Internet (ex.: Universidade Federal de Gois utiliza como roteador e servidor de
WWW em algumas unidade acadmicas). difcil acreditar no crescimento do mercado Linux no
Brasil a curto e a mdio prazo fora deste nincho de mercado, devido a sua dificuldade de operao,
o Linux foi projetado por programadores para programadores, a fim de ser utilizado em ambiente
onde a maioria dos usurios tenha uma certa experincia, soma-se a isto a falta de software para a
plataforma Linux que dificulta a sua popularizao. As empresas que utilizam o Unix
comercialmente na plataforma RISC, utilizam sistemas proprietrios desenvolvidos por empresas
como Sun, IBM, Dec, etc, que fazem tanto o hardware quanto SO, embora exista verses do Linux
para algumas destas plataformas (ex. Sun) no acreditamos no crescimento do Linux neste mercado,
pois estritamente fechado.
Apesar disto, o Linux uma opo sria como sistemas operacional do tipo Unix para o
mundo PC, podemos recomend-lo sem medo de errar, se sua empresa ou aplicao precisar de um
sistema com as caractersticas do Unix, voc possue mquinas Intel ou compatveis, pode utillizlo a melhor opo hoje e com grandes possibilidades de crescimento nesta faixa de mercado.
Apndices
A - Comandos bsicos do sistema UNIX
Principais comandos - ordem albabtica
Comandos em Unix possuem algumas caractersticas particulares. Eles podem ser
controlados por opes e devem ser digitados em letras minsculas.
1 - cat : Oficialmente usado para concatenar arquivos. Tambm usado para exibir todo o
contedo de um arquivo de uma s vez, sem pausa.
Sintaxe: cat < arquivo1 > < arquivo2 >... < arquivo n >,
onde (arquivo1) at (arquivo n) so os arquivos a serem mostrados. "cat" l cada arquivo em
sequencia e exibe-o na sada padro. Deste modo , a linha de comando:
cat < arquivo >
exibir o arquivo em seu terminal; e a linha de comando :
cat < arquivo1 > < arquivo2 > > < arquivo3 >
concatenar "arquivo1" e "arquivo2", e escrever o resultado em . O smbolo ">", usado para
redirecionar a sada para um arquivo, tem carter destrutivo; em outras palavras, o comando acima
escrever por cima do contedo de < arquivo3 >. Se, ao invs disto, voc redirecionar com o
smbolo ">>", a sada ser adicionada a <arquivo3 >, ao invs de escrever por cima de seu
contedo.
2 - cd : Muda o diretrio de trabalho corrente.
Sintaxe : cd < diretrio >
onde (diretrio) o nome do diretrio para o qual voc deseja mudar. O smbolo "." refere-se ao
diretrio corrente e o smbolo ".." refere-se ao "diretrio-pai". Para mover para um "diretrio-pai",
ou seja, um diretrio acima do que voc est, use o comando :
cd ..
( Note o espao entre "cd" e ".." )
Voc tambm pode usar nomes-de-caminho (pathnames) como argumento para o comando cd. Por
exemplo :
cd /diretorio1/diretorio2
o posicionar diretamente em "diretrio2". O uso de "cd" sem nenhum argumento far com que
voc retorne para o seu "home-directory" .
3 - chgrp : Modifica o grupo de um arquivo ou diretrio.
Sintaxe: chgrp [-f] [-h] [-R] gid nome-do-arquivo
"chgrp" modifica o identificador de grupo ("group ID" , gid) dos arquivos passados como
argumentos.
"gid" pode ser um nmero decimal especificando o group id, ou um nome de grupo encontrado no
arquivo "/etc/group". Voc deve ser o proprietrio do arquivo, ou o super-usurio, para que possa
utilizar este comando.
Opes
Sada
-f
Esta opo no reporta erros
-h
Se o arquivo for um link simblico, esta opo modifica o grupo do link simblico. Sem esta
opo, o grupo do arquivo referenciado pelo link simblico modificado.
-R
Esta opo recursiva."chgrp" percorre o diretrio e os subdiretrios, modificando o GID
medida em que prossegue.
4 - chmod : Modifica as permisses de um arquivo ou diretrio.Voc deve ser o proprietrio de
um arquivo ou diretrio, ou ter acesso ao root, para modificar as suas permisses.
Sintaxe : chmod permisses nome_do_arquivo
onde :
permisses - indica as permisses a serem modificadas;
nome - indica o nome do arquivo ou diretrio cujas permisses sero afetadas.
As permisses podem ser especificadas de vrias maneiras. Aqui est uma das formas mais
simples de realizarmos esta operao :
1- Use uma ou mais letras indicando os usurios envolvidos:
. u (para o usurio)
. g (para o grupo)
. o (para "outros")
. a (para todas as categorias acima)
2- Indique se as permisses sero adicionadas (+) ou removidas (-).
3- Use uma ou mais letras indicando as permisses envolvidas :
. r (para "read") (ler)
. w (para "write") (escrever)
. x (para "execute") (executar)
$file copyfile
copyfile: ascii text
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.
.fvwmrc
.xinitrc
Aqui, o ponto simples refere-se ao diretrio corrente, e o ponto duplo refere-se ao diretrio
imediatamente acima dele. Mas o que so estes outros arquivos que se iniciam com um ponto? Eles
so chamados arquivos escondidos. A colocao do ponto na frente de seus nomes os impede de
serem mostrados durante um comando "ls" normal.
Outra opo bastante utilizada -l (que vem do ingls "long"). Ela mosta informao extra
sobre os arquivos . Assim, o comando:
$ ls -l
mostra, alm do contedo do diretrio, todas os detalhes sobre cada arquivo pertencente a ele. Por
exemplo, suponha que voc tenha executado este comando e na tela apareceu algo assim:
-rw-r--r-- 1 xyz users 2321
-rw-r--r-- 1 xyz users 14567
drwxr-xr-x 2 xyz users 1024
drwxr-xr-x 3 xyz users 1024
Lendo da esquerda para direita, este primeiro caracter indica se o arquivo um diretrio ( d )
ou um arquivo comum (-). Em seguida temos as permisses de acesso ao arquivo, sendo as trs
primeiras referentes ao proprietrio, as seguintes ao grupo e, por ltimo, aos demais usurios.
A segunda coluna desta listagem mostra o nmero de links que o arquivo possui.
A terceira coluna mostra o proprietrio do referido arquivo, neste caso, o usurio cujo user
name "xyz".
Na prxima coluna mostrado o grupo ao qual pertence o proprietrio do arquivo ( no
exemplo temos o grupo users). Na quinta coluna temos o tamanho do arquivo em bytes.
Por fim, na sexta e stima colunas, temos a data da ltima modificao feita no arquivo e o
nome do mesmo, respectivamente. Vale lembrar que vrias opes podem ser usadas de forma
composta. Por exemplo, podemos executar o comando:
$ ls -la
e este mostrar todos os detalhes que as opes -l e -a dispem.
12 - man : Exibe uma pgina do manual interno do Unix, para um dado comando ou ou
recurso (isto , qualquer utilitrio do sistema que no seja comando, por exemplo, uma funo
de biblioteca). como um "help" interno ao sistema.
Sintaxe :
man <comando>
onde "comando" e o nome do comando ou recurso que se deseja obter a ajuda.
13 - mkdir : Cria usado para a criao de novos diretrios.
Sintaxe : mkdir (diretrio 1) (diretrio 2) ...(diretrio n)
onde (diretrio 1) at (diretrio n) so os diretrios a serem criados.
As entradas padro em um diretrio (por exemplo, os arquivos ".", para o prprio diretrio, e ".."
para o diretrio pai ) so criadas automaticamente. A criao de um diretrio requer permisso de
escrita no diretrio pai.
O identificador de proprietrio (owner id), e o identificador de grupo (group id) dos novos
diretrios so configurados para os identificadores de proprietrio e de grupo do usurio efetivo,
respectivamente.
* Opes:
-m (mode)
Esta opo permite aos usurios especificar o modo a ser usado para os novos diretrios.
-p
Com esta opo, mkdir cria o nome do diretrio atravs da criao de todos os diretrios-pai no
existentes primeiro.
Exemplo:
mkdir -p diretrio 1/diretrio 2/diretrio 3
cria a estrutura de subdiretrios "diretrio 1/diretrio 2/diretrio 3".
14 - more : Exibe o contedo de arquivos nomeados, fazendo pausas a cada tela cheia.
Ele exibe um arquivo, uma tela cheia de cada vez, fazendo normalmente uma pausa aps
cada tela cheia, quando exibe "--More-- " na parte de baixo da tela.
Ao teclar-se (Enter), more ir exibir uma linha a mais; ele exibe outra tela cheia ao teclar-se
o caracter "espao". O caracter "b" faz com que "more" exiba a tela anterior. O caracter "q" provoca
a parada de execuo do comando more.
Sintaxe: more (arquivo 1) (arquivo 2) ... (arquivo n)
onde (arquivo 1) at (arquivo n) so os arquivos a serem exibidos.
Pode-se procurar por uma palavra (ou uma cadeia de caracteres) em um arquivo. Para isso,
pressione o caracter "/", digite a palavra (ou a cadeia de caracteres),e tecle (Enter).
* Opes:
-c
Limpa a tela antes de exibir o contedo do arquivo. Esta opo ignorada se o terminal no
tem a abilidade para limpar at o final de uma linha.
15 - mv : Move arquivos para um outro arquivo ou diretrio.
O comando "mv" utilizado para mover arquivo(s) para outro arquivo ou diretrio. Este
comando faz o equivalente a uma cpia seguida pela deleo do arquivo original. Pode ser usado
para renomear arquivos.
Sintaxe: mv (arquivo 1) (arquivo 2) ... (arquivo n) (destino)
onde (arquivo 1) at (arquivo n) so os arquivos a serem movidos, e (destino) o arquivo ou o
diretrio para onde os arquivos sero movidos.
Se (destino) no for um diretrio, somente um arquivo dever ser especificado como fonte.
Se for um diretrio, mais de um arquivo poder ser especificado.
Se (destino) no existir, "mv" criar um arquivo com o nome especificado. Se (destino)
existir e no for um diretrio, seu contedo ser apagado e o novo contedo ser escrito no lugar do
antigo. Se (destino) for um diretrio, o(s) arquivo(s) ser(o) movido(s) para este diretrio.
Os arquivos "fonte" e "destino" no precisam compartilhar o mesmo diretrio pai.
*Opes:
-i
Com esta opo, "mv" ir perguntar a voc se permitido escrever por cima do contedo de um
arquivo destino existente.
Uma resposta "y" (yes = sim) significa que a operao poder ser executada. Qualquer outra
resposta impedir que "mv" escreva por cima do contedo de um arquivo j existente.
Exemplo: $ pwd
/home/usurio1/temp
$ ls
teste
$ mv teste ../temp1
$ ls ../temp1
teste
Neste exemplo, o diretrio teste foi movido de temp para temp1 com o comando "mv".
16 - passwd : Modifica a senha pessoal.
Para garantir a segurana do sistema, o sistema Unix requer o uso de uma senha. Se voc
achar que algum utilizou sua conta sem permisso, mude sua senha imediatamente.
Algumas dicas para a escolha da senha:
Escolha uma senha que voc possa lembrar sem a necessidade de escrever.
A sua password deve ter ao menos seis caracteres e deve conter pelo menos um nmero.
No use seu prprio nome ou suas iniciais.
No use nomes de animais ou objetos relacionados a seu interesse.
Se voc tem mais de uma conta, no use a mesma senha para todas as contas.
O comando "passwd" utilizado para modificar a senha pessoal.
A seguir esto os passos que acontecem quando "passwd" utilizado:
$ passwd
Changing password for (nome-do-usurio)
Old password:
New password:
Retype new password:
$
-> Quando o sistema pedir "Old Password:" , digite sua senha atual.
Se nenhuma senha estiver associada a sua conta, o sistema ir omitir este prompt. Note que
o sistema no mostra a senha que voc digita na tela. Isto previne que outros usurios descubram
sua senha.
-> Quando o sistema pedir "New Password:", digite sua nova senha.
-> O ltimo prompt , "Retype new password", pede que voc digite a nova senha novamente.
Se voc no digitar a senha da mesma maneira em que digitou da primeira vez, o sistema se
recusa a modificar a senha e exibe a mensagem "Sorry".
17 - pwd : Exibe o diretrio corrente.
Este comando utilizado para exibir o seu diretrio corrente no sistema de arquivos.
18 - rm : Este comando utilizado para apagar arquivos. importante lembrar que quando os
arquivos so apagados, no sistema Unix, impossvel recuper-los.
Sintaxe: rm (arquivo 1) (arquivo 2) ... (arquivo n)
onde (arquivo 1) at (arquivo n) so os arquivos a serem apagados.
Se um arquivo no possuir permisso de escrita e a sada-padro for um terminal, todo o
conjunto de permisses do arquivo ser exibido, seguido por um ponto de interrogao. um
pedido de confirmao. Se a resposta comear com "y" ("yes" = sim), o arquivo ser apagado, caso
contrrio ele ser mantido no sistema.
Quando voc apaga um arquivo com o comando "rm", voc est apagando somente um link
(ligao ou entrada) para um arquivo. Um arquivo somente ser apagado verdadeiramente do
sistema quando ele no possuir mais nenhuma ligao para ele, isto , nenhum link referenciando-o.
Geralmente, arquivos possuem somente um link, portanto o uso do comando "rm" ir apagar o(s)
arquivo(s). No entanto, se um arquivo possuir muitos links, o uso de "rm" ir apagar somente uma
ligao; neste caso, para apagar o arquivo, necessrio que voc apague todos os links para este
arquivo.
Voc pode verificar o nmero de links que um arquivo possui utilizando o comando ls, com
a opo "-l".
*Opes:
-f
Remove todos os arquivos (mesmo se estiverem com proteo de escrita) em um diretrio
sem pedir confirmao do usurio.
-i
Esta opo pedir uma confirmao do usurio antes de apagar o(s) arquivo(s)
especificado(s).
-r
Opco recursiva para remover um diretrio e todo o seu contedo, incluindo quaisquer
subdiretrios e seus arquivos.
-> CUIDADO : diretrios e seus contedos removidos com o comando "rm -r" no podem ser
recuperados.
19 - rmdir : utilizado para apaga diretrios vazios.
Sintaxe: rmdir (diretrio 1) (diretrio 2) ... (diretrio n)
onde (diretrio 1) at (diretrio n) so os diretrios a serem apagados.
O comando "rmdir" se recusa a apagar um diretrio inexistente, exibindo a mensagem:
rmdir : (nome-do-diretrio) : No such file or directory
Quando usar "rmdir", lembre-se que o seu diretrio de trabalho corrente no pode estar
contido no(s) diretrio(s) a ser(em) apagado(s). Se voc tentar remover seu prprio diretrio
corrente, ser exibida a seguinte mensagem:
rmdir : . : Operation not permited
Se o diretrio o qual voc deseja remover no estiver vazio, utilize o comando "cd" para
acessar os arquivos dentro do diretrio, e ento remova estes arquivos utilizando o comando "rm".
Opes:
-p
Permite aos usurios remover o diretrio e seu diretrio pai, o qual se torna vazio. Uma
mensagem ser exibida na sada padro informando se o caminho ("path") inteiro foi removido ou
se parte do caminho persiste por algum motivo.
-> CUIDADO : diretrios removidos com o comando "rmdir" no podem ser recuperados!
20 - touch : atualiza o ltimo tempo de acesso e/ou modificaco de um arquivo.
Um arquivo vazio ser criado se o nome especificado ainda no existir.
Sintaxe: touch [opces] [mmddhhMM[yy]] nome-do-arquivo
sendo :
mm ms
dd dia
hh hora
MM minuto
yy ano (ltimos dois dgitos)
Projeto
ndice
Seo 1. Introduo e Informaes Gerais
P1.1 O que Linux?
P1.2. Que programas ele suporta?
P1.3. Ele roda no meu micro? Que hardware ele suporta?
P1.4. Para quais plataformas ele foi portado?
P1.5. De quanto espao em disco ele precisa?
P1.6. O Linux est em Domnio Pblico? Tem Copyright?
Seo 2. Material na Rede e outros Recursos
P2.1. Onde pego os HOWTOs e outra documentao?
P2.2. O que tem na World Wide Web sobre Linux?
P2.3. Que grupos de discusso (newsgroups) sobre Linux existem?
P2.4. Como instalo o Linux?
P2.5. Onde eu pego material sobre Linux por FTP?
P2.6. Eu no tenho acesso a FTP. Como eu consigo o Linux?
P2.7. Eu nao tenho acesso Usenet. Onde consigo informaes?
P2.8. Quais so as listas de discusso sobre Linux?
P2.9. Os newsgroups so arquivados em algum lugar? (inclui Linux-BR)
Seo 3. Compatibilidade com outros sistemas operacionais
P3.1. Eu posso instalar o Linux junto com o DOS? OS/2? 386BSD? Win95?
P3.2. Como eu acesso arquivos na minha partio DOS ou em disquetes?
P3.3. Eu posso usar drives do DOS com Stacker/Double Space/etc?
P3.4. Eu posso acessar parties HPFS do OS/2 no Linux?
P3.5. Eu posso acessar sistemas de arquivos como o FFS do BSD, UFS do SysV, Mac, Amiga
etc?
P3.6. Eu posso rodar programas do Microsoft Windows no Linux?
P3.7. Como eu posso iniciar o Linux a partir do Boot Manager do OS/2?
P3.8. Como eu fao para usar a mesma partio de swap no Windows e no
Linux?
Seo 4. O tratamento do Linux para sistemas de arquivos, discos e unidades
de disco.
P4.1. Como posso fazer o Linux funcionar com meu disco "grande" de mais
de 1024 cilindros lgicos?
P4.2. Como posso reaver (undelete) arquivos apagados?
P4.3. H algum desfragmentador para ext2fs e outros sistemas de
arquivos?
P4.4. Como posso formatar um disquete e criar nele um sistema de
arquivos?
P4.5. Estou recebendo mensagens estranhas sobre "inodes", "blocks", e
coisas desse gnero.
P4.6. Minha rea de paginao (swap) no funciona.
P4.7. Como posso desinstalar o LILO e voltar a reiniciar meu sistema
pelo DOS?
David Miller est trabalhando em um port para o Sparc. Ainda est num
estgio bastante primrio; pessoas dispostas a dedicar bastante tempo e com
acesso a Sparcs para teste devem entrar em contato com
davem@caip.rutgers.edu.
Nenhum dos ports acima poder rodar binrios do Linux/386.
O port Linux para a placa Aleph One 486 foi terminado e parece estvel. Para
maiores detalhes: http://www.ph.kcl.ac.uk/~amb /linux.html
Questo 1.5. De quanto espao em disco ele precisa?
10Mb para uma instalao mnima, o suficiente para experimenta-lo e pouca
coisa mais.
Voc pode espremer uma instalao mais completa com X Windows em 80Mb.
Instalar quase todo o Debian 0.93R6 ocupa uns 500Mb, incluindo algum espao
para arquivos de usurios e reas para spool.
Questo 1.6. O Linux est em Domnio Pblico? Tem Copyright?
O copyright do kernel do Linux pertence a Linus Torvalds. Ele o colocou sob
o GNU General Public License, o que basicamente significa que voce pode
copi-lo livremente, modifica-lo e distribu-lo, mas voc no pode impor
quaisquer restries na sua distribuio e ainda deve deixar o cdigo fonte
disponvel. Isto no o mesmo que domnio pblico (leia o FAQ sobre
copyright que est disponvel em rtfm.mit.edu em
/pub/usenet/news.answers/law/Copyright-FAQ, para detalhes).
Detalhes completos esto no arquivo COPYING nos fontes do kernel do Linux
(provavelmente em /usr/src/linux em seu sistema).
As licensas dos utilitrios e programas que vm com as instalaes so
variadas; muito desse cdigo do projeto GNU da Free Software Foundation, e
tambm est sobre o GPL.
Note que discusses sobre o mrito ou no do GPL devem ser postadas a
gnu.misc.discuss e no para os grupos comp.os.linux.
Questo 2.1. Onde pego os HOWTOs e outra documentao?
D uma olhada nesses lugares, e em outros que os espelham:
ftp.funet.fi (128.214.6.100) : /pub/OS/Linux/doc/HOWTO
tsx-11.mit.edu (18.172.1.2) : /pub/linux/docs/HOWTO
sunsite.unc.edu (152.2.22.81) : /pub/Linux/docs/HOWTO
No Brasil:
linux.if.usp.br (143.107.251.4) :
/pub/mirror/sunsite.unc.edu/pub/Linux/docs/HOWTO
farofa.ime.usp.br (143.107.251.4) : /pub/linux/docs/HOWTO
Para uma lista completa de stios de FTP veja P2.5. Onde eu pego material
sobre Linux por FTP?
Se voc no tem acesso a FTP tente usar servidores de FTP-por-mail em
ftpmail@decwrl.dec.com, ftpmail@doc.ic.ac.uk ou
ftp-mailer@informatik.tu-muenchen.de.
Uma lista completa de HOWTOs est disponvel no arquivo HOWTO.INDEX no
diretrio docs/HOWTO dos stions de FTP, ou na Web em
http://sunsite.unc.edu/mdw/HOWTO/HOWTO-INDEX.html
Esta uma lista (provavelmente incompleta) dos HOWTOs:
Linux INFO-SHEET
Linux META-FAQ
Bootdisk HOWTO
Busmouse HOWTO
CDROM HOWTO
Commercial HOWTO
Cyrillic HOWTO
DOSEMU HOWTO
Danish HOWTO
Distribution HOWTO
ELF HOWTO
Ethernet HOWTO
Firewall HOWTO
Ftape HOWTO
German HOWTO
HAM HOWTO
Hardware HOWTO
Installation HOWTO
JE HOWTO
Kernel HOWTO
MGR HOWTO
Electronic Mail HOWTO
NET-2 HOWTO
NIS HOWTO
News HOWTO
PCI-HOWTO
PCMCIA HOWTO
Portuguese HOWTO
PPP HOWTO
Printing HOWTO
SCSI HOWTO
SCSI Programming HOWTO
Serial HOWTO
Sound HOWTO
Term HOWTO
Tips HOWTO
UPS HOWTO
UUCP HOWTO
XFree86 HOWTO
Questo 3.1. Eu posso instalar o Linux junto com o DOS? OS/2? 386BSD? Win95?
Sim. O Linux usa o esquema padro de particionamento do PC, assim ele pode
compartilhar o seu disco com outros sistemas operacionais. No entanto,
muitos desses outros sistemas operacionais so mal feitos: o FDISK e FORMAT
do DOS podem destruir dados em uma partio Linux, porque s vezes eles usam
incorretamente os dados do setor de boot da partio, ao invs da tabela de
partio do disco. Para previnir isso, zere o comeo da partio nova no
Linux, antes de usar o MSDOS ou outra coisa para format-la. Digite:
dd if=/dev/zero of=/dev/hdXY bs=512 count=1
onde hdXY a partio relevante (por ex.: hda1 para a primeira partio do
primeiro disco IDE).
O Linux pode ler e escrever arquivos em parties FAT do DOS e OS/2 e em
disquetes usando o suporte interno do kernel ou o mtools. Existe uma verso
alpha de suporte do kernel para o sistema VFAT usado pelo Widows 95 e
Windows NT; ele est disponvel em
/pub/multimedia/linux/vfat/vfat-0.3.0.tgz. Ele foi integrado ao kernel
padro na verso 1.3.60.
Veja P1.2. Que programas ele suporta? para detalhes e status dos emuladores
de DOS, MS Windows e programas para System V.
Veja tambm P3.5. Eu posso acessar sistemas de arquivos como o FFS do BSD,
UFS do SysV, Mac, Amiga etc?
ftp://sunsite.unc.edu/pub/Linux/docs/howto/mini/Win95+Win+Linux,
ftp://sunsite.unc.edu/pub/Linux/docs/howto/mini/Linux+DOS+Win95+OS2 e
ftp://sunsite.unc.edu/pub/Linux/docs/howto/mini/Linux+OS2+DOS contem
instrucoes especificas sobre instalacao de varios sistemas operacionais em
uma mesma maquina.
Questo 3.2. Como eu acesso arquivos na minha partio DOS ou em disquetes?
Use o filesystem DOS, i.e. digite, por exemplo:
mkdir /dos
mount -t msdos -o conv=text,umask=022,uid=100,gid=100 /dev/hda3 /dos
Se for um disquete, no esquea de umountar ele antes de tir-lo do drive,
ou dados sero perdidos.
Voc pode controlar a aparncia dos arquivos no filesystem no Linux quanto
converso automtica de fim de linha CR/LF para CR, permisses e propriedade
usando conv=text/binary/auto, umask=nnn, uid=nnn e gid=nnn. Se voc montar
seu filesystem DOS colocando-o no /etc/fstab voc pode configurar as opes
trocando o defaults pelas suas opes separadas por vrgulas.
Voc tambm pode usar o `mtools', disponvel tanto em forma binria e em
cdigo fonte nos stios FTP -- veja P2.5. Onde eu pego material sobre Linux
1. Crie uma partio usando o FDISK do OS/2. (No serve o fdisk do Linux).
2. Formate a partio no OS/2, em FAT ou HPFS. Isto para fazer o OS/2
saber que a partio est formatada. (Este passo no necessrio no
OS/2 "warp" 3.0).
3. Adicione a partio no Boot Manager.
4. Inicie o Linux, e crie um sistema de arquivos na partio usando mkfs
-t ext2 ou mke2fs. A essa altura voc pode usar o fdisk do Linux para
trocar o cdigo de tipo da partio para 83 (Linux Native) -- isso pode
ajudar alguns scripts de instalao automtica a achar a partio certa
para usar.
5. Instale o Linux na partio.
6. Instale o LILO na partio -- no o faa no master boot record do disco
rgido. Isso instala o LILO como um bootloader secundrio na partio
do Linux, para carregar o kernel especificado no arquivo de
configurao do LILO. Para isso coloque:
boot = /dev/hda2
(onde /dev/hda2 a partio de onde voc quer "bootar") no seu arquivo
/etc/lilo/config ou /etc/lilo.conf
7. Certifique-se de que a partio do Boot Manager esteja marcada como
ativa, para poder usar o Boot Manager para escolher o que carregar.
Questo 3.8. Como eu fao para usar a mesma partio de swap no Windows e no
Linux?
Veja o Mini-HOWTO de H. Peter Anvin hpa@yggdrasil.com sobre esse assunto na
sunsite.unc.edu em /pub/Linux/docs/HOWTO/mini/Swap-Space.
Questo 4.1. Como posso fazer o Linux funcionar com meu disco "grande" de
mais de 1024 cilindros lgicos?
Se seu disco for uma unidade IDE ou EIDE voc deve ler o arquivo
/usr/src/linux/drivers/block/README.ide (parte do cdigo-fonte do "kernel"
do Linux). Esse README contm vrias sugestes teis sobre unidades de disco
IDE.
Discos SCSI so acessados atravs de nmeros lineares de blocos; o BIOS cria
alguma simulao de cilindros/cabeas/setores "lgicos" para atender ao DOS.
DOS, em geral, no estar em condies de acessar parties que se estendam
alm dos 1024 cilindros lgicos, e ir tornar a iniciao de um "kernel"
Linux a partir dessas parties no mnimo problemtica.
Voc ainda poder usar essas parties para Linux ou quaisquer outros
sistemas operacionais que acessem a controladora de disco diretamente.
Recomendo criar no mnimo uma partio Linux contida inteiramente dentro do
none
swap
sw
por exemplo.
Se voc v
Unable to find swap-space signature
voc esqueceu de usar mkswap. Veja a pgina do man(ual) para detalhes;
mkswap funciona de maneira anloga ao mkfs.
Verifique o documento Ins tallation HOWTO para instrues detalhadas para se
configurar uma rea de paginao (swap).
Questo 4.7. Como posso desinstalar LILO e voltar a reiniciar meu sistema
pelo DOS?
Se voc est utilizando DOS (MS-DOS 5.0 ou posterior, ou OS/2), digite FDISK
/MBR (o que no est documentado). Isso vai restaurar um 'Master Boot
Record' padro do MS-DOS. Se voc tem DR-DOS 6.0, acione FDISK da maneira
A opo -m486 do GCC, que usado para compilar binrios para mquinas 486,
meramente faz algumas certas otimizaes. Isso produz binrios levemente
maiores que rodam um pouco mais rpido em um 486. Porm eles ainda funcionam
perfeitamente em um 386, apesar de uma pequena queda em sua performance.
Todavia, apartir da verso 1.3.35, o kernel usar instrues especficos de
486 em Pentium, se configurado para tais mquinas, impossibilitando a
utilizao deles em 386s.
O GCC pode ser configurado para 386 ou 486; a nica diferena que
configurando-o para um 386, faz com que -m386 seja default e configurando-o
para um 486, faz com que -m486 seja o default. Em qualquer caso, essa opo
pode ser mudada em cada compilao ou editando
/usr/lib/gcc-lib/i*-linux/n.n.n/specs.
Existe uma verso alpha do GCC que sabe fazer otimizaes para 586, mas ele
ainda no confivel, especialmente se forem pedidas muitas otimizaes. O
GCC para Pentium pode ser encontrado em tsx-11.mit.edu em
/pub/linux/ALPHA/pentium-gcc. Recomendo usar o GCC normal para 486; diz-se
que usando-se a opo -m386 produz cdigo melhor para o Pentium, ou pelo
menos um pouco menor.
Questo 5.5. O que gcc -O6 faz?
Atualmente o mesmo que -O2 (GCC 2.5) ou -O3 (GCC 2.6, GCC 2.7); qualquer
nmero maior que aqueles, no momento faz a mesma coisa. Os Makefiles the
kernels mais recentes usam -O2, voc provavelmente deveria fazer o mesmo.
Questo 5.6. Onde esto <linux/*.h> e <asm/*.h>?
Estes esto nos diretrios /usr/include/linux e /usr/include/asm.
Porm eles devem ser links simblicos para os fontes de seu kernel em
/usr/src/linuc e no diretrios reais.
Se voc no tiver os fontes do kernel faa download deles.
Ento use rm para remover quaisquer arquivos desnecessrios e ln para criar
os links:
rm -rf /usr/include/linux /usr/include/asm
ln -sf /usr/src/linux/include/linux /usr/include/linux
ln -sf /usr/src/linux/include/asm /usr/include/asm
Hoje em dia /usr/src/linux/include/asm um link simblico para um deretrio
asm-<arch> especfico para cada arquitetura - make symlinks criar os links
simblicos. Voc tambm poder precisar fazer make config em uma rvore de
fontes do kernel recm "desempacotada" para criar <linux/autoconf.h>.
Questo 5.7. Eu recebo erros quando tento compilar o kernel
Certifique-se que /usr/include/linux e /usr/include/asm no so realmente
Voc pode ver quanta memria e/ou swap voc est usando com o comando free,
ou digitando
cat /proc/meminfo
Se seu kernel est configurado com um ramdisk, isso provavelmente um
desperdcio de espao deixando o sistema lento. Use o LILO ou rdev para
fazer o kernel no alocar a ramdisk (veja a documentao do LILO ou digite
man rdev).
Questo 6.9. Eu s consigo me "logar" como root.
Provavelmente voc tem problemas de permisso, ou tem um arquivo
/etc/nologin.
No caso do ltimo, coloque rm -f /etc/nologin no seu /etc/rc.local ou nos
scripts /etc/rc.d/*.
Caso contrrio verifique as permisses do seu shell, de quaisquer nomes de
arquivos que apaream em mensagens de erro, e tambm da hierarquia de
diretrios que contm esses arquivos, inclusive o diretrio raiz.
Questo 6.10. Minha tela est cheia de caracteres esquisitos ao invs de
letras.
Voc possivelmente mandou algum dado binrio para a sua tela por engano.
Digite echo '\033c' para consertar. Muitas distribuies de Linux contm um
comando reset que faz isso.
Questo 6.11. Eu acabei com meu sistema e no consigo me logar para
consert-lo.
Inicialize o sistema com um (ou um par de) disquete de emergncia, como por
exemplo o par de discos boot e root do Slackware (no subdiretrio install
dos espelhos do Slackware) ou com o disquete de boot de instalao do MCC.
Existem dois pacotes de criao de disquetes de emergncia no
sunsite.unc.edu em /pub/Linux/system/Recovery. Ser melhor se voc colocar o
seu prprio kernel neles, dessa forma voc no correr o risco de ficar sem
algum controlador de dispositivo, sistema de arquivos etc.
De algum prompt de shell monte seu disco rgido com algo tipo
mount -t ext2 /dev/hda1 /mnt
Assim seu sistema de arquivos estar acessvel em /mnt e voc poder
consertar o problema. Lembre-se de desmontar (umount /mnt) o seu disco
rgido antes de reiniciar (volte ao diretrio raiz antes ou ele dir que
est ocupado).
Se voc quer usar um console virtual para login normal, voc precisa listar
quais consoles virtuais possuem prompt de login em /etc/inittab. (Nota: o X
precisa de pelo menos um console virtual para rodar).
Kernels anteriores ao 1.1.59 possuem um limite no nmero de consoles
configurado em tempo de compilao, cujo default 8. Veja NR_CONSOLES em
linux/include/linux/tty.h. Kernels mais recentes alocam consoles
dinamicamente, at um mximo de 63.
Questo 7.3. Como configuro o timezone (fuso-horrio)?
V ao diretrio /usr/lib/zoneinfo; pegue o pacote de timezone se voc no
possui esse diretrio. Os fontes podem ser encontrados no sunsite.unc.edu em
/pub/Linux/system/Admin/timesrc-1.2.tar.gz.
Faa um link simblico com o nome localtime apontando para um dos arquivos
nesse diretrio (ou subdiretrio), e um chamado posixrules apontando para
localtime. Por exemplo:
ln -sf Brazil/West localtime
ln -sf localtime posixrules
Isso tomar feito imediatamente - experimente date.
No tente usar a varivel de ambiente TZ - deixe-a indefinida.
Voc tambm deve certificar-se de que o relgio de seu kernel Linux est
ajustado para o horrio GMT correto - digite date -u e verifique se o
horrio universal correto mostrado.
Questo 7.4. Que verso de Linux e que mquina estou usando?
Digite:
uname -a
sobre o assunto. Ele ainda nao esta completo, mas ja possui muitas
informacoes. Tente ver em
ftp://linux.if.usp.br/pub/operating_systems/Linux/local. Note que esta
localizacao do texto e' temporaria.
Questo 8.1. Como programo XYZ no Linux?
Leia os manuais ou um bom livro sobre Unix. As pginas de manual online
(digite man man) so geralmente uma boa fonte de informaes de referncia
sobre como usar um comando ou funo exatamente.
Tambm existe bastante documentao em formato GNU Info, til como tutorial.
Rode Emacs e tecle Ctrl-h i, ou digite info info se voc no tem, ou no
gosta de Emacs. Note que o nodo libc do Emacs no descreve exatamente o libc
do linux (que mais parecido com um libc tradicional de Unix, no tendo
algumas das esquisitices da GNU), mas suficientemente semelhante para
servir como tutorial de programao em C no Unix.
A ltima verso dos manuais online do Linux e uma coleo de documentao
GNU Info, com vrias outras informaes sobre programao em Linux pode ser
encontrada em sunsite.unc.edu em /pub/Linux/docs/man-pages.
Questo 8.2. O que esse tal de ELF?
Veja o ELF HOWTO por Daniel Barlow, note que esse no o arquivo
move-to-elf, que uma explicao de como atualizar para ELF manualmente.
Linux est migrando para um formato diferente de executveis, arquivos
objeto e bibliotecas de cdigo objeto, conhecido por `ELF' (o formato antigo
chamado `a.out'). Este ter muitas vantagens, incluindo suporte melhorado
para bibliotecas compartilhadas (shared libraries) e ligao dinmica
(dinamic linking).
Binrios a.out e ELF podem coexistir em um sistema. Porm, como eles usam
bibliotecas C compartilhadas diferentes, ambos tipos devem estar instaladas
para isso.
Se voc quer saber se seu sistema pode rodar binrios ELF, procure /lib por
um arquivo libc.so.5. Se este existir, ele provavelmente pode. Se voc quer
saber se a sua instalao relamtente ELF voc pode pegar um programa
representativo, como ls, e rodar file nele:
-chiark:~> file /bin/ls
/bin/ls: Linux/i386 impure executable (OMAGIC) - stripped
valour:~> file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1, stripped
Existe um patch para fazer o 1.2.x compilar usando compiladores ELF, e
produzir coredumps ELF, no tsx-11.mit.edu em /pub/packages/GCC. Voc no
No se preocupe com isto; isto s quer dizer que a verso do route que voc
tem um pouco desatualizado em relao ao kernel. Voc pode se livrar da
mensagem pegando uma verso mais recente do route do mesmo local que os
fontes do kernel [P7.6. Como atualizo/recompilo meu kernel?].
Questo 9.12. EXT2-fs: warning: mounting unchecked filesystem
Voc deve rodar e2fsck (ou fsck -t ext2 se voc tem o programa fsck) com a
opo -a para limpar o flag de `dirty', e depois desmontar a partio
durante cada finalizao (shutdown) do sistema.
A forma mais fcil de fazer isto pegar a ltima verso dos comandos fsck,
umount e shutdown, disponveis no pacote util-linux de Rik Faith [ P2.5.
Onde eu pego material sobre Linux por FTP?]. Voc deve certificar-se de que
os scripts /etc/rc* usam-nos corretamente.
Nota: no tente checar um sistema de arquivos que est montado como
read-write - isso inclui a partio raiz se voc no vir
VFS: mounted root ... read-only
durante a inicializao. Voc deve fazer com que a partio raiz seja
montada somente para leitura, chec-la se necessrio e ento remont-la como
read-write. Leia a documentao que acompanha com o util-linux para ver como
fazer isso.
Note que voc deve especificar a opo -n para mount para fazer com que ele
no tente atualizar o /etc/mtab, caso contrrio ele falhar, pois o sistema
de arquivos raiz (onde est /etc/mtab) ainda somente para leitura.
Questo 9.13. EXT2-fs warning: maximal count reached
Esta mensagem emitida pelo kernel quando ele monta um sistema de arquivos
marcado como limpo, mas cujo contador de "montagens desde a ltima checagem"
atingiu um valor pr-definido. A soluo pegar a ltima verso dos
utilitrios ext2fs (e2fsprogs-0.5b.tar.gz no momento da escrita disto) dos
sites usuais [ P2.5. Onde eu pego material sobre Linux por FTP? ].
O nmero mximo de montagens pode ser examinado e mudado com o programa
tune2fs deste pacote.
Questo 9.14. EXT2-fs warning: checktime reached
Kernels 1.0 em diante suportam a checagem de sistemas de arquivos baseados
no tempo decorrido desde a ltima checagem assim como no nmero de
montagens. Pegue a ltima verso dos utilitrios ext2fs
(e2fsprogs-0.5b.tar.gz no momento da escrita disto) dos sites usuais [ P2.5.
Onde eu pego material sobre Linux por FTP? ].
Voc corre pouco risco de deixar sua mensagem comprida demais a no ser que
inclua grandes pedaos de cdigo fonte ou arquivos com uuencode, portanto
no se preocupe em dar informaes de mais.
Use uma linha de Subject clara e detalhada. No coloque coisas como 'no
funciona', 'Linux', 'ajuda' ou 'pergunta' nele --- nos j sabemos disso!
Guarde o espao para o nome do programa, um pedao da mensagem de erro,
sumrio do comportamento incomum etc.
Se voc estiver reportando uma mensagem `unable to handle kernel paging
request', siga as instrues do README no cdigo fonte do kernel, para
transformar os nmeros em algo mais significativo. Se voc no fizer isso,
ningum que ler sua mensagem poder fazer isso por voc, j que o mapeamento
dos nmeros para nomes de funes varia de um kernel para outro.
Coloque um pargrafo de sumrio no topo de sua mensagem.
No fim de sua mensagem, pea por respostas por email particular e diga que
voc enviar um sumrio. Aps alguns dias envie um sumrio. No faa simples
concatenaes das respostas que voc recebeu --- sumarise. Colocar a palavra
SUMRIO na linha de Subject de sua mensagem tambm uma boa idia.
Considere em submeter seu sumrio para comp.os.linux.announce.
Se for postar a mensagem para grupos USENET, certifique-se de que sua
mensagem no tem uma linha References inapropriada. Isso marca seu artigo
como parte da discusso referida, o que ir seguidamente fazer com que ele
no seja lido por leitores junto com o resto de uma discusso
desinteressante.
Se voc pode querer dizer em sua mensagem que voc j leu este FAQ e os
HOWTOs apropriados.
Lembre-se de que voc no deve postar mensagens enviadas particularmente a
voc sem a autorizao do autor.
Questo 12.3. Quero mandar e-mail a algum sobre meu problema.
Tente encontrar o autor ou desenvolvedor do programa ou componente que est
lhe causando dificuldades. Se voc tiver um local de contato para a
distribuio Linux que voc est usando, use-o.
Coloque tudo em seu email que voc colocaria em uma mensagem pedindo por
ajuda.
Finalmente, lembre-se de que apesar do fato da maioria da comunidade Linux
ser bastante prestativa e responder a perguntas por email, voc estar
pedindo ajuda a um voluntrio no pago, portanto voc no tem o direito de
esperar uma resposta.
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).
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
everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
GNU GENERAL PUBCLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a notice placed by the
copyright holder saying it may be distributed under the terms of this General Public License. The
"Program", below, refers to any such program or work, and a "work based on the Program" means
either the Program or any derivative work under copyright law: that is to say, a work containing the
Program or a portion of it, either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in the term "modification".) Each
licensee is addressed as "you".
Activities other than copying, distribution and modification are not covered by this License; they
are outside its scope. The act of running the Program is not restricted, and the output from the
Program is covered only if its contents constitute a work based on the Program (independent of
having been made by running the Program). Whether that is true depends on what the Program
does.
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in
any medium, provided that you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this
License and to the absence of any warranty; and give any other recipients of the Program a copy of
this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer
warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work
based on the Program, and copy and distribute such modifications or work under the terms of
Section 1 above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices stating that you changed the files
and the date of any change.
b) You must cause any work that you distribute or publish, that in whole or in part contains or is
derived from the Program or any part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively when run, you must cause it,
when started running for such interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a notice that there is no warranty (or
else, saying that you provide a warranty) and that users may redistribute the program under these
conditions, 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
and conditions either of that version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of this License, you may choose any
version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs whose distribution
conditions are different, write to the author to ask for permission. For software which is copyrighted
by the Free Software Foundation, write to the Free Software Foundation; we sometimes make
exceptions for this. Our decision will be guided by the two goals of preserving the free status of all
derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
Bibliografia
Servidores www
http://www.openline.com.br/linux-br/ - Home Page do Linux no Brasil
http://www.br.freebsd.org/linux-br/index.html - Home Page do Linux em portugus
http://www.inf.ufrgs.br/~kojima/linux/faq-linux.html - Perguntas frequentemente colocadas na
linux-br (FAQ)
http://www.linux.org - Home page da Linux Organization, site oficial do Linux
http://www.suncite.unc.edu/mdw/welcome.html - Pgina do Projeto de Documentao do Linux.
http://www.linux.if.usp.br - Tudo para linux em portugus/ingls site da USP.
http://www.infor.es/LuCAS - Projeto Lucas - informaes do Linux em espanhol.
http://www.cl.com.ac.uk/users/wj10/linux-faq - Pergunta mais frequentes do Linux em ingls.
http://sunsite.unc.edu/mdw/linux.html - Site com tudo sobre Linux em Ingls
Servidores de FTP
ftp.iis.com.br - diversos arquivos da internet.
ftp.versatec.com - contm diversos softwares para Linux.
ftp.ibp.fr : /pub/linux (Frana)
ftp.cc.gatech.edu : /pub/linux (EUA - sudeste: Suranet)
ftp.cdrom.com : /pub/linux (EUA)
ftp.informatik.tu-muenchen.de : /pub/comp/os/linux (Alemanha)
ftp.ibr.cs.tu-bs.de : /pub/os/linux (Alemanha)
ftp.dfv.rwth-aachen.de : /pub/linux (Alemanha)
ftp.informatik.rwth-aachen.de : /pub/Linux (Alemanha)
ftp.cc.monash.edu.au : /pub/linux (Austrlia)
ftp.dstc.edu.au : /pub/Linux (Austrlia: Queensland)
ftp.sun.ac.za : /pub/linux (frica do Sul)
ftp.inf.utfsm.cl : /pub/Linux (Chile)
ftp.zel.fer.hr : /pub/Linux (Crocia)
linux.if.usp.br : /pub/mirror/sunsite.unc.edu/Linux alm de outros em
/pub/mirror com a distribuicao Debian.
lcmi.ufsc.br : /pub/diversos/linux (Brasil : Santa Catarina) Slackware
cesar.unicamp.br : /pub3/linux (Brasil : So Paulo) Slackware
ftp.ime.usp.br : /pub/linux (Brasil : So Paulo) Slackware
ftp.ufpr.br : /pub/Linux/ (Brasil : Paran) Slackware
Lista de discusses (usernet newsgroup)
comp.os.linux.announce - um grupo de anncios moderado; voc deve l-lo se
pretende usar Linux. Submisses a este grupo devem ser mandadas para
linux-announce@news.ornl.gov.
comp.os.linux.answers - Contm todos os FAQs, HOWTOs e outros documentos
importantes. Assine este grupo tambm.
drew@coorado .edu
(US) bsa@kf8nh.wariat.org
ijackso@cus.cam.ac.uk
faith@cs.unc.edu
(US) ian@ucsd.edu
(UK) sweh@spudde .mew.co.uk
Daniel.Quinlan@linux.org
(US) waltje@infomagic.com
mike@sojurn.lns.pa.us
jmartin@csc.com
(US) dhs@gowworm.firefle .com
metcalf@lcs.mit.edu
te tso@athema.mit.edu
imurdo ck@debian.org
(UK) sct@dcs.ed.ac.uk
(US) niemid@clarck.net