MANUAL DE LINUX

VOLUME 3

ADMINISTRAÇÃO DO SISTEMA

 

 

 

TÓPICOS PÁGINAS

 

 

1 – Informações sobre Linux (man, info, help, HOWTOs, FAQs, ...) . 002

 

2 - Estrutura de Diretórios . . . . . . . . 004

 

3 - Permissões dos Arquivos . . . . . . . . 023

 

4 - Montagem Temporária e Permanente de HD, FD e CDROM . 026

 

5 - Gerenciamento de Memória no Linux . . . . . 028

 

6 - Uso do sistema como "root" e como usuário comum . . . 043

 

7 - Dicas de Firewalling com IPFWADM . . . . . 044

 

8 - X Window System . . . . . . . . 054

 

9 – Recompilando o Kernel . . . . . . . 063

 

10 - Conexão à Internet . . . . . . . . 080

 

11 - Uso de programas para a Internet . . . . 087

 

12 – Dicas Gerais . . . . . . . . 090

 

13 - REFERÊNCIAS . . . . . . . . . . 101

 

1 – INFORMAÇÕES SOBRE LINUX

 

APRESENTAÇÃO

 

Este manual é fruto do trabalho em conjunto com um grande número de usuários do Linux. Vários colegas das listas Linux-br e Linuxabc e várias páginas sobre Linux colaboraram com este manual.

 

Vou resistir à tentação de citar alguns nomes para não correr o risco de ser injusto ao esquecer de citar alguém.

 

Ressalte-se que tivemos a devida autorização de alguns colegas (donos de sites) para divulgar aqui suas dicas.

 

O objetivo deste manual é tornar o Linux mais acessível para os iniciantes, simplificando, traduzindo (algumas vezes) e desmistificando o "SO dos experts".

 

Caso alguém ache aqui algo de sua autoria e não tenha sido citado como tal, entre em contato que faço as devidas alterações.

 

Gostaria de receber críticas e sugestões, tanto técnicas quanto em relação à nossa língua tão rica quanto complexa.

 

Quanto a direitos autorais, sinceramente não pensamos muito nisso. Quem quiser copiar, imprimir, usar e abusar esteja a vontade.

Maicon Wendhausen (maicon@zaz.com.br)

Ribamar F. Sousa (ribafs@fortalnet.com.br)

Thiago Correia(thiagoacorrea@sti.com.br)

Maio de 1999

 

 

 

O Linux tem muita informação disponível via INTERNET. Tem também muita informação on-line: HOWTOs, man pages, info pages e help.

 

Os HOWTOs são informações muito detalhadas sobre todos os aspectos do Linux. Vêm em vários formatos, inclusive html. Sempre que instalar o Linux dê preferência a uma instalação personalizada para poder ter certeza de que irá instalar os HOWTOs e as man pages.

 

Estes HOWTOs normalmente vêm em inglês, mas a Conectiva no Brasil e acho que outros estão traduzindo este material (veja o comentário do Jorge mais abaixo).

 

Através da INTERNET pode-se baixar versões mais atualizadas dos HOWTOs.

Vide site da Conectiva abaixo e no site oficial do Linux e muitos outros.

 

Use o comando locate para localizar um HOWTO no seu disco.

 

As man pages são páginas de manual que podem ser consultadas com facilidade:

man nome.do.comando. São páginas com muita informação.

 

Também temos disponível as info e o help. Uso: info nome.do.comando.

Help, uso: nome.do.comando --help.

 

Quanto aos HOWTOs e páginas de manual, temos mais de 100 (acho que mais de 200) páginas em português do Brasil disponíveis em http://lie-br.conectiva.com.br para download. Os HOWTOs, em breve, estarão disponíveis também... E, a melhor fonte de informação continua sendo sempre aquela que lhe diz o porquê do que se está fazendo e não a que diz apenas como se faz. O "como" agiliza, mas não ensina.

(Essa acima foi do Jorge Godoy.)

 

2 - ESTRUTURA DE DIRETÓRIOS

 

 

A estrutura de diretórios do Linux:

(É bom lembrar aqui que o Linux - como Unix - é case sensitive, interpreta de maneira diferente comandos com maiúsculas de comandos com minúsculas, diferente do DOS/Windows). Em geral os nomes de comandos no Linux são em minúsculas (com algumas exceções).

Agora vou mostrar um exemplo de diferença:

 

DOS: C:\DOCS\LINUX\LINUXMAN.TEX

Linux: /home/hugo/docs/linuxmanual.tex

Tabela 01

bin arquivos executáveis(binários) de comandos essenciais pertencentes ao

sistema e que são usados com freqüência.

Boot arquivos estáticos de boot de inicialização(boot-loader)

Dev arquivos de dispositivos de entrada/saída

Etc Configuração do sistema da máquina local com arquivos

diversos para a administração de sistema.

Home diretórios local(home) dos usuários.

Lib arquivos da bibliotecas compartilhadas usados com freqüência

Mnt Ponto de montagem de partição temporários

Root Diretório local do superusuário (root)

Sbin Arquivos de sistema essenciais

Tmp arquivos temporários gerados por alguns utilitários

Usr todos os arquivos de usuários devem estar aqui (segunda maior

hierarquia)

Var Informação variável

 

Cada diretório listado será discutido em detalhe em uma subseção separada

mas adiante. /usr e /var, cada um tem seu própria sessão de documentos.

O kernel 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 kernel do LINUX recentemente.

Mais informação da localização do kernel pode-se encontrar na sessão

sobre a raiz / neste trabalho.

 

 

 

 

2.1 SUBDIRETÓRIO /BIN

 

Composição : Arquivos Binários de comandos essenciais de usuários

(disponíveis para todos os usuários).

Contém os comandos que podem ser utilizados pelos usuários e pelo

administrador do sistema, porém que são requeridos no modo mono-usuário

(single-user mode) pode também conter comandos que são 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 são ou não essenciais. Não abra subdiretórios dentro /bin.

Os arquivos dos comandos que não são suficientemente essenciais para estar

em /bin estarão localizados em /usr/bin, os elementos que são utilizados

pelos usuários isoladamente (porém não pelo root) (mail, chsh, etc.)

Não são suficientemente essenciais para estar dentro da partição /.

Arquivos e/ou comandos disponíveis em bin

 

Os arquivos que devem estar em /bin são : comandos gerais e comandos de

rede.

 

2.2 Comandos gerais:

 

Os seguintes comandos deverão sido incluídos porque são essenciais.

Alguns estarão presente e tradicionalmente deverão 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, então /bin/sh seria em links simbólico 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 instalação e seria igualmente

carregada a que /bin/sh faz um links simbólico a /bin/ksh. Outros links

simbólicos de sistemas utilizando outros programas, então a partição

/ conterá os componente mínimos necessários.

Por exemplos, muitos sistemas incluiria cpio como de segunda utilidade mais

é usado para reparos depois do tar. Porém jamais se espera restaurar o

sistema da partição /, então estes arquivos podem ser omitidos (montar

/ em chip ROM, montar /usr no NFS). Se a restauração do sistema se planeja

através da rede, Então FTP o TFTP (junto com todo o necessário para obter

uma conexão FTP) estariam disponíveis na partição /.

Os comandos de restauração podem aparecer em /bin ou /usr/bin em sistemas

LINUX diferentes.

 

Comandos de redes.

 

Estes são unicamente os arquivos de rede que os usuários e o root queiram

ou necessitem executar que não estejam no /usr/bin ou /usr/local/bin

{domain name, hostname, netstat, ping}.

Subdiretório /boot:

Composição : arquivos estáticos do boot de inicialização (boot loader).

 

Este diretório contém tudo que é necessário para carregar o sistema, exceto

os arquivos de configuração 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 inicialização (master boot sectors) guardados,

arquivos de mapa de setor e qualquer outra coisa que não é editada

manualmente. Os programas necessários para consertar o boot de inicialização

e capaz de carregar um arquivo (tal como o gerenciador de boot [lilo])

estarão localizados em /sbin. Os arquivos de configuração para carregar

de inicialização poderiam estar localizados em /etc.

Como o exposto acima, o kernel do LINUX pode estar localizado em / ou

/boot, se estiver em /boot, é recomendado usar um nome mais descritivo.

 

2.3 Subdiretório /dev

 

Composição : arquivos de dispositivos de entrada/saída.

Este é diretório dos dispositivos. Contém um arquivo para cada dispositivo

que o kernel do LINUX pode suportar.

/dev também contém um script carregado MAKEDEV o qual pode criar

dispositivos quando necessitar. Pode conter um MAKEDEV local para

dispositivos locais.

MAKEDEV deve fazer previsão para criar qualquer arquivo de dispositivo

especial listado na lista de dispositivos suportados pelo Linux.

Os links simbólicos não devem ser distribuídos no sistemas LINUX, somente

como prevê na lista de dispositivos de LINUX. Isto é porque as

instalações locais seguro diferem daquelas da máquina do administrador.

Além disso, um script de instalação configura links simbólicos na

instalação, estes ligação seguramente não se atualizaram se houverem

trocas locais no hardware. Quando utilizados responsavelmente são de bom

uso.

A lista de dispositivos compatível com o LINUX, é mantida por Peter Anvin

(peter.anvin@linux.org). Estes arquivos especial de dispositivo estão

disponível no endereço eletrônico da INTERNET ftp.eggdrassiml.com, no

diretório /pub/device-list.

 

2.4 Subdiretório /etc

 

Composição : Configuração do sistema da máquina local com arquivos diversos

para a administração de sistema.

 

Contém arquivos e diretórios que são locais ao sistema atual.

 

Nenhum arquivo deve ir diretamente dentro /etc. Os arquivos que nas

primeiras versões encontravam-se em /etc, irá em /sbin ou /usr/sbin. Isto

inclui arquivos tal como init, gette e update, arquivos como hostname que

são utilizados por usuários comuns e pelo root não iriam em /sbin seriam

em /bin.

 

 

 

2.5 Subdiretórios de /etc

 

Tipicamente /etc possui dois sudiretórios :

 

X11 arquivos de configuração para Ox11

sk Esqueletos da configuração usuários

 

O /etc/sk é a localidade para os chamados arquivos esqueletos de usuários,

que são os dados por default quando um novo usuário recebe uma conta, esta

diretório pode conter subdiretórios para diferente grupos de usuários

(/etc/skell/apoio, /etc/skell/usuários).

O /etc/X11 é o lugar recomendado para todos os arquivos de configuração

X11 locais da máquina. Este diretórios é necessário para permitir o

controle local se /usr for colocado somente para leitura. Os arquivos que

devem ir neste diretório incluem Xconfig (e /o XF86Config) e Xmodmap.

O /etc/X11/xdm contém os arquivos de configuração xdm. Estes são a maioria

dos arquivos normalmente gravados em /usr/lib/X11/xdm; veja /var/lib/xdm,

para maior informação.

Arquivos e/ou comandos disponíveis em /etc Esta descrição do conteúdo é

genérica, portanto não está totalmente completa, pode haver algumas

variações dependendo do distribuidor do Linux ou do administrador de

sistema. Os arquivos /etc são composto de :

Arquivos gerais;

Arquivos de rede.

Os arquivos gerais são necessários na maioria dos sistemas LINUX, tais

como :

{adjtime, csh.login, disktab, fdprm, fstab, gettedefs, group, inittab,

issue, ld.so.conf, lilo.conf, magic, motd, mtab, mtools, passwd, profile,

psdaTabelase, securette , shells, se sog.conf, tercamp, tte te pe}

 

Os arquivos de Rede mais utilizados na maioria dos sistemas LINUX são :

 

{exports, ftpusers, gateway, hosts, host.conf, host.equiv, host.lpd,

inetd.conf, networks, printcap, protocols, reolv.conf.rpc, service}

 

Existe dois modo para a instalação dos scripts de comandos "rc" os quais

são 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) terão

arquivos de configuração adicionais, em /etc (/etc/shadow e outros) e

/usr/bin (useradd, usermod, e outros).

 

 

 

2.6 Subdiretório /home:

 

Composição : diretórios locais dos usuários (opcional)

O subdiretório /home é claramente um sistema de arquivos específico do

diretório local. A regra de criá-lo difere de máquina para máquina.

Descreve uma localização sugerida para os diretórios local dos usuários,

assim, recomendamos que todas as distribuições LINUX usem esta lugar como

localização default dos diretórios locais.

Em sistemas pequenos, cada diretório de usuário é um dos subdiretórios

debaixo /home, /home/dirson, /home/raulison, /home/weslei, etc.

Em sistemas grande (especialmente quando os diretórios /home são

compartilhados entre várias máquinas usando NFS) é útil subdividir os

diretórios local . A subdivisão pode ser implementada utilizando

subdiretórios tal como /home/apoio, /home/docs, /home/cartas, etc. Muitas

pessoas preferem colocar as contas dos usuários numa variedade de

lugares, portanto, ninguém deverá confiar nesta localização. Se você

deseja encontrar o diretório local de qualquer usuário, deveria usar a

função de biblioteca getpwent em vez de contar com /etc/passwd, porque a

informação pode estar armazenada remotamente usando sistemas como NIS.

 

2.7 Sudiretório /lib:

Composição : Bibliotecas compartilhadas e módulos do kernel essenciais.

 

O diretório /lib contém aquelas bibliotecas compartilhadas que são

necessária para carregar o sistema e executar os comandos do sistema de

arquivos raiz.

Módulos -> Módulos de kernel carregáveis.

Estes incluem em /lib/libc.so.*, /lib/libm.so.*, O linkador dinâmico

compartilhado /lib/ld.so.*, e outras bibliotecas compartilhadas

requeridas por arquivos em /bin e /sbin.

As bibliotecas que são necessárias somente pelos arquivos /usr (como

qualquer arquivo X Window) não pertencem a /lib. Só as bibliotecas

compartilhadas requeridas para executar os arquivos dentro de /bin e

/sbin devem estar ali. A biblioteca libm.so.* poderia estar localizada

em /usr/lib se não é utilizada de nenhuma forma em /bin ou /sbin.

Por razão de compatibilidade, /lib/cpp necessita existir como uma

referência ao pre-processador C instalado no sistema. A localização usual

do arquivo é /usr/lib/gcc-lib/ <target>/<versão>/cpp. Pode existir links

/lib/cpp apontando para estes arquivo ou a qualquer outra referência a ele

que exista no sistema de arquivos.

(Por exemplo, /usr/bin/cpp é utilizado freqüentemente). A especificação

para /lib/module ainda não foi definida, pois ainda não há um consenso na

comunidade Linux.

 

 

 

2.8 Subdiretório /mnt

 

Composição : Utilizados para armazenamento de arquivos montados

temporariamente.

Este diretórios foi previsto para o administrador poder montar

temporariamente sistemas de arquivos quando necessitar. O conteúdo deste

diretório é um assunto local e não deve afetar a maneira que executamos

nenhum programa.

É recomendamos a não utilização deste diretório para programas de

instalação, e sugerimos utilizar um diretório temporário adequado que não

esta em uso pelo sistema.

 

2.9 Subdiretório /proc

 

Composição : Sistema de arquivos virtual de informação de processos do

kernel.

O sistema de arquivos proc é utilizado para manipular informação de

processos e de sistema em vez de /dev/kmem e outros métodos similares.

É recomendado a utilização deste para o armazenamento e obtenção

de informação de processos, assim como outras informação do kernel ou da

memória.

 

2.10 Subdiretório /root (opcional)

 

Composição : Diretório local do superusuário (root)

O diretório / é tradicionalmente o diretório local do usuário root nos

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

sistemas UNIX. O diretório local da conta do usuário root pode ser

determinada por preferências locais. As possibilidades óbvias inclui

em /, /root, e /home/root. Se o diretório local do root não esta

armazenado na partição raiz, será necessário assegurar-se que tome

/ por default caso não seja localizado.

Não é recomendado o uso da conta root para coisas corriqueiras tal como

ler o e-mail e ver as notícias (mail & news), recomenda-se que seja usada

somente para a administração do sistema. Por esta razão recomendamos

que não apareçam subdiretórios como Mail e News no diretório local da

conta do usuário root. É recomendado que o mail para root seja

redirecionados a um usuário mais adequado.

 

2.11 Subdiretório /sbin:

 

Composição : arquivos de Sistema (algumas vezes mantidos em /etc)

 

Os utilitários usados pela administração do sistema (e outros comandos

que somente o root utiliza) estão armazenados em /sbin, /usr/sbin, e

/usr/local/sbin. /sbin, tipicamente contém arquivos essenciais para dar

boot ao sistema, além dos arquivos em /bin. Qualquer coisa que se executar

depois sabendo que /usr foi montado (quando não há problemas) deveria

estar em /usr/sbin. Os arquivos da administração do sistema root local

devem estar em /usr/local/sbin.

Decidir que arquivos vão no diretório de /sbin é difícil. Se o usuário

necessitar executá-lo, deve de ir para outro diretório. Se somente o

administrador do sistema ou o root necessitem executar, tais como scripts

da administração, então deve ir em /sbin (não /usr/sbin ou

/usr/local/sbin, se o arquivo não é vital para a operação do sistema).

Arquivos como chfn que os usuários usam ocasionalmente devem estar em

/usr/bin. ping que é absolutamente necessário para o root é também

freqüentemente usado pelos usuários, deverão estar em /bin.

Os usuários comuns não terão que por os diretórios sbin em seu caminho

(path).

É recomendado que os usuários tenham permissão de leitura e execução em

tudo que se encontra em /sbin exceto talvez certos programas; setuid e

setgid. A divisão entre /sbin e /bin não foi criada por motivos de

segurança para evitar que os usuários violem o sistema operacional, foi

criada para promover uma boa partição entre arquivos que todos usam e os

que são utilizados principalmente para as tarefas administrativas.

Não há utilidade inerente na segurança em fazer que /sbin esteja fora do

alcance dos usuários.

Arquivos e/ou comandos armazenados em /sbin

Arquivos armazenados são dos seguintes tipos :

comandos gerais;

comandos de saída;

comandos de manipular sistema de arquivos;

gerenciador de boot de inicialização e

comandos de rede.

Os comandos gerais são clock, gette, init, update, mkswap, swapon, swapoff,

telinit.

Os comandos de saída são fastboot, fasthalt, halt, reboot, shutdown.

Os comandos de manipular sistemas de arquivos são 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) são badbocks, dumpe2fs,

e2fsck, mke2fs, mkost+found, tune2fs. O Gerenciador do boot de

inicialização (lilo) e os comandos de Rede : arp, ifconfig, route.

 

2.11.1 Arquivos opcionais em /sbin:

 

Os arquivos estáticos (compilados estaticamente) estão o sln e nc estático, nc são utilitários quando ocorrem erros. O principal uso do sln (reparar links simbólicos incorretos em /lib depois de uma atualização mal sucedidas) não é a preocupação maior, já que existe o programa ldconfig (usualmente localizado em /usr/sbin) e pode atuar como um assistente guiando para atualizar as bibliotecas dinâmicas. O nc estático é útil em algumas ocasiões de emergência. Note que estes não necessitam ser obrigatoriamente versões compiladas estaticamente dos ln e nc, porém podem ser compilados estaticamente.

O arquivo ldconfig é opcional em /sbin, dado que um usuário pode escolher executar ldconfig ao dar boot, em vez de só quando atualizam as bibliotecas compartilhadas . (Não está claro se é ou não vantajoso executar ldconfig em cada inicialização). Assim, alguns que gostam de ter ldconfig a mão na situação que se tem um sln, pois não se sabe como nomear os links.

2.12 Subdiretório /tmp

 

Composição : arquivos temporários gerados por alguns arquivos utilitários.

 

O /tmp é utilizado para arquivos temporários, preferencialmente em

dispositivo rápido (um sistema de arquivos baseados em memória por

exemplo). A "permanência" da informação que é armazenada em /tmp é

diferente de aquela que é armazenada em /var/tmp. /tmp pode ser limpo em

cada inicialização ou a intervalos relativamente freqüentemente.

Portanto, não se deve operar a informação armazenada em /tmp permanecendo

por algum período determinado de tempo.

Os programas devem utilizar /tmp ou /var/tmp (que era originalmente

/usr/tmp) de acordo os requisitos esperados da informação, pois não devem

colocar nenhum arquivo particular em qualquer diretório de armazenamento

temporário.

Os administradores de sistemas podem querer ajuntar /tmp a algum outro

diretório, tal como /var/tmp. Isto é útil, por exemplo, para conservar

espaço na partição raiz. Se está é executada, então a permanência de

arquivos em /var/tmp deve ser mesmo tão grande como a de /tmp. O

subdiretório /tmp pode estar na memória RAM, /var/tmp nunca poderá se l

ocalizar-se em algum dispositivo RAM.

 

2.13 A hierarquia /usr.

 

O subdiretório /usr é a segunda maior seção do sistema de arquivos. /usr

é informação compartilhada, somente de leitura, isto significa que /usr,

deve ser compartilhada entre várias máquinas que utilizam o LINUX e não

deve exibir qualquer informação local de uma máquina ou que varia com o

tempo, deve ser armazenada em outro lugar.

Nenhum pacote grande (como TeX o GNUEmacs) deve utilizar o subdiretório

direto abaixo de /usr, em vez disso, deve haver um subdiretório dentro

/usr/lib (o /usr/local/lib caso tenha sido instalado localmente), a

propósito, como o sistema X Window faz-se uma exceção permitindo um

considerável precedente e a prática amplamente aceita. Exemplo de um

subdiretório /usr típico :

 

carvalho:/usr$ ls

X11@

Etc/

lib/

spool@

X11R6/

Games/

local/

src/

X386@

i486-linux/

man/

tclX/

adm@

i486-linuxaout/

openwin/

tkX/

bin/

i486-sysv4/

preserve@

tmp@

dict/

Include/

sbin/

doc/

Info/

share/

carvalho:/usr$

 

2.13.1 Subdiretórios /usr (permanente)

 

Em um sistema típico teremos mais ou menos os seguintes diretório :

X11R6

Sistema X Window Versão 11 release 6

X386

Sistema X Window Versão 11 release 5 em plataformas X 386

Bin

A maioria dos comandos de usuário

Dict

Listas de palavras

Doc

Documentação miscelânea

Etc

Configuração do Sistema

Games

Jogos e arquivos educacionais

Include

arquivos header(cabeçalhos) incluídos por programas C

Info

Diretório primário, o sistema GNU Info

Lib

Bibliotecas

Local

Hierarquia local

Man

Manual on line

Sbir

Arquivos de Administração do Sistema não vitais

Share

Informação independente da arquitetura

Src

Código fonte

 

 

Os seguinte links simbólicos a diretórios podem estar presentes. Esta

possibilidade baseia-se na necessidade de preservar a compatibilidade com

sistemas anteriores haja visto que em todas as implementações pode

assumir o uso da hierarquia /var, poderão existir os seguintes links :

 

/usr/adm ------------------> /var/adm

/usr/préerve ------------------> /var/préerve

/usr/spool ------------------> /var/spool

/usr/tmp ------------------> /var/tmp

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

Uma vez que o sistema não precise mais de alguns dos liks anteriores, deve

existir um links deste /usr/X11 apontando para a hierarquia do sistema X

Window atual.

Subdiretório /usr/X386

É composta do sistema X Window, versão 11 release 5 em plataformas X 86,

esta hierarquia é geralmente idêntica a /usr/X11R6, exceto que os links

simbólicos de /usr devem estar ausente se estiver instalado /usr/X11R6.

Subdiretório /usr/bin

É composta da maioria dos comandos do usuário, este é o diretório

principal de comandos executáveis no sistema possui o mh (comandos para o

sistema de manipular e-mail MH) e o X11 (link simbólico até

/usr/X11R6/bin).

Os interpretadores de scripts dos shell (invocados com #! <rota> na

primeira linha do script de shell) não podem depender de uma rota, é

vantajoso o padronizar a localização dos elos. A shell Bourne e C é tão

fixos em /bin, pois Perl, Pethon, Tlc se encontram em muitos lugares

diferentes /usr/bin/perl, /usr/bin/pethon e /usr/bin/tcl devem possuir

referências a os interpretador de shell perl, pethon e tcl respectivamente.

Estes podem ser links simbólicos a localização física dos interpretador

da shell.

 

2.13.2 Subdiretório /usr/dict - Listas de palavras

 

Arquivos recomendados em /usr/dict (words), tradicionalmente esta diretório

contém somente arquivos words de palavras inglesas, o qual é utilizado por "look" para vários programas de ortografia, words pode utilizar

ortografia americana ou britânica. Os usuários 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 inglês

para a linguagem, por exemplo, /usr/dict/french, /usr/dict/danish, etc.

Estes devem, se possível, utilizar o jogos de caracteres ISO 8859 que

faz apropriado para linguagem em questão, e se possível, o jogo de

caracteres ISO 8859-1 (Atin1) deve ser utilizado (muito raramente é

possível fazê-lo). Qualquer outra lista de palavras, tal como o diretório

web2, deve ser incluído aqui. É razoável ter aqui só as listas de palavras,

e que elas são os únicos arquivos comum a todos os verificadores de

ortografia.

 

2.13.3 Subdiretório /usr/etc

 

Contém a configuração do sistema, porém armazenar a configuração /usr/etc

do software que se encontra em /usr/bin e /usr/sbin é um problema.

Montar /usr somente para leitura de um CD-ROM ou através de NFS é difícil

no melhor dos casos.

Uma possível solução que considerada foi eliminar completamente /usr/etc e

especificar que todas as configurações se armazenem em /etc. Acontece que

existe a possibilidade de que muitos site podem querer ter alguns arquivos

de configuração que não estejam na sua máquina local.

Eventualmente, decide-se que /etc deverá ser o único diretório que seja

referenciado pelos programas (Isto é, todos devem buscar configurações em

/etc e não /usr/etc). Qualquer arquivo de configuração que necessário

para todo o sistema e que não era necessário antes de montar /usr (em uma

situação de emergência deve estar localizado em /usr/etc). Arquivos

específicos em /etc, em máquinas específicas podem ter ou não um link

simbólicos aos arquivos de configuração localizados em /usr/etc. Isto

também significa que /usr/etc é tecnicamente um diretório opcional no

sentido restrito, mesmo assim recomendamos que todos os sistemas LINUX o

incorporem.

Não é recomendado que /usr/etc contenha links simbólicos que apontem para

arquivos /etc. Isto é desnecessário e interferem no controle local das

máquinas que compartem o diretório/usr.

Subdiretório /usr/include

Neste diretório é onde todos os arquivos include de uso geral do sistema

para programação em linguagem C e C++ podem ser localizados.

 

Descrição dos principais subdiretórios de /usr/include :

/usr/include arquivos include

X11 Link simbólico até /usr/X11R6/include/X11

arpa Definição do protocolo definido por ARPNET.

asm Link simbólico até /usr/scr/linux/include/asm-<arch>.

bsd arquivos include de compatibilidade com BSD.

g++ arquivos include de GNU C++.

gnu arquivos include GNU.

linux Link simbólico a /usr/src/linux/include/linux.

net Definição genéricas relacionadas com rede.

netax25 Definição específicas a +AX25 ( ARRL AX25).

Netinet Definição específicas a TCP/IP.

netipx Definição específicas a +IPX (NovOIPX/SPX).

protocols Definição de protocolos( baseadas em INET)

readline A biblioteca readline GNU.

rpc Definição RPC de Sun Microsystem.

Rpcsvc Definição de serviços RPC de Sun Microsystem.

sys arquivos include de geração de sistemas

 

O subdiretório arpa contém definições de header de protocolos para os

protocolos ARPANET, TCP/IP, definições para ftp, protótipos telnet e

material similar.

O subdiretório net contém definições genéricas relacionadas com a rede,

define a interface sistema vs. kernel, detalhes da família de protocolo,etc.

O subdiretório netinet contém definições específicas de INET (DARPA

Internet, que também é contida no TCP/IP )

ARRL AX.25 é melhor conhecido como pacote de transmissão via radio (packet

radio). Os protocolos novell IPX/SPX são parte dos serviços de arquivos

Novell Netware.

 

2.13.4 Subdiretório /usr/lib

 

Inclui as bibliotecas para programas e pacotes, inclui as bibliotecas

objeto, arquivos de programa compilador, informação estática de várias

casos, ambos, códigos executável (por exemplo os arquivos internos de gcc

estão localizados abaixo /usr/lib/gcc-lib) e outros tipos de informação.

 

/usr/lib/ - bibliotecas para programação e pacotes:

 

X11 Link simbólico para /usr/X11R6/lib/X11

emacs arquivos de suporte estáticos para o editor GNUEmacs.

games arquivos de dados estáticos para /usr/games.

groff Bibliotecas / diretórios para GNU groff

gcc-lib arquivos/diretórios específicos do sistema para gcc.

kbd Tabelas de tradução de teclado e informação relacionada.

Mh Bibliotecas para o sistema de manipular e-mail MH:

news Cnews/INN.

smail Smail.

terminfo diretórios para a base de dados terminfo.

texmf TeX/MF ( e ATeX ) bibliotecas de informação.

uucp Comandos de UUCP.

zoneinfo Configuração e informação da zona horária.

 

Historicamente, /usr/lib é incluído além disso alguns comandos executáveis

tais como sendmail e makewhatis.

Dado que makewhatis não é referenciado por outros programas, não há

problemas ao mover para um diretório de arquivos executáveis. Arquivos que

os usuários precisam para usar makewhatis, /usr/lib de onde pertencem.

O arquivo catman que repassa ao script makewhatis em muitos sistemas LINUX,

deve também estar em usr/bin.

O arquivo sendmail é referenciado por muitos programas com seu nome

histórico /usr/lib/sendmail. Este deve ser um links simbólico, a

localização layout para os agente de transferência de e-mail com uma

interface de linha de comando compatível 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 simbólico a smail.

Este regra vai de encontro também com a nova ocorrência no layout sendmail

definida em Sendmail 8.6.x e BSD 4.4.

Note que esta localização requer que /usr/sbin e /usr/sbin/sendmail devem

ser executáveis para usuários normais.

Qualquer pacote de programa que contenha e precisa informação que não

necessite ser modificada deve armazenar tal informação em /usr/lib (o

/usr/local/lib, esta instalado localmente). Recomenda-se a utilização

de um subdiretório em /usr/lib para este propósito.

A informação de jogos armazenada em /usr/lib/games deve ser apenas

informação estática. Qualquer arquivo modificável tal como arquivos

demarcado, registros de jogos e similar, devem de ser localizados em

/var/lib.

É necessário para compatibilidade de jogos, pode-se usar um links simbólico

desde /usr/games/lib até /usr/lib/games.

Nota: nenhuma informação especifica de host para o sistema X Window deve

armazenar-se em /usr/lib/X11 (que é realmente /usr/X11R6/lib/X11). Os

arquivos de configuração específicos do host tal como Xconfig o XF86Config

devem ser armazenados em /etc/X11. Este deve incluir informação de

configuração como o stem.twmrc, se for somente um links simbólico, um

arquivo de configuração mais global (talvez em /usr/etc/X11 ou

/usr/X11R6/lib/X11).

 

Subdiretório /usr/local

A hierarquia /usr/local está para ser utilizada pelo administrador de

sistemas quando instala o Linux localmente. Necessita ficar a salvo de

ser sobrescrito quando o software do sistema se atualiza. Pode ser usado

por programas e por informação que são compatível entre um grupo máquinas,

pois não se encontram em /usr.

 

/usr/local Diretórios da Hierarquia local

bin arquivos

doc Documentação local

etc arquivos de configuração utilizados somente no local

games Jogos instalados localmente

lib Bibliotecas para /usr/local

info Páginas de informação local

man Hierarquias de páginas de manual para /usr/local

sbin Administração do sistema

scr Código fonte local.

 

Este diretório deve estar vazio ao terminar de instalar o LINUX pela

primeira vez. Não deve haver exceções a regra , exceto os subdiretórios

vazios listados.

O software instalado localmente deve estar localizado dentro de

/usr/local, em vez de /usr a menos que esteja sendo instalado para

reimplantar ou atualizar software em /usr.

Note que o software localizado em / ou em /usr pode ser sobrescrito por

atualizações do sistema (assim mesmo, é recomendado que as distribuições

não sobrescrevam informações /etc fora destas circunstâncias).

Por esta razão, o software local não deve se colocado fora de /usr/local

sem uma boa causa.

 

 

2.13.5 Subdiretório /usr/man

 

Inclui as paginas do manual, detalha a organização das páginas do

manual através do sistema, devem estar dentro de /usr/man.

As páginas do manual estão armazenadas <mandir>/<locais>/man [1-9].

Faremos uma pequena listagem de <mandir> e <locais> :

 

<mandir>/<locais> uma hierarquia de páginas de manual.

man1 Programas para usuários.

man2 Chamadas do sistema.

man3 Subrotinas e funções de biblioteca.

man4 Dispositivos.

man5 Formatos arquivos.

man6 Jogos.

man7 Miscelâneas.

man8 Administração do Sistema.

man9 Funções e variáveis internas do kernel.

 

O <mandir> primário do sistema é /usr/man contém informação do manual para

comandos e informação abaixo dos sistemas de arquivos / e /usr. Obviamente

não há páginas de manual em / porque não se necessitam para carregar nas

emergências.

Deve-se fazer reserva na estrutura de /usr/man para o suporte de páginas do

manual que estão escritas em diferentes idiomas (múltiplos idiomas). Estas

providências devem levar em conta o armazenamento e referência destas

páginas do manual. Os fatores relevantes incluir no idioma (inclui

diferenças baseadas na geografia) e código do conjunto caracteres.

Esta nomenclatura dos subdiretórios de idiomas de /usr/man esta baseada no

apêndice e do padrão POSIX 1003.1 que descreve a cadeia de identificação

locais.

O método mas aceito para descrever um ambiente cultural. A cadeia <locais>

é:<idioma>[<_territorio>][.<conjunto_de_caracteres>][,<versão>]

O campo <idioma> vem do ISO639 (um código para a representação dos nomes

dos idiomas). Seja os caracteres especificado no padrão ISO, com

minúsculas somente.

O campo <_território> será o código das letras de ISO3116 (uma

especificação da representação dos nomes dos países, se possível (muita

gente está familiarizada com o código 2 letras espelhado no código país

como e-mail).

O campo <conjunto _de _caracteres> deve representar o layout que descreve o

código caracteres. Se o campo <conjunto _de _caracteres> é só uma

especificação numérica, o número representa o número do layout

internacional que descreve o conjunto caracteres. Recomenda-se que

utilizar uma representação numérica, sempre que for possível (especialmente

o padrão ISO), que não inclua símbolos de pontuação e que todas as letras

sejam minúsculas.

Um parâmetro que especifique <versão> do perfil pode ser colocada depois

do campo <conjunto _de _caracteres >. Esta pode utilizar-se para

diferenciar as necessidade culturais.

Em sistemas que usem só um idioma e um código do conjunto de caracteres

para todas as páginas do manual, pode-se omitir a subcadeia <locais> e

armazenar todas as páginas do manual em <mandir>. Por exemplo no sistemas

que só tem páginas do manual em inglês codificados na ASCII, podem

armazenar as páginas do manual (Os diretórios man[1-9]) diretamente em

/usr/man.

Em países nos quais existe um código do conjunto caracteres no layout,

pode omitir o campo <conjunto _de _caracteres>, porém é bastante

recomendado que a inclua, especialmente para países com vários layouts.

Exemplos de vários manuais encontrados :

 

Idioma

Países

Conjunto caracteres

Diretório

Inglês

-

ASCII

/usr/man/em

Inglês

Reino Unido

ASCII

/usr/man/em_GB

Inglês

Estados Unidos

ASCII

/usr/man/em_US

Francês

Canadá

ISO8859-1

/usr/man/fr_CA

Francês

França

ISO8859-1

/usr/man/fr_FR

Alemão

Alemanha

ISO646-DE

/usr/man/de_DE646de

Alemão

Alemanha

ISO6937

/usr/man/de_DE6937

Alemão

Alemanha

ISO8859-1

/usr/man/de_DE.88591

Alemão

Suíça

ISO646-CH

/usr/man/de_CH.646ch

Japonês

Japão

JIS

/usr/man/ja_JP.jis

Japonês

Japão

SJCS

/usr/man/ja_JP.sjis

Japonês

Japão

UJ (ó EUC-J)

/usr/man/ja_JP.ujis

 

As páginas do manual para os comandos e informação que se encontra abaixo

/usr/local estão armazenadas em /usr/local/man. As páginas do manual para

o sistema X Window estão armazenadas em /usr/X11R6/man. Logo todas as

hierarquias de páginas do manual no sistema devem ter a mesma estrutura

que /usr/man. Os diretórios vazios podem ser omitidos da hierarquia de

páginas do manual. Por exemplo se, /usr/local/man não tem páginas do

manual na seção 4 (dispositivos) então se pode omitir /usr/local/man/man4.

As seções da páginas cat (cat[1-9]) que contém páginas do manual formatadas,

também se encontram dentro os subdiretórios /<mandir>/<locais>, pois não

são requeridas nem devem ser distribuídas no lugar das fonte nroff das

páginas do manual.

As páginas do Manual do sistema de manipulação de e-mail mh devem ter o

prefixo mh em todos os nomes de arquivos das páginas.

As páginas do sistema X Window devem de ter o prefixo X em todos os nomes

dos arquivos das páginas.

A prática de colocar as páginas do manual de diferentes idiomas, nos

subdiretórios apropriados de /usr/man também se aplica a as outras

hierarquias de páginas do manual, tais como /usr/local/man e

/usr/X11R6/man.

Isto também é aplicável a estrutura opcional de /var/catman, mostrada no

subdiretório /var.

 

Subdiretório /usr/sbin

 

Este diretório contém quaisquer arquivo não essenciais utilizado

exclusivamente pelo administrador do sistema.

Os programas de administração do sistema que sejam utilizados para a

reparação do sistema, montado no /usr, outras funções essenciais devem

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

Tipicamente /usr/sbin contém os deamons de rede, quaisquer ferramenta de

administração não essenciais e arquivos para programas servidores não -

críticos. Estes inclui os deamons da INTERNET que são chamados por inted

(chamados in.*) tais como in.telnetd e in.fingerd e os deamons baseados em

rpc manipulados por portmap (chamados rcp.*), tais como rcp.infsd e

rcp.mountd.

Estes programas servidores são utilizados quando ocorre um estado que o

System V conhece como "run levO2" (estado multiusuário) e o "run levO3"

(estado em rede) ou estado que o BSD conhece como "modo multi - usuário",

neste ponto ficam disponíveis os serviços para os usuários (suporte de

impressão) e até outras máquinas (por exemplo, exportar NFS).

Os programas administrativos instalados localmente devem estar localizados

em: /usr/local/sbin.

 

Subdiretório /usr/share

 

São informação que independente da arquitetura, quaisquer especificação

para /usr/share será incluída em um documento suplementar ao FSSTND, de

acordo com a Linux Organization, os pesquisadores do FSSTND acham que

/usr/share não é necessário na maioria dos sistemas Linux.

 

Subdiretório /usr/src

 

Contém o Código fonte para o kernel do Linux, qualquer código fonte não

local deve localizar-se neste diretório . O único código fonte que sempre

deve localizar-se em um lugar específicos é o código do kernel(quando

exista ou esteja enlaçado como parte de uma estrutura /usr/include).

Podem-se usar subdiretórios que desejar.

O código fonte para Kernel deve sempre estar em seu lugar mesmos. Os

arquivos include do código do kernel. Esses arquivos estão localizados

neste diretórios.

 

/usr/src/linux/include/asm-<arch>

/usr/src/linux/include/linux

 

/usr/include deve conter links a estes diretórios, chamados asm e linux,

dados que são necessitados pelo compilador de C, ao menos estes arquivos

include devem sempre ser distribuídos nas instalações que incluem

um compilador C. Devem ser distribuídos no diretório/usr/src/linux de

forma que não existam problemas quanto os administradores do sistema

atualizem sua versão do kernel pela primeira vez.

 

/usr/src/linux pode também ser um links simbólico a um árvore de código

fonte do kernel.

 

2.14 A Hierarquia /var

 

/var

Informação variável

Adm

Informações administrativa do sistema (obsoleto). Link simbólico até

 

/var/og

Catman

Páginas do manual formatadas localmente

Lib

Informação do estado das aplicações

Local

Informação variável do software de /usr/local

Ock

Arquivos de bloqueio

Og

Arquivos de Agenda

Named

Arquivos DNS, somente rede

Nis

Arquivos base de dados NIS

Nis

Arquivos base de dados NIS

Nis

Arquivos base de dados NIS

Run

arquivos relevantes a processos execução do sistema

spool

Diretórios de trabalhos em fila para realizar-se depois

tmp

arquivos temporários, utilizado para manter /tmp menor possível

 

/var contém arquivos com informação variável. Esta incluem arquivos e

diretórios em fila de execução, informação de ordem administrativa e

arquivos temporários e transitórios.

Algumas porção de /var são não compatível entre diferentes sistemas. Por

exemplo, /var/og, /var/ock e /var/run. Outras porção são compatível,

notoriamente /var/spool/mail e /var/spool/news.

/var é especificada aqui para fazer possível montar /usr somente para

leitura. Tudo aquilo que alguma vez ficou em /usr é escrito durante a

operação normal do sistema (não durante a instalação e manutenção do

software) deve ir em /var.

Se /var não pode ser uma participação separada, é preferível mover /var

para fora do diretório raiz, pois dentro da partição /usr (Isto se fazia

algumas vezes para reduzir o tamanho da partição raiz ou quando há pouco

espaço na partição raiz). Sendo assim, /var não deve ser enlaçada a /usr,

porque fazia que a separação entre /usr e /var seja mais difícil e

seguramente criará um conflito do nomes, em vez links /var e / usr/var.

/var/adm : Agenda do sistema e arquivos contabilizados (obsoleto)

 

Este diretório tem sido repassado para /var/og e outros diretórios . Deve

ser um links simbólico a /var/og até que todos os programas não se refiram

mas a algum arquivo em /var/adm.

utmp seja movido a /var/run. Todos os arquivos agendas vão ser movidos

a /var/og incluindo o arquivo wtmp.

O suporte de empacotamento das distribuições deve armazenar em

/var/lib/<nome>.

Nota: O links simbólico /var/adm não deve ser necessário a maioria dos

sistemas Linux-i386ELF dado que Otroca foi

introduzido antes que ELF fora liberado ao público.

/var/catman : Páginas do Manual Formatadas localmente (opcional)

Este diretório proporcionara uma localização padrão para os computadores

que utilizam uma partição /usr somente para leitura , pois desejam permitir

o armazenamento temporário de páginas do manual formatados localmente.

Os administradores que montaram /usr como escrita (instalações

mono-usuários) podem escolher não usar /var/catman e exibir as páginas do

manual formatadas dentro dos diretórios cat[1-9] dentro /usr diretamente.

Recomendamos que a maioria dos administradores utilizem uma das seguintes

opções em seu lugar.

Preformatando todas as páginas do manual dentro /usr com o programa

(catman).

Não será permitido o armazenamento temporário das páginas formatadas do

manual e precise que se execute nroff cada vez que necessite uma página.

Se permita o armazenamento temporário local das páginas do manual em

/var/catman.

A estrutura de /var/catman necessita refrear ambos, O trecho da existência

de múltiplas hierarquias de página do manual e a possibilidade do uso de

múltiplos idiomas.

Dada uma página do manual sem formatar que normalmente aparece em

/usr/<rota1>/man/man[1-9], a versão formatada armazenada temporariamente

deve ir em /var/catman/<rota2>/cat[1-9], aonde <rota2> é <rota1>. Os

componentes <rota2> e <rota1> estão 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 páginas do manual escritas em /var/catman/cat[1-9] podem eventualmente,

transferir-se a /usr/<rota>/cat[1-9]. De igual forma as páginas do manual

formatadas dentro de /usr/<rota>/cat[1-9] podem expirar se não são aceitas

num período do tempo.

Se tivessem páginas do manual preformatadas com um sistema Linux num meio

somente para leitura (por exemplo um CD-ROM), devem estar instaladas em

/usr/<rota>/cat[1-9]. /var/catman está reenviado para um lugar de

armazenamento temporário para páginas de manual formatados.

/var/lib : Informação de Estado das Aplicações.

emacs Diretório do estado do Emacs

games Informação variável de jogos

news Arquivos variáveis de Cnews/INN

texmf Informação variável associada com TeX

xdm arquivos de autenticação e código de erros de aplicações X Window.

 

/var/lib/<nome> é o lugar apropriado para o suporte de empacotamento de

todas as distribuições. Diferentes distribuições de Linux podem utilizar

diferentes nomes para suporte.

 

 

3 - PERMISSÕES DE ARQUIVOS

 

Como dá para concluir, permissões de arquivos (e diretórios) diz respeito ao que é permitido ao usuário fazer em relação aos arquivos/diretórios. Como o Linux é um SO multiusuário (mesmo que seja instalado em um micro isolado do mundo e sem placa d rede ou modem), ele divide os usuários em três grupos: o do dono do arquivo, o dos usuários do mesmo grupo do dono e o dos demais usuários.

 

Ao executar o comando ls -la em um diretório, cada arquivo aparece com suas permissões à esquerda, assim: drwxrwxrwr

0111222333

 

a) A primeira letra "d" 0 (zero) indica o tipo do arquivo (arquivo ou diretório)

 

b) As letras seguintes são agrupadas de três em três "rwx" a cada conjunto indica o acesso que você vai permitir a:

 

1 - o dono do arquivo - primeiro grupo

2 - usuários do mesmo grupo do dono - segundo grupo

3 - demais usuários - terceiro grupo

c) r --> permissão de leitura (Read)

w --> permissão de escrita (Write)

x --> permissão para executar (eXecute)

 

d) Cada grupo de três letra é representado por um número octal, para alterar as permissões você só precisa fazer o seguinte:

 

I - Divida como você quer setar as permissões e escreva um número binários com elas (se quer setar bote 1 senão bote 0). Veja o seu exemplo

 

"drwxr-x--x"

111101001

 

separando para visualizar melhor temos:

 

"d rwx r-x --x"

111 101 001

 

II - Agora pegue cada um dos números binários resultantes e transforme no seu equivalente em octal (em decimal dá a mesma coisa). então temos:

 

"d rwx r-x --x"

111 101 001

7 5 5

 

e) Agora você só precisa fazer 'chmod 755 <arquivo>' para ter a permissão que você queria.

 

 

 

Ou seja, o comando chmod usado dessa forma indica as permissões dos três grupos de usuários vistos acima, cada número representa as permissões do respectivo grupo. Aqui no exemplo diz: 7 representa as permissões do primeiro grupo (o dono do arquivo) e significa que ele pode ler, gravar e executar. Já o segundo algarismo (do segundo grupo) o 5 diz que o segundo grupo pode ler, não pode gravar e pode executar. O terceiro algarismo, (do terceiro grupo) o algarismo 5 diz, que esse grupo pode apenas executar.

 

Só quem pode mudar as permissões do arquivo é o dono dele ou então o root.

 

Usando o comando chmod para tornar um arquivo executável: chmod +x arquivo.extensao.

 

Obs.: O texto acima foi colocado numa lista de discussão por um colega que não anotei o nome, mas fica aqui a citação do colega anônimo. Agora veja uma tabela com os valores baseada nas várias combinações possíveis das permissões, nos algarismos usados pelo chmod (em The Linux Manual, do Hugo Cisneiros).

 

0 - nenhuma permissão 4 - permissão para ler

1 - permissão para executar 5 - permissão para ler e executar

2 - permissão para gravar 6 - permissão para ler e gravar

3 - permissão para gravar/executar 7 - permissão para ler/gravar/

/executar

 

Permissões e Ownership

 

Arquivos e diretórios do DOS tem os seguintes atributos: A (archive), H (hidden), R (read-oly) e S (system).

No UNIX um arquivo tem "permissões" de acesso e um proprietário (owner), que pertence a um grupo (group). Veja o exemplo:

 

$ ls -l /bin/ls

-rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls*

 

O primeiro campo contém as permissões do arquivo /bin/ls, que pertence ao root, no grupo bin. Deixando o restante da informação de lado, lembre se que -rwxr-xr-x significa, da esquerda para a direita:

"-" (hífen) é o tipo de arquivo ( - = arquivo comum, d = diretório, l = link, etc);

rwx são as permissões para o dono do arquivo (owner) (read, write, execute);

r-x são as permissões para o grupo do dono do arquivo (read, execute);

r-x são permissões de todos os outros usuários (read, execute).

 

O diretório /bin tem permissões também, por isso você não pode deletar o arquivo /bin/ls a menos que você seja o root. Para alterar as permissões de um arquivo, o comando é:

 

$ chmod <quemXperm> <arquivo>

 

Onde quem é u (user, que é o dono (owner)), g (group(grupo)), o (other(outros)), X é tanto + ou -, perm é r (read), w (write), ou x (execute). Exemplos comuns do uso de chmod:

 

$ chmod +x file isto atribui permissão de execução ao arquivo.

 

$ chmod go-rw file isto remove permissões de leitura (read) e escrita (write) para todos, exceto para o dono do arquivo (owner).

$ chmod ugo+rwx file isto dá a todos direitos de leitura (read), escrita (write) e execução (execute).

 

# chmod +s file isto faz, o assim chamado "setuid" ou "suid" arquivo --- um arquivo que todos podem executar com seus próprios privilégios (permissões/direitos). Estes são normalmente arquivos importantes do sistema como o servidor X.

 

Existe um meio mais rápido de se referir a permissões, com dígitos: rwxr-xr-x pode ser expresso por 755 (cara letra corresponde a um bit: --- e 0, ---x e 1, -w- e 2, -wx e 3 ...). Isto parece difícil, mas com um pouco de pratica você entende o conceito.

Root, como sendo o superusuário, pode modificar as permissões de arquivos de qualquer usuário no sistema. Leia os man pages para informações adicionais.

 

PERMISSÕES DE DIRETÓRIOS

 

Diretórios, como os arquivos também tem permissões. O que você viu na sessão "Permissões e Ownership" se aplica a diretórios também. Para um diretório, "rx" significa que você pode "ler" o diretório (cd), e "w" significa que você pode deletar um arquivo no diretório (de acordo com as permissões do arquivo), ou o próprio diretório.

 

Por exemplo, para prevenir outros usuários de bisbilhotar em /home/guido/text, digite:

 

$ chmod o-rwx /home/guido/text

 

4 - MONTAGEM TEMPORÁRIA DE HD, DISQUETE E CD-ROM

 

Fisicamente, formatar um disco é uma coisa, fazer um sistema de arquivos nele é outra. Em DOS, o comando FORMAT A: faz as duas coisas, mas no Linux existem comandos separados para cada uma dessas tarefas. Exemplo: para criar um sistema de arquivos...

 

# mkfs -t ext2 -c /dev/fd0H1440

 

Uma vez que o disco estiver preparado, monte-o usando o comando

 

No Linux, para você utilizar disquetes e CDs, deve-se antes montar essas unidades e antes de retirá-las do drive, deve-se desmontá-las.

 

 

4.1 - MONTAGEM DE HD

 

- Montar partição w95/98 no Linux:

Criar um diretório: mkdir /windows ou /mnt/win95

Montar: mount -t vfat /dev/hda1 /windows (supondo que hda1 é a partição w95/98)

 

 

4.2 - MONTAGEM DE DISQUETE

 

Criar um diretório: mkdir /mnt/floppy (caso ainda não tenha sido criado)

Você pode usar os formatos minix, vfat, dos ao invés de ext2.

 

- Depois de montado, basta usar o diretório /mnt/floppy para ler/gravar no disquete.

 

Antes de retirar o disquete do drive deve-se desmontá-lo.

 

 

4.3 - DESMONTAR UM DISQUETE:

 

umount /mnt/floppy

 

 

4.4 - MONTANDO UM CD-ROM:

 

- Montar: mount /dev/cdrom /mnt/cdrom Se não funcionar:

- Criar um diretório: mkdir /mnt/cdrom e mount -t iso9660 /dev/hdb /mnt/cdrom

(supondo que o drive de CD seja hdb)

 

Também como o disquete, o CD-ROM deve ser desmontado antes de ser retirado do drive (observe que quando montado ele não sai do drive, pode pressionar o botão para ejetar que não adianta, só obedece após ser desmontado.

 

 

4.5 - DESMONTAR UM CD-ROM:

 

umount /mnt/cdrom

 

4.6 - MONTAGEM PERMANENTE DE CD-ROM, HD E FLOPPY:

 

Os pontos de montagem para ficarem permanentes devem ser adicionados logo na instalação (quando são colocados no arquivo /etc/fstab) ou após a instalação, também sendo inseridos no /etc/fstab:

 

Para montar permanentemente uma partição w95/98 no Linux:

- Criar o diretório (ou ponto de montagem): mkdir /win95 ou /mnt/w95;

- Editar o /etc/fstab: vi /etc/fstab e adicionar a linha abaixo

/dev/hda1 /windows vfat noauto 0 0

- Editar o /etc/mtab: vi /etc/fstab e adicionar

/dev/hda1 /windows vfat rw 0 0

Veja os outros exemplos no /etc/fstab, para disquetes e CD-ROM.

 

5 GERENCIAMENTO DE MEMÓRIA NO LINUX

 

5.1 Gerenciamento de Memória do Linux (LMM)A execução do LMM (Linux Memory Manager) exige uma estratégia de paginação com uma copy-on-write confiando nas 386 páginas auxiliares. Um processo

alcança suas tabelas de páginas de seu parent (durante um fork ) com as

entradas marcadas como read-only ou trocado. Então, se o processo tenta

escrever para este espaço de memória e a página é uma copy on write page,

isto é copiado e a página marcada read-write. Um exec ( ) resulta na

leitura de uma página ou mais do executável. O processo então erra em

qualquer outra página que precisar.

Cada processo tem uma tabela de página que significa que pode acessar 1 Kb

de tabela de página indicando para 1 Kb de 4 Kb, páginas que é 4 Gb de

memória. Um diretório de página do processo é iniciado durante um Fork por

copy-page-tables. O processo inativo tem seu diretório de página

inicializado durante a seqüência de inicialização.

Cada processo usuário tem uma tabela descrita no local que contém um código

de segmento e um segmento de dados. Estes segmentos usuários estendem de 0

para 3 Gb (0 X c 0000000). Nos espaços usuários, endereços lineares e

endereços lógicos são idênticos.

No 80386, endereços lineares vão de 0 Gb para 4 Gb. Um endereço linear

indica uma posição particular de memória dentro deste espaço. Um endereço

linear não é um endereço físico --- isto é um endereço virtual. Um endereço

lógico consiste de um seletor e um offset. O seletor indica para um segmento

e o offset diz que distância na seção o endereço é localizado.

O código Kernel e o segmento de dados são seções privilegiados definidos na

tabela descritora global e estende de 3Gb para 4Gb. O Swapper - page - dir

é organizado para que estes endereços lógicos e físicos sejam idênticos no

espaço Kernel.

O espaço 3Gb acima aparece no process page directory como indicadores para

tabelas de páginas Kernel. Este espaço é invisível para o processo no user

mode, mas o modo privilegiado é acionado, por exemplo, para sustentar um

sistema de ligação. O modo supervisor é inserido dentro do contexto do

processo atual então a tradução do endereço ocorre com respeito ao

diretório de página do processo, mas usando segmentos Kernel.

Isto é idêntico no mapeamento produzido com o uso de swapper - pg - dir e

segmentos Kernel como ambos diretórios de páginas usa a mesma tabela de

página neste espaço. Apenas task [0] (A tarefa inativa, ás vezes chamada

de "tarefa trocadora" por razões históricas, mesmo assim isto não tem

relação com trocas nos implementos Linux) usa o swapper - pg - dir

diretamente.

O segmento base do processo usuário = o X 00, page - dir particular, para o

processo.

O processo usuário faz um sistema de ligação : segment base = 0 X c 0000000

page - dir = mesmo usuário page dir.

swapper - pg - dir contém um mapeamento para todas as páginas físicas de 0

X 0000000 para 0 X c 0000000 + and_mem, então as primeiras 768 entradas em

swapper - pg - dir são 0's, e então há 4 ou mais que indicam na tabela de

páginas Kernel.

O user page directories têm as mesmas entradas como swapper - pg - dir dos

768 acima. As primeiras 768 entradas mapeiam o espaço usuário.

A vantagem é que sempre que o endereço linear é acima de 0 X c 0000000

tudo usa a mesma tabela de páginas Kernel (Kernel page Tables).

O monte usuário permanece no topo do segmento de dados do usuário e desce.

O Kernel Stack não é uma bonita estrutura ou segmento de dados que eu possa

apontar com um "aqui é um Kernel Stack". Um Kernel Stack_frame (uma página)

é 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 não está sendo usado? ]

Páginas usuários podem ser roubados ou trocados - Um user page é um que é

mapeado abaixo de 3 Gb em uma tabela de páginas usuários. Esta região não

contém page directories ou page tables. Apenas páginas sujas são trocadas.

Menores alterações são necessárias em alguns lugares ( testes para limites

de memória vem para a mente) para prover suporte para definidos segmentos

programados. [ Há agora uma modificação - |c| + O sistema de ligação usado

por dosane, Wine, Twin, and Wabi para criar segmentos arbitrários.

 

5.2 Memória Física

 

Aqui está um mapa de memória física antes que qualquer processo de usuário

for executado. A coluna da esquerda mostra o endereço de partida do item e

os números em negrito são aproximados.

A coluna do meio mostra os nomes dos itens. A grande coluna da direita

mostra a rotina relevante ou o nome variável ou explicações para ingresso.

 

* Projeto - Inits que adquirem memória são (principais.c) profil - buffer,

com, init, psaux, init, rd, , init, scsi.dev - init.

Note que toda memória não marcada como livre é reservada (mem-init).

Páginas reservadas pertencem ao Kernel e nunca estão livres ou trocadas.

Uma visão de memória do user process.

O código de segmento e dados do segmento estendem todo o caminho de 0 X 00

para 3 Gb. Correntemente o page fault handler do wp_page confere para

assegurar que um processo não escreve para seu código de espaço.

De qualquer modo, pegando o sinal segu, é possível escrever para o code

space, causando ocorrência de um copy - on - write. O Handler do_no_page

assegura que qualquer página nova que o processo adquira pertença ao

executável, uma biblioteca dividida, ao stack, ou dentro do valor do brK.

Um usuário de processo pode reordenar seu valor brK chamando sbrK ( ).

Isto é o que malloc ( ) faz quando precisa. O texto e a porção de dados

são distribuídos em páginas separadas ao menos que alguém escolha o N opção

composta. A biblioteca dividida carrega endereços são correntemente

tornadas da imagem dividida por ele mesmo.

O endereço é entre 1.5 Gb e 3 Gb, exceto em casos especiais.

Distribuição da memória do processo usuário

O Stack, shlibs e os dados são muito afastados um do outro para serem

spanned por uma tabela de página.

Todas KPT são divididas por todos processo e deste modo eles não estão na

lista. Apenas páginas sujas são trocadas. Páginas limpas são roubadas e

deste modo o processo pode tê-los de volta para o executável se for

desejado. A maioria das vezes apenas as páginas limpas são divididas. Uma

página suja termina dividida sobre um fork até que parent ou child escolham

para escrever isto de novo.

Administração dos dados da memória na tabela do processo.

Aqui está um sumário de algum dos dados mantidos na tabela do processo que

é usado para administração da memória.

Limites do processo da memória.

Ulong - start_code - and_code - and_data - brk, atart – stock

Erro de contagem de página.

 

Tabela do descritor local.

 

 

Struct desc - sturct ldt {32} é a mesa descritora local para tarefa.

Números de páginas residentes.

Swappable – trocáveis

Se então as páginas do processo não serão trocados.

Kernel Stack page

Indicador para a página distribuída no fork.

Saved – Kernel – Stack

V86 modo material (stuff)

stract tss

pilha de segmentos (stack segments)

indicador da pilha Kernel

Kernel stack pointer

Segmento da pilha Kernel

Kernel stack segment (0X10)

ssi = esp 2 = ss2 = 0

 

Níveis de privilégio não usados.

Segmentos seletores. Ds=es=fs=gs=ss=ok17,cs—

Todos indicam para segmentos no corrente 1 dt [ ]

c r 3 : indicam para o page directory para este processo

1 dt - LDT (n) seletores para tarefas correntes do LDT

Inicialização da memória

 

No Start Kernel (main.c) há 3 variáveis relatadas para inicialização da

memória:

 

memory_start começa a 1 Mb atualizado pelo projeto de

inicialização.

memory_end término da memória física: 8 Mb, 16 Mb, ou qualquer outro.

Low memory_start término do código Kernel e dados que é carregado

inicialmente

 

Cada projeto init tipicamente torna memory_start e retorna um valor

atualizado, se distribui espaços no memory_start (simplesmente pegando-a).

Paging init ( ) inicializa a page-tables no { \ tt swapper - pg - dir}

(começando a 0 X 0000000) para cobrir toda a memória física 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 são adicionados.

A primeira página é zerada para bloquear os indicadores das referências do

alçapão nulo no Kernel.

No sched_init ( ) o 1 dt e tss descritores para tarefa [0] são 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 preparação para entrada do modo

usuário: O cronômetro é ligado.

O task-struct para task [0] aparece por inteiro em < linux / sched.h >

mem_map é então construído por mem_init ( ) para refletir o corrente uso

das páginas físicas. Este é o estado refletido no mapa da memória física

da seção anterior. Então Dinux move para dentro do modo usuário com um iret

após empurrar o corrente ss, esp, etc.

Claro que o segmento usuário para task [0] são mapeados bem sobre os

segmentos Kernel e deste modo a execução continua exatamente onde isto

termina.

Task [0]:

 

pg_dir = swapper - pg - dir que significa apenas endereços mapeados estão

no alcance 3 Gb para 3 Gb + High memory.

 

LTD [1] = código usuário, base = 0 x 0000000, tamanho = 640 K

LDT [2] = dados usuários, base = 0 x 0000000, tamanho = 640 k

 

O primeiro exec ( ) põe a LTD entrada para task [1] para os valores

usuários da base = 0x0, limite = task_size = 0 x c 0000000. Depois disso,

nenhum processo vê os segmentos Kernel enquanto no modo usuário.

Processos e a Administração da Memória.

Memória relacionada trabalho feito por fork ( ):

distribuição de memória

1 página para o Task-struct

1 página para o Kernel Stack

1 para o pg_dir e algumas para pg_tables (cópias - páginas - tabelas)

Outras mudanças

sso põe para o segmento Kernel stack (0x10) para ter certeza?

espo põe para o topo da nova distribuição Kernel - stack - page.

c r 3 põe por copy - page - tables ( ) para indicar para nova página de

diretório distribuída1 dt = LDT (task_nr) cria novo 1 dt descritor

descritores põe no gdt para novo tss e 1 dt [ ]

Os registros restantes são herdados do parent.

Os processos resultam dividindo seus códigos e segmentos de dados (embora

eles tenham tabelas descritoras locais separados, as entradas indicam para

os mesmos segmentos). O stack e páginas de dados serão copiados

quando o parent ou child escreve para eles ( copy-on-write).

Memória relacionada trabalho feito por exec ( ):

distribuição de memória

1 página para exec header para omagic

1 página ou mais para stack (max_arg_pages)

clear-página-tables ( ) usado para remover páginas velhas.

change 1 dt ( ) põe os descritores no novo 1 dt [ ]

1 dt [1] = código base = 0 x 00, limite = task - size

1 dt [2] = data base = 0 x 00, limite = task - size

Estes segmentos são dpl = 3, p=1, s=1, g=1. Tipo = a (código or 2

dados)

Eleva para MAX_ARG_PAGES páginas sujas de arqu e enup são distribuídos e

guardado ao topo do segmento de dados para o novo usuário pilha criado.

Ponha os indicadores de instrução do caller cip = ex.a_cutry

Ponha o stack indicador do caller para o stack criado (esp=stack indicador).

Este serão eliminados do Stack quando o caller resume.

 

5.3 Limites de Memória Atualizados

 

cud_code = ex.a_text

cud_data = cud_code + &x.d_data

brK = end_data + ex.ª_bss

 

Interrupções e traps são sustentadas dentro do contexto da corrente tarefa.

Em particular, o diretório de páginas do corrente processo é usado na

tradução de endereços. Os segmentos, de qualquer modo, são segmentos

Kernel para que todos os endereços lineares apontem para dentro da memória

Kernel quer acessar uma variável no endereço 0 x 01. O endereço linear é

0 x 00000001 (usando segmentos Kernel) e o endereço físico é 0 x 01. O

último é porque a página do processo diretório mapeia esta extensão

exatamente como page_pg_dir.

O espaço Kernel (0 x c 0000000 + high - memory) e mapeado pela tabela de

páginas Kernel que são eles mesmos parte da memória reservada. Eles são

consequentemente divididas por todos processos. Durante um fork

copy-page-tables ( ) trata tabela de páginas reservadas diferentemente.

Isto põe indicadores no diretório de páginas de processo para indicar para

tabelas de página Kernel e na verdade não distribui novas tabelas de páginas

como isto faz normalmente. Como um exemplo o Kernel - Stack - page

( que ocupa algum lugar no espaço Kernel ) não precisa de um associado

page - table distribuídos no pg-dir do processo para mapeá-lo.

O interruptor de instruções põe o indicador stack e o segmento stack do

privilégio valor salvo no Tss do corrente task. Note que o Kernel stack é

um objeto realmente fragmentado - Isto não é um objeto único, mas sim um

grupo de stack frames. Cada um distribuído quando um processo é criado e

deixado quando ele sai. O Kernel stack não deveria crescer tão rapidamente

dentro de um contexto de um processo que estende abaixo da corrente frame.

Adquirindo e liberando memórias

 

Quando qualquer rotina Kernel precisa de memória isto acaba chamando

get-free-page ( ). Este está num nível mais baixo do que Kmallor ( )

(de fato Kmalloc ( ) get-free-page ( ) quando isto precisa mais memória).

Get-free-page ( ) toma um parâmetro, a prioridade.

Possíveis valores são gfp_buffer_gfp, Kernel, gfp,nfs e gfp atomic. Isto

tira uma página do the free-page-list, atualizados mem_map, zeram a página

e retorna o endereço físico da página (note que Kmalloc) retorna um endereço

físico. A lógica do mm depende do mapa da identidade entre o endereço

lógico e físico.

Isto é por ele mesmo bastante simples. O problema é claro, é que o

free-page-list pode estar vazio. Se você não requisitar uma operação

atômica, nesta etapa, você entra dentro do domínio de uma page stealing e

que nós discutiremos em um momento. Como um último recurso ( e para

requisitos atômicos) uma página é separada do secundary-page-list (como

você pode ter achado, quando páginas são libertadas, o secundary-

page-list enche primeiro a manipulação atual da page-list e mem-map ocorre

neste misterioso macro chamado remove-from-mem-queve ( ) que você

provavelmente nunca quer investigar. O suficiente para dizer que

interrupções são incapacitados. [Eu penso que isto deveria ser explicado

aqui. Isto não é tão difícil...]

Agora de volta ao "Roubando páginas" get-free-page ( ) chame

try-to-fre-page ( ) que chame repetidamente shrink_buffers ( ) e swap-out

( ) nesta ordem até conseguir liberar uma página. A prioridade é aumentada

em cada iteration sucessiva para que estas duas rotinas processem suas

page-sterling-loops mais freqüentemente.

Aqui está um exemplo do processo swap-out:

Faça a tabela do processo e adquira uma swappable task, por exemplo, Q.

Ache um user page-table (não reservado) no espaço de Q.

Para cada página na tabela try-to-swap-out (page)

Termina quando a página é liberada.

 

Note que swap-out ( ) (chamada try-to-free-page ( )) mantém variáveis

estatísticas e deste modo isto pode resumir a procura onde terminar a

chamada anterior try-to-swap-out ( ) examine os page-tables de todos usar

process e obrigue o sterling policy:

1) Não brincar com as páginas (reserved) reservadas

2) Envelhecer a página se ela é marcada acessada (1 bit)

3) Não mexa com página adquirida recentemente (last-free-pages ( ))

4) Deixe páginas sujas com map-counts > 1 intocadas

5) Diminua o map-count das páginas limpas

6) Libere páginas limpas se elas não são mapeadas

7) Troque páginas sujas com um map-count de 1

 

De todas essas ações, 6 e 7 vão parar o processo porque eles resultam na

liberação atual de uma página física.

A quinta ação resulta uma dos processos perdendo uma página limpa não

dividida que não foi acessada recentemente (diminuindo Q à rss) que não é

tão ruim, mas os efeitos cumulativos de algumas iterations pode atrasar o

processo muito. No presente, há 6 iterations, deste modo uma página

dividida por 6 processos pode ser roubada se está limpa. Page table então

são atualizados e o TLB invalidado. O trabalho atual de liberar uma página

é feito por free-page ( ), a complementação de get-free-page ( ). Isto

ignora páginas reservadas, atualiza mem-map, e libera a página e atualiza

o page-list (s) se não é mapeada. Para troca (em 6 em cima),

write-swap-page ( ) é chamada e não faz nada notável da perspectiva da

administração da memória. Os detalhes de shink-buffers ( ) nos levaria

muito longe. Essencialmente isto procura free "buffers" (buffers são

uma parte da memória que segura informação temporariamente quando dados

transferem de um lugar para outro) em seguida escreve buffers sujos, e

depois começa com buffers ocupados e chama free-page ( ) quando

pode liberar todos os buffers numa página.

Note que page directories, page-table, e reserved pages não são trocadas,

roubadas ou envelhecidas. Eles são

mapeadas no process page directories com reserved page tables. Eles são

liberados somente na saída do processo.

The page Fault Handles

Quando um processo é criado por fork, ele começa com um page directory e

uma página ou mais do executável. Deste modo the page fault handles é a

forte da maioria da memória do processo. The page fault handles do

page-fault ( ) recupera o endereço faltando no registro c r 2. O código do

erro ( recobrado no sys-call.s) diferencia o acesso do user / supervisor e

a região para o fault-write proteção de uma página faltando.

O anterior é sustentado pelo do-wp-page ( ) e o posterior pelo do-no-page

( ). Se o endereço faltando é maior do que Task-Size, o processo recebe um

SIGKILL [ Por que este controle? Isto pode acontecer somente em Kernel mode

por causa da proteção do nível do segmento. Estas rotinas tem algumas

sutilezas como elas podem ser chamadas num interrompimento. Você não ode

supor que é a tarefa corrente que está executando de-no-page ( ) sustenta

três situações possíveis:

1) A página é trocada

2) A página pertence a biblioteca executável ou dividida.

3) A página está faltando – uma página de dados não foi distribuída

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

a existência de uma page table que cobre o endereço faltando. No terceiro

para providenciar uma página no endereço requerido e no caso de uma página

trocada, swap-in ( ) é chamado. No segundo caso, o handles calls share-page

( ) para ver se a página pode ser dividida com algum outro processo. Se

isto falhar leia a página do executável ou biblioteca (Isto repete a

chamada para Share-page ( ) se um outro processo fez o mesmo enquanto isso).

Qualquer porção da página fora do valor brK é zerada.

A página lida do disco é contada como um erro maior. Isto acontece com um

swap-in ( ) ou quando é lida da executável ou uma biblioteca. Outras casos

são consideradas erros menores (mim-flt). Quando uma página divisível é

achada ela é corite-protected. Um processo que escreve para uma página

dividida vai precisar passar por um do-wp-page ( ) que faz o copy-on-write.

Do-wp-page ( ) faça o seguinte:

Mande SIGSEGV se qualquer usar process o está escrevendo para o corrente

code-space.

Se a página velha não é dividida, então simplesmente não proteja-o.

Senão get-free-page ( ) and copy-page ( ). A página adquirir a bandeira

suja da página velha. Diminua a conta do mapa da página velha.

 

 

5.4 Paginando (Paging)

 

Paginando é a troca numa base da página melhor do que os processos inteiros.

Nós vamos usar trocando aqui para referir à "paginando" , uma vez que

apenas Linux página, e não trocar, e pessoas são mais acostumadas à palavra

"Swap" / "trocar" do que "page" / "paginar". Kernel pages nunca são trocadas

páginas limpas também não são escritas para trocar. Elas são liberadas e

recarregadas quando é requerida. O trocador mantém um único bit de

informação de envelhecimento nas Páginas acessadas bit da page table

cutries - [ O que são os detalhes de manutenção? Como isto é usado?]

Linux suporta múltiplos swap files ou projetos que podem ser ligados ou

desligados pelas ligações de swapoff system. Cada swap file ou projeto é

descrito por uma strut-swap-info.

O campo das bandeiras (SWP-USED ou SWP-WRITE ok) é usado para controlar

acesso para o swap files.

Quando SWP- WRITE ok é desligado, o espaço não vai ser distribuído neste

arquivo. Isto é usado por Swapoff quando isto tenta de não usar um arquivo.

Quando swapoff adiciona um arquivo de troca nova isto aplica SWP-USED. Um

variável imóvel no Swap files armazena o número dos arquivos ativos

correntemente ativos. Os campos lowest - bit e hihgest - bit limitam a

região livre na pasta de troca e são usadas para adiantar a procura por

espaço de troca livre.

O programa do usuário m | < swap inicializa um swap device ou file. A

primeira página contém uma assinatura (swap-space) nos últimos 10 bytes, e

contém um mapa de bit. Inicialmente 1's no bitmap significam páginas ruins

A'1' no bitmap significa que a página correspondente é livre. Esta página

nunca é distribuída deste modo a inicialização precisa ser feita somente

uma vez.

The Syscall Swapor ( ) é chamado pelo user program swapon tipicamente de

/ etc / rc. Algumas páginas da memória são distribuídas por swap-map e

swap-lockmap, swap-map contém um byte para cada página no swapfile. Isto é

inicializado do bitmap para conter 0 para páginas disponíveis e 128 para

páginas que não pode ser usadas. Isto é para manter uma conta das petições

da troca em cada página no swap file. Swap-lockmap contém um bit para cada

página que é usada para assegurar exclusão mútua quando lendo ou escrevendo

swap-files.

Quando uma página da memória está para ser trocada, um índice para posição

da troca é obtido com uma chamada para get-swap-page ( ). Este índice é

deste modo guardado em bits 1-31 da page table entry para que a página

trocada possa ser localizada pela page fault handles, do-no-page ( ) quando

necessário.

Os 7 bits mais altos do índice dão o swap file ( ou projeto) e os 24 bits

mais baixos dão o número da página neste projeto. Isto faz até 128 swap

files, cada um com espaço para mais ou menos 64 Gb, mas o espaço em cima

devido o swap map seria grande. Ao invés o tamanho do swap file é limitado

para 16 Mb, porque o swap map então toma 1 página.

A função swap-duplicate ( ) é usado por copy-page-tables ( ) para deixar o

processo da child herdar páginas trocadas durante um fork. Isto somente

incrementa a conta mantendo no Swap-map para aquela página. Cada processo

vai trocar numa cópia da página separa quando acessá-la. Swap-free diminui

a conta mantendo no swap-map. Quando a conta abaixa para 0 a página pode

ser redistribuída por get-swap-page ( ). Isto é chamado cada vez que uma

página trocada é lida na memória ( swap-inc ) ou quando uma página está

para ser descartada ( free-one-table ( ), etc ).

5.5 Gerenciamento de Memória Cache

 

5.5.1 Arquitetura de Memória Cache do Linux (Linux Flush Architecture)

 

O TBL é mais uma entidade virtual do que um modelo estrito quanto a Linux

