Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Linux Autor Mauro Luiz Vivan Junior, Notas de estudo de Física

LINUX - LINUX

Tipologia: Notas de estudo

2010

Compartilhado em 17/05/2010

fabricio-mendes-damasceno-11
fabricio-mendes-damasceno-11 🇧🇷

4.7

(27)

79 documentos

1 / 357

Documentos relacionados


Pré-visualização parcial do texto

Baixe Linux Autor Mauro Luiz Vivan Junior e outras Notas de estudo em PDF para Física, somente na Docsity! MAMMA / postilandoecom O maior Site de apostilas da Internet Linux Autor: Mauro Luiz Vivan Junior 2 Linux ------------------- ------------------------------------------------------------------------------- Resumo ------ Este documento tem por objetivo ser uma referência ao aprendizado do usuário e um guia de consulta, operação e configuração de sistemas Linux (e outros tipos de *ix). A última versão deste guia pode ser encontrada na Página Oficial do Foca GNU/Linux (http://focalinux.cipsga.org.br). Novas versões são lançadas com uma freqüência mensal e você pode receber avisos de lançamentos preenchendo um formulário na página Web. Nota de Copyright ----------------- Copyleft (C) 1999-2003 - Gleydson Mazioli da Silva. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation License". ------------------------------------------------------------------------------- 5 6.4. LOADLIN 6.4.1. Opções do LOADLIN 6.4.2. Exemplo de inicialização com o LOADLIN 6.5. syslinux 6.5.1. Criando um disquete de inicialização com o syslinux 6.5.2. O arquivo SYSLINUX.CFG 6.5.3. Formatação dos arquivos de tela do syslinux 7. Execução de programas 7.1. Tipos de Execução de comandos/programas 7.2. Executando programas em seqüência 7.3. ps 7.4. top 7.5. Controle de execução de processos 7.5.1. Interrompendo a execução de um processo 7.5.2. Parando momentaneamente a execução de um processo 7.5.3. jobs 7.5.4. fg 7.5.5. bg 7.5.6. kill 7.5.7. killall 7.5.8. killall5 7.5.9. Sinais do Sistema 7.6. nohup 7.7. nice 7.8. fuser 7.9. tload 7.10. vmstat 7.11. pidof 7.12. pstree 7.13. Fechando um programa quando não se sabe como sair 7.14. Eliminando caracteres estranhos 8. Comandos para manipulação de diretório 8.1. ls 8.2. cd 8.3. pwd 8.4. mkdir 8.5. rmdir 9. Comandos para manipulação de Arquivos 9.1. cat 9.2. tac 9.3. rm 9.4. cp 9.5. mv 10. Comandos Diversos 10.1. clear 10.2. date 10.3. df 10.4. ln 10.5. du 10.6. find 10.7. free 10.8. grep 10.9. head 10.10. nl 10.11. more 6 10.12. less 10.13. sort 10.14. tail 10.15. time 10.16. touch 10.17. uptime 10.18. dmesg 10.19. mesg 10.20. echo 10.21. su 10.22. sync 10.23. uname 10.24. reboot 10.25. shutdown 10.26. wc 10.27. seq 10.28. chattr 10.29. lsattr 10.30. cut 10.31. cmp 10.32. dirname 10.33. diff 10.34. pr 10.35. patch 10.36. whereis 10.37. which 10.38. zforce 10.39. gzexe 10.40. znew 11. Comandos de rede 11.1. who 11.2. Telnet 11.3. finger 11.4. ftp 11.5. whoami 11.6. dnsdomainname 11.7. hostname 11.8. talk 11.9. ping 11.10. rlogin 11.11. rsh 11.12. w 11.13. traceroute 11.14. netstat 11.15. wall 12. Comandos para manipulação de contas 12.1. adduser 12.2. addgroup 12.3. passwd 12.4. newgrp 12.5. userdel 12.6. groupdel 12.7. lastlog 12.8. last 12.9. sg 12.10. Adicionando um novo grupo a um usuário 12.11. chfn 7 12.12. id 12.13. logname 12.14. users 12.15. groups 13. Permissões de acesso a arquivos e diretórios 13.1. Donos, grupos e outros usuários 13.2. Tipos de Permissões de acesso 13.3. Etapas para acesso a um arquivo/diretório 13.4. Exemplos práticos de permissões de acesso 13.4.1. Exemplo de acesso a um arquivo 13.4.2. Exemplo de acesso a um diretório 13.5. Permissões de Acesso Especiais 13.6. A conta root 13.7. chmod 13.8. chgrp 13.9. chown 13.10. Modo de permissão octal 13.11. umask 14. Redirecionamentos e Pipe 14.1. > 14.2. >> 14.3. < 14.4. << 14.5. | (pipe) 14.6. Diferença entre o "|" e o ">" 14.7. tee 15. Rede 15.1. O que é uma rede 15.2. Protocolo de Rede 15.3. Endereço IP 15.3.1. Classes de Rede IP 15.3.2. Para instalar uma máquina usando o Linux em uma rede existente 15.3.3. Endereços reservados para uso em uma rede Privada 15.4. Interface de rede 15.4.1. A interface loopback 15.4.2. Atribuindo um endereço de rede a uma interface ifconfig) 15.5. Roteamento 15.5.1. Configurando uma rota no Linux 15.6. Resolvedor de nomes (DNS) 15.6.1. O que é um nome? 15.6.2. Arquivos de configuração usados na resolução de nomes 15.6.2.1. /etc/resolv.conf 15.6.2.2. /etc/host.conf 15.6.2.3. /etc/hosts 15.6.2.4. /etc/networks 15.6.3. Executando um servidor de nomes 15.7. Serviços de Rede 15.7.1. Serviços iniciados como Daemons de rede 15.7.2. Serviços iniciados através do inetd 15.7.2.1. /etc/inetd.conf 10 22. Impressão 22.1. Portas de impressora 22.2. Imprimindo diretamente para a porta de impressora 22.3. Imprimindo via spool 22.4. Impressão em modo gráfico 22.4.1. Ghost Script 22.5. Magic Filter 22.5.1. Instalação e configuração do Magic Filter 22.5.2. Outros detalhes técnicos sobre o Magic Filter 23. Configuração do sistema 23.1. Acentuação 23.1.1. Acentuação em modo Texto 23.1.2. Acentuação em modo gráfico 23.2. Número de Cores do ambiente gráfico 23.2.1. Configurando o número de cores para quem inicia pelo prompt 23.2.2. Configurando o número de cores para quem inicia pelo XDM 23.2.3. Ajustando o alinhamento da imagem no X e outras configurações 23.2.4. Sobre o número de cores para jogos que funcionam no X 24. Executando tarefas diversas no Linux 24.1. Gravando CDs no Linux 24.1.1. Gravando CDs de dados 24.1.2. Gravando um CD de audio 24.1.3. Cópia de CD para CD 24.1.4. Gravação massiva de CDs 24.1.5. Gravação de CDs diretamente através de arquivos mp3 ou Ogg 24.1.6. Backup de dados para 1 ou mais CDs 24.1.7. Aplicações gráficas para gravação de CDs 24.1.8. Fazendo a capa de frente e verso do CD 24.2. Executando vídeos DIVX 24.2.1. Colocando legendas nos filmes 24.3. Assistindo DVDs 24.4. Convertendo músicas no formato wav para mp3 24.5. Convertendo músicas do formato mp3 para cdr 25. Compilação 25.1. O que é compilação? 25.2. Compilador 26. Manutenção do Sistema 26.1. Checagem dos sistemas de arquivos 26.1.1. fsck.ext2 26.2. reiserfsck 26.3. fsck.minix 26.4. badblocks 26.5. defrag 26.6. Verificando e marcando setores danificados em um HD 26.7. Limpando arquivos de LOGS 26.8. Recuperando partições apagadas 26.9. Tarefas automáticas de manutenção do sistema 26.10. cron 26.10.1. O formato de um arquivo crontab 26.11. at 11 27. Principais arquivos de configuração do diretório `/etc' 27.1. Diretório `/etc/alternatives' 27.2. Arquivo `/etc/default/devpts' 27.3. Arquivo `/etc/default/rcs' 27.4. Arquivo `/etc/kbd/config' 27.5. Diretório `/etc/menu-methods' 27.6. Arquivo `/etc/menu-methods/menu-translate' 27.7. Arquivo `/etc/networks' 27.8. Arquivo `/etc/network/interfaces' 27.9. Arquivo `/etc/networks/options' 27.10. Arquivo `/etc/networks/spoof-protect' 27.11. Diretório `/etc/pam.d' 27.12. Diretório `/etc/ppp' 27.13. Diretório `/etc/security' 27.14. Arquivo `/etc/security/access.conf' 27.15. Arquivo `/etc/security/limits.conf' 27.16. Arquivo `/etc/crontab' 27.17. Arquivo `/etc/fstab' 27.18. Arquivo `/etc/group' 27.19. Arquivo `/etc/gshadow' 27.20. Arquivo `/etc/host.conf' 27.21. Arquivo `/etc/hostname' 27.22. Arquivo `/etc/hosts' 27.23. Arquivo `/etc/hosts.allow' 27.24. Arquivo `/etc/hosts.deny' 27.25. Arquivo `/etc/hosts.equiv' 27.26. Arquivo `/etc/inetd.conf' 27.27. Arquivo `/etc/inittab' 27.28. Arquivo `/etc/inputrc' 27.29. Arquivo `/etc/isapnp.conf' 27.30. Arquivo `/etc/isapnp.gone' 27.31. Arquivo `/etc/issue' 27.32. Arquivo `/etc/issue.net' 27.33. Arquivo `/etc/lilo.conf' 27.34. Arquivo `/etc/login.defs' 27.35. Arquivo `/etc/modules' 27.36. Arquivo `/etc/modules.conf' 27.37. Arquivo `/etc/motd' 27.38. Arquivo `/etc/mtab' 27.39. Arquivo `/etc/networks' 27.40. Arquivo `/etc/passwd' 27.41. Arquivo `/etc/printcap' 27.42. Arquivo `/etc/protocols' 27.43. Arquivo `/etc/resolv.conf' 27.44. Arquivo `/etc/serial.conf' 27.45. Arquivo `/etc/services' 27.46. Arquivo `/etc/shadow' 27.47. Arquivo `/etc/shells' 27.48. Arquivo `/etc/syslog.conf' 27.49. Arquivo `/etc/timezone' 28. Conectando seu computador a Internet 28.1. Conectando-se a Internet 28.2. Navegando na Internet 28.3. Recebimento de E-Mails através do `fetchmail' 28.3.1. Processamento de mensagens através do procmail 12 29. X Window (ambiente gráfico) 29.1. O que é X Window? 29.2. A organização do ambiente gráfico X Window 29.3. Iniciando o X 29.4. Servidor X 30. Aplicativos para Linux 30.1. Aplicativos Básicos 30.1.1. Editores de Texto 30.1.2. Aplicativos para Escritório 30.1.3. Internet 30.1.4. Emuladores 30.1.5. Utilitários 30.1.6. Administração do Sistema 30.2. Listagem de Aplicativos para `GNU/Linux' 30.2.1. Periféricos / Gerenciamento de Hardware 30.2.2. Internet 30.2.3. Conferência de audio/vídeo via Internet/Intranet 30.2.4. Gerenciamento de WebSites / Linguagem HTML 30.2.5. Multimídia 30.2.6. Som 30.2.7. Comunicação/Fax 30.2.8. X Window 30.2.9. Editoração Gráfica/Visualizadores 30.2.10. Emuladores/Ferramentas p/ Interação com outros SO 30.2.11. Programação / Bancos de Dados / Acesso a Dados 30.2.12. Impressão 30.2.13. Texto 30.2.14. Kernel 30.2.15. Notebooks 30.2.16. Gravação de CD/DVD 30.2.17. Computação Paralela/Clusters 30.2.18. PalmTop / Palm Pilot / Computadores de Mão 30.2.19. Backup 30.2.20. Utilitários 30.2.21. Compactadores/Descompactadores/Arquivadores 30.2.22. Dispositivos X-10 (Controle de eletrodomésticos e aparelhos via PC) 30.2.23. Outros 31. Como obter ajuda no sistema 31.1. Páginas de Manual 31.2. Info Pages 31.3. Help on line 31.4. help 31.5. apropos/whatis 31.6. locate 31.7. which 31.8. Documentos HOWTO's 31.8.1. Listagem de HOWTO's 31.8.1.1. Introdução ao Sistema / Instalação / Configurações / Kernel 31.8.1.2. Adaptação do `GNU/Linux' para idiomas específicos 31.8.1.3. Discos / Sistemas de Arquivos / Desempenho 31.8.1.4. Escrita de Documentação / Editores 31.8.1.5. Hardware 31.8.1.6. Software 31.8.1.7. Plataformas não Intel (x86) 31.8.1.8. Programação / Compiladores / Banco de Dados 31.8.1.9. Computação Paralela / Clusters 31.8.1.10. Configuração de Teclado / Vídeo / Console 15 * Gerenciadores de inicialização, o que são e como funcionam e como criar um arquivo de inicialização para inicializar o `GNU/Linux' pelo disco rígido ou mais de um Sistema Operacional. * Particionamento de disco * Criação de Memória virtual no disco rígido e em arquivo. * Os materiais contidos na versão intermediário são ideais para quem já tem um conhecimento básico do sistema `GNU/Linux' mas que deseja se aprofundar neste sistema conhecendo os arquivos necessários para o funcionamento do `GNU/Linux', como modifica-los e como estas modificações afetam o funcionamento do sistema. Para melhor organização, dividi o guia em 3 versões: _Iniciante_, _Intermediário_ e _Avançado_. Sendo que a versão _Iniciante_ é voltada para o usuário que não tem `nenhuma' experiência no `GNU/Linux'. A última versão deste guia pode ser encontrada em: Página Oficial do guia Foca GNU/Linux (http://focalinux.cipsga.org.br). Caso tiver alguma sugestão, correção, crítica para a melhoria deste guia, envie um e-mail para <gleydson@cipsga.org.br>. O _Foca GNU/Linux_ é atualizado freqüentemente, por este motivo recomendo que preencha a ficha do aviso de atualizações na página web em Página Oficial do guia Foca GNU/Linux (http://focalinux.cipsga.org.br) no fim da Página principal. Após preencher a ficha do aviso de atualizações, você receberá um e-mail sobre o lançamento de novas versões do guia e o que foi modificado, desta forma você poderá decidir em copia-la caso a nova versão contenha modificações que considera importantes. Venho recebendo muitos elegios de pessoas do Brasil (e de paises de fora também) elogiando o trabalho e a qualidade da documentação. Agradeço a todos pelo apoio, tenham certeza que este trabalho é desenvolvido pensando em repassar um pouco do conhecimento que adquiri ao começar o uso do Linux. Também venho recebendo muitos e-mails de pessoas que passaram na prova LPI nível 1 e 2 após estudar usando o guia Foca GNU/Linux. Fico bastante feliz por saber disso, pois nunca tive a intenção de tornar o guia uma referência livre para estudo da LPI e hoje é usado para estudo desta difícil certificação que aborda comandos, serviços, configurações, segurança, empacotamento, criptografia, etc. 1.1. Antes de começar --------------------- Os capítulos _Introdução_ e _básico_ contém explicações teóricas sobre o computador, `GNU/Linux', etc., você pode pular este capítulos caso já conheça estas explicações ou se desejar partir para a prática equiser vê-los mais tarde, se lhe interessar. Se você já é um usuário do `DOS' e `Windows', recomendo ler Capítulo 4, `Para quem esta migrando (ou pensando em migrar) do DOS/Windows para o Linux'. Lá você vai encontrar comparações de comandos e programas ̀ DOS/Windows' e ̀ GNU/Linux'. 16 Para quem está começando, muita teoria pode atrapalhar o aprendizado, é mais produtivo ver na prática o que o computador faz e depois porque ele faz isto. Mesmo assim, recomendo ler estes capítulos pois seu conteúdo pode ser útil... Coloquei abaixo algumas dicas para um bom começo: * Recomendo que faça a leitura deste guia e pratique imediatamente o que aprendeu. Isto facilita o entendimento do programa/comando/configuração. * É preciso ter interesse em aprender, se você tiver vontade em aprender algo, você terá menos dificuldade do que em algo que não gosta e está se obrigando a aprender. * Decorar não adianta, pelo contrário, só atrapalha no aprendizado. Você precisa entender o que o comando faz, deste modo você estará também usando e desenvolvendo sua interpretação, e entenderá melhor o assunto (talvez até me de uma força para melhorar o guia ;-) * Curiosidade também é importante. Você talvez possa estar procurando um comando que mostre os arquivos que contém um certo texto, e isto fará você chegar até o comando `grep', depois você conhecerá suas opções, etc. * Não desanime vendo outras pessoas que sabem mais que você, lembre-se que ninguém nasce sabendo :-). Uma pessoa pode ter mais experiência em um assunto no sistema como compilação de programas, configuração, etc., e você pode ter mais interesse em redes. * Ninguém pode saber tudo da noite para o dia, não procure saber tudo sobre o sistema de uma só vez senão não entenderá NADA. Caso tenha dúvidas sobre o sistema, procure ler novamente a seção do guia, e caso ainda não tenha entendido procure ajuda nas página de manual (veja Seção 31.1, `Páginas de Manual'), ou nas listas de discussão (veja Seção 31.12.2, `Listas de discussão') ou me envie uma mensagem <gleydson@cipsga.org.br>. * Certamente você buscará documentos na Internet que falem sobre algum assunto que este guia ainda não explica. Muito cuidado! O `GNU/Linux' é um sistema que cresce muito rapidamente, a cada semana uma nova versão é lançada, novos recursos são adicionados, seria maravilhoso se a documentação fosse atualizada com a mesma freqüência. Infelizmente a atualização da documentação não segue o mesmo ritmo (principalmente aqui no Brasil). É comum você encontrar na Internet documentos da época quando o kernel estava na versão 2.0.20, 2.0.30, etc. Estes documentos são úteis para pessoas que usem as versões antigas do Kernel Linux, mas pode trazer problemas ou causar má impressão do `GNU/Linux' em outras pessoas. Por exemplo, você pode esbarrar pela Internet com um documento que diz que o Kernel não tem suporte aos "nomes extensos" da VFAT (Windows 95), isto é verdade para kernels anteriores ao 2.0.31, mas as versões mais novas que a 2.0.31 reconhecem sem problemas os nomes extensos da partição Windows VFAT. Uma pessoa desavisada pode ter receio de instalar o `GNU/Linux' em uma mesma máquina com Windows por causa de um documento como este. Para evitar problemas deste tipo, verifique a data de atualização do documento, se verificar que o documento está obsoleto, contacte o autor original e peça para que ele retire aquela seção na próxima versão que será lançada. 17 * O `GNU/Linux' é considerado um sistema mais difícil do que os outros, mas isto é porque ele requer que a pessoa realmente aprenda e conheça computadores e seus periféricos antes de fazer qualquer coisa (principalmente se você é um técnico em manutenção, redes, instalações, etc., e deseja oferecer suporte profissional a este sistema). Você conhecerá mais sobre computadores, redes, hardware, software, discos, saberá avaliar os problemas e a buscar a melhor solução, enfim as possibilidades de crescimento neste sistema operacional depende do conhecimento, interesse e capacidade de cada um. * A interface gráfica existe, mas os melhores recursos e flexibilidade estão na linha de comando. Você pode ter certeza que o aprendizado no `GNU/Linux' ajudará a ter sucesso e menos dificuldade em usar qualquer outro sistema operacional. * Peça ajuda a outros usuários do `GNU/Linux' quando estiver em dúvida ou não souber fazer alguma coisa no sistema. Você pode entrar em contato diretamente com outros usuários ou através de listas de discussão (veja Seção 31.12.2, `Listas de discussão'). Boa Sorte e bem vindo ao `GNU/Linux'! gleydson (<gleydson@cipsga.org.br>). 1.2. Pré-requisitos para a utilização deste guia ------------------------------------------------ É assumido que você tenha entendido a função de boa parte dos comandos que consta na versão iniciante do Foca Linux, arquivos e permissões de acesso. Em resumo, que saiba decidir quando e qual(is) comando(s) deve usar em cada situação. Caso não entenda as explicações da versão INTERMEDIÁRIO, recomendo que faça a leitura da versão INICIANTE do Foca Linux que pode ser encontrada em http://focalinux.cipsga.org.br. Este guia não cobre a instalação do sistema. Para detalhes sobre instalação, consulte a documentação que acompanha sua distribuição `GNU/Linux'. 1.3. O Linux ------------ O `Linux' é um sistema operacional criado em 1991 por _Linus Torvalds_ na universidade de Helsinki na Finlândia. É um sistema Operacional de código aberto distribuído gratuitamente pela Internet. Seu código fonte é liberado como _Free Software_ (software livre) o aviso de copyright do kernel feito por Linus descreve detalhadamente isto e mesmo ele não pode fechar o sistema para que seja usado apenas comercialmente. Isto quer dizer que você não precisa pagar nada para usar o Linux, e não é crime fazer cópias para instalar em outros computadores, nós inclusive incentivamos você a fazer isto. Ser um sistema de código aberto pode explicar a performance, estabilidade e velocidade em que novos recursos são adicionados ao sistema. 20 * Suporte a dispositivos USB. * Vários tipos de firewalls de alta qualidade e com grande poder de segurança de graça. * Roteamento estático e dinâmico de pacotes. * Ponte entre Redes. * Proxy Tradicional e Transparente. * Possui recursos para atender a mais de um endereço IP na mesma placa de rede, sendo muito útil para situações de manutenção em servidores de redes ou para a emulação de "mais computadores" virtualmente. O servidor WEB e FTP podem estar localizados no mesmo computador, mas o usuário que se conecta tem a impressão que a rede possui servidores diferentes. * O sistema de arquivos usado pelo `GNU/Linux' (`Ext2') organiza os arquivos de forma inteligente evitando a fragmentação e fazendo-o um poderoso sistema para aplicações multi-usuárias exigentes e gravações intensivas. * Permite a montagem de um servidor Web, E-mail, News, etc. com um baixo custo e alta performance. O melhor servidor Web do mercado, o `Apache', é distribuído gratuitamente junto com o Linux. O mesmo acontece com o `Sendmail'. * Por ser um sistema operacional de código aberto, você pode ver o que o código fonte (o que foi digitado pelo programador) faz e adapta-lo as suas necessidades ou de sua empresa. Esta característica é uma segurança a mais para empresas sérias e outros que não querem ter seus dados roubados (você não sabe o que um sistema sem código fonte faz na realidade enquanto esta processando o programa). * Suporte a diversos dispositivos e periféricos disponíveis no mercado, tanto os novos como obsoletos. * Pode ser executado em 10 arquiteturas diferentes (Intel, Macintosh, Alpha, Arm, etc.). * Consultores técnicos especializados no suporte ao sistema espalhados por todo o mundo. * Entre muitas outras características que você descobrirá durante o uso do sistema. TODOS OS ÍTENS DESCRITOS ACIMA SÃO VERDADEIROS E TESTADOS PARA QUE TIVESSE PLENA CERTEZA DE SEU FUNCIONAMENTO. 1.4. Software Livre ------------------- (tradução do texto `Linux e o Sistema GNU' de `Richard Stallman' obtido no site do CIPSGA: http://www.cipsga.org.br). O projeto _GNU_ começou há 12 anos atrás com o objetivo de desenvolver um sistema operacional Unix-like totalmente livre. `Livre' se refere à liberdade, e não ao preço; significa que você está livre para executar, distribuir, estudar, mudar e melhorar o software. Um sistema Unix-like consiste de muitos programas diferentes. Nós achamos alguns componentes já disponíveis como softwares livres -- por exemplo, `X Window' e `TeX'. Obtemos outros componentes ajudando a convencer seus desenvolvedores a tornarem eles livres -- por exemplo, o Berkeley network utilities. Outros componentes nós escrevemos especificamente para o GNU -- por exemplo, `GNU Emacs', o compilador `GNU C', o `GNU C library', `Bash' e `Ghostscript'. Os componentes desta última categoria são "software GNU". O sistema GNU consiste de todas as três categorias reunidas. 21 O projeto GNU não é somente desenvolvimento e distribuição de alguns softwares livres úteis. O coração do projeto GNU é uma idéia: que software deve ser _livre_, e que a liberdade do usuário vale a pena ser defendida. Se as pessoas têm liberdade mas não a apreciam conscientemente, não irão mantê-la por muito tempo. Se queremos que a liberdade dure, precisamos chamar a atenção das pessoas para a liberdade que elas têm em programas livres. O método do projeto GNU é que programas livres e a idéia da liberdade dos usuários ajudam-se mutuamente. Nós desenvolvemos software GNU, e conforme as pessoas encontrem programas GNU ou o sistema GNU e comecem a usá-los, elas também pensam sobre a filosofia GNU. O software mostra que a idéia funciona na prática. Algumas destas pessoas acabam concordando com a idéia, e então escrevem mais programas livres. Então, o software carrega a idéia, dissemina a idéia e cresce da idéia. Em 1992, nós encontramos ou criamos todos os componentes principais do sistema exceto o kernel, que nós estávamos escrevendo. (Este kernel consiste do microkernel Mach mais o GNU HURD. Atualmente ele está funcionando, mas não está preparado para os usuários. Uma versão alfa deverá estar pronta em breve.) Então o kernel do Linux tornou-se disponível. Linux é um kernel livre escrito por Linus Torvalds compatível com o Unix. Ele não foi escrito para o projeto GNU, mas o Linux e o quase completo sistema GNU fizeram uma combinação útil. Esta combinação disponibilizou todos os principais componentes de um sistema operacional compatível com o Unix, e, com algum trabalho, as pessoas o tornaram um sistema funcional. Foi um sistema GNU variante, baseado no kernel do `Linux'. Ironicamente, a popularidade destes sistemas desmerece nosso método de comunicar a idéia GNU para as pessoas que usam GNU. Estes sistemas são praticamente iguais ao sistema GNU -- a principal diferença é a escolha do kernel. Porém as pessoas normalmente os chamam de "sistemas Linux (Linux systems)". A primeira impressão que se tem é a de que um "sistema Linux" soa como algo completamente diferente de "sistema GNU", e é isto que a maioria dos usuários pensam que acontece. A maioria das introduções para o "sistema Linux" reconhece o papel desempenhado pelos componentes de software GNU. Mas elas não dizem que o sistema como um todo é uma variante do sistema GNU que o projeto GNU vem compondo por uma década. Elas não dizem que o objetivo de um sistema Unix-like livre como este veio do projeto GNU. Daí a maioria dos usuários não saber estas coisas. Como os seres humanos tendem a corrigir as suas primeiras impressões menos do que as informações subseqüentes tentam dizer-lhes, estes usuários que depois aprendem sobre a relação entre estes sistemas e o projeto GNU ainda geralmente o subestima. Isto faz com que muitos usuários se identifiquem como uma comunidade separada de "usuários de Linux", distinta da comunidade de usuários GNU. Eles usam todos os softwares GNU; de fato, eles usam quase todo o sistema GNU; mas eles não pensam neles como usuários GNU, e freqüentemente não pensam que a filosofia GNU está relacionada a eles. 22 Isto leva a outros problemas também -- mesmo dificultando cooperação com a manutenção de programas. Normalmente quando usuários mudam um programa GNU para fazer ele funcionar melhor em um sistema específico, eles mandam a mudança para o mantenedor do programa; então eles trabalham com o mantenedor explicando a mudança, perguntando por ela, e às vezes reescrevendo-a para manter a coerência e mantenebilidade do pacote, para ter o patch instalado. Mas as pessoas que pensam nelas como "usuários Linux" tendem a lançar uma versão "Linux-only" do programa GNU, e consideram o trabalho terminado. Nós queremos cada e todos os programas GNU que funcionem "out of the box" em sistemas baseados em Linux; mas se os usuários não ajudarem, este objetivo se torna muito mais difícil de atingir. Como deve o projeto GNU lidar com este problema? O que nós devemos fazer agora para disseminar a idéia de que a liberdade para os usuários de computador é importante? Nós devemos continuar a falar sobre a liberdade de compartilhar e modificar software -- e ensinar outros usuários o valor destas liberdades. Se nós nos beneficiamos por ter um sistema operacional livre, faz sentido para nós pensar em preservar estas liberdades por um longo tempo. Se nós nos beneficiamos por ter uma variedade de software livres, faz sentido pensar sobre encorajar outras pessoas a escrever mais software livre, em vez de software proprietário. Nós não devemos aceitar a idéia de duas comunidades separadas para GNU e Linux. Ao contrário, devemos disseminar o entendimento de que "sistemas Linux" são variantes do sistema GNU, e que os usuários destes sistemas são tanto usuários GNU como usuários Linux (usuários do kernel do Linux). Usuários que têm conhecimento disto irão naturalmente dar uma olhada na filosofia GNU que fez estes sistemas existirem. Eu escrevi este artigo como um meio de fazer isto. Outra maneira é usar os termos "sistema GNU baseado em Linux (Linux-based GNU system)" ou "sistema GNU/Linux (GNU/Linux system)", em vez de "sistema Linux", quando você escreve sobre ou menciona este sistema. ------------------------------------------------------------------------------- 25 * `{padrões}' - Expande e gera strings para pesquisa de padrões de um arquivo/diretório. * `X{ab,01}' - Faz referência a seqüencia de caracteres `Xab' ou ̀ X01' * `X{a-z,10}' Faz referencia a seqüencia de caracteres X`a-z' e ̀ X10'. O que diferencia este método de expansão dos demais é que a existência do arquivo/diretório é opcional para geração do resultado. Isto é útil para a criação de diretórios. Lembrando que os 4 tipos de curingas ("*", "?", "[]", "{}") podem ser usados juntos. Para entender melhor vamos a prática: Vamos dizer que tenha 5 arquivo no diretório `/usr/teste': `teste1.txt, teste2.txt, teste3.txt, teste4.new, teste5.new'. Caso deseje listar _todos_ os arquivos do diretório `/usr/teste' você pode usar o coringa "*" para especificar todos os arquivos do diretório: `cd /usr/teste' e `ls *' ou `ls /usr/teste/*'. Não tem muito sentido usar o comando `ls' com "*" porque todos os arquivos serão listados se o `ls' for usado sem nenhum Coringa. Agora para listar todos os arquivos `teste1.txt, teste2.txt, teste3.txt' com excessão de `teste4.new', `teste5.new', podemos usar inicialmente 3 métodos: 1. Usando o comando `ls *.txt' que pega todos os arquivos que começam com qualquer nome e terminam com `.txt'. 2. Usando o comando `ls teste?.txt', que pega todos os arquivos que começam com o nome `teste', tenham qualquer caracter no lugar do coringa `?' e terminem com `.txt'. Com o exemplo acima `teste*.txt' também faria a mesma coisa, mas se também tivéssemos um arquivo chamado `teste10.txt' este também seria listado. 3. Usando o comando `ls teste[1-3].txt', que pega todos os arquivos que começam com o nome `teste', tenham qualquer caracter entre o número 1-3 no lugar da 6a letra e terminem com `.txt'. Neste caso se obtém uma filtragem mais exata, pois o coringa _?_ especifica qualquer caracter naquela posição e [] especifica números, letras ou intervalo que será usado. Agora para listar somente `teste4.new' e `teste5.new' podemos usar os seguintes métodos: 1. `ls *.new' que lista todos os arquivos que terminam com `.new' 2. `ls teste?.new' que lista todos os arquivos que começam com `teste', contenham qualquer caracter na posição do coringa _?_ e terminem com `.new'. 3. `ls teste[4,5].*' que lista todos os arquivos que começam com `teste' contenham números de 4 e 5 naquela posição e terminem com qualquer extensão. Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de cada um. O que pretendi fazer aqui foi mostrar como especificar mais de um arquivo de uma só vez. O uso de curingas será útil ao copiar arquivos, apagar, mover, renomear, e nas mais diversas partes do sistema. Alias esta é uma característica do `GNU/Linux': permitir que a mesma coisa possa ser feita com liberdade de várias maneiras diferentes. ------------------------------------------------------------------------------- 26 3. Hardware ----------- Hardware é tudo que diz respeito a parte física do computador. Nesta seção serão abordados assuntos relacionados com a configuração de hardwares, escolha de bons hardwares, dispositivos for Windows, etc. 3.1. Placa de expansão ---------------------- É um circuito eletrônico encaixado na placa mãe que tem por objetivo adicionar novas funcionalidades ao computador. Esta placa pode ser uma: * `placa de som' - para fazer o computador emitir sons, músicas, ligar um joystick, etc. * `fax-modem' - para enviar/receber fax, conectar-se a internet, BBS, acesso remoto, bina, etc. * `rede' - para permitir a comunicação com outros computadores em uma rede interna * `controladora de periféricos' - Para ligar discos rígidos, unidades de disquete, impressora, mouse, joystick, etc. * `SCSI' - Para ligar unidades de disco rígidos e periféricos de alto desempenho. * `Controladora de Scanner' - Para ligar um Scanner externo ao micro computador. O encaixe da placa mãe que recebe as placas de expansão são chamados de _Slots_. 3.2. Nomes de dispositivos -------------------------- Seria terrível se ao configurar CADA programa que utilize o mouse ou o modem precisássemos nos se referir a ele pela IRQ, I/O, etc... para evitar isso são usados os _nomes de dispositivos_. Os _nomes de dispositivos_ no sistema `GNU/Linux' são acessados através do diretório `/dev'. Após configurar corretamente o modem, com sua porta I/O 0x2F8 e IRQ 3, ele é identificado automaticamente por `/dev/ttyS1' (equivalente a `COM2' no `DOS'). Daqui para frente basta se referir a `/dev/ttyS1' para fazer alguma coisa com o modem. Você também pode fazer um link de `/dev/ttyS1' para um arquivo chamado `/dev/modem' usando: `ln -s /dev/ttyS1 /dev/modem', faça a configuração dos seus programas usando `/dev/modem' ao invés de `/dev/ttyS1' e se precisar reconfigurar o seu modem e a porta serial mudar para `/dev/ttyS3', será necessário somente apagar o link `/dev/modem' antigo e criar um novo apontando para a porta serial `/dev/ttyS0'. 27 Não será necessário reconfigurar os programas que usam o modem pois eles estão usando `/dev/modem' que está apontando para a localização correta. Isto é muito útil para um bom gerenciamento do sistema. Abaixo uma tabela com o nome do dispositivo no `GNU/Linux', portas I/O, IRQ, DMA e nome do dispositivo no `DOS' (os nomes de dispositivos estão localizados no diretório `/dev'): Dispos. Dispos. Linux DOS IRQ DMA I/O ttyS0 COM1 4 - 0x3F8 ttyS1 COM2 3 - 0x2F8 ttyS2 COM3 4 - 0x3E8 ttyS3 COM4 3 - 0x2E8 lp0 LPT1 7 3(ECP) 0x378 lp1 LPT2 5 3(ECP) 0x278 /dev/hda1 C: 14 - 0x1F0,0x3F6 /dev/hda2 D: * 14 - 0x1F0,0x3F6 /dev/hdb1 D: * 15 - 0x170,0x376 * A designação de letras de unidade do `DOS' não é padrão como no `GNU/Linux' e depende da existência de outras unidades físicas/lógicas no computador. 3.3. Configuração de Hardware ----------------------------- A configuração consiste em ajustar as opções de funcionamento dos dispositivos (periféricos) para comunicação com a placa mãe. Um sistema bem configurado consiste em cada dispositivo funcionando com suas portas I/O, IRQ, DMA bem definidas, não existindo conflitos com outros dispositivos. Isto também permitirá a adição de novos dispositivos ao sistema sem problemas. É importante conhecer bem a configuração dos dispositivos do sistema para saber identificar e corrigir possíveis problemas de conflitos e o que deve ser modificado, caso seja necessário. Os parâmetros usados para configurar dispositivos de hardware são a _IRQ_, _DMA_ e _I/O_. Nem todo dispositivo usam estes três parâmetros, alguns apenas a _I/O_ e _IRQ_, outros apenas a _I/O_, etc. 3.3.1. IRQ - Requisição de Interrupção -------------------------------------- Existem dois tipos básicos de interrupções: as usadas por dispositivos (para a comunicação com a placa mãe) e programas (para obter a atenção do processador). As _interrupções de software_ são mais usadas por programas, incluindo o sistema operacional e _interrupções de hardware_ mais usado por periféricos. Daqui para frente será explicado somente detalhes sobre interrupções de hardware. Os antigos computadores 8086/8088 (XT) usavam somente `8' interrupções de hardware operando a 8 bits. Com o surgimento do AT foram incluídas 8 novas interrupções, operando a 16 bits. Os computadores 286 e superiores tem `16' interrupções de hardware numeradas de 0 a 15. 30 Os dados movidos usando a DMA _não_ são movidos através do controlador de DMA. Isto oferece uma limitação porque a DMA somente podem mover dados entre os dispositivos (portas I/O) e a memória. Não é possível mover dados entre as portas ou entre a memória. Existem dois controladores de DMA nos computadores AT e superiores. Ao contrário do que acontece com os dois controladores de IRQ, o primeiro controlador é ligado ao segundo e não o segundo ao primeiro. Os canais de DMA altos (5 ao 7) somente podem ser acessados por dispositivos de 16 bits (aqueles que utilizam a segunda parte do slot AT). Como resultado temos 8 canais de DMA, de 0 a 7, sendo que a DMA 4 é usada como ligação entre eles. Os canais de DMA em uso no sistema podem ser visualizados com `cat /proc/dma'. Abaixo uma listagem de uso mais comum dos canais de DMA. DMA Barram. Uso 0 - Usada pelo circuito de refresh da memória DRAM 1 8/16 bits Normalmente usado por placas de som (canal 8 bits), porta paralela ECP, adaptadoras SCSI, placas de rede ou controladora de scanner. 2 8/16 bits Normalmente usado pela controladora de disquetes ou controladoras de tapes. 3 8/6 bits Usado pela porta paralela ECP, placa de som, controladoras de tapes, controladoras SCSI ou controladora de scanner antiga. 4 - Usada como ponte para a outra controladora de DMA (0-3) 5 16 bits Normalmente usada pela placa de som (canal 16 bits), placas controladoras SCSI, placas de rede ou controladora de scanner. 6 16 bits Placa de som (canal 16 bits), controladora de scanner ou placa de rede. 7 16 bits Placa de som (canal 16 bits), controladora de scanner ou placa de rede. Somente dispositivos ISA e derivados dele, como o EISA e VESA, usam os canais de DMA padrão. Os atuais dispositivos de alta taxa de transferência (normalmente PCI) possuem seu próprio controlador de DMA embutido, muito mais rápido do que a DMA padrão. Este controlador de DMA é chamado de _Bus Mastering_ e muito usado nos discos rígidos atuais e pode atingir taxas de 33,3MB/s (no modo 2) e 66MB/s (no modo 4 - requer um cabo IDE com aterramento para evitar interferências de ruídos externos). 3.3.2.1. Conflitos de DMA ------------------------- Um canal de DMA não pode ser compartilhado entre dispositivos. Ainda é possível configurar dois dispositivos para usarem um mesmo canal de DMA, desde que ele não seja usado ao mesmo tempo. Isto acontece com Scanners paralelos que compartilham a mesma porta paralela com a impressora. Se você for uma pessoa que explora os recursos de multitarefa de seu Linux e seu desempenho, evite estes tipos de dispositivos, prefira aqueles que utilizam seus próprios recursos. Quando ocorre um conflito de DMA, os dados podem ser misturados e ocorrerem coisas estranhas até o travamento total do sistema. Este tipo de conflito é difícil de se diagnosticar, a não ser que o técnico seja experiente o bastante e tenha desconfiado do que o problema se trata... 31 3.3.3. I/O - Porta de Entrada/Saída ----------------------------------- Cada dispositivo possui um endereço de porta. O endereço é uma localização da memória usada pelo computador para enviar dados ao dispositivo e onde o dispositivo envia dados ao computador. Ao contrários da IRQ e DMA, o dispositivo pode usar mais de uma porta de Entrada/Saída ou uma faixa de endereços. Por exemplo, uma placa de som padrão usa as portas 0x220, 0x330 e 0x388, respectivamente `audio digital', `midi' e `opl3'. As placas de rede normalmente transferem grandes quantidades de dados, assim ocupam uma faixa de endereços. Minha NE2000, por exemplo, ocupa a faixa de endereços 0x260 a 0x27F (0x260-0x27F). O tamanho da faixa de endereços varia de acordo com o tipo de dispositivo. Os endereços de _I/O_ em uso no sistema podem ser visualizados com o comando `cat /proc/ioports'. Endereços das portas de entrada/saída não podem ser compartilhados 3.4. Hardwares configuráveis por jumpers, dip-switches, jumperless e Plug-and-Play. -------------------------------------------------------------------------------- 3.4.1. Jumpers -------------- Hardwares configuráveis por _jumpers_ (pinos metálicos protegidos por uma capa plástica) tem sua configuração alterada através da colocação, retirada ou mudança de posição. Hardwares configuráveis por jumpers são os preferidos por técnicos de informática muito experientes. Estes hardwares possuem a característica de somente terem seus parâmetros modificados através da mudança da posição dos jumpers da placa, desta forma se obtém uma configuração fixa (não podendo ser modificada por qualquer tipo de programa) e o dispositivo estará sempre pronto para ser ativado após a inicialização de qualquer sistema operacional. O único inconveniente é a necessidade de se retirar a placa do computador para se ter acesso aos jumpers de configuração, a não ser que estejam manualmente acessíveis. Alguns hardwares configuráveis através de jumpers podem também funcionar como Plug-and-Play, através de um ajuste da posição dos jumpers para Plug-and-Play. Normalmente as placas controladoras SIDE, rede, bons modelos de fax-modens, placas de som, SCSI, etc., são configuradas por jumpers e possuem um mapa de configuração gravado em seu circuito impresso que explica as posições de como os jumpers devem ser posicionados para operar na configuração desejada. Normalmente é possível escolher uma entre vários tipos de configuração, mas é recomendado optar por valores padrões (para detalhes veja Seção 3.3.1, `IRQ – Requisição de Interrupção', Seção 3.3.2, `DMA - Acesso Direto a Memória' e Seção 3.3.3, `I/O - Porta de Entrada/Saída'). 32 As disposição dos jumpers são normalmente definidas em _fechado/aberto_ e _multi-posição_. Na disposição _fechado/aberto_, o jumper pode ou não ser colocado, definindo a configuração do dispositivo: ::|:: Esta disposição é facilmente encontrada na seleção de IRQ e I/O em placas de fax-modem. Na disposição _multi-posição_, os pinos de encaixe são numerados de 1 a 3 (ou 1 a 4, 1 a 5, etc) e os pinos podem ou não ser colocados na placa e a posição que são colocados também influencia os valores escolhidos para o funcionamento do dispositivo (a posição 1-2 especificam um valor enquanto 2-3 especificam outro). A associação entre a posição dos jumpers e a configuração desejada é feita consultando o mapa desenhado no circuito impresso da placa ou o manual de instruções da placa. A configuração de jumper através de multi-posição é normalmente usada em placas mãe para definir a _freqüência de operação do barramento_, a _freqüência de multiplicação_ ou o _tipo do processador_. Se não possuir o mapa de configuração de sua placa e/ou o manual de instruções, será necessário fazer um mapeamento manual da placa, mas para isto você precisará conhecer detalhadamente a configuração de portas I/O, DMA, IRQ usadas na máquina que será usada e anotar as diferenças obtidas através da modificação da pinagem do dispositivo. Isto não é fácil, mas técnicos de informática experientes conhecerão as `armadilhas' encontradas pelo mapeamento manual de placas e farão o esquema de configuração completo do dispositivo, obtendo um excelente manual de instruções. Nesta hora a experiência conta mais que o uso de programas de diagnóstico. Outra característica de hardwares configurados através de jumpers é que raramente apresentam problemas de funcionamento, a não ser que seus parâmetros como IRQ, DMA, ou I/O estejam em conflitos com outro dispositivo, mas isso não é culpa do fabricante e nem mesmo do dispositivo... 3.4.2. Dip-Switches ------------------- É a mesma coisa que os hardwares configuráveis por jumpers exceto que são usados _dip-switches_ no lugar de jumpers. O _dip-switches_ é um conjunto de chaves numeradas que podem ser colocadas para cima ou para baixo (como um disjuntor ou vários interruptores _LIGA/DESLIGA_ colocados um ao lado do outro) para se modificar a configuração do dispositivo. Normalmente as chaves estão acessíveis na parte metálica da placa (onde os hardwares são conectados) para permitir a fácil mudança de configuração sem retirar a placa. É ainda comum encontrar isto em algumas placas de fax-modem. 35 # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0220 # Maximum IO base address 0x0280 # IO base alignment 32 bytes # Number of IO addresses required: 16 (IO 0 (SIZE 16) (BASE 0x0220)) # Apenas descomentamos a linha. # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0300 # Maximum IO base address 0x0330 # IO base alignment 48 bytes # Number of IO addresses required: 2 (IO 1 (SIZE 2) (BASE 0x0330)) # O valor padrão é 0x0300 para a porta MIDI, mas nós desejamos usar o # valor 0x0330. Descomentamos a linha e alteramos o valor da I/O. # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0388 # Maximum IO base address 0x0388 # IO base alignment 1 bytes # Number of IO addresses required: 4 (IO 2 (SIZE 4) (BASE 0x0388)) # Apenas descomentamos a linha. 0x0388 é um valor padrão para OPL # Fim de funções dependentes (NAME "CTL0028/268565341[0]{Audio }") (ACT Y) #Descomentamos para ativar este bloco de configuração acima )) ######################################## # Logical device id CTL2011 # # Descomente os valores desejados abaixo, selecionando a configuração requerida. # Note que o valor padrão equivale ao primeiro parâmetro disponível (Minimum) # "(CONFIGURE" inicia um bloco de configuração e finaliza com "(ACT Y)" # Para ativar as configurações selecionadas, basta descomentar a linha # "#(ACT Y)" no final do bloco de configuração. (CONFIGURE CTL0028/268565341 (LD 1 # Compatible device id PNP0600 # ANSI string -->IDE<-- # Pela string acima sabemos que esta é a configuração da IDE embutida na SB # Hora de múltiplas escolhas, escolha apenas uma! # Inicia funções dependentes: Prioridade Preferida # IRQ 10. (INT 0 (IRQ 10 (MODE +E))) # Descomentamos e aceitamos o valor acima, pois não entra em conflito com # nenhum outro dispositivo do sistema. # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0168 # Maximum IO base address 0x0168 (IO 0 (SIZE 8) (BASE 0x0168)) # Descomentamos e aceitamos o valor acima, pois não entra em conflito com # nenhum outro dispositivo do sistema. 36 # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x036e # Maximum IO base address 0x036e # IO base alignment 1 bytes # Number of IO addresses required: 2 (IO 1 (SIZE 2) (BASE 0x036e)) # Descomentamos e aceitamos o valor acima, pois não entra em conflito com # nenhum outro dispositivo do sistema. # End dependent functions (NAME "CTL0028/268565341[1]{IDE }") (ACT Y) # Descomentando esta linha, a placa IDE da Sound Blaster passará a # funcionar como IDE quartenária (de acordo com os recursos passados))) ####################################### # Logical device id CTL7001 # # Descomente os valores desejados abaixo, selecionando a configuração requerida. # Note que o valor padrão equivale ao primeiro parâmetro disponível (Minimum) # "(CONFIGURE" inicia um bloco de configuração e finaliza com "(ACT Y)" # Para ativar as configurações selecionadas, basta descomentar a linha # "#(ACT Y)" no final do bloco de configuração. (CONFIGURE CTL0028/268565341 (LD 3 # Compatible device id PNPb02f # ANSI string -->Game<-- # Pela string acima sabemos que é a Entrada para Joystick # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0200 # Maximum IO base address 0x0200 # IO base alignment 1 bytes # Number of IO addresses required: 8 (IO 0 (SIZE 8) (BASE 0x0200)) (NAME "CTL0028/268565341[3]{Jogo }") (ACT Y) # Sem muitos comentários... descomentamos a linha IO acima e # ativamos a configuração (descomentando (ACT Y)). A diferença # é que especificamos o nome GAME para o recurso através da # linha (NAME "CTL0028/268565341[3]{Jogo }") # Este nome será mostrado quando o Joystick for ativado )) # Returns all cards to the 'Wait for Key' state WAITFORKEY) Note ainda que o `isapnp.conf' gerado através do `pnpdump' contém vários tipos de prioridades de configuração para o mesmo bloco de configuração e a prioridade que usamos acima foi ̀ priority acceptable' para o bloco de audio da Sound Blaster e ̀ priority preferred' para a porta IDE e Joystick. Os tipos de prioridades disponíveis são: * `priority preferred' - Configuração preferida para o funcionamento do hardware. É a recomendada pelo fabricante do hardware e também recomendável se você não tem muita experiência na configuração de hardwares, pois lista somente uma configuração por recurso. Se a placa entrar em conflito com outras placas usando `priority preferred', tente a `priority acceptable'. 37 * `priority acceptable' - Lista todas as configurações aceitas pelo seu hardware. Ela é minha opção preferida, pois permite analisar dinamicamente todas as configurações permitidas pelo hardware e escolher qual é a mais adequada para funcionar sem problemas no sistema. * `priority functional' - Pode conter 1 ou mais blocos de `prioriade funcional' por hardware. Note que alguns recursos do hardware podem não estar disponível neste tipo de prioridade. É útil para uso em casos de conflito, quando o hardware pode ser colocado em funcionamento de forma alternativa ou parcial. Após a gravação do arquivo `/etc/isapnp.conf', basta você digitar `isapnp /etc/isapnp.conf' para ativar a configuração dos dispositivos listados com as configurações que você escolheu. Se o `isapnp' lhe mostrar mensagens de conflito ou qualquer outro problema, verifique as configurações do hardware e modifique, se necessário. Depois execute novamente o `/etc/isapnp.conf'. Para detalhes sobre outros parâmetros não explicados aqui, veja a página de manual do `isapnp.conf'. A maioria das distribuições `GNU/Linux' configura os dispositivos Plug-and-Play existentes neste arquivo automaticamente na inicialização (como é o caso da `Debian' e a `Red Hat'). Se este não for o seu caso, coloque a linha `isapnp /etc/isapnp.conf' em um dos scripts de inicialização de sua distribuição. 3.5. Listando as placas e outros hardwares em um computador ----------------------------------------------------------- Administradores e técnicos ao configurar uma máquina precisarão saber quais os hardwares ela possui, periféricos e até mesmo a revisão de dispositivos e clock para configurar as coisas e ver a necessidade de atualizações de dispositivos atuais. Dispositivos PCI/AMR/CNR podem ser listados executando o comando `cat /proc/pci'. Outra forma de listar tais dispositivos é usando o `lspci', se você precisa de mais detalhes como o mapeamento de memória, use `lspci -vv'. O mapeamento de memória de dispositivos podem ser mostrados com o comando `cat /proc/ioports', ou usando o comando `lsdev'. O barramento USB e dispositivos conectados a ele podem ser listados com o comando `lsusb' ou com `cat /proc/bus/usb/devices'. Hardwares disponíveis na máquina, como placa mãe, clock multiplicador, discos, placas diversas, versões e números seriais de dispositivos podem ser mostrados através do comando `lshw'. Use `lshw -html' para produzir a listagem em formato HTML, bem interessante para relatórios :-) 40 No inicio da era do PC/XT todos as placas eram embutidas na placa mãe (na época eram somente a placa de vídeo e controladora). Com o surgimento do padrão AT, diversas empresas de informática desenvolveram dispositivos concorrentes e assim o usuário tinha a liberdade de escolha de qual dispositivo colocar em sua placa mãe (ou o mais barato ou o de melhor qualidade e desempenho), isto permitiu a adição de periféricos de qualidade sem romper com seu orçamento pessoal (comprando uma placa de som, depois uma de fax-modem, placa de vídeo melhor, etc). Atualmente parece que voltamos ao ponto de partida e tudo vem embutido na placa mãe (_on-board_) e o usuário não tem como escolher qual dispositivo usar em seu computador. É muito difícil (praticamente impossível) encontrar uma placa mãe que satisfaça completamente as necessidades do usuário ou recomendações de um bom técnico de informática (a não ser que seja um técnico experiente e encontre alguma alternativa). Certamente o único dispositivo que funciona melhor se embutido na placa mãe é a _placa controladora de periféricos_. Esta placa é usada para se conectar unidades de disquete, discos rígidos, CD-ROM, portas seriais, paralelas, joystick ao computador. Os HDs conectados em uma controladora embutida conseguem ter um desempenho muito maior do que em placas conectadas externamente, sem causar nenhum tipo de problema. Felizmente os últimos modelos de placas mãe 486 e os Pentium já trazem a placa controladora de periféricos embutida. Hardwares embutidos na placa mãe (como fax-modem, vídeo, som) são em média 30% mais baratos que os vendidos separadamente mas quase sempre são usados dispositivos de baixo desempenho e qualidade para reduzir o preço da placa mãe e quase sempre usados hardwares `For Windows'. Hoje em dia por causa do preço da placa mãe, é comum encontrar pessoas que verificam somente o preço e sequer procuram saber ou conhecem a qualidade das placas embutidas na placa mãe. Pior ainda é encontrar vendedores despreparados que sequer sabem explicar o porque que uma placa de som Sound Blaster 64 é mais cara que uma de modelo genérico... Certa vez fiz um teste de desempenho em um jogo chamado _Network Rally_ do _DOS_ com minha máquina Pentium 120 MHz (só com a _placa controladora_ embutida), 16 MB RAM, placa de som Sound Blaster 16, placa de vídeo Trident 9680 com 1MB _versus_ um computador Pentium 200 MMX, 32 MB RAM, placa de vídeo embutida (usando 2 MB de memória compartilhada), fax modem Rockwell embutido, e som CMI 8330 também embutido. O resultado foi que o jogo rodava perfeito em meu pentium 120MHZ e no outro computador com o som pipocando e imagem apresentando paradas. O problema é que em dispositivos de baixa qualidade e baratos, sua carga de processamento é jogada para o processador, resultando em menos potência para executar os programas (veja Seção 3.9, `Hardwares específicos ou "For Windows"' para maiores detalhes sobre o problema). A memória de vídeo compartilhada quer dizer que parte da memória RAM é usada para memória de vídeo ao invés de uma memória DRAM específica e desenvolvida exclusivamente para aceleração de vídeo. Isto traz mais lentidão pois a memória de vídeo (RAM) também será acessada pelo barramento do computador, envolvendo mais carga para o processador, etc. A técnica de memória compartilhada é exclusiva de placas de vídeo embutidas. 41 Outro periférico que traz problemas e muita carga para o processador é o fax-modem for Windows, HSP, AMR, micromodem, etc. A maioria destes periféricos se recusam a funcionar em computadores inferiores ao Pentium 150, não trazem seu chip de processamento e o pior: o chip UART. Isto faz com que o periférico, mesmo marcando conexão a 57.600 ou mais tenha um desempenho de até duas vezes menor que um fax-modem inteligente com chip de processamento próprio e UART (sem contar com os controles internos do modem, como os protocolos de correção de erros, e sua extensa interface de programação via comandos). A economia, neste caso, será paga em sua conta telefônica. Outra vantagem de fax-modens inteligentes é que os modelos atuais vem com _FlashBios_ o que significa que podem ser reprogramados facilmente para passar de 33.600 para 57.600 sem trocar a placa, ou aceitarem novas tendências de tecnologia. Para detalhes veja Seção 3.9, `Hardwares específicos ou "For Windows"'. Se você estiver em uma situação destas, certamente os computadores de menor potência e com hardwares inteligentes (que possuem seus próprios chips de controle e processamento) terão um desempenho muito melhor. Mas também existem placas embutidas que tem a mesma qualidade de placas separadas (como alguns modelos de placas mãe que trazem a _Sound Blaster_ embutida). O preço pode ser maior mas você estará pagando por um dispositivo de melhor qualidade e que certamente trará benefícios a você e ao seu sistema. Consulte um técnico em informática experiente para te indicar uma placa mãe de bom preço e de qualidade. É muito comum encontrar falta de profissionalismo em pessoas que não sabem distinguir as características, funções e vantagens entre uma placa de boa qualidade e um hardware for Windows a não ser o preço mais barato. 3.9. Hardwares específicos ou "For Windows" ------------------------------------------- Esta seção foi retirada do manual de instalação da Debian GNU/Linux. Uma tendência que perturba é a proliferação de Modens e impressoras específicos para Windows. Em muitos casos estes são especialmente fabricados para operar com o Sistema Operacional Microsoft Windows e costumam ter a legenda `WinModem', `for Windows', ou `Feito especialmente para computadores baseados no Windows'. Geralmente estes dispositivos são feitos retirando os processadores embutidos daquele hardware e o trabalho deles são feitos por drivers do Windows que são executados pelo processador principal do computador. Esta estratégia torna o hardware menos caro, mas o que é poupado não é passado para o usuário e este hardware pode até mesmo ser mais caro quanto dispositivos equivalentes que possuem inteligência embutida. Você deve evitar o hardware baseado no Windows por duas razões: 1. O primeiro é que aqueles fabricantes não tornam os recursos disponíveis para criar um driver para Linux. Geralmente, o hardware e a interface de software para o dispositivo é proprietária, e a documentação não é disponível sem o acordo de não revelação, se ele estiver disponível. Isto impede seu uso como software livre, desde que os escritores de software grátis descubram o código fonte destes programas. 42 2. A segunda razão é que quando estes dispositivos tem os processadores embutidos removidos, o sistema operacional deve fazer o trabalho dos processadores embutidos, freqüentemente em prioridade de tempo real, e assim a CPU não esta disponível para executar programas enquanto ela esta controlando estes dispositivos. Um exemplo típico disso são os Modens for Windows; Além da carga jogada na CPU, o dispositivo não possui o chip UART 16550, que é essencial para uma boa taxa de transferência do modem. O que alguns dispositivos fazer é a emulação deste chip exigindo no mínimo uma CPU Pentium de 166 MHZ para operar adequadamente nesta taxa de transmissão. Mesmo assim, devido a falta do chip UART, um modem destes iniciar uma transmissão de arquivo a 57.600, a tendência é sua taxa de transferência ir caindo na medida que um arquivo é transferido (até se estabilizar em 21/25 Kbps). Assim o usuário típico do Windows não obtém um multi-processamento tão intensivo como um usuário do Linux, o fabricante espera que aquele usuário do Windows simplesmente não note a carga de trabalho que este hardware põe naquela CPU. No entanto, qualquer sistema operacional de multi-processamento, até mesmo Windows 95 / 98 ou NT, são prejudicados quando fabricantes de periféricos retiram o processador embutido de suas placas e colocam o processamento do hardware na CPU. Você pode ajudar a reverter esta situação encorajando estes fabricantes a lançarem a documentação e outros recursos necessários para nós desenvolvermos drivers para estes hardwares, mas a melhor estratégia é simplesmente evitar estes tipos de hardwares até que ele esteja listado no HOWTO de hardwares compatíveis com Linux. Note que hoje já existem muitos drivers para WinModems e outros hardwares For Windows para o Linux. Veja a lista de hardwares compatíveis no HARDWARE-HOWTO ou procure o driver no site do fabricante de seu dispositivo. Mesmo assim a dica é evitar hardwares for Windows e comprar hardwares inteligentes onde cada um faz sua função sem carregar a CPU. 3.10. Dispositivos específicos para GNU/Linux --------------------------------------------- Esta seção foi retirada do manual de instalação da Debian GNU/Linux. Existem diversos vendedores, agora, que vendem sistemas com a `Debian' ou outra distribuição do GNU/Linux pré-instaladas. Você pode pagar mais para ter este privilégio, mas compra um nível de paz de mente, desde então você pode ter certeza que seu hardware é bem compatível com GNU/Linux. Praticamente todas as placas que possuem processadores próprios funcionam sem nenhum problema no Linux (algumas placas da `Turtle Beach' e `mwave' tem suporte de som limitado). Se você tiver que comprar uma máquina com Windows instalado, leia cuidadosamente a licença que acompanha o Windows; você pode rejeitar a licença e obter um desconto de seu vendedor. Veja http://www.linuxmall.com/refund/ para detalhes. 45 Algumas placas (principalmente ISA) requerem que seja especificado o recurso de hardware sejam passados para seu módulo, ou simplesmente você quer especificar isto para manter o uso de hardware sobre seu controle. Alguns dos parâmetros mais usados em placas Sound Blaster são os seguintes: modprobe sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x388 Para evitar ter que passar estes parâmetros todas as vezes para o módulo, você poderá coloca-los no arquivo `/etc/modules.conf' da seguinte forma: options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330 Assim, quando der o comando `modprobe sb' ele será carregado com as opções acima. Na distribuição `Debian', você deverá criar um arquivo chamado `/etc/modutils/sb' contendo a linha acima, depois execute o `update-modules' para "juntar" todos os arquivos do `/etc/modutils' e criar o `/etc/modules.conf'. 3. Após carregar o módulo correto de sua placa de som, seu sistema de som deverá estar funcionando. Se você utiliza uma distribuição `Linux', os dispositivos de som como `/dev/audio', `/dev/dsp', `/dev/mixer' estarão criados e então poderá passar para o próximo passo. Caso não existam, entre no diretório `/dev' e execute o comando `MAKEDEV audio'. 4. O próximo passo consiste em instalar um programa para controle de volume, tonalidade e outros recursos de sua placa de som. O recomendado é o `aumix' por ser simples, pequeno e funcional, e permitindo restaurar os valores dos níveis de volumes na inicialização (isso evita que tenha que ajustar o volume toda vez que iniciar o sistema). Caso o `aumix' apareça na tela, sua placa de som já está funcionando! Caso acesse o sistema como usuário, não se esqueça de adicionar seu usuário ao grupo audio para ter permissão de usar os dispositivos de som: `adduser usuario audio' . 3.11.3. Configurando um gravador de CD no Linux ----------------------------------------------- Configurar um gravador de CD no `Linux' não tem mistérios, apenas é preciso que sejam seguidos passos para que a coisa funcione direito, pois sempre funciona. Se algo não funcionou, ou é porque os passos não foram seguidos corretamente, algum problema no hardware, alguma falha no kernel específica que afeta seu gravador, ou o autor deste guia deu mancada em algo (por favor, relate a falha) :-) O tipo mais complicado de gravador, se tratando de configuração, é o IDE, pois seu funcionamento é baseado na emulação SCSI. Para usar esta interface, ele precisa ser identificado como um dispositivo SCSI usando emulação SCSI do kernel, isto é necessário porque o módulo padrão ATAPI do kernel para unidades de CD (`ide-cd') não contém todos os comandos necessários para permitir que uma unidade funcione como gravadora de CD. No `Windows' a coisa também funciona desta forma, a unidade é emulada como SCSI para fazer a gravação, se você não sabia disso, tenho certeza que esta gostando da forma como as coisas ficam claras quando se usa `Linux' :-) Caso seu gravador seja IDE, veja Seção 3.11.3.1, `Configurando o suporte a um gravador IDE' caso seja um autêntico gravador com barramento SCSI, vá até Seção 3.11.3.2, `Configurando o suporte a um gravador SCSI'. 46 3.11.3.1. Configurando o suporte a um gravador IDE -------------------------------------------------- Para configurar seu gravador de CD IDE para ser usado no `Linux', siga os seguintes passos: 1. Tenha certeza que compilou o suporte as seguintes características no kernel: Em "ATA/IDE/MFM/RLL support" marque as opções: * Include IDE/ATAPI CDROM support * SCSI emulation support Depois em "SCSI support" marque as opções: * SCSI support M SCSI CD-ROM Support M SCSI Generic Support As opções marcadas como "*" serão embutidas no kernel e as "M" como módulos. Note que ambas as opções "IDE/ATAPI CDROM" e "SCSI Emulation" foram marcadas como embutidas. Isto faz com que o driver ATAPI tenha prioridade em cima do SCSI, mas vou explicar mais adiante como dizer para o kernel para carregar o suporte a SCSI para determinada unidade. Isto é útil quando temos mais de 1 unidade de CD IDE no sistema e queremos configurar somente o gravador para SCSI, pois alguns aplicativos antigos não se comunicam direito tanto com gravadores SCSI como emulados. Você também pode marcar somente a opção "SCSI Emulation" para que sua(s) unidade(s) seja(m) automaticamente emulada(s) como SCSI. Caso tenha usado esta técnica, vá até a seção Seção 3.11.3.3, `Testando o funcionamento'. 2. O próximo passo é identificar o dispositivo de CD-Rom atual. Isto é feito através do comando `dmesg'. Supondo que sua unidade de CD é "hdc" (primeiro disco na segunda controladora IDE) e que compilou ambos o suporte a "IDE ATAPI" e "SCSI emulation" no kernel, adicione o argumento "hdc=ide-scsi" no `/etc/lilo.conf' ou no `grub': # Lilo vmlinuz=/vmlinuz append="hdc=ide-scsi" Isto diz para o kernel que a unidade "hdc" usará emulação "ide-scsi". Caso tenha outras unidades de CD no sistema, estas ainda utilização ATAPI como protocolo de comunicação padrão. Execute o `lilo' para gerar novamente o setor de inicialização com as modificações e reinicie o computador. _OBS:_ Cuidado ao colocar um disco rígido IDE como `hdc'! A linha `hdc=ide-scsi' deverá ser retirada, caso contrário, seu disco rígido não será detectado. Agora, siga até Seção 3.11.3.3, `Testando o funcionamento'. 3.11.3.2. Configurando o suporte a um gravador SCSI --------------------------------------------------- Caso tenha um autentico gravador SCSI, não será preciso fazer qualquer configuração de emulação, a unidade estará pronta para ser usada, desde que seu suporte esteja no kernel. As seguintes opções do kernel são necessárias para funcionamento de gravadores SCSI: Depois em "SCSI support" marque as opções: * SCSI support M SCSI CD-ROM Support M SCSI Generic Support 47 Além disso, deve ser adicionado o suporte EMBUTIDO no kernel a sua controladora SCSI. Se o seu disco rígido também é SCSI, e seu CD está ligado na mesma controladora SCSI, ela já está funcionando e você poderá seguir para o passo Seção 3.11.3.3, `Testando o funcionamento'. Caso contrário carregue o suporte da sua placa adaptadora SCSI antes de seguir para este passo. 3.11.3.3. Testando o funcionamento ---------------------------------- Para testar se o seu gravador, instale o pacote `cdrecord' e execute o comando: `cdrecord -scanbus' para verificar se sua unidade de CD-ROM é detectada. Você deverá ver uma linha como: scsibus0: 0,0,0 0) 'CREATIVE' 'CD-RW RWXXXX ' '1.00' Removable CD-ROM 0,1,0 1) * 0,2,0 2) * O que significa que sua unidade foi reconhecida perfeitamente pelo sistema e já pode ser usada para gravação. Vá até a seção Seção 24.1, `Gravando CDs no Linux' para aprender como gravar CDs no `Linux'. 3.11.4. Configurando o gerenciamento de energia usando o APM ------------------------------------------------------------ O APM (_Advanced Power Management_ - _Gerenciamento Avançado de Energia_) permite que sistemas gerenciem características relacionadas com o uso e consumo de energia do computador. Ele opera a nível de BIOS e tenta reduzir o consumo de energia de várias formas quando o sistema não estiver em uso (como reduzindo o clock da CPU, desligar o HD, desligar o monitor, etc.). O uso de advanced power management também permite que computadores com fonte de alimentação ATX sejam desligados automaticamente quando você executa o comando `halt'. Caso sua máquina tenha suporte a _ACPI_, este deverá ser usado como preferência ao invés do APM por ter recursos mais sofisticados (veja Seção 3.11.5, `Configurando o gerenciamento de energia usando ACPI'). Para ativar o suporte a APM no `Linux', compile seu kernel com o suporte embutido a APM e também a "Advanced Power Management" (senão sua máquina não desligará sozinha no halt). Caso deseje compilar como módulo, basta depois carregar o módulo `apm' adicionando no arquivo `/etc/modules'. Depois disso instale o daemon `apmd' para gerenciar as características deste recurso no sistema. Você pode desativar o uso de APM de 3 formas: removendo seu suporte do kernel, passando o argumento `apm=off' (quando compilado estaticamente no kernel) ou removendo o nome do módulo do arquivo `/etc/modules' (quando compilado como módulo). Depois disso remova o daemon `apmd'. 50 4. Para quem esta migrando (ou pensando em migrar) do DOS/Windows para o Linux ------------------------------------------------------------------------------ Este capítulo explica as diferenças e particularidades do sistema `GNU/Linux' comparado ao `DOS/Windows' e uma lista de equivalência entre comandos e programas `DOS' e `GNU/Linux', que pode servir de comparação para que o usuário possa conhecer e utilizar os comandos/programas `GNU/Linux' que tem a mesma função no ambiente `DOS/Windows'. 4.1. Quais as diferenças iniciais --------------------------------- * Quando entrar pela primeira vez no `GNU/Linux' (ou qualquer outro `UNIX', a primeira coisa que verá será a palavra `login:' escrita na tela. A sua aventura começa aqui, você deve ser uma pessoa cadastrada no sistema (ter uma conta) para que poder entrar. No `login' você digita seu nome (por exemplo, gleydson) e pressiona Enter. Agora será lhe pedida a senha, repare que a senha não é mostrada enquanto é digitada, isto serve de segurança e para enganar pessoas que estão próximas de você "tocando" algumas teclas a mais enquanto digita a senha e fazendo-as pensar que você usa uma grande senha ;-) (com os asteriscos aparecendo isto não seria possível). Caso cometa erros durante a digitação da senha, basta pressionar a tecla `Back Space' para apagar o último caracter digitado e terminar a entrada da senha. Pressione Enter, se tudo ocorrer bem você estará dentro do sistema e será presenteado com o símbolo # (caso tenha entrado como usuário `root') ou $ (caso tenha entrado como um usuário normal). Existe um mecanismo de segurança que te alerta sobre eventuais tentativas de entrada no sistema por intrusos usando seu `login', faça um teste: entre com seu login e digite a senha errada, na segunda vez entre com a senha correta no sistema. Na penúltima linha das mensagens aparece uma mensagem "1 failure since last login", o que quer dizer "1 falha desde o último login". Isto significa que alguém tentou entrar 1 vez com seu nome e senha no sistema, sem sucesso. * A conta `root' não tem restrições de acesso ao sistema e pode fazer tudo o que quiser, é equivalente ao usuário normal do `DOS' e `Windows'. Use a conta `root' somente para manutenções no sistema e instalação de programas, qualquer movimento errado pode comprometer todo o sistema. Para detalhes veja Seção 13.6, `A conta root'. * No `GNU/Linux' os diretório são identificados por uma `/' e não por uma `\' como acontece no `DOS'. Para entrar no diretório `/bin', você deve usar `cd /bin'. * Os comandos são `case-sensitive', o que significa que ele diferencia as letras maiúsculas de minúsculas em arquivos e diretórios. O comando `ls' e `LS' são completamente diferentes. 51 * A multitarefa lhe permite usar vários programas simultaneamente (não pense que multitarefa somente funciona em ambientes gráficos, pois isto é errado!). Para detalhes veja Capítulo 7, `Execução de programas'. * Os dispositivos também são identificados e uma forma diferente que no `DOS' por exemplo: DOS/Windows Linux ------------- --------------- A: /dev/fd0 B: /dev/fd1 C: /dev/hda1 LPT1 /dev/lp0 LPT2 /dev/lp1 LPT3 /dev/lp2 COM1 /dev/ttyS0 COM2 /dev/ttyS1 COM3 /dev/ttyS2 COM4 /dev/ttyS3 * Os recursos multiusuário lhe permite acessar o sistema de qualquer lugar sem instalar nenhum driver, ou programa gigante, apenas através de conexões TCP/IP, como a Internet. Também é possível acessar o sistema localmente com vários usuários (cada um executando tarefas completamente independente dos outros) através dos Terminais Virtuais. Faça um teste: pressione ao mesmo tempo a tecla `ALT' e `F2' e você será levado para o segundo Terminal Virtual, pressione novamente `ALT' e `F1' para retornar ao anterior. * Para reiniciar o computador, você pode pressionar CTRL+ALT+DEL (como usuário `root') ou digitar `shutdown -r now'. . * Para desligar o computador, digite `shutdown -h now' e espere o aparecimento da mensagem `Power Down' para apertar o botão LIGA/DESLIGA do computador. 4.2. Comandos equivalentes entre DOS e Linux -------------------------------------------- Esta seção contém os comandos equivalentes entre estes dois sistemas e a avaliação entre ambos. Grande parte dos comandos podem ser usados da mesma forma que no `DOS', mas os comandos `Linux' possuem avanços para utilização neste ambiente multiusuário/multitarefa. O objetivo desta seção é permitir as pessoas com experiência em `DOS' fazer rapidamente no `GNU/Linux' as tarefas que fazem no `DOS'. A primeira coluna tem o nome do comando no `DOS', a segunda o comando que possui a mesma função no `GNU/Linux' e na terceira coluna as diferenças. 52 DOS Linux Diferenças -------- ------------ -------------------------------------------------- cls clear Sem diferenças. dir ls -la A listagem no Linux possui mais campos (as permissões de acesso) e o total de espaço ocupado no diretório e livre no disco deve ser visto separadamente usando o comando du e df. Permite também listar o conteúdo de diversos diretórios com um só comando (ls /bin /sbin /...). dir/s ls -lR Sem diferenças. dir/od ls -tr Sem diferenças. cd cd Poucas diferenças. cd sem parâmetros retorna ao diretório de usuário e também permite o uso de "cd -" para retornar ao diretório anteriormente acessado. del rm Poucas diferenças. O rm do Linux permite especificar diversos arquivos que serão apagados (rm arquivo1 arquivo2 arquivo3). Para ser mostrados os arquivos apagados, deve-se especificar o parâmetro "-v" ao comando, e "-i" para pedir a confirmação ao apagar arquivos. md mkdir Uma só diferença: No Linux permite que vários diretórios sejam criados de uma só vez (mkdir /tmp/a /tmp/b...). copy cp Poucas diferenças. Para ser mostrados os arquivos enquanto estão sendo copiados, deve-se usar a opção "-v", e para que ele pergunte se deseja substituir um arquivo já existente, deve-se usar a opção "-i". echo echo Sem diferenças. path path No Linux deve ser usado ":" para separar os diretórios e usar o comando "export PATH=caminho1:/caminho2:/caminho3:" para definir a variável de ambiente PATH. O path atual pode ser visualizado através do comando "echo $PATH". ren mv Poucas diferenças. No Linux não é possível renomear vários arquivos de uma só vez (como "ren *.txt *.bak"). É necessário usar um shell script para fazer isto. type cat Sem diferenças. ver uname -a Poucas diferenças (o uname tem algumas opções a mais). date date No Linux mostra/modifica a Data e Hora do sistema. time date No Linux mostra/modifica a Data e Hora do sistema. attrib chmod O chmod possui mais opções por tratar as permissões de acesso de leitura, gravação e execução para donos, grupos e outros usuários. scandisk fsck.ext2 O fsck é mais rápido e extensivo na checagem. doskey ----- A edição de teclas é feita automaticamente pelo bash. edit vi, ae, O edit é mais fácil de usar, mas usuário emacs experientes apreciarão os recursos do vi ou o emacs (programado em lisp). fdisk fdisk, cfdisk Os particionadores do Linux trabalham com praticamente todos os tipos de partições de diversos sistemas de arquivos diferentes. 55 DOS/Windows Linux Diferenças ----------- ---------- ------------------------------- MS Word Open Office, O Open Office possui todos os Corel Word Perfect recursos do Word além de ter a interface gráfica igual, menus e teclas de atalho idênticas ao Word, o que facilita a migração. Também trabalha com arquivos no formato Word97/2000 e não é vulnerável a vírus de macro. É distribuído gratuitamente e não requer pagamento de licença podendo ser instalado em quantos computadores você quiser (tanto domésticos como de empresas). MS Excel Open Office Mesmos pontos do acima e também abre arquivos Excel97/2000. MS PowerPoint Open Office Mesmos pontos do acima. MS Access SQL, Oracle, etc Existem diversas ferramentas de conceito para bancos de dados corporativos no Linux. Todos produtos compatíveis com outras plataformas. MS Outlook Pine, Mutt, etc Centenas de programas de E-Mail tanto em modo texto como em modo gráfico. Instale, avalie e escolha. MS Internet Explorer Netscape, Arena, Os três primeiros para modo Mozilla, lynx. gráfico e o lynx opera em modo texto. ICQ LICQ, GAIM, SIM Muito prático e fácil de operar. Possibilita a mudança completa da aparência do programa através de Skins. A organização dos menus deste programa é outro ponto de destaque. Photo Shop The Gimp Fácil de usar, possui muitos scripts que permitem a criação rápida e fácil de qualquer tipo de efeito profissional pelo usuário mais leigo. Acompanha centenas de efeitos especiais e um belo manual em html com muitas fotos (aproximadamente 20MB) que mostra o que é possível se fazer com ele. Corel Photo Paint Corel Photo Paint Corel Photo-Paint para Linux. winamp xmms Possui todos os recursos do programa para Windows além de filtros que permite acrescentar efeitos digitais da música (em tempo real), eco, etc. media player mplayer,playmidi Programas para execução de xwave, arquivos de música e videos multimídia. Existem outras alternativas, a escolha depende de seu gosto e da sofisticação do programa. 56 DOS/Windows Linux Diferenças ----------- ---------- ------------------------------- Agente de Sistema cron Pouca diferença. O cron da mais Liberdade na programação de tarefas a Serem executadas pelo Linux. Mixer aumix, cam Sem diferenças. Bate-Papo talk, ytalk O talk e o ytalk permite a conversa de dois usuários não só através de uma rede local, mas de qualquer parte do planeta, pois usa o protocolo tcp/ip para comunicação. Muito útil e fácil de usar. MIRC Bitchx, xchat Clientes IRC para Linux IIS, Pers. Web Server Apache O apache é o servidor WEB mais usado no mundo (algo em torno de 75% das empresas), muito rápido e flexível de se configurar. Exchange, NT Mail Sendmail, Postfix, 72% da base de servidores de Exim, Qmail emails no mundo atualmente roda em software livre. Os mais recomendados são o Postfix e o qmail, devido a segurança, velocidade e integridade de mensagem Wingate, MS Proxy Squid, Apache, A migração de um servidor proxy ip masquerade, para Linux requer o uso de nat, diald, vários programas separados para exim, que se tenha um resultado profissional. Isto pode parecer incomodo no começo, mas você logo perceberá que a divisão de serviços entre programas é mais produtivo. Quando desejar substituir um deles, o funcionamento dos outros não serão afetados. Não vou entrar em detalhes sobre os programas citados ao lado, mas o squid é um servidor proxy Web (HTTP e HTTPS) completo e também apresenta um excelente serviço FTP. Possui outros módulos como dns, ping, restrições de acesso, limites de tamanho de arquivos, cache, etc. MS Frontpage Netscape Composer Sem comentários... todas são e muitas outras ferramentas para a geração ferramentas para de grandes Web Sites. O wdm, geração de conteúdo por exemplo, é usado na geração WEB (como zope, do site da distribuição Debian php3, php4, wdm, (http://www.debian.org) em 27 htdig) idiomas diferentes. MS Winsock Sem equivalente O Linux tem suporte nativo a tcp/ip desde o começo de sua existência e não precisa de nenhuma camada de comunicação entre ele e a Internet. A performance é aproximadamente 10% maior em conexões Internet via fax-modem e outras redes tcp/ip. ViruScan, TBAV, ----- Não existem vírus no Linux F-PROT, CPAV. devido as restrições ao usuário durante a execução de programas. 57 ------------------------------------------------------------------------------- 5. Discos e Partições --------------------- Este capítulo traz explicações de como manipular discos rígidos e partições no sistema `GNU/Linux' e como acessar seus discos de CD-ROM e partições `DOS', `Windows 95/98' no `GNU/Linux'. Também será ensinado como utilizar o programa `mkfs.ext2' para criar um sistema de arquivos `EXT2' (formatar o disco) e a ferramenta `mkswap' (para criar uma partição ou arquivo de memória virtual). 5.1. Partições -------------- São divisões existentes no disco rígido que marcam onde começa onde termina um sistema de arquivos. Por causa destas divisões, nós podemos usar mais de um sistema operacional no mesmo computador (como o `GNU/Linux', `Windows' e `DOS'), ou dividir o disco rígido em uma ou mais partes para ser usado por um único sistema operacional. Para gravar os dados, o disco rígido deve ser primeiro particionado (usando o fdisk), escolher o tipo da partição (_Linux Native_, _Linux Swap_, etc) e depois aquela partição deve ser formatada com o `mkfs.ext2' (veja Seção 5.3, `Partição EXT2 (Linux Native)'). Após criada e formatada, a partição será identificada como um dispositivo no diretório `/dev' (veja Seção 5.12, `Identificação de discos e partições em sistemas Linux') . e deverá ser montada (Seção 5.13, `Montando (acessando) uma partição de disco') para permitir seu uso no sistema. Uma partição de disco não interfere em outras partições existentes, por este motivo é possível usar o `Windows', `GNU/Linux' e qualquer outro sistema operacional no mesmo disco. Para escolher qual deles será inicializado, veja Capítulo 6, `Gerenciadores de Partida (boot loaders)'. Para particionar (dividir) o disco rígido em uma ou mais partes é necessário o uso de um programa de particionamento. Os programas mais conhecidos para particionamento de discos no `GNU/Linux' são `fdisk', `cfdisk' e o `Disk Druid'. Lembre-se: * Quando se apaga uma partição, você estará apagando TODOS os arquivos existentes nela! * A partição do tipo _Linux Native_ (Tipo 83) é a usada para armazenar arquivos no `GNU/Linux'. Para detalhes veja Seção 5.3, `Partição EXT2 (Linux Native)'. * A partição do tipo _Linux Swap_ (Tipo 82) é usada como memória virtual. Para detalhes veja Seção 5.7, `Partição Linux Swap (Memória Virtual)'. * Em sistemas novos, é comum encontrar o `Windows' instalado em uma partição que consome TODO o espaço do disco rígido. Uma solução para instalar o `GNU/Linux' é apagar a partição `Windows' e criar três com tamanhos menores (uma para o `Windows', uma para o `GNU/Linux' e outra para a _Memória Virtual do Linux (SWAP)_. Ou criar apenas 2 se você não quiser mais saber mais do `Windows' ;-) 60 Agora para acessar a partição deverá ser usado o comando: `mount /dev/hda? /mnt -t ext2' Para mais detalhes veja Seção 5.13, `Montando (acessando) uma partição de disco'. Note que é possível criar um sistema de arquivos no disco rígido sem criar uma partição usando `/dev/hda', `/dev/hdb', etc. _EVITE FAZER ISSO!_ Como não estará criando uma partição, o disco estará divido de maneira incorreta, você não poderá apagar o sistema de arquivos completamente do disco caso precise (lembre-se que você não criou uma partição), e a partição possui uma assinatura apropriada que identifica o sistema de arquivos. O espaço padrão reservado na partição para o usuário root é de 5%. Em sistemas com partições maiores que 3Gb, isso pode representar uma grande quantidade de espaço em disco não utilizada por outros usuários. Veja a opção `-m' sobre como fazer esta modificação. Caso já tenha criado a partição, isto pode ser feito no `tune2fs' com a opção `-m'. 5.3.2. Criando um sistema de arquivos EXT2 em um arquivo -------------------------------------------------------- É possível criar um sistema de arquivos EXT2 em um arquivo que poderá ser montado e acessado normalmente como se fosse uma partição normal. Isto é possível por causa do recurso `loop' oferecido pelo kernel do `GNU/Linux'. Os dispositivos de `loop' estão disponíveis no diretório `/dev' com o nome `loop?' (normalmente estão disponíveis 8 dispositivos de `loop'). Isto é possível usando o comando `dd' e o `mkfs.ext2'. Veja passo a passo como criar o sistema de arquivos `EXT2' em um arquivo: 1. Use o comando `dd if=/dev/zero of=/tmp/arquivo-ext2 bs=1024 count=10000' para criar um arquivo `arquivo-ext2' vazio de 10Mb de tamanho em `/tmp'. Você pode modificar os parâmetros de `of' para escolher onde o arquivo será criado, o tamanho do arquivo poderá ser modificado através de `count' 2. Formate o arquivo com `mkfs.ext2 /tmp/arquivo-ext2'. Ele primeiro dirá que o arquivo `arquivo-ext2' não é um dispositivo de bloco especial (uma partição de disco) e perguntará se deve continuar, responda com `y'. O sistema de arquivos EXT2 será criado em `/tmp/arquivo-ext2' e estará pronto para ser usado. 3. Monte o arquivo `arquivo-ext2' com o comando: `mount /tmp/arquivo-ext2 /mnt -o loop=/dev/loop1'. Note que foi usado o parâmetro `-o loop' para dizer ao comando `mount' para usar os recursos de `loop do kernel' para montar o sistema de arquivos. 4. Confira se o sistema de arquivos `EXT2' em `arquivo-ext2' foi realmente montado no sistema de arquivos digitando `df -T'. Para detalhes, veja Seção 10.3, `df'. 61 Pronto! o que você gravar para `/mnt' será gravado dentro do arquivo `/tmp/arquivo-ext2'. Como foi criado um sistema de arquivos `EXT2' em `arquivo-ext2', você poderá usar todos os recursos da partição `EXT2' normal, como permissões de arquivos e diretórios, links simbólicos, etc. O uso da opção `loop=/dev/loop1' permite que o dispositivo `/dev/loop1' seja associado ao arquivo `/arquivo-ext2' e assim permitir sua montagem e uso no sistema. * Você poderá usar apenas `-o loop' com o comando `mount', assim o kernel gerenciará automaticamente os dispositivos de `loop'. * Caso faça isto manualmente, lembre-se de usar dispositivos `/dev/loop?' diferentes para cada arquivo que montar no sistema. Pois cada um faz referência a um único arquivo. 5.4. Journaling --------------- O sistema de journaling grava qualquer operação que será feita no disco em uma área especial chamada "journal", assim se acontecer algum problema durante a operação de disco, ele pode voltar ao estado anterior do arquivo, ou finalizar a operação. Desta forma, o journal acrescenta ao sistema de arquivos o suporte a alta disponibilidade e maior tolerância a falhas. Após uma falha de energia, por exemplo, o journal é analisado durante a montagem do sistema de arquivos e todas as operações que estavam sendo feitas no disco são verificadas. Dependendo do estado da operação, elas podem ser desfeitas ou finalizadas. O retorno do servidor é praticamente imediato (sem precisar a enorme espera da execução do fsck em partições maiores que 10Gb), garantindo o rápido retorno dos serviços da máquina. Outra situação que pode ser evitada é com inconsistências no sistema de arquivos do servidor após a situação acima, fazendo o servidor ficar em estado 'single user' e esperando pela intervenção do administrador. Este capítulo do guia explica a utilização de journaling usando o sistema de arquivos _ext3_ (veja Seção 5.5, `Partição EXT3 (Linux Native)' para detalhes). 5.5. Partição EXT3 (Linux Native) --------------------------------- O sistema de arquivos _ext3_ faz parte da nova geração extended file system do `Linux', sendo que seu maior benefício é o suporte a journaling. O uso deste sistema de arquivos comparado ao _ext2_, na maioria dos casos, melhora o desempenho do sistema de arquivos através da gravação seqüencial dos dados na área de metadados e acesso mhash a sua árvore de diretórios. A estrutura da partição `ext3' é semelhante a `ext2', o journaling é feito em um arquivo chamado `.journal' que fica oculto pelo código _ext3_ na partição (desta forma ele não poderá ser apagado, comprometendo o funcionamento do sistema). A estrutura idêntica da partição _ext3_ com a _ext2_ torna mais fácil a manutenção do sistema, já que todas as ferramentas para recuperação _ext2_ funcionarão sem problemas. 62 5.5.1. Criando um sistema de arquivos EXT3 em uma partição ---------------------------------------------------------- Para criar uma partição _ext3_, utilize o comando `mkfs.ext3' ou o `mkfs.ext2' junto com a opção _-j_. As opções usadas pelo `mkfs.ext3' são idênticas a do `mkfs.ext2' (documentado em Seção 5.3.1, `Criando um sistema de arquivos EXT2 em uma partição'). A única vantagem desta ferramenta comparada ao `mkfs.ext2' é que a opção _-j_ é automaticamente adicionada a linha de comando para criar um sistema de arquivos com journal. Se você é daqueles que querem ter um controle maior sobre o tamanho do arquivo de journal, use a opção _-J [tam]_ (onde tamanho é o tamanho em Megabytes). Quando uma partição _ext3_ é criada, o arquivo `.journal' é criado no raíz da partição, sendo usado para gravar os metadados das transações de journaling. A estrutura da partição ext2 não difere em nada da ext3, a não ser este arquivo e a opção "has_journal" que é passada a partição. Por exemplo, para criar uma partição ext3 em `/dev/hda1': mkfs.ext3 /dev/hda1 ou mkfs.ext2 -j /dev/hda1 Basta agora montar a partição com o comando `mount /dev/hda1 /teste -t ext3' (para montar a partição em `/teste'. Após isto, modifique o `/etc/fstab' para montar a partição como _ext3_ quando o `Linux' for iniciado. Para mais detalhes veja Seção 5.13, `Montando (acessando) uma partição de disco'. ). Caso o suporte a _ext3_ tenha sido compilado no kernel, ele tentará detectar e montar a partição como _ext3_, caso contrário, ele usará _ext2_. Sua partição agora está montada como _ext3_, para conferir digite: `df -T'. _OBS:_ Quando criar um sistema de arquivos _ext3_ em uma partição raíz (`/'), tenha certeza de incluir o suporte a _ext3_ embutido no kernel, caso contrário a partição será montada como _ext2_. 5.5.2. Criando um sistema de arquivos EXT3 em um arquivo -------------------------------------------------------- As instruções para criar um sistema de arquivos `ext3' em um arquivo não difere muito das instruções de Seção 5.3.2, `Criando um sistema de arquivos EXT2 em um arquivo', apenas utilize a opção _-j_ ou _-J [tamanho_em_mb]_ (como explicado em Seção 5.5.1, `Criando um sistema de arquivos EXT3 em uma partição'). 5.5.3. Fazendo a conversão do sistema de arquivos EXT2 para EXT3 ---------------------------------------------------------------- Se você já possui um uma partição _ext2_ e deseja converte-la para _ext3_ isto poderá ser feito facilmente, de forma segura (sem qualquer risco de perda de dados) e você poderá voltar para o sistema ext2 caso deseje (veja Seção 5.5.4, `Convertendo de EXT3 para EXT2'). 65 requerimentos do `reiserfs'. 2. Formate o arquivo com `mkreiserfs -f /tmp/arquivo-reiserfs'. Ele primeiro dirá que o arquivo `arquivo-reiserfs' não é um dispositivo de bloco especial (uma partição de disco) e perguntará se deve continuar, responda com `y'. O sistema de arquivos ReiserFS será criado em `/tmp/arquivo-reiserfs' e estará pronto para ser usado. 3. Monte o arquivo `arquivo-reiserfs' com o comando: `mount /tmp/arquivo-reiserfs /mnt -t reiserfs -o loop=/dev/loop1'. Note que foi usado o parâmetro `-o loop' para dizer ao comando `mount' para usar os recursos de `loop do kernel' para montar o sistema de arquivos. O parâmetro `-t reiserfs' poderá ser omitido, se desejar. 4. Confira se o sistema de arquivos `ReiserFS' em `arquivo-reiserfs' foi realmente montado no sistema de arquivos digitando `df -T'. Para detalhes, veja Seção 10.3, `df'. Pronto! o que você gravar para `/mnt' será gravado dentro do arquivo `/tmp/arquivo-reiserfs'. Você poderá usar todos os recursos de um sistema de arquivos `reiserfs' como permissões de arquivos e diretórios, links simbólicos, etc. O uso da opção `loop=/dev/loop1' permite que o dispositivo `/dev/loop1' seja associado ao arquivo `/arquivo-reiserfs' e assim permitir sua montagem e uso no sistema. * Você poderá usar apenas `-o loop' com o comando `mount', assim o kernel gerenciará automaticamente os dispositivos de `loop'. * Caso faça isto manualmente, lembre-se de usar dispositivos `/dev/loop?' diferentes para cada arquivo que montar no sistema. Pois cada um faz referência a um único arquivo. 5.6.3. Nomeando uma partição de disco ------------------------------------- O comando `e2label' é usado para esta função. `e2label [_dispositivo_] [_nome_]' Onde: _dispositivo_ Partição que terá o nome modificado _nome_ Nome que será dado a partição (máximo de 16 caracteres). Caso seja usado um nome de volume com espaços, ele deverá ser colocado entre "aspas". Se não for especificado um nome, o nome atual da partição será mostrado. O nome da partição também pode ser visualizado através do comando `dumpe2fs' (veja Seção 5.6.5, `dumpe2fs'). Exemplo: `e2label /dev/sda1 FocaLinux', `e2label /dev/sda1 "Foca Linux"' 66 5.6.4. Criando o diretório especial `lost+found' ------------------------------------------------ O utilitário `mklost+found' cria o diretório especial `lost+found' no diretório atual. O diretório `lost+found' é criado automaticamente após a formatação da partição com o `mkfs.ext2', a função deste diretório é pré-alocar os blocos de arquivos/diretório durante a execução do programa `fsck.ext2' na recuperação de um sistema de arquivos (veja Seção 26.1, `Checagem dos sistemas de arquivos'). Isto garante que os blocos de disco não precisarão ser diretamente alocados durante a checagem. `mklost+found' OBS: Este comando só funciona em sistemas de arquivos ext2 Exemplo: `cd /tmp;mklost+found;ls -a' 5.6.5. dumpe2fs --------------- Mostra detalhes sobre uma partição `Linux'. `dumpe2fs [_opções_] [_partição_]' Onde: _partição_ Identificação da partição que será usada. _opções_ -b Mostra somente os blocos marcado como defeituosos no sistema de arquivos especificado. Este comando lista diversas opções úteis do sistema de arquivos como o tipo do sistema de arquivos, características especiais, número de inodos, blocos livres, tamanho do bloco, intervalo entre checagens automáticas, etc. Exemplo: `dumpe2fs /dev/sda1', `dumpe2fs -b /dev/sda1' 5.6.6. Partição EXT2 ou Arquivo? -------------------------------- Criar uma partição `EXT2' ou um arquivo usando o `loop'? Abaixo estão algumas considerações: * A partição `EXT2' é o método recomendado para a instalação do `GNU/Linux'. * O desempenho da partição `EXT2' é bem melhor se comparado ao arquivo porque é acessada diretamente pelo Kernel (SO). * O arquivo `EXT2' é útil para guardarmos dados confidenciais em disquetes ou em qualquer outro lugar no sistema. Você pode perfeitamente gravar seus arquivos confidenciais em um arquivo chamado `libBlaBlaBla-2.0' no diretório `/lib' e ninguém nunca suspeitará deste arquivo (acho que não...). Também é possível criptografa-lo para que mesmo alguém descobrindo que aquilo não é uma lib, não poder abri-lo a não ser que tenha a senha (isto é coberto no documento `Loopback-encripted-filesystem.HOWTO'). 67 * O uso do arquivo `EXT2' é útil quando você está perdendo espaço na sua partição `EXT2' e não quer re-particionar seu disco pois teria que ser feita uma re-instalação completa e tem muito espaço em um partição de outro SO (como o Windows). Você poderia facilmente copiar o conteúdo de `/var', por exemplo, para o arquivo `EXT2' `ext2-l' criado no diretório Raíz do Windows, apagar o conteúdo de `/var' (liberando muito espaço em disco) e então montar `ext2-l' como `/var'. A partir de agora, tudo o que for gravado em `/var' será na realidade gravado no arquivo `ext2-l'. Para o sistema acessar o arquivo, deve passar pelo sistema de arquivos `loop' e `FAT32', isto causa um desempenho menor. 5.7. Partição Linux Swap (Memória Virtual) ------------------------------------------ Este tipo de partição é usado para oferecer o suporte a _memória virtual_ ao `GNU/Linux' em adição a _memória RAM_ instalada no sistema. Este tipo de partição é identificado pelo tipo 82 nos programas de particionamento de disco para `Linux'. Para detalhes de como criar uma partição `Linux Swap' veja Seção 5.7.1, `Criando sistema de arquivos Swap em uma partição'. Somente os dados na memória RAM são processados pelo processador, por ser mais rápida. Desta forma quando você está executando um programa e a memória RAM começa a encher, o `GNU/Linux' move automaticamente os dados que não estão sendo usados para a partição Swap e libera a memória RAM para a continuar carregando os dados necessários pelo. Quando os dados movidos para a partição Swap são solicitados, o `GNU/Linux' move os dados da partição Swap para a Memória. Por este motivo a partição Swap também é chamada `de Troca' ou `memória virtual'. A velocidade em que os dados são movidos da memória RAM para a partição é muito alta. Note também que é possível criar o sistema de arquivos _Swap_ em um arquivo ao invés de uma partição (veja Seção 5.7.2, `Criando um sistema de arquivos Swap em um arquivo'). 5.7.1. Criando sistema de arquivos Swap em uma partição ------------------------------------------------------- O programa usado para formatar uma partição Swap é o `mkswap'. Seu uso é simples: `mkswap /dev/hda?' Novamente veja Seção 5.12, `Identificação de discos e partições em sistemas Linux' caso não souber identificar seus discos e partições. O nome do dispositivo da partição `Swap' pode ser visualizado através de seu programa de particionamento, você pode usar o comando `fdisk -l /dev/hda' para listar as partições no primeiro disco rígido e assim verificar qual dispositivo corresponde a partição Swap. A opção `-c' também pode ser usada com o `mkswap' para checar se existem agrupamentos danificados na partição. Com a partição Swap formatada, use o comando: `swapon /dev/hda?' para ativar a partição Swap (lembre-se de substituir ? pelo número de sua partição Swap). 70 * `kcore' - Este arquivo corresponde a toda a memória RAM em seu sistema. Seu tamanho é correspondente a memória RAM do micro * `kmsg' - Permite visualizar mensagens do Kernel (use o comando `cat < kmsg' para visualiza-lo e pressione CTRL+C para cancelar * `loadavg' - Média de Carga do sistema * `meminfo' - Dados de utilização da memória do sistema * `misc' - Outras configurações * `modules' - Módulos atualmente carregados no kernel * `mounts' - Sistemas de Arquivos atualmente montados * `pci' - Detalhes sobre dispositivos PCI do sistema * `rtc' - Relógio em Tempo real do sistema * `uptime' - Tempo de execução do sistema * `version' - Versão atual do Kernel, programa usado na compilação, etc * Diretório `net' - Dados sobre a rede do sistema * Diretório `sys' - Dados sobre outras áreas do sistema * Diretório `scsi' - Detalhes sobre dispositivos SCSI do sistema Note que o diretório `proc' e os arquivos existentes dentro dele estão localizados no diretório raiz (`/'), mas não ocupa nenhum espaço no disco rígido. 5.9. LVM - Logical Volume Manager --------------------------------- O `lvm' (_Logical Volume Manager_) faz a associação entre dispositivos/partições físicas (incluindo discos RAID, MO, mass storages diversos, MD, e loop) e dispositivos lógicos. O método tradicional faz a alocação de todo espaço físico ao tamanho da partição do disco (o método tradicional), o que traz muito trabalho quando o espaço esgota, cópia de dados ou planejamento de uso de máquina (que pode mudar com o passar do tempo). O sistema de `lvm' soluciona os seguintes problemas: * Uso eficaz de disco, principalmente quando há pouco espaço para criação de partições independentes. * Permite aumentar/diminuir dinamicamente o tamanho das partições sem reparticionamento do disco rígido usando o espaço livre em outras partições ou utilizando o espaço livre reservado para o uso do LVM. * Uma partição de disco é identificada por um nome de volume e não pelo dispositivo. Você pode então se referir aos volumes como: usuários, vendas, diretoria, etc. * Sua divisão em 3 camadas possibilita a adição/remoção de mais discos de um conjunto caso seja necessário mais espaço em volumes, etc. * Permite selecionar o tamanho do cluster de armazenamento e a forma que eles são acessados entre os discos, possibilitando garantir a escolha da melhor opção dependendo da forma que os dados serão manipulados pelo servidor. * Permite snapshots dos volumes do disco rígido. As 3 camadas do LVM são agrupadas da seguinte forma: * `PV (Phisical Volume)' - Corresponde a todo o disco rígido/partição ou dispositivo de bloco que será adicionado ao LVM. Os aplicativos que manipulam o volume físico, começam com as letras `pv*'. O espaço disponível no PV é dividido em PE (Phisical Extends, ou extensões físicas). O valor padrão do PE é de 4MB, possibilitando a criação de um VG de 256Gb. Por exemplo: `/dev/hda1' 71 * `VG (Volume Group)' - Corresponde ao grupo de volumes físicos que fazem parte do LVM. Do grupo de volume são alocados os espaços para criação dos volumes lógicos. Os aplicativos que manipulam o o grupo de volume, começam com as letras `vg*'. Por exemplo: `/dev/lvmdisk0' `LV (Logical Volume)' - Corresponde a partição lógica criada pelo LVM para gravação de dados. ao invés de ser identificada por nomes de dispositivos, podem ser usados nomes comuns para se referir as partições (tmp,usr,etc.). O Volume lógico é a área onde o sistema de arquivo é criado para gravação de dados, seria equivalente a partição em um sistema _SEM LVM_ só que lógica ao invés de física. O volume lógico tem seu espaço dividido em LE (Logical Extends, ou extensões lógicas) que correspondem aos PE's alocados. Exemplos: `/dev/lvmdisk/usr', `/dev/lvmdisk/tmp', etc. 5.9.1. Representação gráfica do LVM ----------------------------------- Desenvolvi este desenho para representar a idéia de organização de um Sistema LVM para o guia Foca GNU/Linux e apresentar a descrição prática da coisa: +------[ Grupo de Volume (VG) - lvmdsk ]------+ | +--[ PV - hda1 ]---+ +--[ PV - hdb1 ]--+ | | | PE PE PE PE PE PE| | PE PE PE PE PE | | | +------------------+ +-----------------+ | | | | | | | | | | +-----------------+ | | | | +----------------+ | | | | | | | | | +-[ LV - var ]-+ +-[ LV - home ]-+ | | | LE LE LE LE | | LE LE LE LE | | | +--------------+ +---------------+ | +---------------------------------------------+ O gráfico acima representa a seguinte situação: 1. Nós temos dois volumes físicos representados por `hda1' e `hdb1'. Cada um desses volumes físicos tem um Phisical Extend (PE) de 4M o padrão). 2. Estes dois volumes físicos acima representam o espaço total do grupo de volume _lvmdisk_ em `/dev/lvmdisk'. 3. Do grupo de volume _lvmdisk_ são criados dois volumes lógicos chamados _var_ e _home_, estando disponíveis para particionamento através de `/dev/lvmdisk/var' e `/var/lvmdisk/home'. Na prática, o espaço do volume lógico é definido alocando-se alguns Phisical Extends (PE) dos volumes físicos como logical extends (LE) dos volumes lógicos. Desta forma, o tamanho de todos os PEs e LEs existentes dentro de um mesmo grupo de volume devem ser iguais. 5.9.2. Performance do LVM ------------------------- Um sistema com LVM tem sua performance um pouco reduzida quanto ao acesso a disco, devido as camadas adicionais de acesso aos dados, sendo afetadas operações em caracteres e inteligentes de acesso a dados. Entretanto, a performance de leitura/gravação de blocos é melhorada consideravelmente após a adoção do LVM. O LVM também garante que o sistema não mostre sintomas de paradas durante o esvaziamento de cache de disco, mantendo sempre uma certa constância na transferência de dados mesmo em operações pesadas de I/O no disco. Depende de você avaliar estes pontos e considerar sua adoção. 72 5.9.3. Colocando LVM em seu sistema ----------------------------------- Nesta seção não tenho a intenção de cobrir todos os detalhes técnicos da implantação do LVM, a idéia aqui é fornecer uma referência básica e prática para uso em qualquer sistema normal (desconsiderando usos críticos). A idéia aqui é mostrar de forma prática como implantar LVM em sua máquina e preparar seu uso nos discos. Antes de começar, retire QUALQUER CD que estiver inserido na unidade de CD-ROM, pois eles podem causar erro no `pvscan', `pvdisplay', etc. 1. No particionamento, defina as partições do tipo 8E (Linux LVM). A partição Linux LVM é exatamente igual a Linux Native (82), a única vantagem é que o LVM utilizará auto detecção para saber quais partições ele deve utilizar no `pvscan'. 2. Instale o pacote `lvm10' e uma imagem de kernel 2.4 que tenha suporte a LVM, ou compile seu próprio kernel (caso goste de máquinas turbinadas :-) 3. Execute o `pvscan' para detectar as partições marcadas como LVM e criar sua configuração em `/etc/lvmtab.d'. _OBS:_ É normal o sistema procurar dispositivos de CD-ROM durante a execução do `pvscan', apenas não deixe um CD na unidade para evitar grandes sustos se estiver desatento com os passos :-) 4. Rode o `pvcreate' no disco ou partição para dizer que ela será um volume físico do LVM: `pvcreate /dev/hda1' ou `pvcreate /dev/hda' Em caso de dúvida sobre qual é a partição LVM, digite: `fdisk -l /dev/hda' (supondo que `/dev/hda' é o disco rígido que está configurando o LVM). 5. Rode o pvdisplay /dev/hda1 para verificar se o volume físico foi criado. Recomendo que deixe a partição raíz (`/') de fora do LVM para não ter futuros problemas com a manutenção do seu sistema, a menos que tenha muitas opções de inicialização com suporte a LVM em mãos, ou algo mais complexo baseado em initrd :-) 6. Crie o grupo de volume na partição `vgcreate lvmdisk /dev/hda1 /dev/hdb7'... Note que partições de discos diferentes podem fazer parte de um mesmo grupo de volume (VG) do LVM. Caso use o `devfs', será preciso usar o caminho completo do dispositivo ao invés do link: `vgcreate lvmdisk /dev/ide/host0/bus0/target0/lun0/part1' O valor padrão do "Phisical Extend" é de 4MB mas pode ser alterado pelo parâmetro "-s tamanho", assim o tamanho máximo do grupo de volume será de 256GB (4MB * 64.000 extends que são suportados por volume lógico). Os valores do Phisical Extend (PE) pode ser de 8k a 16GB. Não é possível modificar o tamanho do PE após ele ser definido. 7. Verifique o grupo de volume (VG) recém criado com o comando: `vgdisplay' ou `vgdisplay /dev/hda6'. Atente para a linha "Free PE / tamanho", que indica o espaço livre restante para criar os volumes lógicos (LV). 8. Crie o volume lógico (LV) com o comando: `lvcreate -L1500 -ntmp lvmdisk' Que vai criar uma partição LVM de 1500MB (1,5GB) com o nome _tmp_ (acessível por `/var/lvmdisk/tmp') dentro do grupo _lvmdisk_. Você deverá fazer isso com as outra partições. 9. Agora resta criar um sistema de arquivos (_ext3_, _reiserfs_, _xfs_, _jfs_, etc) como faria com qualquer partição física normal: `mkfs.ext3 /dev/lvmdisk/tmp' `mkfs.reiserfs /dev/lvmdisk/tmp' _OBS:_ Caso deseje montar automaticamente o volume LVM, coloque o caminho completo do LVM ao invés do volume físico no `/etc/fstab': `/dev/lvmdisk/tmp'. 75 -b [trilha] Especifica a trilha inicial que será formatada. O padrão é 0. -e [trilha] Especifica a trilha final que será formatada. Na primeira vez que o `superformat' é executado, ele verifica a velocidade de rotação da unidade e a comunicação com a placa controladora, pois os discos de alta densidade são sensíveis a rotação da unidade. Após o teste inicial ele recomendará adicionar uma linha no arquivo `/etc/driveprm' como forma de evitar que este teste seja sempre executado. OBS: Esta linha é calculada de acordo com a rotação de usa unidade de disquetes, transferência de dados e comunicação com a placa controladora de disquete. Desta forma ela varia de computador para computador Note que não é necessário montar a unidade de disquetes para formata-la. Segue abaixo exemplos de como formatar seus disquetes com o `superformat': * `superformat /dev/fd0' - Formata o disquete na primeira unidade de disquetes usando os valores padrões. * `superformat /dev/fd0 dd' - Faz a mesma coisa que o acima, mas assume que o disquete é de Dupla Densidade (720Kb). * `superformat -v 1 /dev/fd0' - Faz a formatação da primeira unidade de disquetes (`/dev/fd0') e especifica o nível de detalhes para 1, exibindo um `ponto' após cada trilha formatada. 5.10.3. Programas de Formatação Gráficos ---------------------------------------- Além de programas de formatação em modo texto, existem outros para ambiente gráfico (X11) que permitem fazer a mesma tarefa. Entre os diversos programas destaco o `gfloppy' que além de permitir selecionar se o disquete será formatado para o `GNU/Linux' (ext2) ou `DOS' (FAT12), permite selecionar a capacidade da unidade de disquetes e formatação rápida do disco. 5.11. Pontos de Montagem ------------------------ O `GNU/Linux' acessa as partições existente em seus discos rígidos e disquetes através de diretórios. Os diretórios que são usados para acessar (montar) partições são chamados de _Pontos de Montagem_. Para detalhes sobre montagem de partições, veja Seção 5.13, `Montando (acessando) uma partição de disco'. No `DOS' cada letra de unidade (C:, D:, E:) identifica uma partição de disco, no `GNU/Linux' os pontos de montagem fazem parte da grande estrutura do sistema de arquivos raiz. Existem muitas vantagens de se usar _pontos de montagem_ ao invés de unidade de disco para identificar partições (método usado no `DOS'): * Você pode montar a partição no diretório que quiser. * Em caso de um sistema de arquivos cheio, você pode copiar o conteúdo de um grande diretório para um disco separado, apagar o conteúdo do diretório original e montar o disco onde foram copiados os arquivos naquele local (caso não use um sistema de LVM). * O uso de _pontos de montagem_ torna o gerenciamento mais flexível. * A adição de novas partições ou substituição de discos rígidos não afeta a ordem de identificação dos discos e pontos de montagem (como não acontece no `DOS'). 76 5.12. Identificação de discos e partições em sistemas Linux ----------------------------------------------------------- No `GNU/Linux', os dispositivos existentes em seu computador (como discos rígidos, disquetes, tela, portas de impressora, modem, etc) são identificados por um arquivo referente a este dispositivo no diretório ̀ /dev'. A identificação de discos rígidos no `GNU/Linux' é feita da seguinte forma: /dev/hda1 | | || | | ||_Número que identifica o número da partição no disco rígido. | | | | | |_Letra que identifica o disco rígido (a=primeiro, b=segundo, etc...). | | | |_Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI, xt=XT). | |_Diretório onde são armazenados os dispositivos existentes no sistema. Abaixo algumas identificações de discos e partições em sistemas Linux: * _/dev/fd0_ - `Primeira unidade de disquetes'. * _/dev/fd1_ - `Segunda unidade de disquetes'. * _/dev/hda_ - `Primeiro disco rígido na primeira controladora IDE do micro (primary master)'. * _/dev/hda1_ - `Primeira partição do primeiro disco rígido IDE'. * _/dev/hdb_ - `Segundo disco rígido na primeira controladora IDE do micro (primary slave)'. * _/dev/hdb1_ - `Primeira partição do segundo disco rígido IDE'. * _/dev/sda_ - `Primeiro disco rígido na primeira controladora SCSI'. * _/dev/sda1_ - `Primeira partição do primeiro disco rígido SCSI'. * _/dev/sdb_ - `Segundo disco rígido na primeira controladora SCSI'. * _/dev/sdb1_ - `Primeira partição do segundo disco rígido SCSI'. * _/dev/sr0_ - `Primeiro CD-ROM SCSI'. * _/dev/sr1_ - `Segundo CD-ROM SCSI'. * _/dev/xda_ - `Primeiro disco rígido XT'. * _/dev/xdb_ - `Segundo disco rígido XT'. As letras de identificação de discos rígidos podem ir além de `hdb', em meu micro, por exemplo, a unidade de CD-ROM está localizada em `/dev/hdg' (Primeiro disco - quarta controladora IDE). É importante entender como os discos e partições são identificados no sistema, pois será necessário usar os parâmetros corretos para monta-los. 77 5.13. Montando (acessando) uma partição de disco ------------------------------------------------ Você pode acessar uma partição de disco usando o comando `mount'. `mount [_dispositivo_] [_ponto de montagem_] [_opções_]' Onde: _dispositivo_ Identificação da unidade de disco/partição que deseja acessar como ̀ /dev/hda1' (disco rígido) ou ̀ /dev/fd0' (primeira unidade de disquetes). _ponto de montagem_ Diretório de onde a _unidade de disco/partição_ será acessado. O diretório deve estar vazio para montagem de um sistema de arquivo. Normalmente é usado o diretório ̀ /mnt' para armazenamento de pontos de montagem temporários. -t [tipo] Tipo do sistema de arquivos usado pelo _dispositivo_. São aceitos os sistemas de arquivos: * _ext2_ - Para partições `GNU/Linux' usando o Extended File System versão 2 (a mais comum). * _ext3_ - Para partições `GNU/Linux' usando o Extended File System versão 3, com suporte a journaling. * _reiserfs_ - Para partições reiserfs, com suporte a journaling. * _vfat_ - Para partições `Windows 95' que utilizam nomes extensos de arquivos e diretórios. * _msdos_ - Para partições `DOS' normais. * _iso9660_ - Para montar unidades de `CD-ROM'. É o padrão. * _umsdos_ - Para montar uma partição `DOS' com recursos de partições `EXT2', como permissões de acesso, links, etc. Para mais detalhes sobre opções usadas com cada sistema de arquivos, veja a página de manual _mount_. -r Caso for especificada, monta a partição somente para leitura. -w Caso for especificada, monta a partição como leitura/gravação. É o padrão. Existem muitas outras opções que podem ser usadas com o comando `mount', mas aqui procurei somente mostrar o básico para "montar" seus discos e partições no `GNU/Linux' (para mais opções, veja a página de manual do `mount'). Caso você digitar `mount' sem parâmetros, serão mostrados os sistemas de arquivos atualmente montados no sistema. Esta mesma listagem pode ser vista em `/etc/mtab'. A remontagem de partição também é muito útil, especialmente após reparos nos sistema de arquivos do disco rígido. Veja alguns exemplos de remontagem abaixo. É necessário permissões de root para montar partições, a não ser que tenha especificado a opção ̀ user' no arquivo ̀ /etc/fstab' (veja Seção 5.13.1, ̀ fstab'). Exemplo de Montagem: * Montar uma partição Windows (vfat) de `/dev/hda1' em `/mnt' somente para leitura: `mount /dev/hda1 /mnt -r -t vfat' * Montar a primeira unidade de disquetes `/dev/fd0' em `/floppy': `mount /dev/fd0 /floppy -t vfat' * Montar uma partição DOS localizada em um segundo disco rígido `/dev/hdb1' em `/mnt': `mount /dev/hdb1 /mnt -t msdos'. * Remontar a partição raíz como somente leitura: `mount –o remount,rw /' * Remontar a partição raíz como _leitura/gravação_ (a opção -n é usada porque o `mount' não conseguirá atualizar o arquivo `/etc/mtab' devido ao sistema de arquivos `/' estar montado como somente leitura atualmente: `mount -n -o remount,rw /'. 80 6. Gerenciadores de Partida (boot loaders) ------------------------------------------ _Gerenciadores de Partida_ são programas que carregam um sistema operacional e/ou permitem escolher qual será iniciado. Normalmente este programas são gravados no _setor de boot_ (inicialização) da partição ativa ou no _master boot record_ (MBR) do disco rígido. Este capitulo explica o funcionamento de cada um dos principais gerenciadores de partida usados no `GNU/Linux', em que situações é recomendado seu uso, as características, como configura-lo e alguns exemplos de configuração. 6.1. LILO --------- O `LILO' (_Linux Loader_) é sem dúvida o gerenciador de partida padrão para quem deseja iniciar o `GNU/Linux' através do disco rígido. Ele permite selecionar qual sistema operacional será iniciado (caso você possua mais de um) e funciona tanto em discos rígidos _IDE_ como _SCSI_. A seleção de qual sistema operacional e a passagem de parâmetros ao kernel pode ser feita automaticamente ou usando o aviso de `boot:' do `LILO'. 6.1.1. Criando o arquivo de configuração do LILO ------------------------------------------------ Os dados para a criação do novo _setor de boot_ que armazenará o gerenciador de partida são lidos do arquivo `/etc/lilo.conf' Este arquivo pode ser criado em qualquer editor de textos (como o `ae' ou `vi'). Normalmente ele é criado durante a instalação de sua distribuição `GNU/Linux' mas por algum motivo pode ser preciso modifica-lo ou personaliza-lo (para incluir novos sistemas operacionais, mensagens, alterar o tempo de espera para a partida automática, etc). O arquivo `/etc/lilo.conf' é dividido em duas seções: _Geral_ e _Imagens_. A seção _Geral_ vem no inicio do arquivo e contém opções que serão usadas na inicialização do `Lilo' e parâmetros que serão passados ao kernel. A seção _Imagens_ contém opções especificas identificando qual a partição que contém o sistema operacional, como será montado inicialmente o sistema de arquivos, tabela de partição, o arquivo que será carregado na memória para inicializar o sistema, etc. Abaixo um modelo do arquivo `/etc/lilo.conf' para sistemas que só possuem o `GNU/Linux' instalado: boot=/dev/hda1 compact install=/boot/boot.b map=/boot/map vga=normal delay=20 lba32 image=/vmlinuz root=/dev/hda1 81 label=Linux read-only Para criar um novo gerenciador de partida através do arquivo `/etc/lilo.conf' , execute o comando `lilo'. No exemplo acima, o gerenciador de partida será instalado em `/dev/hda1' (veja Seção 5.12, `Identificação de discos e partições em sistemas Linux') , utilizará um setor de boot compacto (compact), modo de vídeo VGA normal (80x25), esperará 2 segundos antes de processar automaticamente a primeira seção `image=' e carregará o kernel `/vmlinux' de `/dev/hda1'. Para detalhes sobre opções que podem ser usadas neste arquivo veja Seção 6.1.2, `Opções usadas no LILO'. Para mostrar o aviso de `boot:', você deverá ligar as teclas Caps Lock ou Scrool lock na partida ou pressionar a tecla `Shift' durante os dois segundos de pausa. Outro método é incluir a opção `prompt' na seção _global_ para que o aviso de `boot:' seja mostrado automaticamente após carregar o `Lilo'. Abaixo uma configuração para computadores com mais de um sistema operacional (Usando `GNU/Linux' e `DOS'): boot=/dev/hda1 compact lba32 install=/boot/boot.b map=/boot/map vga=normal delay=20 prompt image=/vmlinuz root=/dev/hda1 label=linux read-only other=/dev/hda2 table=/dev/hda label=dos O exemplo acima é idêntico ao anterior, o que foi acrescentado foi a opção `prompt' na seção _geral_ (para que seja mostrado imediatamente o aviso de `boot:' no momento em que o `LILO' for carregado), e incluída uma imagem de disco `DOS' localizado em `/dev/hda2'. No momento da inicialização é mostrada a mensagem `boot:' e caso seja digitado `DOS' e pressionado ENTER, o sistema iniciará o `DOS'. Caso a tecla Enter seja pressionada sem especificar a imagem, a primeira será carregada (neste caso o `GNU/Linux'). Você pode substituir a palavra `GNU/Linux' da opção `label' por o número `1' e `DOS' por `2', desta forma o número pode ser digitado para iniciar o sistema operacional. Isto é muito útil para construir um menu usando a opção `message'. Para detalhes veja Seção 6.1.2, `Opções usadas no LILO'. A seção _Geral_ vem do inicio do arquivo até a palavra `delay=20'. A partir do primeiro aparecimento da palavra `image', `other' ou `range', tudo o que vier abaixo será interpretado como imagens de inicialização. 82 Por padrão, a imagem carregada é a especificada por `default=' ou a primeira que aparece no arquivo (caso `default=' não seja especificado). Para carregar o outro sistema (o `DOS'), digite o nome da imagem de disco no aviso de `boot:' (especificada em `label=') que será carregada. Você também pode passar parâmetros manualmente ao kernel digitando o nome da imagem de disco e uma opção do kernel ou através do arquivo `/etc/lilo.conf' (veja Seção 6.1.2, `Opções usadas no LILO'). O `LILO' pode inicializar o seguintes tipos de imagens: * Imagens do kernel de um arquivo. Normalmente usado para iniciar o `GNU/Linux' pelo disco rígido e especificado pelo parâmetro `image='. * Imagens do kernel de um dispositivo de bloco (como um disquete). Neste caso o número de setores a serem lidos devem ser especificados na forma _PRIMEIRO-ÚLTIMO_ ou _PRIMEIRO+NÚMERO de setores a serem lidos_. É necessário especificar o parâmetro `image=' e `range=', por exemplo: image=/dev/fd0 range=1+512 Todas as opções do kernel podem ser usadas na inicialização por dispositivo. * O setor de boot de outro sistema operacional (como o `DOS', `OS/2', etc). O setor de partida é armazenado junto com a tabela de partição no arquivo `/boot/map'. É necessário especificar o parâmetro `OTHER=dispositivo' ou `OTHER=arquivo' e a inicialização através de um setor de partida possui algumas opções especiais como o `TABLE=' (para especificar a tabela de partição) e o `MAP-DRIVE=' (identificação da unidade de discos pelo sistema operacional). Veja o exemplo desta configuração abaixo: other=/dev/hda2 table=/dev/hda label=DOS map-drive=0x80 to = 0x81 map-drive=0x81 to = 0x80 Observações: * Caso o gerenciador de partida seja instalado no MBR do disco rígido (boot=/dev/hda), o setor de boot do antigo sistema operacional será substituído, retire uma cópia do setor de boot para um disquete usando o comando `dd if=/dev/hda of=/floppy/mbr bs=512 count=1' no `GNU/Linux' para salvar o setor de boot em um disquete e `dd if=/floppy/mbr of=/dev/hda bs=446 count=1' para restaura-lo. No `DOS' você pode usar o comando `fdisk /mbr' para criar um novo Master Boot Record. * Após qualquer modificação no arquivo `/etc/lilo.conf' , o comando `lilo' deverá ser novamente executado para atualizar o setor de partida do disco rígido. Isto também é válido caso o kernel seja atualizado ou a partição que contém a imagem do kernel desfragmentada. * A limitação de 1024 cilindros do `Lilo' não existe mais a partir da versão 21.4.3 (recomendada, por conter muitas correções) e superiores. 85 * `restricted' - A senha somente é pedida para iniciar a imagem se o sistema for iniciado no modo single. Também podem ser usados parâmetros de inicialização do kernel no arquivo `/etc/lilo.conf', veja a seção Seção 6.3, `Parâmetros de inicialização passados ao kernel' para maiores detalhes. 6.1.3. Um exemplo do arquivo de configuração lilo.conf ------------------------------------------------------ Abaixo um exemplo do arquivo `/etc/lilo.conf' que poderá ser usado em instalações `GNU/Linux' com o `DOS'. boot=/dev/hda1 #Instala o LILO em /dev/hda1 compact install=/boot/boot.b map=/boot/map message=/etc/lilo.message #mensagem que será mostrada na tela default=1 #Carrega a Imagem especificada por label=1 como padrão vga=normal #usa o modo de video 80x25 ao iniciar o Linux delay=20 #aguarda 2 segundos antes de iniciar a imagem padrão lba32 #permite quebrar o limite de 1024 cilindros na inicialização prompt #mostra o aviso de "boot:" logo que o LILO é carregado image=/vmlinuz #especifica o arquivo que contém a primeira imagem root=/dev/hda1 #partição onde a imagem acima esta localizada label=1 #identificação da imagem de disco read-only #monta inicialmente como somente leitura password=12345 #Usa a senha 12345 restricted #somente quando iniciar com o parâmetro single other=/dev/hda2 #especifica outro sistema que será carregado table=/dev/hda #a tabela de partição dele está em /dev/hda label=2 #identificação desta imagem de disco password=12345 #pede a senha antes de iniciar este sistema Você pode usar o exemplo acima como base para construir sua própria configuração personalizada do `/etc/lilo.conf' mas não se esqueça de modificar as tabelas de partições para seu sistema. Se você usa o `Windows NT 4.0', `Windows NT 5.0 (Windows 2000)' ou o `OS/2', recomendo ler o `DOS+Windows+OS/2-HOWTO'. Após criar seu arquivo `/etc/lilo.conf' , execute o comando `lilo' e se tudo ocorrer bem, o `LILO' será instalado. 6.2. GRUB --------- (Os detalhes contidos na seção sobre o `GRUB', foram integralmente desenvolvidos por Alexandre Costa <alebyte@bol.com.br> como contribuição ao guia FOCA GNU/Linux.) O `GRUB' (_Grand Unified Boot Loader_) é mais uma alternativa como gerenciador de boot e apresenta alguns recursos extras com relação as outras opções disponíveis. Ele é flexível, funcional e poderoso, podendo inicializar sistemas operacionais como o `Windows' (9x, ME, NT, 2000 e XP), `Dos', `Linux', `GNU Hurd', `*BSD', `OS/2' e etc. 86 Podemos destacar também o suporte aos sistemas de arquivos ext2 (Linux), ext3 e reiserfs (novos sistemas de arquivos journaling do Linux), FAT16 e FAT32 (Win 9x/ME), FFS (Fast File System usado no *BSD), minix (MINIX OS) e etc. Por utilizar o padrão Multiboot ele é capaz de carregar diversas imagens de boot e módulos. Por esse motivo ele é o único gerenciador de inicialização capaz de carregar o conjunto de servidores do GNU Hurd. O GRUB também permite buscar imagens do kernel pela rede, por cabo seriais, suporta discos rígidos IDE e SCSI, detecta toda a memória RAM disponível no sistema, tem interface voltada para linha de comandos ou menus de escolha, além de suportar sistemas sem discos e terminais remotos. Como possui inúmeros recursos, será apresentada sua utilização básica, ficando como sugestão ao leitor procurar se aprofundar mais em suas possibilidades de uso e configuração. 6.2.1. Como o GRUB trabalha com discos e partições -------------------------------------------------- O GRUB trabalha com uma notação diferente para apontar discos e partições sendo necessário algumas explicações antes de prosseguir. Veja a tabela comparativa: No Linux No GRUB /dev/hda (hd0) /dev/hda1 (hd0,0) /dev/hda2 (hd0,1) /dev/hdb (hd1) /dev/hdb1 (hd1,0) /dev/hdb2 (hd1,1) /dev/sda (hd0) # Disco SCSI ID 0 /dev/sda1 (hd0,0) # Disco SCSI ID 0, partição 1 /dev/sda2 (hd0,1) # Disco SCSI ID 0, partição 2 /dev/sdb (hd1) # Disco SCSI ID 1 /dev/sdb1 (hd1,0) # Disco SCSI ID 1, partição 1 /dev/sdb2 (hd1,1) # Disco SCSI ID 1, partição 2 /dev/fd0 (fd0) _OBS:_ Os discos _IDE_ e _SCSI_ são referenciados ambos como (`hd?') pelo `GRUB'. Não há distinção entre os discos e de modo geral a identificação de unidades IDE é menor do que qualquer tipo de drive SCSI, salvo se você alterar a seqüência de inicialização (boot) na BIOS. Para saber como o Linux trabalha com partições veja Seção 5.12, `Identificação de discos e partições em sistemas Linux'. 87 6.2.2. Instalando o GRUB ------------------------ A instalação do `GRUB' ao contrário da instalação do `LILO' (Seção 6.1, `LILO'), só precisa ser executada uma única vez. Caso seja necessária alguma mudança como por exemplo adicionar uma nova imagem, esta pode ser feita apenas editando o arquivo de configuração `menu.lst'. 6.2.2.1. No MBR --------------- Um método simples de adicionar o `GRUB' para gerenciar seu MBR (_Master Boot Record_) é rodando o seguinte comando (como superusuário): # /sbin/grub-install /dev/hda Este comando grava o `GRUB' no MBR do primeiro disco e cria o diretório `/boot/grub' onde estarão os arquivos necessários para o seu funcionamento. Neste ponto o `GRUB' já está instalado e quando você reiniciar seu computador irá se deparar com uma linha de comandos, onde terá que carregar a imagem do kernel manualmente. Mais adiante será explorada a utilização desta linha de comando que é muito eficiente. Provavelmente você achará mais interessante copiar o arquivo de configuração de exemplos do `GRUB' e otimizá-lo às suas necessidades. Note que isto não exclui a possibilidade de utilizar a linha de comando, apenas cria uma interface de menus onde você pode configurar várias opções de boot de uma forma organizada, automatizada e funcional. Copie este arquivo para o diretório `/boot/grub' com o seguinte comando: # cp /usr/share/doc/grub/examples/menu.lst /boot/grub Por ser um arquivo de exemplos será necessário otimizá-lo de acordo com suas necessidades, o que será abordado mais a frente. 6.2.3. No disco flexível (somente linha de comando) --------------------------------------------------- Quando criamos um disquete de partida, este funcionará em um sistema qualquer, podendo utilizar este disquete em várias máquinas diferentes ou em uma máquina em que tenha tido algum problema com o `GRUB' no MBR. Coloque um disquete virgem e digite os seguintes comandos: # dd if=/usr/lib/grub/i386-pc/stage1 of=/dev/fd0 count=1 # dd if=/usr/lib/grub/i386-pc/stage2 of=/dev/fd0 seek=1 Estes comandos permitem que seja apresentada a linha de comando do grub quando este disco for utilizado para boot. 90 Quando quisermos carregar estes sistemas devemos proceder da seguinte maneira: title Windows hide (hd0,1) unhide (hd0,0) rootnoverify (hd0,0) chainloader +1 makeactive title Dos hide (hd0,0) unhide (hd0,1) rootnoverify (hd0,1) chainloader +1 makeactive * `map' = Alguns sistemas não permitem ser inicializados quando não estão no primeiro disco (Dos, Win 9x, etc.). Para resolver esta e outras situações o `GRUB' tem um comando que permite enganar tal sistema mapeando as unidades de disco do modo como lhe for mais conveniente. Imagine que você tenha o primeiro disco (hd0) com o GNU/Linux instalado e em um outro disco (hd1) com o Windows/Dos instalado. O Windows/Dos não permitem serem inicializados desta forma e como solução você poderia usar a seguinte entrada no arquivo de configurações do GRUB: title Windows unhide (hd1,0) rootnoverify (hd1,0) chainloader +1 map (hd1) (hd0) makeactive Isso faz com que o disco (hd1), onde esta o Windows/Dos, seja apresentado a este sistema como (hd0) "enganado" o mesmo e possibilitando o boot. Parâmetros enviados diretamente ao kernel Pode ser necessário passar alguns parâmetros para o kernel no momento do boot. Para maiores informações ver a seção Seção 6.3, `Parâmetros de inicialização passados ao kernel'. Você pode passar os parâmetros da seguinte maneira: # Exemplo de entrada no 'menu.lst'. title Linux 2.4.16 root (hd0,0) kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6 mem=512M ramdisk=0 Neste exemplo, a linha com o comando "kernel" é usada para indicar qual imagem deve ser carregada. As opções que seguem (vga, mem e ramdisk) são parâmetros que devem ser passados diretamente ao kernel do sistema a ser carregado. 91 6.2.6. Um exemplo de arquivo de configuração -------------------------------------------- # Exemplo de arquivo de configuração do GRUB. # Note que você pode usar o caracter '#' para fazer comentários. # Se após 30 segundos nenhuma tecla for pressionada, carrega a imagem padrão. timeout 30 # Define a primeira imagem como padrão. default 0 # Caso a imagem padrão não funcione carrega a imagem definida aqui. fallback 1 # Define as cores que serão usadas no menu. color light-cyan/black white/blue # Permite utilizar uma senha. password minha-senha-secreta password minha-senha (hd0,0)/boot/grub/secret.conf # Para boot com o GNU/Hurd title GNU/Hurd root (hd0,0) kernel /boot/gnumach.gz root=hd0s1 module /boot/serverboot.gz # Para boot com o GNU/Linux title Linux 2.4.16 # Pede a senha configurada em "password" antes de carregar esta imagem. lock root (hd0,0) # Atente as opções passadas diretamente para o kernel (vga, mem, etc.). kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6 mem=512M ramdisk=0 # Para boot com o Mach (obtendo o kernel de um disquete) title Utah Mach4 multiboot root (hd0,2) pause Insira o disquete agora!!! kernel (fd0)/boot/kernel root=hd0s3 module (fd0)/boot/bootstrap # Para boot com FreeBSD title FreeBSD 3.4 root (hd0,2,a) kernel /boot/loader # Para boot com OS/2 title OS/2 root (hd0,1) makeactive chainloader +1 chainloader /boot/chain.os2 92 # Para boot com Windows 9x, ME, NT, 2000, XP. title Windows 9x, ME, NT, 2000, XP unhide (hd0,0) rootnoverify (hd0,0) chainloader +1 makeactive # Para instalar o GRUB no disco rígido. title = Instala o GRUB no disco rígido root = (hd0,0) setup = (hd0) # Muda as cores. title Mudar as cores color light-green/brown blink-red/blue 6.2.7. Usando a linha de comandos do GRUB ----------------------------------------- O `GRUB' possui inúmeros recursos, mas com certeza um dos mais importantes e que merece destaque é sua linha de comandos. A maioria dos comandos usados no arquivo de configuração `menu.lst' são válidos aqui e muitos outros estão disponíveis. Uma breve apresentação da linha de comandos será dada, ficando por conta do leitor se aprofundar o quanto achar necessário em sua flexibilidade. Quando o `GRUB' é inicializado você pode se deparar com sua linha de comandos ou se possuir o arquivo `menu.lst' configurado, um menu de escolha. Mesmo usando os menus de escolha você pode utilizar a linha de comandos, bastando para isso seguir as instruções no rodapé da tela onde o `GRUB' nos informa que podemos digitar `e' para editar as entradas de boot ou `c' para ter acesso a linha de comandos (lembre-se que pressionar `<ESC>' faz com que você volte aos menus de escolha). Caso a opção `password' tenha sido especificada no arquivo `menu.lst', será necessário antes de acessar as outras opções (que estarão desabilitadas) pressionar `p' e entrar com a senha correta. Agora, com acesso a linha de comandos, você pode verificar os comandos disponíveis pressionando duas vezes a tecla <TAB>. Note que você também pode utilizar esta tecla para completar nomes de comandos bem como parâmetros de alguns comandos. Alguns comandos disponíveis: * `cat' = Este comando permite verificar o conteúdo de um arquivo qualquer, o qual deve estar gravado em um dispositivo ligado a sua máquina. Embora seja um recurso útil, nenhuma permissão de acesso é verificada e qualquer pessoa que tenha acesso a linha de comandos do GRUB pode listar o conteúdo de arquivos importantes. Para contornar este problema o parâmetro `password' é utilizado no arquivo `menu.lst' e faz com que uma senha seja solicitada antes de liberar o acesso a linha de comandos. Não esqueça que ainda é possível utilizar um disquete com o `GRUB' para dar boot na máquina o que permite usar a linha de comandos pelo disquete. Ex.: grub> cat (hd0,0)/etc/passwd * `cmp' = Este comando é utilizado para comparar dois arquivos. Ex.: grub> cmp (hd0,0)/arquivo1 (hd0,0)/arquivo2 * `configfile' = Carrega um arquivo de configuração do GRUB. Ex.: grub> configfile (hd0,0)/boot/grub/menu.lst 95 O truque é o seguinte: Você inicia normalmente pelo `DOS' e após seu dispositivo ser configurado corretamente pelo driver do `DOS' e funcionando corretamente, você executa o `Loadlin' e o `GNU/Linux' assim poderá usa-lo. Muitos usam o comando `Loadlin' dentro do arquivo `autoexec.bat' para iniciar o `GNU/Linux' automaticamente após o dispositivo ser configurado pelo `DOS'. ATENÇÃO!!! Não execute o `Loadlin' dentro do Windows. 6.4.1. Opções do LOADLIN ------------------------ Abaixo a lista de opções que podem ser usadas com o programa `LOADLIN' (note que todas são usadas no `DOS'): `loadlin [_imagem_kernel_] [_argumentos_] [_opções_]' * `imagem_kernel' - Arquivo que contém o kernel. * `root=dispositivo' - Especifica o dispositivo que contém o sistema de arquivos raiz. É especificado de acordo com a identificação de dispositivos no `GNU/Linux' (`/dev/hda1', `/dev/hdb1', etc). * `ro' - Diz ao kernel para montar inicialmente o sistema de arquivos raiz como somente leitura. Os scripts de inicialização normalmente modificam o sistema de arquivos para leitura e gravação após sua checagem. * `rw' - Diz ao kernel para montar inicialmente o sistema de arquivos raiz como leitura e gravação. * `initrd=[NUM]' - Define o tamanho do disco RAM usado no sistema. * `-v' - Mostra detalhes sobre mensagens e configuração * `-t' - Modo de teste, tudo é feito menos a inicialização do `GNU/Linux'. * `-d arquivo' - Mesma função de `-t', mas envia a saída para o arquivo * `-txmode' - Altera o modo de vídeo para 80x25 antes de inicializar o kernel. * `-dskreset' - Após carregar a imagem do kernel, reseta todos os discos rígidos antes de inicializar o `GNU/Linux'. 6.4.2. Exemplo de inicialização com o LOADLIN --------------------------------------------- Abaixo você encontra um exemplo do comando `loadlin' que poderá ser usado em sua instalação `GNU/Linux' (precisando apenas ajustar a localização da partição raiz do `GNU/Linux' de acordo com seu sistema). C:\> LOADLIN vmlinuz root=/dev/hda1 ro | | | | | +- Montar como somente leitura | | | +- Partição raiz | +- Nome do kernel copiado para o DOS 96 6.5. syslinux ------------- Outro gerenciador de partida que funciona somente com sistemas de arquivos `DOS'. A principal diferença do `syslinux' em relação ao `LOADLIN' é que foi feito especialmente para funcionar em disquetes formatados no `DOS', facilitando a instalação do `GNU/Linux' e para a criação de disquetes de recuperação ou de inicialização. Um disquete gerado pelo `syslinux' é lido sem problemas pelo `DOS'/`Windows'. `syslinux [-s] [_dispositivo_]' A opção `-s' instala no disquete uma versão segura, lenta e estúpida do `syslinux'. Isto é necessário para algumas `BIOS' problemáticas. 6.5.1. Criando um disquete de inicialização com o syslinux ---------------------------------------------------------- Siga os passos abaixo para criar um disquete de inicialização com o `syslinux': 1. Formate o disquete no `DOS' ou com alguma ferramenta `GNU/Linux' que faça a formatação de disquetes para serem usados no `DOS'. 2. Copie um ou mais arquivos de `kernel' para o disquete 3. Digite `syslinux /dev/fd0' (lembre-se de usar a opção `-s' se tiver problemas de inicialização). Este comando modificará o setor de partida do disquete e gravará um arquivo chamado `LDLINUX.SYS' no diretório raiz do disquete. Lembre-se: O disquete deve estar desmontado antes de usar o comando `syslinux', caso o disquete estiver montado uma mensagem será mostrada e o `syslinux' abortado. Por padrão é carregado o kernel de nome `GNU/Linux'. Este padrão pode ser modificado através do arquivo de configuração `SYSLINUX.CFG' que também é gravado no diretório raiz do disquete. Veja Seção 6.5.2, `O arquivo SYSLINUX.CFG' para detalhes. Se as teclas Caps Lock ou Scrool Lock estiverem ligadas ou Shift, Alt forem pressionadas durante o carregamento do `syslinux', o `syslinux' mostrará um aviso de `boot:' no estilo do `LILO'. O usuário pode então digitar o nome do kernel seguido de qualquer parâmetro para inicializar o `GNU/Linux'. 6.5.2. O arquivo SYSLINUX.CFG ----------------------------- Este arquivo é criado no diretório raiz da unidade de disquete e contém as opções que serão usadas para modificar o funcionamento do `syslinux'. Abaixo a listagem de opções que podem ser especificadas neste arquivo: default [kernel] [opções] Indica o nome do kernel e as opções dele que serão usadas na inicialização, caso `syslinux' seja iniciado automaticamente. Caso não for especificado, o assumido para o kernel será `GNU/Linux' sem nenhuma opção de inicialização. 97 append [opções] Passa uma ou mais opções ao kernel na inicialização. Elas serão adicionadas automaticamente para inicializações automáticas e manuais do `syslinux'. label [nome] kernel [kernel] append [opções] Nome que identificará o kernel no aviso de `boot:' (idêntica a opção `label=' do `LILO'). Se a imagem especificada por `nome' for selecionada, o kernel usado será o especificado pelo parâmetro `kernel' e as opções usadas por `append'. Caso seja passado um hífen `-' ao parâmetro `append', os parâmetros passados pelo `append' global serão anulados. implicit [valor] Se o [valor] for igual a 0, não carrega a imagem até que seja explicitamente especificada na opção `label'. timeout [tempo] Indica quanto tempo o `syslinux' aguardará antes de inicializar automaticamente (medido em 1/10 de segundos). Caso alguma tecla seja pressionada, a inicialização automática é interrompida. Para desativar esta característica, use 0 como `timeout'. O valor máximo é de 35996. font [nome] Especifica uma fonte (em formato `.psf') que será usada para mostrar as mensagens do `syslinux' (após o aviso de copyright do programa). Ele carrega a fonte para a placa de vídeo, se a fonte conter uma tabela unicode, ela será ignorada. Somente funciona em placas EGA e VGA. kbdmap [mapa] Instala um simples mapa de teclado. O mapa de teclados usado é muito simples: somente remapeia códigos conhecidos pela `BIOS', o que significa que somente teclas usadas no teclado padrão EUA serão usadas. O utilitário `keytab-lilo.pl' da distribuição do `lilo' pode ser usado para criar tais mapas de teclado. prompt [valor] Se [valor] for igual a 1, mostra automaticamente o aviso de `boot:' assim que o `syslinux' for iniciado. Caso seja igual a 0, mostra o aviso de `boot:' somente se as teclas Shift ou Alt forem pressionadas ou Caps Lock e Scrool Lock estiverem ativadas. display [arquivo] Mostra o conteúdo do [arquivo] durante a inicialização do `syslinux'. F1 [arquivo] F2 [arquivo] ... F0 [arquivo] Especifica que arquivos serão mostrados quando as teclas de F1 até F10 forem pressionadas. Para detalhes, veja Seção 6.5.3, `Formatação dos arquivos de tela do syslinux'.
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved