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