flush architecture e concernida.

As característica única são isto mantém em ordem o mapeamento do processo

kernel de algum modo, queira software ou hardware.

Código específico 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 memória" como o flush architecture

o vê. Em geral isto tem as propriedades seguintes:

Isto sempre vai segurar cópias de dados que podem ser visto como atualizado

pelo processo local.

O funcionamento próprio 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 configuração cache virtual, causar problemas "aliasing" se

uma página física é mapeada no mesmo tempo da que duas páginas virtuais e

por causa dos bits de um endereço usado para catalogar a linha cache, a

mesma porção do dedo pode acabar residindo no cache duas vezes, deixando

resultados incompatíveis.

Projetos e DMA podem ou não ter capacidade para ver a cópia de um dedo

mais atualizado que resida no cache do processo local.

Corretamente, é suposto que a coerência num ambiente multiprocessador é

mantida pelo subsistema cache/memória. Isto que dizer que, quando um

processador requerer um dado no memory bus de maneira e um outro

processador tem uma cópia mais atualizada, de qualquer jeito o requisitor

vai obter uma cópia atualizada que pertença um outro processador.

(NOTA: SMP arquiteturas sem hardware cache conferece mechanism são

realmente possíveis, o arquitetura current flush não sustenta isto

corretamente, se em algum ponto o Linux apontar em algum sistema onda isto

é uma questão debatida, eu vou adicionar os ganchos necessários mas não vai

ser bonito)

Sobre o que o Fluch Architecture se importa: sempre, a visão da

administração de memória hardware de um conjunto de mapeamento do processo

Kernel serão consistentes com aqueles do Kernel page tables.

Se o memory management kernel code faz uma modificação para a user process

page modificando o dado via kernel space alias da página física subjacente,

o fio controle de usuário vai ser o dado correto antes que é permitido

continuar a execução, indiferente da cache architecture e/ou a semântica.

Em geral, quando o estado do espaço de endereço é mudado somente (em código

genérico da administração da memória kernel nome 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 não importa: que o mapeamento do DMA

"DMA/driver coerência. Isto inclui DMA mappings (no sentido do MMU mappings)

e o cache/DMA dado consistência. Estes tipos dez assuntos não devem esta no

flush architecture, veja embaixo como eles devem ser manuseados.

Split Instruction/data cache consistência com respeito as modificações

feito para processo de instrução de espaço realizado pelo código 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 vão ser chamados na seqüência seguinte:

Fluch-cache-foo(...);

modify-address-space ();

clush - tlb-foo (...)

a lógica aqui é: Isto pode ser ilegal num arquitetura dada por um pedaço de

dado cache para ensistir quando o mapeamento por aquele dado não existe,

portanto o flush deve ocorrer antes que a mudança é feita.

É possível para uma arquitetura de MMU/TLB dada realizar um andamento da

tabela 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 cópia nova da informação de page table para o

TLB void flush - cache - all (void);

void flush - tlb - all (void);

Essas rotinas são para notificar o architecture specific cade que

mapeamento do espaço do endereço kernel uma mudança foi feita ao kernel

address space mappings, que significa que os mapeamentos de todos processos

foram efetivamente mudados.

 

5.5.2 Implementação da Memória Cache

 

Uma implementação deve:

 

Eliminar todos os entradas do cache que são válidas neste momento quando

flush-cache-all é invocado isto refere-se ao virtual cache architecture,

se a cache is write-back, essa rotina vai submeter o dado da cache para

memória antes do que invalidar cada ingresso. Para caches físicos, não é

necessário realizar uma ação já que mapeamento físico não tem ponto de

apoio no address space translations.

Para flush-tlb-all todos TLB mappings para o kernel address space devem

ser feito consistente com os OS page tables de qualquer maneira. Norte que

com um arquitetura que possua a naçãoPara flush-tlb-mm, o tlb/mmu hardware

é para estar localizado num estado onde isto vai ver (agora corrente)

kernel page table entradas para o espaço de endereço 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( ) relacionando a mm-struct passada aplicam-se aqui também.

Para Flush-cache-range num virtualmente cached system, todas entradas cache

que são colidas pena a range partem para o fim no address space descrito

pelo mm-struect são para ser invalidadas.

Para Flush-tlb-range, qualquer ação necessária para causar o MMUITLB

hardware não conter traduções estragados são para ser realizados. Isso

significa que quaisquer traduções estão no Kernel page tables no range

start para acabar no address space descrito pelo mm-struet são para que a

administração da memória hardware será deste ponto avançado, 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 página no address dentro do usar space para o

address space descrito pelo um area-struet passado esta ocorrendo. Uma

efetivação, se necessária, pode obter na mm-struet associado para

este address space via uma um - Flags. Este caminho em uma efetivação onde

a instrução e dará space não são unificados, alguém 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( ) concernindo o mm-struct (passado

indiretamente via uma -um-mm) aplica aqui também.

 

A implementação deve também :

 

Para flush-cache-range, num virtualmente cache system, todas entradas cacha

que são validas para a página no address no address space descrito pelo uma

são para ser invalidados.

Para flush-tlb-range, qualquer ação necessária para causar o MMU/TLB

hardware para não conter traduções estragadas são para ser efetuadas. Isto

significa que quaisquer traduções estão nos kernel page tables para a

página no address space descrito pelo uma passado são para que a

administração de memória hardware, serão vistas deste ponto avançado de

qualquer maneira.

 

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

 

Este é o patinho feio. Mas será semântica é necessário em muitas

arquiteturas que precisei para adicionar isto para a arquitetura flush para

linux. Brevemente, quando (como um exemplo) serve um kernel um enode cow,

isto usa o "suposto" mapeamento de todas memórias físicas no espaço kernel

para efetuar a cópia da página em questão para uma nova página. Este

apresenta um problema para caches virtualmente catalogados que são

write-back escritos de volta na natureza. Neste caso, o Kernel toca duas

páginas físicas no espaço Kernel. A seqüência do código 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 códigos atuais tem sido simplificados para propósitos

específicos.

 

Considere um cache virtualmente catalogados que é escrito de volta

write-back. Neste momento que a cópia da página acontece para o suposto

espaço kernel, é possível para usar space a visão da página original para

estar no caches (no endereço do usuário, por exemplo, onde o erro esta

ocorrendo). A cópia da página pode trazer este dado (para a página velha)

dentro do caches. Será também colocado o dado (no novo suporte

kernel mapeado da página) 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 memória principal não será a cópia mais recente do dado. Os

caches são estúpidos, então para a nova página que estamos dando ao

usuário, sem forçar o dado cached no suposto kernel para a memória

principal o processo será o conteúdo velho da página. (Por exemplo

qualquer lixo que estarem lá antes da cópia ter sido feita pelo

processamento COW acima).

Exemplo concreto de flush-page

Considere um processo que divide uma página, lê somente READ-ONLY com

maior uma tarefa (ou varias) no endereço virtual Ox2000, no usar space.

E para propósito específicos deixe nos dizer que este endereço virtual

mapeia para a página física 0x14000.

Se a tarefa 2 tenha escrever para a página lê apenas no endereço 0x2000 nós

alteremos um esso e (eventual fragmento do código) mente resultado no code

fragment mostrando acima no do-WP-PAGE ( ).

O Kernel vai obter uma nova página para tarefa 2, deixe-nos dizer que esta

e uma página física 0x2600, e deixe-nos também dizer que os mapeamentos do

suposto Kernel para páginas físicas 0x14000 e 0x26000 podem residir em dias

únicos linhas cache ao mesmo tempo buscando no esquema da linha catalogada

deste cache.

O conteúdo da página e copiado do mapeamento Kernel para página física

0x14000 para uns para página física 0x26000.

Neste momento, numa arquitetura cache virtualmente catalogada write - back

nos temos uma inconsistência potencial. O novo dado copiado dentro da

página física 0x26000 não e necessário na memória principal neste

momento, de fato isto poderá estar toda no cache apenas no suposto kernel

do endereço físico.

Também, o (não modificando, por exemplo, limpo) dado para a (velha) página

original esta no cache do suposto kernel para página física 0x14000, isto

pode produzir uma inconsistência mais tarde, então para proteger isto e

melhor eliminar as cópias cached deste dado também.

Deixe-nos dizer não escrevemos os dados de volta para a página no 0x256000

e nos apenas deixamos isto lá.

Nos retornaríamos para a tarefa 2 (Quem teve esta nova página agora mapeada

no endereço virtual 0x2000) ele completaria sua escrita, então ele leria

algumas outras porções de dados nesta nova página (por exemplo, esperando o

conteúdo que existe lá antes). Neste momento seu dado e deixado no cache no

suposto kernel para nova página física, o usuário obterá o que estava na

memória principal antes da cópia para sua leitura.

Isto pode levar a resultados desastrosos.

Conteúdo de uma arquitetura virtual

Numa arquitetura cache virtualmente catalogada, fica o que foi necessário

para fazer a memória principal consistente com a cópia cached da página

passada do espaço kernel.

Nota: Isto é na verdade necessário para esta rotina invalidar linhos em um

cache virtual que não escrito de volta é write - back na natureza. Para ver

porque isto e realmente necessário, refaça o exemplo acima com a tarefa 1 e

2, mas agora fork ( ) ainda outra tarefa 3 antes dos erros do cow ocorreram,

considere o conteúdo do caches no kernel e user space se a seqüência

seguinte ocorre na exata sucessão:

 

Tarefa 1 lê uma parte da página no 0x2000

Tarefa 2 COW erra a página no 0x2000

Tarefa 2 efetiva suas escritas para a nova página no 0x2000

Tarefa 3 COW erra a página 0x2000

 

Mesmo em um cache não escrito devolta virtualmente catalogado, a tarefa 3

pode ver o dado inconsistente depois do erro COW se FLUSH-PAGE-TO-RAM não

invalida a página física do suposto kernel do cache.

 

5.5.2.2 VOID-UP-DATE

 

Embora não estritamente parte da arquitetura flush, em certas arquiteturas

algumas operações e controles precisam ser efetuados aqui para 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

consente erro de página não adiciona um bad alias "para o user space".

Um "Bad Alias" e definido como dois ou mais mapeamentos (pelo menos um dos

quais e escrevível) para duas ou mais o páginas que traduzem para a exata

página física, e devido ao algarismo catalogado do cache pode também

residir na única e mutualmente exclusiva linhas cache.

Se um BAD ALIAS é detectado, uma implementação precisa resolver esta

inconsistência de alguma maneira, uma solução e andar através de todo os

mapeamentos e mudar as page-tables para fazer estas páginas como não

concriáveis se o hardware permite tal coisa.

As conferências para isto são muito simples, tudo que uma implementação

precisa fazer é:

Se ((uma -Um - Flags 6 (Um - Write/Um - Shared)) confere sua potência mau

supostas, então para o caso comum (mapeamento escrevíveis devidos são

extremamente raros) apenas uma comparação é necessitada para sistemas COW

CAHCES virtualmente catalogados.

Implicações Referentes a Arquitetura

Arquitetura baseada no Modelo SMP

Dependendo da arquitetura certos consertos podem ser necessários para

permitir a arquitetura FLUSH para trabalhar num sistema SMP.

O principal assunto e se uma das operações FLUSH acima fazem que o sistema

inteiro veja o FLUSH globalmente, ou o FLUSH e apenas garantido para ser

visto pelo processador local.

Em um último caso um CROSS CALLING MECHANISM é necessário. Os dois

correntes sistemas SMP suportados no Linux (Intel e space) usam

inter-processor interrupts para "transmitir" a operação FLUSH e faz

isto correr localmente em todo processador se necessário como um exemplo,

no sistema SUNHM Space todos precessadores no sistema precisam executar o

pedido FLUSH para garantir a consistência através do sistema

inteiro. De qualquer modo, nas máquinas SUNHD Space, TLB FLUSHES

efetivamente no processador local são transmitidos sobre o BUS-SYSTEM pelo

hardware e desta forma uma ligação cruzada não e necessária .

 

5.5.2.3 Implicações para arquitetura baseados no contexto MMU/CACHE.

 

A idéia inteira por trás do conceito de MMU e facilidades do contexto

cache é para permitir muitos ADDRESS SPACES para dividir os recursos

CACHE/MMU no CPU.

Para levar total vantagem de tal facilidade, e ainda manter a coerência

descrita acima, requer-se algumas considerações extras do implementador.

As questões envolvidas variam muito de uma implementação para outro, pelo

menos esta tem sido a experiência do autor. Mas em particular algumas

destas questões são provavelmente para ser:

A relação do mapeamento do espaço Kernel para os USER-SPACE, num contexto

são convertidas, alguns mapeamentos do sistema kernel tem um atributo

global, naquele o hardware não concerne ele mesmo com o contexto da

informação quando uma tradução é feita, que tem seu atributo. Desta forma

um FLUSH (em qualquer contexto) de um mapeamento de um Kernel CACHE/MMU

poderia ser suficiente.

De qualquer maneira e possível um outros implementações para o Kernel para

dividir o contexto chave associado com um ADDRESS SPACE particular. Pode

ser necessário em tal caso andar por todos contextos que são contentemente

válidos e efetuam o Flush completo em cada um para um Kernel Address Space

Flush.

O custo por contexto Flush podem tornar uma questão chave, especialmente

com respeito ao TLB. Por exemplo, se um Tlb Flush e necessário, em um

grande Range de endereços (ou um inteiro Address Space) pode ser mais

prudente distribuir e assumir um nova contexto MMU/para este processo por

causa da eficiência

 

5.5.2.4 Como tratar o que a arquitetura flush não executa com exemplos

 

A arquitetura Flush descrita não faz emendas para coerência de projetos DMA com dados Cached. Isto também não tem provisões para nenhuma estratégia de mapeamento necessários pelo DMA e projetos se forem necessários em um certa máquina Linux é Ported To. Nenhuma destas questões são para a arquitetura Flush. Tais questões são negociadas mais claramente no nível do Driver do projeto. O autor está mais convencido disto depois de sua experiência com um conjunto comum de sparc device drivers que precisaram de toda função corretamente em mais do que uma hand full de cache/mmu e bus architetures no mesmo kernel. De fato esta implementação é mais eficiente porque o motorista sabe exatamente quando o DMA precisa ver o dado consistente ou quando o DMA está indo criar uma inconsistência que deve ser resolvida.

Nenhuma tentativa para atingir este nível de eficiência via colchetes soma ao código de administração genérica da memória kernel seria complexo e muito obscura como um exemplo, considere no sparc como os DMA buffers são 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 são passadas por um indicador ou um conjunto de indicadores e especificações de tamanho para ares no espaço kernel para que o DMA ocorra, eles retornam para o endereço 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)

endereço(s) DMA para que recursos possam ser liberados (se necessário) e cache flushes possam ser efetivados (se necessário). A rotina ter um bloqueio de memória de DMA por um longo período de tempo, por exemplo, um motorista de networking usaria isto para uma transmissão de pesquisa ou receber buffers. O argumento final é uma entidade especifica Sparc que permite o código do nível da maquina efetuar o mapeamento se o mapeamento do DMA são ordenados em uma base por-bus.

Questões abertas na Arquitetura CacheHá pareceres para muita estúpidas 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 são escreviveis!).

Da nota está o mipsr4000 que dará uma exceção quando tal situação ocorre, elas podem ocorrer quando o processamento cow está acontecendo na corrente implementação. No mais chips que fazem algo estúpido 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 exceções durante o processamento cow e seus efeitos que ocorrerão na performance cow, que essencialmente está para flush um user space page e se não o fazendo então causaria os problemas acima descritos.

Tem sido tardiamente aquecida a conversa sobre muito inteligentes networking hardware. Pode ser necessário estender a arquitetura flush para prover as interfaces e facilidades necessárias para estas mudanças para o código networking. É claro que, a arquitetura flush é sempre sujeita a aperfeiçoamentos e mudanças para buscar novas questões ou novos hardwares que apresentam um problema que estava até este ponto desconhecido

6 - USO DO SISTEMA COMO "ROOT" E COMO USUÁRIO COMUM

 

 

Aqui o que teremos são apenas recomendações de bom senso e alguns esclarecimentos.

 

O usuário root deve ser o administrador do sistema, aquele que tem poder de alterar ou apagar qualquer coisa no micro, até todo o Linux ou apenas um pequeno detalhe que poderá tornar o sistema inoperável. Portanto deve-se utilizar o sistema com esse usuário ou com os poderes dele apenas para manutenção do sistema e utilizar o sistema como usuário comum normalmente. Este procedimento torna o sistema mais estável, embora no começo seja mais trabalhoso, pois força um maior aprendizado do sistema, pois muitas coisas não serão permitidas ao usuário comum. Então ele deverá saber como se sair ou então assume o papel de root.

 

Fica o alerta e a recomendação de uso do root com cautela.

 

 

6.1 - SOLUÇÃO PARA SENHA DE ROOT ESQUECIDA

 

Inicialize a máquina em modo mono-usuário:

Ao ligar a máquina, quando aparecer o prompt "LILO Boot: ", digite:

linux init=/bin/bash

 

O sistema entrará em modo mono-usuário (sem pedir senha, e então, basta executar os comandos:

cd /etc/rc.d e sbin/mount -w -n -o remount /

 

"passwd" para definir a nova senha do super usuário (root).

umount / e CRTL+ALT+DEL

E aí ele aceita a nova senha.

 

7 - Dicas de Firewalling com IPFWADM

Aviso: Este documento não está relacionado com o projeto de

documentação para o Linux (LDP) que no Brasil é representada pela LDP-BR

em http://www.dca.fee.unicamp.br/~malheiro/linux/LDP-br.html, este

material é uma tradução técnica e básica somente para auxiliar os colegas

com a leitura em português.

 

7.1 REQUISITOS MÍNIMOS

 

Vamos assumir que você já saiba o que é TCP/IP, Proxy/Gateway, redes

públicas e privadas, um pouco de tecnologia UNIX (Linux), um pouco de

inglês e que tenha uma enorme vontade de aprender. Se você está disposto a

ler este documento, é porque você já deve ter lido alguns outros documentos

e tentado algumas vezes a montar um Firewall.

Então este é mais um documento de cabeceira de cama.

 

 

7.2 RETRATAÇÃO

 

Eu não me responsabilizo por qualquer dano ocorrido devido à ações baseadas

neste documento. Este documento é um complemento para quem quiser trabalhar

com Firewalls. Eu não sou, e nem pretendo ser um perito em segurança. Eu

sou um simples sujeito que leu muito e que gosta de computadores mais do

que a maioria das pessoas. Por favor, eu estou escrevendo isto para pessoas

que estejam interessadas em aprender, e eu não irei ler aposto a minha

vida na precisão do que está aqui.

 

 

7.3 DIREITOS AUTORAIS

 

A menos que seja contrário, os documentos HOWTO do Linux são registrados

pelos próprios autores respectivos.

Os documentos HOWTO do Linux podem ser reproduzidos e distribuídos em todo

ou em parte, em qualquer meio físico ou eletrônico, contanto que esta

advertência de direitos autorais seja mantida em todas as cópias. A

redistribuição comercial é permitida e é encorajada; porém, o autor iria

gostar de ser notificado de qualquer forma de distribuição.

Todas as traduções, trabalhos derivados, ou trabalhos incorporados

agregados a qualquer Linux devem ser informados nos documentos de HOWTO

abaixo desta advertência de direito autorais. Quer dizer, você pode não

produzir um trabalho derivado de um HOWTO e impor restrições adicionais à

sua distribuição.

Exceções para estas regras podem ser concedidas sob certas condições; por

favor contate o coordenador do HOWTO em que está envolvido.

Em resumo, nós desejamos promover a disseminação desta informação por

tantos canais quanto possíveis.

Porém, nós desejamos reter os direito autorais nos documentos de HOWTO, e

gostaríamos de sermos notificados de qualquer plano para redistribuição

dos HOWTO’s.

Se você tem qualquer pergunta, por favor contate Mark Grennan em

markg@netplus.net.

 

 

7.4 PORQUE ESCREVER ESTE DOCUMENTO?

 

Embora houvesse muitas discussões nestes últimos anos sobre firewalling, eu

achei difícil encontrar informações da qual eu precisava para configurar o

meu Firewall. A versão original deste HOWTO e outros documentos foram

úteis, mas ainda faltava algum detalhe para que funcionasse perfeitamente.

Eu espero que este documento dê a todo mundo informação que elas precisam

para criar um Firewall em minutos, não em semanas (como foi meu caso,

depois de reunir mais de 30 documentos sobre o assunto e analisar o

funcionamento do IPFWADM).

Eu também sentia que devia algo à comunidade Linux.

 

 

7.5 NÍVEIS DE SEGURANÇA

 

Existe uma classificação de níveis de segurança fornecida pelos sistemas

operacionais. Essa classificação de níveis de segurança é originalmente

estabelecida pelo Departamento de Defesa dos EUA, que diz que ninguém pode

afirmar se um computador é seguro ou não, mas o administrador de sistema

pode estabelecer níveis de segurança. Todos estes níveis dependem da

confiança que você tem no seu sistema operacional.

Assim: DOS 0%, Windows 98 4%, Windows NT 15%, OS/2 14%, Unix 68%, e assim

por diante.

Os níveis de segurança são representados por letras que vão de A a D, e um

número pode ser usado para subdividir o nível mais adiante, como A1, A2,

etc. O DOS é um representante de nível D1 ( muito fraco ),

pois não existe sistema de propriedades de arquivos e permissões virtuais,

todos os arquivos pertencem ao usuário atual ou seja, aquele que está

usando a máquina.

Vocês devem estar se perguntando: e o nível A1?Ele existe? Caros amigos,

lá vem aquela frase mais velha do mundo: infelizmente A1 não existe, é

aquele computador que está sem usuário, não está ligado na tomada de

energia, e nunca ligado ao cabo telefônico.

Bom, mas com este documento vamos tentar suprir isso. Vamos aprender a

trabalhar com um nível próximo do C1 ou C2, que é onde está o Unix (que

inclui o Linux). Com a capacidade de evitar que certos usuários vejam

alguns arquivos e até mesmo executem certos programas. Existem alguns

sistemas operacionais que apresentam aspecto nível B, mas não atendem a

todos os seus requisitos.

Antes de pensar em um nível de segurança para o seu computador, você deve

refletir sobre a dificuldade que usuários teriam nas conexões, e que você

mesmo teria em acessar seu próprio sistema.

 

 

 

 

7.6 - FIREWALLS

 

Os Firewalls ganharam grande fama ultimamente com a Segurança para a

Internet. Um Firewall é um termo usado para representar uma parte do carro.

Nos carros, os Firewalls são objetos físicos que separam a máquina dos

passageiros. O significado deles é proteger o passageiro no caso de fogo

no motor do carro enquanto ainda o motorista têm acesso aos controles do

mesmo.

Um Firewall em computadores é um dispositivo que protege uma Rede privada

da parte pública (ou da Internet como um todo).

O computador de Firewall, Firewall "de agora em diante chamado", pode

acessar ambas as Redes, a privada e a pública. A rede privada não pode

alcançar a pública, e a pública não pode alcançar os protegidos desta rede.

Para alguém alcançar a rede pública de dentro da rede privada, deve

conectar-se com o Firewall, e usar a rede pública a partir de lá.

A forma mais simples de um Firewall é um sistema de home-dual. (um sistema

com duas conexões de rede). Se você pode confiar em TODOS os seus usuários,

você pode simplesmente configurar o Linux e todo o mundo irá acessar a

Rede Pública. Eles o poderão através de telnet, usar o FTP, ler e-mail, e

usar qualquer outro serviço com que você conta.

Com esta configuração, todos os computadores em sua rede privada saberão

qualquer coisa sobre o mundo externo. O sistema em sua rede protegida

precisa de uma rota padrão em cada máquina para acessar a Rede Pública.

Para o Firewall acima trabalhar você tem que confiar em TODOS os seus

funcionários! Eu não recomendo isto.

 

 

7.6.1 - DESVANTAGEM DOS FIREWALLS

 

O problema com os Firewalls é o caso de ele inibir o acesso a sua rede para

a Internet. Só serviços do sistema que tem acesso a filtros de passagem o

poderão. Como alguns usuários do servidor de Proxy/Gateway acessam o

Firewall, então possuem direito de acessar qualquer parte de sua rede

privada.

Também, há alguns tipos novos de clientes de rede que acessam diretamente

a Rede Pública. Quando eles querem acessá-la, você tem que achar um modo

novo para permitir o controle de acesso antes de que estes serviços

possam ser usados.

 

 

7.6.2 - FILTRAGEM DE IP’S EM FIREWALLS

 

Um Firewall que filtra trabalhos de IP ao nível de pacote, é

projetado para o controle do fluxo de pacotes baseado no destino, porta e

informação do tipo de pacote que está contido em cada um. Este tipo de

Firewall é muito seguro mas falta utilitários. O Linux incluiu um software

que filtra pacotes em TCP/IP em versões que possuam kernel começando com a

versão 1.3.x. Este software se chama IPFWADM, que você pode obter a

sintaxe de comando no seu próprio Linux, em outros HOWTO’s ou em

http://www.xos.nl/linux/ipfwadm

7.6.3 - EXIGÊNCIAS DE HARDWARE

 

Para o nosso exemplo, o computador é um Intel 486 DX2 66 MHz com 16Mb de

memória e uns 700Mb de partição para o Linux. Este sistema tem duas placas

de rede, uma conectada a nossa rede privada e a outra conectada a uma rede

pública através um roteador externo.

Esta é uma configuração básica para o negócio. Você poderia usar uma placa

de rede para a rede privada e um modem com PPP para a rede pública. O

detalhe é: o Firewall têm que ter dois números de IP – um da rede privada

e outro da rede pública.

 

 

Preparando o Linux para o Firewall

 

Compilando o Kernel

 

Comece com uma instalação nova de sua distribuição de Linux. (Eu usei

o Conectiva Marumbi – baseado no Red Hat 5.1 e os exemplos aqui estão

baseado nesta distribuição.)

Quanto menos software você carregar no seu sistema, menor o número de bugs

de backdoors que podem introduzir problemas de segurança em seu sistema;

assim carregue só um conjunto mínimo de aplicações.

Escolha um kernel estável. Eu usei o Kernel 2.0.35 do Linux para o meu

sistema.

Assim esta documentação está baseado nestas condições.

Você precisa recompilar o kernel do Linux com as opções necessárias. Neste

momento, você deveria ler o Kernel HOWTO, o Ethernet HOWTO e o Net-2 HOWTO

se você não o fez antes.

Aqui está um breve relatório que você precisa configurar para o firewall.

Eu vou usar o 'make menuconfig'

 

Debaixo da configuração Geral

Networking Support: ON

 

Debaixo das Opções de Networking

Network firewalls: ON

TCP/IP Networking: ON

IP forwarding/gatewaying: ON

IP Firewalling: ON

IP firewall packet loggin: ON

IP masquerading: ON

IP accounting: ON

IP tunneling: OFF

IP aliasing: OFF

IP PC/TCP compatibility mode: OFF

IP Reverse ARP: OFF

Drop source routed frames: ON

 

Debaixo do suporte para device de network

Network device support: ON

Dummy net driver support: ON

Ethernet (10 or 100Mbit): ON

Selecione a sua placa de rede

 

Agora você deve recompilar, reinstalar o kernel e reiniciar. Sua placa de

rede devem mostrar as informações caso o seu boot tenha ocorrido com

sucesso. Se não, revise os outros HOWTOs novamente até que esteja

funcionando.

 

7.6.4 - CONFIGURANDO DUAS PLACAS DE REDE

 

O método mais seguro é você compilar as placas de rede no kernel em módulo,

deixando assim que o kernel corrija uma automaticamente, e você só precise

instalar uma placa pelos módulos, com o seguinte comando:

modprobe ne io=[endereço base] irq=[n.º]

 

Você pode adicionar este comando no seu arquivo /etc/rc.d/rc.local ou

/etc/conf.modules (se for no Red Hat, leia os HOWTO’s)

 

 

7.6.5 - CONFIGURANDO OS ENDEREÇOS IP DAS REDES

 

Esta é a parte realmente interessante. Agora você tem algumas

decisões para fazer. Desde que nós não queiramos que a rede pública tenha

acesso a qualquer parte da nossa rede privada, nós não precisamos

usar endereços reais para a rede privada. Há vários endereços de INTERNET

definidos à parte para as redes privadas, porque todo mundo precisa de mais

endereços e estes endereços não podem cruzar a Internet.

Destes, usaremos a classe 192.168.1.xxx para a rede privada e

200.200.200.xxx para a rede pública como exemplos.

 

|===========|IP 200.200.200.xxx|================|IP 192.168.1.xxx|========|

Rede Pública|------------------|Firewall/Gateway|----------|Rede Privada |

|===========| |================| |========|

 

 

Se você for usar um filtro de Firewall você pode usar estes números. Você

precisará usar IP masquerading para fazer isto funcionar.

Com este processo o Firewall remeterá os pacotes da rede privada e os

traduzirá num "IP REAL" para então dirigir-se para a Internet, pois estes

IP’s não existem na Internet Você tem que nomear o IP real para a placa de

rede da rede pública (Ex. 200.200.200.1). E, nomear 192.168.1.1 para a

placa de rede da rede privada. Este será o seu endereço de IP do

proxy/gateway. Você pode nomear todas as outras máquinas na rede privada

com algum número do alcance de 192.168.1.xxx.

(192.168.1.2 até 192.168.1.254)

Você também pode usar este esquema para conectar automaticamente através de

um modem o seu provedor.

Se você vai usar um modem para a sua conexão com a INTERNET, o seu endereço

de IP de fora será nomeado pelo seu provedor ao se conectar-se.

Você deve configurar o resto necessário para a conexão, como

endereços de cada placa, rotas, etc. Se você conseguir conexão (teste

através de ping), é porque está tudo ok. Procure uma documentação mais

detalhada sobre o restante no seus HOWTO KERNEL, o HOWTO Ethernet e o

HOWTO NET-2.

 

 

7.6.6 - SEGURANÇA NO FIREWALL

 

O Firewall não é muito bom se permanecer aberto a ataques por um

serviço novo. Um "sujeito" ruim poderia ganhar acesso para o Firewall e

modificar para as suas próprias necessidades.

Comece desligando qualquer serviço desnecessário. Olhe os arquivos

/etc/inetd.conf e /etc/services. Estes arquivos controlam o que é chamado d

e "super servidor". Estes controles são um grupo de daemons (serviços)

do servidor e os começa quando eles são pedidos.

Definitivamente desligue o netstat, systat, tftp, bootp, e o finger. Para

desligar um serviço, ponha # como o primeiro caráter da linha do serviço.

Quando acabado, envie um SIG-HUP ao processo digitando "kill -HUP

<pid>", onde <pid> é o número de processo do inetd. Isto fará com que o

inetd releia o seu arquivo de configuração (inetd.conf) e reiniciá-lo.

Teste através do telnet a porta 15 do firewall, a porta do netstat. Se

você acessar a saída do netstat, você não reiniciou corretamente.

Cuidado: Tenha muito cuidado com o que você vai desligar e o que vai

deixar ligado. Só deixe ligado o estritamente necessário (ver descrição de

portas de serviço mais adiante).

 

7.6.7 - CONFIGURAÇÃO DO FILTRO PARA IP (IPFWADM)

 

Para começar, você deve ter o IP Forwarding ligado no seu kernel e o

seu sistema deve ser reiniciado e remetendo sempre o IP. Sua tabela de

rotas deve apresentar os lugares e você deve ter acesso a tudo, ambos

através da saída e pela entrada.

Mas, nós estamos construindo um Firewall e assim nós precisamos começar

desligado para que todo o mundo tem acesso.

No meu sistema eu criei várias scripts para configurar o Firewall

policiando o forwarding e contando o policiamento. Eu chamo os scripts

dentro do /etc/rc.d assim o meu sistema é configurado no momento do boot.

Através do padrão do IP Forwarding o sistema no kernel do Linux remete

tudo. Por causa disto, seu script de Firewall deve começar negando acesso

para tudo e eliminando qualquer registro da ultima vez que você o rodou.

Este script fará este truque.

 

? Para negar todos os serviços:

ipfwadm –F –p deny

 

? Flush (apagar) todos os comandos dados anteriormente

ipfwadm –F –f

ipfwadm –I –f

ipfwadm –O –f

Primeiramente, nós devemos partir dos filtros mais específicos para os

filtros mais genéricos. Portanto, se você quiser que todos os usuários da

rede privada tenham acesso total à rede pública e controlar o acesso a

apenas um usuário, você deve fazer primeiro o filtro do usuário específico,

e depois os filtros mais genéricos, do restante dos usuários.

 

? Habilitar os serviços de rede do usuário específico (acessar apenas ftp,

http e mail) para a rede pública, fazendo o masquerade:

ipfwadm –F –a m –b –P tcp -S 192.168.1.x 0:65535 -D 0.0/0 21 25 80 110

 

Os parâmetros usados nas linhas acima podem ser obtidos nos HOWTO’s do

próprio IPFWADM. Os propósitos deste documento são apenas fornecer algumas

dicas sobre a montagem de firewall’s, e as portas que definem os serviços

a serem utilizados podem ser obtidas na própria NET, mas eu farei uma

pequena lista no final deste documento. Se você quiser adicionar outros

filtros, adicione mais uma linha como a acima com os IP’s diferentes, com

a portas diferentes, etc.

Neste caso estamos aplicando o firewall do tipo foward (-F) , ou seja, os

serviços a serem acessados não estão na máquina firewall, nem as máquinas

que os acessarão será a máquina firewall.

? Habilitar todos os serviços de rede da rede privada para a rede pública,

fazendo o masquerade, em todos os serviços:

ipfwadm –F –a m -S 192.168.1.0/24 -D 0.0/0

 

O firewall funciona da seguinte forma: ele vai procurar

primeiramente os filtros nas suas primeiras linhas de configuração. Se ele

não encontrar nenhum registro ESPECÍFICO daquele acesso, ele vai caindo em

registros mais genéricos, mais globais, até que ele caia na primeira linha

do firewall, em que ela nega todo e qualquer tipo de acesso.

Se você inverter a ordem das linhas, ele vai encontrar um filtro genérico

já nas primeiras linhas, ignorando qualquer outro filtro específico mais

abaixo.

Com o firewall do jeito que está, temos o seguinte: a rede privada

conecta-se com a rede pública em todos os seus serviços, com exceção da

máquina 192.168.1.x, que tem apenas acesso a ftp, www e mail.

Se você tiver algum outro tipo de serviço, como roteamento

funcionando diretamente no linux (sem um router externo entre o linux e a

rede pública), você também pode controlar o acesso da rede pública para os

seus servidores (que estejam em máquinas diferentes do Firewall), seguindo

os mesmos procedimentos acima. Se houver um router (não a máquina firewall

em questão) entre sua rede pública e seus servidores, você vai ter de

controlar os acesso localmente, em cada servidor, pois o router deve ter

acesso direto aos servidores para haver conexão, fugindo do controle da

máquina firewall. Aconselho neste caso, que os servidores também sejam em

Linux, para aproveitar os recursos de firewall localmente em cada máquina.

Agora, se você tiver daemons de serviços rodando na própria máquina

firewall (arquivos /etc/services e /etc/inetd.conf), ou servidores avulsos

rodando linux, você também pode aproveitar esses recursos do IPFWADM

localmente, utilizando os parâmetros de INPUT (-I) e OUTPUT(-O), ao invés

de Fowarding (-F). a sintaxe é a mesma, só que os comandos de INPUT

controlam os acessos destinados AO seu servidor (algum usuário de algum

provedor, por exemplo) e os comandos de OUTPUT controlam os acessos vindos

DO seu servidor para a Rede pública, sempre mantendo a mesma sintaxe (leia

os HOWTO’s do linux)

 

 

7.6.8 - SERVIÇOS JÁ TESTADOS COM O IPFWADM

 

HTTP: testado e funcionando em todas as plataformas;

POP e SMTP: testado e funcionando em todas as plataformas;

Telnet: testado e funcionando em todas as plataformas;

FTP: testado e funcionando em algumas plataformas, carregando o arquivo

ip_masq_ftp.o. Alguns problemas com o WS_FTP32;

Archie: testado e funcionando em algumas plataformas;

NNTP: testado e funcionando em todas as plataformas;

VRML: testado e funcionando em todas as plataformas;

Traceroute: testado e funcionando em algumas plataformas. Algumas variações

do Unix podem não funcionar;

Ping: testado e funcionando em todas as plataformas;

IRC: testado e funcionando em todas as plataformas;

GOPHER: testado e funcionando em todas as plataformas;

WAIS: testado e funcionando em todas as plataformas;

Real Player: testado e funcionando em algumas plataformas, carregando o

arquivo ip_masq_raudio.o.

True Speech Player 1.1b: testado e funcionando sob Windows;

Internet Wave Player: testado e funcionando sob Windows;

Worlds Chat 0.9a: testado e funcionando sob Windows;

Alpha Worlds: testado e funcionando sob Windows;

Internet Phone 3.2: testado e funcionando parcialmente sob Windows: você

pode chamar alguém, mas não ser chamado;

POWWOW: testado e funcionando parcialmente sob Windows: você pode chamar

alguém, mas não ser chamado;

Cu-See-Me: testado e funcionando em todas as plataformas, carregando os

módulos apropriados. Você pode obtê-los no site IP Masquerade Resource

VDOLive: testado e funcionando em Windows, como os módulos apropriados;

PC-Anywhere for Windows: só funciona como cliente;

Socket Watch: Usa o protocolo NTP (Network Time Protocol);

 

 

7.6.9 - SERVIÇOS QUE NÃO FUNCIONAM

Intel Internet Phone: conecta, mas a voz somente funciona em uma via;

Intel Streaming Media Viewer: não conecta com o servidor.

Netscape CoolTalk: não conecta com o lado oposto;

Talk, ntalk: não funciona. Requer ainda um Kernel proxy a ser escrito;

WEBPhone: Ainda não funciona;

X: não testado ainda, mas acredito que não funcione sem algum proxy para

X, o que deve ser feito através de algum módulo para o IPFWADM.

7.6.10 - PLATAFORMAS TESTADAS

 

Linux;

Solaris;

Windows 95/98;

Windows NT (ambos workstation e server);

Windows For Workgroup 3.11 (com pacote TCP/IP);

Windows 3.1 (com pacote Chamaleon);

Novel 4.01 Server;

OS/2 (com Warp v3);

Macintosh OS (com MacTCP ou Open Transport);

DOS (com pacote NCSA Telnet, DOS Trumpet funciona parcialmente);

Amiga (com AmiTCP ou AS225-stack);

VAX Stations 3520 e 3100 com UCX (TCP/IP stack para VMS)

Alpha/AXP com Linux/Red Hat

SCO Openserver (v3.2.4.2 e 5)

IBM RS/6000 rodando AIX

(alguém testou alguma plataforma a mais?)

 

 

7.6.11 - PORTAS TCP

 

Enfim, um resumo das portas utilizadas pelos serviços de TCP/IP

Os números das portas estão divididos em três categorias: As portas

conhecidas (0 a 1023), as portas registradas (1024 a 49151) e as portas

dinâmicas ou privadas (49152 a 65535).

 

Porta Protocolo Serviço/Descrição

 

0 TCP/UDP Reservada

1 TCP/UDP TCPMUX - TCP Port Service Multiplexer

2 TCP/UDP Compressnet - Management Utility

3 TCP/UDP Compressnet - Compression Process

4 TCP/UDP Desabilitada

5 TCP/UDP RJE - Remote Job Entry

6 TCP/UDP Desabilitada

7 TCP/UDP Echo

8 TCP/UDP Desabilitada

9 TCP/UDP Discard

10 TCP/UDP Desabilitada

11 TCP/UDP SYSTAT – Active Users

12 TCP/UDP Desabilitada

13 TCP/UDP Daytime – RFC 867

14 TCP/UDP Desabilitada

15 TCP/UDP Desabilitada

16 TCP/UDP Desabilitada

17 TCP/UDP QOTD – Quote Of The Day

18 TCP/UDP MSP – Message Send Protocol

19 TCP/UDP CHARGEN – Character Generator

20 TCP/UDP FTP-Data – File Transfer Protocol (Default Data)

21 TCP/UDP FTP – File Transfer Protocol (Control)

22 TCP/UDP SSH – SSH Remote Login Protocol

23 TCP/UDP Telnet

24 TCP/UDP Algum sistema de mail privado

25 TCP/UDP SMTP – Simple Mail Transfer Protocol

26 TCP/UDP Desabilitada

27 TCP/UDP NSW-FE – NSW User System FE

28 TCP/UDP Desabilitada

29 TCP/UDP MSG-ICP

30 TCP/UDP Desabilitada

31 TCP/UDP MSG-AUTH – MSG Authentication

32 TCP/UDP Desabilitada

33 TCP/UDP DSP – Display Support Protocol

34 TCP/UDP Desabilitada

35 TCP/UDP Algum sistema de servidor de impressão

36 TCP/UDP Desabilitada

37 TCP/UDP Time

38 TCP/UDP RAP – Route Access Protocol

39 TCP/UDP RLP – Resource Location Protocol

40 TCP/UDP Desabilitada

41 TCP/UDP Graphics

42 TCP/UDP Nameserver – Host Name Server

43 TCP/UDP Nicname – Who Is

44 TCP/UDP MPM-Flags – MPM Flags Protocol

45 TCP/UDP MPM – Message Processing Module (recepção)

46 TCP/UDP MPM-SND – MPM (envio padrão)

47 TCP/UDP NI-FTP

48 TCP/UDP AUDITD – Digital Audit Daemon

49 TCP/UDP TACACS – Login Host Protocol

50 TCP/UDP RE-MAIL-CK – Remote Mail Checking Protocol

53 UDP DNS – Domain Name Server

66 TCP/UDP SQL*NET – Oracle SQL*NET

67 TCP/UDP BOOTPS – Bootstrap Protocol Client

69 TCP/UDP TFTP – Trivial File Tranfer Protocol

70 TCP/UDP Gopher

79 TCP/UDP Finger

80 TCP/UDP HTTP – World Wide Web

92 TCP/UDP NPP – Network Printing Protocol

110 TCP/UDP POP3 – Post Office Protocol – Version 3

118 TCP/UDP SQLSERV – SQL Services

119 TCP/UDP NNTP – Network News Transfer Protocol

2600 TCP/UDP Quake

4000 TCP/UDP ICQ – Mirabilis

31337 TCP/UDP BO – Back Orifice

 

 

E por aí vai... se você quiser uma listagem completa das portas TCP

ou qualquer outra informação, correção ou sugestão sobre qualquer conteúdo

deste documento, mande-me um e-mail.

 

8 - X WINDOW SYSTEM

 

X, X Window System, X Version 11, X Window System, Version 11 ou X11 (não diga ou escreva X Windows, por que está errado), é o componente do Linux que serve de intermediário entre o Linux e o Gerenciador de Janelas (Window Manager).

 

O X Window System, X Window ou apenas X é o servidor gráfico.O XFree86 é uma versão do X para PCs. O startx é um script que chama o xinit, que por sua vez chama o X e mais outros programas.

 

 

8.1 - GERENCIADORES DE JANELAS

 

Um Gerenciador de Janelas é um programa que roda sobre o X e serve de intermediário entre este e o usuário. Uma interface gráfica. Que procura tornar mais amigável e prático o uso do sistema operacional.

 

Tem algumas características do então Windows 3.1, que era a interface gráfica enquanto o DOS era o sistema operacional. Uma grande diferença no Linux é que você pode escolher entre inúmeros Gerenciadores de Janelas.

 

Os Gerenciadores de Janelas são abundantes no Linux. Aqui como nas Distribuições os gostos variam e deve-se experimentar para ver qual mais se adapta às suas necessidades e gostos.

 

Os mais comuns são:

 

8.1.1 KDE

 

O mais popular (ocupa a preferência da maioria dos usuários do Linux).

 

Uma de suas características marcantes é seu suporte a dezenas de idiomas, inclusive ao português do Brasil. Isso já facilita e muito para o iniciante que não tem domínio da língua inglesa.

 

Muito fácil de utilizar e tem muitos recursos. Gerenciador de arquivos (kfm), que inclusive abre

algumas páginas da INTERNET e outros recursos. Ferramenta para conexão à INTERNET (kppp),

simples e eficiente. Um editorzinho de texto simples e muito bom (kedit) entre diversos outros recursos.

 

Seu uso é intuitivo: Ao ser aberto com kde e Enter (isso no Red Hat, já no Slackware é startx), clique no K abaixo e à esquerda (versão 1.0) ou na engrenagem (versão 1.1) para abrir um menu tipo o menu iniciar do 95. O resto é com você.

 

Se quiser mais facilidades, leia o Manual do Kde, que o Hugo Cisneiros traduziu, em

http://www.netdados.com.br/tlm/arquivos/.

 

Desvantagem: muito pesado, exige uma máquina robusta e com muita memória. Alternativa para quem ainda não conseguiu outros recursos similares aos do kde: pode-se utilizar qualquer outro Gerenciador de Janelas mais leve e executar a maioria dos utilitários do Kde nesse gerenciador.

Exemplo: quem tem o Kde instalado e usa o Window Maker, pode abrir um xterm (terminal no X) e executar o comando kppp e enter. O utilitário kppp será aberto no Window Maker.

Pode também usar o recurso Run Command para isso.

 

O Kde é mais que um gerenciador de janelas, traz várias outras ferramentas.

 

 

 

DESINSTALAR KDE DO RED HAT

 

Se, por um motivo qualquer, quiser desinstalar o Kde:

 

rpm -qa | grep kde > list

rpm -e `cat list`

rm -f list

 

Esses comandos podem ser concatenados em uma única linha e podem ser usados para desinstalar

qualquer pacote que inclua várias dependências.

 

Basta trocar "kde" pela string correspondente ao pacote que deseja ver desinstalado.

 

Essa foi do ./Marumbeiro para a Linux-br.

 

 

 

8.1.2 - FVWM2 ou 95 - Esse é o Gerenciador de Janelas, que é instalado por default no Red Hat e no Slackware (talvez em outros, não sei). Simples, mas que atende as necessidades dos iniciantes (e até gente muito boa usa ele).

 

Instalado no Red Hat, normalmente ele vem com um Painel de Controle muito útil:

 

configuração de impressoras, de modems, de networks (aqui inclui INTERNET) e outros recursos.

Pode ser usado juntamente com os utilitários do Kde também.

 

Para abrir o Fvwm digite startx e Enter. Esse tem uma barra de tarefas abaixo e um botão iniciar.

Aqui tanto faz clicar no botão iniciar quanto clicar numa área livre da tela que será aberto um menu com os programas.

 

 

8.1.3 - AFTERSTEP - Desse não tenho muito o que falar. Ele tem seu grupo de defensores. Tem um visual (original) bonito. Em termos de recursos achei semelhante ao Window Maker. Uma característica interessante que vi no Window Maker foi que as figuras ficam mais bonitas (melhor definidas) do que nos outros (talvez chegue perto dele nesse ponto, o After Step).

 

8.1.4 - WINDOW MAKER - Este foi desenvolvido com a ajuda de um brasileiro (Alfredo Kojima). É um WM leve e atraente. Vem com recursos de temas, estilos e papéis de paredes (que podem ser trocados com facilidade). Pode ser personalidado: acrescentando-se menus, itens e teclas de atalho via ambiente gráfico: icone do Window Maker Preferences ou via console (editando o arquivo NUstep/Defaults/WMRootMenu.pt que está no diretório do usuário).

 

É compatível com o Gnome.

 

Veja dicas sobre a personalizaçã do Window Maker.

 

 

 

 

 

 

 

 

 

8.2 - USO DO XCONFIGURATOR NO RED HAT

 

Passe no Repositório de XF86Config, caso esteja com dificuldades para configurar seu X:  HYPERLINK http://www.oocities.org/SiliconValley/Ridge/3505/x.html http://www.oocities.org/SiliconValley/Ridge/3505/x.html

 

Na página do Felipe Russo ( HYPERLINK http://members.xoom.com/linux_page/ http://members.xoom.com/linux_page/) tem, tipo um driver para as placas SiS.

Muito fácil de usar. Se for o RH da Conectiva, mais ainda, pois está em português.1- Antes devemos executar o SuperProbe para ver maiores informações sobre a placa de vídeo.

Digite SuperProbe e Enter. Anote os detalhes.

Também devemos ter à mão o manual (ou informações) do monitor.

2- Executar: digite Xconfigurator e Enter;

3- Aparece uma tela de boas vindas e informando que o programa cria o arquivo XF86Config. Dê uma olhada nas outras informações e Enter;

4- Caso sua placa seja uma placa e vídeo seja uma placa PCI moderna ela poderá ser detectada agora, caso contrário escolha o modelo da sua placa na lista. Caso ela não conste você pode ainda selecionar a opção ao final da lista:

Placa não relacionada e selecionar SVGA (como driver para a sua - caso ela seja SVGA).

É bom lembrar que aqui o driver informado deve ser o mesmo que foi instalado pelo Red Hat. Caso contrário não funcionará. Enter;

5- Abre a tela Configuração do Monitor. Selecione o seu na lista e tecle Enter;

6- Abre-se a Tela de configuração. Aqui o programa poderá detectar a resolução e as cores, se você escolher Detectar. Mas ele já sugere não detectar (normalmente não detecta em placas mais antigas). Vamos escolher não detectar e Enter;

7- Abre-se a tela Memória de Vídeo. Selecione a quantidade de memória informada pelo SuperProbe e Enter;

8- Agora e tela Configuração "Clockchip". Como ele recomenda, apenas tecle Enter;

9- Agora Verifica Clocks. Escolha Ignorar e Enter.

10- Selecionar Modos de Vídeo. Selecione à vontade, lembrando que as três colunas representas as quantidades de cores:

8 bpp 16 bpp 24 bpp 32 bpp

800x600 800x600

1024x768 1024x768

 

Marcando as opções acima estou escolhendo as resoluções de 800x600 e de 1024x768 com 16 bpp (ou 64k cores) e 24 bpp (ou true color - 6.5 milhões de cores).

 

Selecione e tecle Enter;

11- Aparece a tela Concluído. Aqui diz que se deva dar uma olhada no arquivo que foi gravado (XF86Config) no diretório /etc/X11/ antes de executar o "startx" e também ensina como (dentro do X) alternar entre resoluções selecionadas e como sair do X Window. Tecle Enter.

12- Agora você pode atender às recomendações e editar o XF86Config para ajustes ou

simplesmente excetuar "startx".

13- Se tudo correr bem ótimo. Se não, comece tudo novamente (repita os passos de 1 a 5) e na hora de selecionar o monitor escolha Customizar e Enter;

14- Aparece uma tela Configuração do Monitor. Enter;

15- Selecione a resolução compatível com o seu e Enter;

16- Selecione a Freqüência Vertical e Enter;

17- Aparece Tela de Configuração. Selecione Não detectar e Enter;

18- Informe novamente a memória da sua placa de vídeo e Enter;

19- Configuração do "Clockchip". Tecle Enter;

20- Verifica Clocks. Escolha Ignorar e Enter;

21- Selecione as resoluções e quantidade de cores desejadas;

22- Concluído. Enter.

23- Teste "startx" e Enter. Tomara que funcione.

24- Se ainda assim não funcionar, faça uma cópia do XF86Config e saia

experimentando outras características. Freqüente uma boa lista de discussão.

 

 

8.3 - USO DO XF86SETUP NO SLACKWARE, SUSE E HED HAT

 

Normalmente o Slackware e o SuSE já vem com o XF86Setup, já o Red Hat vem apenas com o Xconfigurator (que os outros não tem). Mas parece que é possível usar qualquer um em qualquer um, pois o Red Hat Marumbi atualizado pela conectiva com XFree86-3.3.3.1 final vem também com o XF86Setup. Beleza se podemos usar mais uma opção!

 

1 - Para rodar: digite XF86Setup e Enter;

2 - Ele pergunta se deseja usar o XF86Config existente como default. Digite "y" e Enter. Se não funcionar, tente novamente e digite "n";

3 - Pressione Enter para continuar;

4 - Abre a tela do XF86Setup, onde se pode configurar o Mouse, o Teclado, a Placa de Vídeo e os Modos de Exibição. Em others tem algumas coisas interessantes. Supondo que o mouse e o teclado estejam em ordem, clicar em Card;

5 - Abre-se uma lista de placas de vídeo. Selecione a sua e clique em Monitor.

Se você está usando Red Hat, lembre de selecionar a mesma que foi detectada durante a instalação ou que você escolheu da lista (pois o Red Hat instala apenas o server para a que você escolheu e o X não irá funcionar em outras placas);

6 - Aqui você seleciona um monitor com as características do seu e clica em Modeselection;

7 - Aqui você pode selecionar várias resoluções e apenas um color depth.

Ex.: eu selecionei 800x600 e 1024x768 com 16bpp e clicar em Done;

8 - Ele fará uns testes para ver se consegue rodar com as características selecionadas. Se conseguir será mostrado o resultado na tela e você pode salvar.

Se não conseguir e você perder o controle da tela tecle Ctrl+c ou Ctrl+Alt+BackSpace para voltar ao console e fazer nova tentativa;

9 - Você deve tentar outra opção para o monitor, ajustar as freqüências e se ainda assim não funcionar use o xf86config (veja abaixo).

 

 

 

 

8.4 - CONFIGURAR QUALQUER DISTRIBUIÇÃO COM O XF86CONFIG

 

O xf86config tem uma interface texto (menos amigável que o Xconfigurator e que o XF86Setup).

 

1 - Rodar com: xf86config e Enter;

2 - Aparece uma tela dizendo que o programa deve criar um arquivo XF86Config básico, baseado nas opções que você escolher. Enter para continuar;

3 - Aqui, se você já tiver criado um arquivo XF86Config, ele diz que o arquivo já existe. Enter para continuar;

4 - Especificar um tipo de protocolo para o seu mouse. Se você usa mouse comum com dois ou três botões, escolha Microsoft Mouse (a não ser que você tenha certeza que não é). Se for um notebook normalmente é PS/2. Digite um número correspondente ao seu (veja a lista) e Enter;

5 - Emular 3 botões? "y" ou "n" e Enter;

6 - Agora deve-se dizer onde o mouse está conectado com, por exemplo

/dev/tty00. Ou simplesmente pressione Enter para usar o default /dev/mouse.

/dev/mouse é um link simbólico (symlink) para /dev/ttySx). Enter;

7 - Deseja usar XKB? Aqui você tem a chance de escolher o teclado abnt2, tecle "y" e Enter e selecione. Iremos usar "n" e Enter;

8 - Habilitar Alt keys? "n" e Enter;

9 - Avisa que irá solicitar as freqüências do monitor. Enter para continuar;

10 - Selecione um compatível com o seu, digite o número e Enter;

11 - Agora informa a faixa de freqüência vertical do seu monitor, digitando o número

correspondente e Enter. Veja que você pode especificar uma faixa diferente na opção 5;

12 - Entrar uma identificação para o seu monitor. Você pode digitar um nome e teclar Enter ou simplesmente teclar Enter, não fará diferença;

13 - Entre o vendor name. Idem, tecle Enter;

14 - Entre o modelo. Idem, tecle Enter;

15 - Quer ver um banco de dados de placas de vídeo? Tecle "y" e Enter;

16 - Agora você está frente a lista das placas suportadas pelo seu XFree86.

É bom ressaltar que se a sua placa não aparecer aqui e se o seu XFree86 não for a última versão, seria interessante atualizar o seu XFree86. Aqui para rolar a tela para baixo tecle Enter. Mais uma vez é bom lembrar que se está usando o Red Hat, deve informar o modelo instalado. Selecione a sua, digite o número e tecle Enter;

17 - Ele informa sobre a placa selecionada. Lembre o Server que ele informou que terá que entrar com ele mais a frente. Tecle Enter;

18 - Agora entre com o número correspondente ao server indicado na tela anterior (veja que aqui a opção 5 serve para selecionar outro Server) e Enter;

19 - Quer configurar o link simbólico? Digite "y" e Enter;

20 - Agora informe o número correspondente a memória da sua placa de vídeo.

Antes (caso não saiba) deveria ser executado o SuperProbe para ver essas informações. Digite o número e Enter;

21 - Agora é o mesmo que para o monitor. Tecle simplesmente Enter;

22 - Enter novamente;

23 - Enter

24 - Clockchip. Pressione Enter para não testar;

25 - Rodar 'X-probeonly' agora? Digite "n" e Enter;

26 - Vamos escolher a quantidade de cores. Digite o número e Enter;

 

27 - Agora escolher a resolução. Veja que você pode escolher várias.

Por exemplo: pode escolher 1024x768, 800x600 e 640x480, digitando 432. Digite o número e Enter;

28 - Agora ele pergunta se você quer um screen virtual do mesmo tamanho que o screen físico.

Digite "y" e Enter;

29 - Agora digite "5" e Enter

30 - Pergunta se queremos gravar as opções em /etc/X11/XF86Config.

Digite "y" e Enter.

Ok, finalizou. Experimente rodar com "startx". Se funcionar, ótimo.

Se não funcionar, então procure editar o arquivo criado e fazer alguns ajustes ou peça ajuda em alguma lista de discussão, procurando por quem tenha uma configuração igual a sua (placa de video e monitor, principalmente).

 

 

 

8.5 - DICAS EXTRAS SOBRE GERENCIADORES DE JANELAS

 

 

8.5.1 - CAPTURANDO TELAS COM O GIMP:

 

Execute o Gimp e clique, no menu Xtns, em Screen Shot. Selecione a opção desejada e clique no botão Grab. Se você escolheu para capturar uma janela, clique em cima dela com o botão esquerdo.

Para finalizar, clique com o botão direito do mouse em cima da imagem criada e salve-a em um arquivo.

 

8.5.2 - CAPTURANDO TELAS COM O XV:

 

Execute o XV, clique com o botão direito para abrir a janela "xv controls" e clique no botão Grab.

Ajuste suas preferências e clique novamente em Grab. O botão esquerdo do mouse captura uma janela, o botão do meio uma área retangular e o direito cancela. Depois volte para a janela "xv controls" e salve a imagem em um arquivo.

 

8.5.3 - AUMENTANDO AS FONTES para quem usa resoluções de 800x600 ou 1024x768 ou maior. Se você fez uma instalação personalizada e instalou as fontes de 100 dpi, edite o XF86Config e coloque as fontes de 100 dpi antes das de 75.

 

Se você não notar diferença no tamanho das fontes dos programas quando abrir o X da próxima vez é por que você não instalou as fontes de 100 dpi. Para instalar no Red Hat, monte o CD, acesse o diretório /mnt/cdrom/Red Hat/RPMS e liste ls XFree86*, veja o que tem XFree86-100dpi... ou coisa que o valha.

 

Instale com rpm -ivh XFree86-100dpi-fonts... (digite corretamente o nome).

 

Se você usa o Slackware, monte o CD da distribuição, acesse o diretório que contém os pacotes e liste também para ver direitinho o nome do arquivo do XFree86 com 100 dpi. Instale com installpkg XFree86-100dpi...

 

E use o X de maneira mais confortável.

 

 

8.5.4 - ADICIONAR ÍCONES À ÁREA DE TRABALHO DO KDE:

 

Pelo K File Manager (kfm): arrastar o ícone com o botão esquerdo para a área de trabalho. Ele vai perguntar: Mover/Copiar/Link. Escolha o 3o.

 

Outra alternativa:

 

Use o botão direito do mouse, clique em NEW --> PROGRAM. Dê o nome do programa, ele criará um diretório. Então clique nesse diretório com o botão direito do mouse e escolha "PROPERTIES". Edite como quiser. Escolha o PATH para o binário, o ícone desejado e etc.

 

 

8.5.5 - SCREEN SHOT NO GIMP

 

1) carregue o gimp

2) clique em xtns

3) clique em screen shot.

4) clique em grab the whole screen.

5) clique em Ok.

6) clique em - para ver o screenshot menor

7) File -> Save...

 

Esta foi passada pelo Thadeu Penna para a lista Linux-br.

 

 

 

 

 

8.5.6 - VISUALIZANDO THUMBNAILS NO XV:

 

No XV você poderá visualizar todas as imagens contidas em um diretório na forma de pequenos ícones, cada ícone mostrando o conteúdo da imagem. Estes ícones são conhecidos como thumbnail.

 

 

Entre no XV e clique com o botão direito para abrir a janela "xv controls".

Clique no botão Windows e selecione "Visual Schnauzer". Vá até o diretório desejado e clique no botão Update.

Para abrir a imagem basta dar dois cliques em cima dela.

(Outra da Red Hat Linux Tips.)

 

 

8.5.7 - COMO INICIAR MAIS DE UMA SESSÃO X:

 

Para executar mais de um X11 você deverá adicionar alguns parâmetros, a partir da segunda sessão X, ao comando startx. Veja alguns exemplos:

 

# startx -- :1 (para executar o segundo X11)

# startx -- :2 -quiet & (executa o terceiro X11, silenciosamente e em segundo plano para não bloquear o console)

# startx -- :3 -bpp 24 (executa o quarto X11, com uma profundidade

de cor de 24 bits)

 

Consulte o tópico "Alternando entre consoles virtuais" para saber como alternar entre as sessões X.

 

(Mais uma da Red Hat Linux Tips.)

 

9 - COMPILAÇÃO DO KERNEL

 

O QUE É O KERNEL?

 

Imagine que um computador seja como uma empresa telefônica e que as informações (ligações) venham de fora (assinante discando) e acabem na outra ponta numa secretária eletrônica (HD).

Bem... A central telefônica seria os periféricos que manipulariam estas informações. O técnico que comanda a central seria o KERNEL, seria o todo poderoso, numa comparação grosseira, seria o cérebro central, que só observaria o que se passa e daria ordens aos subordinados. O KERNEL não fica muito envolvido com pequenos detalhes, mas sim, com as grandes questões. Seria (Deus me perdoe), digamos assim, o Fernando Henrique do seu micro... (no depto. de software, é claro !!!)

 

Citação de mail de um colega da lista linux-br.

 

 

9.1 – GUIA BÁSICO - DA PÁGINA DO FELIPE RUSSO

 

ATUALIZANDO O KERNEL

 

Uma dica: micros que estão com bateria arriada (e data atrasada) podem dar problema quando da compilação do kernel e de outros programas. Deve-se ajustar o relógio antes com:

 

date MMddhhmm[yy] (ver comandos básicos).

 

- Independente do Kernel que você tenha, atualize-o sempre que puder.

- Na pagina www.kernel.org/pub/linux/kernel/v2.0

- Daí você pega o arquivo linux : linux-2.0.36.tar.gz (por exemplo)

- Daí copia esse arquivo para /usr/src

- Acesse /usr/src

- E escreve isso: tar zpvfx linux-2.0.36.tar.gz

- Obs.: claro que se o arquivo estiver em outro formato deve ser usado outro comando

- Assim, ele vai criar um diretório: /usr/src/linux

- Dentro desse diretório você digita:

- make (vai aparece um monte d coisa)

- make menuconfig (daí vai entrar num menuzinho que você põe as opções de acordo com o seu

PC)

- make dep (um monte d coisa)

- make clean (esse é rápido)

- make zImage (vá buscar um cafezinho agora)

- make zlilo (só ponha esse se você usa o lilo loader)

- make modules (esse é rápido) (comigo não foi tanto)

- make modules_install (rápido)

- Fazendo tudo isso, entre no diretório /usr/src/linux/arch/i386/boot

- Dentro do diretório, copie o arquivo zImage para o diretorio /boot

- Copiando ele, de o boot no seu pc que tá pronto!

 

9.2 - ESTA FOI DA PÁGINA TIRA-DÚVIDAS

 

COMPILANDO O KERNEL:

 

Primeiro você tem que pegar o arquivo ou o patch de atualização que existe em vários lugares onde você pode encontrar ... ftp.kernel.org ou "ftp.itp.com.br"

Instalação dos Fontes

 

Se você pegou o linux-2.0.XX.tar.gz -> XX == Versão do Kernel

 

1 - cd /usr/src

2 - tar -zxvf linux-2.0.XX.tar.gz

 

Mas se você pegou o patch

1 - cd /usr/src

2 - gzip -cd patchXX.gz | patch -p0

Após ter aplicado os patch`s verifique se algum foi rejeitado:

 

1 - cd /usr/src

2 - find linux -name *.rej

Se ocorrer de aparecer algum .rej algo está errado. Volte para os passos

acima !

 

Para apagar os arquivos antigos que foram atualizados execute:

 

1 - cd /usr/src

2 - find -name linux -exec rm {} \;

3 - cd /usr/src/linux

4 - make mrproper

 

("para garantir que não existe arquivos .o antigos")

 

Configurando o Kernel

Execute:

 

1 - cd /usr/src/linux

2 - make menuconfig ("caso você esteja na shell") <- Mais rápida

3 - make xconfig ("se você estiver na interface gráfica")

Cuidado - Não marque drives desnecessários, tornarão o kernel maior

e podem trazer problemas.

Escolhendo as opções para o novo kernel

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 

Veremos agora cada opção para a correta configuração do kernel:

CODE MATURITY LEVEL OPTIONS *

Esta opção possibilita de se utilizar features do kernel ainda na sua

fase alfa.

 

Se você não quer ter problemas não marque nada.

LOADABLE MODULE SUPPORT Enable loadable module support *

Suporte a modules no kernel. Módulos são pequenos pedaços de código

compilado que pode ser incorporados ao kernel em tempo de execução.

Se tiver dúvida sobre o assunto marque.

 

Set version information on all symbols for modules *

Utilizando esta opção, é possível utilizar a mesma versão de

um determinado módulo com kernel novo.

 

Kernel daemon support *

Quando um driver ou filesystem é compilado como módulo, sua ativação

deve ser feita pelo próprio operador através do comando insmod.

 

Esta opção torna isso automático, pois esta tarefa é repassada pelo

kernel daemon kerneld.

 

GENERAL SETUP Kernel math emulation *

Caso seu processador não possua co-processador aritmético selecione

esta opção.

 

Obs: Ele será automaticamente desabilitado caso seu sistema possua

um co-processador.

 

Networking support *

Marque sempre esta opção (opções rede e inet)

 

Limit memory to low 16MB *

Esta opção é útil para motherboards que tem problemas para trabalhar com mais

que 16 MB de RAM.

 

PCI BIOS support *

Sistemas que possuem placas PCI conectadas devem selecionar esta opção.

 

System V IPC *

Suporte a Intel Process Communication (uso recomendado) Kernel support

For A.OUT binaries *

 

Formato antigo de executáveis do Linux.

 

Kernel support for ELF binaries *

Suporte a executáveis do tipo ELF (Executable and Linkable Format).

 

Kernel support for JAVA binaries *

Suporte a executáveis Java

 

Compila kernel as ELF *

Marque Processador type *

 

Tipo de processador utilizado pelo sistema. Escolhendo 386 ele roda

em qualquer tipo de CPU acima.

Floppy, IDE, And other block devices *

Suporte a floppy disk.

 

Include IDE/ATAPI CDROM support * Se você tiver CDROM usando o protocolo

ATAPI selecione.

 

Include IDE/ATAPI TAPE Support *

Suporte a unidade de fita que usa o protocolo

 

ATAPI SCSI emulation support *

Este driver seria emulação SCSI para dispositivos IDE ATAPI.

 

1 - Copie o arquivo para o diretorio /usr/src

2 - cd /usr/src

3 - rm -rf linux

4 - tar zxvpf "linux-2.0.35.gz"

5 - cd /usr/include

6 - rm -rf asm linux scsi

 

7 - rm -rf asm linux scsi

8 - ln -s /usr/src/linux/include/asm-i386 asm

9 - ln -s /usr/src/linux/include/linux linux

10- ln -s /usr/src/linux/include/scsi scsi

11- cd /usr/src/linux

12- make mrproper

13- make menuconfig (ou make config ou ainda make xconfig no x-win)

Agora você entrrá modo "gráfico"...

 

Entre na opção "Networking Options" e Marque as opções:

ATENÇÃO: Para marcar as opções aperte espaço até achar a desejada...

ATENÇÃO: Marque as opções abaixo e não mexa nas que JÁ ESTÃO MARCADAS!

 

[*] Network Firewalls

[*] TCP/IP Networking

[*] IP: Firewalling

[*] IP: Firewall packet logging

[*] IP: Masquerading

[*] IP: ICMP Masquerading

[*] IP: Always defragment

[*] IP: Drop Sourde routed Frames

[*] IP: Allow large Windows (not remment if <16 MB of memory)

[*] The IPX protocol "Se você tiver placa de Rede"

Vá até a opção "Network Device Support" e Marque as opções:

 

[*] Network Device Support

[M] Dummy net driver support

[*] Plip (Parallel port support)

[*] Ppp (Point to Point) Support

[*] Slip (Serial Line) Support

[*] Ethernet (10 or 100MBit)

[*] 3Com Cards

[*] Other Isa Cards "Se você tiver placa de Rede"

[*] Ne200/Ne1000 support "Se você tiver placa de Rede"

Agora vá até a opção "Filesystems" e Marque as opções:

 

[*] Minix fs support filesystem

[*] Second extended fs support

[*] Native language support (Unicode, codepages) [*] Dos Fat fs support

[*] VFAT (Windows-95) fs support

[*] /Proc filesystem support

[*] NFS filesystem support

[*] ISO9660 CDROM filesystem support

Agora vá até a opção "Sound" e Marque suas opções: "Se você tiver som.."

O Exemplo abaixo foi feito com a placa de Som Sound Blaster 16 mais

se você for marcar outro tipo de placa de som não esqueça de marcar: [*]

/dev/dspand

 

/dev/audio support

 

[*] Sound Card support

[*] Sound Blaster (SB, SBPRO, SB16, Clones) Support

[*] /dev/dsp and /dev/audio support

Após isso você tem que arrumar abaixo a IRQ da sua placa. A padrão

é 5 mais pode ser 7 ou outras você vai ter que ficar testando ou ver o

manual.

 

(220) I/O base for SB check from manual of the card

(5) Sound Blaster IRQ chechk from manual

(1) Sound DMA 0, 1 or 3

(5) Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 o

(0) MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of t

(-1) SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16

(65536) Audio DMA buffer size 4096, 16384, 32768 or 65536

[ ] Additional low level drivers

Agora salve na opção "Save Configuration to an Alternate File" e quando

ele perguntar só dê um enter e era isso.

Dê um Exit e quando ele perguntar:

"Do you wish to save your new kernel configuration?" dê um "yes"

 

Agora que você está na shell "#" digite: make dep ; make clean ; make

modules ; make modules_install ; make zImage ; make zlilo "enter"

ATENÇÃO: Se você usar diskete para iniciar ao linux invés de zlilo

use zdisk

Depois é só dar um "reboot e era isso".

Maiores detalhes sobre o assunto leia HOW-TOO`s Autor: bash.

 

 

9.3 - ESTA FOI DA RED HAT LINUX TIPS

 

ATUALIZANDO E COMPILANDO O KERNEL:

 

O kernel é a parte principal do Linux, faz o gerenciamento de todos os recursos de seu computador.

Quando você instala o Linux, o sistema é executado com um kernel pré-compilado pelos fornecedores da sua distribuição (Red Hat, Slackware, Debian, etc). Este kernel, para poder ser compatível com a maioria dos computadores, foi compilado para ser o mais genérico possível, prejudicando a sua performance, pois ele tem que vir com a grande maioria dos módulos instalados e ainda funcionar em todos os processadores existentes (a partir de um 386).

 

Para isso devemos sempre recompilar o kernel, para adaptá-lo ao hardware da sua máquina. E além disso, freqüentemente é lançado uma nova versão do kernel, em que são corrigidos os bugs e ou acrescentados novos recursos. Se você pretender atualizá-lo terá que compilar esta nova versão.

 

Existem dois tipos de kernel, os estáveis e os em desenvolvimento, diferenciados na numeração da versão. A numeração tem o formato x.y.z, onde x.y é a versão e z é a correção. Se o y for um número ímpar então o kernel está em desenvolvimento.

 

Ex.: linux-2.0.36 -> versão estável

linux-2.1.96 -> versão em desenvolvimento

 

O kernel que vem nas distribuições é a versão estável, se você pretende atualizá-lo procure compilar uma versão estável também, para não ter problemas.

 

A última versão estável é a 2.0 e atualmente está no nível de correção 36. A versão em

desenvolvimento é uma versão para testes, onde os programadores ficam estudando novos recursos adicionados ao kernel, portanto é uma versão instável.

 

Os pré-requisitos para compilar o kernel são: ter instalado o compilador C (GCC), as bibliotecas C (libc), ter espaço em disco suficiente e estar logado como root.

 

O arquivo com as fontes do kernel pode ser encontrado nos seguintes endereços:

 

ftp://ftp.kernel.org/pub/linux/kernel/v2.0/

ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/

 

Lá serão encontrados todos os arquivos do kernel da série 2.0, o último é o arquivo linux-2.0.36.tar.gz.

 

Este arquivo deverá ser descompactado no diretório /usr/src. No Red Hat, quando se opta por instalar as fontes do kernel na instalação do Linux, os arquivos das fontes ficam do diretório /usr/src/linux-2.0.zz. E no diretório /usr/src existe um link simbólico /usr/src/linux apontando para /usr/src/linux-2.0.zz.

 

 

Veja um exemplo:

# cd /usr/src

# ls -l

total 1

lrwxrwxrwx 1 root root 13 Jun 9 01:33 linux -> linux-2.0.34/

drwxr-xr-x 15 root root 1024 Jun 9 01:45 linux-2.0.34

 

Quando o arquivo linux-2.0.zz.tar.gz é descompactado (dentro do /usr/src), é criado o diretório linux/ com todos os arquivos e subdirectórios dentro dele, para formar o diretório /usr/src/linux.

Como existe um link com esse nome, devemos removê-lo primeiro: (lembre-se, primeiro você entrou no diretório /usr/src com o comando "cd /usr/src")

 

# rm linux

 

Agora descompacte a nova versão (no exemplo o arquivo está no

/usr/local/tgz):

 

# tar xzvf /usr/local/tgz/linux-2.0.36.tar.gz

 

Renomeie o diretório chamado linux (criado com o tar) para algo mais

informativo:

 

# mv linux linux-2.0.36

 

E crie o link simbólico linux apontando para ele (pois o importante

é que exista o caminho /usr/src/linux):

 

# ln -s linux-2.0.36 linux

 

Seguindo o exemplo, o diretório /usr/src terá agora:

# ls -l

 

total 1

 

lrwxrwxrwx 1 root root 13 Nov 15 02:05 linux -> linux-2.0.36/

drwxr-xr-x 15 root root 1024 Jun 9 01:45 linux-2.0.34

drwxr-xr-x 15 root root 1024 Nov 15 01:45 linux-2.0.36

 

Se você quiser, poderá remover o diretório linux-2.0.34.

 

# rm -rf linux-2.0.34

 

Entre agora no diretório linux/ (# cd linux), porque daqui pra frente

todos os comandos deverão ser digitados pelo diretório /usr/src/linux.

 

Se você quer apenas recompilar o kernel já instalado pela sua distribuição

em vez de atualizá-lo para uma outra versão, faça apenas o procedimento

deste ponto em diante. E só lembrando, entre no diretório /usr/src/linux.

Primeiramente, é recomendável utilizar o comando make mrproper. Ele

irá remover os arquivos de configuração de compilações anteriores (se não for a

primeira compilação que esteja fazendo):

 

# make mrproper

Agora vamos configurar o kernel. Existem três maneiras de configurá-lo:

 

make config -> É feita uma seqüência de perguntas para serem respondidas

com y (sim), n (não) e m (módulo).

 

make menuconfig -> Um programa semelhante ao programa de instalação

do Red Hat, com menus dividindo cada categoria de opções (necessita da

biblioteca curses).

 

Basta responder ao item desejado com y (sim), n (não) e m (módulo).

 

make xconfig -> Um programa com menus para ser executado no X Window

(necessita das bibliotecas do X11 e Tcl/Tk). Novamente basta responder

ao item desejado com y (sim), n (não) e m (módulo).

 

Em alguns itens é necessário uma resposta mais específica (números

de IRQs por exemplo).

 

Recomendo usar o menuconfig, digitando:

 

# make menuconfig

 

Você poderá salvar a configuração escolhida em um arquivo, para usar

em uma próxima compilação. Mas, independente disso, quando sair do programa,

responda positivamente para que sejam gravadas as configurações! Após você ter

decidido o que deve e o que não deve ser instalado, use o seguinte comando para

gerar as dependências entre os arquivos da fonte:

 

# make dep

 

Para forçar uma compilação completa do kernel, use o comando abaixo,

assim não será aproveitado os objetos produzidos em uma compilação anterior:

 

# make clean

 

Agora está tudo pronto para compilar o kernel, execute o comando abaixo

para iniciar a compilação (demora cerca de 5 minutos em um P200 com 64mb

de RAM e 12 minutos em um P100 com 16mb de RAM):

 

# make zImage

 

Será criado o arquivo zImage no diretório /usr/src/linux/arch/i386/boot,

que é a imagem compactada do kernel.

 

 

Opcionalmente poderá ser executado o seguinte comando para criar uma

imagem do kernel em um disquete (coloque um disco vazio no drive), para usar

como disco de boot:

 

# make zdisk

 

Agora antes de criar os módulos, mova (renomear) o antigo conjunto

de módulos, através do seguinte comando (mova-os para um diretório qualquer):

 

# mv /lib/modules/2.0.zz /lib/modules/2.0.zz-old

 

Então crie e instale os módulos com os seguintes comandos:

 

# make modules

 

# make modules_install

 

Copie a imagem do kernel recém criada na compilação para o diretório

mais adequado no Red Hat (/boot), renomeando-a para um nome mais usual (pode

ser qualquer nome):

 

# cp arch/i386/boot/zImage /boot/vmlinuz-2.0.36

Agora edite o arquivo /etc/lilo.conf (ex.: vi /etc/lilo.conf) para

trocar o nome da imagem antiga para esta nova imagem. Veja um exemplo do

lilo.conf no Red Hat:

 

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

other=/dev/hda1

label=dos

table=/dev/hda

image=/boot/vmlinuz-2.0.34-0.6

label=linux

root=/dev/hda5

read-only

 

Você deverá alterar a linha "image=/boot/vmlinuz-2.0.34-0.6" trocando

pelo nome dado a nova imagem do kernel, que seguindo o exemplo a linha ficaria

 

"image=/boot/vmlinuz-2.0.36".

 

Para sua segurança, mantenha a entrada da imagem antiga e adicione

no final do arquivo, uma nova entrada para a nova imagem do kernel. Assim você

terá mais uma opção na inicialização da máquina. Acrescente isto:

 

image=/boot/vmlinuz-2.0.36

label=linux-novo

root=/dev/hda5

read-only

Quando terminar de alterar o /etc/lilo.conf execute o comando abaixo

para gravar estas informações na MBR do seu HD:

 

# /sbin/lilo

 

Agora é só reiniciar a máquina com o comando:

 

# reboot

 

Observe as mensagens geradas na inicialização do sistema, para ter

certeza que tudo está ocorrendo bem. Se aparecer algum erro talvez seja

necessário recompilar o kernel, até obter um resultado adequado. Se não houver

problemas edite o lilo.conf novamente, removendo a entrada da imagem antiga

deixando somente a imagem recém criada.

 

E evite criar uma imagem do kernel sobrecarregada, somente selecione

nas configurações as opções que a sua máquina for usar, assim seu sistema

terá uma boa performance.

 

 

9.4 - Na página Ano 2001 também tem um bom roteiro para compilar

um kernel novo, na seção tópicos Avançados (veja a url nas referências).

 

9.5 - No The Linux Manual (do Hugo Cisneiros, veja Referência) também

existe um guia para recompilar o kernel (veja a url nas referências).

 

 

 

9.6 - UM GUIA EM INGLÊS JÁ PARA O KERNEL 2.2.XX

 

 

Linux Source DriverLinux kernel

 

release 2.2.xxThese are the release notes for Linux version 2.2. Read

them carefully, as they tell you what this is all about, explain how to

install the kernel, and what to do if something goes wrong.

 

However, please make sure you don't ask questions which are already

answered in various files in the Documentation directory. See DOCUMENTATION

below.

 

 

WHAT IS LINUX?

 

 

Linux is a Unix clone written from scratch by Linus Torvalds with

assistance from a loosely-knit team of hackers across the Net. It aims towards

POSIX compliance.

 

It has all the features you would expect in a modern fully-fledged

Unix, including true multitasking, virtual memory, shared libraries, demand

loading, shared copy-on-write executables, proper memory management and TCP/IP

networking.

 

It is distributed under the GNU General Public License - see the

accompanying COPYING file for more details.

 

ON WHAT HARDWARE DOES IT RUN?

 

Linux was first developed for 386/486-based PCs. These days it also

runs on ARMs, DEC Alphas, SUN Sparcs, M68000 machines (like Atari and Amiga),

MIPS and PowerPC, and others.

 

DOCUMENTATION:

 

- There is a lot of documentation available both in electronic form

on the Internet and in books, both Linux-specific and pertaining to

general UNIX

 

questions. I'd recommend looking into the documentation subdirectories

on any Linux ftp site for the LDP (Linux Documentation Project) books.

This README is not meant to be documentation on the system: there are much

better sources available.

 

- There are various readme's in the kernel Documentation/ subdirectory:

these typically contain kernel-specific installation notes for some

drivers for example. See ./Documentation/00-INDEX for a list of what

is contained in each file. Please read the Changes file, as it contains

information about the problems, which may result by upgrading your

kernel.

INSTALLING the kernel:

 

- If you install the full sources, do a

 

cd /usr/src

gzip -cd linux-2.2.XX.tar.gz | tar xfv -

to get it all put in place. Replace "XX" with the version number of

the latest kernel.

 

- You can also upgrade between 2.2.xx releases by patching. Patches

are distributed in the traditional gzip and the new bzip2 format. To

install by patching, get all the newer patch files and do

 

cd /usr/src

gzip -cd patchXX.gz | patch -p0

 

or

 

cd /usr/src

bzip2 -dc patchXX.bz2 | patch -p0

 

(repeat xx for all versions bigger than the version of your current

source tree, _in_order_) and you should be ok. You may want to remove the

backup files (xxx~ or xxx.orig), and make sure that there are no failed

patches (xxx# or xxx.rej). If there are, either you or me has

 

made a mistake.

 

Alternatively, the script patch-kernel can be used to automate this

process. It determines the current kernel version and applies any patches

found.

 

cd /usr/src

linux/scripts/patch-kernel

The default directory for the kernel source is /usr/src/linux, but

can be specified as the first argument. Patches are applied from the current

directory, but an alternative directory can be specified as the second

argument.

 

- Make sure you have no stale .o files and dependencies lying around:

 

cd /usr/src/linux

make mrproper

 

You should now have the sources correctly installed.

 

 

SOFTWARE REQUIREMENTS

 

Compiling and running the 2.2.x kernels requires up-to-date versions

of various software packages. Consult ./Documentation/Changes for the

minimum version numbers required and how to get updates for these packages.

Beware that using excessively old versions of these packages can cause

indirect errors that are very difficult to track down, so don't assume that

you can just update packages when obvious problems arise during build or

operation.

 

CONFIGURING the kernel:

 

- Do a "make config" to configure the basic kernel. "make config" needs

bash to work: it will search for bash in $BASH, /bin/bash and /bin/sh

(in that order), so one of those must be correct for it to work.

 

Do not skip this step even if you are only upgrading one minor version.

New configuration options are added in each release, and odd problems

will turn up if the configuration files are not set up as expected. If you

want to carry your existing configuration to a new version with minimal

work, use "make oldconfig", which will only ask you for the answers to new

questions.

 

 

- Alternate configuration commands are:

 

"make menuconfig" Text based color menus, radiolists &amp; dialogs.

"make xconfig" X windows based configuration tool.

"make oldconfig" Default all questions based on the contents of

 

your existing ./.config file.

 

NOTES on "make config":

 

- having unnecessary drivers will make the kernel bigger, and can

under some circumstances lead to problems: probing for a nonexistent

controller card may confuse your other controllers

 

- compiling the kernel with "Processor type" set higher than 386

will result in a kernel that does NOT work on a 386. The

kernel will detect this on bootup, and give up.

- A kernel with math-emulation compiled in will still use the

coprocessor if one is present: the math emulation will just

never get used in that case. The kernel will be slightly larger,

but will work on different machines regardless of whether they

have a math coprocessor or not.

 

- the "kernel hacking" configuration details usually result in a

bigger or slower kernel (or both), and can even make the kernel

less stable by configuring some routines to actively try to

break bad code to find kernel problems (kmalloc()). Thus you

should probably answer 'n' to the questions for

 

"development", "experimental", or "debugging" features.

 

 

- Check the top Makefile for further site-dependent configuration

(default SVGA mode etc).

- Finally, do a "make dep" to set up all the dependencies correctly.

 

COMPILING the kernel:

 

- Make sure you have gcc-2.7.2 or newer available. It seems older gcc

versions can have problems compiling newer versions of Linux. This

is mainly because the older compilers can only generate "a.out"-format

executables.

 

As of Linux 2.1.0, the kernel must be compiled as na "ELF" binary.

If you upgrade your compiler, remember to get the new binutils package too

(for as/ld/nm and company).

 

Please note that you can still run a.out user programs with this kernel.

 

- Do a "make zImage" to create a compressed kernel image. If you want

to make a boot disk (without root filesystem or LILO), insert a floppy

in your A: drive, and do a "make zdisk". It is also possible to do "make

zlilo" if you have lilo installed to suit the kernel makefiles, but you may

want to check your particular lilo setup first.

 

- If your kernel is too large for "make zImage", use "make bzImage"

instead.

 

- If you configured any of the parts of the kernel as `modules', you

will have to do "make modules" followed by "make modules_install". Read

Documentation/modules.txt for more information. For example, an explanation

of how to use the modules is included there.

 

- Keep a backup kernel handy in case something goes wrong. This is

especially true for the development releases, since each new release

contains new code which has not been debugged. Make sure you keep a backup

of the modules corresponding to that kernel, as well. If you are installing

a new kernel with the same version number as your working kernel, make a

backup of your modules directory before you do a "make modules_install".

 

- In order to boot your new kernel, you'll need to copy the kernel

image (found in /usr/src/linux/arch/i386/boot/zImage after compilation) to

the place where your regular bootable kernel is found.

 

For some, this is on a floppy disk, in which case you can "cp

/usr/src/linux/arch/i386/boot/zImage /dev/fd0" to make a bootable floppy.

Please note that you can not boot a kernel by directly dumping it to

a 720k double-density 3.5" floppy. In this case, it is highly recommended

that you install LILO on your double-density boot floppy or switch to high-

density floppies.

 

If you boot Linux from the hard drive, chances are you use LILO which

uses the kernel image as specified in the file /etc/lilo.conf. The kernel

image file is usually /vmlinuz, or /zImage, or /etc/zImage.

 

To use the new kernel, save a copy of the old image and copy the new

image over the old one. Then, you MUST RERUN LILO to update the loading

map!!

If you don't, you won't be able to boot the new kernel image.

 

Reinstalling LILO is usually a matter of running /sbin/lilo. You may

wish to edit /etc/lilo.conf to specify an entry for your old kernel image

(say, /vmlinux.old) in case the new one does not work. See the LILO docs

for more information.

 

After reinstalling LILO, you should be all set. Shutdown the system,

reboot, and enjoy!

 

If you ever need to change the default root device, video mode, ramdisk

size, etc. in the kernel image, use the 'rdev' program (or alternatively

the LILO boot options when appropriate). No need to recompile the kernel

to change these parameters.

- Reboot with the new kernel and enjoy.

 

IF SOMETHING GOES WRONG:

- If you have problems that seem to be due to kernel bugs, please check

the file MAINTAINERS to see if there is a particular person associated

with the part of the kernel that you are having trouble with. If there isn't

anyone listed there, then the second best thing is to mail them to me

 

<AHREF="mailto:torvalds@transmeta.com">torvalds@transmeta.com</A>),

 

and possibly to any other relevant mailing-list or to the newsgroup.

The mailing-lists are useful especially for SCSI and NETworking problems,

as I can't test either of those personally anyway.

 

- In all bug-reports, *please* tell what kernel you are talking about,

how to duplicate the problem, and what your setup is (use your common sense).

If the problem is new, tell me so, and if the problem is old, please try

to tell me when you first noticed it.

 

- If the bug results in a message like

 

unable to handle kernel paging request at address C0000010

Oops: 0002

EIP: 0010:XXXXXXXX

eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx

esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx

ds: xxxx es: xxxx fs: xxxx gs: xxxx

Pid: xx, process nr: xx

xx xx xx xx xx xx xx xx xx xx

 

or similar kernel debugging information on your screen or in your

system log, please duplicate it *exactly*. The dump may look

incomprehensible to you, but it does contain information that may help

debugging the problem.

 

The text above the dump is also important: it tells something about

why the kernel dumped code (in the above example it's due to a bad kernel

pointer).

 

More information on making sense of the dump is in Documentation/oops-

tracing.txt

 

- You can use the "ksymoops" program to make sense of the dump. Find

the C++ sources under the scripts/ directory to avoid having to do

the dump lookup by hand:

 

 

- In debugging dumps like the above, it helps enormously if you can

look up what the EIP value means. The hex value as such doesn't help me or

anybody else very much: it will depend on your particular kernel setup. What

you should do is take the hex value from the EIP line (ignore the "0010:"),

and look it up in the kernel namelist to see which kernel function contains

the offending address.

 

 

 

To find out the kernel function name, you'll need to find the system

binary associated with the kernel that exhibited the symptom. This

is the file 'linux/vmlinux'. To extract the namelist and match it against

the EIP from the kernel crash, do:

 

nm vmlinux | sort | less

 

This will give you a list of kernel addresses sorted in ascending

order, from which it is simple to find the function that contains the

offending address. Note that the address given by the kernel debugging

messages will not necessarily match exactly with the function addresses (in

fact,that is very unlikely), so you can't just 'grep' the list: the list

will, however, give you the starting point of each kernel function, so by

looking for the function that has a starting address lower than the one you

are searching for but is followed by a function with a higher address you

will find the one you want. In fact, it may be a good idea to include a bit

of "context" in your problem report, giving a few lines around the

interesting one.

 

If you for some reason cannot do the above (you have a pre-compiled

kernel image or similar), telling me as much about your setup as possible

will help.

 

- Alternately, you can use gdb on a running kernel. (read-only; i.e.

you cannot change values or set break points.) To do this, first compile

the kernel with -g; edit arch/i386/Makefile appropriately, then do a "make

clean".

 

You'll also need to enable CONFIG_PROC_FS (via "make config").

 

After you've rebooted with the new kernel, do "gdb vmlinux /proc/kcore".

You can now use all the usual gdb commands. The command to look up

the point where your system crashed is "l *0xXXXXXXXX". (Replace the XXXes

with the EIP value.)

 

gdb'ing a non-running kernel currently fails because gdb (wrongly)

disregards the starting offset for which the kernel is compiled.

 

Copyright 1996,1997,1998

mailto:Pavel.Janik@linux.cz - Pavel Janík ml.

 

 

9.7 - DICAS SOBRE O KERNEL

 

Uma coisa útil, como já deu para perceber nos guias acima é que é altamente

recomendável recompilar o kernel do Linux após a instalação para melhor

performance do sistema. Claro também que essa tarefa só deve ser feita

quando você já tiver uma certa segurança e souber pelo menos reinstalar com

segurança o Linux.

 

10 - CONEXÃO À INTERNET

 

 

10.1 - CONEXÃO VIA SCRIPT NO RED HAT

 

Talvez também funcione no Slackware e outros (ainda não testei).

 

Verifique o arquivo '/etc/hosts' que contem o número ip e nome de domínio:

 

127.0.0.1 localhost

 

0.0.0.0 username.nomedoprovedor.com.br

 

# o numero ip e' esse mesmo (se for dinâmico);

 

Verifique o arquivo '/etc/resolv.conf':

 

domain nomedoprovedor.com.br

 

search nomedoprovedor

 

nameserver D.N.S. primário do provedor

 

# se houver dns secundário, coloque outra linha 'nameserver' com o segundo;

 

Depois, crie o arquivo '/etc/ppp/options':

connect "/usr/sbin/chat -f /etc/ppp/chat-script"

/dev/modem 38400

modem

crtscts

defaultroute

noipdefault

name username #Aqui em username, colocar o seu user name

Crie o arquivo '/etc/ppp/chat-script':

 

ABORT BUSY

"" ATDT1234567

CONNECT ""

 

Você deve saber que ATDT e' tone e ATDP e' pulse, 1234567 e' o numero do telefone do seu provedor;

 

Para finalizar, coloque no arquivo '/etc/ppp/chap-secret' e no 'pap-secret' apenas uma linha:

username * senha# Assim como está, só que com o teu user e a tua senha, é claro. # Se você não souber qual dos protocolos (pap ou chap) são usados pelo seu # provedor, faça os dois arquivos exatamente iguais. E´ bom proteger # esses arquivos, digitando no xterm: ´chmod 600 /etc/ppp/chap-secret´ e ´chmod 600 /etc/ppp/pap-secret´.

Agora, para conectar, basta digitar no xterm 'pppd' e pronto.

Ah, para desconectar (se um dia você for fazer isso :)) é só digitar:

'pppd -detach'.

 

Peguei esses scripts da página de uma colega de lista. Infelizmente não anotei o nome, mas só pelo fato de ser "uma" colega já dá quase para acertar (só vi três nas duas listas e duas apenas perguntavam, apenas esta apresentou uma resposta).

Não quero com isso dizer que as mulheres não têm capacidade de mexer com computadores, mas apenas que estão de fora.

 

 

10.2 - CONEXÃO VIA PPPSETUP NO SLACKWARE

 

1 - Executar: pppsetup e Enter;

2 - Tecle Enter nessa tela;

3 - Entre com o número do telefone do seu provedor antecedido de atdp ou atdt (ex.: atdt2770303) e Enter;

4 - Selecione a porta onde está o seu modem (cua1 = COM2) e Enter;

5 - Selecione a velocidade máxima do seu modem e Enter;

6 - CallBack - Escolha No e Enter (isso pra muitos casos);

7 - Modem Init String. Aqui você pode adicionar algo para, por exemplo ligação com fone de ramal. Para aceitar o default, tecle Enter;

8 - Entre com o nome do domínio do seu provedor (ex.: fortalnet.com.br);

9 - Entre com o DNS do provedor (ex.: 200.253.251.32) e Enter;

10- Escolha o protocolo: PAP, CHAP ou outro. Isso depende do provedor.

Comigo funciona com PAP (às vezes CHAP). Enter;

11- Entre com o seu username e Enter;

12- Entre com a sua senha de acesso e Enter;

13- Enter e pronto.

 

Para conectar: ppp-go

 

Para desconectar: ppp-off

 

 

 

 

 

 

 

 

10.3 - CONEXÃO VIA CONTROL-PANEL NO FVWM2 OU 95 (RED HAT)

 

- A primeira coisa a ser feita é verificar como está o link para o modem:

 

ls -la /dev/modem.

 

Veja se aponta para a sua porta: cua0 é COM1, cua1 é COM2 e assim por diante.

Caso não aponte para a sua porta, remova-o:

 

rm /dev/modem e crie um que realmente aponte para a sua porta:

 

ln -s /dev/ttyS1 /dev/modem (exemplo para modem na COM2). O kernel mais novo traz

informações de que não mais se deve usar os dispositivos cua e sim os ttySx, pois os primeiros estão ultrapassados.

 

Aliás, tente primeiro os passos seguintes e se não der certo, venha e crie o link, pois fiz isso algumas vezes sem criar o link (parece que esse link é criado com uma pré-configuração, talvez para COM2 e IRQ3).

 

- Se o painel de controle não aparece no seu desktop, abra um xterm e digite control-panel e enter (acho que é apenas no Red Hat se você instalou o fvwm2/95);

 

- Clique em Modem configuration e configure a porta para o seu modem;

 

- Clique em Network Configuration - Interfaces - Add - PPP - OK;

 

- Coloque o Phone Number do seu provedor - Marque Use PPP authentication (aqui deu legal) - digite seu login name - sua password e clique em

 

- Customize - Marque Allow any user to ... (permite que outros usuários conectem também) - Done

- Save

 

- Agora basta clicar em Activate para ativar a conexão e deactivate para desconectar. Existe um Utilitário muito bom para isso, aqui e:

Programas - Network - Usernet - Clicar em ppp0 para conectar, quando o quadrado ficar verde conectou. Se permanecer amarelo deu problema. Clique novamente para nova tentativa ou aguarde que ele ligará. Quando conectado, basta clicar novamente em ppp0 para desconectar.

 

Obs.: Caso dê problema e o botão do Usernet não fique verde, edite o arquivo

/etc/ppp/options e comente todas as linhas.

 

 

 

 

 

 

 

10.4 - CONEXÃO VIA KPPP DO KDE

O kppp é o utilitário do KDE para acesso à INTERNET.

 

1) Devemos acessá-lo clicando em K - Internet - Kppp;

2) Aqui apareceu a mensagem de erro:

 

kppp detectou a opção "lock" em /etc/ppp/option.

Esta opção tem que ser removida uma vez que kppp toma conta do locking de dispositivos. Clico no OK.

 

Para eliminar essa mensagem: vi /etc/ppp/options e comente a linha com lock e salve.

 

3) Então aparece a janela do Kppp:

Clicar em Configuração. Aparece então outra janela com:

 

Contas, Dispositivo, Modem, PPP e Sobre.

Em Contas - configuração da Conta clique em Nova:

 

Aparece a janela de Nova Conta com:

Ligar, IP, DNS, Gatway, Script de Login e Contabilidade

 

Em Ligar - Configuração da Ligação:

Nome da Conexão: Fortalnet (coloquei o nome do provedor)

Número do Telefone: 2770303 (fone de acesso ao provedor)

Autenticação: Baseado em Terminal (no meu caso) e PAP funcionaram

Guardar Password (se for usar Terminal desative essa opção)

Executar prog. quando obter ligação: deixei em branco (por hora)

Executar programa quando terminar ligação: (em branco)

Editar argumento do pppd (não alterei);

 

Em IP:

Não alterei nada aqui;

 

Em DNS:

Nome do Domínio: fortalnet.com.br (nome do domínio do seu provedor)

Endereço IP do DNS: 200.253.251.32 (coloque o seu) e clique em Adicionar.

Desativar servidores DNS existentes durante a Conexão (não alterei);

 

Em Gatway:

Também não alterei nada;

 

Em Script de Login:

Deve ser aqui que se coloca um script caso o tipo de Autenticação tenha

sido a baseada em Script.

 

Em Contabilidade:

Caso queira usar clicar em Ativar Contabilidade e

Clicar em Brasil e no Brasil abaixo.

 

Em Contabilidade de Volume clicar em Sem contabilidade e escolher (uma

boa escolha e bytes recebidos e enviados e clicar em OK.

Não vi muita graça nesta opção.

 

Clicar em Dispositivo:

Dispositivo Modem: aqui eu cliquei em /dev/modem e alterei para /dev/cua1

(pois o meu modem está em COM2). Caso você tenha um link simbólico

de modem para cua1 pode deixar /dev/modem

Controle de Fluxo: deixei em CRTSCTS (pois o meu modem USR faz o controle

via hard).

Terminador de Linha: deixei em CR/LF

Velocidade de Ligação: mudei para 115.200 (depende do modem).

Arquivo de Travamento do Modem: não alterei

Timeout do Modem: deixei em 0 segundos.

 

Clicar em Modem:

Quando ocupado esperar: deixei os 0 segundos

Modem reconhece linha CD (deixei desativado)

Comandos do Modem (aqui você pode alterar caso queira uma configuração

diferente (deixei como estava).

 

Perguntar ao Modem (aqui testamos o modem). Clique e veja se esta tudo

ok.

 

Terminal: aqui é para acessar um pequeno terminal. As vezes não funciona

antes de configurar.

 

Clicar acima em PPP:

Timeout do pppd: 30 Segundos (deixei como estava)

Só deixei ativos os itens seguintes: Mostrar Relógio no Título e

Desconectar se o servidor X for encerrado. Clicar em OK.

 

Pronto está configurado. É só clicar em Ligar e quando for aberto o

Terminal digite seu Login e sua senha e se demorar a aparecer aquele lixo de

caracteres tecle Enter e clique em continuar para finalizar a conexão.

 

Agora, depois de conectado é só utilizar o Kmail para enviar/receber

e-mails ou o Netscape ou outro qualquer browser.

 

 

 

 

 

10.5 - CONEXÃO VIA XISP

 

Baixe o xisp (quem usa Red Hat deve baixar, de preferência em rpm, para facilitar a vida) ou da página do Felipe Russo. Basta descompactar e executar "make install".

 

Se na instalação ele pedir algumas libs, baixe a "xforms" e instale.

 

Configuração:

 

Clique em Options

 

Vou me referir aqui apenas às opções que tive que alterar para conectar.

 

Account Information:

Add – Fortalnet (nome para o provedor)

Authentication protocol

PAP None

PAP-Secret CHAP-Secret

A escolha depende do seu provedor (o mais seguro é o CHAP, caso não consiga

experimente o PAP ou None (caso tenha que usar este, exiba o Terminal em Dialog

and Login).

 

Phone no: 277 0303 (número do telefone do seu provedor)

Account name: ribafs (seu login)

Password: sua senha

 

Dialog and Login.

Marque para exibir o Teminal, caso tenha escolhido None no item anterior.

 

Communication Options

Device /dev/ttyS1 (para modem em COM2).

Dialing method (Selecione o seu: pulso ou tone)

Flow control (depende da placa de FAX/MODEM). Deixe como está. Caso

não funcione mude para Software.

TCP/IP Options

DNS Support

Yes Primaty – 200.253.251.32 (coloque o do seu provedor).

 

Após conectar aparece o tempo de conexão na barra de título.

Teste com o Netscape ou outro programa para ver se está configurado corretamente. Caso não esteja saia alterando uma opção suspeita de cada vez e testando até conseguir.

 

Agora uma dica para permitir usá-lo como user comum. Como root:

 

- chmod go+x /usr/lib/ppp/xisp*.

 

- chmod go+x /usr/X11R6/bin/xisp.

 

10.6 - DICAS EXTRAS SOBRE CONEXÃO À INTERNET

 

10.6.1 - CONECTANDO À INTERNET COM FONE DE RAMAL

Configure a discagem para:

 

atdx0,,..2770303

 

x pode ser p(ulso) ou t(om), zero pra chamar a linha, uma vírgula para cada 3 segundos de retardo - pra dar tempo da linha ser recebida.

 

O normal é precisar de uma única virgula.

 

 

Essa foi do "Irado, furioso com tudo" para a lista Linuxabc.

 

 

10.6.2 - VOLUME DO ALTO FALANTE DURANTE A CONEXÃO

 

Deve alterar a string de inicialização do modem para ATL0 (desligado)

ou ATL1 (baixo), ou M0 ou ATM0.

 

11 - USO DE PROGRAMAS PARA A INTERNET

 

11.1 - BROWSER NETSCAPE COMMUNICATOR

 

Normalmente o Netscape Communicator já vem com as principais distribuições (no CD), por isso não abordaremos muitos detalhes sobre instalação nem sobre configuração (não há o que configurar).É realmente um browser consagrado por seus recursos e facilidade de uso. 11.1.1 - IMPORTAR ARQUIVOS (BOOKMARK E ADDRESS) DO OUTLOOK PARA O NETSCAPEInstale o Netscape Communicator para WINDOWS (de preferência da mesma versão que usa no Linux) e importe, através do Messenger dele, as mensagens contidas no Outlook Express. Ache a pasta em que o Netscape guarda os e-mails (procure por arquivos com extensão snm) e copie-os para o diretório onde o Netscape Communicator para Linux guarda as mensagens (os formatos dos arquivos são iguais).

 

10.1.2 - PREFERÊNCIAS DO NETSCAPE

 

- Edit - Preferences

- Navigator - Blanck page (para evitar que sempre ele tente se conectar ao ser aberto);

- Clicar na seta a esquerda de Navigator - Language - Portuguese/Brasil [pt-BR] e OK;

- Mail & Groups - clicar na seta a esquerda e Identify - preencher:

Your Name (seu nome completo se desejar - opcional)

EmailAddress (seu e-mail - obrigatório)

Reply (somente se o endereço para enviar for diferente do de receber)

Organization (seu trabalho - opcional)Signature File (esse é muito útil quando você sempre envia uma mensagem de despedida, um pensamento, o endereço de sua página, etc – opcional e sempre será adicionado em qualquer mail enviado ou respondendo)- Always attach Address Book Card to message (enviar um cartão de visita sofisticado e que deve ser evitado para listas de discussão). Sendo clicado, este botão abre uma opção para criar o cartão)

- Messages:

By Default, sent rich text (HTML) messages (desmarque se envia mensagens para listas de discussão, tem gente que não consegue ler essas mensagens - seus clientes de e-mail não permitem)

 

More Options:

 

When sending HTML messages to recipientes ...

Marque Always convert the message into Plain Text (preferível para listas de discussão) e OK

 

Mail Server:

Mail server user name: (seu user name)

Outgoing mail (SMTP) server: (DNS do seu provedor)

Incoming mail server: (repita o DNS do seu provedor)

More Options:

Local mail directory: (para este eu tenho uma sugestão que tem me evitado muito perder e-mails recebidos/enviados. Crie antes um diretório numa partição não linux, uma que se você reinstalar o linux e tiver que apagar tudo, como tive que fazer várias vezes, então você não perderá seus e-mails. Então clique em Choose e indique esse diretório criado ou digite-o na caixa) Marcar Check for mail every e alterar o período (caso deseje ser lembrado pelo Message se chegar novos e-mails)

 

Marque Remember my mail password (isso quando for somente você que usa e não tem segredos, deve ser útil - evita que sempre que for abrir o Message, ele te peça a senha) e OK

 

Groups Server (configure esse apenas se seu provedor tiver servidor de news)

 

Outro item interessante (você deve antes saber com seu provedor se ele tem servidor de proxy) e:

 

Advanced - Proxies :

Clique em Manual proxy configuration e View... e preencha de acordo com as informações fornecidas pelo provedor. Irá tornar mais rápido o acesso a muitas páginas.

 

As opções as quais não me referi é que eu normalmente nunca altero.

Também não quer dizer que se você souber não deva alterar.

 

 

11.2 - FTP

 

Este é um programa de FTP para a linha de comando. Muito prático e rápido.

Tem suas limitações por ser em modo texto.

 

- Rodar com: ftp ftp.netscape.com (exemplo) ou

- ftp e Enter

- open ftp.netscape.com

- cd /pub/communicator/4.xx/

Obs.: digitar bin antes de baixar

- ls netscape*

- get nome.do.arquivo

- Sair com quit

 

 

 

 

11.3 - WXFTP

 

Uma ótima ferramenta gráfica para FTP, muito simples de usar.

Ao ser clicado no Window Manager abre uma janela para se adicionar ou escolher um profile. Aqui eu criei um profile para upload para o Geocities, veja os passos:

 

Profile Name: Geocities

Host Name/Address: ftp.oocities.com

User ID: ribafs (este é meu ID no geocities), você pode (se for ocaso) também usar a opção Anonymous Password (aqui você coloca sua senha se desejar) e Save password (marcar para guardar a sua senha)

Clique abaixo em save para guardar esses dados e clique em OK para conectar.

Querendo criar outro, basta clicar em New e seguir os passos.

 

Veja que na outra tela tem ASCII, Binary e Auto. Quando estamos enviando ou recebendo arquivos de vários tipos é interessante que a opção auto seja marcada.

 

Marcar os arquivos a esquerda (pode-se usar Ctrl e Shift para selecionar vários) e clicar na seta para a direita para enviar os arquivos.

 

Marcar os arquivos a direita e clicar na seta para a esquerda para fazer o download.

 

 

 

10.4 - WGET

 

Ferramenta tipo o GetHight, mas em modo texto. Para fazer downloads de arquivos grandes ou pequenos. Ele junta os pedaços de downloads interrompidos.

 

Executar: wget /url/completa/do/arquivo

 

Continuar o download interrompido: wget -c /url/completo/do/arquivo

 

Fazendo mirror (baixando todos os arquivos de uma pagina):

 

Wget –mc http://www.pagina.para.baixar.com

 

Obs.: o arquivo será baixado no diretório de onde for executado o wget.

 

12 - DICAS GERAIS

 

12.1 DESCOMPACTAÇÃO/COMPACTAÇÃO DE ARQUIVOS NO LINUX

 

 

12.1.1 - ARQUIVOS .TAR.GZ, .TGZ E .TAR.Z:

 

tar zxpvf nome.do.zrquivo.tar.gz ou .tgz ou .tar.z

 

 

12.1.2 - ARQUIVOS .TAR:

 

tar xvf nome.do.arquivo.tar

 

 

12.1.3 - ARQUIVOS .GZ:

 

gzip -d nome.do.arquivo.gz ou

 

gunzip nome.do.arquivo.gz

 

12.1.4 - ARQUIVOS BZ2:

 

bunzip2 -d nome.do.arquivo.bz2

 

 

12.1.5 - LISTAR CONTEÚDO:

 

tar -tzvf arquivo.tar.gz ou outro

 

12.1.6 - COMPACTAÇÃO DE ARQUIVOS TAR.GZ

 

tar cvzf nomequalquer.tar.gz /arq/e/ou/dir/a/serem/empacotados

 

12.1.7 COMPACTAÇÃO DE ARQUIVOS .ZIP

 

zip -r nomequalquer.zip /arq/e/ou/dir/a/serem/empacotado

12.1.8 DESCOMPACTAR ARQUIVOS .ZIP

 

unzip –d /dir/para/onde nomequalquer.zip

 

 

12.2 - GERENCIAMENTO DE PACOTES NO RED HAT (RPMs)

 

 

O RPM é um dos utilitários mais práticos que apareceram no Linux. Originado na distribuição do Linux da Red Hat, ele tem como finalidade facilitar a instalação e a remoção de programas no sistema Linux, facilitando também a atualização desses programas.

 

Com o RPM os arquivos que compõem um determinado software são agrupados em um único pacote, contendo também todas as informações dos arquivos, como permissões, diretórios a que pertencem, além de fornecer uma breve descrição do software em questão.

 

Veja o que você pode fazer com o RPM.

 

Apresenta as informações do pacote.

rpm -i

 

Para instalar um pacote use o comando:

rpm -i nome-versao.rpm

 

Ex.: rpm -i koules-1.2-2.i386.rpm

 

Obs.: pode ser também -ivh.

 

Para removê-lo use:

rpm -e nome

 

Ex.: rpm -e koules

 

 

E para atualizá-lo para uma versão superior use:

rpm -Uvh nome-versao.rpm

 

Ex.: rpm -Uvh koules-2.0-1.i386.rpm

 

 

Para ver as informações sobre um pacote use o comando:

rpm -qpi nome-versao.rpm

 

Ex.: rpm -qpi koules-1.2-2.i386.rpm

 

 

Para ver as informações sobre um pacote já instalado use o comando:

rpm -qi nome

 

Ex.: rpm -qi koules

Instalação com conflitos

rpm --replacepkgs

 

Para ver a lista de arquivos que o pacote instala:

rpm -qpl nome-versao.rpm

 

Ex.: rpm -qpl koules-1.2-2.i386.rpm

 

 

Para ver a lista de arquivos instalados por um pacote:

rpm -ql nome

 

Ex.: rpm -ql koules

 

 

Para checar a integridade do pacote:

rpm -K --nopgp nome-versao.rpm

 

Ex.: rpm -K --nopgp koules-1.2-2.i386.rpm

 

 

Para saber quais são os pré-requisitos para a instalação de um pacote,

use:

rpm -qR nome-versao.rpm

 

Ex.: rpm -qR koules-1.2-2.i386.rpm

 

Agora se você encontrou um arquivo instalado em seu sistema e quer saber em qual pacote ele pertence digite:

rpm -qf nome.do.arquivo

 

Ex.: rpm -qf /usr/bin/koules

 

 

E para descobrir todos os arquivos relacionados a um arquivo específico, sem saber o pacote, use:

rpm -qdf nome.do.arquivo

 

Ex.: rpm -qdf /usr/bin/koules

 

 

Para listar todos os pacotes instalados em seu sistema:

rpm -qa | less

 

Se você deletou arquivos por acidente e não sabe o que deletou. Pode usar o comando abaixo para checar em todo o sistema os arquivos que estão faltando:

rpm -Va

 

 

Mesmas opções no processo de pesquisas.

rpm -V

 

Para verificar os pacotes instalados

rpm -Vf

 

 

Um comando que uso muito é quando quero saber se um determinado arquivo que preciso está em algum pacote que possuo. Então digito o seguinte:

rpm -qpl *.rpm | grep arq.ext

 

rpm -qpil *.rpm | grep -B 40 arq.ext | less

 

 

Segue então alguns exemplos interessantes:

rpm -qa | grep xephem

 

rpm -ivh *.rpm

 

rpm -qpi arq.rpm > arq.txt

 

rpm -K --nopgp *rpm

 

 

Apresenta o status dos arquivos do pacote

rpm -s

 

 

Apresenta uma lista dos arquivos de documentação.

rpm -d

 

 

Apresenta uma lista dos arquivos de configuração.

rpm -c

 

Consulta o pacote que contém o arquivo (file)

rpm -f

 

Funciona como o parâmetro -f exceto que funciona a partir do stdin.

rpm -F

 

(arquivo do pacote) consulta o pacote originado pelo (arquivo do pacote)

rpm -p

 

Funciona como o -p exceto com stdin

rpm -P

 

 

 

Apresenta a lista de arquivos relacionados com o pacote

rpm -l

 

Consulte a página manual do RPM (man rpm) para saber o que mais você

pode fazer com esse comando.

 

(Da página Red Hat Linux Tips e da Tira-Dúvidas.)

 

 

12.3 - GERENCIAMENTO DE PACOTES NO SLACKWARE

 

 

No Slackware para gerenciar pacotes use os comandos:

 

installpkg, removepkg makepkg, upgradepkg e pkgtool. São muito simples de usar.

 

 

Como usar:

 

- installpkg nome.do.pacote.tgz

- removepkg nome.do.pacote.pkg

- pkgtool

 

 

12.4 - EXECUTANDO ARQUIVOS QUE NÃO ESTÃO NO PATH

 

./nome.do.arquivo

 

 

 

12.5 - ALTERANDO O PATH

 

Para alterar o path temporariamente: PATH=$PATH:/caminho/do/arquivo

 

Para alterar de maneira permanente deve-se acrescentar ao /etc/profile,

 

por exemplo (ficará disponível para todos os usuários).

 

Para alterar apenas para um usuário editar o ~/.bash_profile do usuário.

 

 

 

12.6 - USO DO GPM

 

Ao instalar o Linux (na maioria das distribuições, lembro que na SuSE, na Red Hat e na Slackware é assim), você decide se usa ou não o GPM. E deve também (no Red Hat) concordar que ele fique sempre carregando no boot para poder usar automaticamente. Ou desabilite no boot e habilite quando precisar.

 

O GPM é um utilitário do mouse que quebra um galhão no modo texto (não funciona no X.

 

Como funciona: por exemplo, você lista os arquivos de um diretório e aparecem os nomes do ditos.

Você gostaria de editar o arquivo

 

/este/aqui/so/para/complicar/vou/fazer/arquivo.extensao

 

 

Então você digita vi e espaço e dá um duplo clique no começo do path do arquivo em cima da barra antes de este (com isso será seleciona toda a linha com o nome do arquivo), depois Clique agora com o botão direito do mouse em qualquer local (então será colada uma cópia da linha completa com o nome do arquivo à direita de vi)

 

Basta agora teclar Enter para editar o arquivo com o vi.

 

Claro que você pode também remover o arquivo, acessar o diretório e fazer o que bem entender com essa praticidade.

 

Outro uso que acho demais: editar um arquivo com o vi para copiar parte desse arquivo para outro ou criar um novo. Editar o arquivo com o vi, sem teclar em nada selecionar com o mouse o trecho que deseja copiar e clicar com o botão direito. Ele fará uma colagem no arquivo mas não se preocupe, saia com Esc, ":q!" e Enter.

 

Abra o novo arquivo com o vi, tecle em Insert, posicione o cursor do mouse onde deseja colar e clique com o botão direito do mouse. Saia com Esc, e ":wq" e Enter.

 

Outro uso: selecionar mensagens de erro que estão na tela para criar um arquivo que será anexado num e-mail para pedir ajuda de uma lista. Selecionar com o mouse o trecho da mensagem que deseja copiar, clicar com o botão direito para copiar. Ignore as mensagens de erro que aparecerão.

Então crie o arquivo com vi mensagens.erro e Enter. Tecle Insert, posicione o cursor do mouse no inicio e clique com o botão direito para colar. Adicione mais alguns comentários que desejar e tecle Esc, ":wq".

 

Lembre que quando clica-se com o botão direito o conteúdo fica na memória disponível até que você substitua por outro.

 

 

 

12.7 - DESATIVAR GPM

 

Algumas vezes o GPM pode causar problemas no mouse. Para desativá-lo use o "ntsysv" ou comente o link em /etc/rc.d/rc3.d.

 

12.8 - CONFIGURAÇÃO DE IMPRESSORA NO KDE

 

Aqui você vai em: K - Utilitários - Comandos de LaserJet e configura

à vontade.

 

 

12.9 - INSTALAÇÃO DE APLICATIVOS NO KDE

 

Depois de instalado o aplicativo você vai em: K - Sistema – Procurar Aplicações.

 

Ele criará um Grupo de Aplicativos chamado applnk com todos os aplicativos encontrados. No Kde 1.1 ele cria um grupo Aplicativos Não Kde.

 

 

 

 

 

 

 

 

12.10 - TECLAS DE ATALHO

 

VER O MENU NO LILO: tecle Tab para ver as opções do Lilo, quando do boot do Red Hat, quando aparecer Lilo:

 

No Slackware este menu é exibido no boot.

 

EXTRAR NO X WINDOW: startx

 

SAIR DO X WINDOW: Ctrl+Alt+Backspace

 

ALTERNAR ENTRE AS RESOLUÇÕES DO X: Ctrl+Alt++/- (Control+Alt+mais ou menos do teclado numérico). Se for um notebook: Ctrl+Alt+Fn++/-.

 

ACESSAR OUTROS CONSOLES: Ctrl+Alt+n (n=2 a 6). O 1 ou o no qual você acessou e o 7 são reservados para o X.

 

 

12.11 - COMANDOS DE CONFIGURAÇÃO DO RED HAT:

 

setup - abre um menu para configuração de vários dispositivos

 

sndconfig - detecção e configuração de placas de som

 

mouseconfig - configuração do mouse

 

kbdconfig - configuração do teclado

 

timeconfig - configuração das timezones

 

 

 

12.12 - FORMATAR DISQUERES E TRANSFERIR O SISTEMA (Disco de boot):

 

1) Formatar:

superformat /dev/fd0u1140

 

2) Criar sistema de arquivos:

/sbin/mke2fs /dev/fd0

 

ou

 

3) /sbin/lilo –b /dev/fd0

 

ou

 

cat /boot/vmlinuz-2.0.36-2cl > /dev/fd0 (colocar o nome completo da imagem, ver /boot)

 

ou

 

 

dd if=/boot/vmlinuz of=/dev/fd0 bs=8192

 

(Do Capitulino)

 

ou

 

dd if=/boot/vmlinuz-2.0.36-0.7 of=/dev/fd0

 

com o disquete no drive.

 

logo após esse comando ele irá criar o seu disco.

 

Agora a parte 2.. vamos colocar o lilo no seu disquete

 

Copie o /etc/lilo.conf para um diretório home (ou /root)

 

Renomeio para lilo.conf.disk e edite sua primeira linha

 

Passe-a de "boot=/dev/hda" para "boot=/dev/fd0"

 

Grave e no terminal (com o disquete no drive) digite:

 

lilo -C lilo.conf.disk

 

Pronto .. disquete de boot criado ;)

 

(Da Denis Page)

 

 

12.13 - PERSONALIZANDO O LOGIN

 

Editar /etc/rc.d/rc.local

 

12.14 - IMPRIMIR NA LINHA DE COMANDO

 

lpr nome.do.arquivo

 

12.15 - GERANDO UM ARQUIVO COM MENSAGENS DE ERRO NO STARTX:

 

Caso o startx não esteja funcionando e queira gerar um arquivo com as mensagens de erro:

 

Startx 2>& 1>startx.erro

 

12.16 - IRQS UTILIZADAS:

 

cat /proc/interrupts

 

 

12.17 - ENDEREÇOS DAS PORTAS

 

cat /proc/ioports

 

(Duas dicas do Thadeu Penna)

 

 

 

12.18 - FAZER LINUX RECONHECER MAIS DE 64 MB DE RAM:

 

Quando aparecer o prompt do Lilo, digite "linux mem=128M". Se funcionar adicione esta linha ao /etc/lilo.conf

 

(Ver /usr/src/linux/Documentation/memory.txt

 

Ou append mem=128M no lilo ou ainda adicionar essa linha ao /etc/lilo.conf

 

 

 

12.19 - EXECUTANDO SOM NA LINHA DE COMANDO:

 

cat som.au > /dev/audio

 

 

 

 

 

12.20 - MOUSE PARA CANHOTOS NO LINUX

 

A algum tempo atras, alguém perguntou como trocar os botões do mouse no X. Descobri hoje:

 

"Destro" (default)

 

xmodmap -e "pointer = 1 2 3"

 

"Canhoto"

 

xmodmap -e "pointer = 3 2 1"

 

(Do Ricardo Yassuo Igarashi)

 

 

12.21 - ELIMINANDO ALGUM PROGRAMA QUE ESTÁ NA MEMÓRIA

 

Caso você tenha executado algum programa e não esteja conseguindo fechá-lo você pode killá-lo:

digite no promt "ps ax" e verifique a lista com todos os processos em execução. Caso não consiga visualizar o programa que desejado, role a tela com Shift+PageUp e observe o número na coluna PID. Então execute:

 

"kill 212" (supondo que 213 seja o número do PID que você deseja eliminar.

 

Truques que você não pode viver sem saber.

 

Economizando digitação: Quando esta digitando comandos, você pode pressionar <TAB> isto irá completar a linha de comando para você. Exemplo: você tem que digitar gcc isto_e_um_nome_longo.c; digitando gccthi<TAB> será suficiente. Se houver ambigüidade, como outros arquivos que começam com os mesmos caracteres, será mostrado as alternativas, se não, digite o suficiente para resolver qualquer ambigüidade.

Resetando a tela: se você der um more ou cat em um arquivo binário, sua tela pode acabar cheia de lixo. Para arrumar isso, digite a seqüência de caracteres: echo CTRL-V ESC c RETURN.

 

Mensagens do kernel: de uma olhada em /var/adm/messages ou /var/log/messages como root para ver o que o kernel tem a lhe dizer, incluindo as mensagens de boot. O comando dmesg também é bastante útil.

 

13 - REFERÊNCIAS

 

1 - Página oficial do Linux:

http://www.linux.org

2 - Página da Conectiva

http://www.conectiva.com.br

3 - The Linux Manual (o manual do Linux mais badalado na INTERNET)

http://www.netdados.com.br/tlm/ (autoria de Hugo Cisneiros)

4 - Página de Linux do provedor Matrix:

Linux in Brazil: http://www.linux.trix.net/

5 - Página muito boa sobre Linux:

Ano 2001: http://ano2001.sti.com.br

6 - Um verdadeiro manancial de Respostas:

Tira-Dúvidas: http://members.xoom.com/Tiraduvida/txt.html

7 – Página sobre acentuação no Linux (doRicardo – Iga):

http://lie-br/conectiva.com.br/~iga/

8 - Minha contribuição para os iniciantes ao Linux:

http://www.oocities.org/SiliconValley/Ridge/3505/

9- Onde existem muitos programas úteis, links e FAQs:

Felipe Russo: http://members.xoom.com/linux_page

10- Outro usuário Linux que dá sua contribuição:

Red Hat Linux Tips: http://www.bestway.com.br/~madeira/

11 Slackware Sergipe (página do Fred com muita coisa sobre Slackware)

http://www.linuxstart/~fred/

12- Grande repositório de pacotes RPMs:

Rufus: http://rufus.w3.org/linux/RPM/index.html

13- Espelho brasileiro do Rufus:

http://linusp.usp.br/rpm2html/

14- Grande repositório de programas para Linux (espelho brasileiro)

Linuxberg: http://amazon.Linuxberg.com/ (da Tucows)

15- Outro excelente repositório de programas for Linux:

Linux Applications: http://www.linuxapps.com

16- Outro excelente:

Freshmeat: http://md.us.mirrors.freshmeat.net/

17- Página oficial da Red Hat:

http://www.hedhat.com

18- Página oficial da Slackware:

http://www.slackware.org

19- Página oficial da Debian:

http://www.debian.org

20- Página oficial da SuSE:

http://www.suse.com

21 Página oficial da Caldera (Open Linux):

http://www.caldera.com

22- Página oficial da Easy Linux

http://www.eit.de/de/easylinux.html

23- Página oficial do KDE:

http://www.kde.org

24- Página da Corel/Linux:

http://linux.corel.com

25- Histórico da Lista Linux-br (muita informação sobre Linux)

http://linux-br.conectiva.com.br

26- ftp://sunsite.unc.edu/pub/Linux

26- ftp://tsx-11.mit.edu/pub/linux

27- ftp://ftp.funet.fi/pub/Linux

28 -Linux Applications and Utilities Page

http://www.xnet.com/~blatura/linapps.shtml