Você está na página 1de 194

Perguntas mais freqentes sobre FreeBSD 2.X, 3.X e 4.

Perguntas mais freqentes sobre FreeBSD 2.X, 3.X e 4.X


Reviso: 43184 Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Projeto de Documentao do FreeBSD

Resumo
Estas so as Perguntas Mais Freqentes (FAQ) para as verses 2.X, 3.X e 4.X do FreeBSD. Deve-se assumir que todos os assuntos aqui tratados so relevantes para FreeBSD 2.0.5 ou posterior, a no ser que o contrrio esteja explicitamente denotado. Todos os assuntos assinalados com <XXX> esto em processo de desenvolvimento. Se voc estiver interessado em ajudar este projeto, envie e-mail para lista de discusso do projeto de documentao do FreeBSD. A verso mais atualizada deste documento est sempre disponvel no servidor WWW do FreeBSD. Tambm pode ser obtida como um nico grande arquivo HTML via HTTP; ou, como texto puro, ou nos formatos postscript, PDF, etc. no servidor FTP do FreeBSD. Voc tambm pode querer realizar uma busca nas Perguntas Mais Freqentes (FAQ).
Verso Traduzida para Portugus do Brasil Esta uma traduo no-oficial do Aviso Legal Padro do Projeto de Documentao do FreeBSD para o Portugus do Brasil. Ela no foi publicada pelo Projeto de Documentao do FreeBSD, e legalmente no representa os termos de distribuio de documentao que utiliza o Aviso Legal Padro do Projeto de Documentao do FreeBSD -- somente o texto original do Aviso Legal Padro do Projeto de Documentao, em ingls, faz isso. Logo, a verso traduzida no deve ser utilizada como um aviso legal vlido. Esperamos, contudo, que esta traduo ajude aos falantes de Portugus do Brasil a entender melhor o Aviso Legal Padro do Projeto de Documentao do FreeBSD. SEMPRE verifique a verso em Ingls mais recente do Aviso Legal Padro do Projeto de Documentao do FreeBSD na verso em Ingls do Manual do FreeBSD. Redistribuio e utilizao do cdigo fonte (SGML DocBook) ou formato "compilado" (SGML, HTML, PDF, PostScript, RTF e assim por diante) com ou sem modificao, so permitidas contanto que as seguintes condies sejam cumpridas: 1. As redistribuies do cdigo fonte (SGML DocBook) devem reter o aviso de copyright acima, esta lista de condies e a seguinte nota de responsabilidade assim como as primeiras linhas deste arquivo no modificadas. 2. As redistribuies em forma compilada (transformada para outros DTDs, convertida para PDF, PostScript, RTF e outros formatos) devem reproduzir o aviso de copyright acima, esta lista de condies e a seguinte nota de responsabilidade na documentao e/ou outros materiais fornecidos com a distribuio.

ii

Importante
ESTA DOCUMENTAO FORNECIDA PELO PROJETO DE DOCUMENTAO DO FREEBSD "NO ESTADO" E QUAISQUER GARANTIAS EXPLCITAS OU IMPLCITAS, INCLUINDO, MAS NO LIMITADAS AS GARANTIAS IMPLCITAS DE COMERCIALIZAO E A DE ADEQUAO PARA UMA FINALIDADE PARTICULAR SO DESMENTIDAS. EM NENHUM EVENTO O PROJETO DE DOCUMENTAO DO FREEBSD PODER SER RESPONSABILIZADO POR QUAISQUER DANOS DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, EXEMPLARES, OU CONSEQENTES (INCLUINDO, MAS NO LIMITADO A, OBTENO DE BENS OU SERVIOS SUBSTITUTOS; PERDA DE USO, DE DADOS, OU DE LUCROS; OU A INTERRUPO DE NEGCIOS) DE QUALQUER FORMA CAUSADO E EM QUALQUER TEORIA DE RESPONSABILIDADE, SE EM CONTRATO, EM RESPONSABILIDADE ESTRITA, OU PROCESSUAL (PASSVEL DE PROCESSO, INCLUINDO NEGLIGNCIA OU NO) LEVANTADA DE QUALQUER FORMA PELO USO DESTA DOCUMENTAO, MESMO QUE AVISADO DA POSSIBILIDADE DE TAIS DANOS.

English Version This is an unofficial translation of the Standard FreeBSD Documentation Project Legal Notice into Brazilian Portuguese. It was not published by The FreeBSD Documentation Project, and does not legally state the distribution terms for documentation that uses the Standard FreeBSD Documentation Project Legal Notice -- only the original English text of the Standard FreeBSD Documentation Project Legal Notice does that. Therefore, the translated version should not be used as a valid legal notice. However, we hope that this translation will help Brazilian Portuguese speakers understand the Standard FreeBSD Documentation Project Legal Notice better. Make sure to ALWAYS check the latest English version of the Standard FreeBSD Documentation Project Legal Notice in the English documentation version of the FreeBSD Handbook. Redistribution and use in source (SGML DocBook) and "compiled" forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified. 2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Importante
THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT,

iii

INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

iv

ndice
1. Introduo ............................................................................................. 1 2. Documentao e Suporte ........................................................................... 9 3. Instalao ............................................................................................. 15 4. Compatibilidade de Hardware ................................................................... 29 5. Resoluo de Problemas ........................................................................... 43 6. Aplicaes Comerciais ............................................................................. 61 7. Aplicaes de Usurio ............................................................................. 67 8. Configuraao do Kernel ........................................................................... 73 9. Discos, Sistemas de Arquivos e Carregadores de Inicializao (Boot Loaders) ........... 77 10. Administrao do Sistema ....................................................................... 91 11. O sistema X, sistema de interface grfica e os Consoles Virtuais ...................... 107 12. Redes ................................................................................................ 123 13. Segurana .......................................................................................... 131 14. PPP .................................................................................................. 133 15. Comunicaes Seriais ........................................................................... 149 16. Perguntas Variadas .............................................................................. 157 17. As gracinhas do FreeBSD ....................................................................... 167 18. Tpicos Avanados .............................................................................. 173 19. Reconhecimentos ................................................................................ 183

Lista de Tabelas
3.1. Tamanho mximo dos arquivos. .............................................................. 27 12.1. Interfaces de rede baseadas no chipset DEC PCI ........................................ 126

Lista de Exemplos
11.1. Seo Pointer no XF86Config para o mouse com bolinha de scroll, da srie 3.3.x do XFree86, usando a traduo se;rie 3.3.x do XFree86, usando a traduo por meio do moused ...................................................................................... 109 11.2. Seo InputDevice do XF86Config para usar a traduo do X Server na srie 4.X do XFree86. ................................................................................ 109 11.3. Exemplo de .emacs para usar paginamento em mouse com bolinha de scroll. .................................................................................................... 109 11.4. Seo Pointer do XF86Config com um mouse com scroll na srie 3.3.x do XFree86. ............................................................................................ 110 11.5. Seo InputDevice do XF86Config com um mouse com scroll na srie 4.x do XFree86. ........................................................................................ 110 11.6. Arquivo .emacs para usar paginamento em mouse com bolinha de scroll. ..... 111 11.7. Configurao do Emacs para Imwheel .................................................... 111 11.8. Configurao do Xemacs para Imwheel .................................................. 112

Captulo 1. Introduo
Bem vindo s Perguntas Mais Freqentes (FAQ ) para as verses 2.X 4.X do FreeBSD! Como de costume em Perguntas Mais Freqentes (FAQ ) da Usenet, este documento pretende cobrir as perguntas mais freqentes relacionadas ao sistema operacional FreeBSD (e claro, respond-las todas!). Embora originalmente tais documentos tivessem apenas a finalidade de reduzir a utilizao da largura de banda da rede ao evitar que o mesmo tipo de pergunta antiga fosse sempre repetida, FAQs tornaram-se reconhecidamente uma fonte valiosa de informaes. Inmeros esforos foram feitos para tornar este FAQ o mais informativo possvel; se voc tiver alguma sugesto de como esse documento pode ser melhorado, sinta-se a vontade para enviar suas sugestes por e-mail para o Responsvel pelo FAQ <faq@FreeBSD.org >. P: R: O que FreeBSD? Em sntese, FreeBSD um sistema operacional UN*X-like para plataformas i386 e Alpha/AXP, baseado no 4.4BSD-Lite da Universidade da Califrnia em Berkeley, com alguns aprimoramentos adotados do 4.4BSD-Lite2. O FreeBSD tambm baseado, indiretamente, na converso de William Jolitz conhecida como 386BSD para a plataforma i386 do Net/2 da Universidade da Califrnia, em Berkeley; apesar que pouqussimo cdigo originado do 386BSD ainda exista no FreeBSD. Uma descrio mais abrangente do que FreeBSD e como o sistema funciona, pode ser encontrada na pgina principal do FreeBSD. O FreeBSD amplamente utilizado por empresas, Provedores de Servio Internet, pesquisadores, profissionais de informtica, estudantes e usurios domsticos no mundo todo, para trabalho, educao e recreao. Alguns destes exemplos podem ser observados na Galeria FreeBSD,. Para informaes mais detalhadas sobre o FreeBSD, por favor, leia o Manual do FreeBSD. P: R: Qual o objetivo do Projeto FreeBSD? O objetivo do Projeto FreeBSD oferecer software que possa ser utilizado para qualquer finalidade e sem obrigaes anexadas esse cdigo. Muitos de ns investimos significantemente no cdigo (e no projeto como um todo), e com certeza no nos importaramos em receber algum tipo de compensao financeira neste momento ou qualquer outro no futuro, mas ningum no projeto insistir nisso. Acreditamos que a nossa primeira e mais importante misso oferecer cdigo para toda e qualquer pessoa, que possa ser utilizado para qualquer propsito, de forma que esse cdigo oferea o maior nmero possvel de benefcios e formas de uso. Ns acreditamos que este um dos objetivos fundamentais do Software Livre, e um dos quais ns apoiamos com entusiasmo.

O cdigo fonte em nossa rvore que distribudo sob a Licena Pblica Geral GNU (GPL) ou sob a Licena Pblica Geral de Bibliotecas GNU (LGPL) inclue, pode-se dizer, algumas obrigaes anexadas a ele; contudo tais restries visam garantir o acesso livre a esse cdigo, e no o contrrio. Devido complexidades adicionais que envolvem a utilizao comercial de software licenciado sob GPL, ns procuramos substituir tais softwares sob a mais relaxada licena de direito autoral FreeBSD sempre que possvel;. P: R: A licena FreeBSD tem alguma restrio? Sim. Entrentanto, essas restries no definem regras a respeito de como o cdigo deve ser utilizado, mas de como voc deve tratar o Projeto FreeBSD ao utilizar cdigo distribudo pelo mesmo. Se voc tem srias dvidas sobre o liceniamento, sinta-se a vontade para ler a licena. Para os meramente curiosos, a licena pode ser resumida em: No alegue que o cdigo foi escrito por voc. No nos processe se o cdigo falhar. P: R: O FreeBSD pode substituir meu sistema operacional atual? Para maioria das pessoas, sim. Mas essa no uma pergunta to simples assim. A maioria das pessoas, na verdade, no utiliza um sistema operacional. As aplicaes utilizadas pelos usurios que realmente usam o sistema operacional. O FreeBSD projetado de forma a oferecer um ambiente robusto e completo para as aplicaes. Suporta uma enorme variedade de navegadores internet, de sutes de escritrio, clientes de e-mail, programas de manipulao grfica, ambientes de programao, servidores e servios de rede, e praticamente tudo mais que voc pode desejar. A maioria destas aplicaes podem ainda ser gerenciadas atravs da Coleo de Ports . Em circunstncias nas quais precise usar uma aplicao disponvel apenas para um determinado sistema operacional, no possvel substituir aquele sistema operacional. Entretanto, h uma boa chance que alguma aplicao similar que voc precisa, exista para FreeBSD. Se voc quer ter, desde um slido conjunto de aplicaes para escritrio, at um robusto e altamente escalvel servidor Internet, ou simplesmente uma estao de trabalho confivel, onde voc possa realizar seu trabalho sem interrupes, FreeBSD provavelmente vai suprir todas as suas necessidades. Inmeras pessoas pelo mundo todo, desde usurios novatos administradores de sistemas UNIX experientes usam FreeBSD como seu nico sistema operacional para desktop. Se voc est migrando para FreeBSD a partir de algum outro ambiente UNIX, provavelmente j sabe quase tudo o que precisa pra comear a se envolver com o sistema. Entretanto, se o seu histrico em computao envolveu somente sistemas operacionais baseados em ambientes grficos como Windows e antigos Mac OS, ser necessrio investir algum tempo a mais aprendendo a maneira UNIX de fazer

Captulo 1. Introduo as coisas. Este FAQ e o Manual do FreeBSD so excelentes formas de comear sua jornada. P: R: Por que o sistema se chama FreeBSD? Pode ser utilizado sem nenhum encargo monetrio, inclusive para uso comercial. O cdigo fonte completo do sistema operacional livremente distribudo, e pode ser adquirido gratuitamente. O menor nmero possvel de restries foram colocadas sobre o uso do sistema, sua distribuio e sua incorporao outro projeto (comercial ou no). Qualquer pessoa que tiver feito alguma correo ou aprimoramento do cdigo do sistema pode livremente enviar suas alteraes e ter seu cdigo adicionado rvore de cdigo fonte do sistema (obviamente sujeito a prvias anlises). importante ressaltar que a palavra de origem inglesa free em portugus pode ser traduzida como livre e gratuito. Alm disso, a palavra free est sendo usada aqui com dois significados: sem custo e voc pode fazer o que quiser. Free no nome do sistema operacional remete aos dois significados da palavra. O sistema pode ser utilizado sem nenhum custo, e pode ser utilizado da forma que voc quiser. Exceto por algumas poucas coisinhas que voc no pode fazer com o FreeBSD (por exemplo, fingir que foi voc quem o escreveu), voc pode realmente fazer o que bem entender com o sistema. P: R: Qual a verso mais recente do FreeBSD? A verso 9.2 a verso RELEASE mais recente; lanada em September 2013. Esta tambm a verso STABLE mais recente. Resumidamente, -STABLE a srie voltada para Provedores de Servio de Internet, usurios corporativos, ou qualquer usurio que deseje estabilidade e um nmero mnimo de alteraes e novas caractersticas adotadas do snapshot -CURRENT. Lanamentos podem vir de qualquer um dos ramos de desenvolvimento; a srie CURRENT, todavia, deveria ser utilizada apenas por usurios preparados para um ambiente em constante modificao, instvel em muitas de suas caractersticas e extremamente sem garantias (ao menos, quando comparado ao -STABLE). Lanamentos so realizados de alguns em alguns meses. Muitos usurios mantm o cdigo fonte de seus sistemas em mais sincronia com a rvore de desenvolvimento do FreeBSD (veja as perguntas sobre FreeBSD-CURRENT e FreeBSD-STABLE) que isto, fazer isto uma demonstrao de interesse e compromisso visto que o cdigo fonte sofre constantes modificaes. P: R: O que FreeBSD-CURRENT? FreeBSD-CURRENT a verso de desenvolvimento do sistema operacional, que brevemente se tornar a srie 5.0-RELEASE . Exatamente por ser uma srie de desenvolvimento, e portanto sem garantias de estabilidade, o uso desse sistema 3

operacional de interesse exclusivo de desenvolvedores que trabalham no sistema, usurios extremamente experientes que acompanham e analisam (testam) o novo sistema ou daqueles que o fazem por hobby. Veja a seo relevante no Manual do FreeBSD. Se voc no tem familiaridade com o sistema operacional, no um usurio experiente ou no consegue distinguir a diferena entre um problema de verdade e um problema temporrio, ento desaconselhvel que voc use o FreeBSDCURRENT. Essa srie, as vezes, evolui de forma extremamente rpida, e pode se tornar extremamente instvel e subutilizvel por vrios dias seguidos. Usurios do FreeBSD-CURRENT devem ser capazes de analisar qualquer problema no sistema, e apenas relatar a falha se o problema tratar-se de um erro ou um engano no desenvolvimento do mesmo ao invs de pequenos problemas temporrios de instabilidade (glitches). Perguntas sobre o porqu de make world produzir erros a respeito de grupos so devidamente ignoradas ou escrachadas na lista de discusso da srie -CURRENT. Diariamente, snapshots so lanados baseados no estado atual de desenvolvimento dos ramos -CURRENT e -STABLE. Atualmente, distribuies ocasionais de snapshots esto sendo disponibilizadas. Os objetivos por trs do lanamento de cada snapshot so: Testar a verso mais recente do programa de instalao. Dar a oportunidade para aqueles que querem usar o -CURRENT ou o -STABLE mas no tem tempo ou no tem uma conexo Internet rpida o suficiente para estarem diariamente sincronizados com a verso mais atualizada do cdigo no projeto. Manter um ponto de referncia fixo, em relao ao cdigo em desenvolvimento e o cdigo disponvel at ento, para o caso de ns seriamente quebrarmos alguma coisa. (Embora CVS normalmente previna que desastres horrveis como este aconteam :) Garantir que todas as novas caractersticas e funes do sistema que precisem ser testadas, tenham o maior nmero possvel de pessoas potencialmente testandoas. Sob nenhuma circunstncia, nenhum snapshot -CURRENT pode ser considerado software de qualidade de produo para qualquer que seja o propsito, e por mais maduro que o cdigo -CURRENT atual possa parecer. Se a inteno usar um sistema estvel e completamente testado, voc dever usar apenas lanamentos, ou snapshots do ramo -STABLE. Os snapshots lanados podem ser diretamente acessados em ftp:// current.FreeBSD.org/pub/FreeBSD/ para a srie 5.0-CURRENT e em releng4.FreeBSD.org para snapshots da srie 4-STABLE. Snapshots para a srie 34

Captulo 1. Introduo STABLE no esto sendo produzidos na data em que este documento foi escrito (Maio de 2000). Normalmente, os snapshots so gerados uma vez ao dia, para todas as sries em desenvolvimento ativo. P: R: Qual o conceito por trs do FreeBSD-STABLE? Nos primrdios do projeto quando o FreeBSD 2.0.5 foi lanado, a rvore de desenvolvimento do sistema foi dividida em dois ramos. Um ramo foi chamado STABLE e o outro -CURRENT. O FreeBSD-STABLE direcionado para Provedores de Servios de Internet e para outros empreendimentos comerciais que no pretendem conviver com mudanas bruscas ou testar novas caractersticas experimentais do sistema. Ele recebe apenas cdigo que tenha sido totalmente testado, correes de problemas e outras pequenas inovaes incrementais. O FreeBSD-CURRENT, por outro lado, tem sido uma linha sem interrupes visando ao 5.0-RELEASE (e alm) desde o lanamento 2.0. Se uma pequena ilustrao em arte ASCII ajudasse, isto seria o que pareceria:
2.0 | | |[2.1-STABLE] *BRANCH*2.0.5->2.1->2.1.5->2.1.6->2.1.7.1 [2.1-STABLEtermina] |(Mar1997) | | |[2.2-STABLE] *BRANCH*2.2.1->2.2.2-RELEASE->2.2.5->2.2.6-> 2.2.7->2.2.8[fim] |(Mar1997)(Out97)(Abr98)(Jul 98)(Dez98) | | 3.0-SNAPs(inicioQ11997) | | 3.0-RELEASE(Out1998) | |[3.0-STABLE] *BRANCH*3.1-RELEASE(Fev1999)->3.2->3.3->3.4>3.5->3.5.1 |(Mai1999)(Set1999) (Dez1999)(Jun2000)(Jul2000) | |[4.0-STABLE] *BRANCH*4.0(Mar2000)->4.1->4.1.1->4.2-> 4.3->4.4->...Lanamentos4.xfuturo... | |(Jul2000)(Set2000) (Nov2000)

\|/ + [5.0-CURRENTcontinua]

O ramo 2.2-STABLE saiu de produo com o lanamento 2.2.8. O ramo 3-STABLE saiu de produo com o lanamento 3.5.1, que foi tambm o ltimo -RELEASE 3.X. As nicas modificaes ainda realizadas em quaisquer destes ramos so praticamente relacionados apenas correes de segurana. O 4-STABLE o ramo -STABLE em desenvolvimento ativo. A verso mais recente da srie 4-STABLE 9.2-RELEASE, lanada em September 2013. O ramo 5-CURRENT est lentamente progredindo para o que se tornar o FreeBSD 5.0-RELEASE e alm. Veja O que FreeBSD-CURRENT? para obter mais informaes sobre este ramo. P: R: Quando so realizados lanamentos FreeBSD? O Time de engenharia de Lanamento <re@FreeBSD.org > lana uma nova verso do FreeBSD, em mdia, a cada 4 meses. As datas de lanamento so anunciadas com uma certa antecedncia, de forma que os desenvolvedores trabalhando no sistema saibam quando seus projetos precisam estar terminados e testados. Um perodo de testes antecede cada novo lanamento, de forma a garantir que a adio de novas caractersticas no comprometa a estabilidade do lanamento. Muitos usurios consideram tais precaues uma das principais vantagens do projeto FreeBSD, mesmo admitindo que, as vezes, esperar que as novidades sejam adotadas pelo ramo -STABLE possa ser um pouco frustante. Mais informaes sobre o processo de engenharia de lanamento (incluindo a programao de novos lanamentos) podem ser obtidas nas pginas de engenharia de lanamento no stio WWW do FreeBSD. Para as pessoas que precisam, ou desejam um pouco mais de emoo, snapshots binrios so feitos diariamente como discutido acima. P: R: Quem responsvel pelo FreeBSD? As principais decises relacionadas ao Projeto FreeBSD, como os objetivos e direo geral do projeto, e quem tem permisso para adicionar cdigo rvore de cdigo, so tomadas por um grupo central (core team ) composto de 9 pessoas. Existe um grupo muito maior, composto de mais de 200 desenvolvedores, denominados committers, que tem autorizao para fazer alteraes diretamente na rvore de cdigo do FreeBSD. Entretanto, a maioria das alteraes no triviais so previamente discutidas nas listas de discusses, e no existe restrio quanto a quem pode participar das discusses. P: 6 Onde posso obter o FreeBSD?

Captulo 1. Introduo R: Todo lanamento significativo do FreeBSD est disponvel via FTP annimo no stio FTP do Projeto FreeBSD: Para obter o lanamento 3.X-STABLE corrente, 3.5.1-RELEASE, veja diretrio 3.5.1-RELEASE. O lanamento 4-STABLE corrente, 9.2-RELEASE pode ser encontrado no diretrio 9.2-RELEASE. Snapshots 4.X so normalmente criados uma vez ao dia. Lanamentos Snapshot 5.0 so feitos uma vez ao dia no ramo -CURRENT, til apenas tanto para aqueles que gostam de viver no limite quanto para aqueles que precisam usar a verso mais recente possvel com todas as ltimas caractersticas; sejam pessoas conduzindo testes ou desenvolvedores. Informao sobre como obter o FreeBSD em CD, DVD, e outras mdias, pode ser encontrada no Manual do FreeBSD. P: R: Como eu acesso o banco de dados de Relatrios de Problemas? A base de dados de Relatrios de Problemas um banco de pedidos de alteraes realizados pelos usurios. Todos os pedidos de alterao j realizados podem ser consultados (ou novos submetidos) atravs de nossas interfaces PR WWW para submeter (novos pedidos) e consultar (j submetidos). O comando sendpr(1) tambm pode ser usado para submeter relatrios de problema e pedidos de alterao por meio de correio eletrnico. Antes de enviar um relatrio de problema, por favor, leia o artigo Escrevendo Relatrios de Problemas para o FreeBSD, que d boas dicas de como escrever um bom relatrio de problema. P: R: Como eu me torno um espelho do stio WWW FreeBSD? Existam vrias formas de espelhar o stio WWW do FreeBSD. Voc pode obter os arquivos j formatados a partir de um servidor CVSup FreeBSD usando o aplicativo net/cvsup. O arquivo /usr/share/examples/ cvsup/www-supfile oferece um exemplo de configurao do CVSup para espelhar o servidor WWW do projeto FreeBSD. Voc pode obter o cdigo fonte do stio WWW do projeto FreeBSD a partir de qualquer servidor FTP do projeto usando sua ferramento de espelhamento ftp favorita. Considere que estes fontes devem ser processados para public-los em formato WWW tradicional. Voc pode comear a espelhar o projeto a partir de ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www. P: Que outras fontes de informaes sobre o FreeBSD existem? 7

R:

Por gentileza, queira verificar a lista de Documentao no stio WWW principal FreeBSD.

Captulo 2. Documentao e Suporte


P: R: Quais bons livros existem sobre FreeBSD? O projeto FreeBSD produz um grande nmero de documentos disponveis em http://www.FreeBSD.org/docs.html. Alm destes, outros livros recomendados so referenciados nas Bibliografias disponveis ao final deste FAQ e do Manual do FreeBSD. A documentao est disponvel em outros formatos, como texto puro (ASCII) ou Postscript? Claro. A documentao pode ser obtida em uma variedade de formatos e opes de compresso no servidor FTP do FreeBSD, sob o diretrio /pub/FreeBSD/doc/. A documentao organizada em diversas categorias, como: O nome do documento, como faq ou Manual do FreeBSD . A codificao e lngua do contedo do documento. Tal categorizao baseada nos nomes de localizao, que podem ser encontrados sob /usr/share/locale no seu FreeBSD. Atualmente existem documentos nas seguintes lnguas e codificaes: Nome
en_US.ISO8859-1 de_DE.ISO8859-1 es_ES.ISO8859-1 fr_FR.ISO8859-1 ja_JP.eucJP ru_RU.KOI8-R zh_TW.Big5

P: R:

Significado Ingls Americano Alemo Espanhol Francs Japons (codificao EUC) Russo (codificao KOI8-R) Chins (codificao Big5)

Nota
Alguns documentos podem no estar disponveis em todas as lnguas.

Formato da documentao. A documentao produzida em vrios formatos. Cada qual com suas vantagens e desvantagens. Alguns formatos so mais apropriados para leitura on-line, enquanto outros so mais agradveis estticamente em formato impresso. Disponibilizar a documentao em todos estes formatos, garante que os leitores podero sempre ler os trechos de seu interesse, tanto no monitor do seu computador quanto em papel impresso. Atualmente os formatos disponveis so: Formato
html-split html pdb

Significado Uma srie de pequenos documentos HTML, devidamente ligados. Um nico grande arquivo HTML contendo todo o documento. Formato de banco de dados pra Palm Pilot, para ser usado com o visualizador iSilo. PDF (Formato de Documento Portvel) da Adobe Postscript RTF (Formato de Texto Enriquecido) da Microsofta Texto puro

pdf ps rtf txt


a

no Word. Digite CTRL+A, CTRL+END, F9 depois de abrir o documento no Word, para atualizar a numerao das pginas.

A nmerao de pgina no automaticamente atualizada quando este tipo de arquivo aberto

As tcnicas de compresso e empacotamento dos arquivos. Atualmente, 3 destes formatos esto em uso: 1. Para o formato html-split , os arquivos so todos empacotados com tar(1). O resultado um arquivo .tar que posteriormente comprimido usando as tcnicas de compresso detalhadas a seguir. 2. Todos os outros formatos geram apenas um arquivo, nomeado book.formato (por exemplo, book.pdb , book.html , e outros). Estes arquivos so, ento comprimidos utilizando trs tcnicas de compresso: Tipo
zip

Descrio Formato Zip. Se descomprimir este voc quiser formato no

10

Captulo 2. Documentao e Suporte Tipo Descrio

FreeBSD, ser necessrio instalar o port archivers/unzip antes. Formato GNU Zip. Para descomprimir estes arquivos, use o comando gunzip(1) que faz parte do FreeBSD. Formato BZip2. Esse formato menos popular que os outros, mas geralmente produz arquivos menores. Instale o port archivers/ bzip2 para descomprimir arquivos deste formato.

gz

bz2

Portanto, o Manual do FreeBSD em formato Postscript comprimido com o BZip2 ser armazenado como book.ps.bz2 sob o diretrio handbook/ . 3. A documentao formatada est disponvel ainda como um pacote FreeBSD. Aps escolher o formato e o mecanismo de compresso, voc deve decidir se vai ou no pegar o documento em formato de pacote FreeBSD. A vantagem de baixar e instalar os pacotes que a documentao pode ento ser gerenciada usando os comandos de gerenciamento de pacotes FreeBSD, como pkg_add(1) e pkg_delete(1). Se decidir baixar e instalar o pacote, ento voc deve conhecer o nome do arquivo antes de comear. Os arquivos de documentao-como-pacotes esto estocados em um diretrio chamado packages . Cada arquivo de pacote segue o padro de nome document-name.lang.encoding.format.tgz . Por exemplo, o FAQ , em lngua Inglesa e formato PDF, estar no pacote de nome faq.en_US.ISO8859-1.pdf.tgz . Sabendo isto, voc pode usar o seguinte comando pra instalar o pacote contendo o FAQ na lngua Inglesa e formato PDF:
#pkg_add ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/packages/ faq.en_US.ISO8859-1.pdf.tgz

Depois disso, voc pode usar o pkg_info(1) pra determinar onde o documento foi instalado.
#pkg_info-ffaq.en_US.ISO8859-1.pdf Informationforfaq.en_US.ISO8859-1.pdf: Packinglist:

11

Packagename:faq.en_US.ISO8859-1.pdf CWDto/usr/share/doc/en_US.ISO8859-1/books/faq File:book.pdf CWDto. File:+COMMENT(ignored) File:+DESC(ignored)

Como pode ver, book.pdf

en_US.ISO8859-1/books/faq .

ter sido instalado sob /usr/share/doc/

Se voc preferir no usar pacotes, ser necessrio baixar os arquivos comprimidos, depois descomprim-los e copiar os documentos apropriados para os lugares corretos. Por exemplo, a verso do FAQ dividido em vrios arquivos HTML, comprimido usando gzip(1), pode ser encontrado no arquivo doc/en_US.ISO8859-1/books/ faq/book.html-split.tar.gz . Para baixar e descomprimir aquele arquivo, voc deveria fazer o seguinte.
#fetchftp://ftp.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/ books/faq/book.html-split.tar.gz #gzip-dbook.html-split.tar.gz #tarxvfbook.html-split.tar

Ser criada, ento, uma srie de arquivos .html . O principal arquivo chamado index.html contendo o ndice, material introdutrio e links para outras partes do documento. Posteriormente, voc pode copiar ou mover esses arquivos pra onde voc quiser. P: R: P: R: P: R: Onde posso obter informaes sobre as listas de discusso FreeBSD? Voc pode encontrar uma vasta gama de informaes na seo do Manual do FreeBSD sobre listas de discusso. Que grupos de notcias (news groups) existem sobre o FreeBSD? Informaes completas podem ser encontradas na seo do Manual do FreeBSD sobre grupos de notcias (newsgroups). Existem canais de bate-papo retransmitido via Internet (IRC) FreeBSD? Sim, a maioria das grandes redes de bate-papo retransmitido via Internet (IRC) tem um canal de bate-papo sobre FreeBSD: O canal #FreeBSD na EFNet essencialmente um frum sobre FreeBSD, mas no entre no canal se voc procura suporte tcnico, nem se voc est procurando uma maneira de evitar a leitura de pginas de manual ou fazer suas prprias pesquisas. Este essencialmente um canal de bate-papo geral. Assuntos como sexo, esportes ou armas nucleares so to comuns quanto FreeBSD no canal. Lembre-se, Voc Foi Avisado! Para conectar-se, use o servidor irc.chat.org . 12

Captulo 2. Documentao e Suporte O canal #FreeBSDhelp na EFNet dedicado a suporte e auxilio de usurios de FreeBSD. Os participantes neste canal so bem mais receptivos a perguntas que os do canal #FreeBSD . O canal #FreeBSD na DALNET pode ser acessado em irc.dal.net nos Estados Unidos, e irc.eu.dal.net na Europa. O canal #FreeBSD na UNDERNET pode ser acessado em us.undernet.org nos Estados Unidos, e eu.undernet.org na Europa. Partindo do princpio que esse um canal de ajuda, esteja preparado para ler todos os documentos a que for referido. O canal #FreeBSD na HybNet um canal de ajuda. Uma lista de servidores pode ser encontrada no stio WWW da HybNet. Cada um destes canais independente, e exatamente por estarem em redes distintas, no conectada ou relacionada entre si. Os estilos de bate-papo em cada um dos canais so bastante distintos, pode ser necessrio testar cada um para descobrir qual mais adequado ao seu estilo pessoal de bate-papo. Como em toda rede de bate-papo retransmitido via Internet (IRC), nem considere acessar os canais se voc ofende-se facilmente ou se voc no se d bem com muita gente jovem (e alguns bem velhos) que usam as mais irregulares formas de escrita e conversao possvel, quase sempre assassinando sem o menor pudor todos os princpios verbais - de qualquer lngua que seja. P: R: Onde eu consigo treinamento em e suporte comercial ao FreeBSD? DaemonNews oferece treinamento em e suporte comercial ao FreeBSD. Mais informaes podem ser obtidas no stio WWW BSD Mall. FreeBSD Services oferece suporte comercial ao FreeBSD no Reino Unido (alm de vender o FreeBSD em mdia DVD). Veja o stio WWW deles para maiores informaes. A FreeBSD Mall oferece suporte comercial ao FreeBSD. Maiores informaes podem ser obtidas no stio WWW deles. Qualquer outra organizao que oferea treinamento em ou suporte ao FreeBSD deve entrar em contato com o projeto para serem listadas aqui.

13

Captulo 3. Instalao
Nik Clayton
<nik@FreeBSD.org >

P: R:

De qual arquivo eu devo baixar o FreeBSD da rede? At a verso 3.1 era necessrio apenas um disquete para instalao do FreeBSD, o disco era o floppies/boot.flp . Contudo, depois que o 3.1 foi lanado, o Projeto adicionou ao kernel genrico o suporte a uma grande variedade de dispositivos, de forma que ele passou a consumir mais espao. Por este motivo, desde a srie 3.X so necessrios dois disquetes, o floppies/kernel.flp e o floppies/mfsroot.flp . Essas imagens precisam ser copiadas para disquetes, usando ferramentas como o fdimage ou o dd(1). Caso seja necessrio baixar da rede a distribuio do sistema (por exemplo, para uma instalao por meio de um sistema de arquivos DOS), voc ter que obter as seguintes estruturas da distribuio padro: bin/ manpages/ compat*/ doc/ src/ssys.* Para obter instrues completas sobre o procedimento de instalao do FreeBSD e maiores detalhes sobre os meios de instalao, por gentileza, consulte a seo de instalao no Manual do FreeBSD.

P: R:

O que eu devo fazer se as imagens de disquete no couberem em um nico disco? Um disquete de 3.5 polegadas (1,44 MB) armazena at 1474560 bytes de dados. O tamanho da imagem de inicializao de exatamente 1474560 bytes. Erros comuns, cometidos na preparao dos discos de inicializao, so: Baixar a imagem de disco via FTP sem utilizar o modo de transferncia binrio. Alguns clientes de FTP - especialmente navegadores de Internet - costumam usar por padro o modo de transferncia ascii nas sesses FTP, e para normalizar o arquivo de acordo com o sistema, eles tentam alterar os caracteres finais de cada linha do arquivo. Invariavelmente esse comportamento resulta em baixar uma imagem de inicializao (boot) corrompida. Verifique o tamanho da imagem que

voc tem em mos, se exatamente do mesmo tamanho da imagem no servidor. Caso o tamanho no seja exatamente o mesmo, voc pode suspeitar do arquivo que voc baixou. Para garantir que esse problema no ocorra, digite binary na prompt de comando do seu cliente FTP, ou defina as preferncias do programa para utilizar o modo binrio. A sim, faa baixe da rede a imagem de inicializao. Usar o comando copy do DOS (ou simplesmente copiar, por meio da Interface Grfica do sistema) para transferir a imagem de inicializao para o disquete. Programas como o copy no vo funcionar para copiar a imagem de inicializao direto para o disquete, exatamente porque a imagem foi criada de forma que ela seja carregada diretamente. A imagem tem o contedo completo que o disquete deve ter, com seus dados alocados trilha-a-trilha, e portanto no pode ser copiado para o disquete como um simples arquivo. Voc tem que copiar a imagem para o disquete usando alguma ferramenta de cpia crua (raw copy, como o fdimage ou o rawrite ) como descrito no guia de instalao do FreeBSD. P: R: P: R: Onde esto as instrues para instalar o FreeBSD? As instrues de instalao do FreeBSD podem ser encontradas na seo de instalao do FreeBSD no Manual do FreeBSD. O que preciso para usar o FreeBSD? Voc vai precisar, no mnimo de um PC 386 com 5MB de memria RAM e no mnimo 60 MB em disco. Essa configurao permite o uso de uma placa de vdeo MDA simples, mas para usar o X11R6 necessrio uma placa de vdeo VGA ou mais avanada. Para mais informaes consulte Captulo4, Compatibilidade de Hardware P: R: Eu tenho apenas 4 MB de memria RAM. Posso usar o FreeBSD? O FreeBSD 2.1.7 foi a ltima verso do sistema que rodava com apenas 4MB de memria. A partir do FreeBSD 2.2, necessrio no mnimo 5MB de memria para usar o sistema. Praticamente todas as verses do FreeBSD podem rodar com 4MB de memria RAM, contudo, a instalao do sistema operacional no pode ser feita com apenas 4MB. Voc pode colocar mais memria para o processo de instalao do sistema, e depois de instalado, voltar a mquina para apenas 4MB de memria, ou como alternativa, instale o seu disco rgido em uma mquina com mais de 4MB, efetue a instalao do sistema, e depois instale o seu disco de volta na mquina com apenas 4MB. O FreeBSD 2.1.7 no ir instalar em sistemas que usam 640 Kb de memria base + 3 MB de memria extendida. Se sua placa me pode fazer o remapeamento da memria subutilizada que vai sobrar dos 640kB da regio de 1MB, ai sim, 16

Captulo 3. Instalao voc vai conseguir usar o FreeBSD 2.1.7. Entre no Setup da sua BIOS, procure a opo ``remap'' e habilite-a. Talvez voc tenha que desabilitar a opo de ROM shadowing. Com certeza mais fcil voc conseguir mais 4MB apenas para a instalao, compilar um kernel customizado e portanto menor, e ai sim, tirar esses 4MB sobresalentes e usar o sistema com apenas os 4MB originais. Tambm possvel instalar o FreeBSD 2.0.5 e depois atualiz-lo para o 2.1.7 com a opo ``upgrade'' disponvel no programa de instalao do FreeBSD 2.1.7. Depois de instalado o sistema, voc pode compilar um kernel personalizado, que provavelmente ir permitir que o sistema seja usado com 4MB de memria apenas. Existem relatos de sucesso na utilizao do sistema com apenas 2MB de memria, contudo, nesse caso praticamente impossvel usar alguma outra aplicao junto ao sistema operacional. P: R: Como eu crio meu prprio disquete de instalao? Atualmente no existe uma forma de simplesmente criar um disco de instalao personalizado. Para criar um disquete personalizado voc ter que preparar todo um novo release , o qual, a sim, teria instrues de instalao. Para montar um release personalizado siga as instrues do artigo de Engenharia de Release article. P: R: O Windows 95/98 pode co-existir com o FreeBSD? Sim. Primeiro voc deve instalar o seu Windows, e depois instalar o FreeBSD. O gerenciador de inicializao (boot) do FreeBSD vai ser instalado na MBR do seu disco, e vai conseguir controlar o inicializao entre o FreeBSD e seu Windows. Se voc instalar o Windows depois do FreeBSD, a instalao dele ir sobrescrever o setor de inicializao (boot) do seu disco, e conseqentemente seu gerenciador de inicializao (boot), sem avisar ou pedir qualquer confirmao. Se esse for o caso, leia a prxima seo. O Windows 95/98 sobrescreveu meu gerenciador de inicializao (boot)! Como eu instalo ele de volta? Voc pode reinstalar o gerenciador de inicializao (boot) do FreeBSD de uma das 3 maneiras: Sob o DOS, entre no diretrio tools/ da sua distribuio do FreeBSD (seu CDROM por exemplo) e procure o programa bootinst.exe . Depois, execute-o da seguinte forma:
...\TOOLS> bootinst.exeboot.bin

P: R:

e o gerenciador de inicializao (boot) ser reinstalado. Faa a inicializao do FreeBSD pelos disquetes de instalao ou pelo CDROM novamente. Entre na opo "Custom" do menu de instalao, escolha a o tem de 17

parties (Partition), selecione o drive do disco que continha o seu gerenciador de inicializao (boot) (normalmente, se trata do primeiro disco) e ento voc entra no editor de parties. No faa nenhuma alterao, apenas aperte a tecla W (Write). O programa de instalao ir pedir a confirmao, se voc quer gravar suas informaes mesmo sem ter feito nenhuma alterao. Escolha Sim. O programa ir perguntar se voc deseja instalar o gerenciador de inicializao (boot) do FreeBSD ou se voc deseja deixar o setor de inicializao (boot) intacto (ou instalar um setor de inicializao (boot) padro) exatamente como no instante da primeira instalao do FreeBSD. Escolha Boot Manager. Agora o gerenciador de inicializao (boot) ser reinstalado no disco. Saia do programa de instalao e reinicie o processo de inicializao pelo HD normalmente. Inicie o FreeBSD com o disquete (ou CD) de inicializao tradicional, escolha a opo Fixit no menu do sysinstall. Escolha entre o disquete de correo ou o segundo CDROM (a opo live na distribuio padro do FreeBSD) no menu a seguir, e entre na shell de correo do sistema. Em seguida execute o comando:
Fixit# fdisk-B-b/boot/boot0bootdevice

substituindo bootdevice pela device controladora do seu disco, como por exemplo, ad0 (para o primeiro disco IDE),ad4 (para o primeiro disco IDE na controladora secundria), da0 (para o primeiro disco SCSI), etc. P: R: O meu IBM Thinkpad srie A, T ou X trava sempre, quando eu tento inicializar (boot) o FreeBSD. Como eu resolvo isso? Um bug nas primeiras verses da BIOS da IBM nessas mquinas, erroneamente identifica as parties FreeBSD como parties FAT especiais. Quando a BIOS tenta reconhecer a partio FreeBSD, o sistema trava. De acordo com a IBM1, os seguintes modelos/BIOS tem esse problema corrigido: Modelo T20 T21 Reviso da BIOS

IYET49WW ou posterior

A20p A21p A21e


1

KZET22WW ou posterior IVET62WW ou posterior IWET54WW ou posterior

A20m A21m

KYET27WW ou posterior KUET30WW

KXET24WW ou posterior

Em um e-mail enviado por Keith Frechettei <kfrechet@us.ibm.com >.

18

Captulo 3. Instalao Existem relatos de que as revises posteriores das BIOS IBM re-introduziram esse bug. Essa mensagem enviada por Jacques Vidrine para a lista de discusso de temas especficos ao uso do FreeBSD em notebooks e demais equipamentos mveis. descreve uma srie de procedimentos que podem funcionar no seu laptop IBM, caso seja uma verso um pouco mais nova, e que no consiga inicializar (boot) o FreeBSD corretamente. Voc pode ainda fazer uma atualizao ou desatualizao (upgrade ou downgrade) da BIOS. Se a BIOS mais antiga, e voc no considera sua atualizao, existe uma opo que pode sanar seu problema. A instalao do FreeBSD pode ser feita alterando-se a identificao da partio (partition ID) do sistema, e depois instalar novos setores de inicializao (boot) que podem controlar uma partition ID diferente. O primeiro passo restaurar o seu laptop ao ponto onde ele pode fazer os auto-testes, ou seja, os testes bsicos de I/O da BIOS. Para fazer isso, basta ligar o computador de forma que ele no consiga encontrar a partio primria do FreeBSD. A maneira mais simples de faze-lo, retirando o disco rgido do seu laptop, e temporariamente ligando-o em um ThinkPad mais antigo (como oThinkPad 600) ou em um PC comum, com um cabo de converso apropriado. Uma vez feito isso, basta apagar a partio FreeBSD e colocar o disco de volta no laptop. Agora sim, o ThinkPad deve estar de volta ao estado onde ele pode reconhecer o disco. Com a mquina funcionando, basta seguir as prximas instrues para fazer o seu FreeBSD instalar: 1. Baixe da rede os arquivos boot1 e boot2 no site http://people.FreeBSD.org/ ~bmah/ThinkPad/. Coloque esses arquivos em algum lugar onde voc possa acess-los posteriormente. Instale o FreeBSD normalmente no ThinkPad. No use o modo Dangerously Dedicated . No reinicie o sistema quando o processo de instalao for concludo. V para a Shell Hologrfica de Emergncia (ALT+F4) ou inicie uma shell de recuperao - fixit Use o fdisk(8) para alterar a partition ID de 165 para 166 (166 o ID usado pelo OpenBSD). Coloque os arquivos boot1 e boot2 no sistema de arquivos local. Use o disklabel(8) para escrever o boot1 e o boot2 na sua partio FreeBSD.
#disklabel-B-bboot1-sboot2ad0sn n o nmero da partio onde o FreeBSD est instalado.

2.

3. 4. 5. 6.

19

7.

Reinicie o sistema. O gerenciador de inicializao (boot) oferecer a opo de iniciar o OpenBSD , mas na verdade essa opo estar iniciando o FreeBSD.

Agora, se voc quer manter os sistemas operacionais OpenBSD e FreeBSD no mesmo laptop ThinkPad, pode considerar isso um exerccio prtico que fica a critrio do leitor. P: R: Posso instalar o FreeBSD em um disco com bad blocks? At a verso 3.0, o FreeBSD tinha um utilitrio chamado bad144 , que automaticamente remapeava os bad blocks. Atualmente, os discos IDE modernos so capazes de fazer isso sozinhos, portanto o bad144 foi retirado da rvore do FreeBSD. Se sua inteno instalar o FreeBSD 3.0 ou alguma verso mais recente, ns sinceramente aconselhamos que voc compre um novo disco. Se voc no quer comprar um disco novo, ento use o FreeBSD 2.X. Se voc esta tendo problemas de bad block com algum disco IDE moderno, provavelmente o disco ser perdido em breve, j que ele est to corrompido que a controladora interna no est conseguindo corrigir e remapear os bad blocks. Sugerimos que voc compre um disco novo logo, e realize cpia de segurana (backup) dos dados, enquanto o disco ainda funciona. Se o drive de disco SCSI e est apresentando bad blocks, leia essa resposta. P: R: Eu acabei de atualizar o sistema da srie 3.X para 4.X, e a minha primeira inicializao (boot) falhou com a mensagem bad sector table not supported O FreeBSD 3.X e anteriores suportavam o programa bad144 , que automaticamente remapeava bad blocks. O FreeBSD 4.X e posteriores no suportam mais esse programa, devido ao fato que os controladores de discos IDE atuais conseguem remapear bad blocks automaticamente. Leia essa pergunta para mais informaes. Para corrigir esse problema depois de uma atualizao, necessrio mover fisicamente o disco com problemas para um outro sistema FreeBSD funcional e usar o disklabel(8) da forma discutida a seguir. P: R: Como eu fao se um disco tem informaes criadas pelo bad144 antes de atualizar o sistema, e depois de atualizado para o FreeBSD 4.0 ou posterior, a inicializao falha? Use o disklabel(8) para identificar esse ambiente. disklabel -r drive device vai te mostrar o contedo do disco. Procure o campo flags . Se encontrar a informao flags: badsect porque esse disco est usando o bad144. Por exemplo, o disco a seguir tem o bad144 habilitado:
#disklabel-rwd0 #/dev/rwd0c: type:ESDI disk:wd0s1 label:

20

Captulo 3. Instalao
flags:badsect bytes/sector:512 sectors/track:63

P: R:

Como eu removo o bad144 do meu sistema anterior ao 4.X de forma que eu possa atualiz-lo com segurana? Use o comando disklabel -e -rwd0 para editar as informaes do seu disco. Basta retirar a palavra badsect do seu campo flags, salvar a alterao e sair do programa. O bad144 ainda estar ocupando algum espao no seu disco, mas ele estar funcional para srie 4.X e posteriores. Caso seu disco tenha um nmero muito alto de bad blocks, recomendado a troca do disco.

P: R:

Coisas estranhas acontecem quando inicio o sistema com o disco de instalao! O que est acontecendo? Se sua mquina est desligando ou espontneamente reiniciando sempre que voc tenta iniciar o sistema com o disco de instalao, aqui vo algumas perguntas que voc deveria fazer a si mesmo: 1. O disco de instalao foi feito a partir de um disquete novo, recm formatado e completamente livre de erros (de preferncia algum disco que acabou de sair da caixa, ao contrrio desse seu disco que estava perdido h quase 3 anos debaixo da cama)? 2. Voc baixou da rede a imagem em modo binrio? (no se envergonhe, at o melhor de ns j baixou um arquivo binrio em modo ASCII ao menos uma vez na vida!) 3. No Windows 95 ou 98, voc usou o fdimage ou o rawrite em modo DOS? Esses sistemas operacionais as vezes interferem na forma com que os programas escrevem dados diretamente no hardware, exatamente o que o processo de criao da imagem de disco faz, mesmo que voc execute um prompt do DOS no ambiente grfico o problema pode ocorrer. Ainda existem notcias de arquivos de imagens sendo corrompidos pelo Netscape, durante o download, por isso mais seguro utilizar um cliente de FTP diferente.

P: R:

Eu inicializei o FreeBSD a partir do meu CDROM ATAPI, mas o programa de instalao diz que o CDROM no foi encontrado. Para onde ele foi? A causa desse problema curioso a configurao errada do seu drive de CDROM. Hoje em dia muitos PCs vem com o CDROM instalado como escravo na segunda controladora IDE, sem nenhum disco ou drive ptico do tipo mestre na mesma controladora. De acordo com as especificaes ATAPI esse tipo de configurao incorreta e ilegal. Alguns sistemas, como o Windows, simplesmente ignoram uma 21

srie de especificaes legais na arquitetura de computadores pessoais, e acabam oferecendo suporte a essa configurao errnea - o que mais tarde pode causar outros conflitos. Depois que o sistema inicia, a BIOS passa a ignorar esse drive, e por isso o FreeBSD no consegue encontr-lo, para completar a instalao. Reconfigure o seu computador de forma que o CDROM esteja como mestre na sua controladora IDE, ou que exista um outro perifrico como mestre na controladora onde o CD estiver como escravo. P: R: Posso instalar o FreeBSD no meu laptop via PLIP (IP em Linha Paralela)? Claro. Use o cabo laplink padro. Caso necessrio, verifique a seo de PLIP do Manual do FreeBSD para obter detalhes sobre a instalao do FreeBSD via rede em porta paralela. Se voc est usando o FreeBSD 3.X ou anterior, d uma olhada na pgina de Computao Mvel. P: R: Qual geometria eu devo utilizar para um disco?

Nota
Por geometria, ns entendemos o nmero de cilindros, cabeas e setores/trilhas de um disco. Por convenincia, vamos nos referir esses dados como C/H/S (Cylinders/ Heads/Sectores). a partir dessa informao que a BIOS dos PCs definem quais reas de um disco podem ser usadas para leitura/escrita. A geometria de disco costuma causar uma srie de confuses entre administradores de sistemas menos experientes. Para comear, a geometria fsica de um disco SCSI totalmente irrelevante, pois o FreeBSD trabalha com blocos de discos. Na verdade, no existe exatamente a geometria fsica de um disco, visto que a densidade de um setor varia de acordo com os discos. Os fabricantes chamam de geometria fsica as especificaes que eles definem para que o menor espao possvel em disco seja desperdiado. Em discos IDE, o FreeBSD trabalha com as informaes de C/H/S, mas todos os dispositivos modernos, internamente convertem essa informaes em referncias a blocos de disco. O que importa, portanto, a geometria lgica. O valor lgico a resposta que a BIOS obtm quando pergunto qual sua geometria? ao disco. esse valor, ento, que usado para definir a forma de acesso ao dispositivo de armazenamento. O FreeBSD usa as informaes da BIOS quando inicializa (boot), e por isso extremamente importante obter essa informao de maneira correta. No geral, se voc tem mais de 22

Captulo 3. Instalao um sistema operacional no mesmo disco, eles devem concordar no valor lgico da geometria do disco, caso contrrio voc ter srios problemas ao iniciar o sistema. Em discos SCSI, a geometria ser utilizada depende do suporte traduo extendida definido na sua controladora de disco (normalmente esse suporte chamado de support for DOS disks >1GB, que identifica o suporte discos DOS cuja capacidade de armazenamento maior que 1GB - ou alguma identificao similar.). Se essa opo est desabilitada, ento o C/H/S do disco ser de N cilindros, 64 cabeas e 32 setores/trilhas, onde o valor N equivale a capacidade (em MB) do disco. Por exemplo, um disco de 2GB teria 2048 cilindros, 64 cabeas e 32 setores/trilhas. Se a opo estiver habilitada (normalmente ela habilitada por padro, para sanar algumas limitaes de sistemas baseados em MSDOS), e a capacidade do disco forma maior que 1GB, os valores C/H/S do disco sero M cilindros, 63 setores por trilha (no 64) e 255 cabeas, sendo 'M' a capacidade do disco, em MB, dividido por 7.844238 (!). Ento, por exemplo, o mesmo disco de 2GB nessa situao teria 261 cilindros, 63 setores por trilha e 255 cabeas. Se voc no entendeu o porque disso, ou se o seu FreeBSD falha no momento de reconhecer a geometria correta do seu disco durante a instalao, existe uma forma de tentar resolver esse problema. Crie uma pequena partio do tipo DOS no seu disco, e verifique se a BIOS consegue identificar corretamente a geometria do mesmo. Caso consiga, a instalao vai se completar com tranqilidade, e a pequena partio DOS pode sempre ser deletada, com o editor de parties do FreeBSD. Como alternativa, existe uma aplicao gratuitamente disponvel com a distribuio do FreeBSD, chamada de pfdisk.exe . Ela pode ser encontrada sob o diretrio tools no CDROM do FreeBSD ou nos servidores FTP do projeto. Esse programa serve para descobrir qual a geometria usada por outros sistemas operacionais no disco local. Nesse caso, esse valor pode ser definido no editor de parties do FreeBSD. P: R: Existem restries quanto ao particionamento de discos? Sim, existem. A principal delas, que a partio root no pode ter mais de 1024 cilindros, seno a BIOS no consegue iniciar o kernel do sistema a partir dessa partio. (Note que essa uma limitao das BIOS dos computadores pessoais, e no do FreeBSD). Em um disco SCSI, essa limitao implica que a partio raiz (root) deve estar alocada nos primeiros 1024MB do disco (ou nos primeiros 4096MB, caso o suporte a traduo extendida esteja habilitada - veja pergunta anterior). Em discos IDE, o valor correspondente equivale a 504MB para partio raiz (root). P: R: O FreeBSD suporta programas gerenciadores de discos? O FreeBSD reconhece apenas o Ontrack Disk Manager. Outros gerenciadores de discos no so suportados. 23

Se sua inteno usar o disco com FreeBSD, voc no precisa de um gerenciador de discos. Basta configurar o disco para o total de espao que a BIOS reconhece (normalmente 504MB) e o FreeBSD vai conseguir identificar o tamanho real do disco. Se voc estiver usando um disco antigo com uma controladora MFM, ser necessrio avisar ao FreeBSD quantos cilindros o disco tem. Caso queira usar o disco com FreeBSD e algum outro sistema operacional, provavelmente tambm no ser necessrio um gerenciador de discos. Certifiquese apenas que a partio de inicializao (boot) do FreeBSD e a partio do outro sistema operacional estejam nos primeiros 1024 cilindros do disco. Normalmente, para administradores de sistemas que tomam decises racionais, 20MB de espao em uma partio de inicializao (boot) mais que o suficiente. P: R: Quando eu inicio o FreeBSD, eu obtenho a mensagem Missing Operating System. O que est acontecendo? Esse um caso tpico do FreeBSD e o DOS ou qualquer outro sistema operacional discordando de suas definies em relao a geometria do disco. Provavelmente voc ter que reinstalar o FreeBSD, mas se seguir as instrues citadas nas perguntas anteriores, raramente esse problema vai acontecer. Porque eu no consigo passar da tela F? do gerenciador de inicializao (boot)? Esse mais um sintoma do problema descrito na pergunta anterior. A geometria que a sua BIOS reconhece no equivale ao valor definido no FreeBSD! Se a sua controladora de disco ou sua BIOS suportam o modo de traduo de cilindros (normalmente chamado de >1GB drive support), tente alterar essa opo e reinstalar o FreeBSD. Eu preciso instalar todos os fontes do sistema operacional? Geralmente no, mas altamente recomendvel que voc instale ao menos os fontes base , que incluem inmeros arquivos mencionados ao longo desse documento, como as fontes do sistema, sys que inclui as fontes do kernel do FreeBSD, sem os quais no se pode criar um kernel personalizado. No existe qualquer dependncia do sistema operacional em relao aos seus fontes; com a nica exceo do programa config(8), o resto do sistema operacional no precisa dos fontes para funcionar. Os outros fontes do sistema operacional - exceto os fontes do kernel podem ser montados remotamente (via NFS, por exemplo) em qualquer lugar, e ainda assim novos binrios podem ser compilados a partir dos mesmos. Devido a restrio nica dos fontes do kernel, recomendvel que os outros fontes no sejam diretamente montados sob /usr/src mas sim, que sejam montados separadamente e depois interligados com links simblicos apropriados. Tendo todos os fontes disponveis, e sabendo reconstruir o sistema a partir dos mesmos, ser muito mais fcil manter o FreeBSD sincronizado e atualizado com futuros releases. 24

P: R:

P: R:

Captulo 3. Instalao Para escolher um subconjunto dos fontes do sistema, escolha a opo Custom quando estiver na opo Distributions do programa de instalao do sistema. P: R: Eu preciso criar um kernel personalizado? Construir um novo kernel costumava ser uma obrigao na instalao do FreeBSD, mas hoje em dia existe uma interface de configurao do kernel muito mais amigvel, que permite a redefinio de recursos do sistema. Para acessar essa ferramenta, basta inicializar (boot) o sistema com a opo -c no prompt de (boot: ). Em especial, os principais perifricos ISA - normalmente os mais problemticos podem ser facilmente configurados com essa opo. Ainda recomendvel que se construa um kernel personalizado, apenas com suporte aos equipamentos e caractersticas do sistema que voc precisa, de forma a economizar recursos no sistema (especialmente memria RAM), mas essa recompilao no mais uma obrigao na maioria dos sistemas - mas sem dvida um hbito saudvel. P: R: Eu devo usar criptografia DES, Blowfish, ou MD5 para senhas do sistema? Como eu defino qual delas o usurio deve usar? O formato padro para senhas no FreeBSD a criptografia MD5. Esse padro considerado mais seguro do que os formatos tradicionais de senhas Unix, que normalmente eram baseados no algortimo DES. O FreeBSD ainda pode trabalhar com senhas em formato DES caso voc precise compartilh-las com sistemas que ainda armazenam suas senhas no formato antigo - e menos seguro - dos sistemas Unix originais (para isso voc ter que instalar a distribuio crypto via sysinstall ou apartir do cdigo fonte). Instalando as bibliotecas crypto ser possivel utilizar outros tipos de criptografia, como o formato Blowfish, que ainda mais seguro do que o MD5. A definio de qual codificao utilizar definida no campo passwd_format do arquivo de configuraes de login, o /etc/login.conf . Esse campo deve ter o valor des, blf (caso suas bibliotecas estejam disponveis) ou md5. Veja a pgina de manuais do login.conf(5) para maiores informaes. Por que o disco de inicializao (boot) inicia, mas trava na tela Probing Devices... ? Se voc tem um drive Zip IDE ou um Jaz conectado ao seu computador, remova-o e tente de novo. A inicializao (boot) de instalao do sistema se confunde as vezes quando esses dispositivos esto disponveis no computador. Depois da instalao os drives so reconhecidos e controlados normalmente. Provavelmente - esperamos esse problema ser corrigido nas prximas verses. Por que ocorre o erro panic: can't mount root, quando eu reinicio o sistema, depois de t-lo instalado. Esse problema costuma ocorrer por conta de uma pequena confuso entre os blocos do setor de inicializao (boot) do disco, e as definies de disco no kernel. um erro 25

P: R:

P: R:

tpico apenas de sistemas com dois discos IDE, quando os mesmos esto definidos como disco mestre e escravo, mas em controladoras distintas, e com o FreeBSD instalado na controladora secundria. Os blocos de inicializao (boot) acham que o sistema est instalado no segundo disco IDE (o segundo disco reconhecido pela BIOS) enquanto o kernel assume o primeiro disco na segunda controladora IDE. Depois do reconhecimento dos equipamentos do sistema o kernel tenta montar a partio raiz no disco que o bloco de inicializao (boot) acredita ser o disco de inicializao (boot), wd1, ao invs do disco correto na segunda controladora, wd2, e por isso o processo de inicializao falha. Para corrigir esse problema, voc tem trs opes: 1. No FreeBSD 3.3 e posteriores, reincie o sistema e aperte Enter na tela Booting kernel in 10 seconds; hit [Enter] to interrupt . Voc ser direcionado ao boot loader . Depois, digite set root_disk_unit="disk_number" . disk_number dever ser 0 se o FreeBSD estiver instalado como mestre na primeira controladora IDE, 1 se for o escravo na primeira controladora, 2 se for o mestre da segunda controladora IDE, e 3 se for o escravo na segunda controladora. Depois digite boot , e seu sistema deve ser iniciado corretamente. Para tornar essa alterao permanente, (para que voc no tenha que digitar isso na mo toda vez que seu FreeBSD tiver que reiniciar) basta colocar a linha root_disk_unit="disk_number" no arquivo /boot/loader.conf.local . 2. Se voc estiver usando o FreeBSD 3.2 ou alguma verso anterior, digite 1:wd(2,a)kernel na prompt de inicializao do sistema e aperte Enter. Se o sistema iniciar normalmente, execute o comando echo "1:wd(2,a)kernel" > /boot.config para tornar essa alterao permanente. 3. Mude o disco com o FreeBSD para primeira controladora IDE. 4. Recompile o kernel, altere as linhas de configurao wd para:
controllerwdc0atisa?port"IO_WD1"bioirq14 vectorwdintr diskwd0atwdc0drive0 #diskwd1atwdc0drive1#commentoutthis line controllerwdc1atisa?port"IO_WD2"bioirq15 vectorwdintr diskwd1atwdc1drive0#changefromwd2to wd1 diskwd2atwdc1drive1#changefromwd3to wd2

26

Captulo 3. Instalao E instale o novo kernel. Se voc mudou seu disco e quer voltar ele para configurao original, mude a ordem deles no PC e reinicie o sistema. Seu sistema deve iniciar com sucesso. P: R: Quais so as limitaes de memria? A limitao de memria de 4 gigabytes. Essa definio foi testada, veja a configurao do wcarchive para obter mais detalhes. Se voc pretende instalar essa quantidade de memria no FreeBSD, seja cuidadoso. D preferncia para memrias ECC e reduza a capacidade de carga usando modules de memria de 9 chips, ai invs dos mdulos de 18 chips. Qual a limitao para o sistema de arquivos FFS? Para o sistema de arquivos FFS, o limite mximo, na teoria de 8 terabytes (para blocos de 2K), ou 16TB para o tamanho padro dos blocos, que de 8K. Na prtica os limites variam de 1TB a 4TB de acordo com algumas modificaes no sistema de arquivos. O tamanho mximo para um arquivo no sistema FFS de 1G de blocos (4TB) caso os blocos sejam de 4K.
Tabela 3.1. Tamanho mximo dos arquivos.

P: R:

Tamanho bloco 4K 8K

do 2.2.7-stable 4T-1

3.0-current 4T-1 8T-1 16T-1 32T-1 64T-1

Funciona com Deve funcionar 4T-1 >4T

16K 32K 64K

>32G

>128G >512G >2048G

>32G

>128G >512G >2048G

32T-1 32T-1 64T-1 128T-1

Quando o sistema de arquivos possui blocos de 4K, o triplo de blocos indiretores funcionam, e o limite mximo do sistema de arquivos deveria ser atingido, mas a triplicao dos blocos indiretores (representados aproximadamente pelo resultado de 1K^3 + 1K^2 + 1K) se limita ao valor (errneo) de 1G-1 no nmero de blocos do sistema de arquivos. O limite do nmero de blocos deveria ser 2G-1. Mas por causa de alguns problemas com o nmero dos blocos no sistema de arquivos, esse valor no pode ser alcanado quando o tamanho dos blocos no sistema de arquivos 4K. Em blocos com tamanho de 8K ou maiores, o limite geral de 2G-1 no nmero de blocos do sistema de arquivos, exceto no FreeBSD -STABLE onde o triplo indireto do nmero de blocos pode ser alcanado, de forma que o limite mximo do sistema de arquivos seja representado pela equao ((blocksize/4)^2 + (blocksize/4)), e sob o -CURRENT onde a exceo desse limite pode causar problemas. 27

P: R:

Por que a mensagem de erro archsw.readin.failed me perturba sempre, depois que eu recompilo e carrego um kernel novo? Voc pode carregar um novo kernel ao especifica-lo diretamente no segundo estgio do processo de inicializao, simplesmente apertando qualquer tecla quando o pipe ( | ) aparecer, antes que o loader seja carregado. Provavelmente voc atualizou todo o sistema operacional, mas recompilou apenas o kernel, sem dar um make world. Essa ao arriscada e no suportada. Faa um Make World!!!! Como eu atualizo meu sistema da srie 3.X para 4.X? altamente recomendvel que voc use snapshots binrios para fazer isso. Snapshots binrio do 4-STABLE podem ser encontrados em ftp://releng4.FreeBSD.org/. Devido s inmeras alteraes da srie 3.X para srie 4-STABLE, uma atualizao direta, a partir dos fontes, corre grande riscos de falhar. A atualizao dos fontes pode ser feita, inclusive desde as primrdias verses 2.X at as mais recentes 4-STABLE ou at mesmo 5-CURRENT, mas essa atualizao deve ser realizada em vrios estgios. Primeiro, atualize a sua srie 3.X pra verso mais recente, a 3-STABLE (RELENG_3 ). Depois atualize para o 4.1.1RELEASE (RELENG_4_1_1_RELEASE ). Finalmente, tente atualizar para o 4-STABLE (RELENG_4 ). Se voc pretende atualizar seu sistema a partir dos fontes, por gentileza, refira-se ao Manual do FreeBSD para maiores informaes.

P: R:

Cuidado
A atualizao direta por meio dos fontes nunca aconselhvel para usurios inexperientes, a atualizao da srie 3.X para 4.X portanto menos aconselhvel ainda, portanto, caso voc no tenha experincias com esse processo de atualizao, leia todas as instrues disponveis no Manual do FreeBSD com cuidado.

P: R:

Onde esto essas especificaes de segurana? Uma especificao de segurana se refere a um conjunto de configuraes e de opes no sistema, que tendem a garantir um nvel desejvel de segurana, por meio de definir ou desabilitar algumas opes e programas no FreeBSD. Para maiores detalhes, veja a seo de Especificao de Segurana no captulo de ps-instalao do Manual do FreeBSD.

28

Captulo 4. Compatibilidade de Hardware


P: R: O FreeBSD suporta outras arquiteturas alm da x86? Sim. Atualmente o FreeBSD tem suporte para arquiteturas Intel x86 e DEC (agora Compaq) Alpha. Tambm existe um interesse conhecido no port FreeBSD para plataforma SPARC. Caso exista interesse em participar desse projeto ou saber mais informaes sobre port para esta arquitetura, queira juntar-se lista de discusso do lista de discusso sobre o port do FreeBSD para a plataforma SPARC. As plataformas IA-64 e Power-PC foram recentemente adicionadas lista de arquiteturas que sero futuramente suportadas; entre na lista do lista de discusso sobre o port do FreeBSD para a plataforma IA64 e/ou lista de discusso sobre o port do FreeBSD para PowerPC para mais informaes sobre tais arquiteturas. Para discusses gerais sobre outras arquiteturas, entre na lista de discusso lista de discusso sobre o port do FreeBSD para plataformas que no sejam Intel. Caso seu computador seja de uma arquitetura no suportada pelo FreeBSD e precise de uma soluo imediata, ns sugerimos uma olhada no NetBSD ou OpenBSD. P: R: Preciso adquirir um novo hardware para um sistema com FreeBSD. Qual o melhor modelo/marca/tipo? Essa uma discusso tradicional nas listas do FreeBSD. Partindo do princpio que os tipos de equipamentos e suas caractersticas alteram-se de forma muita rpida, e que ns tentamos suportar essas mudanas e torn-las suportadas, fortemente recomendado que voc sempre leia as Notas de Hardware e faa uma busca nos histrico das listas de discusso antes de perguntar sobre os melhores e mais novos equipamentos disponveis. muito provvel que as informaes que voc quer sobre determinado equipamento tenham sido discutidas h menos de uma semana. Caso voc esteja procurando informaes sobre laptops, verifique o histrico da lista FreeBSD-mobile. Do contrrio, o histrico da FreeBSD-questions ser o mais indicado, ou de alguma lista especfica sobre o tipo de hardware em questo. P: R: Que tipos de discos rgido o FreeBSD suporta? O FreeBSD suporta discos EIDE e SCSI (com alguma controladora compatvel; veja a prxima pergunta) e todos os outros discos que usam a interface de controle original da Western Digital (MFM, RLL, ESDI, e claro IDE). Algumas controladoras ESDI que usam interfaces de controle proprietria no funcionaro no FreeBSD: mude para controladoras do tipo WD1002/3/6/7 ou algum clone dessa interface. Quais controladoras SCSI so suportadas pelo FreeBSD? Veja a lista completa de equipamentos suportados nas Notas de Hardware atuais.

P: R:

P: R:

Quais drives de CDROM so suportados pelo FreeBSD? Quaisquer drives SCSI ligados controladoras suportadas so controladas pelo FreeBSD. As seguintes interfaces proprietrias de CDROM tambm so suportadas: Mitsumi LU002 (8bits), LU005 (16bits) e FX001D (16bits velocidade 2x (2x Speed)). Sony CDU 31/33A. CDROM Sound Blaster no-SCSI. CDROM Matsushita/Panasonic. CDROMs IDE compatveis com o padro ATAPI. Todo equipamento no-SCSI reconhecidamente mais lento do que os SCSI, e alguns drives de CDROM ATAPI podem no funcionar corretamente. A partir da verso 2.2, todos os CDROM do FreeBSD distribudos pela FreeBSD Mall podem ser iniciados (booting) diretamente pela unidade de CD.

P: R:

Quais drives de CD-RW so suportados pelo FreeBSD? O FreeBSD suporta qualquer tipo de unidade CD-RW ou CD-R IDE compatveis com o padro ATAPI. No FreeBSD 4.0 e posteriores, leia a pgina de manual do burncd(8).Em verses anteriores, veja os exemplos de utilizao desses equipamentos em /usr/share/examples/atapi . O FreeBSD tambm suporta qualquer drive de CD-R ou CD-RW do tipo SCSI. Instale o aplicativo cdrecord a partir da coleo de ports ou como pacote, e tenha certeza de ter o device pass compilado no seu kernel.

P: R:

O FreeBSD suporta ZIP Drives? O FreeBSD suporta ZIP Drives do tipo SCSI, claro. Essa unidade deve ser configurada apenas nos SCSI ID nmeros 5 ou 6, mas se a sua BIOS tem suporte inicializo(boot) pela unidade SCSI, essa caracterstica pode ser usada sem problemas. No est claro exatamente quais adaptadores SCSI suportam a caracterstica de inicializo(boot) em IDs diferentes de 0 ou 1, portanto ser necessrio consultar o manual do seu equipamento para obter informaes mais precisas sobre esse recurso. Os ZIP Drives padro ATAPI (IDE) so suportados pelo FreeBSD desde a verso 2.2.6 e em todas as posteriores. O FreeBSD tem suporte ainda a ZIP Drives de Porta Paralela desde a verso 3.0. Caso seu sistema seja dessa verso ou superior, verifique o suporte a scbus0 , da0 , ppbus0 ,

30

Captulo 4. Compatibilidade de Hardware


vp0 no seu kernel (o kernel GENERIC tem todos esses suportes, exceto device vp0 ). Com esses suportes presentes no kernel, o drive de Porta Paralela deve estar disponvel em /dev/da0s4 . Os discos ZIP podem ser montados usando o comando mount /dev/da0s4 /mnt OU (discos formatados como DOS) mount_msdos /dev/ da0s4 /mnt , como de costume.

Verifique tambm o FAQ sobre discos removveis disponvel ainda nesse captulo, e as notas sobre formatao no captulo de Administrao. P: R: O FreeBSD suporta discos JAZ, EZ ou outras unidades removveis? Fora a verso IDE dos discos EZ, os outros discos so todos do tipo SCSI, e portanto devem todos ser reconhecidos como discos SCSI no FreeBSD. O drive EZ tipo IDE deve ser reconhecido como disco IDE. No h uma certeza quanto forma que o FreeBSD trata uma alterao de mdia enquanto o sistema est em pleno uso, ento necessrio desmontar a unidade antes de trocar de disco e garantir que qualquer unidade externa esteja ligada quando o sistema for bootado, de forma que o FreeBSD possa reconhec-las. Veja essa nota sobre formatao. P: R: Que dispositivos seriais de mltiplas portas so suportados pelo FreeBSD? Existe uma lista dessas unidades na seo de Dispositivos Diversos do Manual do FreeBSD. Alguns dispositivos clones parecem tambm funcionar normalmente no sistema, em especial equipamentos que se dizem ser AST compatveis. Verifique a pgina de manual do sio(4) para obter mais informaes quanto configurao desses dispositivos. P: R: O FreeBSD suporta meu teclado USB? O suporte a dispositivos USB foi adicionado no FreeBSD desde a verso 3.1. Contudo, na verso 3.1, o suporte ainda muito preliminar, e alguns equipamentos podem no funcionar antes da verso 3.2. Caso voc queira usar o suporte a teclados USB, tente o seguinte. 1. 2. No FreeBSD 3.2 ou posterior. Adicione as seguintes linhas no arquivo de configurao do seu kernel, e recompile-o.
deviceuhci deviceohci deviceusb deviceukbd

31

optionsKBD_INSTALL_CDEV

Em verses anteriores 4.0, use:


controlleruhci0 controllerohci0 controllerusb0 controllerukbd0 optionsKBD_INSTALL_CDEV

3.

No diretrio /dev , crie os seguintes devices:


#cd/dev #./MAKEDEVkbd0kbd1

4.

Edite o /etc/rc.conf e adicione as seguintes linhas:


usbd_enable="YES" usbd_flags=""

Depois de reiniciado(rebooting) o sistema, o teclado AT aparece como /dev/kbd0i e o teclado USB aparece como /dev/kbd1 , se ambos estiverem conectados ao sistema. Se estiver somente o teclado USB, ele estar como /dev/ukbd0 . Caso queira usar o teclado USB no console, necessrio informar explicitamente ao driver do console que ele deve usar esse teclado. Isso pode ser feito com o seguinte comando em tempo de inicializao do sistema:
#kbdcontrol-k/dev/kbd1</dev/ttyv0>/dev/null

Note que se o teclado USB for o nico teclado disponvel, ele ser acessado via / dev/kbd0 , portanto a linha de comando deve-se parecer com:
#kbdcontrol-k/dev/kbd0</dev/ttyv0>/dev/null

O arquivo /etc/rc.i386 um bom lugar para colocar o comando acima. Depois de configurado, o teclado USB deve funcionar tambm no ambiente X, sem nenhuma outra configurao especial. Conectar e desconectar o teclado USB com o sistema ligado ainda no um comportamento completamente suportado, portando aconselhvel ligar o teclado antes de iniciar o sistema e apenas deslig-lo depois que o computador estiver desligado, para evitar possveis problemas. Veja a pgina de manual do ukbd(4) para maiores informaes. P: R: Eu tenho um mouse de barramento no tradicional. Como o configuro? O FreeBSD suporta o barramento de mouse tradicional do tipo InPort fabricados pela Microsoft, Logitech e ATI. O suporte a esse perifrico compilado por padro

32

Captulo 4. Compatibilidade de Hardware no kernel GENERIC do FreeBSD na verso 2.X, mas no suportado por padro na verso 3.0 e posteriores. Se voc quer recompilar um kernel com suporte ao barramento de mouse, adicionando a linha ao seu arquivo de configurao: No FreeBSD 3.0 e anteriores, adicione:
devicemse0atisa?port0x23cttyirq5vectormseintr

Na srie 3.X do FreeBSD, a linha deve ser:


devicemse0atisa?port0x23cttyirq5

E na srie 4.X e posteriores, a linha deve ser:


devicemse0atisa?port0x23cirq5

Barramentos de mouse costumam ter uma interface dedicada que permite definir o endereo de memria e a IRQ que a placa vai funcionar. Nesse caso, refira-se ao manual do seu equipamento e pgina de manual do mse(4) para maiores informaes. P: R: Como eu uso o meu mouse (mouse port ou keyboard) PS/2? Em verses posteriores ao 2.2.5, o kernel do FreeBSD inclui por padro o suporte ao device psm , que controlar seu mouse PS/2 desde o momento de inicializao do sistema. Caso seu FreeBSD seja 2.1.X ou similar, o suporte a PS/2 pode ser includo no kernel, no momento da instalao, ou mesmo depois desse processo, com a opo -c na tela de boot: do sistema. O suporte nesse caso desabilitado por padro e por isso deve ser explicitamente habilitado. Caso sua verso de FreeBSD seja antiga, adicione a seguinte linha ao seu kernel e recompile-o: No FreeBSD 3.0 e anteriores, a linha :
devicepsm0atisa?port"IO_KBD"conflictsttyirq12vector psmintr

No FreeBSD 3.1 e posteriores da mesma srie, a linha deve ser:


devicepsm0atisa?ttyirq12

No FreeBSD 4.0 e posteriores, a linha :


devicepsm0atatkbdc?irq12

Veja a seo de configurao do kernel no Manual do FreeBSD caso voc no tenha experincia com a compilao do kernel. 33

Uma vez detectado o psm0 durante a inicializao (boot) do seu sistema, tenha certeza de que existe uma entrada psm0 no /dev . Faa o seguinte:
#cd/dev;shMAKEDEVpsm0

logado como usurio root . P: R: possvel usar mouse de alguma forma, fora do sistema X Windows? Se estiver utilizando o driver padro de console, o syscons, pode-se usar o mouse para copiar & colar texto. Execute o mouse daemon, moused , para habilitar o mouse nos consoles virtuais da seguinte forma:
#moused-p/dev/xxxx-tyyyy #vidcontrol-mon

Onde xxxx deve ser substitudo pelo nome de device do seu mouse e yyyy pelo tipo de protocolo do mesmo. Veja a pgina de manual do moused(8) para maiores informaes quanto aos tipos de protocolos suportados. provvel que voc queira usar o mouse daemon automaticamente, sempre que o FreeBSD for iniciado. Na verso 2.2.1, defina as seguintes variveis, no arquivo / etc/sysconfig .
mousedtype="yyyy" mousedport="xxxx" mousedflags=""

Da verso 2.2.2 at a 3.0, defina as seguintes variveis no /etc/rc.conf .


moused_type="yyyy" moused_port="xxxx" moused_flags=""

Da verso 3.1 em diante, caso voc tenha um mouse PS/2 necessrio apenas adicionar a opo moused_enable="YES" no arquivo /etc/rc.conf . E se a inteno usar o mouse em todos os terminais virtuais ao invs de apenas no console, insira a seguinte linha no /etc/rc.conf .
allscreens_flags="-mon"

Desde a verso 2.2.6 do FreeBSD, o mouse daemon capaz de detectar o tipo de protocolo do mouse automaticamente, a no ser que o dispositivo em questo seja um mouse serial muito velho. Defina auto para que o programa identifique o protocolo do mouse automaticamente.

34

Captulo 4. Compatibilidade de Hardware Quando o daemon est rodando, o acesso ao dispositivo deve ser coordenado entre ele e qualquer outra aplicao, como o X-Windows, por exemplo. Leia uma outra pergunta sobre esse assunto. P: R: Como eu copio e colo com o mouse em um console modo texto? Uma vez configurado o mouse (veja a pergunta anterior), aperte o boto 1 (boto esquerdo) do mouse e mova o cursor por toda a regio desejada, selecionando o texto em questo. Depois, basta apertar o boto 2 (do meio) ou o boto 3 (direito) para colar o contedo selecionado anteriormente. A partir da verso 2.2.6 o boto 2 cola o texto copiado, enquanto o boto 3 ``extende'' a regio selecionada. Caso seu mouse no tenha o boto do meio, possvel remapear (ou emular) os botes do perifrico usando algumas opes especficas do mouse daemon. Veja a pgina de manual do moused(8) para maiores detalhes. P: R: O FreeBSD suporta mouse USB? No FreeBSD 3.1 existe um suporte preliminar recursos USB que no funciona muito bem dependendo da situao. A partir da verso 4.0 o FreeBSD suporta dispositivos USB por padro. Caso queira usar um mouse USB no FreeBSD 3.X, siga as seguintes instrues. 1. 2. Atualize seu sistema para FreeBSD 3.2 ou posterior. Adicione o seguinte suporte ao seu kernel, e recompile-o:
deviceuhci deviceohci deviceusb deviceums

Em verses anteriores 4.0 o suporte ser adicionado :


controlleruhci0 controllerohci0 controllerusb0 deviceums0

3.

Entre no diretrio /dev e crie os devices necessrios:


#cd/dev #./MAKEDEVums0

4.

Edite o /etc/rc.conf e adicione as linhas:


moused_enable="YES" moused_type="auto" moused_port="/dev/ums0" moused_flags=""

35

usbd_enable="YES" usbd_flags=""

Veja a seo anterior para uma discusso mais detalhada sobre o moused. 5. Para configurar o mouse USB no X, edite o XF86Config e, caso esteja usando o XFree86 3.3.2 ou posterior, adicione as seguintes linhas na seo Pointer:
Device "/dev/sysmouse" Protocol"Auto"

Caso esteja usando uma verso anterior do Xfree86, adicione tambm na seo Pointer as seguintes linhas:
Device "/dev/sysmouse" Protocol"SysMouse"

Leia tambm uma outra pergunta sobre o uso do mouse em ambiente X. Conectar e desconectar o teclado USB com o sistema ligado ainda no um comportamento completamente suportado, portando aconselhvel ligar o teclado antes de iniciar o sistema e apenas deslig-lo depois que o computador estiver desligado, para evitar possveis problemas. P: R: Eu tenho um mouse do tipo Wheel com uma rodinha e botes adicionais. Posso uslo no FreeBSD? A resposta, infelizmente , Depende. Esse tipo de mouse tem algumas caractersticas especiais que requerem o uso de drivers especiais na maioria dos casos. A no ser que o device do seu mouse tenha suporte especfico, ou se a aplicao em questo reconhecer esse tipo de equipamento, ele ir funcionar simplesmente como um mouse tradicional de dois ou trs botes. Mais informaes sobre o uso de mouse do tipo Wheel em ambiente X Windows, refira-se a essa seo. P: R: Por que meu mouse PS/2 do tipo Wheel fica louco, pulando pela tela? O suporte ao mouse PS/2 no FreeBSD 3.2 e anteriores falho quanto a mouses do tipo Wheel, incluindo o modelo M-S48 da Logitech e seus similares OEM. Aplique o seguinte patch no arquivo /sys/i386/isa/psm.c e recompile seu kernel:
Index:psm.c =================================================================== RCSfile:/src/CVS/src/sys/i386/isa/Attic/psm.c,v retrievingrevision1.60.2.1 retrievingrevision1.60.2.2 diff-u-r1.60.2.1-r1.60.2.2 ---psm.c1999/06/0312:41:131.60.2.1 +++psm.c1999/07/1213:40:521.60.2.2 @@-959,14+959,28@@

36

Captulo 4. Compatibilidade de Hardware


sc->mode.packetsize=vendortype[i].packetsize; /*setmouseparameters*/ +#if0 +/* +*AversionofLogitechFirstMouse+won'treportwheel movement, +*ifSET_DEFAULTSissent...Don'tusethiscommand. +*ThisfixwasfoundbyTakashiNishida. +*/ i=send_aux_command(sc->kbdc,PSMC_SET_DEFAULTS); if(verbose>=2) printf("psm%d:SET_DEFAULTSreturncode:%04x\n",unit, i); +#endif if(sc->config&PSM_CONFIG_RESOLUTION){ sc->mode.resolution =set_mouse_resolution(sc->kbdc, -(sc->config&PSM_CONFIG_RESOLUTION)-1); +(sc->config&PSM_CONFIG_RESOLUTION)- 1); +}elseif(sc->mode.resolution>=0){ +sc->mode.resolution +=set_mouse_resolution(sc->kbdc,sc>dflt_mode.resolution); +} +if(sc->mode.rate>0){ +sc->mode.rate=set_mouse_sampling_rate(sc->kbdc,sc>dflt_mode.rate); } +set_mouse_scaling(sc->kbdc,1); /*requestadatapacketandextractsync.bits*/ if(get_mouse_status(sc->kbdc,stat,1,3)<3){

Em verses posteriores 3.2, o suporte deve funcionar. P: R: P: R: Como eu uso o mouse/bolinha-de-rolagem/touchpad no meu laptop? Por gentileza, leia a pergunta anterior. Verifique tambm a pgina de Computao Mvel do Projeto. Que tipos de dispositivos de fitas so suportados pelo FreeBSD? O FreeBSD suporta dispositivos de fitas do tipo SCSI e QIC-36 (com interface QIC-02). Tal suporte inclui drives 8-mm (tambm conhecidos como Exabyte) e unidades de fita DAT. Alguns dispositivos 8-mm mais antigos no so compatveis com o padro SCSI-2 e por isso podem no funcionar bem no FreeBSD. P: O FreeBSD suporta bibliotecas de fitas? 37

R:

O FreeBSD suporta alternadores (tambm conhecidos com carrossis) SCSI, usando o device ch(4) e o comando chio(1). Os detalhes relativos a como controlar o alternador de fitas podem ser encontrados na pgina de manual do chio(1). Caso voc no esteja usando o AMANDA ou qualquer outro produto que entenda o funcionamento dos alternadores, lembre-se que tal equipamento simplesmente alterna a posio da fita, de um compartimento para outro, e portanto deve-se saber em qual compartimento a fita est e para qual ela deve voltar.

P: R:

Quais placas de som so suportadas pelo FreeBSD? O FreeBSD suporta as placas SoundBlaster, SoundBlaster Pro, SoundBlaster 16, Pro Audio Spectrum 16, AdLib e Gravis UltraSound. Existe ainda um suporte - limitado, verdade - para as placas MPU-401 e placas MIDI compatveis. Placas de som que estiverem em conformidade com a especificao MSS (Microsoft Sound System) tambm so suportadas pela controladora pcm do kernel.

Nota
Esse suporte especfico para apenas som! Exceto no caso das placas SoundBlaster, o suporte no inclui controle de joysticks, CDROMs ou SCSI. A interface SCSI da SoundBlaster e alguns CDROMs no-SCSI so suportados, mas o sistema no pode iniciar(booting) a partir desses dispositivos.

P: R:

Qual a soluo para falta de som da minha placa es1370 com o controlador pcm? Basta aumentar o volume do seu som ;-) Use os seguintes comandos, sempre que o sistema iniciar:
#mixerpcm100vol100cd100

P: R: P:

Quais placas de rede o FreeBSD suporta? Veja a seo de Placas Ethernet do Manual do FreeBSD para uma lista detalhada dos dispostivos suportados. Eu no tenho um co-processador matemtico. Isso ruim?

38

Captulo 4. Compatibilidade de Hardware R:

Nota
Vale apenas para proprietrios de 386/486SX/486SLC - outras mquinas tero um co-processador integrado CPU. No geral, a falta de um co-processador matemtico no traz nenhum problema, mas existem algumas circunstncias onde voc encontrar srias limitaes, seja no desempenho ou na preciso da emulao dos seus clculos (veja a seo de emulao FP). Por exemplo, a renderizao de crculos e arcos no ambiente grfico ser uma tarefa muito lenta. recomendvel comprar um co-processador matemtico; vale a pena.

Nota
Alguns co-processadores matemticos so melhores que outros. estranho ter que dizer isso, mas ningum nunca se deu mal ao comprar co-processadores Intel, portanto tenha certeza absoluta que o produto vai funcionar com o FreeBSD antes de comprar um clone.

P: R: P: R:

Que outros dispositivos o FreeBSD suporta? Veja o Manual do FreeBSD para obter uma listagem dos outros dispostivos suportados. O FreeBSD suporta gerenciamento de energia no meu laptop? O FreeBSD suporta APM em alguns computadores. Por gentileza, refira-se ao arquivo LINT de configurao do kernel; procure pela palavra APM. Mais informaes na pgina de manual do apm(4). Por que placas Micron travam na inicializao(boot)? Algumas placas-me Micron no tem conformidade na implementao de sua BIOS e por isso confundem o FreeBSD no momento da inicializao(boot), pois os equipamentos em questo no foram configurados nos endereos que a BIOS reportou. Procure a opo Plug and Play Operating System - ou algo parecido - na sua BIOS e desabilite-a para corrigir o problema. Mais informaes sobre esse 39

P: R:

problema podem ser encontradas em http://cesdis.gsfc.nasa.gov/linux/drivers/ vortex.html#micron. P: R: Por que o FreeBSD no reconhece nenhuma controladora SCSI Adaptec? As sries mais novas (AIC789x) dos chips Adaptec tem suporte no modo CAM SCSI, que ser redefinido na verso 3.0 do FreeBSD. Na verso 2.2STABLE, voc pode aplicar as correes disponveis em ftp://ftp.FreeBSD.org/pub/ FreeBSD/development/cam/. Caso voc precise instalar um sistema com essas controladoras, existe um disquete de inicializao(boot) com suporta a CAM, disponvel em http://people.FreeBSD.org/~abial/cam-boot/. Nos dois casos leia o arquivo README antes de tomar qualquer ao. Por que o FreeBSD no encontra o meu Modem Plug & Play interno? Ser necessrio adicionar o ID PnP do modem na lista de drivers seriais do sistema para que ele reconhea-o normalmente. Isso requer hackear um pouco o sistema. Pra habilitar o suporte Plug & Play, compile um novo kernel com a opo controller pnp0 e reinicie o seu FreeBSD. O kernel ir mostrar os IDs PnP de todos os dispositivos que ele encontrar, no momento da inicializao(boot). Copie o ID PnP do modem em questo para a tabela no arquivo /sys/i386/isa/sio.c , por volta da linha 2777. Procure a expresso SUP1310 na estrutura siopnp_ids[] para encontrar essa tabela. Recompile o seu kernel, instale-o e reinicie o sistema. Seu modem deve ser encontrado. Provavelmente ser necessrio configurar o dispositivo PnP manualmente, usando o comando pnp no momento do boot, como a seguir:
pnp10enableosirq03drq00port00x2f8

P: R:

para forar deteco do modem. P: R: O FreeBSD suporta software modems, como os Winmodems? O FreeBSD suporta alguns software modems por meio de programas adicionais. A aplicao comms/ltmdm disponvel na coleo de Ports do FreeBSD suporta os modems baseados no popular chipset Lucent LT. A aplicao comms/mwavem suporta o modem em laptops IBM Thinkpad 600 e 700. No possvel instalar o FreeBSD via software modem, visto que os programas adicionais para controlar esse equipamento s podem ser configurados depois que o sistema operacional j est instalado. P: R: Como eu fao para o interpretador(prompt) de inicializao(boot): aparecer no console serial? 1. Construa um kernel com a opo options COMCONSOLE . 2. Crie o arquivo /boot.config e coloque os caracteres -P como o nico texto no arquivo. 40

Captulo 4. Compatibilidade de Hardware 3. Desligue o teclado do computador. Leia o arquivo /usr/src/sys/i386/boot/biosboot/README.serial informaes. P: R: para mais

Por que a placa de rede PCI da 3Com no funciona com motherboards Micron? Algumas placas-me Micron no tem conformidade na implementao de sua BIOS e por isso confundem o FreeBSD no momento do boot, pois os equipamentos em questo no foram configurados nos endereos que a BIOS reportou. Procure a opo Plug and Play Operating System - ou algo parecido - na sua BIOS e desabilite-a para corrigir o problema. Mais informaes sobre esse problema podem ser encontradas em http:// cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron

P: R:

O FreeBSD suporta Multiprocessamento Simtrico (SMP)? SMP suportado a partir do FreeBSD 3.0-STABLE. O suporte ao SMP (multiprocessamento simtrico) no est disponvel por padro no kernel GENERIC, portanto necessrio compilar um novo kernel para habilitar o suporte SMP. Veja o arquivo /sys/i386/conf/LINT para descobrir quais opes so necessrias adicionar ao seu kernel. O disquete de inicializao(boot) trava em um computador cuja placa-me a ASUS K7V. O que eu fao? Entre na configurao da BIOS da sua placa e desligue a opo boot virus protection.

P: R:

41

Captulo 5. Resoluo de Problemas


P: R: O que fazer quando meu disco rgido tiver bad blocks? Com controladoras SCSI, o drive (HD) deveria ser capaz de remapear blocos ruins e corrig-los automaticamente. Porm, muitos desses discos mantm essa funo desabilitada por alguma razo misteriosa... Para habilitar essa funo necessrio editar o primeiro modo de pgina do dispositivo, o qual pode ser feito com o comando abaixo (como root )
#scsi-f/dev/rsd0c-m1-e-P3

E mudando os valores de AWRE e ARRE de 0 para 1:AWRE(AutoWriteReallocationEnbld):1 ARRE(AutoReadReallocationEnbld):1

Os

<tedm@toybox.placo.com >:

pargrafos

seguintes

foram

enviados

por

Ted

Mittelstaedt

Para os discos IDE, qualquer bad block considerado um sinal de dificuldade em potencial. Todos os discos IDE modernos j vm com um remapeador interno que realoca bad blocks por outros blocos em bom estado, automaticamente. Todos os disco rgido IDE fabricados hoje em dia oferecem garantias extensas. Se ainda quiser tentar salvar um drive IDE com bad blocks, pode fazer um download do programa de diagnstico e correo do prprio fabricante do disco rgido. s vezes estes programas podem fixar e forar eletronicamente o disco a marcar estes blocos ruins e desativ-los. Em discos ESDI, RLL e MFM, a existncia de bad blocks normal e no representa nenhum sinal de dificuldade,geralmente. Em um PC, a placa controladora das unidades de disco e, a BIOS se encarregam da tarefa de re-mapear os bad blocks. Isso funciona em sistemas operacionais como DOS que usa cdigo da BIOS para acessar o disco. Porm, o driver (software controlador) do FreeBSD no trabalha ou acessa comandos da BIOS para para interagir com o drive (HD), ento um mecanismo chamado bad144, existente no FreeBSD, acaba substituindo esta funcionalidade. O bad144 s trabalha com o drive wd (portanto, no suportado no FreeBSD 4.0), e no pode ser usado com drive SCSI. O bad144 trabalha marcando e organizando setores ruins encontrados no HD, em um arquivo especial no disco. Uma caracterstica do bad144 - o bloco danificado colocado em um arquivo especial situado na ltima trilha do disco. Como este arquivo contm uma lista de setores defeituosos que pode incluir valores perto do incio do disco, onde o /

kernel pode estar alocado, esse arquivo dever ser acessvel ao bootstrap para que o programa - por meio da BIOS - leia o kernel; isso significa que o disco usado com bad144 no deve exceder 1024 cilindros, 16 cabeas, e 63 setores, logo, temos um limite efetivo de 500MB para discos mapeados com o bad144.. Para ativar o uso do bad144, simplesmente defina a opo de procurar por Bad Block como ON na tela do fdisk do FreeBSD, durante a instalao. Essas instrues funcionam a partir do FreeBSD 2.2.7, e o disco deve ter menos que 1024 cilindros. Geralmente recomenda-se que a unidade de disco esteja em operao durante pelo menos 4 horas antes de executar o bad144, permitindo assim a expanso trmica do HD. Se o disco tem mais de 1024 cilindros (como um disco ESDI grande) a controladora ESDI usa um tipo de traduo especial em modo DOS. A device wd tambm entende esses mesmos modos de traduo e converso, isso se o tradutor de geometria for ativado como geometria fixa, quando particionado pelo fdisk. Voc tambm no deve usar o modo dangerously dedicated para criar parties do FreeBSD, pois isso ignora o tipo de geometria. Embora o fdisk use a geometria definida pelo usurio, ele continua reconhecendo o tamanho verdadeiro do disco, e tentar criar uma partio maior para o FreeBSD. Se a geometria de disco for alterada para geometria traduzida(translated geometry), a partio DEVE ser criada manualmente, informando os nmeros de blocos do HD. Um truque rpido usar um disco grande ESDI com uma controladora ESDI, iniciar(booting) o sistema com um disco DOS e formatar uma partio DOS. Depois reiniciar o sistema com um disco de instalao do FreeBSD, e anotar o nmero e tamanho dos blocos que sero apresentados na tela do fdisk para a partio DOS. Redefina a geometria do disco com os valores anotados, apague a partio DOS e crie uma partio FreeBSD cooperativa. Defina essa partio como bootvel e habilite o reconhecimento de bad blocks. Na instalao, o bad144 carregado antes que qualquer outro sistema de arquivos seja criado (voc pode ver isso com um Alt+F2). Se houver problemas na criao do arquivo de definies de setor danificado (o arquivo de badsector) porque a geometria definida maior do que o seu valor real - reinicie o sistema e comece todos os procedimentos novamente, inclusive o particionamento e formatao da partio DOS. Se o remapeamento j estiver habilitado e os problemas com bad block continuarem, considere a substituio imediata do disco, pois os danos e os bad blocks aumentaro consideravelmente com o passar do tempo. P: R: Por que o FreeBSD no reconhece a minha controladora SCSI EISA Bustek 742a? As informaes a seguir so para o modelo 742a, mas provavelmente tambm servem para as placas Buslogic. (Bustek = Buslogic). Existem duas verses tradicionais da placa 742a. So os equipamentos de reviso A-G e de reviso H; as letras de cada reviso so colocadas depois do nmero de fabricao, ao lado das placas. A placa 742a possui 2 chips ROM acoplados, o 44

Captulo 5. Resoluo de Problemas primeiro o chip da BIOS e o segundo o do Firmware. Para o FreeBSD a verso da BIOS irrelevante, mas a verso do Firmware uma informao fundamental. interessante dizer que, se voc fizer uma chamada ao departamento de suporte da Buslogic, eles iro te enviar um upgrade desses ROMs, e muito bom sempre manter a verso mais recente do ROM do seu Firmware para a verso de reviso do seu equipamento. As placas cuja letra de reviso A-G aceitam apenas atualizaes da BIOS/Firmware de verso 2.41/2.21 respectivamente. A reviso H (REV H) aceita as verses mais recentes da BIOS/Firmware at a verso 4.70/3.37. A principal diferena entre as verses do Firmware que a verso 3.37 tem suporte around robin. As placas Buslogic tambm tem um nmero serial. Caso seu equipamento seja antigo, tente abrir uma chamada no departamento de RMA da Buslogic e informeos o nmero de srie da sua placa. Se ela estiver entre os seriais de abrangncia, a Buslogic vai aceitar seu equipamento para reviso. O FreeBSD 2.1 aceita apenas as revises de Firmware at o 2.21. Caso o seu Firmware seja mais antigo do que o 2.21 sua placa no ser reconhecida como Buslogic. Contudo, possvel que o equipamento seja reconhecido como Adaptec 1540, j que os Firmware mais antigos da Buslogic possuem um modo de emulao da AHA1540, o que no uma boa coisa, para uma placa EISA. Caso seu Firmware seja antigo e voc conseguiu obter uma reviso para a verso 2.21, no se esquea que necessrio alterar o jumper W1 da posio A-B (padro) para posio B-C ao atualizar a placa. P: R: Por que o FreeBSD no detecta a controladora SCSI do Netserver HP?? Isso j um problema conhecido. A controladora SCSI on-board EISA dos servidores HP Netserver esto no slot EISA nmero 11, portanto todos os verdadeiros slots EISA esto na sua frente. O endereo definido para os slots EISA >= 10 ocupa um endereo compartilhado com o barramento PCI, e portanto entra em conflito com seus recursos. Essa uma situao onde a configurao automtica do FreeBSD no se comporta muito bem. Portanto o que voc deve fazer, fingir que no existe limitao quanto ao intervalo de endereos, definindo a opo option EISA_SLOTS do kernel para o valor 12. Configure e compile um novo kernel, conforme descrito no captulo de configurao do kernel no Manual do FreeBSD. Obviamente esse problema ainda maior quando se trata de uma nova instalao. Para corrigir esse problema necessrio uma pequena alterao no modo UserConfig. No use a interface de configurao visual do kernel, use a Interface de Linha de Comando (CLI), simplesmente digitando:
eisa12 quit

45

na tela do modo CLI, e continue a instalao do FreeBSD como de costume. De qualquer forma, recomendvel recompilar e instalar um novo kernel depois da instalao do sistema.. Futuras verses do FreeBSD tero esse problema corrigido automaticamente.

Nota
No use discos em modo dangerously dedicated com um HP Netserver. Veja essa nota para maiores informaes.

P: R:

O que est havendo com minha controladora IDE CMD640? Est com defeito! No suporta mais comandos nos dois canais de forma simultnea. Existe uma correo disponvel e automaticamente habilitada, se voc usa uma controladora com esse chip. Para maiores detalhes, refira-se a pgina de manual da controladora de disco (wd(4)). Se o FreeBSD em questo o FreeBSD 2.2.1 ou 2.2.2 com essa controladora em questo, e voc quer usar o segundo canal, compile um novo kernel com a opo options "CMD640" habilitada. Essa configurao padro para o FreeBSD 2.2.5 e posteriores.

P: R:

Eu sempre vejo mensagens como ed1: timeout. O que elas significam? Normalmente esse problema causado por um conflito de interrupes (por exemplo, duas placas usando a mesma IRQ). O FreeBSD at a verso 2.0.5R costumava ser tolerante quanto a esse problema e a placa de rede continuava funcionando mesmo com IRQ conflitantes. Contudo desde a verso 2.0.5R os conflitos de interrupes no so mais tolerados. Inicie o sistema com a opo de boot -c e mude as device ed0/de0/... para o valor correspondente ao da placa. Caso esteja usando um conector BNC na sua placa de rede, provvel que existam device timeout por causa de m terminao do barramento. Pra tirar isso a limpo coloque um terminador direto na placa (sem cabos) e veja se as mensagens de erro param. Algumas placas compatveis NE2000 apresentaro esse problema caso a porta UTP no receba sinal de link, ou se o cabo estiver desconectado.

P: 46

Por que minha placa 3COM 3C509 parou de funcionar sem motivo aparente?

Captulo 5. Resoluo de Problemas R: P: R: Esse carto tem um hbito horrvel de perder suas informaes de configurao. Redefina as informaes da placa usando o programa de DOS chamado 3c5x9.exe . Minha impressora paralela est ridiculamente lenta. O que devo fazer? Se o nico problema a lerdeza terrvel da sua impressora, tente mudar seu modo da porta de impresso conforme discutido na seo de Configurao de Impressoras no Manual do FreeBSD. Por que alguns programas ocasionalmente morrem com erro de Signal 11 ? Erros de sinal 11 so fruto de tentativas de acesso indevido a memria. Esse acesso normalmente controlado pelo sistema operacional, e quando o sistema no permite acessar determinados endereos, o processo morto com signal 11. Se isso estiver acontecendo em intervalos aleatrios de tempo, preciso investigar as causas com cuidado. Esse problema normalmente atribudo a: 1. Se o problema ocorre apenas em um programa especfico que voc mesmo esta desenvolvendo, se trata de um bug no cdigo do seu programa. 2. Se o problema com algum programa que faz parte da base do FreeBSD, possvel que tambm seja um problema de bug no cdigo em questo. Contudo, esses problemas costumam ser corrigidos antes que os usurios tradicionais percebam sua existncia - e necessitem ler este FAQ - afinal, para isso que o CURRENT existe. Em especial, uma indicao que esse problema no um bug do FreeBSD, um erro repetitivo no mesmo instante da compilao, mas o problema que o compilador apresenta muda de linha a cada nova compilao. Por exemplo, suponha que voc esteja executando um make buildworld, e a compilao falha na hora de compilar o ls.c em ls.o . Se voc rodar o make buildworld de novo e a compilao falha exatamente no mesmo trecho do cdigo, ento o problema realmente com o fonte da aplicao, nesse caso atualize os fontes do FreeBSD e tente novamente. Agora se a compilao falhar em um trecho diferente do cdigo, quase certo que o problema seja fsico, ou seja, com o seu equipamento. O que deve ser feito: Em primeiro lugar, deve-se usar um debugador, como o gdb, por exemplo, para encontrar o ponto exato do cdigo que est tentando acessar um endereo problemtico de memria, e corrigi-lo. Em segundo lugar, verifique se a culpa no do seu equipamento. As causas mais comuns para o problema incluem:: 47

P: R:

1. Os seus discos rgidos podem estar superaquecidos: Verifique se o sistema de ventilao do seu PC est funcionando. Verifique coolers internos (da fonte) e externos, e verifique se no existe superaquecimento de outros componentes do computador. 2. O processador est superaquecido: Pode ser porque foi feito um overclock no processador em questo, ou no caso mais tradicional, pode ser que o cooler tenha parado de funcionar ou que esteja sujo e portanto funcionando em rotao baixa. Em ambos os casos, o primeiro passo garantir que o processador esteja rodando sob as mesmas condies que ele foi construdo para funcionar - por exemplo, com a velocidade do clock original e com a ventilao adequada. Caso tenha sido feito overclock no processador, lembre-se que mais barato usar um computador um pouco mais lento, do que trocar o processador da mquina por causa de um chip fritado ;-) Alm do que a maioria das pessoas no so simpatizantes de overclock, mesmo que voc considere a ao segura ou no. 3. Caso tenha mltiplos pentes de memria SIMM/DIMM, tente deslig-los e experimente usar cada pente de uma vez, indiviualmente. Com isso possvel descobrir se o problema com algum chip DIMM/SIMM ou se o problema a combinao entre os pentes. 4. Configuraes super otimistas na BIOS da sua placa me so outra causa provvel. Algumas BIOS tem opes que permitem alterar a velocidade e frequncia de vrios recursos. Normalmente os valores padro na BIOS so os mais conservadores, e portanto devem ser o bastante para controlar corretamente o equipamento; contudo algumas opes como por exemplo RAM Speed: Turbo ou alguma opo parecida coloca o estado de espera para o acesso a memria em um valor muito baixo, e as vezes, por mais otimista que voc seja, sua memria pode no ser rpida o bastante. O ideal definir os valores padro da sua BIOS, mas interessante anotar os valores atuais primeiro! 5. Alimentao insuficiente de energia na placa-me. Caso exista alguma placa que no esteja sendo utilizada, algum disco rgido ou CDROM, interessante desliga-los temporariamente do computador, ou simplesmente remover o cabo de energia desses equipamentos. Mesmo em sub utilizao, essas placas e discos esto sob constante alimentao e talvez sua fonte consiga suprir uma carga menor. Ou tente trocar a fonte do seu PC, de preferncia por uma com maior poder de alimentao (por exemplo, se a sua fonte de 250 Watts troque por uma de 300 Watts). Leia ainda o FAQ SIG11 (disponvel a seguir) que tem outras boas explicaes sobre esses problemas. O FAQ tambm discute como alguns programas de teste de memria podem pensar que um pente problemtico est funcionando corretamente. 48

Captulo 5. Resoluo de Problemas Finalmente, se nenhum dos casos acima ajudou a solucionar seu problema, pode ser que exista um bug no FreeBSD. Voc deve seguir as intruoes para enviar um relatrio de problemas para o Projeto FreeBSD. Existe um FAQ extenso que cobre esse assunto, disponvel no FAQ dos problemas com SIG11. P: R: O meu sistema trava com o erro Fatal trap 12: page fault in kernel mode, ou panic:, e sai mostrando uma quantidade enorme de informaes. O que eu fao? A equipe de desenvolvimento do FreeBSD tem muito interesse nesse tipo de erro, mas necessrio obter algumas informaes suplementares, do que apenas o erro que voc est tendo. Copie sua mensagem de erro inteira, consulte o FAQ sobre kernel panics, compile um kernel em modo de debugao e tente analisar o problema. Parece uma tarefa difcil, mas no necessrio conhecimento de programao; basta seguir as instrues. Por que a tela fica preta e perde sincronia quando eu inicio o sistema? Esse um problema conhecido da placa de vdeo ATI Mach 64. O problema que essa placa usa o endereo 2e8 , o mesmo utilizado pela quarta porta serial dos computadores pessoais. Devido a um bug (ou uma vantagem?) da sio(4) ,essa porta ser sempre reconhecida, ainda que no exista a quarta porta serial no seu computador, ou mesmo se o sio3 (a quarta porta) estiver desabilitado. At que o bug seja corrigido, voc pode usar essa soluo: 1. Entre no modo de configurao do kernel com opo -c na tela de inicializao(boot). (Isto colocara o kernel no modo de configurao). 2. Desabilite a sio0 , sio1 , sio2 e sio3 (todas elas). Dessa forma ser ativada, logo, voc no ter -> problemas. 3. Digite exit para continuar o boot. Caso queira usar as portas seriais, ser necessrio construir um kernel customizado, com as seguintes alteraes: no fonte /usr/src/sys/i386/isa/sio.c encontre a ocorrncia da expresso 0x2e8 e apague essa expresso e a vrgula que a antecede (mantenha a outra). Depois compile o novo kernel normalmente. Mesmo depois dessa correo, provvel que o X Windows ainda no funcione como esperado. Se for o caso, garanta que a verso do Xfree86 em questo seja ao menos o XFree86 3.3.3 ou uma verso superior. Esse XFree86 e os posteriores tem suporte nativo s placas de vdeo Mach64, e tem inclusive um X Server dedicado para tal equipamento. P: Por que o FreeBSD s detecta 64MB de memria RAM se eu tenho 128MB instalados? 49

P: R:

R:

Devido maneira que o FreeBSD obtm as informaes quanto ao tamanho da memria disponvel por intermdio da BIOS, pode acontecer de apenas 16 bits vlidos serem detectados (65535 Kbytes = 64MB) ou at menos, dependendo da BIOS (em alguns casos, apenas 16MB). Mesmo nessa situao o FreeBSD tenta detectar mais que 64MB de memria, mas esse reconhecimento pode falhar. Pra corrigir esse problema pode ser usada a opo do kernel descrita a seguir. Existe uma forma de obter informaes completas quanto ao tamanho da memria, a partir da BIOS, mas devido a algumas limitaes isso nem sempre possvel hoje em dia. Futuramente ser. De qualquer forma, temos ainda a opo do kernel para situaes onde toda a memria no puder ser reconhecida.
options "MAXMEM=n"

Onde n equivale memria (em Kilobytes) disponvel no sistema. Para 128 MB de memria, use o valor 131072 . P: R: Por que o FreeBSD 2.0 entre em pnico com a mensagem kmem_map too small!?

Nota
A mensagem em questo tambm pode ser mb_map too
small!

Essa mensagem de pnico indica que o sistema ficou sem memria suficiente pros buffers de rede (especificamente, os mbuf clusters). A quantidade de memria virtual disponvel para os clusters mbuf pode ser elevada com a opo::
options "NMBCLUSTERS=n"

no arquivo de configurao do seu kernel, onde n equivale ao valor entre 512-4096, dependendo do nmero de conexes TCP simultneas que voc espera poder suportar. O valor 2048 recomendvel, e provavelmente ser o bastante para sanar o problema que causa o pnico em questo O nmero de clusters mbuf em uso pode ser monitorado com o comando netstat -m (veja netstat(1)). O valor padro para a varivel NMBCLUSTERS no kernel do FreeBSD 512 + MAXUSERS * 16 . P: R: Por que o erro /kernel: proc: table is fullocorre? O kernel do FreeBSD limita o nmero mximo de processos simultneos existentes no sistema. O nmero em questo baseado na opo MAXUSERS . do sistema. A opo MAXUSERS afeta ainda inmeros outros limites do kernel do FreeBSD, como por exemplo os buffers disponveis para o stack de rede do sistema (veja esta resposta anterior). Se o computador estiver sob grande carga, provavelmente ser

50

Captulo 5. Resoluo de Problemas necessrio aumentar o MAXUSERS . Essa alterao aumentar os limites do sistema em adio ao nmero de processos permitido. Desde a verso 4.4 do FreeBSD, o valor para MAXUSERS se tornou configurvel, no sendo mais necessrio recompilar o kernel para alter-lo, bastando definir a varivel kern.maxusers no arquivo /boot/loader.conf . Em versoes mais recentes do FreeBSD, deve-se ajustar o MAXUSERS em sua configurao do kernel. Caso seu sistema no esteja muito carregado, mas o nmero de processos simultneos ainda assim alto basta definir a varivel kern.maxproc com o sysctl. Em casos especiais, onde esses inmeros processos esto sendo executados por um nico usurio, ser preciso alterar ainda alterar o valor da varivel kern.maxprocperuid para um a menos do que o valor de kern.maxproc . (deve ser ao menos 1 processo a menos, visto que ao menos o init(8) do sistema vai estar sempre em execuo.) Para tornar uma alterao de varivel do sysctl permanente, defina-a no arquivo /etc/sysctl.conf nas verses mais recentes do FreeBSD, ou ento no arquivo / etc/rc.local em verses mais antigas do sistema. P: R: Por que acontece o erro CMAP busy quando eu reinicio com um novo kernel? A lgica que tenta detectar uma data errada nos arquivos /var/db/kvm_*.db as vezes falha, o que leva o sistema a entrar em pnico. Se for o caso, reinicie seu sistema em modo monousurio e faa:
#rm/var/db/kvm_*.db

P: R:

O que a mensagem ahc0: brkadrint, Illegal Host Access at seqaddr 0x0 significa?? Trata-se de um conflito com o Ultrastor SCSI Host Adapter. Durante o processo de inicializao(boot), entre no menu de configurao do kernel e desabilite a uha0 , que esta causando o problema.

P: R:

Quando eu inicio o sistema, encontro o erro ahc0: illegal cable configuration, mas o meu cabo est certo. O que est havendo? A placa-me em questo no consegue se dar bem com o suporte a terminao automtica do barramento. Altere sua BIOS SCSI para a terminao correta, de acordo com a configurao do equipamento, ao invs de usar terminao automtica. O driver AIC7XXX no consegue descobrir se o reconhecimento externo dos cabos (e conseqente auto-terminao) est disponvel, e portanto ele simplesmente assume que o suporte existe, caso a configurao da EEPROM serial esteja definida como automatic termination. Sem o reconhecimento de cabo externo o driver ir sempre configurar a terminao de forma incorreta, o que compromete a confiabilidade do barramento SCSI. Por que o Sendmail retorna um erro que diz mail loops back to myself? 51

P:

R:

Essa pergunta respondida no FAQ do prprio Sendmail, e diz:* Eu estou tendo problemas de configuraes local "Local configuration error" como essas: 553 relay.domain.net config error: mail loops back to myself 554 <user@domain.net>... Local configuration error Como posso resolver esse problema? Voc definiu que as mensagens enviadas para o domnio em questo (domain.net) devem ser repassadas para uma outra estao especfica (nesse caso para relay.domain.net) usando um registro MX, mas essa mquina de relay no se reconhece como a estao responsvel pelas mensagens do domnio domain.net. Adicione domain.net no arquivo /etc/mail/local-host-names (caso voc esteja usando FEATURE(use_cw_file)) ou ento adicione a linha "Cw domain.net" em /etc/mail/sendmail.cf. Atualmente a verso mais recente do FAQ do sendmail mantida em sincronia com as verses mais atuais do MTA, mas ela ainda enviada regularmente para os grupos de notcias comp.mail.sendmail, comp.mail.misc, comp.mail.smail, comp.answers, e news.answers. Ainda possvel receber um cpia por e-mail do FAQ , enviando uma mensagem para <mail-server@rtfm.mit.edu > com o comando send usenet/ news.answers/mail/sendmail-faq no corpo da mensagem.

P: R:

Porque algumas aplicaes que usam tela inteira no se comportam muito bem em estaes remotas? A estao remota deve estar definindo o terminal como algum tipo diferente do cons25 que o tipo de terminal usado pelo console do FreeBSD. Existem inmeras correes para esse problema: Depois de logar-se na estao remota, defina a varivel de ambiente TERM como ansi ou sco caso a mquina em questo tenha informaes quanto a esse tipo de terminal. Use um emulador VT100 como o screen no console do FreeBSD. O screen oferece a possibilidade de usar mltiplas sesses concorrentes em um mesmo terminal, e um grande programa. Cada janela do screen se comporta como um terminal VT100, portanto a varivel TERM deve ser definida como vt100 . Instale a base do cons25 na estao remota. A maneira correta de faze-lo depende do sistema operacional em questo na estao remota. Consulte os manuais de administrao do sistema remoto em questo para descobrir como faze-lo.

52

Captulo 5. Resoluo de Problemas Levante um X server do lado FreeBSD da coisa e acesse a estao remota usando um terminal baseado no ambiente X, como o xterm ou o rxvt . A varivel TERM deve ser definida comoxterm ou vt100 no lado remoto. P: R: Por que meu computador apresenta a mensagem calcru: negative time...? Esse comportamento pode ser causado por diversos motivos relacionados a interrupes de hardware e/ou software. Pode ser devido a algum bug, mas tambm pode acontecer por causa da natureza de alguns devices. Por exemplo, usar TCP/ IP via porta paralela com uma MTU muito grande uma boa forma de provocar esse comportamento. Aceleradores grficos tambm so eficientes para criar esse tipo de problema, nesse caso, sendo necessrio analisar as configuraes de interrupes do software. Um efeito colateral desse problema so processos que morremSIGXCPU exceeded cpu time limit. No FreeBSD 3.0 e sistemas posteriores a 29 de Novembro de 1998, caso o problema no possa ser solucionado de outra forma, uma correo pode ser definir a seguinte varivel do sysctl:
#sysctl-wkern.timecounter.method=1

Isso causa um impacto de performance, mas dependendo do problema que causava esse comportamento, provvel que nem consiga-se notar a mudana nessa performance. Se o problema continuar, mantenha a varivel do sysctl habilitada e defina a opo NTIMECOUNTER no kernel para valores crescentes. Se chegar a um ponto em que foi necessrio definir NTIMECOUNTER=20 e o problema ainda no tiver sido resolvido, as interrupes so serias demais e seu comportamento no confivel. P: Acontece da pcm no ser encontrada, com a mensagem pcm0 not found ou ento minha placa de som encontrada na pcm1 mas no meu kernel a entrada se refere a device pcm0 . O que est havendo? Isso acontece no FreeBSD 3.X com placas de som PCI. A pcm0 reservada exclusivamente para placas de som ISA e por isso se a placa em questo PCI, ela ser reconhecida como pcm1 e a mensagem em questo pode acontecer.

R:

Nota
No possvel evitar a mensagem de advertncia simplesmente alterando o seu kernel e definindo device pcm1 pois isso resultar na pcm1 sendo reservada para placas ISA, 53

e o seu equipamento PCI ser reconhecido na pcm2 (e a mensagem de advertncia pcm1 not found continuar). Caso sua placa de som seja PCI ainda ser preciso criar a device snd1 ao invs da snd0 :
#cd/dev #./MAKEDEVsnd1

Esse comportamento no ocorre na srie 4.X do FreeBSD, muito trabalho foi feito para tornar o sistema mais PnP-centric e a device pcm0 no mais reservada exclusivamente para placas ISA. P: R: Porque a minha placa PnP no mais encontrada (ou encontrada como unknown ) desde a atualizao para o FreeBSD 4.X? O FreeBSD 4.X muito mais PnP-centric do que as verses anteriores, e isso causou alguns efeitos distintos em algumas placas PnP (como algumas placas de som e alguns modems interno por exemplo) que no funcionam mais da forma como funcionavam no FreeBSD 3.X. O motivo para esse comportamento explicado no seguinte e-mail, que foi enviada na lista freebsd-questions pelo Reter Wemm, respondendo uma pergunta sobre um modem interno que no era mais reconhecido no FreeBSD depois de atualizar o sistema para verso 4.X (os comentrios entre []foram adicionados com a inteno de explicar melhor o contexto da mensagem).

Nota
Os ndices dessa citao foram atualizados de seu texto original A bios PNP configurou ele [o modem] e o deixou conectado na porta em questo, por isso o estilo antigo [no 3.X] reconhece o equipamento ISA. No FreeBSD 4 o cdigo ISA bem mais PnP-centric. Era possvel [no 3.X] encontrar uma placa ISA que funcionava com determinada device e depois, o id PNP da mesma device encontrava a mesma placa novamente, como se fosse uma outra usando os mesmos recursos do sistema, e por isso ele falhava, como se fosse um conflito de recursos. Portanto, agora ele desabilita o suporta s placas programveis de forma que essa 54

Captulo 5. Resoluo de Problemas confuso e dupla deteco de hardware no ocorra. Essa mudana implica tambm na necessidade de se saber previamente os ids PnP para cada tipo de equipamento suportado, aumentando um pouco mais a lista de TODO do suporte PnP no sistema. Para fazer o equipamento voltar a funcionar, necessrio encontrar seu PnP id e adicion-lo a lista de devices ISA reconhecidas como PnP. Essa informao pode ser obtida usando pnpinfo(8) que detecta a configurao dos equipamentos. Por exemplo, veja a sada do pnpinfo(8) de um modem interno:
#pnpinfo CheckingforPlug-n-Playdevices... CardassignedCSN#1 VendorIDPMC2430(0x3024a341),SerialNumber0xffffffff PnPVersion1.0,VendorVersion0 DeviceDescription:Pace56VoiceInternalPlug&PlayModem LogicalDeviceID:PMC24300x3024a341#0 DevicesupportsI/ORangeCheck TAGStartDF I/ORange0x3f8..0x3f8,alignment0x8,len0x8 [16-bitaddr] IRQ:4-onlyonetype(true/edge)

[algumas linhas com TAG foram eliminadas]


TAGEndDF EndTag Successfullygot31resources,1logicalfdevs --cardselect#0x0001 CSNPMC2430(0x3024a341),SerialNumber0xffffffff Logicaldevice#0 IO:0x03e80x03e80x03e80x03e80x03e80x03e80x03e80x03e8 IRQ50 DMA40 IOrangecheck0x00activate0x01

A informao que voc quer a linha Vendor ID no comeo da sada do comando. O valor hexadecimal entre parnteses (0x3024a341 esse caso) PnP id e o conjunto de caracteres que o antecede (PMC2430) a identificao ASCII nica. Alternativamente, se o pnpinfo(8) no listou sua placa em questo, o pciconf(8) pode ser usado preferivelmente. Esta a sada do comando pciconf -vl de uma placa de som onboard:
#pciconf-vl

55

chip1@pci0:31:5:class=0x040100card=0x00931028 chip=0x24158086rev=0x02hdr=0x00 vendor='IntelCorporation' device='82801AA8xxChipsetAC'97AudioController' class=multimedia subclass=audio

Aqui deve-se usar o valor do chip , 0x24158086. Tais informaes (Vendor ID ou valor do chip) precisam ser adicionadas ao arquivo /usr/src/sys/isa/sio.c . Primeiro faa uma cpia de segurana do sio.c no caso de algo dar errado e tambm para que voc possa fazer um patch para enviar junto com o seu Relatrio de Problemas (voc vai enviar um PR, no vai?) e depois edite o sio.c e procure a linha
staticstructisa_pnp_idsio_ids[]={

Depois analise as linhas logo abaixo para encontrar o lugar apropriado para sua placa. As entradas na tabela ficam todas parecidas com essa logo abaixo, e so ordenadas de acordo com a identificao ASCII do fabricante do produto a qual deve ser includa como comentrio na coluna do lado do cdigo em questo, e junto com a descrio da placa ou parte dela, conforme identificada na sada do pnpinfo(8):
{0x0f804f3f,NULL},/*OZO800f-Zoom2812(56kModem)*/ {0x39804f3f,NULL},/*OZO8039-Zoom56kflex*/ {0x3024a341,NULL},/*PMC2430-Pace56VoiceInternal Modem*/ {0x1000eb49,NULL},/*ROK0010-Rockwell?*/ {0x5002734a,NULL},/*RSS0250-5614Jx3(G)Internal Modem*/

Adicione o ID hexadecimal do fabricante da placa no local apropriado, salve o arquivo e recompile o kernel, depois reinicie o sistema. Agora a sua placa deve ter sido encontrada como uma device sio exatamente como era encontrada no FreeBSD 3.X P: R: Qual a causa do erro nlist failed quando eu executo, por exemplo, o top ou o systat ? O problema que o programa que voc est tentando executar tenta ler alguma informao especfica do kernel, baseando-se no kernel symbol em questo, mas por algum motivo, essa informao no pode ser encontrada; esse erro causado por um dos seguintes problemas: O kernel e o userland do sistema no esto em sincronia (por exemplo, voc compilou um kernel novo e o instalou sem de dar um installworld , ou viceversa), e por isso a tabela de informaes dos kernel symbols diferente do que o programa pensa que . Se esse for o caso basta completar os procedimentos 56

Captulo 5. Resoluo de Problemas de atualizao do sistema (veja o arquivo /usr/src/UPDATING para a correta seqncia de aes). O /boot/loader no est sendo usado para carregar o kernel dessa estao, ao invs dele, o boot2 (veja boot(8)) est sendo usado diretamente. Apesar de no ter problema algum deixar de usar o /boot/loader , ele costuma se comportar melhor na hora de tornar os kernel symbols disponveis para aplicaes em nvel de usurio. P: R: Porque demora tanto para a conexo se estabelecer via ssh ou telnet ? O sintoma: existe um atraso muito grande entre o estabelecimento da conexo TCP e o momento que o programa cliente pede a senha (ou no caso do telnet(1), quando a tela de login aparece). O problema: o programa servidor dessa transao leva muito tempo tentando resolver o nome da estao cliente que est se conectando. A maioria dos servidores, incluindo os servidores Telnet e SSH que vem junto com o FreeBSD tentam resolver o nmero IP do cliente no nome da estao, para, entre outras coisas, gravar essa informao em um arquivo de log para referncias futuras por parte do administrador. A soluo: Se o problema acontece apenas quando voc (o cliente) tenta se conectar no servidor, o problema com o lado cliente da transao; se o problema acontece com qualquer estao que tente se conectar ao computador (servidor) ento o problema do lado servidor. Se o problema com o cliente, a nica maneira de corrigir o problema configurar corretamente o servidor DNS que responde autoritativamente pelo endereo da estao. Se for uma rede local considere esse comportamento um problema do servidor, e continue lendo; se a conexo deve ser estabelecida na rede global (internet) , ento entre em contato com o seu Provedor de Servios Internet e solicite que eles corrijam o problema. Se o problema do lado servidor, e a rede em questo, se trata de uma rede local, ser necessrio configurar o servidor de forma que ele consiga resolver os endereos dos clientes em nomes. Veja as pginas de manual do hosts(5) e named(8) para obter mais informaes. Se a conexo na Internet, provavelmente o resolvedor (lado cliente do servio de nomes) do seu servidor no est funcionando corretamente. Pra fazer o teste, tente descobrir o endereo IP do site www.yahoo.com por exemplo. Se no funcionar, esta ai o problema. P: R: O que a mensagem stray IRQ quer dizer? Stray IRQs so sintomas de hardware que interrompe o pedido de interrupo no meio de um ciclo de autorizao de interrupo. Existem trs formas de tratar o problema: 57

Aprenda a conviver com as mensagens de advertncia. De qualquer forma, todas as mensagens exceto as 5 primeiras para cada IRQ so suprimidas pelo sistema mesmo. Evite o inconveniente alterando de 5 para 0 na funo isa_strayintr() o nmero de mensagens antes de suprimir as advertncias. Evite as advertncias instalando algum equipamento de porta paralela que use a IRQ 7 e o driver PPP ( o usual, na maioria dos sistemas) e instale algum driver IDE ou qualquer outro dispositivo que use a IRQ 15 e seu respectivo suporte. P: R: Por que a mensagem file: table is full aparece repetidas vezes no dmesg? Esse erro indica que voc excedeu o nmero mximo de descrevedores (descriptors) de arquivos no sistema. Leia a seo kern.maxfiles da captulo de Ajuste de Limites do Kernel no Manual do FreeBSD do FreeBSD para obter mais informaes sobre o problema. Por que o relgio do meu laptop mantem a hora incorreta? Rode o comando dmesg(8), e procure algumas linhas com a expresso Timecounter . A ltima linha encontrada ser o relgio que o FreeBSD escolheu, e com certeza ele ser TSC .
#dmesg|grepTimecounter Timecounter"i8254"frequency1193182Hz Timecounter"TSC"frequency595573479Hz

P: R:

Essa

kern.timecounter.hardware

informao

pode

ser confirmada do sysctl(3).

ao

verificar

varivel

#sysctlkern.timecounter.hardware kern.timecounter.hardware:TSC

A BIOS do laptop altera a frequncia do relgio TSC de forma a modificar a velocidade do processador quando o computador estiver sendo utilizado com baterias, ou se o mesmo entrar em modo de economia de energia. O FreeBSD no faz distino entre frequncia do clock e modos especiais de trabalho, e por isso pode atrasar ou adiantar a hora do sistema. Esse exemplo, o laptop em questo tem dois relgios; portanto o i8254 pode ser definido como padro na varivel kern.timecounter.hardware do sysctl(3).
#sysctl-wkern.timecounter.hardware=i8254 kern.timecounter.hardware:TSC->i8254

Agora o seu laptop deve conseguir manter a data e hora de forma mais precisa. 58

Captulo 5. Resoluo de Problemas Pra tornar essa alterao automtica, adicione a seguinte linha no arquivo /etc/ sysctl.conf .
kern.timecounter.hardware=i8254

P: R:

Por que o meu laptop no funciona muito bem na hora de identificar cartes PCMCIA? Esse problema comum em laptops que tem mais de um sistema operacional instalado. Alguns sistemas no-BSD fazem os cartes PCMCIA ficarem em um estado inconsistente, causando um reconhecimento problemtico dos dispositivos por parte do pccardd , como por exemplo, detectando os cartes como "(null)""(null)" ao invs da sua marca e modelo verdadeiros. necessrio desligar completamente a alimentao de energia do equipamento para garantir que o mesmo seja completamente resetado. Desligue completamente o laptop (no suspenda seu funcionamento, no o deixe entrar em modo de espera, conhecido como standby, a alimentao deve ser completamente interrompida), espere alguns - poucos - minutos e reinicie o laptop. Tudo deve correr bem. Alguns laptops so grandes mentirosos quando afirmam estar desligados. Se o procedimento acima no funcionar, tire a bateria do laptop, espere alguns minutos e ligue o sistema novamente.

P: R:

Por que o bootloader do FreeBSD mostra a mensagem Read error e pra completamente logo aps a tela da BIOS? O inicializador do FreeBSD reconheceu a geometria de disco de forma incorreta e por isso esse valor deve ser definido manualmente com o fdisk(8) ao criar ou modificar uma partio FreeBSD. A geometria correta do disco pode ser verificada na BIOS do computador. Procure pelo nmero de cilindros, cabeas e de setores do disco em questo. No fdisk do sysinstall(8), aperte a tecla G para definir a geometria do disco manualmente. Ir aparecer uma janela de dilogo perguntando o nmero de cilindros, cabeas e setores do disco. Defina esses valores, conforme anotados da BIOS do sistema e separados por barras. 5000 cilindros, 250 cabeas e 60 setores, por exemplo, seria definido como
5000/250/60.

Aperte ENTER para confirmar os valores e depois aperte a tecla W para escrever as novas informaes na tabela de parties do disco. P: Outro sistema operacional destruiu o meu gerenciador de inicializao(Boot Manager). Como eu o recupero?

59

R:

Entre no sysinstall(8) e escolha o menu Configure, seguido do Fdisk. Escolha o disco onde o gerenciador de boot costumava ficar e aperte a barra de espaos(space). Depois aperte a tecla W para escrever as novas informaes no disco. Vai aparecer uma tela, perguntando o que deve ser instalado na MBR do disco. Escolha o Gerenciador de inicializao(Boot Manager), e ele ser reinstalado. O que o erro swap_pager: indefinite wait buffer: quer dizer? Quer dizer que existe um processo tentando paginar uma rea da memria para o disco, e que esse processo demorou mais de 20 segundos; portanto falhou. provvel que a causa desse erro sejam blocos defeituosos no disco, falha nos cabos, ou at mesmo algum outro erro de I/O relacionado ao hardware. Se o disco estiver danificado, sero apresentadas mensagens de erro referentes ao mesmo em /var/ log/messages e tambm na sada do dmesg . Do contrrio, verifique seus cabos e conectores.

P: R:

60

Captulo 6. Aplicaes Comerciais


Nota
Esta seo se encontra ainda muito escassa, embora esperamos, naturalmente, que as empresas faam adies a ela! :) Os desenvolvedores do FreeBSD no tem interesses financeiros em nenhuma das empresas listadas aqui, mas apenas as listam como um servio pblico (e sente que o interesse comercial no FreeBSD pode ter muitos efeitos positivos na viabilidade do uso do sistema a longo prazo). Ns encorajamos que os vendedores de softwares comerciais mandem seus softwares para incluso. Consulte a pgina de Fabricantes para obter uma lista maior. P: R: Onde eu posso conseguir Office Suite) para o FreeBSD? A FreeBSD Mall oferece uma verso nativa do VistaSource ApplixWare 5 para o FreeBSD. O ApplixWare uma poderosa sute comercial de aplicaes para escritrio no FreeBSD. Ela contm um processador de texto, planilha de clculos, um programa de apresentao e um pacote para desenho vetorial e outros aplicativos. O ApplixWare vendido com parte integrante da edio de Desktops BSD da FreeBSD Mall. A verso para Linux do StarOffice funciona sem problemas no FreeBSD. A maneira mais fcil de instalar a verso para Linux do StarOffice pela Coleo de Ports do FreeBSD. Verses futuras da sute Open-Source de escritrio,OpenOffice devero funcionar tambm. P: R: Onde posso conseguir o Motif para o FreeBSD? O Open Group lanou o cdigo fonte do Motif 2.1.30, que pode ser instalado como o pacote open-motif , ou ento ser compilado pelo Ports . Consulte a seo sobre o Ports no Manual do FreeBSD para obter mais informaes sobre o assunto.

Nota
O Open Motif pode ser redistribudo apenas se sua distribuio estiver sendo usada em sistemas operacionais open source. Em contrapartida, existem distribuies comerciais do Motif disponveis. Tais distribuies contudo no so gratuitas, mas suas licenas permitem que ele seja utilizando em softwares de cdigo fechado. Contate a Apps2go para obter informaes quanto a verso mais barata do ELF Motif 2.1.20 para FreeBSD (tanto para i386 quanto para Alpha). Existem duas distribuies, a development edition e a runtime edition (bem mais barata). Tais distribuies incluem: OSF/Motif manager, xmbind, panner, wsm. Kit de Desenvolvimento com uil, mrm, xm, xmcxx, arquivos include e arquivos. Bibliotecas ELF estticas e dinmicas (para serem usadas com FreeBSD 3.0 e superiores). Applets de demonstrao. Lembre-se de especificar que voc quer a verso para FreeBSD do Motif quando encomendado (no esquea de mencionar a arquitetura que voc quer tambm)! Verses para NetBSD e OpenBSD tambm so vendidas pela Apps2go. Atualmente o produto apenas disponvel para download via FTP. Mais informaes: Pgina WWW da Apps2go ou ou
<sales@apps2go.com > ou <support@apps2go.com >

fone [EUA] (817) 431 8775 ou +1 817 431-8775

Contate Metro Link para obter informaes quanto a verso ELF ou a verso a.out do Motif 2.1 para o FreeBSD. Tal distribuio inclui: 62 Gerenciador OSF/Motif, xmbind, panner, wsm.

Captulo 6. Aplicaes Comerciais Kit de desenvolvimento com uil, mrm, xm, xmcxx, arquivos include e arquivos Imake. Bibliotecas estticas e dinmicas (no se esquea de especificar que voc quer o formato ELF, caso queira usar com o FreeBSD 3.0 e posteriores; ou o formato a.out para usar com FreeBSD 2.2.8 e anteriores). Applets de Demonstrao. Pginas de manual previamente formatadas. Certifique-se de especificar que voc quer a verso para FreeBSD do Motif quando encomend-lo! Verses para Linux tambm so vendidas pela Metro Link. O produto est disponvel em CDROM ou download via FTP. Contate a Xi Graphics para obter informaes quanto a verso a.out do Motif 2.0 para o FreeBSD. A distribuio inclui: Gerenciador OSF/Motif, xmbind, panner, wsm. Kit de desenvolvimento com uil, mrm, xm, xmcxx, arquivos include e arquivos Imake. Bibliotecas estticas e dinmicas (para o FreeBSD 2.2.8 e anteriores). Applets de Demonstrao. Pginas de manual previamente formatadas. certifique-se de especificar que voc quer a verso para FreeBSD do Motif quando encomend-lo! Verses para BSDI e para Linux tambm so vendidas pela Xi Graphics. Atualmente o produto se trata de um conjunto de 4 disquetes... futuramente se tornar uma distribuio nica em CD, como o CDE da mesma empresa. P: R: Onde posso adquirir o CDE para o FreeBSD? A Xi Graphics costumava vender o CDE para o FreeBSD, mas no o faz mais. O KDE um Desktop de cdigo fonte aberto para X11 similar ao CDE em muitos aspectos. Talvez voc tambm aprecie o visual e as caractersticas do xfce. KDE e xfce esto ambos disponveis no sistema de ports do FreeBSD. P: Existe algum servidor X comercial de alta-performance? 63

R:

Sim, a Xi Graphics e a Metro Link vendem produtos da Accelerated-X para o FreeBSD e para outros sistemas baseados em Intel. O que a Metro Link oferece um servidor X de alta-performance que possui um esquema de configurao extremamente fcil, fazendo uso da sute de ferramentas de gerenciamento de pacotes do FreeBSD, com suporte a mltiplas placas de vdeo simultneas e distribudo apenas em forma binria, por meio conveniente de um download via FTP. Sem esquecer que, o produto oferecido pela Metro Link est disponvel a um preo muito razovel, $39 dlares. A Metro Link vende tambm o Motif e formato ELF e a.out para o FreeBSD (veja pergunta anterior). informaes: Pgina WWW da Metro Link ou ou
<sales@metrolink.com > ou <tech@metrolink.com >

fone [EUA] (954) 938-0283 ou +1 954 938-0283

O produto oferecido pela Xi Graphics um servidor X de alta performance, que oferece uma interface fcil de configurao e com suporte a mltiplas placas de vdeo simultneas, e distribudo apenas de forma binria em uma distribuio nica para FreeBSD e Linux. A Xi Graphics oferece ainda um servidor X de alta performance com suporte desenvolvido especificamente para laptops. Existe uma verso dedemonstrao de compatibilidade disponvel na verso 5.0 do servidor grfico. A Xi Graphics vende ainda o Motif e o CDE para o FreeBSD (veja acima). Mais informaes: Pgina WWW da Xi Graphics ou ou P: R:
<sales@xig.com > ou <support@xig.com >

fone [EUA] (800) 946 7433 ou +1 303 298-7478.

Existe algum sistema de Banco de Dados para o FreeBSD? Sim! Veja a seo de Fabricantes Comerciais do Web site do FreeBSD. D uma olhada tambm na seo de Databases da Coleo de Ports do FreeBSD.

P: 64

Posso rodar o Oracle no FreeBSD?

Captulo 6. Aplicaes Comerciais R: Pode. As pginas a seguir descrevem exatamente como configurar o Oracle para Linux no FreeBSD: http://www.scc.nl/~marcel/howto-oracle.html http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd

65

Captulo 7. Aplicaes de Usurio


P: R: Ento, onde esto todas as aplicaes de usurios? Por gentileza, d uma olhada na pgina do Ports para informaes sobre pacotes de programas disponveis na Coleo de Ports do FreeBSD. A lista atualmente ultrapassa 24,000 aplicaes e est crescendo diariamente, ento retorne pgina e verifique freqentemente as aplicaes, ou ent inscreva-se na lista de discusso freebsd-announce mailing list para atualizaes peridicas ou novas adies. A maioria dos ports devem estar disponveis para as verses 2.2, 3.x e 4.x, e muitos deles devem funcionar tambm em sistemas 2.1.x. Cada vez que um lanamento do FreeBSD produzido, um snapshot da rvore do ports do momento da lanamento tambm includa no diretrio ports/ . O FreeBSD tambm suporta o conceito de pacote, que essencialmente nada mais do que uma distribuio binria compactada com o gzip e com um pouco de inteligncia extra embutido nesse pacote, para fazer o trabalho que requerido para uma instalao customizada. Um pacote pode ser instalado e desinstalado repetidas vezes de forma fcil, sem ter que se conhecer os detalhes horrendos dos arquivos que ele inclui. Use o menu de instalao de pacotes em /stand/sysinstall (sobre a opo do pos-configuration menu) ou invoque o comando pkg_add(1) nos arquivos de pacotes especficos que voc; quer instalar. Os pacotes podem ser identificados normalmente pelo sufixo .tgz e o pessoal da distribuio em CDROM tem um diretrio /packages/All no cd que cont esses arquivos. Eles podem tambm ser baixados pela rede para vrias verses do FreeBSD nos seguintes endereos: do (sobre a opo PostConfiguration do menu) ou invoque o comando pkg_add(1) para o 2.2.8-RELEASE/2.2.8-STABLE ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/ para o 3.X-RELEASE/3.X-STABLE ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/ para o 4.X-RELEASE/4-STABLE ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/ para o 5.X-CURRENT ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current ou em um stio espelho mais perto de voc.

Note que nem todos os Ports podem estar disponveis em formato de pacotes, visto que a atualizao da Coleo de Ports do FreeBSD muito freqente, e novos programas so constantemente adicionados, e outros so atualizados. sempre bom verificar periodicamente quais pacotes esto disponveis no servidor FTP mestre do projeto FreeBSD, o ftp.FreeBSD.org. P: R: Onde eu encontro a libc.so.3.0? Voc est tentando usar um pacote construdo para o FreeBSD 2.2 ou para verses posteriores, em um sistema 2.1.X. Por gentileza, d uma olhada na seo anterior e pegue o port /pacote correto para o seu sistema. Por que eu estou tendo problemas cuja mensagem de erro mostra Error: can't find libc.so.4.0?. Acidentalmente voc pegou um pacote construdo para FreeBSD 4.X ou para o 5.X e est tentando instala-lo no seu FreeBSD 2.X ou 3.X. Por favor, pegue a verso correta dos pacotes. Por que o ghostscript gera um monte de erros no meu 386/486SX? Deixe-me adivinhar. Voc no tem um co-processador matemtico, certo? Ser necessrio adicionar um co-processador matemtico alternativo ao seu kernel; voc pode fazer isso adicionando a seguinte linha no arquivo de configurao do seu kernel, e depois recompil-lo:
optionsGPL_MATH_EMULATE

P: R:

P: R:

Nota
Quando voc fizer isto, ser necessrio remover a opo
MATH_EMULATE

P: R:

Por que aplicaes do SCO/iBCS2 bombardeiam o ``socksys''? (FreeBSD 3.0 e anteriores, apenas). Primeiro, necessrio editar o arquivo /etc/sysconfig (ou /etc/rc.conf , veja o rc.conf(5)) e modificar a ltima seo, alterando para YES a seguinte varivel:
#SettoYESifyouwantibcs2(SCO)emulationloadedatstartup ibcs2=NO

Essa alterao far o sistema carregar os mdulos de kernel do ibcs2 na inicializao. Depois, ser necessrio alterar o /compat/ibcs2/dev para parecer com:

68

Captulo 7. Aplicaes de Usurio


lrwxr-xr-x1rootwheel9Oct1522:20X0R@->/dev/ null lrwxr-xr-x1rootwheel7Oct1522:20nfsd@-> socksys -rw-rw-r--1rootwheel0Oct2812:02null lrwxr-xr-x1rootwheel9Oct1522:20socksys@->/ dev/null crw-rw-rw-1rootwheel41,1Oct1522:14spx

necessrio que o socksys aponte para /dev/null (veja null(4)) para fingir o processo de abertura e fechamento do device. O cdigo mais recente (-CURRENT ) se encarregar dos outros detalhes. Essa maneira de trabalhar o socksys bem mais limpa do que a forma que era usada anteriormente. Se voc quer que o driver spx fique disponvel para um socket X local, defina a opo SPX_HACK no kernel do FreeBSD quando voc o recompilar. P: R: P: R: P: R: P: R: Como eu configuro um sistema de INN (Internet News) na minha estao? Depois de instalar o pacote news/inn ou o port , um excelente lugar para iniciar Dave Barr's INN Page onde voe encontrar o FAQ do INN. Qual verso do Microsoft FrontPage eu devo usar? Use os Ports , Luke! Uma verso previamente corrigida do Apache,apache13-fp, est disponvel na rvore do Ports . O FreeBSD suporta Java? Veja a pgina http://www.FreeBSD.org/java/. Por que eu no consigo compilar determinado port na minha estao 3.X-STABLE? Caso esteja usando uma verso do FreeBSD significativamente mais velha do que o -CURRENT ou o -STABLE, ser necessrio usar o kit de atualizao dos Ports , disponvel em http://www.FreeBSD.org/ports/. Caso esteja atualizado mas ainda assim voc tem dificuldades, provvel que algum disponibilizou uma verso do programa que funciona perfeitamente no -CURRENT mas que no compila corretamente no -STABLE. Por gentileza, envie um Relatrio de Problemas com o comando send-pr(1) porque a coleo de Ports deve funcionar tanto no -STABLE quanto no -CURRENT. Onde posso encontrar o arquivo ld.so? Algumas aplicaes cujo formato binrio o a.out, como o Netscape Navigator, necessitam das bibliotecas a.out. Uma verso do FreeBSD nativamente construdo com bibliotecas ELF no instala as bibliotecas a.out por padro. Voc ter problemas por no ter o /usr/libexec/ld.so , se esse for o caso do seu sistema. Estas bibliotecas esto disponveis embutidas na distribuio compat22. Utilize o sysinstall(8) para instal-los. Pode-se instal-lo apartir do cdigo fonte do FreeBSD: 69

P: R:

#cd/usr/src/lib/compat/compat22 #makeinstallclean

Se quiser instalar as bibliotecas mais recentes do compat22 sempre que executar o make world , edite /etc/make.conf para incluir COMPAT22=YES . Bibliotecas de compatibilidade antigas raramente sofrem mudanas , as vezes nunca, ento geralmente no necessrio. Tambm veja as pginas de ERRATAS para o 3.1-RELEASE e 3.2-RELEASE. P: R: Eu atualizei meus fontes. E agora, como eu atualizo meus Ports instalados? FreeBSD no inclui uma ferramenta de atualizao do ports , mas existem algumas ferramentas que tornam o processo de atualizao dos Ports uma tarefa, digamos, fcil. possvel ainda instalar algumas ferramentas adicionais que facilitam o gerenciamento dos Ports instalados O comando pkg_version(1) pode gerar um script que atualizar os ports instalados para as ltimas verses da rvore de Ports .
#pkg_version-c>/tmp/myscript

O script de sada deve ser editado manualmente antes de ser usado. As verses mais recentes do pkg_version(1) foram a edio do arquivo, colocando um exit(1) no comeo do script. A sada do script deve ser salva pois ela gera informaes sobre os pacotes que so dependncias dos que esto sendo atualizados. Tais dependncias podem precisar ser atualizadas ou no, dependendo de cada uma delas. Os casos comuns onde as dependncias precisam ser atualizadas quando a verso das bibliotecas compartilhadas foram alteradas, portanto o port que usava aquela biblioteca precisa ser atualizado para que a nova verso seja usada. Caso tenha espao o bastante em disco , pode ser interessante usar a ferramenta portupgrade para automatizar o processo de atualizao das aplicaes instalados por meio de ports ou pacotes. Posto que ele foi programado em Ruby, o portupgrade um candidato improvvel se tornar parte da rvore principal do FreeBSD. Mas isso no evita que qualquer pessoa use o programa. Alias, ele uma tima ferramenta. Ele est disponvel em sysutils/portupgrade. Se a estao fica constantemente conectada, interessante usar o sistema periodic(8) para gerar um relatrio semanal sobre as verses do Ports que podem ser atualizadas. Pra configurar o sistema para isso, insira a linha weekly_status_pkg_enable="YES" no /etc/periodic.conf . P: R: Por que o /bin/sh to pequeno? Por que o FreeBSD no usa o bash ou outro interpretador de comandos (shell)? Porque o POSIX diz que assim que deve ser um interpretador de comandos (shell)?

70

Captulo 7. Aplicaes de Usurio A reposta mais complicada: muitas pessoas precisam escrever scripts shell que sejam portveis atravs de muitos sistemas. por isso que o POSIX especifica o interpretador de comandos (shell) e comandos utilitrios com tanto detalhe. A maioria dos scripts so escritos para o interpretador de comandos Bourne (Bourne shell), e vrias interfaces importantes de programao (make(1), system(3), popen(3) e anlogos em linguagens de alto-nvel como Perl e Tcl) o usam como interpretador de comandos (shell) padro. Por ser to amplamente utilizado importante que o interpretador de comandos (shell) Bourne seja rpido para carregar, seja determinstico em seu comportamento, e que tenha uma pequena alocao de memria. A implementao atual o nosso melhor esforo para encontrar a maior parte destes requerimentos simultaneamente. Como forma de manter o /bin/sh do menor tamanho possvel, no inclumos muitas das caractersticas convenientes que outros interpretadores de comando (shell) possuem. por isso que a Coleo de Ports disponibiliza outros interpretadores de comandos (shell) com caractersticas mais abrangentes, como o bash, o csh, o tcsh, e o zsh. (Voc pode comparar a utilizao de memria entre todos esses interpretadores de comandos (shell), analisando as colunas VSZ e RSS na sada do comando ps -u .) P: R: Por que o Netscape e o Opera demoram tanto para iniciar? A resposta tradicional que o DNS no seu computador est mal configurado. O Netscape e o Opera fazem verificao de DNS ao iniciar, e por isso no se tornaro disponveis at que obtenham uma resposta do servidor DNS ou at que eles determinem que a estao no est conectada na rede.

71

Captulo 8. Configuraao do Kernel


P: R: Eu gostaria de configurar meu kernel. difcil? De modo algum! Veja a seo "kernel config" do Manual do FreeBSD.

Nota
Recomenda-se que voc faa uma cpia datada do seu kernel na forma /kernel.AAMMDD e o diretrio /modules para / modules.AAMMDD depois que estiver tudo funcionando. Desta forma se voc fizer alguma bobagem quando mexer com a sua configurao, pode-se iniciar aquele kernel ao invs de ter que desfazer tudo novamente no kernel.GENERIC . Isso particularmente importante se voc estiver dando boot em um equipamento no suportado pelo kernel genrico (GENERIC ).

P: R:

A compilao do meu kernel falha porque est faltando o _hw_float . Como eu resolvo o problema? Deixa eu adivinhar. Voc removeu o npx0 (veja npx(4)) do arquivo de configurao do kernel porque voc no possui um co-processador aritmtico, certo? Errado! :-) O npx0 OBRIGATRIO. Mesmo que voc no tenha um co-processador aritmtico, o dispositivo npx0 deve ser incluido. Por que meu kernel to grande (cerca de 10MB)? Provavelmente, seu kernel foi compilado em modo de depurao (debug ). Um kernel construdo em modo de depurao (debug ) contm muitos smbolos usados para depurao que aumentam muito o seu tamanho. Note que se voc est executando um FreeBSD 3.0 ou superior, ter pouca, ou nenhuma, perda de performance por usar um kernel em modo de depurao (debug ), sendo til ter um para o caso de pane no sistema. Entretanto, se voc possui pouco espao em disco, ou simplesmente no quer executar um kernel para depurao, certifique-se que os dois itens abaixo sejam verdadeiros: No existe a seguinte linha no arquivo de configurao do kernel

P: R:

makeoptionsDEBUG=-g

Voc no est executando config(8) com a opo -g. Ambas as situaes acima fazem com que o kernel seja compilado no modo de depurao (debug ). To logo voc tenha certeza que no se enquadra naqueles itens, o kernel poder ser compilado normalmente e notadamente diminuir o tamanho; a maioria dos kernels tendem a ficar em torno de 1.5MB a 2MB. P: R: Porque esto ocorrendo conflitos de interrupo com portas multi-seriais? Quando se compila um kernel com suporte a porta multi-serial, ele avisa que somente a primeira porta testada e as demais so ignoradas devido a conflitos de interrupo. Como eu conserto isto? O problema, neste caso, que o FreeBSD possui cdigo para evitar que o kernel fique com lixo (trashed kernel) por causa de conflitos de hardware ou software. A maneira de corrigir isto excluindo as definis de IRQ em todas as portas exceto uma. Veja o exemplo:
# #Multiporthigh-speedserialline-16550UARTS # devicesio2atisa?port0x2a0ttyirq5flags0x501vector siointr devicesio3atisa?port0x2a8ttyflags0x501vectorsiointr devicesio4atisa?port0x2b0ttyflags0x501vectorsiointr devicesio5atisa?port0x2b8ttyflags0x501vectorsiointr

P: R:

Porque todo kernel que eu tento construir falha na compilao, mesmo o GENERIC? Existem vrias causas possveis para esse problema. Elas so, sem uma ordem particular: Voc no est usando os comandos make buildkernel e make installkernel , e seus fontes esto estruturados de forma diferente daqueles usados para construir o sistema atual (por exemplo, est sendo um 4.3-RELEASE em um sistema 4.0RELEASE). Se estiver sendo feita uma atualizao, leia o arquivo /usr/src/ UPDATING , prestando ateno ao final da seo COMMON ITEMS. Voc est usando os comandos make buildkernel e make installkernel , mas no garantiu a correta finalizao do comando make buildworld . O make buildkernel depende de arquivos gerados pelo make buildworld para fazer seu trabalho corretamente. Mesmo que voc esteja tentando construir um FreeBSD-STABLE, possvel que os fontes tenham sido pegos quando estavam sendo modificados, ou inconsistentes por alguma outra razo; somente os releases so absolutamente garantidos de

74

Captulo 8. Configuraao do Kernel serem compilados, embora o FreeBSD-STABLE possa ser compilado com sucesso na grande maioria das vezes. Caso j no tenha conseguido, tente buscar os fontes novamente e veja se o problema j no foi resolvido. Tente um servidor diferente, para o caso daquele que est sendo usado estar com problemas.

75

Captulo 9. Discos, Sistemas de Arquivos e Carregadores de Inicializao (Boot Loaders)


P: R: Como eu mudo todo o meu sistema operacional para um disco novo? A melhor maneira de migrar seu sistema de um disco para o outro reinstalar completamente o SO na nova unidade de armazenamento e depois migrar os dados dos usurios do disco antigo para nova instalao. Essa forma a mais recomendada, caso o sistema tenha sido -STABLE por mais de uma verso, ou caso tenha atualizado um Release ao invs de ter instalado um novo sistema. O booteasy pode ser facilmente instalado com o comando boot0cfg(8), de forma a permitir que o sistema possa iniciar dois sistemas distintos, at que voc esteja satisfeito com o novo sistema. Pule o prximo pargrafo para saber algumas formas seguras de migrar os dados dos usurios para o novo disco. Voc pode ter decidido por no refazer uma nova instalao; nesse caso ser necessrio reparticionar o novo disco com o /stand/sysinstall , ou fdisk(8) ou disklabel(8). Tambm necessrio instalar o booteasy em ambas as unidades com o comando boot0cfg(8), de forma que voc possa alternar a inicializao entre o novo sistema e a configurao atual do mesmo, at que a cpia dos dados tenha sido efetuada. Agora, com um novo disco configurado, voc est pronto para comear a mover os dados da antiga para nova unidade de armazenamento. Infelizmente os dados no podem simplesmente ser copiados ao acaso. Existem alguns arquivos especiais (como os arquivos de dispositivos /dev ), flags, e links que tendem a no funcionar no novo sistema, visto que esses arquivos ocupam inodes ou tem informaes especficas da unidade, e por isso no podem ser copiados como um arquivo comum. necessrio usar ferramentas que entendam esse comportamento. Isso significa que voc ter que usar o dump(8). sempre uma boa idia realizar esse processo de cpia de dados em modo mono-usurio, contudo tal precauo no obrigatria apenas sinal de cuidado. No aconselhvel usar nenhuma outra ferramenta a no ser o dump(8) e restore(8) para copiar o sistema de arquivos da partio raiz ("/"). O tar(1) pode funcionar de forma satisfatria, mas pode ser que no. Tambm tima idia usar o dump(8) e restore(8) para copiar (ou mover completamente) os dados em uma partio para uma outra partio vazia. Os passos necessrios para usar o dump para copiar os dados de uma partio existente para uma nova partio so:

1. 2. 3. 4.

Crie um novo sistema de arquivos com o newfs(8) na nova partio. Monte a partio em um ponto de montagem temporrio. Entre (cd) no ponto de montagem em questo. Finalmente mova os dados da partio existente para a nova partio com o dump(8).

Por exemplo, se a inteno copiar os dados da partio raiz para a partio /dev/ ad1s1a , cujo ponto de montagem temporrio o /mnt , faa o seguinte:
#newfs/dev/ad1s1a #mount/dev/ad1s1a/mnt #cd/mnt #dump0af-/|restorexf-

Redefinir a estrutura das parties com o dump(8) um processo um pouco mais trabalhoso. Caso voc queira, por exemplo, unir o contedo da partio /var com as parties de nvel acima, crie uma partio que seja grande o bastante para alocar o contedo de ambas, copie a partio principal como no exemplo descrito acima e depois copie as sub-parties para os diretrios vazios que o primeiro comando deve ter criado:
#newfs/dev/ad1s1a #mount/dev/ad1s1a/mnt #cd/mnt #dump0af-/|restorexf#cdvar #dump0af-/var|restorexf-

Para separar um diretrio de sua estrutura atual, ou seja, no mesmo exemplo ainda, alocar os dados de /var em uma partio prpria quando na definio atual o / var apenas um diretrio comum, necessrio montar a sub partio no diretrio apropriado do ponto de montagem temporrio, simulando assim o sistema de arquivos a ser criado a partir da raiz (montada no diretrio temporrio), depois basta copiar os dados do diretrio antigo para nova partio:
#newfs/dev/ad1s1a #newfs/dev/ad1s1d #mount/dev/ad1s1a/mnt #mkdir/mnt/var #mount/dev/ad1s1d/mnt/var #cd/mnt #dump0af-/|restorexf-

Talvez voc prefira usar cpio(1), pax(1), tar(1) ao invs de dump(8) na hora de copiar os dados de usurios. Quando este FAQ foi escrito, esses comandos costumavam 78

Captulo 9. Discos, Sistemas de Arquivos e Carregadores de Inicializao (Boot Loaders) perder atributos especiais dos arquivos ou mesmo alterar algumas permisses ou autoridade (dono dos arquivos), portanto use esses comandos com cuidado. P: R: Um disco no modo dangerously dedicated pode ser prejudicial a minha sade? O processo de instalao permite a escolha entre dois modos distintos de particionar o(s) disco(s) rgido. A maneira tradicional permite que outros sistemas operacionais na mesma estao possam acessar essas parties, criando entradas na tabela do fdisk (entradas chamadas de slices no FreeBSD) sob uma partio FreeBSD prpria. Uma caracterstica desse particionamento permitir mltiplos sistemas operacionais e permitir a instalao de um gerenciador de inicializao (boot) para alternar entre esses sistemas. A segunda maneira, a alternativa ao modo tradicional faz uso do disco todo para o FreeBSD e no faz esforos para se tornar compatvel com outros sistemas operacionais. Ento, por que esse modo chamado de modo perigosamente dedicado? Um disco particionado dessa forma no tem algumas caractersticas tradicionais que os PCs poderiam considerar entradas vlidas do fdisk. Dependendo das circunstncias o PC pode reclamar e gerar advertncias sobre o disco em questo, assim que o primeiro contato com essa unidade seja feito, ou pior, o PC pode ainda danificar o processo de inicializao (boot) do BSD (bootstrap) sem pedir confirmao da alterao ou at mesmo sem avisar o usurio dessa mudana. O modo perigosamente dedicado ainda costuma confundir vrias BIOS, inclusive as BIOS AWARD (encontradas, por exemplo no HP Netserver e em sistemas Micronics assim como em muitos outros) e as BIOS Symbios/NCR (da popular srie 53C8xx de controladoras SCSI). No so apenas esses dois modelos que podem apresentar dificuldades com esse modo de particionamento de disco, a lista completa ainda maior. O principal sintoma desse tipo de confuso a presena de mensagens de read error apresentada pelo bootstrap do FreeBSD quando ele tem dificuldades de encontrar-se; outro sintoma a falta de sistema operacional no momento da inicializao do PC. Ento porque esse modo de particionamento de disco existe? Esse modo economiza o uso de alguns poucos kbytes de espao em disco, e pode, em contrapartida gerar grandes problemas em uma nova instalao do sistema. O modo perigosamente dedicado em sua origem um desejo antigo dos usurios do FreeBSD, especialmente durante a instalao, que simplesmente poder ignorar a geometria de disco reconhecida pela BIOS e usar o disco todo de forma independente, sem prestar satisfao ao sistema bsico de entrada/sada do PC. O conceito de Geometria ultrapassado, mas infelizmente ainda faz parte do corao da BIOS dos Computadores Pessoais, sendo extremamente necessrio para a interao do computador com seus discos. Quando o FreeBSD cria as parties, ele tem que gravar sua localizao de forma correspondente a maneira que a BIOS ir procur-la. Se essa informao no acessvel BIOS, pode ser que o sistema no consiga iniciar-se. O modo Dangerously dedicated tenta evitar esse desconforto fazendo a operao se tornar mais simples. Em muitos casos essa forma de particionamento funciona, 79

mas ela foi criada para ser usada como ltima alternativa necessidade de definir a geometria do disco - em 99% dos casos existem formas mais vantajosas de resolver problemas com geometria. Mas ento, como evitar a necessidade do modo DD na instalao do sistema? Comece anotando os valores pra geometria que a BIOS diz estar usando pros discos locais. Esses valores podem ser apresentados pelo kernel do FreeBSD, especificando a opo -v no prompt de boot: usando boot -v nas configuraes do loader do sistema operacional. Antes do programa de instalao ser carregado o kernel apresenta a listagem dos valores para a Geometria de discos reconhecida pela BIOS do computador; no se precipite nem se preocupe, essas informaes podem ser visualizadas paginando a tela para as notaes anteriores, sendo possvel assim verificar esses valores. Normalmente as unidades de disco da BIOS so apresentadas na mesma ordem que o FreeBSD as encontra, sendo primeiro as unidades IDE seguido das SCSI. No momento do particionamento do disco, verifique se a geometria apresentada pelo FDISK corresponde ao valor apresentado pela BIOS; caso no corresponda use a tecla g para redefinir esses valores. Tambm pode ser necessrio definir a geometria manualmente em casos onde o disco em questo est vazio e sem nenhum outro tipo de partio criada, ou se o disco foi instalado em um outro computador e foi colocado na estao atual recentemente. Note que esse tipo de complicao no comum, e quando acontece, acontece apenas com o disco onde o FreeBSD est iniciando; Qualquer outro disco existente no computador ser controlado perfeitamente pelo FreeBSD em qualquer situao. Uma vez existindo a concordncia de Geometria entre a BIOS e o FreeBSD, com certeza seus problemas tero acabado, e no existia a necessidade de usar o modo DD. Contudo, se em casos extremos ainda ocorrerem erros de read error ento pode cruzar os dedos e usar o modo dedicado (DD), afinal no h nada a perder, visto que das formas tradicionais sua BIOS insiste em no cooperar de forma correta. Para voltar um disco particionado em modo dangerously dedicated para uso normal em um PC existem duas alternativas. A primeira alocar dados nulos (NULL bytes) o bastante na MBR do disco, de forma que qualquer instalao posterior acredite que o disco est vazio. Isso pode ser feito, por exemplo, da seguinte maneira:
#ddif=/dev/zeroof=/dev/rda0count=15

E a segunda forma, a opo no documentada do DOS:


C:\> fdisk/mbr

instalar um novo registro mestre de inicializao no disco em questo, sobrepondo inclusive o bootstrap do BSD.

80

Captulo 9. Discos, Sistemas de Arquivos e Carregadores de Inicializao (Boot Loaders) P: R: Em quais parties podemos seguramente usar o softupdates? Eu tenho ouvido falar de problemas em se usar o softupdates na partio /? A resposta breve: o softupdates pode ser usado com segurana em todas as parties. A resposta mais completa: existiam algumas restries quanto ao uso do softupdates na partio raiz do sistema. Tais restries se deviam a duas caractersticas causadas pelo softupdates, que eram a pouqussima chance de perder alguns dados da partio raiz se acontecesse algum system crash; apesar das probabilidades de perda de dados serem mnimas, elas existem; no existe uma danificao ou corroso do sistema de arquivos, apenas alguns arquivos podem ser simplesmente perdidos. E a segunda caracterstica a diminuio temporria de espao em disco. Quando o softupdates est ativado o kernel pode levar at trinta segundos para realmente escrever alguns dados fisicamente em disco. Caso algum arquivo grande seja apagado, ela permanece temporariamente em disco at que o kernel realmente o apague, o que pode causar uma condio de corrida simples(simple race condition). Imagine, apenas para ilustrar, que voc apague um arquivo enorme do disco, e logo em seguida crie um outro arquivo to grande quanto o primeiro; a gravao de metadados no disco pode no ter sido realizada ainda quando o segundo arquivo criado, ou seja o primeiro no foi realmente definido como um arquivo apagado. Nesse caso provvel que voc receba uma mensagem dizendo que no existe espao o bastante em disco para o segundo arquivo, quando voc tem certeza absoluta que o espao que acabou de ser liberado ao apagar o primeiro arquivo o suficiente para alocar o segundo! A voc tenta gravar o segundo arquivo mais uma vez, alguns meros segundos depois, e o processo de criao do mesmo, simplesmente funciona como esperado. Esse tipo de comportamento j levou mais de um usurio a balanar sua cabea e duvidar de sua prpria sanidade, ou mesmo da sanidade do sistema de arquivos do FreeBSD; em caso extremos, de dvidas do bom estado de ambos, a sanidade do sistema de arquivos e do prprio usurio ;-) Se o sistema falhar antes do kernel aceitar um conjunto de dados que tem que ser escrito no disco antes do mesmo ser gravado, provvel que exista perda dos dados em questo. Esse risco extremamente baixo, e geralmente contornvel. O uso, por exemplo, das opes de cache de gravao das unidades de disco IDE um fator que causa a possibilidade desse tipo de desconforto, portanto altamente recomendvel que essa opo seja desativada nos discos IDE quando for usar o softupdates. Esse comportamento afeta todas as parties que estiverem com softupdates. Portanto, o que isso implica para a partio raiz? A maioria das informaes vitais da partio raiz mudam com pouqussima freqncia. Arquivos como o /kernel e o contedo do /etc so alterados apenas durante a manuteno do sistema operacional, ou quando os usurios alteram suas senhas. Caso o sistema falhe durante essa janela de trinta segundos, depois que uma 81

dessas alteraes foi feita, possvel que alguns dados sejam perdidos. Esse risco baixssimo e praticamente indiferente para maioria das aplicaes, mas deve-se atentar que o risco existe. Caso seu sistema no tolere nem uma possibilidade to baixa de riscos, no use o softupdates na partio raiz! A / normalmente uma das menores parties do sistema. Por padro o FreeBSD coloca o diretrio /tmp na partio /, comportamento este que pode ser modificado por administradores de sistemas mais experientes. Caso seu /tmp costume ocupar muito espao, pode ser criado um link simblico para o /var/tmp , o comportamento inverso tambm vlido e bastante seguro, caso o /tmp seja uma partio grande o bastante para alocar os dados do /var/tmp tambm. P: R: O que inapropriado no meu ccd? Os sintomas desse tipo de dvida:
#ccdconfig-C ccdconfig:ioctl(CCDIOCSET):/dev/ccd0c:Inappropriatefile typeorformat

Esse problema normalmente ocorre quando se tenta concatenar as parties c cujo tipo padro unused . O ccd requer que a partio que ele esteja usando seja do tipo FS_BSDFFS. Edite o disklabel dos discos em questo e altere o tipo das parties para 4.2BSD . P: R: Porque eu no posso editar o disklabel do meu ccd? Os sintomas desse tipo de dvida:
#disklabelccd0 (itprintssomethingsensiblehere,soletustrytoeditit) #disklabel-eccd0 (edit,save,quit) disklabel:ioctlDIOCWDINFO:Nodisklabelondisk; use"disklabel-r"toinstallinitiallabel

Isso acontece por que o disklabel que o ccd retorna na verdade um valor falso, que no est realmente gravado no disco. Esse problema pode ser resolvido ao reescrever explicitamente esse dado, da seguinte forma:
#disklabelccd0>/tmp/disklabel.tmp #disklabel-Rrccd0/tmp/disklabel.tmp #disklabel-eccd0 (agorairfuncionar)

P: R:

Posso montar outros tipos de parties externas sobre FreeBSD? Digital UNIX CDROMs do tipo UFS podem ser montados diretamente no FreeBSD, j a montagem de parties de disco do Digital UNIX que usam o UFS pode ser um

82

Captulo 9. Discos, Sistemas de Arquivos e Carregadores de Inicializao (Boot Loaders) pouco mais complexa, dependendo dos detalhes do particionamento de disco para o sistema operacional em questo. Linux A partir do 2.2, o FreeBSD suporta parties do tipo ext2fs . Veja o mount_ext2fs(8) para obter mais informaes. NT Existe suporte somente-leitura as parties NTFS no FreeBSD. Para obter mais informaes leia esse tutorial, escrito por Mark Ovens em http:// ukug.uk.FreeBSD.org/~mark/ntfs_install.html.

Mais informaes sobre esse assunto seriam bem vindas :-) P: R: Como montar uma partio DOS secundria? As parties secundrias do DOS so encontradas depois que TODAS as parties primrias foram definidas. Por exemplo, se voc tem a partio E como a segunda partio DOS no segundo disco SCSI, ser necessrio criar um arquivo especial para essa quinta partio (slice 5) no /dev, depois montar /dev/da1s5:
#cd/dev #shMAKEDEVda1s5 #mount-tmsdos/dev/da1s5/dos/e

P: R: P: R:

Existe um sistema de arquivos criptografado para o FreeBSD? Sim, veja o port security/cfs. Como posso usar o carregador do NT para iniciar o FreeBSD? Esse procedimento um pouco diferente entre o FreeBSD 2.2.X e o 3.X (que tem um sistema de inico (boot) de 3 fases). A idia geral se consiste em copiar os primeiros setores da partio raiz nativa do FreeBSD e transforma-los em um arquivo, para ser colocado dentro da partio DOS/NT. Se assumir-mos que voc vai chamar esse arquivo de c:\bootsect.bsd (inspirado por c:\bootsect.dos ), pode-se ento editar o arquivo c:\boot.ini de forma a carreg, mais ou menos assim:
[bootloader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operatingsystems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WindowsNT" C:\BOOTSECT.BSD="FreeBSD" C:\="DOS"

No 2.2.X esse procedimento assume que o DOS, o NT, o FreeBSD, ou o que quer que seja, tenha sido instalado em suas parties respectivas do fdisk no mesmo disco. Esse exemplo foi testado em um sistema onde o DOS & NT estavam instalados 83

na primeira partio do fdisk, e o FreeBSD na segunda. O FreeBSD havia sido configurado para iniciar a partir de sua partio nativa, e no pela MBR do disco. Monte um disquete formatado em DOS (caso ele tenha sido convertido para NTFS) ou em FAT, por exemplo, sob o ponto de montagem /mnt .
#ddif=/dev/rda0aof=/mnt/bootsect.bsdbs=512count=1

Reinicie o computador no DOS ou NT. Sobre o NTFS, copie o arquivo bootsect.bsd e/ou arquivo bootsect.lnx do disquete para C:\ . Modifique os atributos originais(permisses) do boot.ini com:
C:\> attrib-s-rc:\boot.ini

Edite e adicione as entradas apropriadas no boot.ini seguindo o exemplo anterior e volte os atributos originais:
C:\> attrib+s+rc:\boot.ini

Se o FreeBSD estiver inicializando pela MBR, reconstrua-a com o comando fdisk do DOS depois de configurar os sistemas para iniciar a partir de suas parties nativas. No FreeBSD 3.X esse procedimento mais simples. Se o FreeBSD estiver instalado no mesmo disco que a partio de inicializao (boot) do NT est instalada, copie o /boot/boot1 para C:\BOOTSECT.BSD . Contundo, se o FreeBSD estiver em uma partio distinta, o /boot/boot1 no ir funcionar, nesse caso, o /boot/boot0 ser necessrio.

Ateno
NO COPIE SIMPLESMENTE O /boot/boot0 NO LUGAR DO / boot/boot1 , POIS A TABELA DE PARTIO SER REESCRITA, E O COMPUTADOR SE TORNAR NO INICIALIZVEL!! O /boot/boot0 precisa ser instalado com o sysinstall, selecionando o gerenciador de inicializao (boot) do FreeBSD na tela que o programa pergunta se voc deseja usar um gerenciador de inicializao(boot manager). Isso se deve ao fato que o / boot/boot0 contm informaes sobre a rea da tabela de parties definidas como caracteres nulos, mas o sysinstall copia a tabela de parties antes de copiar o / boot/boot0 para a MBR. Quando o gerenciador de inicializao (boot) do FreeBSD executado, ele grava qual ltimo sistema operacional foi carregado, definindo uma flag de sistema ativo na tabela de partio referente aquele sistema, e depois ele escreve todos os 512 bytes 84

Captulo 9. Discos, Sistemas de Arquivos e Carregadores de Inicializao (Boot Loaders) do prprio gerenciador de inicializao (boot) de volta na MBR, portanto se o /boot/ boot0 simplesmente for copiado para C:\BOOTSECT.BSD ser definida uma tabela de partio vazia com a flag de partio ativa, na MBR. P: R: Como posso iniciar o FreeBSD e o Linux com o LILO? Caso o FreeBSD e o Linux estejam no mesmo disco, basta seguir as instrues de instalao do LILO para carregar sistemas operacionais no-Linux. De forma breve, tais instrues so Carregue o Linux e adicione as seguintes linhas no /etc/lilo.conf :
other=/dev/hda2 table=/dev/hda label=FreeBSD

(A definio acima assume que a sua partio FreeBSD conhecida pelo Linux como /dev/hda2 ; altere esse valor para sua necessidade). Depois basta executar o comando lilo como usurio root e deve estar pronto. Caso o FreeBSD esteja em um outro disco, ser preciso criar uma entrada loader=/ boot/chain.b no LILO. Por exemplo:
other=/dev/dab4 table=/dev/dab loader=/boot/chain.b label=FreeBSD

Em alguns casos necessrio especificar o nmero da unidade da BIOS para que o loader do FreeBSD consiga carregar o sistema com sucesso, a partir do segundo disco. Por exemplo, caso o disco SCSI com o FreeBSD seja reconhecido pela BIOS como o disco 1, na tela do carregadir de inicializao (boot loader) do FreeBSD ser necessrio definir:
Boot:1:da(0,a)/kernel

No FreeBSD 2.2.5 e posteriores, o boot(8) pode ser configurado para que ele automaticamente defina essa informao na hora da inicializao (boot). The Linux+FreeBSD mini-HOWTO uma boa referncia sobre a utilizao do FreeBSD com o Linux. P: R: Como eu inicio o FreeBSD e o Linux usando o BootEasy? Instale o LILO no comeo da sua partio de inicializao (boot) do Linux ao invs de instala-lo na MBR. Agora o LILO pode ser carregado a partir do BootEasy. Com Windows 9x e Linux essa uma ao recomendada sempre, para garantir que o Linux possa ser iniciado de forma mais fcil caso seja necessrio reinstalar o 85

Windows (que um sistema operacional que no espera nenhum outro sistema na MBR). P: R: Como eu altero a tela de inicializao (boot) de ??? para algo mais significativo? Voc no pode alterar esse comportamento no gerenciador de inicializao (boot) padro sem reescreve-lo. Existem inmeros outros gerenciadores de inicializao (boot) na categoria sysutils da da coleo de ports , que oferecem esse recurso. Possuo uma nova unidade de disco removvel, como posso usa-la? Ainda que seja uma unidade removvel como um ZIP Drive, um EZ Drive (ou at um disquete, caso queira usa-lo dessa maneira), ou um novo disco, uma vez instalado e reconhecido pelo sistema e assim que o cartucho/disquete/outra-coisa esteja ligado a unidade em questo, as coisas passam a funcionar da mesma forma para qualquer tipo de dispositivo. (essa seo baseada no ZIP FAQ de Mark Mayo) Caso o dispositivo seja um ZIP Drive ou um disquete cujo sistema de arquivos j tenha sido criado como sendo do tipo DOS, o seguinte comando o bastante para mont-lo:
#mount-tmsdos/dev/fd0c/floppy

P: R:

caso seja um disquete, ou ento:


#mount-tmsdos/dev/da2s4/zip

caso seja um disco ZIP com as configuraes de fbrica. Para outros tipos de disco, veja como eles so tratados, usando o fdisk(8) ou sysinstall(8). Os prximos exemplos sero para um ZIP Drive controlado pela device da2, ou seja, correspondente ao terceiro disco SCSI. A no ser que se trate de um disquete ou de um disco removvel que se planeje compartilhar com outras pessoas, provavelmente mais sensata a idia de colocar um sistema de arquivos do tipo BSD nesse disco. Um sistema de arquivos desse tipo possibilita usar o suporte a nomes longos de arquivos, ter uma performance de, pelo menos 2x, e oferece muito mais estabilidade e confiana. O primeiro passo redefinir a partio DOS da unidade removvel de forma que a mesma passe a ser do tipo BSD; o fdisk(8) ou /stand/sysinstall podem ser usados para esse fim, em um disco pequeno onde no se queira preocupaes quanto a possibilidade de manter suporte a mltiplos sistemas operacionais. Nesse caso simplesmente elimine toda a partio FAT do disco e use o particionador do BSD: 86
#ddif=/dev/zeroof=/dev/rda2count=2

Captulo 9. Discos, Sistemas de Arquivos e Carregadores de Inicializao (Boot Loaders)


#disklabel-Brwda2auto

O disklabel ou /stand/sysinstall podem ser usados para criar mltiplas parties do tipo BSD. Certamente o usurio vai querer criar mais de uma partio BSD se a inteno for criar espao de Swap. De qualquer forma, esse tipo de ao irrelevante em um disco removvel do tipo ZIP. Finalmente, crie um novo sistema de arquivos como esse, que usa todo o disco em um ZIP Drive:
#newfs/dev/rda2c

e monte-o:
#mount/dev/da2c/zip

provavelmente uma boa idia adicionar uma entrada no /etc/fstab para facilitar o processo de montagem dessa unidade(veja fstab(5))de forma que seja apenas necessrio digitar o comando mount /zip no futuro:
/dev/da2c/zipffsrw,noauto00

P: R:

Por que eu tive o erro Incorrect super block na hora de montar um CDROM? necessrio avisar ao mount(8) que tipo de unidade est sendo montada. Essa definio tratada com mais detalhes em na seo de mdias pticas do Manual do FreeBSD , mais precisamente na seo Usando CDs de Dados. Device not configured ocorre na hora de montar o CDROM? Geralmente esse tipo de comportamento indica que no existe nenhum CD na unidade de CDROM, ou ento, que o CD em questo no visvel ao barramento de dados do seu PC, comum quando um CD-RW no pode ser lido por um drive tradicional. Por gentileza, queira referir-se a Usando CDs de Dados da seo do Manual do FreeBSD para uma discusso mais detalhada sobre esse assunto. Porque todos caracteres no-Ingls so apresentados como ? no sistema de arquivos do CD que acabou de ser montado no FreeBSD? Provavelmente seu CDROM usa extenses Joliet para armazenar informaes sobre tipos de arquivos e diretrios. Esse assunto discutido no captulo de Criao e Uso de CDROMs do Manual do FreeBSD, mais precisamente na seo de Uso de CDs de Dados. Eu queimei um CD no FreeBSD e agora esse disco no pode ser lido em nenhum outro sistema operacional. Por que? Provavelmente voc queimou um CD de forma crua (usando raw mode) no seu sistema, ao invs de criar um sistema de arquivos do tipo ISO 9660. D uma olhada 87

P: R:

P: R:

P: R:

no Captulo de Criao de CDROMs do Manual do FreeBSD, em especfico na seo criando CDS de dados puros. P: R: Como posso criar uma imagem de um CD de dados? A criao de imagens de CDs de dados discutida na seo duplicando CDs de dados do Manual do FreeBSD. Para mais informaes sobre unidades pticas, por gentileza, queira referir-se a seo Criao de CDs no captulo de Armazenamento do Manual do FreeBSD. Por que um CD de udio no pode ser montado com o comando mount ? Ao tentar montar um CD de udio, o mais provvel que ocorra um erro do tipo cd9660: /dev/acd0c: Invalid argument. Isso se deve ao fato que o comando mount trabalha exclusivamente com sistema de arquivos, o que no o caso de CDs de udio. CDs de udio contm apenas dados, e por isso necessrio alguma aplicao capaz de ler tais CDs. Use algum programa como o audio/xmcdna coleo de Ports do FreeBSD para ler dados em CDs desse tipo. Como eu monto um CD com mltiplas sesses de gravao? Por padro, o mount(8) tenta montar a ltima trilha de dados (sesso) de um CD. Caso queira montar uma sesso anterior pode-se usar o argumento -s na linha de comando em questo. Por gentileza, refira-se a pgina de manual do comando mount_cd9660(8) para obter exemplos especficos do uso dessa e de outras opes. Como posso permitir que usurios comuns montem disquetes, CDROMs e outros tipos de mdia removvel? Usurios comuns podem ter a permisso de montar dispositivos. Veja como: 1. 2. Como root defina a varivel vfs.usermount do sysctl para 1.
#sysctl-wvfs.usermount=1

P: R:

P: R:

P: R:

Como root defina as permisses apropriadas nos dispositivos associados ao controle da mdia removvel. Por exemplo, para permitir que os usurios possam montar a primeira unidade de disquete, use:
#chmod666/dev/fd0

Para permitir que os usurios do grupo operator montem a unidade de CDROM, use:
#chgrpoperator/dev/cd0c #chmod640/dev/cd0c

3.

Finalmente, para tornar essa alterao permanente, adicione a linha vfs.usermount=1 no arquivo /etc/sysctl.conf .

88

Captulo 9. Discos, Sistemas de Arquivos e Carregadores de Inicializao (Boot Loaders) Agora todos os usurios podem montar qualquer disquete no /dev/fd0 em algum ponto de montagem que lhes pertena:
%mkdir~/my-mount-point %mount-tmsdos/dev/fd0~/my-mount-point

Os usurios no grupo operator agora tem permisso para montar os CDs no /dev/ cd0c em qualquer ponto de montagem que lhes pertena:
%mkdir~/my-mount-point %mount-tmsdos/dev/cd0c~/my-mount-point

Desmontar o dispositivo extremamente simples:


%umount~/my-mount-point

Contudo, habilitar a opo vfs.usermount , contudo, causa algumas implicncias quanto ao quesito segurana;. A forma mais racional de acessar mdia do tipo MSDOS no FreeBSD usando a aplicao mtools , disponvel na Coleo de Ports . P: R: Os comandos du e df apresentam quantias distintas de espao em disco disponvel. O que est havendo? necessrio entender o que os comandos du e df realmente fazem. O du percorre a rvore de diretrios medindo o tamanho de cada arquivo e apresentando o total da soma de todos os arquivos encontrados em um dado diretrio, e posteriormente apresentando a soma de ambos subdiretrios no diretrio de nvel seguinte, df simplesmente pergunta ao sistema de arquivos quanto espao ainda lhe resta. Parece o mesmo comportamento, mas um arquivo alocado fora de um diretrio, por exemplo, afeta os dados apresentados pelo df, mas no afeta o du. Quando um programa est usando algum arquivo, e este apagado, o arquivo no retirado do sistema de arquivos at que o programa em questo pare de uslo. Contudo, esse arquivo imediatamente deletado da listagem de diretrios; isso pode ser mais bem observado com algum paginador como o more . Por exemplo, assuma que existe um arquivo grande o bastante que sua presena seja perceptvel claramente na sada dos comandos du e df. (Considerando que hoje em dia os discos so bem grandes, o arquivo em questo deve ser um arquivo de tamanho extremamente considervel!) Caso o arquivo seja apagado em quanto ele esteja sendo paginado com o more , pode-se perceber que o more no passa a reclamar que o arquivo no pode mais ser visualizado no mesmo instante. Contudo, a listagem, do diretrio em questo no apresentar mais esse arquivo, de forma que nenhum usurio ou outro programa possa acess-lo. A entrada do arquivo no diretrio simplesmente removida. O du vai mostrar que esse arquivo no existe mais -afinal, o du percorreu todo o diretrio e no encontrou esse arquivo listado -contudo o df mostra que o arquivo continua no disco, pois o sistema de arquivos sabe que o more continua usando aquele espao de dados que se encontram no disco. Uma vez terminada a sesso do more ,du e df concordaro entre si. 89

Note que em sistemas de arquivos com softupdates, a liberao de espao em disco tambm pode ser atrasada em at 30 segundos dependendo da situao; apenas depois desse tempo, a alterao em disco ser visvel! Esse comportamento comum e fcil de ser observado em Servidores Web. Muitos usurios configuram algum Servidor Web no FreeBSD e se esquecem de rotacionar os arquivos de log da aplicao, os quais entopem o /var . O novo administrador do sistema deleta os arquivos de log em questo, mas o sistema operacional continua reclamando que a partio est cheia, at que o Servidor Web seja desligado e religado, de forma que a aplicao libera o arquivo e permite que o sistema apague o arquivo, recuperando o espao em disco em questo. Para prevenir que isso ocorra, configure o newsyslog(8). P: R: Como eu posso adicionar mais espao para swap? No captulo Configurao e Ajuste Fino (Tuning) do Manual do FreeBSD, pode ser encontrada uma seo descrevendo como fazer isto.

90

Captulo 10. Administrao do Sistema


P: R: Onde esto os arquivos que configuram a inicializao do sistema ? Do FreeBSD 2.0.5R at o 2.2.1R, o arquivo de configuraes primrio o /etc/ sysconfig . Todas as opes devem ser definidas nesse arquivo ou ento em outros, como o /etc/rc (veja o manual para o rc(8)) e o /etc/netstart D uma olhada no /etc/sysconfig e altere as variveis de acordo com o que voc quer configurar no seu sistema. O arquivo repleto de comentrios que auxiliam a correta definio dos valores a serem definidos. A partir do 2.2.1 at o 3.0, o /etc/sysconfig foi renomeado para rc.conf(5), que auto-descritivo, e cuja sintaxe foi melhorada no processo de substituio. O / etc/netstart agora se chama /etc/rc.network , de forma que todos os arquivos possam ser copiados com um simples comando como um cp /usr/src/etc/rc* /
etc

E depois, a partir do FreeBSD 3.1, o /etc/rc.conf foi alterado para o /etc/ defaults/rc.conf . No edite esse arquivo! Ao invs disso, para todas as entradas que voc queira alterar no /etc/defaults/rc.conf , basta apenas copiar a linha relativa essa entrada para o /etc/rc.conf e depois modificar seu valor. Por exemplo, caso deseje iniciar o named, o servidor DNS disponvel no FreeBSD, a partir do FreeBSD 3.1 basta fazer isso:
#echonamed_enable="YES">>/etc/rc.conf

Para iniciar servios locais no FreeBSD 3.1 e posteriores, basta colocar os scripts shell de inicializao desses servios no diretrio /usr/local/etc/rc.d . Tais shell scripts devem ser executveis e terminarem com a extenso .sh. No FreeBSD 3.0 ou anteriores, o arquivo /etc/rc.local era a nica opo para iniciar servios/ processos locais automaticamente. O arquivo /etc/rc.serial usado para a inicializao de portas seriais (por exemplo, para definir as caractersticas das portas, e assim por diante). O arquivo /etc/rc.i386 usado para configuraes especficas de sistemas Intel e compatveis, como por exemplo, emulao iBCS2 ou definies do sistema de console dos PC. P: R: Como posso adicionar um usurio de forma simples? Use o comando adduser(8). Caso prefira uma forma mais complexa (e mais completa), use o comando pw(8).

Para remover o usurio do sistema, use o comando rmuser(8). Mais uma vez, o pw(8) tambm funciona muito bem nesse caso. P: R: Depois de editar o crontab, mensagens como root: not found ficam aparecendo sempre. Por que? Normalmente esse um problema causado ao se editar o crontab do sistema (/etc/ crontab ) e depois usar o crontab(1) para instala-lo:
#crontab/etc/crontab

Essa no a forma correta de fazer as coisas. O crontab do sistema tem um formato distinto do crontab dos usurios, o qual o crontab(1) atualiza (o manual do crontab(5) explica tais diferenas de forma mais detalhada). Caso voc tenha cometido esse engano, o novo crontab uma simples cpia do / etc/crontab , ou seja, com um formato errado. Apague-o com o comando:
#crontab-r

Da prxima vez que editar o /etc/crontab , nenhuma ao precisa ser tomada para avisar o cron(8) das alteraes. Ele vai perceber as mudanas automaticamente. Caso queira executar alguma tarefa diria, semanal ou mensal, mais indicado adicionar alguns scripts de shell sob o /usr/local/etc/periodic e deixar o programa periodic(8), chamado a partir da tabela cron do sistema, cuidar das suas tarefas assim como ele faz com as outras tarefas pertinentes ao sistema. A nica razo para esse erro que a tabela de cron do sistema tem um campo a mais, que especifica o usurio que deve executar o comando. No crontab do sistema padro do FreeBSD, esse usurio o root , em todas as entradas. Quando essa crontab usada como a tabela de cron do root (que diferente da tabela de cron do sistema), o cron(8) assume que a string root fosse um primeiro comando, mas esse comando no existe, por isso ocorre o erro. P: R: Porque o erro you are not in the correct group to su root ocorre, quando eu tento virar root com o su ? Essa uma caracterstica de segurana do FreeBSD. Para se tornar root com o su (ou qualquer outro usurio com privilgios de super usurio), preciso fazer parte do grupo wheel . Sem essa caracterstica, qualquer usurio com uma conta vlida no sistema que soubesse a senha de root poderia obter privilgios de super usurio. Por causa do comportamento atual, essa afirmao no verdadeira, uma vez que o su no vai nem permitir que o usurio d a senha de root , caso ele no esteja no grupo wheel . Para permitir que algum usurio se torne root , basta que ele faa parte do grupo wheel . 92

Captulo 10. Administrao do Sistema P: Cometi um erro no rc.conf , ou em algum outro arquivo de inicializao, e agora no posso corrigir essa alterao porque o sistema de arquivos apenas-leitura. O que devo fazer? Nessa situao, o comportamento esperado que o sistema entre em modo monousurio e pea o caminho completo para o seu interpretador de comandos (sua shell). Basta confirmar a shell padro, que ele oferece, com um simples ENTER , e depois executar um mount / para remontar o sistema de arquivos raiz ( / ) em modo leitura/escrita (rw). Tambm pode ser necessrio executar um mount -a -t ufs para montar o sistema de arquivos onde o seu editor de texto preferido vai estar disponvel. Caso seu editor esteja em um sistema de arquivos da rede, ser necessrio configurar a rede manualmente, ou usar um editor disponvel localmente, como o ed(1). Caso queira usar um editor de tela inteira como o vi(1) ou emacs(1), ser necessrio definir a varivel de ambiente TERM como do tipo cons25, bastando um simples export TERM=cons25, de forma que tais editores possam carregar as informaes corretas da base de dados do termcap(5). Depois disso, o /etc/rc.conf pode ser editado normalmente, e a sintaxe problemtica, corrigida. A mensagem de erro apresentada imediatamente aps o carregamento do kernel indica o nmero da linha e o arquivo onde o erro aconteceu. P: R: Porque estou tendo problemas ao configurar minha impressora? Por gentileza, d uma olhada nas pginas sobre impresso do Manual do FreeBSD. O documento deve responder a maioria de suas dvidas. Veja a entrada sobre Impresso no Manual do FreeBSD. Algumas impressoras precisam de um driver local, baseado em estaes, para prover qualquer tipo de impresso. Essas impressoras so chamadas de WinPrinters e no so suportadas nativamente pelo FreeBSD. Se sua impressora no funciona sob DOS ou com Windows NT 4.0, provavelmente ela uma WinPrinter. A nica esperana de se obter uma impressora desse tipo funcionando, verificar se o port print/pnm2ppa tem suporte para ela. P: R: P: R: Como posso corrigir o mapeamento de teclados do meu sistema? Por gentileza, refira-se seo usando localizao do Manual do FreeBSD, mais precisamente na parte sobre a configurao do console. O que causa mensagens como: unknown: <PNP0303> can't assign resources na inicializao do sistema? O trecho a seguir citao de uma mensagem enviada na lista freebsd-current. A mensagem can't assign resources indica que os equipamentos em questo so do tipo ISA, e que no existem 93

R:

entradas indicando drivers no-PnP compiladas no kernel. Esses equipamentos podem ser controladoras de teclados, controladora de interrupo programvel e vrias outras peas da infra-estrutura padro do sistema. Os recursos no podem ser atribudos por j existirem drivers usando tais endereos. Garrett Wollman, 24 Abril 2001 P: R: Porque eu no consigo fazer as quotas de usurios funcionarem de forma correta? 1. No habilite quotas na /, 2. Coloque o arquivo de quotas indicando o sistema de arquivos onde se deseja estabelecer as quotas, por exemplo: Sistemas de arquivos
/usr /home

Arquivos de quotas
/usr/admin/quotas /home/admin/quotas

P: R:

O FreeBSD suporta as primitivas de IPC do System V? Sim, o FreeBSD suporta IPC ao estilo do System V. Esse suporte inclui compartilhamento de memria, mensagens e semforos. necessrio adicionar as seguintes linhas no arquivo de configuraes do seu kernel, para ativar o suporte:
optionsSYSVSHM #habilitamemriacompartilhada optionsSYSVSEM#habilitasemforos optionsSYSVMSG#habilitamensagens

Nota
No FreeBSD 3.2 e posteriores, tais opes j fazem parte do kernel GENERIC, o que significa que tal suporte j deve estar compilado no seu sistema. Recompile e instale o novo kernel. P: R: Como posso usar o sendmail para entregar mensagens com UUCP? A configurao do sendmail disponvel por padro no FreeBSD direcionada para sites que estejam conectados Internet. Servidores que pretendem entregar suas mensagens via UUCP devem instalar um novo arquivo de configuraes do sendmail.

94

Captulo 10. Administrao do Sistema Alterar o /etc/mail/sendmail.cf manualmente considerado tarefa para os mais puristas. A verso 8 do sendmail tem uma nova abordagem de arquivos de configurao por meio de pr processamento com o m4(1), onde os modelos de configurao so manipulados em um nvel mais alto de abstrao. Use os arquivos de configurao disponveis sob /usr/src/usr.sbin/sendmail/cf. Caso seu sistema no tenha sido instalado com os fontes, os arquivos de configurao do sendmail foram divididos em pacotes separados. Assumindo que voc tenha o CDROM do FreeBSD montado, faa o seguinte:
#cd/cdrom/src #catscontrib.??|tarxzf--C/usr/srccontrib/sendmail

No se desespere, so apenas algumas centenas de Kilobytes em tamanho. O arquivo README no diretrio cf serve de introduo bsica ao uso do m4. Para entregar mensagens via UUCP, o melhor conselho usar o mailtertable . Trata-se de uma base de dados que o sendmail usa para basear suas decises de roteamento de mensagens. Primeiro, necessrio criar seu arquivo .mc . O diretrio /usr/src/usr.sbin/ sendmail/cf/cf o diretrio home para esse tipo de arquivo. D uma olhada, j existem alguns exemplos disponveis por l. Se assumirmos que voc chamou o arquivo de foo.mc , para converte-lo para um arquivo sendmail.cf vlido basta:
#cd/usr/src/usr.sbin/sendmail/cf/cf #makefoo.cf #cpfoo.cf/etc/mail/sendmail.cf

Um arquivo .mc tpico, se parece com algo mais ou menos assim:


VERSIONID(`Nmerodasuaverso ') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable,`hash-o/etc/mail/mailertable') define(`UUCP_RELAY',your.uucp.relay ) define(`UUCP_MAX_SIZE',200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cwyour.alias.host.name Cwyouruucpnodename.UUCP

95

As linhas contendo as entradas accept_unresolvable_domains , nocanonify , e confDONT_PROBE_INTERFACES previnem o uso do DNS durante a entrega das mensagens. A clusula UUCP_RELAY necessria por razes bizarras, nem pergunte quais. Apenas coloque o nome de uma estao que possa manipular endereos com pseudo-domnio .UUCP; normalmente o endereo de relay de e-mail do seu Provedor de Servio Internet deve servir. Depois disso, necessrio usar o arquivo /etc/mail/mailertable . Caso exista apenas um link para fora, por onde todos os e-mails so roteados, as seguintes definies so o bastante:
# #makemaphash/etc/mail/mailertable.db</etc/mail/mailertable . uucp-dom:your.uucp.relay

Um exemplo mais complexo, se pareceria com:


# #makemaphash/etc/mail/mailertable.db</etc/mail/mailertable # horus.interface-business.deuucp-dom:horus .interface-business.deuucp-dom:if-bus interface-business.deuucp-dom:if-bus .heep.sax.desmtp8:%1 horus.UUCPuucp-dom:horus if-bus.UUCPuucp-dom:if-bus .uucp-dom:

Como pode-se perceber, se trata de um arquivo usado na vida real. As primeiras trs linhas tratam situaes especiais onde as mensagens endereadas aquele domnio no devem ser roteadas pela sada padro, mas ao invs disso, ser entregues para algum servidor UUCP vizinho, de forma a encurtar o caminho para entrega dos emails. A linha seguinte trata mensagens para rede Ethernet local, para domnios onde os mails possam ser entregues via SMTP. Finalmente, os vizinhos UUCP so mencionados na notao do pseudo-domnio .UUCP, que permite um uucpneighbor!recipient sobrescrever as regras padro. A ltima linha sempre um ponto, que indica que todos os e-mails que no foram tratados pelas entradas anteriores cuja entrega seja do tipo UUCP, devem ser tratados por um dos vizinhos UUCP que sirva como gateway universal com o resto do mundo. Todas as estaes antecedendo a entrada uucp-dom: devem ser nomes de vizinhos UUCP vlidos, que podem ser checados com o comando uuname . Para lembrar que esse arquivo precisa ser convertido em base de dados do tipo DBM, o comando necessrio para tomar essa ao est comentado no incio do arquivo mailertable. Esse comando deve ser executado sempre que o mailertable for alterado.

96

Captulo 10. Administrao do Sistema Dica final: caso tenha dvidas se uma rota de e-mail em particular ir funcionar, lembre-se que a opo -bt do sendmail permite que ele seja iniciado em modo de testes de endereo; simplesmente digite 3,0 seguido do endereo que voc quer testar o roteamento de mensagens. A ltima linha ir indicar o agente de transferncia interno que foi usado, a estao de destino com a qual esse agente de entrega ir se comunicar, e o seu endereo. Para sair desse modo, digite Control-D.
%sendmail-bt ADDRESSTESTMODE(ruleset3NOTautomaticallyinvoked) Enter<ruleset><address> >3,0foo@example.com canonifyinput:foo@example.com ... parsereturns:$#uucp-dom$@your.uucp.relay $:foo <@example.com.> >^D

P: R:

Como eu configuro e-mail em uma conexo dialup com a rede? Se a sua conexo discada lhe atribui um endereo IP esttico, no necessrio configurar nenhuma opo extra. Ajuste o nome da sua estao para o nome que a identifica na Internet, e o sendmail far o resto. Mas se a conexo PPP lhe atribui endereos dinmicos, provavelmente o seu Provedor de Servio Internet oferece uma conta de correio eletrnico em seus servidores. Vamos assumir que o nome do domnio do seu provedor example.net , e que o nome do seu usurio user . Vamos assumir tambm que o nome da sua estao seja bsd.home e que o Provedor de Servio Internet defina que o endereo relay.example.net deva ser usado para relay de mensagens eletrnicas. Para acessar as mensagens da sua caixa de correio, necessrio usar um agente de busca. O Fetchmail uma boa escolha, j que ele suporta vrios protocolos distintos. Normalmente o provedor em questo oferece servio de POP3. Caso sua conexo PPP seja estabelecida nvel de usurio (user-PPP), para acessar suas mensagens automaticamente ao estabelecer-se uma conexo com a rede, basta adicionar a seguinte entrada no arquivo /etc/ppp/ppp/linkup :
MYADDR: !bgsuuser-cfetchmail

Caso esteja usando o sendmail (como foi descrito anteriormente) para entregar suas mensagens para endereos no-locais, insira o comando:
!bgsuuser-c"sendmail-q"

depois da entrada apresentada anteriormente. Esse comando ir forar o sendmail a processar sua fila de e-mail to logo uma conexo com a rede seja estabelecida.

97

Assumindo que exista uma conta para o user na mquina bsd.home . No diretrio home do user na estao bsd.home , crie um arquivo .fetchmailrc com o seguinte contedo:
pollexample.netprotocolpop3fetchallpassMySecret

Esse arquivo no deve ter permisso de leitura para nenhum outro usurio, a no ser o user j que ele contm a sua senha . Para garantir que o cabealho from: esteja sempre correto, necessrio indicar ao sendmail que o endereo user@example.net deve ser usado ao invs de user@bsd.home . Tambm interessante configurar o sendmail para entregar suas mensagens via relay.example.net , permitindo transmisso de mensagens de forma mais rpida. O seguinte arquivo .mc deve ser o bastante:
VERSIONID(`bsd.home.mcversion1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST',`relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl

Por gentileza, refira-se seo anterior para obter detalhes sobre como transformar esse arquivo .mc em um arquivo sendmail.cf . No se esquea tambm de reiniciar o sendmail depois de alterar o sendmail.cf . P: R: Que outros servidores de correio eletrnico posso usar no lugar do Sendmail? O Sendmail o programa servidor de correio eletrnico padro no FreeBSD, mas ele pode ser facilmente substitudo por qualquer outro MTA (por instncia, um MTA instalado a partir do ports ). Existem vrios MTA's que servem de alternativa ao Sendmail na Coleo de Ports do FreeBSD, sendo o mail/exim, mail/postfix, mail/qmail, mail/zmailer, os mais populares. A diversidade sempre uma boa indicao, e o fato de ter vrios servidores de email disponveis timo. Contedo, evite perguntas como O Sendmail melhor

98

Captulo 10. Administrao do Sistema que o Qmail? nas listas de discusso. Se voc realmente quer saber, procure no histrico das listas. As vantagens e desvantagens de cada MTA j foram discutidas inmeras vezes. P: R: Esqueci a senha de root! O que eu fao? Em primeiro lugar, no entre em pnico! Reinicie o seu FreeBSD, digite boot -s na tela do Boot: (ou apenas -s para as verses anteriores 3.2 do FreeBSD) para entrar e modo monousurio. Quando o sistema perguntar sobre que shell usar, aperte ENTER. Voc estar em uma prompt de comandos; digite mount -u / para montar o sistema de arquivos raiz com leitura/escrita, e depois mount -a para remontar todos os seus sistemas de arquivos. Execute o comando passwd root para modificar a senha de root do sistema, e depois digite exit(1) para continuar a inicializao em modo multiusurio. Como posso evitar que a seqncia de teclas Control+Alt+Delete reinicie o sistema? Caso esteja usando o syscons (o driver padro para o console) em um sistema FreeBSD 2.2.7 ou posterior, construa e instale um novo kernel com a opo:
optionsSC_DISABLE_REBOOT

P: R:

Caso use o driver de console PCVT em um FreeBSD 2.2.5 ou posterior, use a seguinte linha:
optionsPCVT_CTRL_ALT_DEL

Em verses anteriores s citadas, edite o mapeamento do seu teclado, usado para o console, e substitua a palavra boot por nop . O mapeamento de teclado padro est em /usr/share/syscons/keymaps/us.iso.kbd . O /etc/rc.conf deve ser instrudo de forma que esse arquivo seja lido. Se voc estiver usando um outro mapa especfico para o seu pas, edite esse mapa ao invs do padro. P: R: Como posso converter arquivos de texto do DOS para o formato do Unix? Use esse comando do perl:
%perl-i.bak-npe's/\r\n/\n/g'file...

onde file indica o arquivo ou arquivos a serem processados. As modificaes so feitas no prprio arquivo e o original salvo com a extenso .bak. O comando tr(1) tambm pode ser usado:
%tr-d'\r'<dos-text-file>unix-file

Onde dos-text-file o arquivo com o texto em formato DOS, enquanto o unixfile armazenar a sada convertida. Usar o tr(1) um pouco mais rpido do que usar o perl. 99

P: R: P: R:

Como eu mato processos pelo seu nome? Use o comando killall(1). Por que motivos o su est me atazanando pelo fato de no pertencer ACL do root ? Esse erro proveniente do sistema de autenticao da distrio do Kerberos. O problema no uma perturbao fatal. Basta executar o su com a opo -K ou ento desinstalar o Kerberos, como ser descrito na prxima questo. Como eu desinstalo o Kerberos? Para remover o Kerberos do sistema, reinstale a distribuio bin da verso que est sendo usada. Caso tenha o CDROM do FreeBSD, monte-o (vamos assumir, em / cdrom) e execute os comandos:
#cd/cdrom/bin #./install.sh

P: R:

Ou ento, apague todas as opes MAKE_KERBEROS do /etc/make.conf e recompile todo o sistema com um build world. P: R: Como posso adicionar pseudo-terminais ao sistema? Caso tenha inmeras conexes telnet, ssh, X, ou tela de usurio, provvel que voc atingir o limite dos seus pseudo-terminais. Aqui esto as instrues de como adicionar mais pseudo-terminais: 1. Construa e instale um novo kernel com a linha
pseudo-devicepty256

em seu arquivo de configuraes. 2. Execute os comandos


#cd/dev #shMAKEDEVpty{1,2,3,4,5,6,7}

de forma a criar 256 novos devices para os novos terminais. 3. Edite o /etc/ttys e adicione uma linha para cada um dos 256 terminais. Tais entradas devem ter o formato correspondente s entradas j existentes, por exemplo:
ttyqcnonenetwork

A ordem de definio das letras expressa como tty[pqrsPQRS][0-9a-v] , ao ilustrarmos em expresses regulares. 4. 100 Reinicie o sistema com o novo kernel, e pronto.

Captulo 10. Administrao do Sistema P: R: Por que motivo no consigo criar a device snd0? Simples, porque no existe a device snd . Esse nome usado para identificar o conjunto de devices que compem os drivers de som do FreeBSD, como as devices mixer , sequencer , e dsp . Para criar tais devices, basta executar:
#cd/dev #shMAKEDEVsnd0

P: R:

Como posso reler o /etc/rc.conf e reiniciar o /etc/rc sem rebootar o sistema? V para o modo monousurio e volte para o modo multiusurio. simples; no console, faa:
#shutdownnow (Note:without-ror-h) #return #exit

P: R:

O que uma sandbox? Sandbox um jargo usado em discusses pertinentes segurana de sistemas. Pode significar duas coisas: Um processo enquadrado em um conjunto de paredes virtuais que so criadas para prevenir que algum usurio, ao explorar alguma inconformidade do processo, possa tambm explorar e obter privilgios no sistema operacional como um todo. O processo deve conseguir rodar dentro dessas paredes, ou seja, nada que o processo possa fazer ao executar seu cdigo, pode ser capaz de violar tais paredes. Dessa forma no necessria uma auditoria detalhada do cdigo e das aes do processo para que se possa realizar algumas afirmaes pertinentes segurana de tal sistema. Tais paredes podem ser a identificao de um usurio (userid), por exemplo. Essa a definio de sandbox usada nas pginas de manuais do named e de security. Observe o servio ntalk , como exemplo (veja o /etc/inetd.conf). Esse servio costumava ser executado com userid do root . Hoje em dia o processo roda com o userid do tty . O usurio tty , portanto, uma sandbox criada para dificultar qualquer atividade de um usurio malicioso que por ventura consiga acesso ao sistema por meio do ntalk. Com essa sandbox, uma violao de segurana bem sucedida via ntalk dificultaria qualquer ao tomada alm das possveis com o userid do tty . 101

Um processo criado dentro de um ambiente de simulao. Essa uma situao mais complexa. Basicamente implica que qualquer pessoa m intencionada que consiga explorar tal processo, acreditar que pode obter acesso todo o ambiente, nas na verdade, estar apenas acessando um sistema de simulao, no alterando nenhum dado real. A forma mais comum de conseguir criar um ambiente simulado como esse, criando um subdiretrio partir de onde o processo consiga acessar (uma cpia de) qualquer arquivo do sistema que por ventura ele precise, e executar esse processo simulando um diretrio raiz (ou seja, para o processo, o / ser o subdiretrio determinado, e no o verdadeiro / do sistema). Outra situao comum montar um sistema de arquivos base com apenas permisso de leitura, e depois criar um outro sistema de arquivos em uma camada superior, com acesso de escrita/leitura, dando ao processo a impresso de poder ler/escrever em todo o sistema de arquivos. Apenas o processo em questo percebe esse ambiente, enquanto os outros no so necessariamente ludibriados. A inteno que tais sandbox sejam to transparentes que qualquer usurio (ou hacker) no consiga perceber que est dentro de uma. Os sistemas Unix costumam implementar esses dois principais tipos de sandbox, um em nvel de processo e o outro, muito comum, em nvel de userid. Cada processo Unix completamente separado dos outros, por meio de algum tipo de parede de segurana. Um processo nunca modifica o espao de endereamento de outro, diferente do ambiente Windows onde cada processo pode facilmente sobrescrever endereos de outros processos, fazendo o sistema travar. Cada processo Unix de propriedade de um userid em particular. Caso o userid no seja do root , ele serve de parede de segurana em relao aos processos pertencentes a outros usurios. Os userid tambm so usados para proteger dados armazenados em disco. P: R: O que securelevel (nvel de segurana do sistema)?
securelevel (nvel de segurana do sistema) um mecanismo de segurana implementado no kernel do FreeBSD. Basicamente, quando o securelevel

positivo, o kernel restringe algumas tarefas do sistema; nem mesmo o superusurio (por exemplo, o root ) tem permisso de realizar tais tarefas. Na data que este FAQ foi escrito, o mecanismo de securelevel do FreeBSD era capaz de, entre outras coisas, limitar as habilidades de: retirar algumas flags de arquivos, como a schg (flag de imutabilidade do sistema), escrever na memria do kernel por meio do /dev/mem e /dev/kmem , 102

Captulo 10. Administrao do Sistema carregar mdulos do kernel, e alterar regras de Firewall do ipfirewall(4). Para verificar o estado do securelevel (nvel de segurana do sistema) em um sistema em funcionando, simplesmente execute o seguinte comando:
#sysctlkern.securelevel

A sada apresentar o nome da varivel do sysctl(8) (nesse caso, kern.securelevel ) e um nmero. Esse ltimo ser o valor atual do nvel de segurana do kernel do FreeBSD. Caso esse valor seja positivo (maior que 0), ao menos algumas das caractersticas dos nveis de segurana estaro habilitadas. Os nveis de segurana no podem ser diminudos em um sistema que est funcionando se isso fosse possvel o securelevel (nvel de segurana do sistema) perderia sua funcionalidade. Caso seja necessrio executar alguma tarefa que necessite que o nvel de segurana seja no-positivo (por exemplo, um installworld ou alterar a data do sistema) ser preciso alterar as definies de securelevel (nvel de segurana do sistema) no /etc/rc.conf (mais precisamente, as variveis kern_securelevel e kern_securelevel_enable ) e reiniciar o sistema. Para obter mais informaes quanto aos nveis de segurana e sobre as funes especficas de cada nvel, por gentileza, consulte a pgina de manual do init(8).

Ateno
O securelevel (nvel de segurana do sistema) no uma bala de prata; ele tem vrias deficincias bvias. A mais frequnte provocar uma falsa sensao de segurana. Um dos maiores problemas, e portanto que deve ser bem observada pelo administrador do sistema, que, para que o securelevel (nvel de segurana do sistema) se torne efetivo, todos os arquivos usados pelo processo de inicializao at que os nveis de segurana se tornem positivos, devem estar seguros. Se um usurio que deseja atacar o sistema, conseguir que seu cdigo seja executado antes que o nvel de segurana seja definido (o que ocorre pouco depois do processo de inicializao, visto que algumas funes que o sistema precisa realizar, no podem ser iniciadas com um nvel elevado de segurana), a proteo do securelevel (nvel de segurana do sistema) ser invalidada. Por outro lado, a tarefa de assegurar que todos os 103

arquivos necessrios pelo processo de inicializao estejam em conformidade, no tecnicamente impossvel, mas, O processo de manuteno de um ambiente em tais condies se tornaria um pesadelo, visto que seria necessrio baixar o sistema, no mnimo para modo monousurio sempre que fosse necessrio modificar os arquivos de configurao do mesmo. Esse e outros pontos so freqentemente discutidos nas listas do FreeBSD, em especial na freebsd-security. Por gentileza, queira fazer uma busca no histrico da lista, clicando aqui, para uma discusso extensa sobre o assunto. Algumas pessoas esto esperanosas de que o securelevel logo ser afastado, em favor de um mecanismo de segurana mais refinado, mas as coisas ainda esto confusas a este respeito. Considere-se advertido.

P: R:

Tentei atualizar meu sistema para o ltimo -STABLE, mas ele se tornou -RC ou PRERELEASE! O que est havendo? A resposta mais curta: s um nome, RC um acrnimo para Release Candidate. Significa que uma nova verso est eminente. No FreeBSD, -PRERELEASE tipicamente um sinonimo de cdigo congelado antes de uma nova verso. (Em algumas verses, o ttulo -BETA foi usado sob as mesmas circunstncias em que o -PRERELEASE seria). A resposta longa: O FreeBSD normalmente deriva suas verses de duas fontes de origem. As verses principais, ponto-zero, como o 3.0-RELEASE e o 4.0-RELEASE que so marcadas inicialmente como o topo da cadeia de desenvolvimento, normalmente chamados de -CURRENT. As verses menores (como 3.1-RELEASE ou 4.2-RELEASE), so criados a partir do snapshot mais recente da ramificao ativa marcada como -STABLE. A partir do 4.3-RELEASE, cada verso conta tambm com sua prpria ramificao, que pode ser acessada por usurios que queiram apenas um nvel extremamente conservador de desenvolvimento (tipicamente, apenas consultores de segurana). Quando uma verso est para ser criada, a ramificao de onde ela se derivar deve passar por um certo processo. Parte desse processo o congelamento do cdigo. Quando o processo de congelamento do cdigo se inicia, o nome desta ramificao alterado para indicar que ela est para se tornar uma verso. Por exemplo, se a ramificao usada chamava-se 4.5-STABLE, ela passa a se chamar 4.6-PRERELEASE para indicar que o cdigo est congelado, e indicar que testes extras, pr verso, esto acontecendo. Durante esse perodo alteraes pertinentes a correes de problemas so realizadas. Quando o novo cdigo est pronto para ser lanado, ele

104

Captulo 10. Administrao do Sistema passa a ser chamado de -RC (nesse exemplo, 4.6-RC), indicando que provavelmente a nova verso ser criada a partir do cdigo atual. Nesse estgio, apenas os problemas mais srios so corrigidos. Depois que a verso finalmente lanado (4.6-RELEASE nesse exemplo) e a nova ramificao com o nome dessa verso foi criada, ela passa a se chamar -STABLE; 4.6-STABLE no nosso exemplo. Para obter mais informaes sobre a numerao das verses e sobre as vrias ramificaes CVS, por gentileza, refira-se ao artigo sobre a Engenharia de Releases. P: R: Tentei instalar um novo kernel, mas a rotina de chflags falhou. O que posso fazer? A resposta curta: provavelmente voc est com o securelevel (nvel de segurana do sistema) acima do 0. Reinicie o sistema em modo mono usurio e instale o kernel. A resposta mais completa: O FreeBSD no permite que as flags do sistema sejam alteradas caso o securelevel (nvel de segurana do sistema) seja maior que 0. O nvel atual do securelevel (nvel de segurana do sistema) pode ser verificado com o comando:
#sysctlkern.securelevel

O securelevel (nvel de segurana do sistema) no pode ser diminudo; necessrio iniciar o sistema em modo mono usurio, ou alterar o nvel de segurana em /etc/rc.conf , depois reiniciar. Veja a pgina de manual do init(8) para obter informaes mais detalhadas sobre o securelevel (nvel de segurana do sistema), e veja tambm o /etc/defaults/rc.conf e a pgina de manual do rc.conf(5) para obter mais informaes quanto ao rc.conf. P: R: No consigo alterar mais de um segundo na hora no meu sistema. O que posso fazer? A resposta curta: provavelmente o sistema est com securelevel (nvel de segurana do sistema) acima do 1. Reinicie o sistema em modo mono usurio e altere a data. A resposta mais completa: O FreeBSD no permite que a hora do sistema seja alterada por mais de um segundo quando o securelevel (nvel de segurana do sistema) do kernel maior que 1. O nvel atual do securelevel (nvel de segurana do sistema) pode ser verificado com o comando:
#sysctlkern.securelevel

O securelevel (nvel de segurana do sistema) no pode ser diminudo; necessrio iniciar o sistema em modo mono usurio, ou alterar o nvel de segurana em /etc/rc.conf , depois reiniciar. Veja a pgina de manual do init(8) para obter informaes mais detalhadas sobre o securelevel (nvel de segurana do sistema), e veja tambm o /etc/defaults/rc.conf e a pgina de manual do rc.conf(5) para obter mais informaes quanto ao rc.conf. P: Por que motivo o rpc.statd est usando 256 megabytes de memria? 105

R:

No, mo existe nenhuma falha no uso da memria, e ele n usando 256MB de RAM. Ele simplesmente gosta de (ele sempre faz isso) mapear uma quantia obscena de memria em seu endereamento, simplesmente por convenincia. No existe nada terrivelmente errado com esse comportamento, de um ponto de vista tcnico; a nica questo que assim o top(1) e o ps(1) ficam completamente perdidos. O rpc.statd(8) mapeia seu arquivo de status (localizado sob o /var ) no seu endereamento para economiza preocupaes sobre esse remapeamento em um segundo momento, quando o arquivo precisa crescer. O mapeamento feito a um valor enorme. Analisando o cdigo fonte, podemos evidenciar que o tamanho do argumento do mmap(2) 0x10000000 , ou exatos 256MB em sistemas de arquitetura IA32.

P: R:

Por que eu no posso retirar a flag schg dos arquivos? O sistema est sendo executado em um nvel de segurana elevado (maior que 0). Diminua o nvel de segurana e tente novamente. Para obter mais informaes, por gentileza, refira-se seo sobre securelevel (nvel de segurana do sistema) do FAQ , e pgina de manual do init(8) Por que a autenticao do SSH via .shosts no funciona por padro nas verses recentes do FreeBSD? O motivo simples. A autenticao via .shosts no funciona mais por padro porque o ssh(1) no est instalado com suid de root por padro. Razes bvias de segurana. Para corrigir isto, pode-se fazer o seguinte: Para uma alterao permanente, defina ENABLE_SUID_SSH como true no arquivo /etc/make.conf e recompile o ssh (ou execute um make world). Uma correo temporria pode ser mudar os modos de permisso do /usr/bin/ ssh para 4555 simplesmente executando o comando chmod 4555 /usr/bin/ssh logado como root . Depois, defina ENABLE_SUID_SSH= true no /etc/make.conf para que as alteraes tenham efeito todas as vezes que um make world for feito.

P: R:

P: R:

O que o vnlru ? O vnlru limpa e libera os vnodes quando o sistema atinge o limite do kern.maxvnodes . Essa thread do kernel se mantm inativa a maior parte do tempo, e s se inicia caso exista uma grande quantidade de memria RAM, e o sistema esteja acessando dezenas de milhares de arquivos pequenos.

106

Captulo 11. O sistema X, sistema de interface grfica e os Consoles Virtuais


P: R: Quero rodar a interface grfica X, como procedo? A maneira mais fcil simplesmente especificar o desejo de usar o X durante o processo de instalao do FreeBSD. Depois disso, leia e siga as instrues documentadas na ferramenta xf86config , que auxilia o usurio a configurar o XFree86 para os diversos monitores, placas de vdeo, mouse e etc, suportados pelo X, sistema de interface grfica. Tambm pode ser interessante dar uma olhada no servidor Xaccel. Confira a seo do FAQ pertinente Xi Graphics ou Metro Link para obter mais detalhes. P: R: Tentei rodar o X, mas o erro KDENABIO failed (Operation not permitted) sempre aparece, quando eu digito o comando startx . O que posso fazer? Seu sistema est rodando com um securelevel (nvel de segurana do sistema) elevado, no est? impossvel iniciar o X com um secureleve elevado. Para saber exatamente os motivos dessa inviabilidade, por gentileza, de uma olhada na pgina de manual do init(8). Ento, a pergunta pode ser sobre o que voc deve fazer nesse caso; basicamente, existem duas escolhas: diminua seu securelevel (nvel de segurana do sistema), colocando-o de volta para zero (normalente via /etc/rc.conf ), ou ento inicie o xdm(1) durante o processo de inicializao do sistema (antes que o securelevel (nvel de segurana do sistema) seja elevado). Veja a pergunta P:, para obter mais informaes sobre como iniciar o xdm(1) durante o boot. P: R: Por que meu mouse no funciona com o X? Caso esteja usando o syscons (o driver padro do console), o FreeBSD pode ser configurado para suportar um cursor de mouse em cada tela virtual. Com o intito de evitar conflitos com o X, o syscons suporta um dispositivo virtual, chamado / dev/sysmouse . Todos os eventos relacionados ao mouse, que o sistema recebe, so antes enviados para o device sysmouse, por meio do moused. Se a inteno usar o mouse em um ou mais consoles virtuais, e tambm usar o X, leia P: e configure o moused.

Depois, edite o /etc/XF86Config e garanta que existam as seguintes linhas no arquivo:


SectionPointer Protocol"SysMouse" Device"/dev/sysmouse" .....

O exemplo acima refere-se ao XFree86 3.3.2 e posteriores. Para verses anteriores, a clusula Protocol deve ser substituda por MouseSystems. Alguns preferem usar a device /dev/mouse sob o X. Para que isso funcione, faa um link de /dev/mouse para /dev/sysmouse (veja a pgina de manual do sysmouse(4)).
#cd/dev #rm-fmouse #ln-ssysmousemouse

P: R:

Meu mouse possui aquela bolinha (esfera) simptica de scroll. Posso usa-lo no X? Pode, mas necessrio customizar os programas do X. Veja a pgina do Colas Nahaboo sobre o assunto ( http://www.inria.fr/koala/colas/mouse-wheel-scroll/. Caso queira usar o programa imwheel, simplesmente siga os seguintes passos: 1. Traduza os eventos da esfera de scroll: O programa imwheel funciona assim: ele traduz os botes 4 e 5 do mouse em eventos do teclado do computador. Dessa forma necessrio assegurar que o driver do mouse esteja traduzindo os eventos da esfera de scroll para os eventos dos botes 4 e 5, ou seja assimilar suas funes. Existem duas formas de fazer isso, a primeira usando o moused(8) para fazer essas assimilaes, e a segunda, usar o prprio X para traduzir os eventos. a. Usando o moused(8) para traduzir os eventos da bolinha de scroll. Para que o moused(8) faa as assimilaes de eventos, basta adicionar as opes -z 4 nas opes de linhas de comando, usadas para iniciar o moused(8). Por exemplo, se normalmente voc inicia o moused(8) via moused -p /dev/psm0 basta substituir o comando por moused -p /dev/psm0 z 4. Se o moused(8) executado automaticamente durante o processo de inicializao do FreeBSD, por meio das entradas definidas no /etc/rc.conf , basta adicionar -z 4 na varivel moused_flags do /etc/rc.conf . Voc precisa agora dizer para o X que voc tem o boto 5 no mouse. Para fazer isto, simplesmente adicione a linha Buttons 5 para a seo Pointer do / etc/XF86Config . Por exemplo, voc pode seguir a seo Pointer em /etc/ XF86Config .

108

Captulo 11. O sistema X, sistema de interface grfica e os Consoles Virtuais

Exemplo 11.1. Seo Pointer no XF86Config para o mouse com bolinha de scroll, da srie 3.3.x do XFree86, usando a traduo se;rie 3.3.x do XFree86, usando a traduo por meio do moused
Section"Pointer" Protocol"SysMouse" Device"/dev/sysmouse" Buttons5 EndSection

Exemplo 11.2. Seo InputDevice do XF86Config para usar a traduo do X Server na srie 4.X do XFree86.
Section"InputDevice" Identifier"Mouse1" Driver"mouse" Option"Protocol""auto" Option"Device""/dev/sysmouse" Option"Buttons""5" EndSection

Exemplo 11.3. Exemplo de .emacs para usar paginamento em mouse com bolinha de scroll.
;;wheelmouse (global-set-key[mouse-4]'scroll-down) (global-set-key[mouse-5]'scroll-up)

b. Usando o X Server para traduzir os eventos da esfera de scroll. 109

Se voc no usa o moused(8) ou simplesmente no quer que ele faa a traduo de eventos, possvel que o servidor X faa o trabalho, no lugar do moused(8). Essa ao requer algumas alteraes no seu arquivo /etc/ XF86Config . Primeiro, necessrio definir o protocolo apropriado para o mouse. A maioria dos mouses com esferas de scroll usam o protocolo IntelliMouse. De qualquer forma, o XFree86 no suporta outros protocolos como o MouseManPlusPS/2 dos MouseMan+ Logitechfor. Uma vez definido o protocolo, necessrio criar uma entrada apropriada na seo Pointer. Depois, preciso definir que o servidor X deve remapear os eventos 4 e 5 do mouse. A opo ZAxisMapping usada para essa finalidade. Por exemplo, caso no estejas usando o moused(8) e exista um IntelliMouse ligado na PS/2 do seu computador, use o seguinte, no /etc/XF86Config .

Exemplo 11.4. Seo Pointer do XF86Config com um mouse com scroll na srie 3.3.x do XFree86.
Section"Pointer" Protocol"IntelliMouse" Device"/dev/psm0" ZAxisMapping45 EndSection

Exemplo 11.5. Seo InputDevice do XF86Config com um mouse com scroll na srie 4.x do XFree86.
Section"InputDevice" Identifier"Mouse1" Driver"mouse" Option"Protocol""auto" Option"Device""/dev/psm0" Option"ZAxisMapping""45" EndSection

110

Captulo 11. O sistema X, sistema de interface grfica e os Consoles Virtuais

Exemplo 11.6. Arquivo .emacs para usar paginamento em mouse com bolinha de scroll.
;;wheelmouse (global-set-key[mouse-4]'scroll-down) (global-set-key[mouse-5]'scroll-up)

2. Instale o imwheel Depois, instale o imwheel partir da coleo de ports do FreeBSD; ele pode ser encontrado sob a categoria x11 . A finalidade desse programa assimilar os eventos dos botes 4 e 5 do mouse, com os eventos de alguma tecla do teclado. Por exemplo, o programa deve enviar o evento da tecla Page Up quando a esfera for deslocada para frente. O imwheel usa um arquivo de configuraes para assimilar esses eventos uma tecla, de forma que possam ser configuradas aes diferentes (teclas diferentes) para aplicaes diferentes. O arquivo de configurao padro do imwheel instalado em /usr/X11R6/etc/imwheelrc . Ele pode ser copiado para ~/.imwheelrc e editado, caso se deseja customizar o arquivo de configurao. O formato esperado para o arquivo documentado na pgina de manual do imwheel(1). 3. Configure o Emacs para trabalhar em conjunto com o Imwheel (optional) Se voc usa o emacs ou o Xemacs, ser necessrio adicionar uma breve seo ao arquivo ~/.emacs . No emacs, adicione o seguinte:

Exemplo 11.7. Configurao do Emacs para Imwheel


;;;Forimwheel (setqimwheel-scroll-interval3) (defunimwheel-scroll-down-some-lines() (interactive) (scroll-downimwheel-scroll-interval)) (defunimwheel-scroll-up-some-lines() (interactive) (scroll-upimwheel-scroll-interval)) (global-set-key[?\M-\C-\)]'imwheel-scroll-up-somelines) (global-set-key[?\M-\C-\(]'imwheel-scroll-down-somelines)

111

;;;endimwheelsection

Pro Xemacs, adicione o seguinte, no seu arquivo ~/.emacs :

Exemplo 11.8. Configurao do Xemacs para Imwheel


;;;Forimwheel (setqimwheel-scroll-interval3) (defunimwheel-scroll-down-some-lines() (interactive) (scroll-downimwheel-scroll-interval)) (defunimwheel-scroll-up-some-lines() (interactive) (scroll-upimwheel-scroll-interval)) (define-keyglobal-map[(controlmeta\))]'imwheelscroll-up-some-lines) (define-keyglobal-map[(controlmeta\()]'imwheelscroll-down-some-lines) ;;;endimwheelsection

4. Execute o Imwheel Basta digitar imwheel em algum terminal X (xterm) para inicia-lo, uma vez que tudo esteja pronto. Imediatamente o programa vai estar efetivo e vai se tornar um processo em segundo plano. Caso queira sempre iniciar o imwheel, basta adicionar o comando no seu arquivo .xinitrc ou no .xsession . possvel que o imwheel mostre algumas mensagens de advertncia sobre arquivos PID; elas podem ser seguramente ignoradas, visto que so mensagens que se aplicam verso para Linux. P: R: Por qu os menus e caixas de dilogo do X, sistema de interface grfica no funcionam direito? Tente desativar a tecla Num Lock. Se por padro seu Num Lock ativo na hora do processo de inicializao, adicione a seguinte linha a seo Keyboard do seu arquivo XF86Config .
#DeixaroservidorfazerotrabalhodoNumLock.Deveser usadoapenasemversoesanterioresaR6 ServerNumLock

112

Captulo 11. O sistema X, sistema de interface grfica e os Consoles Virtuais P: R: O que um console virtual, e como eu crio mais consoles? Consoles virtuais simplesmente permitem que se tenha vrias sesses simultneas em uma mesma mquina, sem a necessidade de fazer nada complicado como configurar uma rede ou usar um servidor X. Quando o sistema iniciado, a primeira ao apresentar um prompt de login na tela do usurio, to logo todas as mensagens do processo de inicializao sejam apresentadas. Nesse momento possvel entrar com seu nome de usurio e senha para comear trabalhar (ou brincar!) no primeiro console virtual. Em algum momento, provvel que se deseje iniciar uma outra sesso, talvez para ler a documentao de alguma aplicao que est sendo usada, ou para ler e-mail enquanto a transferncia FTP se concli, enfim, qualquer ao (a)tpica de um sistema multitarefa. Nesse caso, basta pressionar Alt+F2 (segure a tecla Alt e depois aperte a tecla F2), e outro prompt de login estar esperando voc no segundo console virtual! Quando quizer alternar de volta sesso original, digite Alt+F1. A instalao padro do FreeBSD oferece trs consoles virtuais j habilitados (8 a partir do 3.3-RELEASE), e as teclas Alt+F1, Alt+F2, e Alt+F3 ir alternar entre esses consoles. Para habilitar mais consoles, edite o /etc/ttys (veja a pgina de manual do ttys(5)) e adicione as entradas da ttyv4 ttyvc depois do comentrio sobre Virtual terminals:
#Editeasentradasexistentesparattyv3emudede"off" para"on" ttyv3"/usr/libexec/gettyPc"cons25onsecure ttyv4"/usr/libexec/gettyPc"cons25onsecure ttyv5"/usr/libexec/gettyPc"cons25onsecure ttyv6"/usr/libexec/gettyPc"cons25onsecure ttyv7"/usr/libexec/gettyPc"cons25onsecure ttyv8"/usr/libexec/gettyPc"cons25onsecure ttyv9"/usr/libexec/gettyPc"cons25onsecure ttyva"/usr/libexec/gettyPc"cons25onsecure ttyvb"/usr/libexec/gettyPc"cons25onsecure

Use quantos consoles desejar. Quanto mais, maior o uso de recursos; essa uma considerao relevante quando se tem 8MB de RAM ou menos. Tambm pode ser interessante mudar o terminal de secure para insecure .

Importante
Caso se deseje usar um servidor X, necessrio garantir que exista ao menos um terminal virtual fora de uso (ou desligado). Com isso, entenda que, se sua inteo for usar 113

consoles virtuais nas suas doze teclas de funes, nada feito; apenas onze podero ser usadas caso deseje-se usar o X na mesma mquina. A maneira mais simples de desabilitar um console, desligando-o. Por exemplo, caso existam 12 terminais definidos, como mencionado na situao acima, e se queira usar o servidor X, o mais interessante mudar as configuraes do terminal 12 de:
ttyvb"/usr/libexec/gettyPc"cons25onsecure

para:
ttyvb"/usr/libexec/gettyPc"cons25offsecure

Caso seu teclado tenha apenas dez teclas de funes, basta encerrar as definies com:
ttyv9"/usr/libexec/gettyPc"cons25offsecure ttyva"/usr/libexec/gettyPc"cons25offsecure ttyvb"/usr/libexec/gettyPc"cons25offsecure

(Claro que as linhas poderiam simplesmente ser apagadas.) Uma vez editado o /etc/ttys , o passo seguinte garantir que existam devices o bastante pros terminais virtuais. A forma mais fcil de fazer isso :
#cd/dev #shMAKEDEVvty12

Em seguida, a maneira mais fcil (e mais limpa) de ativar cada um dos consoles virtuais reiniciar o sistema. Mas se reiniciar o FreeBSD no a inteno, basta desligar o servidor X, sistema de interface grfica e executar (logado como root ):
#kill-HUP1

obrigatrio tirar por completo o X, sistema de interface grfica do ar antes de dar esse comando, caso o X esteja sendo usado. Se isso no for feito, o sistema vai parecer que travou. P: R: Como posso acessar os consoles virtuais quando eu estiver no X? Use Ctrl+Alt+Fn para alternar de volta para algum console virtual. Por exemplo, Ctrl+Alt+F1 retornaria ao primeiro console virtual. Uma vez de volta ao console textual, pode-se usar Alt+Fn normalmente, para alternar entre os consoles virtuais. 114

Captulo 11. O sistema X, sistema de interface grfica e os Consoles Virtuais Pra voltar para sesso X basta alternar para o console virtual onde o X est sendo executado. Caso o X tenha sido iniciado por linha de comando (por exemplo, com o comando startx ) a sesso ter sido assimilada ao prximo console virtual fora de uso, e no ao console onde o comando foi digitado. Caso existam oito terminais virtuais ativos, o X estar sendo executado no nono. Nesse caso as teclas Alt+F9 retornaro ao sistema grfico. P: R: Como eu inicio o XDM no processo de inicializao? Existem duas formas clssicas de iniciar o xdm. A primeira consiste em inci-lo a partir do /etc/ttys (veja a pgina de manual do ttys(5)) usando o exemplo disponvel no arquivo; a segunda forma simplesmente executar o xdm a partir do rc.local (veja a pgina de manual do rc(8)) ou ento por um script X.sh em /usr/ local/etc/rc.d . As duas maneiras so igualmente vlidas, mas algumas podem ser mais eficientes em algumas situaes, onde a outra forma no seria ideal. Nos dois casos, o resultado ser o mesmo: o X iniciar o mostrando uma tela de login: grfica. O mtodo de inicializao via ttys oferece a vantagem de definir explicitamente em qual vtyX o servidor grfico vai ser carregado, passando a responsabilidade da reinicializao do X para o init, no momento do logout. O mtodo via rc.local oferece facilidades caso seja necessrio encerrar o processo xdm, no caso, por exemplo, de ocorrerem problemas ao carregar o servidor grfico. Ao usar o rc.local para carregar o xdm , ele no deve ser acompanhado de nenhum argumento (deve ser iniciado como um daemon e deve ser iniciado DEPOIS que o getty j estiver em execusso, seno provvel que ocorram conflitos entre ambos, podendo travar o console. A melhor forma de assegurar o correto funcionamento desse mtodo fazer com que o script espere 10 segundos (por exemplo, com um sleep 10;) antes de iniciar o xdm. Se a inteo iniciar o xdm a partir do /etc/ttys , ainda existe a probabilidade de conflitos entre o xdm e o getty(8). Uma forma interessante de evitar esse tipo de desconforto, definir, no arquivo /usr/X11R6/lib/X11/xdm/Xservers , o nmero do vt onde o X deve ser iniciado, da seguinte forma:
:0local/usr/X11R6/bin/Xvt4

O exemplo acima indica que o servidor X ser ativado no /dev/ttyv3 . Note que existe um offset de um vt, j que o X comea a contar os terminais (vty) a partir do um, enquando o kernel do FreeBSD os conta a partir do zero. P: R: Por que eu enfrento um Couldn't open console ao executar o xconsole? Se o X for iniciado com um startx , as permisses do /dev/console no sero redefinidas, resultando em situaes onde um xterm -C ou mesmo o xconsole no funcionaro corretamente. 115

O motivo disso a forma como as permisses so definidas por padro. Em sistemas multiusurio, normalmente no se espera que qualquer pessoa possa escrever no console do sistema. Para os usurios que esto se logando diretamente na mquina, em algum VTY, existe o arquivo fbtab(5) que resolve esse tipo de problema. Se for apropriado, garanta que exista uma linha assim
/dev/ttyv00600/dev/console

No arquivo /etc/fbtab (veja a pgina de manual do fbtab(5)). Essa linha garantir que qualquer usurio que se logar no /dev/ttyv0 ser tambm proprietrio do console. P: R: Antes eu conseguia usar o XFree86 com um usurio sem privilgios. Porque agora o servidor diz que eu tenho que ser root ? Todo servidor grfico precisa ser executado como root para que o sistema permita acesso direto aos equipamentos de vdeo. Acontece que nas verses mais antigas, o XFree86 (verses <= 3.3.6) instalava o servidor de forma que ele era automaticamente executado como root (setuid de root ). bviamente esse comportamente implica em riscos de segurana em qualquer caso onde o programa em questo seja complexo e grande; esse o caso dos servidores X. As verses mais atuais do XFree86 no instalam os servidores grficos com todo esse poder, exatamente por esse motivo. claro que rodar o X como usurio root no uma idia muito aceitvel, especialmente em relao segurana. Existem duas formas de usar o X como usurio comum. A primeira usar o xdm ou qualquer outro gerenciador de display (como o kdm ); a segunda usar o Xwrapper . O xdm um daemon que controla logins grficos. Normalmente ele iniciado no processo de inicializao e responsvel pela autenticao dos usurios, e por inciar suas sesses; essencialmente a unio grfica do getty(8) como o login(1). Para mais informaes sobre o xdm , por gentileza, refira-se documentao do XFree86 e questo do FAQ sobre xdm. O Xwrapper um intermediador do servidor grfico; um programa bem pequeno que possibilita a inicializao manual do servidor grfico por qualquer usurio, garantindo razovel segurana operao. O programa ainda faz algumas verificaes na linha de comando definida pelo usurio, para garantir a sanidade das intenes do mesmo. Se todas as intenes forem aprovadas, ele executa o X. Se por qualquer razo, a idia de usar um gerenciador de displays no te agrada, o Xwrapper feito para voc. Caso a coleo de Ports esteja instalada, o programa pode ser encontrado em /usr/ports/x11/wrapper . P: R: Por que meu mouse PS/2 no se comporta corretamente no X? O seu mouse e a device que o controla devem ter desincronizado.

116

Captulo 11. O sistema X, sistema de interface grfica e os Consoles Virtuais Nas verses 2.2.5 e anteriores, a simples alternncia entre o X e o terminal, e voltar para o X, fora a resincronizao do mouse. Se o problema se tornar frequnte, adicione a seguinte opo ao arquivo de configurao do seu kernel, e o recompile:
optionsPSM_CHECKSYNC

Veja a seo sobre a compilao do kernel, caso voc no tenha experincia com isso. Com essa opo as chances de ter problemas com a sincronia do mouse so bem pequenas. Contudo, se ainda assim o problema persistir, clique em qualquer boto durante o movimento do mouse. o bastante para resincroniza-lo. Infelizmente essa opo pode no funcionar em alguns sistemas, dependendo de qual driver controle o seu mouse PS/2; especialmente se a device de controle for do tipo ALPS GlidePoint. Na verso 2.2.6 e posteriores, a verificao de sincronia se tornou razovelmente melhor, e padro nos mouses PS/2. Deve funcionar corretamente com GlidePoint, inclusive (como o cdigo de verificao de sincronia ter se tornado padro, a opo PSM_CHECKSYNC no existe mais). Contudo, em situaes muito raras, o driver de controle do mouse pode, errneamente reportar problemas de sincronizao, mostrando a seguinte mensagem do kernel:
psmintr:outofsync(xxxx!=yyyy)

Pensando que seu mouse no est funcionando corretamente. Se for o caso, desligue o cdigo de verificao de sincronia do mouse PS/2, definindo a flag 0x100 na device de controle do mesmo. Entre no modo UserConfig definindo a opo -c na tela do processo de inicializao:
boot:-c

Depois, na linha de comando do UserConfig, digite:


UserConfig>flagspsm00x100 UserConfig>quit

P: R:

Por que meu mouse PS/2 da MouseSystems no funciona? Existem notcias que alguns modelos de mouse PS/2 da MouseSystems funcionam corretamente apenas em modo de alta resoluo. Do contrrio, o cursor do mouse costuma pular para diagonal superior esquerda da tela com certa frequncia. Infelizmente no existe soluo esse problema, nas verses 2.0.X e 2.1.X. Contudo, das verses 2.2 2.2.5, basta aplicar o seguinte patch, no /sys/i386/isa/psm.c e recompilar o kernel. Veja a seo sobre compilao do kernel caso no tenha experincia com o assunto. 117

@@-766,6+766,8@@ if(verbose>=2) log(LOG_DEBUG,"psm%d:SET_DEFAULTSreturncode:%04x \n", unit,i); +set_mouse_resolution(sc->kbdc,PSMD_RES_HIGH); + #if0 set_mouse_scaling(sc->kbdc);/*1:1scaling*/ set_mouse_mode(sc->kbdc);/*streammode*/

Na verso 2.2.6 e verses posteriores, basta especificar a flag 0x04 para device de controle do mouse PS/2, colocando-o em modo de alta resoluo. Entre no modo UserConfig com a opp -c na tela do processo de inicializao:
boot:-c

Depois, na linha de comando do UserConfig digite:


UserConfig>flagspsm00x04 UserConfig>quit

Veja a pergunta anterior, sobre outra causa possvel de problemas com o mouse. P: R: Ao compilar uma aplicao X, o imake no consegue encontrar o Imake.tmpl . Onde ele est? O Imake.tmpl parte do pacote Imake, uma aplicao padro para construo de aplicaes grficas. O Imake.tmpl , assim como vrios outros arquivos de cabealhos necessrios para compilar aplicaes grficas, parte da distribuio do X. Eles podem ser instalados pelo sysinstall ou manualmente a partir dos arquivos da distribuio. Estou construindo uma aplicao grfica que depende do XFree86 3.3.X, mas eu estou com o XFree86 4.X instalado. O que fazer? Pra definir que a construo do Port deve ser linkada s bibliotecas do XFree86 4.X, adicione o seguinte, no seu /etc/make.conf , (se o arquivo no existir, crie-o):
XFREE86_VERSION= 4

P: R:

P: R: P: R:

Como posso inverter as funes dos botes do mouse? Execute o comando xmodmap -e "pointer = 3 2 1" partir do .xinitrc ou do .xsession . Como instalar uma Splash Screen e onde posso encontra-las? A partir da lanamento do FreeBSD 3.1, uma nova caracterstica foi adicionada ao sistema, permitindo que alguns arquivos de imagens sejam usados como Splash Screens durante as mensagens do processo de inicializao. Tais imagens devem

118

Captulo 11. O sistema X, sistema de interface grfica e os Consoles Virtuais ser arquivos do tipo bitmap com 256 cores (*.BMP ) ou ento ZSoft PCX (*.PCX ). Devem ainda ter resoluo de 320x200 pixels (ou menos), para funcionarem corretamente em adaptadores de vdeo VGA tradicionais. Caso o kernel tenha sido compilado com suporte VESA, ento podem ser usados bitmaps maiores, at 1024.768 px. O suporte VESA pode ser diretamente compilado no kernel, com a opo VESA no arquivo de configurao, ou carregado como mdulo, com o kld, durante o processo de inicializao do sistema. Para definir a Splash Screens, basta modificar alguns arquivos de inicializao que controlam o processo de inicializao do FreeBSD. Tais arquivos foram alterados na verso 3.2 do FreeBSD, existindo portanto duas formas de carregar uma Splash Screens: No FreeBSD 3.1 O primeiro passo escolher o seu bitmap, e sua verso. At o FreeBSD 3.1, apenas os bitmaps do tipo Windows eram suportados. Assim que escolher (ou criar) sua Splash Screens, copie-a para /boot/splash.bmp . Depois, basta editar (ou criar, caso no exista) o arquivo /boot/loader.rc e adicionar as seguintes linhas:
loadkernel load-tsplash_image_data/boot/splash.bmp loadsplash_bmp autoboot

No FreeBSD 3.2 e posteriores Alm de adicionar suporte a Splash Screens de formato PCX, o FreeBSD 3.2 passou a oferecer uma maneira mais interessante de configurar o processo de inicializao. Caso prefira, o mtodo descrito acima, para o FreeBSD 3.1 tambm funciona. Nesse caso, se a imagem for do tipo PCX basta substituir a entrada splash_bmp por splash_pcx . Caso queira usar a nova configurao do processo de inicializao, basta criar um arquivo /boot/loader.rc com o seguinte contedo:
include/boot/loader.4th start

e depois, um /boot/loader.conf com o seguinte:


splash_bmp_load="YES" bitmap_load="YES"

Essa configurao assume que o /boot/splash.bmp deve ser usado como sua Splash Screens. Caso prefira usar um arquivo PCX, copie para o / boot/splash.pcx , e crie um /boot/loader.rc , da forma como foi indicado anteriormente; depois crie um /boot/loader.conf com o seguinte: 119

splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.pcx"

Agora voc s precisa de uma imagem, para servir de Splash Screens. Pra isso, d uma navegada na galeria disponvel em http://www.baldwin.cx/splash/. P: R: Posso usar as teclas do Windows que meu teclado possui, sob o X? Pode. Basta usar o xmodmap(1) para redefinir a funo das teclas. Assumindo que todos os teclados Windows sejam padro, os cdigos de mapeamento pras 3 teclas so: 115 - Windows, entre a tecla Ctr e a Alt do lado esquerdo. 116 - Windows, direita a tecla AltGr. 117 - Menu, do lado esquerdo da tecla Ctrl esquerda Por exemplo, para fazer com que a tecla Windows esquerda imprima uma vrgula, faa o seguinte:
#xmodmap-e"keycode115=comma"

provvel que seu gerenciador de janelas tenha que ser reiniciado, para visualizar o resultado. Pra forar o carregamento automtico do mapeamento das teclas Windows, coloque os comandos do xmodmap no arquivo ~/.xinitrc ou de preferncia, crie um arquivo ~/.xmodmaprc e inclua as opes do xmodmap uma por linha, nesse arquivo. Depois adicione:
xmodmap$HOME/.xmodmaprc

No seu ~/.xinitrc . Por exemplo, pode-se mapear as 3 teclas em questo para fazer o papel das teclas F13, F14, e F15, respectivamente. Dessa forma, seria fcil mapear as aplicaes de forma que as teclas tivessem aes no seu sistema, como veremos agora. Adicione o seguinte contedo, no arquivo ~/.xmodmaprc .
keycode115=F13 keycode116=F14 keycode117=F15

120

Se o gerenciador de janelas em questo for o fvwm2 , por exemplo, pode-se mapear as teclas de forma que o F13 minimize (ou maximize) a janela que o cursor est

Captulo 11. O sistema X, sistema de interface grfica e os Consoles Virtuais apontando, a tecla F14 de forma que ela traga a janela marcada pelo cursor para frente (ou volte para trs, caso j esteja frente), e o F15 pode alternar o menu da rea detrabalho principal, o que bem til quando a tela no visvel. As seguintes definies no ~/.fvwmrc implementam a configurao acima descrita:
KeyF13 FTIWSA Iconify KeyF14FTIWSARaiseLower KeyF15AAMenuWorkplaceNop

P: R:

Como posso obter a acelerao de equipamentos 3D para o OpenGL? A disponibilidade da acelerao 3D depende da verso do XFree86 e da placa de vdeo. Caso a placa seja NVIDIA, verifique a pgina da Iniciativa de Driver NVIDIA para o FreeBSD, que discute a acelerao 3D em chips NVIDIA com XFree86-4. Pra outras placas em conjunto com o XFree86-4, incluindo a Matrox G200/G400, a ATI Rage 128/Radeon, as 3dfx Voodoo 3, 4, 5, e Banshee, refira-se pgina sobre Renderizao Direta do XFree86-4 no FreeBSD. Usurios do XFree86 na verso 3.3 podem usar o port do Utah-GLX que pode ser encontrado em graphics/utah-glx para conseguir alguma (limitada) acelerao 3D para o OpenGL em placas Matrox Gx00, ATI Rage Pro, SiS 6326, i810, Savage, e algumas NVIDIA antigas.

121

Captulo 12. Redes


P: R: Onde obter informaes a respeito do processo de processo de inicializao sem disco rgido (diskless booting)? O processo de processo de inicializao sem disco implica na possibilidade de uma mquina FreeBSD ser inicializada atravs da rede, lendo os arquivos necessrios partir de um servidor, ao invs de um disco rgido. Para maiores detalhes, por favor, consulte o tem diskless booting no Manual do FreeBSD. Um sistema FreeBSD pode ser utilizado como roteador dedicado para uma rede? Pode. Por gentileza, refira-se documentao do Manual do FreeBSD sobre configuraes avanadas de rede, mais especificamente, a seo sobre roteamento e gateways. Posso conectar minha mquina com Win95 Internet, atravs do meu FreeBSD? Normalmente, as pessoas que propem esse tipo de questo possuem dois computadores em casa, um com FreeBSD e outro com Win95. A idia utilizar a maquina com FreeBSD para se conectar Internet, e ento oferecer acesso Internet a mquina Win95 atravs do FreeBSD. Essa apenas uma extenso especial da questo anterior. ... e a resposta sim! No FreeBSD 3.x, o ppp(8) em modo usurio oferece a opo -nat . Se o ppp(8) for executado com essa opo, basta definir a varivel gateway_enable para YES no arquivo /etc/rc.conf , e configurar corretamente a mquina Windows. Isso o bastante. Para obter mais informaes, por gentileza, refira-se a pgina de manual do ppp(8) Se o ppp(8) estiver sendo usado em modo kernel (kernel-mode) ou a conexo com a Internet for via Ethernet, a opo mais vivel ser utilizar o natd(8). Por favor, consulte a seo natd dessa documentao. P: R: O FreeBSD suporta SLIP e PPP? Claro. Veja as pginas de manual do slattach(8), sliplogin(8), ppp(8), e pppd(8). O ppp(8) e o pppd(8) oferecem suporte conexes entrantes e de sada (conexes incoming/outgoing), enquanto o slattach(8) conexes de sada (outgoing). Para obter mais informaes sobre a correta utilizao desses recursos, por gentileza, refira-se ao Captulo sobre PPP e SLIP do Manual do FreeBSD. Se o seu acesso Internet for apenas por meio de uma conta Shell, pode ser interessante dar uma olhada no port da aplicao net/slirp. Esse port oferece acesso (limitado) servios como FTP e HTTP direto da mquina local.

P: R:

P: R:

P: R:

O FreeBSD suporta NAT ou Masquerading? Se no seu caso, existe uma subrede (uma ou mais mquinas locais interconectadas em rede), mas o seu Provedor de Internet disponibiliza apenas um IP (ou se o endereo IP em questo dinmico), com certeza interessante dar uma olhada no natd(8). O natd(8) possibilita que uma subrede inteira acesse a Internet atravs de um nico endereo IP. O ppp(8) oferece suporte interno essa mesma funcionalidade, atravs da opo -nat do programa. A biblioteca libalias(3) usada tanto pelo ppp(8) quanto pelo natd(8).

P: R: P: R:

Como posso conectar duas estaes FreeBSD por linha paralela, usando o PLIP? Por gentileza, refira-se seo sobre PLIP do Manual do FreeBSD. Por que eu no posso criar um dispositivo /dev/ed0? Porque no preciso! Na estrutura de redes de Berkeley, as interfaces de rede so acessadas somente (e diretamente) pelo cdigo do kernel. Por favor verifique o arquivo /etc/rc.network e as pginas do manual para os diversos programas de rede ali mencionados, para maiores informaes. Se isto deix-lo completamente confuso, consulte um livro que descreva a administrao de rede em um outro sistema operacional baseado no modelo BSD. Com poucas excees significativas, a administrao de rede em sistemas FreeBSD basicamente a mesma da utilizada em sistemas como o SunOS 4.0 ou o Ultrix. Como eu configuro aliases (apelidos) de Ethernet? Se a inteno definir um apelido IP para uma subrede previamente configurada, basta adicionar a mscara 0xffffffff junto sintaxe usual para definio de alias no ifconfig(8):
#ifconfiged0alias192.0.2.2netmask0xffffffff

P: R:

Do contrrio, basta definir o endereo de rede e a netmask em questo, da forma tradicional:


#ifconfiged0alias172.16.141.5netmask0xffffff00

P: R:

Como eu configuro minha placa 3Com 3C503 para utilizar outra interface de conexo ? Se voc deseja utilizar uma outra interface de conexo, dever especificar alguns parmetros adicionais na linha de comando do ifconfig(8). A porta padro a link0 . Para usar a porta AUI ao invs da porta BNC utilize a flag link2 . Tais flags devem ser definidas atravs das variveis ifconfig_* no arquivo /etc/rc.conf . (consulte o rc.conf(5)).

124

Captulo 12. Redes P: R: Por que eu tenho problemas com NFS no FreeBSD? Certas interfaces de rede para PC so melhores do que outras (para adotarmos um eufemismo) e as vezes podem causar problemas em aplicaes que utilizam a rede de modo intensivo, como o NFS. Consulte o item NFS do Manual do FreeBSD para obter mais informaes sobre o assunto. P: R: Por que no possvel montar sistemas de arquivos NFS de mquinas Linux? Algumas verses do cdigo NFS do Linux aceitam requisies de montagem provenientes apenas de portas privilegiadas, experimente o comando:
#mount-o-Plinuxbox:/blah/mnt

P: R:

Por que no possvel montar sistemas de arquivos NFS de mquinas Sun? Estaes de trabalho Sun rodando SunOS 4.X aceitam requisies de montagem provenientes apenas de portas privilegiadas, experimente o comando:
#mount-o-Psunbox:/blah/mnt

P: R:

Por que o mountd informa repetidamente que can't change attributes e bad exports list utilizando o servidor de NFS do FreeBSD? O problema mais freqente o no entendimento correto do formato do arquivo / etc/exports . Por gentileza, leia com ateno a pgina de manual do exports(5) e a documentao sobre NFS no Manual do FreeBSD, especialmente a seo sobre a configurao do NFS. Por que existem problemas na comunicao (via protocolo PPP) com mquinas NeXTStep? Experimente desabilitar a varivel TCP extensions no arquivo /etc/rc.conf (consulte rc.conf(5)) alterando a varivel abaixo para NO:
tcp_extensions=NO

P: R:

Mquinas Annex da Xylogic tambm apresentam um problema similar neste aspecto, e voc deve adotar a mesma soluo para conectar-se a estes sistemas. P: R: Como habilitar o suporte a IP multicast? Desde o FreeBSD 2.0 que operaes Multicast so completamente suportadas por padro. Se a iteno fazer o sistema FreeBSD atuar como um roteador multicast, ser necessrio que o kernel do sistema seja recompilado com a opo MROUTING e que o mrouted(8) seja executado. O FreeBSD, partir da verso 2.2, pode iniciar 125

o mrouted(8) durante o processo de inicializao se a varivel mrouted_enable estiver configurada com o parmetro "YES" no arquivo /etc/rc.conf . As ferramentas MBONE esto disponveis em sua prpria categoria na coleo de ports , mbone. Se voc est procurando as ferramentas de conferncia vic e vat , procure neste diretrio! P: R: Quais interfaces de rede so baseadas no chipset DEC PCI? Esta uma lista compilada por Glen Foster <gfoster@driver.nsta.org >, com algumas adies recentes:
Tabela 12.1. Interfaces de rede baseadas no chipset DEC PCI

Vendedor ASUS Accton

Modelo

PCI-L101-TB ENI1203 EM960PCI DE-530

Cogent D-Link Dayna DEC JCIS

Compex

ENET32-PCI DP1203, DP2100 DE435, DE450 EN-9400P3 EtherPCI LNP101

Danpex Linksys Mylex SMC SMC

Condor JC1260

EtherPower 10/100 (Model 9332) EtherPower (Model 8432) TE-3500P

TopWare

Znyx (2.2.x) Znyx (3.x)

ZX312, ZX314, ZX342, ZX345, ZX346, ZX348 ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442, ZX444, ZX474, ZX478, ZX212, ZX214 (10mbps/hd)

P: R:

Por que preciso utilizar um FQDN (Nomes de domnio completamente qualificados) pras estaes da minha rede? Provavelmente voc vai estar trabalhando com estaes em domnios diferentes. Por exemplo, se voc esta em foo.bar.edu e deseja alcanar uma estao chamada mumble no domnio foo.bar.edu , dever referir-se essa esse host atravs do seu nome de domnio qualificado, mumble.foo.bar.edu , ao invs de apenas mumble .

126

Captulo 12. Redes Normalmente era possvel alcanar a estao apenas por seu nome. Essa funo era realizada pelos resolvedores BIND do ISC. Contudo, as verses atuais do BIND (veja o named(8)) que acompanham o FreeBSD no oferecem mais abreviaes padro para domnios que no sejam FQDN, com a nica exceo do domnio que sua prpria estao faz parte. Dessa forma, o host mumble , se no for localizado como mumble.foo.bar.edu , ser localizado atravs de uma busca direta partir da raiz dos servidores de resoluo. Este comportamento diferente do verificado anteriormente onde a pesquisa continuaria atravs de mumble.bar.edu e mumble.edu . Consulte a RFC 1535 para descobrir porque isso considerado uma prtica rum, e at mesmo uma brecha de segurana. Uma alternativa adicionar a linha abaixo:
searchfoo.bar.edubar.edu

ao invs da linha previamente existente


domainfoo.bar.edu

em seu arquivo /etc/resolv.conf (consulte resolv.conf(5)). Contudo verifique se a ordem de pesquisa no vai alm da fronteira entre a administrao pblica e a local, conforme definido na RFC 1535. P: R: Por que obtenho o erro, Permission denied, para todas as operaes de rede? Se o kernel do seu FreeBSD foi compilado com a opo IPFIREWALL , voc deve compreender que a poltica padro, partir da verso 2.1.7 (atualmente alterada durante o desenvolvimento da verso 2.1-STABLE) negar todos os pacotes que no forem explicitamente permitidos. A seu firewall foi erroneamente configurado, de forma no intencional, a operacionalidade do sistema pode ser restaurada, simplesmente digitando o seguinte (conectado como root ):
#ipfwadd65534allowallfromanytoany

A varivel firewall_type="open" tambm pode ser definida, no arquivo /etc/ rc.conf . Para maiores informaes sobre a configurao de firewall, por gentileza, consulte a seo correspondente no Manual do FreeBSD. P: R: Qual o acrscimo de sobrecarga ocasionado pelo IPFW? Por gentileza, refira-se ao captulo sobre Firewalls do Manual do FreeBSD mais especficamente, a seo sobre Overhead & Otimizao do IPFW. 127

P: R:

Minha regra de fwd do IPFW, que deveria redirecionar um servio para outra estao, no est funcionando. Por que? Provavelmente porque a verdadeira inteno traduzir os pacotes que chegam na sua estao, e rescrev-los para renviar para a outra mquina, e no simplesmente redirecionar o pacote. Normalmente o ideal fazer NAT (traduo de endereos de rede). Uma regra de reenvio de pacotes, faz exatamente o que ela deve fazer: reenviar pacotes. As regras no alteram (rescrevem) o contedo ou cabealhos dos dados presentes no pacote. Por exemplo, digamos que a questo seja a seguinte regra:
01000fwd10.0.0.1 fromanytofoo21

Quando um pacote destinado estao foo chegar no FreeBSD que filtra essa regra, ele ser encaminhado para a mquina cujo endereo IP 10.0.0.1 , mas o endereo de destino original do pacote ser mantido, ou seja, os pacotes chegando em 10.0.0.1 ainda tero a estao foo como destino final, marcado em seu cabealho TCP. O endereo de destino no alterado (reescrito) para a mquina 10.0.0.1 , o que propicia um comportamento de verificao de checksum do cabealho IP. O comportamento normal que a mquina 10.0.0.1 descarte o pacote, j que o endereo de destino do mesmo no o endereo da estao em questo. Esse comportamento costuma confundir alguns usurios menos experientes, no correspondendo a ao com suas expectativas. Essa uma caracterstica do IPFW, e no um problema. Consulte o FAQ sobre Redirecionamento de Servios, a pgina de manual do natd(8), ou uma das diversas ferramentas de redirecionamento disponveis na Coleo de Ports , para verificar a forma correta de obter o comportamento desejado. P: R: Como redirecionar requisies de servio de uma mquina para outra? Servios como FTP (e outros) podem ser redirecionados com o pacote socket , disponvel na rvore de Coleo do Ports , sob a categoria sysutils. Simplesmente substitua a linha de comando do servio a ser redirecionado para executar a ferramenta socket , como no exemplo abaixo:
ftpstreamtcpnowaitnobody/usr/local/bin/socket socketftp.example.com ftp

Onde ftp.foo.com e ftp so a mquina (host) e a porta de conexo que ser utilizada para o redirecionamento, respectivamente. P: R: Onde obtenho uma ferramenta de gerenciamento de banda? Existem trs ferramentas de gerenciamento de banda disponveis para o FreeBSD. O dummynet(4), integrada ao FreeBSD (ou mais especificamente ao ipfw(4));, o ALTQ, disponvel gratuitamente, e o Bandwidth Manager da Emerging Technologies, um produto comercial. O que causa o erro /dev/bpf0: device not configured?

P: 128

Captulo 12. Redes R: Voc est tentando usar um programa que precisa do Berkeley Packet Filter (veja a pgina de manual do bpf(4) para obter maiores informaes), mas ele no est compilado no kernel. Adicione a seguinte linha no arquivo de configurao do seu kernel e recompile-o:
pseudo-devicebpf#BerkeleyPacketFilter

Depois que reiniciar o sistema com o novo kernel, basta criar a interface do dispositivo, o que pode ser feito ao executar o seguinte comando, no diretrio /dev :
#shMAKEDEVbpf0

Por gentileza, refira-se seo sobre Criao de interface de Dispositivos do Manual do FreeBSD, para obter mais informaes sobre o assunto. P: R: Como montar o disco de uma estao Windows na minha rede, de forma semelhante ao smbmount em sistemas Linux? Use o conjunto de ferramentas SMBFS. Se trata de um conjunto de modificaes no kernel, e uma srie de aplicaes especficas. O programa e outras informaes podem ser obtidos na Coleo de Ports do FreeBSD, em net/smbfs, ou no sistema base do FreeBSD a partir da verso 4.5-RELEASE. O que so as mensagens sobre icmp-response bandwidth limit 300/200 pps em meus registros de logs? o resultado de seu kernel informando-o que alguma atividade esta provocando o envio de um nmero de respostas ICMP ou TCP reset (RST) superior ao nmero que o kernel julga adequado. Respostas ICMP so, geralmente, comportamento ocasionado pela tentativa de conexo em portas UDP no utilizadas. As respostas TCP reset so o resultado gerado pelas tentativas de conexo em portas TCP no ponveis. Entre outras causas, algumas das atividades que podem ocasionar esse tipo de mensage, so: Ataques de negao de servio (DoS) por fora bruta (em oposio a ataques baseados em um nico pacote que visa explorar uma vulnerabilidade especfica). Varreduras de porta (port scans) que visam rastrear um elevado nmero de portas (em oposio a ataques que tentam varrer apenas um pequeno nmero de portas conhecidas). O primeiro nmero (valor) na mensagem indica quantos pacotes foram enviados pelo kernel antes do limite passar a vigorar e o segundo valor indica o limite estabelecido no kernel. Voc pode controlar este limite atravs da varivel net.inet.icmp.icmplim do sysctl com instrues como esta abaixo, onde estabelecemos um limite de 300 pacotes por segundo:
#sysctl-wnet.inet.icmp.icmplim=300

P: R:

129

Se a inteno no registrar essas mensagens nos arquivos de registros, mas ainda assim manter a capacidade do kernel limitar as respostas, a varivel net.inet.icmp.icmplim_output do sysctl pode ser usada para desabilitar o registro:
#sysctl-wnet.inet.icmp.icmplim_output=0

Finalmente se a inteo desabilitar esse comportamento por completo, basta definir a varivel net.inet.icmp.icmplim do sysctl (conforme o exemplo acima) como 0. Desabilitar o recurso de limite de resposta desencorajado pelas razes acima expostas. P: R: Do que se trata estas mensagens de erro arp: unknown hardware address format? Significa que alguma interface de rede no mesmo barramento Ethernet que voc, est usando um endereo de MAC cujo formato no reconhecido pelo FreeBSD. Provavelmente isso deve estar sendo causado por algum outro usurio, fazendo experincias com placas Ethernet em algum lugar na sua mesma rede. Em redes com Cable Modens esse comportamento ainda mais comum; no prejudicial e no atrapalha a performance do seu FreeBSD. Acabei de instalar o CVSup, mas ao tentar us-lo, aparecem erros. O que est havendo? Primeiro, verifique se as mensagens de erro em questo so como essas:
/usr/libexec/ld-elf.so.1:Sharedobject"libXaw.so.6"notfound

P: R:

Esse tipo de erro se deve instalao do port net/cvsup em estaes sem o XFree86. Se a inteo usar a interface grfica oferecida pelo CVSup, ento instale o XFree86 imediatamente. Do contrrio, se a inteno usar o CVSup apenas por linha de comando, basta desinstalar a aplicao anterior e instalar o port net/cvsupwithout-gui. A seo sobre CVSup do Manual do FreeBSD cobre essas questes de forma mais detalhada.

130

Captulo 13. Segurana


P: R: O BIND (named ) est escutando na porta 53 e em outras portas elevadas. O que est havendo? O FreeBSD, a partir da verso 3.0, utiliza portas no privilegiadas e elevadas, aleatoriamente, para responder requisies de DNS. Se a inteno usar a porta 53 para responder a estas requisies, para adequar o comportamento do BIND um firewall ou apenas para sentir-se melhor, experimente acrescentar a instruo abaixo no arquivo /etc/namedb/named.conf :
options{ query-sourceaddress*port53; };

O * deve ser substitudo por um endereo IP nico, caso se deseje restringir ainda mais este comportamento. De qualquer forma, parabns. uma pratica saudvel verificar registros no usuais no contedo de sada do sockstat(1) P: R: O Sendmail est ouvindo na porta 587 alm da tradicional porta 25! O que est havendo? As verses mais novas do Sendmail tem suporte uma caracterstica que se chama Mail Submission, que ouve na porta 587. Esse servio no completamente suportado ainda, mas sua popularidade vem crescendo. O que a conta do usurio toor que tem UID 0? Meu sistema foi comprometido? No se preocupe. O usurio toor uma conta alternativa com poderes de super usurio (toor root escrito ao contrrio). Normalmente esse usurio era criado quando o interpretador de comandos bash(1) era instalado, mas agora o usurio existe por padro no sistema. A inteno que o usurio seja usado com um interpretador de comandos fora do padro, de forma que o ambiente de linha de comando do usurio root no tenha que ser alterada. Essa uma situao importante quando nos referimos interpretadores de comandos que no fazem parte da base do sistema operacional (por exemplo, que foram instaladas do Ports ou como pacotes, j que normalmente, elas so instaladas sob o /usr/local/bin que por padro est em um sistema de arquivos diferente da raiz do sistema. Em uma situao onde o interpretador de comandos do usurio estiver sob /usr/ local/bin ou sob /usr (ou onde quer que seja) e esse sistema de arquivos no puder ser montado por alguma razo, o usurio root estar impossibilitado de se logar no sistema para corrigir o problema (contudo, ao entrar em modo mono tarefa, o sistema pede o caminho completo para algum interpretador de comandos. Alguns administradores costumam usar o toor para tarefas do dia-a-dia, com um interpretador de comandos (shell) no comum, e deixando o root com seu

P: R:

interpretador de comandos (shell) padro para realizar tarefas de emergncia ou de modo mono usurio. Por padro, o usurio toor no pode ser usado, j que ele no tem uma senha definida. Para habilitar a conta, logue-se como root no sistema e defina uma senha para o toor . P: R: Por que o suidperl no est funcionando corretamente? Por motivos de segurana, a instalao padro do suidperl no tem o bit suid definido. Os administradores de sistemas podem reaver o comportamento esperado com o seguinte comando:
#chmodu+s/usr/bin/suidperl

Se a inteno que o suidperl seja compilado com suid durante as atualizaes do sistema, edite o /etc/make.conf e adicione a linha ENABLE_SUIDPERL=true no arquivo, antes de comear um make buildworld .

132

Captulo 14. PPP


P: R: No consigo fazer meu ppp(8) funcionar. O que estou fazendo de errado? Deve-se primeiro ler a man page do ppp(8) e seo PPP do Manual do FreeBSD. Habilite os logs com o comando
setlogPhaseChatConnectCarrierlcpipcpccpcommand

Este comando pode ser digitado no prompt do ppp(8) ou pode ser colocado no /etc/ ppp/ppp.conf (A seo default no incio do arquivo o melhor lugar para colocar isso). Tenha certeza de que seu/etc/syslog.conf (veja syslog.conf(5)) tenha as linhas
!ppp*.*/var/log/ppp.log

e que o arquivo /var/log/ppp.log exista. Agora pode-se ver o que est acontecendo analisando seu arquivo de log. No se preocupe se isso no faz sentido mas se precisar de ajuda, esta informao far sentido a eles. Se a sua verso do ppp(8) no suporta o comando set log ,deve-se fazer o download da verso mais recente. O FreeBSD 2.1.5 (e posteriores) suporta a compilao do cdigo mais recente. P: R: Por que o ppp(8) fica pendurado quando eu o inicializo? Isso normalmente acontece porque seu hostname no esta sendo resolvido. A melhor maneira de corrigir isso certificar-se de que o /etc/hosts est sendo consultado pelo resolvedor; editando primeiro o /etc/host.conf e colocando hosts na primeira linha. Para isso, simplesmente adicione no /etc/hosts/ uma entrada para sua mquina local. Se no tem nenhuma rede local, mude a linha do localhost :
127.0.0.1foo.example.comfoolocalhost

Seno, adicione uma outra entrada para seu host. Consulte as man pages relevantes para maiores detalhes. Ao terminar, deve ser possvel dar um ping -c1 `nomedohost` com sucesso. P: R: Porque o ppp(8) no disca em modo-auto Primeiro verifique se h uma rota padro. Ao executar um netstat -rn (veja netstat(1)), devem aparecer duas entradas como essas:
DestinationGatewayFlagsRefs UseNetifExpire default10.0.0.2UGSc0 0tun0

10.0.0.210.0.0.1UH0 0tun0

Assume-se o uso do endereo recomendado pelo Manual do FreeBSD, pginas de manual ou no arquivo ppp.conf.sample. Se a rota padro no foi definida, possvel que a verso do ppp(8) seja antiga, uma vez que no entendem a palavra HISADDR no arquivo ppp.conf. Se a verso do seu FreeBSD for anterior a 2.2.5, mude a linha
add00HISADDR

para
add0010.0.0.2

Outra razo para a rota padro estar ausente, pode ser porqu voc equivocadamente definiu uma rota default em seu arquivo /etc/rc.conf (veja rc.conf(5)) (este arquivo era chamado /etc/sysconfig nas verses anteriores a 2.2.2) e omitiu a linha
deleteALL

no ppp.conf . Se este for o problema, volte para seo de configuraes Finais do Manual do FreeBSD. P: R: O que No route to host significa? Este erro causado pela falta das linhas
MYADDR: deleteALL add00HISADDR

no seu arquivo /etc/ppp/ppp.linkup . Isso somente necessrio se voc tem um IP dinmico ou no sabe o endereo do seu gateway. Se voc esta usando o modo interativo, pode-se digitar o seguinte, depois de ter entrado no modo packet (O modo packet indicado pelo PPP maisculo no prompt):
deleteALL add00HISADDR

Consulte a seo PPP e Endereos IPs dinmicos do Manual do FreeBSD para maiores detalhes P: R: Porque minha conexo cai depois de (em mdia) 3 minutos? O default timeout do PPP de 3 minutos. Isso pode ser ajustado com a linha
settimeoutNNN

Onde NNN o nmero em segundos de inatividade antes da conexo ser fechada. Se NNN zero a conexo nunca ser fechada devido a um timeout. possvel colocar 134

Captulo 14. PPP esse comando no ppp.conf ou digit-lo no modo interativo. Tambm possvel que isso seja ajustado enquanto sua conexo esta ativa conectando pelo socket do servidor ppp usando telnet(1) ou pppctl(8). Consulte a man page do ppp(8) para maiores detalhes. P: R: Por que minha conexo cai quando est sobrecarregada? Se voc tem o relatrio da qualidade da ligao (opo LPR) configurado possvel que muitos pacotes LQR entre sua mquina e a origem estejam sendo perdidos. O ppp deduz que sua linha deve ser ruim e desconecta. Antes da verso 2.2.5 do FreeBSD, o LQR era habilitado por default. Agora ele desabilitado por default. O LQR pode ser desabilitado com a linha
disablelqr

P: R:

Por que minha conexo cai aps um perodo aleatrio de tempo? s vezes, em uma linha telefnica com rudos, ou quando a linha tem espera de ligaes, seu modem pode desligar, pensando (incorretamente) que perdeu o sinal de linha. Existem ajustes em grande parte dos modems determinando o quo tolerante ele deve ser a respeito de perdas de sinal de linha. No USR Sportster, por exemplo, isso medido pelo registrador S10 em dcimos de segundo. Para fazer com que seu modem no caia, poderia-se adicionar a seguinte string dial up para envio/espera:
setdial"......ATS10=10OK......"

Consulte o manual do seu modem para detalhes. P: R: Por que minha conexo fica pendurada depois de um perodo aleatrio de tempo? Muitas pessoas experimentam conexes presas sem aparentemente nenhuma explicao. Se voc usa um modem externo, voc simplesmente pode tentar um ping(8) para ver se a luz TD fica piscando quando voc transmite dados. Se piscar (e a luz do RD no), o problema com a extremidade remota. Se o TD no piscar, o problema local. Com um modem interno voc precisar usar o comando set server no seu arquivo ppp.conf. Quando ocorrer de cair, conecte com o ppp(8) usando o pppctl(8). Se a conexo de sua rede voltar de repente (o ppp voltou devido a atividade no diagnstico do socket) ou se voc no consegue conectar (assumindo que o comando set socket foi iniciado com sucesso) o problema local. Se voc puder conectar e ainda as coisas estiverem "penduradas" habilite os logs do async local com o comando set log local async e use o ping(8) de outra janela ou terminal para forar a atividade da conexo. Os logs async iro mostrar os dados que esto sendo transmitidos e recebidos durante a ligao. Se os dados esto indo e no esto voltando, o problema remoto. 135

Tendo estabelecido que o problema local ou remoto, voc tem agora duas possibilidades: Se o problema remoto, leia a seco P:. Se o problema for remoto, leia a seco P:. P: R: A extremidade remota no est respondendo. O que eu posso fazer? H muito pouco que pode ser feito em relao a isso. A maioria dos provedores iro recusar ajuda-lo se voc no usar o Windows. Voc pode habilitar a lqr no seu arquivo ppp.conf , permitindo ao ppp(8) detectar a falha remota e desligar-se, mas essa deteco relativamente lenta e consequentemente intil. Pode-se querer evitar dizer ao seu provedor que voc est rodando o user-ppp.... Primeiro tente desabilitar toda compresso local adicionando o seguinte em sua configurao:
disablepred1deflatedeflate24protocompacfcompshortseqvj denypred1deflatedeflate24protocompacfcompshortseqvj

Ento reconecte para assegurar de que isso no fez diferena. Se as coisas melhoraram ou se o problema foi resolvido completamente, determine quais ajustes fizeram a diferena atravs de tentativas e erros. Isto fornecer uma boa cartada quando voc contactar seu provedor (embora possa parecer que voc no esteja rodando um produto Microsoft). Antes de contactar seu provedor, habilite o log async localmente e aguarde at que sua conexo caia novamente. Isto pode usar um bocado de espao em disco. A ltima leitura de dados da porta pode ser de seu interesse. So geramente dados em ascii, e podem mesmo descrever o problema (Memory fault, core dumped?). Se seu provedor for prestativo, ele deve ser capaz de habilitar o log da extremidade da conexo dele, ento quando a proxima queda de link ocorrer, eles podem ser capazes de dizer porque o seu lado esta tendo problemas. Sinta-se livre para enviar os detalhes para Brian Somers ou pea para seu provedor contact-lo diretamente. P: R: O ppp(8) est travado. O que eu posso fazer? A melhor coisa a fazer aqui recompilar o ppp(8) adicionando CFLAGS+=-g e STRIP= no final do Makefile, depois faa make clean && make && make install . Quando o ppp(8) ficar travado, procure o id do processo com um ps ajxww | fgrep ppp e execute gdb ppp PID. No prompt do gdb voc pode ento usar o bt para obter um rastreamento da pilha. Envie os resultados para: <brian@Awfulhak.org >. P: 136 Por que no acontece nada depois da mensagem Login OK!?

Captulo 14. PPP R: Antes da verso 2.2.5 do FreeBSD, uma vez que a conexo foi estabelecida, o ppp(8) espera que o modem remoto inicie o protocolo do controle de linha (LCP), Muitos provedores no iniciaro a negociao e esperaro que o cliente a faa. Para forar o ppp(8) para iniciar o LCP, use a seguinte linha:
setopenmodeactive

Nota
Nota: isto geralmente no prejudica em nada se a negociao for iniciada por ambos os lados, assim, a opo openmode agora ativada por padro. Entretanto, na prxima seo ser explicado quando isso realmente proporciona algum problema.

P: R:

Eu vejo os mesmos erros sobre magic is the same . O que significa? Ocasionalmente, depois da conexo, voc pode ver mensagens no log dizendo "magic is the same". s vezes essas mensagens so sem importncia e as vezes um lado ou o outro sai. A maioria das implementaes do ppp no consegue continuar com esse problema, e mesmo se a conexo estiver para ser estabelecida, voc ver repetidas requisies de configurao e reconhecimentos de configurao no arquivo de log at que o ppp(8) eventualmente desista e feche a conexo. Isto normalmente acontece em mquinas com discos lentos que esto dando spawning getty na porta e executam o ppp(8) atravs de um login script ou programa depois do login. Eu tambm ouvi relatrios disso estar acontecendo consistentemente ao usar slirp. A razo que no tempo entre sada do getty(8) e a inicializao do ppp(8), o ppp(8) do lado cliente comea a emitir pacotes do protocolo do controle da linha LCP). Porque o ECHO ainda esta ligado na porta do servidor, o cliente ento v esses pacotes serem refletidos de volta. Uma parte da negociao LCP deve estabelecer um nmero mgico para cada lado da ligao de modo que as reflexes possam ser detectadas. O protocolo diz que quando um ponto tenta negociar o mesmo nmero mgico, um NAK deve ser emitido e um novo nmero mgico deve ser escolhido. Durante o perodo que a porta do server tem o ECHO ligado, o ppp(8) cliente manda pacotes LCP, v o mesmo nmero mgico nos pacotes refletidos e manda NAKs a ele. Ve-se tambm o NAK que foi refletido (que significa que o ppp(8) deve mudar o seu nmero mgico). Isto produz um nmero potencialmente enorme de mudanas de nmeros mgicos que esto sendo empilhados no buffer do tty do servidor. To logo o ppp(8) se inicia no servidor, ele inundado com mudanas de nmeros mgicos imediatamente ao negociar o LCP, e desiste. Enquanto isso, o cliente no v por muito tempo as reflexes e fica feliz apenas por algum tempo, at receber a desconexo do servidor. 137

Isto pode ser evitado permitindo que a negociao seja iniciada pelo servidor (peer), adicionando a seguinte linha no seu arquivo ppp.conf:
setopenmodepassive

Isso diz ao ppp(8) para esperar que o servidor inicie as negociaes LCP. Alguns servidores, entretanto, podem nunca iniciar as negociaes. Se este for o caso, voc deve fazer algo como:
setopenmodeactive3

Isto diz ao ppp(8) para ser passivo durante 3 segundos, e ento comear a enviar requisies LCP. Se o servidor (peer) comear a enviar requisies durante esse perodo, o ppp(8) ir responder imediatamente, ao invs de aguardar pelo perodo completo de 3 segundos. P: R: As negociaes LCP continuam at que a conexo seja fechada. O que est errado? H atualmente uma caracterstica faltando no ppp onde ele no associa respostas LCP , CCP & IPCP com suas requisies originais. Como consequncia, se uma implementao ppp 6 segundos mais lenta do que o outro lado, esse lado emitir duas requises adicionais de configurao LCP. Isto fatal. Considere duas implementaes, A e B. A emite requisies LCP imediatamente aps a conexo e B leva 7 segundos para iniciar. Quando B inicia, A emitiu 3 LCP REQs. Ns estamos supondo que a linha ECHO esteja desabilitada, seno ns veramos problemas com nmero mgico como descritos na seo anterior. B emite um REQ, entao um ACK para o primeiro dos REQs de A. Isto resulta em A entrando no estado OPENED e enviando um ACK (o primeiro) de volta a B. Enquanto isso, B envia de volta mais dois ACKs em resposta aos dois REQs adicionais enviados por A antes de B ter iniciado. B ento recebe o primeiro ACK de A e tambm entra no estado de OPENED. A recebe o segundo ACK de B e retorna ao estado de REQ-SENT, enviando um outro (seguinte) REQ conforme a RFC ordena. Ento, recebe o terceiro ACK e entra no estado OPENED. Enquanto isso, B recebe REQ (posterior) de A, tendo como resultado uma reverso para o estado ACK-SENT e enviando um outro (segundo) REQ e (depois) ACK conforme a RFC. Conseguindo o REQ, A entra em REQ-SENT e envia outro REQ. Imediatamente recebe o ACK seguinte e entra em OPENED. Isto continuar at que um dos lados descubra que eles no esto indo a lugar algum e desista. A melhor maneira de evitar isso configurar um lado para ser passivo - isso faz com que um lado espere pelo outro para iniciar uma negociao. Isto pode ser feito com o comando
setopenmodepassive

Deve-se ter cuidado com esta opo. Voc tambm deve usar o comando 138

Captulo 14. PPP


setstoppedN

para limitar a quantidade de tempo que o ppp(8) esperar pelo outro lado iniciar a negociao. Alternativamente o comando
setopenmodeactiveN

(onde N o nmero de segundos para esperar antes de iniciar as negociaes) pode ser usado. Consulte as pginas de manual para detalhes. P: R: Por que o ppp(8) trava logo ap a conexo? Antes da verso 2.2.5 do FreeBSD, era possvel que sua ligao fosse desabilitada logo aps a conexo, devido a incapacidade de negociao da compresso Predictor1 do ppp(8). Isto aconteceria somente se ambos os lados tentassem negociar protocolos diferentes do controle da compresso (CCP). Este problema atualmente esta corrigido, mas se voc ainda roda uma verso antiga do ppp(8), o problema pode ser resolvido com a linha:
disablepred1

P: R:

Por que o ppp(8) trava quando executo comandos shell pelo ppp(8)? Quando executa-se o shell com o comando ! , o ppp(8) executa um shell (ou se voc passar quaisquer argumentos, o ppp(8) executar aqueles argumentos). Ppp aguardar o comando terminar antes de continuar. Se voc tentar usar a sua ligao ppp enquanto executado o comando, a ligao aparacer congelada. Isto porque o ppp estar esperando pelo finalizao da comando. Se voc desejar executar comandos assim, use o comando !bg . Ele executar o comando em background e o ppp(8) poder continuar a servir a conexo normalmente.

P: R:

Como uma conexo por ppp(8) usando um nunca termina? No h nenhuma maneira para que o ppp(8) determine automaticamente que uma conexo direta caiu. Isto devido s linhas que so usadas na srie de cable null modems. Ao usar esse tipo de conexo o LQR deve sempre ser habilitado com a linha:
enablelqr

A LQR aceita por padro, se negociada com o outro lado. P: R: Por que o ppp(8) disca sem nenhuma razo no modo -auto? Se o ppp(8) esta discando inesperadamente, voc deve determinar a causa, e setar os filtros de discagem (dfilters) para evitar esse comportamento. Para determinar a causa, use a seguinte linha: 139

setlog+tcp/ip

Isto registrar todo o trfego atravs da conexo. A prxima vez que a linha acima for ativada, voc ver a razo logada. Voc pode agora desabilitar a discagem sob estas circunstncias. Geralmente, este tipo de problema ocorre devido aos lookups do DNS. Para evitar que os lookups do DNS estabeleam uma conexo (isto no impedir que o ppp(8) passe os pacotes atravs de uma conexo j estabelecida) use o seguinte:
setdfilter1denyudpsrceq53 setdfilter2denyudpdsteq53 setdfilter3permit0/00/0

Nem sempre isso apropriado, porque ir interromper suas capacidades de discagem por demanda - a maioria dos programas precisaro de lookup do DNS antes de fazer alguma outra coisa relacionada a rede. No caso do DNS, voc deve tentar determinar o que esta realmente tentando resolver um hostname. Na maioria das vezes o sendmail(8) o culpado. Voc deve certificar-se que o sendmail no deve fazer nenhum DNS lookup em seu arquivo de configurao. Veja na seo Configurao de Mail para detalhes de como criar seu prprio arquivo de configurao e o que deve conter nele. Voc pode tambm adicionar a seguinte linha ao seu arquivo .mc :
define(`confDELIVERY_MODE',`d')dnl

Isto far o sendmail enfileirar tudo, at que a fila esteja funcionando (normalmente o sendmail invocado com -bd -q30m , dizendo a ele para rodar a fila (queue) a cada 30minutos) ou at que o sendmail -q seja feito (talvez do arquivo ppp.linkup) P: R: O que estes erros de CCP significam? Eu estou vendo os seguintes erros em meus logs:
CCP:CcpSendConfigReq CCP:ReceivedTerminateAck(1)state=Req-Sent(6)

Isto porque o ppp(8) esta tentando negociar a compresso Predictor1, e o outro ponto no quer negociar nenhuma compresso. As mensagens so inofensivas, mas se voc desejar remove-las, poder desabilitar a compresso Predictor1 tambm localmente:
disablepred1

P: 140

Por que o ppp(8) trava durante a transferncia de arquivo com erros de IO(Input/ Output)?

Captulo 14. PPP R: No FreeBSD 2.2.2 e anteriores, havia um bug no driver tun, que impedia pacotes de entrada de um tamanho maior do que o MTU da interface. O O recebimento de pacotes maiores que o MTU da interface resulta em erro de IO que logado atravs do syslogd. A especificao do ppp diz que um MTU de 1500 deve ser sempre aceito como mnimo. Apesar de todas as negociaes de LCP, possvel diminuir o MTU para menos de 1500, independentemente disso, seu provedor ir transmitir pacotes de 1500 para voc, e isso travar sua conexo. O problema pode ser contornado por nunca ajustar um MTU menor que 1500 sobre o FreeBSD 2.2.2 ou anteriores. P: R: Por que o ppp(8) no loga minha velocidade de conexo? A fim de logar todas as linhas de conversao de seu modem voc deve habilitar o seguinte:
setlog+connect

Isto ir fazer o ppp(8) logar tudo, at a ultima requisio expect. Se voc desejar ver sua velocidade de conexo e estiver usando PAP ou CHAP (e consequentemente no tenha qualquer coisa para o chat depois do CONNECT no script de discagem - no set login script), voc deve certificar-se que instruiu o ppp(8) a ``a esperar" a linha inteira CONNECT, algo como:
setdial"ABORTBUSYABORTNO\\sCARRIERTIMEOUT4\ \"\"ATZOK-ATZ-OKATDT\\TTIMEOUT60CONNECT\\c\\n"

Aqui nosso CONNECT, no envia nada, ele espera ento um line-feed, forando o ppp(8) a ler toda a resposta do CONNECT. P: R: Por que o ppp(8) ignora o caracter \ no meu script de conversao? O Ppp analiza cada linha no seu arquivo de configurao, ento isso pode ser interpretado como string tal como set phone "123 456 789" corretamente e compreende de fato que o nmero um nico argumento. A fim de especificar um caracter", voc deve escapar desse comportamento, usando um a barra invertida \. Quando o script de conversao analizar cada argumento, ele reinterpretar o argumento a fim de encontrar quaisquer sequncias especiais como \P ou \T (veja a man page). Como resultado desta dupla anlise, voc deve conseguir usar o nmero correto de espaos. Se voc deseja enviar um caracter \ para dizer a seu modem, voc precisar de algo assim:
setdial"\"\"ATZOK-ATZ-OKAT\\\\XOK"

141

resultando a seguinte sequncia:


ATZ OK AT\X OK

ou
setphone1234567 setdial"\"\"ATZOKATDT\\T"

resultando na seguindo sequncia:


ATZ OK ATDT1234567

P: R:

Por que o ppp(8) d um seg-fault, mas eu no vejo nenhum arquivo ppp.core ? O Ppp (ou qualquer programa desta natureza) nunca dever dar core dump. Porque o ppp(8) roda com um e-userid (effective user id) 0, o sistema operacional no ir escrever a imagem do core do ppp(8) em disco antes de termin-lo. Mas se acontecer de o ppp(8) terminar devido a uma falha de segmentao ou algum outro sinal que normalmente causaria um core dumped, e voc tem certeza de que esta usando uma verso mais recente do ppp (veja o comeo desta seo), voc deve fazer o seguinte:
%tarxfzppp-*.src.tar.gz %cdppp*/ppp %echoSTRIP=>>Makefile %echoCFLAGS+=-g>>Makefile %makecleanall %su #makeinstall #chmod555/usr/sbin/ppp

Voc agora tem uma verso debugvel do ppp(8) instalada. Voc precisar ser root para rodar o ppp porque todos os seus privilgios foram revogados. Quando voc iniciar o ppp(8), tome nota com cuidado de qual era o seu diretrio corrente naquele instante. Agora, quando o ppp(8) receber uma violao de segmento (seg-fault), voc ter um arquivo chamado ppp.core. Voc deve ento fazer o seguinte:
%su #gdb/usr/sbin/pppppp.core (gdb) bt ....... (gdb) f0 ...... (gdb) iargs

142

Captulo 14. PPP


...... (gdb) l .......

Toda essa informao deve ser dada com a sua pergunta, sendo possvel agora diagnosticar o problema. Se voc familiarizado com o gdb, voc pode desejar encontrar alguns outros bits e partes como as que causaram o dump e tambm os endereos e valores das variveis revelantes. P: R: Por que o processo que fora a discagem em auto mode nunca conecta? Este era um problema conhecido na configurao ppp(8) para negociar um IP local dinmico com o outro ponto no auto mode. Isto foi corrigido na verso mais recente. Procure na man page do ppp(8) por iface . O problema era que quando este programa inicial chamava o connect(2), o nmero IP da interface tun estava atribudo ao endpoint do soquete. O kernel cria o primeiro pacote de sada e escreve-o no dispositivo tun. O ppp(8) ento l o pacote e estabelece a conexo. Se em consequncia da atribuio dinmica do IP do ppp(8) o endereo da interface for mudado, o endpoint do soquete original ser invlido. Todos os pacotes subsequentes emitidos ao outro ponto sero geralmente descartados. Mesmo se no forem descartados, nenhuma das respostas ir voltar pela rota da mquina de origem, isto porque o nmero IP j no pertence a essa mquina. H diversas maneiras tericas para abordargem desse problema. Seria mais agradvel se o ponto reatribusse, se possvel o mesmo nmero IP :-) A verso atual do ppp(8) faz isso, mas a maioria das outras implementaes no. O mtodo mais fcil do nosso lado, seria nunca mudar o nmero IP da interface tun, mas ao invs disso, mudar todos os pacotes de sada de modo que a origem do nmero IP mudada da interface IP para o IP negociado dinmicamente. Isto essencialmente o que a opo iface-alias na verso mais recente do ppp faz (com a ajuda da libalias(3) e da opo -nat do ppp(8)) - esta mantendo endereos anteriores da interface e fazendo NAT do ltimo endereo negociado. Uma outra alternativa (e provavelmente a mais confivel) seria implementar uma chamada de sistema que mudasse todos os soquetes ligados de um IP para outro. O ppp(8) usaria essa chamada para modificar os soquetes de todos os programas em execuo quando um novo endereo IP negociado. O mesmo sistema de chamadas poderia ser usado por clientes dhcp quando so forados a religar seus soquetes. Ainda, outra possibilidade permitir a interface para ser ativada sem um nmero IP. Os pacotes de sada seriam dados um nmero IP 255.255.255.255 at que a primeira SIOCAIFADDR ioctl esteja pronta. Isto resultaria na completa ligao com o soquete. Seria at o ppp(8) mudar o nmero IP de origem, mas somente se foi setado para 255.255.255.255, e somente o nmero IP e o IP checksum deveriam ser mudados. Isto

143

porm, um pequeno hack do kernel que deve estar enviando maus pacotes para uma interface configurada, na suposio de que algum outro mecanismo capaz de corrigir as coisas de forma restrospectiva. P: R: Por que a maioria dos jogos no funciona com a opo -nat? A razo para os jogos e outros programas no funcionarem quando a libalias esta em uso porque a mquina de fora ir tentar abrir uma conexo ou enviar pacotes UDP (no solicitados) para a mquina de dentro. O software NAT no sabe que deve enviar esses pacotes para a mquina interna. Para que as coisas funcionem, certifique-se de que a nica coisa que esta rodando o software que voc esta tendo problemas, a seguir rode o tcpdump na interface tun do gateway ou habilite ppp(8) tcp/ip logging (set log+tcp/ip ) na gateway. Quando voc iniciar o software, voc deve ver pacotes passando atravs da mquina gateway. Quando alguma coisa volta vindo de fora, ser descartado (este o problema). Tome nota do nmero da porta desses pacotes e a seguir feche o software. Faa isso algumas vezes para ver se os nmeros da porta so consistentes. Se eles forem, a seguinte linha no /etc/ppp/ppp.conf far o software funcional:
natportproto mquinainterna : porta porta

Onde proto ou tcp ou udp , mquinainterna a mquina de onde voc quer que os pacotes sejam enviados e porta nmero da porta de destino dos pacotes. Voc no poder usar o software em outras mquinas sem mudar o comando acima, e rodar o software em duas mquinas internas ao mesmo tempo fora de questo Apesar de tudo, o lado de fora esta vendo toda sua rede interna como sendo somente uma mquina. Se os nmeros da porta no so consistentes, h ainda mais 3 opes. 1. Enviar o suporte na libalias. Exemplos de 'casos especiais' podem ser encontrados em /usr/src/lib/libalias/alias_*.c (alias_ftp.c eh um bom tipo de protocolo). Isto geralmente envolve ler determinados pacotes reconhecidos na sada, identificando a instruo que chama a mquina externa para iniciar a conexo de volta para a mquina interna em uma porta (aleatria) especfica e setar a rota na tabela de aliases de modo que os pacotes subsequentes saibam para onde ir. Esta soluo a mais difcil, mas a melhor e ir fazer o software trabalhar com mltipla mquinas. 2. Use um proxy. A aplicao poder suportar sock5 por exemplo, ou (como no caso do cvsup) pode ter uma opo passive que evita sempre requisies feitas pelo outro ponto de volta para a mquina local.

144

Captulo 14. PPP 3. Redirecione tudo para a mquina interna usando nat addr . Pode-se dizer que essa seja a apelao. P: R: Algum fez uma lista de nmero de portas teis? No ainda, mas a intenso produzir tal lista (se algum interesse for mostrado). Em cada exemplo, internal deve ser substtuido pelo IP da mquina que esta jogando o jogo. Asheron's Call
nat port udp internal:65000 65000

Mude manualmente o nmero da porta dentro do jogo para 65000. Se voc comear com um determinado nmero de mquinas que voc deseja jogar atribua uma porta para cada (por ex 65001, 65002, etc) e adicione uma porta nat para cada uma. Half Life
nat port udp internal:27005 27015

PCAnywhere 8.0
nat port udp internal:5632 5632 nat port tcp internal:5631 5631

Quake
nat port udp internal:6112 6112

Alternativamente, voc pode querer ir em www.batle.net para dar uma olhada no suporte de proxy do quake. Quake 2
nat port udp internal:27901 27901 nat port udp internal:60021 60021 nat port udp internal:60040 60040

Red Alert
nat port udp internal:8675 8675 nat port udp internal:5009 5009

145

P: R:

O que so erros FCS? FCS significa Frame Check Sequence. Cada pacote do ppp tem um checksum anexado para assegurar-se de que os dados que esto sendo recebidos sejam os dados que esto sendo emitidos. Se o FCS de um pacote de entrada estiver incorreto, o pacote sera perdido e a contagem do HDLC FCS aumentada. Os valores de erro HDLC podem ser mostrados usando o comando show hdlc . Se a sua ligao ruim ou se o driver serial esta perdendo pacotes), voc ir ver ocasionalmente erros FCS. Isto geralmente no motivo para se preocupar, embora diminua substancialmente os protocolos de compresso. Se voc tem um modem externo, certifique-se que seu cabo esteja protegido corretamente de interferncias - Isso pode erradicar o problema. Se sua ligao congelar assim que voc conectar e vier um grande nmero de erros FCS, pode ser porque seu link no esta com o bit 8 limpo. Certifique-se que seu modem no esteja usando o controle de fluxo do software (XON/XOFF). Se o seu datalink deve usar software de controle de fluxo, use o comando set accmap 0x000a0000 para dizer ao ppp para ignorar os caracteres ^Q e ^S. Uma outra razo para estar vendo muitos erros FCS pode ser que a extremidade remota parou de comunicar com o PPP. Voc pode querer habilitar registros async neste ponto para determinar se os dados entrantes so realmente um alerta de incio de sesso do prompt da shell. Se voc tiver um prompt shell na extremidade remota, possvel terminar o ppp(8) sem deixar cair a linha usando o comando close lcp (o comando term ir reconectar voc shell da mquina remota). Se nada em seus logs indicar o porque de sua ligao ter sido terminada, voc pode perguntar ao administrador remoto (do seu provedor?) porque a sesso foi terminada.

P: R:

Por que a conexo do MacOS e Windows98 travam ao rodar o PPPoE no gateway? Agradecimentos a Michael Wozniak <mwozniak@netcom.ca > por descobrir o problema, e a Dan Flemming <danflemming@mac.com > pela soluo do Mac: Isto devido ao que chamado de roteador Buraco Negro (Black Hole). MacOS e Windows98 (e talvez outros SO's da Microsoft) envia m pacotes TCP com um tamanho de segmento requisitado muito grande para ser contido em um frame do PPPoE (MTU por default na ethernet de 1500) e tenha o no fragmento do bit ajustado (default do TCP) e o roteador Telco no esta enviando ICMP deve ser fragmentado de volta ao sitio www que voc esta tentando carregar. (Alternativamente o roteador est enviando pacotes ICMP corretamente, mas o firewall no sitio www esta deixando perd-los). Quando o servidor www esta enviando seus frames que no cabem no pipe do PPPoE o roteador Telco deixa-os perder e sua pgina no carregada (algumas pginas grficas carregam porque so menores que um MSS). Esta parece ser a configurao default da maioria dos Telco PPPoE (somente eles sabem como programar o roteador).

146

Captulo 14. PPP Um maneira de fixar isso usando o regedit em sua seu Windows 95/98 e adicionar a seguinte entrada de registro:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class \NetTrans\0000\MaxMTU

Deve ser uma string com um valor 1436, porque h relatos de que alguns roteadores ADSL so incapazes de tratar os pacotes maiores que esse. Esta chave de registro foi mudada para Tcpip\Parameters\Interfaces\ID-para-o-adptador \MTU no windows 2000 e tornou-se um DWORD. Consulte os documentos da Microsoft Q158474 - Windows TCPIP Entradas de registroi e Q120642 - TCPIP & NBT Parametros de configurao para Windows NT para maiores informacoes sobre alteraes de MTU no Windows para funcionar com um roteador NAT. Uma outra possibilidade do regedit sob o Windows 2000 setar Tcpip\Parameters \Interfaces\ID-para-o-adaptador\EnablePMTUBHDetect DWORD para 1 como mencionado no documento original da Microsoft 120642 comentado acima. Infelizmente o MacOS no oferece uma mudana TCP/IP nas configuraes da interface. Entretanto, h um software comercial disponvel, o OTAdvancedTuner (OT para OpenTransport, a pilha TCP/IP do MacOS) feito pela Sustainable Softworks, ele permite aos usurios customizar as configuraes TCP/IP. Os usurios de NAT do MacOS devem selecionar o ip_interface_MTU no menu dropdown, colocar 1450 em vez de 1500 , clique na caixa prximo ao Save as Auto Configure , e clique em Make Active . Verses mais recentes do ppp(8) (2.3 ou mais recente) tem o comando enable tcpmssfixup que ir automaticamente ajustar um valor apropriado ao MSS. Esta facilidade habilitada por default. Se voc for apaixonado pela verso mais antiga do ppp(8) voc pode querer dar uma olhada no port do tcpmssd. P: R: Nada disso me ajudou - Eu estou desesperado! O que eu posso fazer? Se tudo falhar, envie o mximo de informaces que voc puder, incluindo seus arquivos de configurao, a forma como est iniciando o ppp(8), os trechos relevantes de seu arquivo de log e a sada do comando netstat -rn (antes e depois de conectado) para a lista lista de discusso para perguntas gerais sobre o FreeBSD ou para o grupo de notcias comp.unix.bsd.freebsd.misc. Algum deve ajudar a solucionar seu problema.

147

Captulo 15. Comunicaes Seriais


Essa seo cobre as perguntas mais comuns sobre comunicao serial com o FreeBSD. PPP e SLIP so abordados na seo Captulo12, Redes. P: R: Como eu posso dizer se o FreeBSD encontrou minhas portas seriais? Assim que o kernel do FreeBSD carregado, ele ir varrer as portas seriais do seu sistema procurando dispositivos nas portas configuradas no kernel. Pode-se observar atentamente as mensagens que o sistema exibe, ou ento executar o seguinte comando:
%dmesg|grepsio

assim que o sistema estiver em funcionamento e execuo. Aqui esto alguns exemplos dos resultados do comando executado acima:
sio0at0x3f8-0x3ffirq4onisa sio0:type16550A sio1at0x2f8-0x2ffirq3onisa sio1:type16550A

Eles mostram duas portas seriais. A primeira est na irq 4, est usando o endereo de porta 0x3f8 , e tem um chip modelo UART 16550A. O segundo utiliza o mesmo tipo de chip mas est na irq 3 e seu endereo de porta 0x2f8 . Modems internos so tratados como se fossem portas seriais -- exceto que sempre tem um modem conectado porta. O kernel GENERIC tem suporte para duas portas seriais utilizando os mesmos irqs e configuraes de endereos de portas do exemplo acima. Se tais configuraes no esto certas para seu sistema, ou se voc adicionou placas de modem ou tem mais portas seriais para o qual o kernel foi configurado, apenas recompile seu kernel. Veja a a seo de compilao do kernel para obter mais detalhes. P: R: P: R: P: Como eu posso dizer se o FreeBSD encontrou minha placa de fax modem? Refira-se resposta da pergunta anterior. Eu acabei de atualizar para a verso 2.0.5 e as minhas tty0X desapareceram! Como eu resolvo esse problema? No se preocupe, eles foram includos com os dispositivos ttydX . No entanto, voc deve mudar todos os arquivos da configurao antiga que voc tiver. Como eu acesso as portas seriais no FreeBSD?

R:

A terceira porta serial, sio2 (veja sio(4), conhecida como COM3 no DOS), est na / dev/cuaa2 para os dispositivos dial-out, e na /dev/ttyd2 para os dispositivos dialin. Qual a diferena entre essas duas classes de dispositivos? Voc utiliza ttydX para dial-ins. Quando o /dev/ttydX se abre no modo de bloqueio, um processo ir aguardar que o dispositivo cuaaX correspondente tornese inativo, e aguarda a deteco do carrier detect da linha para ativar-se. Quando a cuaaX se abre, ela deixa claro que a porta no esta ainda em uso pelo dispositivo ttydX . Se a porta estiver disponvel, ela roubada do dispositivo ttydX . Alm disso, o dispositivo cuaaX no se importa com o carrier detect. Com esse esquema de auto-resposta do modem, voc pode ter usurios remotos conectando e voc pode ainda discar para fora com o mesmo modem, que o sistema ir cuidar de todos os conflitos.

P: R:

Como eu habilito suporte para uma placa serial de mltiplas portas? Novamente, a seo de configurao do kernel prov informaes sobre a configurao de seu kernel. Para uma placa serial de mltiplas portas, coloque uma linha sio(4) para cada porta serial da placa, no arquivo de configurao do kernel. Mas coloque o irq e as espeficicaes do vetor apenas em uma das entradas. Todas as portas da placa devem compartilhar uma irq. Para consistncia, utilize a ltima porta serial para especificar a irq. Alm disso, especifique a opo COM_MULTIPORT . O exemplo seguinte para uma placa serial AST 4-portas na irq 7:
options"COM_MULTIPORT" devicesio4atisa?port0x2a0ttyflags0x781 devicesio5atisa?port0x2a8ttyflags0x781 devicesio6atisa?port0x2b0ttyflags0x781 devicesio7atisa?port0x2b8ttyflags0x781irq7vector siointr

As flags indicam que a porta master tem um minor number 7 (0x700 ), diagnsticos habilitados durante o escaneamento (0x080 ), e todas as portas compartilham uma irq (0x001 ). P: R: P: R: O FreeBSD pode trabalhar com placas seriais de mltiplas portas compartilhando irqs? Ainda no. Voc dever utilizar uma irq diferente para cada placa. Posso definir os parmetros seriais padro para uma porta? O ttydX (cuaaX ) um dispositivo regular que voc vai querer abrir para suas aplicaes. Quando um processo abre um dispositivo, ele tem um conjunto padro de configuraes de terminais de E/S. Voc pode ver essas configuraes com o comando
#stty-a-f/dev/ttyd1

150

Captulo 15. Comunicaes Seriais Ao alterar as configuraes para esse dispositivo, elas se mantero em efeito at que o dispositivo seja fechado. Quando ele for reaberto, vai para o estado padro. Para fazer mudanas nos ajustes padro, pode-se abrir e ajustar as configuraes do estado inicial do dispositivo. Por exemplo, para ligar o modo CLOCAL, 8 bits, e o controle de fluxo XON/XOFF padro para a ttyd5, faa:
#stty-f/dev/ttyid5clocalcs8ixonixoff

Um bom lugar para fazer isso no /etc/rc.serial . Agora, uma aplicao ter estas configuraes por padro quando abrir o ttyd5 . No entanto, pode-se ainda modificar estas configuraes a seu gosto. Voc pode prevenir certas configuraes de serem modificadas por uma aplicao fazendo ajustes no dispositivo de lock state. Por exemplo, para travar a velocidade do ttyd5 em 57600 bps, faa:
#stty-f/dev/ttyld557600

Agora, uma aplicao, ao abrir o ttyd5 , se tentar modificar a velocidade da porta, ficar travada a 57600 bps. Naturalmente voc deve garantir que os dispositivos de estado inicial e o estado de trava (lock ) tenham permisso de escrita apenas para o root . O script MAKEDEV(8) NO faz isso quando ele cria as entradas de dispositivos. P: R: Como eu habilito logins dial-up no meu modem? Ento voc quer tornar-se um provedor de servios internet, no ? Primeiro, voc precisa de um ou mais modems que auto-respondam s chamadas. Seu modem precisa confirmar o carrier detect quando ele for detectado e no faz-lo todo o tempo. Ele precisar desligar o telefone e resetar a si mesmo quando a linha DTR (Data Terminal Ready) alternar de ligado para desligado. Ele provavelmente deve utilizar o controle de fluxo RTS/CTS ou nenhum controle local de fluxo. Finalmente, ele deve utilizar uma velocidade constante entre o computador e si mesmo, mas (para ser simptico com seus usurios) ele deve negociar uma velocidade entre si mesmo e o modem remoto. Para muitos modems compatveis com o conjunto de comandos do Hayes este comando criar estas configuraes e as armazenar na memria no voltil:
AT&C1&D3&K3&Q6S0=1&W

Veja a seo enviando comandos AT abaixo para mais informaes sobre como fazer estas configuraes sem o auxlio de um programa de terminal MS-DOS. Depois, faa uma entrada em /etc/ttys (veja ttys(5)) para o modem. Este arquivo lista todas as portas nas quais o sistema ir aguardar pelos logins. Adicione uma parecida com essa: 151

ttyd1"/usr/libexec/gettystd.57600"dialuponinsecure

Esta linha indica que a segunda porta serial (/dev/ttyd1 ) tem um modem conectado e rodando a 57600 bps e sem paridade (std.57600 , que vem do arquivo /etc/gettytab , veja gettytab(5)). O tipo de terminal para esta porta dialup . A porta esta ligada e insegura - quer dizer que o login do usurio root no permitido. Para portas dialin como esta, utiliza-se a entrada ttydX uma prtica comum utilizar dialup como o tipo do terminal. Muitos usurios configuram um prompt para seus arquivos .profile ou .login para o tipo de terminal existente se o tipo iniciante dialup. O exemplo mostra a porta como insegura. Para tornar-se root nesta porta, voc tem que logar-se como um usurio regular, e ento su(1) para tornar-se root . Se voc usar seguro , ento o root vai poder efetuar o login diretamente. Aps efetuar as operaes no /etc/ttys , voc precisa enviar um sinal de hangup ou HUP para o processo init(8):
#kill-HUP1

Esse comando forar a releitura do arquivo /etc/ttys . O processo init iniciar os processos getty em todas as portas configuradas em on (ligadas). Voc pode descobrir se seus logins esto disponveis para sua porta digitando:
%ps-ax|grep'[t]tyd1'

Voc deve ver algo como:


747??I0:00.04/usr/libexec/gettystd.57600ttyd1

P: R:

Como eu conecto um terminal burro ao meu FreeBSD? Se voc esta usando outro computador como um terminal de seu sistema FreeBSD, consiga um cabo null modem para ser usado entre as duas portas seriais. Se voc esta utilizando um terminal prprio, veja as instrues que o acompanham. Ento, modifique o /etc/ttys (veja ttys(5)), como acima. Por exemplo, se voc esta ligando um terminal WYSE 50 quinta porta serial, utilize uma entrada como esta::
ttyd4"/usr/libexec/gettystd.38400"wyse50onsecure

Esse exemplo mostra que a porta em /dev/ttyd4 tem um terminal wyse50 conectado a 38400 bps (bits por segundo) sem nenhuma paridade (std.38400 de / etc/gettytab , veja gettytab(5))) e o login do root permitido (seguro ). P: R: Por que eu no posso executar o tip ou o cu? Em seu sistema, os programas tip(1) e cu(1) so provavelmente executveis somente pro uucp e para o grupo dialer . Voc pode utilizar o grupo dialer para controlar

152

Captulo 15. Comunicaes Seriais quem acessa o seu modem ou sistemas remotos. Basta adicionar voc mesmo ao grupo dialer. Alternativamente, voc pode permitir a todos no seu sistema executarem o tip(1) e o cu(1) digitando:
#chmod4511/usr/bin/cu #chmod4511/usr/bin/tip

P: R:

Meu modem modelo Hayes no suportado - o que eu posso fazer? De fato a manpage para o tip(1) esta desatualizada. H um discador generico do Hayes j incorporado. Apenas insira at=hayes em seu arquivo /etc/remote (veja remote(5)). O drive do Hayes no inteligente o bastante para reconhecer algumas das avanadas caractersticas dos modems mais novos - mensagens como BUSY , NO DIALTONE , ou CONNECT 115200 estaro apenas confundindo-o. Voc deve desabilitar estas mensagens quando utilizar o tip(1) (com o comando ATX0&W ). Alm disso, o timeout para discagem com o tip(1) de 60 segundos. Seu modem deve utilizar um valor menor, seno o tip pensar que existe um problema de comunicao. Tente ATS7=45&W . De fato, como o tip(1) no foi compilado para suportar HAYES, essa funcionalidade no completamente suportada. A soluo editar o arquivo tipconf.h no diretrio /usr/src/usr.bin/tip/tip . Obviamente voc precisa da distribuio fonte para fazer isso. Edite a linha #define HAYES 0 alterando-a para #define HAYES 1 . Depois digite make e make install . Tudo funcionar bem depois disso.

P: R:

Como posso entrar nestes comandos AT? Faa o que chamado de uma entrada direta no seu /etc/remote (veja remote(5)). Por exemplo, se o seu modem est definido na primeira porta serial, / dev/cuaa0 , coloque a seguinte linha:
cuaa0:dv=/dev/cuaa0:br#19200:pa=none

Utilize a taxa de velocidade mais alta que seu modem suportar na capacidade br. Ento digite tip cuaa0 (veja tip(1)) e voc estar conectado ao seu modem. Se no existir nenhum /dev/cuaa0 no sistema, faa isso:
#cd/dev #shMAKEDEVcuaa0

Ou utilize cu como root com o seguinte comando:

153

#cu-lline-sspeed

com a line sendo a porta serial (por exemplo, /dev/cuaa0 ) e speed sendo a velocidade (por exemplo, 57600 ). Quando terminar com os comandos AT, digite ~. para sair. P: R: Porque o sinal <@> para a capacidade pn no funciona? O sinal <@> no nmero de telefone diz ao tip para procurar em /etc/phones por um nmero de telefone. Mas o sinal <@> tambm um caracter especial em arquivos como o /etc/remote . Escape dele com um \ (barra invertida):
pn=\@

P: R:

Como eu posso discar um nmero de telefone pela linha de comando? Coloque o que chamado de uma entrada genrica no arquivo /etc/remote (veja remote(5)). Por exemplo:
tip115200|Disqueparaqualquernmeroem115200bps:\ :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du: tip57600|Disqueparaqualquernmeroem57600bps:\ :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:

Depois voc pode fazer algo como tip -115200 5551234 . Se preferir o cu(1) ao invs do tip(1), utilize uma entrada genrica:
cu115200|Useocuparadiscarqualquernmeroem115200bps:\ :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:

e digite cu 5551234 -s 115200 . P: R: Tenho que definir a taxa de bits por segundo sempre que fazer isso? Coloque uma entrada para tip1200 ou para cu1200 , mas v em frente e utilize quaisquer taxas de bps (bits por segundo) que sejam apropriadas para a capacidade br. O tip(1) diz que um bom padro 1200 bps porqu ele procura uma entrada tip1200 . De qualquer forma, voc no precisa utilizar 1200 bps. Como posso facilmente acessar vrios hosts atravs de um terminal server ? Ao invs de esperar at a conexo, digitando CONNECT host sempre, use a opo cm do tip. Por exemplo, estas entradas em /etc/remote (veja remote(5)):
pain|pain.deep13.com|Forrester'smachine:\ :cm=CONNECTpain\n:tc=deep13: muffin|muffin.deep13.com|Frank'smachine:\ :cm=CONNECTmuffin\n:tc=deep13: deep13:GizmonicsInstituteterminalserver:\ :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:

P: R:

154

Captulo 15. Comunicaes Seriais permitir a voc digitar tip pain ou tip muffin para se conectar aos hosts pain ou muffin ; e tip deep13 para se conectar ao terminal server . P: R: O tip pode tentar discar mais de uma linha por vez? Normalmente esse um problema tradicional onde uma universidade possue vrias linhas de modems e vrios milhares de estudantes tentando us-las... Faa uma entrada para sua universidade em/etc/remote (veja remote(5)) e utilize a <\@> para a caracterstica pn:
big-university:\ :pn=\@:tc=dialout dialout:\ :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:

Ento, liste os nmeros de telefones para a universidade em /etc/phones (veja phones(5)):


big-university5551111 big-university5551112 big-university5551113 big-university5551114

O tip(1) tentar usar cada um na ordem listada, e depois desistir. Se voc quer manter-se tentando, execute o tip(1) em um loop while. P: R: Por que eu tenho que pressionar duas vezes o CTRL+P para enviar CTRL+P uma nica vez? CTRL+P o padro para force character, utilizado para dizer ao tip(1) que o prximo caracter um dado literal. Voc pode definir o force character para qualquer outro caracter com o escape ~s, que quer dizer defina uma varivel. Digite ~sforce=single-char seguido de uma newline. single-charcaracter qualquer caracter nico. Se voc deixar single-char , ento o force character ser o caracter nulo, que voc pode ao digitar CTRL+2 ou CTRL+SPACE. Um valor muito bom para o single-char SHIFT+CTRL+6, o qual eu vi sendo usado em alguns servidores de terminais. Voc pode ter o force character que voc quiser especificando o seguinte em seu arquivo $HOME/.tiprc o seguinte:
force=single-char

P: R:

Por que tudo o que eu digito inesperadamente est em CAIXA ALTA? Voc deve ter pressionado CTRL+A, o raise character do tip(1), especialmente projetado para pessoas com teclas Caps Lock que no funcionam. Use o ~s como 155

acima, e defina a varivel raisechar para algo razovel. De fato, voc pode definir isso para o force character tambm, se voc nunca espera utilizar ambas as caractersticas. Aqui est um exemplo de arquivo .tiprc perfeito para os usurios de Emacs que precisam digitar muitos CTRL+2 e CTRL+A:
force=^^ raisechar=^^

O ^^ obtido com SHIFT+CTRL+6. P: R: Como eu posso transferir arquivos com o tip ? Se voc est conversando com outro sistema Unix, voc pode enviar e receber arquivos com ~p (put) e com ~t (take). Estes comandos executam o cat(1) e o echo(1) no sistema remoto para aceitar e enviar arquivos. Sua sintaxe :
~p<local-file>[<remote-file>] ~t<remote-file>[<local-file>]

No h nenhuma checagem de erro, ento voc provavelmente deve usar um outro protocolo, como o zmodem P: R: Como eu posso executar o zmodem com o tip? Primeiro, instale um dos programas zmodem da coleo de ports (tais como lrzsz ou o rzsz). Para receber arquivos, inicie o programa de envio no destino remoto. Ento, pressione ENTER e digite ~C rz (ou ~C lrz caso tenha instalado o lrzsz) para iniciar o recebimento local Para enviar arquivos, inicie o programa do lado remoto. Depois, aperte ENTER e digite ~C sz arquivos (ou ~C lsz arquivos ) para envia-los ao sistema remoto. P: R: O FreeBSD pode vir a no encontrar minhas portas seriais, mesmo quando as configuraes esto corretas? Sim, se sua placa-me for Acer UARTS. Elas no escaneiam corretamente o barramento serial, no permitindo que o FreeBSD encontre as Serial Input/Output (sio) da placa. O patch disponvel em www.lemis.com pode corrigir esse problema.

156

Captulo 16. Perguntas Variadas


P: R: O FreeBSD usa bem mais espao de swap do que o Linux. Por qu? S parece que o FreeBSD usa mais swap do que o Linux. Na verdade no usa. A principal diferena entre o FreeBSD e o Linux nesse quesito que o FreeBSD vai sempre remanejar - de forma pr-ativa - toda memria que estiver completamente inativa e subutilizada, para o swap, dessa forma garantindo sempre mais memria principal disponvel para utilizao. O Linux tende a remanejar pginas de memria para o swap apenas como ltima alternativa. A utilizao mais acentuada do swap balanceada pela utilizao mais eficiente da memria principal. Note que, pelo fato do FreeBSD ser prativo nesse quesito, ele no decide arbitrariamente fazer swap das pginas quando o sistema est de fato inativo. Portanto voc no corre o risco de encontrar todo seu sistema despaginado pela manh, depois de uma noite inteira de inatividade. P: R: Por que o top me mostra pouqussima memria livre, mesmo quando eu no tenho muitos programas rodando? A resposta simples que memria principal livre memria desperdiada. Toda memria que no estiver ativamente alocada pelos seus programas so utilizadas pelo Kernel do FreeBSD como cache de disco. Os valores que o top(1) mostra como Inact , Cache , e Buf so dados referentes ao cache de disco, em estgios distintos de utilizao. Esses dados cacheados garantem que o sistema no tenha que fazer acesso em um disco local (muito mais lento que a memria) para utilizar os dados que foram acessados recentemente, garantindo assim melhora significativa na performance geral. Na maioria dos casos, se o top(1) mostrar que existe pouca memria disponvel, isso uma boa indicao, a no ser que seja uma quantidade extremamente baixa. Por que usar (alias, o que so) os formatos executveis a.out e ELF? Para entender porque o FreeBSD usa o formato ELF , voc deve primeiro saber um pouco sobre os 3 formatos de executveis Unix dominantes atualmente:

P: R:

Nota
At a verso 3.x o FreeBSD usava o formato a.out.

a.out(5)

O mais antigo e classicoformato de objetos Unix. Ele usa um cabealho curto e compacto, com um magic number no incio que frequentemente utilizado para identificar seu formato (mais detalhes veja a.out(5)). Ele contm trs segmentos a serem carregados: .text, .data, e .bss acrescidos de uma tabela de smbolos e uma tabela de caractereres adicionais. COFF O formato de objetos SVR3. Seu cabealho se consiste agora em uma tabela de sees, dessa forma garantindo que voc tenha outras sees alm de .text, .data, e .bss. ELF O sucessor do COFF, atribudo de Mltiplas sees e valores de 32-bit ou 64bit. Um de seus principais inconvenientes: O formato ELF foi originalmente desenvolvido presumindo-se que existiria apenas um nico ABI por arquitetura. A presuno incorreta, e nem mesmo em relao ao mundo comercial do SYSV (onde encontramos ao menos trs ABIs distintas: SVR4, Solaris, SCO) isso acontece. O FreeBSD tenta se virar com esse problema com um utilitrio que identifica um executvel ELF relacionando-o ao ABI com o qual ele compatvel. Veja a pgina de manual do brandelf(1) para maiores informaes. O FreeBSD vem de tradio clssica e por isso sempre usou o formado a.out(5) que uma tecnologia que foi experimentada e aprovada por vrias geraes de sistemas BSD. Apesar de, h algum tempo tambm ser possvel para o FreeBSD trabalhar nativamente com binrios ELF (e tambm kernels), o FreeBSD inicialmente resistiu presso em assumir o ELF como formato padro. Por qu? Bem, quando o campo do Linux resolveu fazer sua dolorosa transio para o formato ELF, no sobrou muito para ser aproveitado dos formatos a.out especialmente por causa das limitaes de tabelas que podiam ser utilizadas em seus cabealhos, e isso tornou o desenvolvimento de bibliotecas compartilhadas extremamente rduo para fabricantes e desenvolvedores em geral. Depois disso, as ferramentas ELF comearam oferecer solues para o compartilhamento de bibliotecas, solues que fossem extremamente satisfatrias, e a migrao, apesar dos custos necessrios que a envolvia, foi aceita, e a transio para ELF passou a ser o caminho ser seguido. No caso do FreeBSD, o nosso mecanismo de bibliotecas compartilhadas tem uma base mais prxima do estilo do SunOS, da Sun, e extremamente fcil de ser utilizado. Contudo, partir da srie 3.0, o FreeBSD oficialmente adotou o formato de binrios ELF como padro. Apesar do formato a.out sempre ter servido muito bem s nossas necessidades, o pessoal da GNU, autores de algumas das ferramentas de compilao que ns usamos, simplesmente deixaram de suportar 158

Captulo 16. Perguntas Variadas o formato a.out . Tal fato nos forou manter verses distintas do compilador e do linkador, e nos permitiriam usufruir dos esforos que ns achssemos interessantes nos desenvolvimentos GNU. Finalmente, a demanda pelo ISO-C++, notveis compiladores e descompiladores, tambm contribuiram para uma adoo nativa dos binrios ELF nas verses futuras do FreeBSD. P: R: Certo, mas por que existem tantos formatos diferentes? De volta s origens, em um passado obscuro, existiam apenas hardwares mais simples. Esse hardware simples, suportava sistemas simples e pequenos. A a.out era completamente adequada para o servio de representar o formato binrio nesses sistemas (os PDP-11). Conforme as pessoas iam portando o Unix desse sistema mais simples, eles mantinham o formato a.out porque era bom o bastante para portar para arquiteturas como o Motorola 68k, VAXen, etc. Ento, algum engenheiro de hardware brilhante, decidiu que se ele pudesse forar o software dar conta de algumas coisinhas, alguns truquezinhos, ele poderia ento passar por cima de algumas restries de design, e permitir que a base de sua CPU tivesse um desempenho melhor. Para poder trabalhar como esse novo tipo de hardware (que hoje conhecido como RISC), a a.out no se encaixava muito bem em suas funes, e ento muitos formatos foram desenvolvidos afim de obter melhor performance desse hardware, que a simples a.out no podia comportar. Coisas como COFF, ECOFF e outras ainda mais obscuras foram inventadas, e todas suas limitaes foram exploradas, at que se resultasse o formato ELF. Em adio, o tamanho dos programas passou a crescer, e os discos (assim como a memria fsica) ainda eram relativamente pequenos, ento nasceu o conceito de compartilhamento de bibliotecas. O sistema de Memria Virtual (VM) tambm se tornou mais sofisticado. Cada um desses avanos eram feitos utilizando-se o formato a.out , e o seu uso crescia mais e mais com cada nova caracterstica. Depois, as pessoas comearam a querer que as coisas fossem dinmicamente carregadas em tempo de execusso, ou ento queriam poder descartar algum trecho de seus programas depois que seu cdigo de inicializao tivesse sido executado, de modo economizar memria principal ou mesmo Swap. As linguagens de programao se tornaram mais sofisticadas, ento as pessoas queriam cdigos com chamadas automticas antes do programa principal (main). Comeou-se ento a hackear a a.out de forma que ela pudesse suprir essas necessidades. E de fato por algum tempo ela as supriu. Depois a a.out passou a no suportar mais determinados problemas sem resultar em uma sobrecarga ou complexidade exagerada de cdigo. Por outro lado, o formato ELF resolvia a maioria desses problemas, mas seria doloroso demais simplesmente abandonar um formato e sistema que, basicamente funcionavam bem. Ento o formato ELF teve que esperar at que fosse ainda mais doloroso continuar com o formato a.out do que migrar para ELF. Contudo, com o passar do tempo, as ferramentas de desenvolvimento s quais o FreeBSD derivava suas prprias ferramentas de desenvolvimento (especialmente o assembler e o carregador - loader) se envolveram em duas rvores paralelas. A rvore do FreeBSD adicionou inmeras bibliotecas compartilhadas, e arrumou 159

inmeros bugs. E a rapaziada do GNU, que originalmente escreviam algumas dessas ferramentas, passaram a rescreve-las e adicionaram suporte para compilao derivada, adoes de formatos diferentes, etc. Depois pensou-se em desenvolver um formato derivado, visando o FreeBSD, mas no obteve-se sorte o bastante, especialmente porque os fontes antigos do "ld" do FreeBSD no davam conta da tarefa. A corrente de novas ferramentas GNU (as chamadas binutils) agora suportam compilao derivada, formato ELF, bibliotecas compartilhadas, extenses de C++, etc, etc. Em adio ainda, muitos fabricantes passaram lanar binrios ELF, e ento, por que continuar nos chateando com o formato a.out ? A a.out um cavalo velho e muito cansado, que j provou ser extremamente til no passado, mas agora est na hora de tira-lo do pasto, como recompensa por seus longos e fiis anos de servio. O formato ELF mais expressivo do que o a.out , e vai permitir muito mais extensibilidade base do sistema. As ferramentas ELF so mantidas de forma mais confivel, e oferecem suporte compilao derivada, o que importante para muita gente. O formato ELF um pouco mais lento do que o formato a.out , mas quase impossvel comparar ambos, existem inmeros detalhes que os fazem diferentes, desde o mapeamento de pginas de memria, at a forma como eles tratam o cdigo de inicializao de um binrio (init code). Nenhuma dessas questes importante, mas existem diferenas. Com o tempo, o suporte para o formato a.out vai ser retirado do kernel GENERIC, e eventualmente ser retirado em definitivo do kernel, uma vez que a necessidade de rodar programas a.out tenham se tornado passado. P: R: Por que o chmod no modifica as permisses dos links simblicos? Links simblicos no tem permisses, e por padro, o chmod(1) no vai seguir os links afim de mudar as permisses do arquivo original. Portanto, se voc tem um arquivo qualquer, e um link simblico para esse arquivo, o seguinte comando vai lhe servir.
%chmodg-w<linksimblico>

Contudo, as permisses para o arquivo original no sero alteradas. Mas se voc usar a opo -H ou -L em conjunto com -R, voc vai poder alter-la. Veja as pginas de manuais do chmod(1) e do symlink(7) para mais informaes.

Ateno
A opo -R resulta em um chmod(1) RECURSIVO. Tome muito cuidado quando for definir diretrios ou links simblicos com chmod(1). Se voc quer alterar as permisses dentro do diretrio referenciado pelo symlink, ento basta usar o chmod(1) sem qualquer outra opo, mas com uma barra / . Por exemplo, se A for um link simblico para o arquivo original B, ento para alterar sua permisso basta um simples: 160

Captulo 16. Perguntas Variadas


%chmod555A/

Com essa barra, o chmod(1) vai seguir o link simblico para mudar as permisses do arquivo original.

P: R:

Por que os nomes de login (ou username) so restritos 8 caracteres no FreeBSD 2.2.X e anteriores? Voc pode pensar que seria bem confortvel simplesmente mudar o UT_NAMESIZE e depois recompilar todo o sistema operacional, ai tudo iria funcionar maravilhosamente bem. Infelizmente no assim que as coisas funcionam, existem estruturas de aplicaes e utilitrios (incluindo ferramentas do sistema) que foram codificadas utilizando nmeros pequenos (nem sempre 8 ou 9, mas alguns valores mais arbitrrios como 15 e 20) em estruturas e buffers. Voc no vai ter problemas apenas com arquivos de logs, que sero inutilizados (devido ao tamanho varivel dos dados gravados, quando apenas um tamanho constante era esperado), mas vai tambm ter problemas com clientes NIS de mquinas Sun, e potencialmente provocar outros problemas ao interagir com outros sistemas Unix. No FreeBSD 3.0 e posteriores, o tamanho mximo do nome de usurio foi elevado para 16 caracteres, e todas as ferramentas e trechos do cdigo principal do sistema que poderiam apresentar problemas em relao isso, foram encontradas e corrigidas. O fato dessa alterao mudar tantos fatores importantes no sistema que, nenhuma mudana tinha sido feita at a verso 3.0. Se voc confia completamente em suas habilitades para procurar e corrigir esses provveis problemas sozinho, ento basta aumentar o tamanho do nome de usurio no arquivo /usr/include/utmp.h e mudar a UT_NAMESIZE para o valor desejado. Voc tambm vai ter que atualizar o MAXLOGNAME no /usr/include/sys/ param.h para ficar de acordo com a mudana no UT_NAMESIZE. Finalmente, se voc vai recompilar os fontes, no se esquea que o /usr/include atualizado sempre. Mude ento os arquivos apropriados em /usr/src(...) para garantir que voc vai estar alterando sempre a fonte do problema, e no apenas a instncia instalada, no sistema.

P: R:

Posso rodar binrios do DOS sob FreeBSD? Sim, partir da verso 3.0, voc pode utilizar o emulador doscmd da BSDI. A emulao DOS desse aplicativo foi totalmente redefinida depois da sua integrao do FreeBSD. Entre na lista de discusso sobre a emulao de outros sistemas operacionais no FreeBSD se voc tem interesse em se juntar ao grupo que se esfora nessa jornada. Em sistemas anteriores ao 3.0, existe um utilitrio no muito interessante, chamado pcemu no Ports . O pcemu emula um 8088 e algumas funo de BIOS que so o 161

bastante para rodar aplicaes DOS que sejam textuais. Ele requer o X, sistema de interface grafica (XFree86). P: R: P: R: O que eu preciso para traduzir um documento do FreeBSD para a minha lngua nativa? Veja o FAQ de Traduo no FreeBSD Documentation Project Primer. Por que meu e-mail para qualquer endereo em FreeBSD.org sempre falha? O sistema de correio eletrnico do site FreeBSD.org implementa algumas das restries do Postfix, verificando nas mensagens que esto chegando, se elas esto sendo entregues por algum servidor mal configurado, ou se representa algum tipo de SPAM em potencial. As suas mensagens podem estar voltando por algum dos seguintes motivos: A mensagem est sendo enviada de um domnio ou bloco de endereos IP reconhecidamente utilizados para SPAM . Os servidores de correio eletrnico do projeto FreeBSD rejeitam mensagens de qualquer fonte de SPAM conhecida. Se voc utiliza os servios de uma empresa que costuma fazer SPAM ou permitir que seus clientes o faam, por gentileza, mude o seu provedor de servios, para um que no permite tal prtica. O corpo da mensagem contm apenas HTML. Mensagens de correio eletrnico devem ser enviadas apenas como texto puro. Mensagens de e-mail no so web sites. Configure o seu cliente de correio eletrnico de modo que ele apenas envie mensagens de texto puro. Os servidores da FreeBSD.org no conseguem resolver o seu endereo IP para o nome da estao que est entregando a mensagem eletrnica. Por padro, ter registros de DNS reverso um dos requisitos para que nossos servidores recebam sua mensagem. Configure o DNS reverso para o IP do seu servidor de e-mail. Lembre-se que, alguns servios residnciais (como ADSL, dialup, cable, etc) no permitem que voc mesmo configure o seu reverso. Nesse caso, envie sua mensagem pelo servidor de e-mail do seu provedor de servios, ou pea ao provedor que ajuste o reverso do seu IP. O nome da estao enviada no cabealho inicial EHLO/HELO, parte do protocolo de envio SMTP no pode ser resolvido em um endereo IP correspondente. O servidor que est tentando entregar a mensagem deve ter o registro de nomes configurado corretamente, de forma que o nome da estao possa ser resolvido em um endereo IP. Caso sua estao no tenha um registro DNS configurado, utilize o servidor de correio eletrnico do seu provedor de servios.

162

Captulo 16. Perguntas Variadas Sua mensagem teve uma identificao que terminava com o conjunto de caracteres localhost. Alguns clientes de correio eletrnico geram ID - identificaes - das mensagens de forma imprpria. Nesse caso, o seu servidor de correio deve redefinir o ID da mensagem, ou voc deve reconfigura-lo de modo que ele gere tal identificao de forma aceitvel. P: R: Onde eu consigo uma conta gratuta em um FreeBSD? O Projeto FreeBSD no permite acesso pblico a nenhum dos seus servidores, contudo algumas empresas oferecem acesso irrestrito sistemas Unix. Os preos variam, e alguns servios limitados podem ser disponibilizados. A Arbornet, Inc, tambm conhecida como M-Net, prov acesso sistemas Unix desde 1983. Inicialmente rodando sob um System III em arquitetura Altos, o site mudou seu sistema para BSD/OS em 1991. Em junho de 2000 o site mudou novamente seu sistema para FreeBSD. A M-Net pode ser acessada via telnet e SSH, e proporciona acesso bsico a uma gama completa de softwares do FreeBSD. Contudo, o acesso rede limitado aos membros e patronos da instituio, que fazem doaes empresa, uma vez que a mesma uma organizao sem fins lucrativos. A M-Net tambm oferece um Boletim peridico e Chat interativo. A Grex tambm oferece um acesso parecido com o da M-Net, inclusive com os mesmos servios, contudo a mquina uma Sun 4M e seu sistema Unix o SunOS. Vale pela curiosidade, e para comparao entre os sistemas. P: R: O que sup , e como eu uso isso? SUP significa Protocolo de Atualizao de Programa (Software Update Protocol ), e foi desenvolvido pela CMU para manter suas rvores de desenvolvimento sempre sincronizadas. Ns utilizamos esse protocolo para manter alguns sites remotos em sincronia com os nossos servidores centrais de desenvolvimento. SUP no amigvel com a banda de tramisso (consome muita banda) , e por isso foi aposentado. Atualmente recomendados que voc faa uso do CVSup para manter seus fontes atualizados. P: R: Qual o nome daquele capetinha vermelho simptico? Ele no tem um nome, simplesmente chamado de the BSD daemon. Se voc insiste em dar um nome ele, por gentileza, chame-o de beastie ;-) Note que beastie se pronuncia BSD. Voc pode saber mais sobre o BSD daemon na sua home page. P: Posso usar a imagem do BSD daemon? 163

R:

Talvez. O BSD daemon de direitos autorais de Marshall Kirk McKusick. Voc deve pedir a permisso do McKusick para usar a imagem do BSD Daemon, e pedir para saber os termos de utilizao da figura pblica do nosso querido capetinha ;-) Resumindo, voc pode fazer uso da imagem dele, dependendo da maneira, para uso pessoal, por exemplo. Se os crditos apropriados forem dados, tudo bem. Para fazer uso comercial da imagem, ai sim voc deve falar com o McKusick, e dar uma olhada na home page do BSD Daemon para mais detalhes..

P: R: P: R:

Vocs tem algumas imagens do BSD daemon que eu poderia usar? Voc vai encontrar algumas figuras em eps e Xfig sob o diretrio /usr/share/ examples/BSD_daemon/ . O que significa MFC? MFC um acrnimo para obtido a partir do ramo -CURRENT (Merged From CURRENT). usado nos logs do CVS para identificar uma mudana que seja originada e migrada da srie de desenvolvimento (-CURRENT) para srie estvel (-STABLE). O que significa BSD? O significado da sigla BSD algo, em uma lngua secreta que apenas os membros podem saber. Literalmente no seria possvel traduzir BSD para uma lngua que voc pudesse entender, mas poderamos tentar explicar seu significado como algo bem prximo de Equipe de Frmula-1, Penguins so aperitivos saborosos, e tambm Ns temos mais senso de humor do que o Linux. :-) A verso sria que BSD um acrnimo para Berkeley Software Distribution, que o nome que o Grupo de Pesquisa de Cincia da Computao da Universidade de Berkeley - Berkeley CSRG (Computer Systems Research Group) - escolheu para sua prpria distribuio do Unix.

P: R:

P: R:

O que significa POLA? o Princpio de Menor Alterao. Significa que durante o processo de desenvolvimento do FreeBSD, toda e qualquer modificao que seja visvel para o usurio, deve ser menos surpreendente possvel, mantendo assim uma compatibilidade prvia com a forma de utilizao do sistema. Por exemplo, no se pode alterar arbitrriamente as variveis dos scripts de configurao do sistema, em /etc/defaults/rc.conf , pois esse tipo de ao violaria a POLA. O desenvolvimento do FreeBSD apenas considera POLA quando as alteraes so visveis pelo usurio. O que um repo-copy? Um repo-copy (que uma forma breve de chamar um repository copy) simplesmente a cpia direta de arquivos em um repositrio CVS.

P: R: 164

Captulo 16. Perguntas Variadas Sem um repo-copy, uma alterao por parte de algum mantenedor, se tornaria uma cpia comum, originada via cvs , seguida de um rm para deletar o arquivo original que tivesse sido modificado. Esse processo contudo, resulta em uma no constatao histrica do arquivo antigo, nos novos registros de log. O Projeto FreeBSD considera extremamente importante a manuteno desse histrico, e por isso as cpias de repositrio so frequentemente utilizadas. Nesse processo, um dos repositrios centrais vai copiar os arquivos diretamente para outro repositrio, e no simplesmente fazer uma sincronia com o programa cvs(1). P: R: Porque eu devo me preocupar com a cor do quartinho de bicicletas (bikeshed)? A resposta mais curta, que voc no deve. A resposta longa que, s porque voc capaz de fazer quarto para guardar sua prpria bicicleta, voc no pode fazer as outras pessoas pararem de construir seus prprios quartinhos tambm, simplesmente porque voc no gosta da cor que as pessoas os pintam. Essa metfora indica que voc no tem que argumentar nem reclamar sobre cada coisinha, s porque tem conhecimento o bastante para critica-la. Algumas pessoas dizem que a quantidade de barulho provocada por uma alterao inversamente proporcional complexidade da mudana. A resposta ainda mais completa, e maior, que, depois de muita discusso sobre quando o sleep(1) deveria trabalhar com argumentos de segundos fracionados, Poul-Henning Kamp enviou uma mensagem, longa, chamada de Um quarto de bicicleta (qualquer cor serve) em um gramado mais verde.... As partes devidas da mensagem esto citadas abaixo. O que isso sobre a cor do quartinho da bicicleta? Alguns de vocs me perguntaram. uma longa histria, ou melhor, uma antiga histria, mas pode ser meio curta na verdade. Um cara chamado C. Northcote Parkinson escreveu um livro em meados de 1960 chamado de A Lei de Parkinson, que continha vrios insights sobre as dinmicas da administrao. [trechos irrelevantes foram cortados] Vamos deixar de falar sobre o livro em s, mas vamos tratar apenas um exemplo. O exemplo especfico, do caso do quartinho da bicileta, tem outro componente de vital importncia, que uma usina nuclear. Isso ilustra a poca que o livro foi escrito. Parkinson mostra como voc pode fazer para chegar em um corpo de diretores de uma empresa e convenc-los a construir uma usina atmica multi-milhionria ou at mesmo bilhionria, 165

mas diz que se voc abordar os diretores da mesma forma, tentando aprovar a construo de um quartinho de bicicleta, voc vai cair em uma discusso profunda, e sem fim. Parkinson explica que isso acontece porque uma usina atmica to vasta, to cara e to complicada que as pessoas simplesmente preferem no discutir, e mesmo que tentem fazlo, eles assumem que algum j observou todos os detalhes possveis antes que tal proposta chegasse tal ponto. Richard P. Feunmann d alguns exemplos interessantes, sobre o que acontece em Los Alamos em seus livros. Por outro lado, um barraco de bicicleta pode ser construdo por qualquer um, em um fim de semana qualquer, e ainda sobraria tempo ao seu desenvolvedor para assistir o jogo na TV. Ento, no importa o quo bem preparado voc esteja, algum vai sempre querer aparecer diante de uma situao dessas, e querer discutir as coisas mais pequenas possveis. Na Dinamarca isso se chama Deixar sua marquinha. Envolve prestgio e orgulho pessoal, envolve a possibilidade de apontar para algum lugar (qualquer lugar que seja) e apontar dizendo Aquilo! Eu fiz aquilo (o que quer que aquilo seja). Isso comum em polticos, mas aparece em qualquer pessoa a quem se d a chance. Simplesmente pense em pegadas, no cimento fresco." Poul-Henning Kamp na freebsd-hackers, em 2 de Outubro de 1999 Na verdade, um "quartinho de bicicletas" ou "barraco de bicicletas" uma traduo literal para a expresso bikeshed; comumente utilizada na lngua inglesa. Um bikeshed, no significado definido pelo dicionrio norte americano um pequeno quarto ou barrao no raramente encontrado no fundo de uma casa, que utilizado para guardar bicicletas e outras coisas pequenas. Normalmente os norte americanos constroem esses quartinhos eles mesmos, de madeira, no fundo de suas casas ou prximos garagem de automveis. A expresso normalmente utilizada pelos desenvolvedores do FreeBSD quando se comea uma discusso sobre algum assunto que no to importante para o bom funcionamento de alguma outra coisa, como por exemplo, qual a importncia da cor de um quartinho de bicicletas, quando o mesmo j est construdo e servindo bem ao seu propsito?

166

Captulo 17. As gracinhas do FreeBSD


P: R: Quo fresco o FreeBSD? P. Algum j fez algum tipo de teste de temperatura ao rodar o FreeBSD? Eu sei que o Linux costuma ser mais fresco que o DOS, mas nunca ouvi falar nada a respeito do FreeBSD. Parece que ele um sistema muito caliente! R. No, mas ns j fizemos vrios testes de sabor com usurios vendados que, alm de tudo, haviam tomado 250 microgramas de LSD-25. 35% dos voluntrios disseram que o FreeBSD tinha um sabor parecido com laranja, enquanto o Linux tinha sabor de nvoa prpura. Nenhum dos dois grupos comentou nada significante sobre a variao de temperatura. Eventualmente, tivemos que jogar o resultado desses testes fora, j que descobrimos que vrios desses voluntrios estavam vagando fora do quarto, prejudicando os resultados. Acreditamos que hoje, a maioria desses voluntrios trabalhe na Apple. Eles devem estar criando novas interfaces grficas do tipo arranha e cheira. um trabalho divertido e clssico, do qual ns fazemos parte! Falando srio, o FreeBSD e o Linux usam as instrues HLT (halt) quando o sistema est inativo. Isto diminui consideravelmente o consumo de energia e, conseqentemente, o aquecimento que ele proporciona. Alm disso, se seu sistema possui APM (sistema avanado de gerenciamento de energia) configurado, o FreeBSD coloca a CPU em modo de consumo menor de energia. P: R: Quem est arranhando meus pentes de memria?? P. Existe alguma bruxaria que o FreeBSD faz ao compilar o kernel que, por ventura, estaria fazendo meus pentes de memria fazer barulhos estranhos, como se estivessem sendo arranhados? Durante a compilao do sistema (e um pouquinho depois, assim que a unidade de disquete reconhecida, e aps a inicializao tambm), um barulho estranho de arranhos comea a emanar de algum lugar que parece ser os pentes de memria. R. Claro! Com muita frequncia, voc vai ouvir falar dos daemons na documentao do BSD. O que a maioria das pessoas no sabem que essa uma referncia genuna s entidades no-corporais que esto possuindo o seu computador. O barulho que parece o som de alguma coisa sendo arranhada, na verdade so sussuros em tons extremamente agudos que os daemnios emanam, ao decidir entre si as melhores maneiras de tratar as vrias tarefas referentes administrao do seu sistema. Se o barulho te dominar, um bom fdisk /mbr no DOS pode fazer voc se livrar dos sons, mas no se surpreenda se a reao dos daemons forem adversas, ao tentar

evitar que voc faa isso. Na verdade, h qualquer momento, possvel que voc oua a voz satnica do Bill Gates pelo auto-falante interno do seu PC. Se isso acontecer, CORRA! Corra sem parar e no olhe para trs por qualquer que seja o motivo! Depois de se liberarem das influncias contrastantes dos daemons BSD, os demnios gmeos do DOS e do Windows costumam ter sucesso ao repossuir total controle do seu computador, e depois disso, o tempo garantir que eles consigam a dominao total da sua alma. Agora que voc j conhece a verdade, esperamos que sua escolha seja conviver com os barulhinos agudos. Ou no? P: R: Quantos FreeBSD hackers so necessrios para trocar uma lmpada? Mil cento e sessenta e nove: Vinte e trs para reclamarem no -CURRENT que esto sem luz; Quatro para dizer que um problema na configurao, e que essa pergunta deveria ser feita na freebsd-questions; Trs para enviar Relatrio de Problemas sobre a lmpada, dos quais ao menos um, no est completamente concludo, e consiste apenas de um breve t escuro; Um para adicionar uma lmpada que nunca foi testada, que danifica todo o buildworld e depois de 5 minutos tem que ser retirada; Oito para reclamarem para os autores dos Relatrios de Problemas por no ter includo correes em seus relatrios; Cinco para reclamar que o buildworld no est funcionando; Trinta e um para responder que funciona para eles, e que os problemticos devem ter feito CVSup na hora errada; Um para enviar uma correo para a nova lmpada na freebsd-hackers; Um para reclamar que ele tinha correes para essa lmpada h 3 anos, mas que quando elas foram enviadas para o -CURRENT, foram simplesmente ignoradas, e que sua experincia com o sistema de Relatrio de Problemas no foram as melhores possveis; alm disso a nova lmpada proposta no era reflexiva; Trinta e sete para gritarem em alto e bom som que as lmpadas no fazem parte da base do sistema, e que os desenvolvedores no tem o direito de sair fazendo esse tipo de coisa sem antes consultar a comunidade, e O QUE O -CORE ESTA FAZENDO SOBRE ISSO!? Duzendos para reclamar da cor do quartinho de bicicletas; Trs para dizer que a correo enviada no est de acordo com os padres que o cdigo do kernel deve ter, conforme documentado na pgina de manual do style(9);

168

Captulo 17. As gracinhas do FreeBSD Dezessete para reclamar que a nova lmpada proposta est licenciada sob a Licena Pblica Geral GNU (GPL); Quinhentos e oitenta e seis para entrarem de corpo e alma em uma discusso sobre as vantagens comparativas entre a licena Pblica Geral GNU (GPL), a licena BSD, a licena do MIT, a NPL e a higiene pessoal dos fundadores da Free Software Foundation; Sete para copiar vrios trechos da discusso para a lista de discusso freebsd-chat e para a freebsd-advocacy; Um para trocar a nova lmpada sugerida, apesar de a nova brilha bem menos que a antiga; Dois para retirarem a lmpada furiosos, dizendo que o FreeBSD est melhor no escuro do que com uma lmpada to fraca; Quarenta e seis para contestarem vorazmente sobre a retirada da lmpada fraca e escreverem um relatrio para o -core; Onze para dar a idia de criar uma lmpada menorzinha, que poderia caber no Tamagotchi deles, se um dia ns decidirmos portar o FreeBSD para tal plataforma; Setenta e trs para reclamar da razo sinal versus rudo na freebsd-chat e na freebsd-hackers, e se retirarem das listas em protesto; Treze para enviarem mensagens com o contedo "unsubscribe", "Como eu saio da lista?", ou "Por favor, me tirem da lista", seguidas do rodap tradicional do servidor de discusso com as instrues para sair da lista; Um, para adicionar uma nova lmpada que funciona bem, enquanto todos os outros esto ocupados demais com a discusso para perceber que algum j trocou a lmpada por uma funcional; Trinta e um para afirmar que a nova lmpada brilha em mdia 0.364% mais, se comparada com as lmpadas TenDRA (contudo, ela ter que ser refeita em formato de cubo) e que o FreeBSD deveria mudar para TenDRA ao invs do GCC; Um para reclamar que a nova lmpada no honesta; Nove (incluindo aqueles que enviaram os Relatrios de Problemas) para perguntar o que significa MFC?; Cinquenta e sete para reclamar que ficaram no escuro por duas semanas at que a lmpada fosse trocada. Um adendo do Nik Clayton: Eu estava rindo um bocado aqui. 169

A pensei, "Pera, no deveria ter ao menos '1 para documentar a nova lmpada' em algum lugar? Da eu fui iluminado :-) P: R: Para onde vo os dados que so escritos no dispositivo /dev/null ? Esses dados so enviados para um dissipador especial da CPU que os converte em calor, para que depois sejam ventilados pelo cooler do computador. por isso que o esfriamento do processador cada vez mais importante; quanto mais rpido os processadores se tornam, menos importncia os usurios do seus dados, por isso cada vez mais lixo enviado para o /dev/null , gerando um superaquecimento das CPUs. Se o /dev/null for apagado (dessa forma desabilitando o dissipador de dados da CPU), o sistema vai rodar a uma temperatura mais amena. Contudo, o computador vai manter tanto lixo intil existente, que o sistema vai logo comear a falhar. Se voc tiver uma conexo de rede bem rpida, d para resfriar o computador lendo todos os dados criados na /dev/random e enviando-os para algum lugar da rede. Contudo existe o risco de superaquecer sua rede ou do Provedor de Servio Internet ficar meio bravo com voc, j que todo esse calor normalmente recebido pelo equipamento do provedor. Mas no se preocupe, os provedores tem grandes ventiladores para esfriar suas mquinas, ento se voc no insistir nisso com muita frequncia, vai ficar tudo bem. Adendo de Paul Robinson: Existem outros mtodos. Como todo bom administrador de sistemas sabe, faz parte da prtica comum enviar dados das mais variadas espcies para a tela. Isto mantm todos os pixies (pixie significa fadinhas em ingls) de tela felizes. Os pixies de tela (normalmente escritos com erro de ortografia, como 'pixels') so divididos de acordo com o tipo de bon que eles usam (vermelho, verde ou azul) e costumam aparecer ou sumir (mostrando a cor de seus bons) sempre que eles ganham alguma coisinha para comer. As placas de vdeo transformam os dados em comida de pixies, e manda essa comida para eles. Quanto mais cara for a placa de vdeo, melhor a qualidade da comida. Dessa forma, mais felizes ficam os pixies. Os pixies tambm precisam ser constantemente estimulados para isso que existem as protees de telas. Ento, para seguir a sugesto anterior, interessante mandar todos os dados que sarem do /dev/random para a tela do console, para alimentar os pixies. Isso no causa nenhum aquecimento do computador, e em contrapartida, faz os pixies viverem mais felizes, e ainda pode ser que faa voc se livrar rapidamente de todos os dados existentes no /dev/random , mesmo considerando que a tela fique um pouco confusa. Como um ex-administrador de um provedor que teve algumas ms experincias tentando manter a estabilidade da temperatura da sala dos servidores, eu recomendo sinceramente que as pessoas no tentem enviar todos os seus dados 170

Captulo 17. As gracinhas do FreeBSD para a rede. Existem umas pequenas fadinhas encantadas que fazem a alternncia dos pacotes de redes, e que fazem o roteamento desses mesmos pacotes. Algumas vezes essas fadinhas ficam meio revoltadas com os usurios malvados que ficam mandando seus dados inteis para a rede.

171

Captulo 18. Tpicos Avanados


P: R: Como eu posso aprender mais sobre as caractersticas internas do FreeBSD? Atualmente no h nenhum livro especfico sobre as caractersticas internas do Sistema Operacional FreeBSD. Contudo, a maior parte do conhecimento genrico sobre UNIX pode ser aplicado diretamente a ele. Alm disso existem livros especficos para sistemas BSD cuja leitura recomendada. Para uma lista, verifique a sesso de bibliografia sobre caractersticas internas dos sistemas operacionais no Manual do FreeBSD. P: R: P: R: Como posso contribuir com o projeto FreeBSD? Por gentileza, consulte o artigo Contribuindo com o Projeto FreeBSD para obter algumas dicas sobre o assunto. Toda ajuda mais que bem vinda! O que so SNAPs e RELEASEs? Atualmente existem trs sries ativas/semi-ativas no Repositrio CVS do projeto FreeBSD (a RELENG_2 que provavelmente alterada somente duas vezes ao ano, sendo esta a razo de termos somente trs sries em desenvolvimento): RELENG_2_2 ou 2.2-STABLE RELENG_3 ou 3.X-STABLE RELENG_4 ou 4-STABLE HEAD ou -CURRENT ou 5.0-CURRENT
HEAD no um nome de uma tag de srie, como os outros dois; somente uma

constante simblica para o atual desenvolvimento corrente, mas no de srie a qual ns simplesmente nos referimos como -CURRENT.

Neste momento, a -CURRENT se refere ao desenvolvimento atual do FreeBSD 5.0. A srie 4-STABLE , RELENG_4 originou-se da -CURRENT em Maro de 2000. A srie 2.2-STABLE , RELENG_2_2, originou-se da -CURRENT em Novembro de 1996, e foi praticamente descontinuada. P: R: P: Como fao a minha prpria distribuio personalizada? Por gentileza, consulte o artigo sobre a Engenharia de Releases.. Por que o make world sobrescreve os binrios j instalados?

R:

Porque essa a idia geral sobre como ele deve funcionar; como seu nome sugere, o make world reconstri todo o sistema binrio a partir do zero, garantindo que o usurio tenha um ambiente limpo e consistente ao final da operao ( por isso que o processo demora tanto). Se a varivel de ambiente DESTDIR estiver definida enquanto um make world ou make installworld estiver sendo executado, os binrios recm criados sero distribudos no diretrio definido em ${DESTDIR} , criando no mesmo uma rplica do contedo do / do sistema. Algumas alteraes aleatrias nas bibliotecas compartilhadas podem ocasionar falhas na hora de reconstruir o sistema com o make world .

P: R:

Por que quando meu sistema inicializa, ele diz (bus speed defaulted)? Os controladores SCSI Adaptec 1542 permitem que o usurio defina a velocidade de acesso ao barramento por meio de software. Algumas verses mais antigas deste dispositivo tentavam determinar automaticamente a maior velocidade possvel e tentavam ajustar sua velocidade esse limite mximo. Descobriu-se contudo, que esse comportamento as vezes era prejudicial, e fazia com que algumas mquinas no funcionassem de forma adequada, por este motivo essa caracterstica agora vem desabilitada por default, para ativ-la necessrio definir a opo TUNE_1542 no kernel do FreeBSD. Essa opo, em sistemas onde ela se aplica, provavelmente assegura que seus discos sejam acessados de forma mais rpida e eficiente; contudo, em sistemas onde o uso desse algoritmo invivel, pode resultar em perda de dados. Posso acompanhar a srie -CURRENT mesmo tendo acesso limitado Internet? Sim, possvel acompanhar a srie de desenvolvimento sem precisar baixar sempre todo o codigo fonte do sistema, basta utilizar o recurso de CTM. Como o FreeBSD foi dividido em arquivos de 240k? O comando split que acompanha as novas verses dos sistemas BSD tm uma opo -b que permite dividir os arquivos em limites arbitrrios de bytes. Eis um exemplo tirado do /usr/src/Makefile .
bin-tarball: (cd${DISTDIR};\ tarcf-.\ gzip--no-name-9-c|\ split-b240640-\ ${RELEASEDIR}/tarballs/bindist/bin_tgz.)

P: R: P: R:

P: R:

Eu escrevi uma extenso para o kernel; a quem eu envio? Por gentileza, consulte o artigo Contribuindo com o Projeto FreeBSD para obter mais informaes sobre como enviar cdigo fonte ao projeto. E obrigado pelo seu interesse! :)

174

Captulo 18. Tpicos Avanados P: R: Como as placas Plug N Play ISA so detectadas e inicializadas? Por: Frank Durda IV <uhclem@nemesis.lonestar.org > Simplificando, existem poucas portas de E/S que todas as placas PnP respondem quando o sistema indaga se algum dispositivo est usando-a. Ento, quando a rotina de procura do PnP comea, ele pergunta se h alguma placa PnP presente, e todas as placas PnP respondem com seus respectivos nmeros de modelo para uma leitura de E/S da mesma porta. A rotina de procura recebe ento um sinal wiredOR representando um sim pergunta em questo. Ao menos um bit positivo constitui essa resposta. Ento o cdigo de procura capaz de fazer com que as placas com o modelo de identificao (atribudo pela Microsoft/Intel) inferior a X sejam colocados em modo off-line. Ele ento ir verificar se alguma placa respondeu a consulta. Se a resposta for 0 o sistema assume que no h placas com identificao acima de X. Depois a rotina de busca verifica se h alguma placa cujo ID inferior a X. Se a resposta for positiva, a rotina de busca sabe que ainda existem placas identificadas com um valor menor que X. A a busca tenta identificar placas com ID superior X (limite / 4) e ordena que entrem em modo off-line. Repete-se o ciclo de pesquisas e identificaes nessa forma semi-binria at que um nmero necessrio de interaes seja concludo. Ao final do processo o sistema ter identificado todas as placas PnP presentes na mquina em questo, com o nmero de interaes necessrias sempre menor que 2^64. Os IDs (cdigos de identificao) so dois campos de 32-bits (portanto, 2^64) acrescidos de 8 bits que o checksum (verificao de consistncia de dados). Os primeiros 32 bits identificam o fabricante da placa. Nenhum fabricante assume isso, mas podemos perceber que diferentes tipos de placas do mesmo fabricante costumam ter diferentes identificaes de 32-bit. O motivo correto, no se sabe, mas percebe-se que 32 bits exclusivos para os fabricantes chega a ser um exagero. Os ltimos 32 bits um nmero serial que torna a identificao dessa placa nica. O fabricante no pode nunca produzir uma placa que tenha os 32 bits finais iguais, a no ser que os 32 bits iniciais sejam distintos. Dessa forma possvel existir vrias placas do mesmo tipo e fabricante, e ainda assim todos os 64 bits dessas placas serem nicos. Os grupos de 32 bits nunca podem ser todos zero. Isso permite ao wired-OR identificar bits no nulos durante a procura binria inicial. Uma vez que o sistema tenha identificado todas as IDs presentes, ele vai reativar cada placa, uma por vez (pela mesma porta de E/S) e achar os recursos que cada uma necessita, quais opes de interrupes esto disponveis, etc. Uma busca feita em todas as placas para obter estas informaes. Tal informao ento combinada com as informaes encontradas nos arquivos ECU, no sistema, ou ento da MLB BIOS. O suporte da BIOS PnP e da ECU costuma ser sinttica, portanto os perifricos no so exatamente PnP como dito. Contudo, ao examinar as informaes da da BIOS e da ECU, as rotinas de busca podem 175

identificar dispositivos ditos PnP e evitar que eles requeiram recursos tambm necessrios por outros dispositivos, que por sua vez no podem realocar tais valores automaticamente. Os dispositivos PnP so visitados mais uma vez e recebem seus endereos de E/S, DMA, IRQ e endereamentos atribudos na memria. Os dispositivos permaneceram naquela ordem at a prxima inicializao do sistema, apesar de que nada impede que eles sejam movidos quando se desejar. Essa explicao muito simplista, mas provavelmente voc entendeu a idia geral do comportamento PnP. A Microsoft fez um exame sobre algumas das portas primrias de status de impressoras para fazer PnP, dentro da lgica que nenhuma placa poderia decodificar aqueles endereos para os ciclos opostos de E/S. Eu encontrei uma placa genuna de impressora IBM que enviou dados decodificados da porta de status durante o comeo do perodo da proposta de reviso do PnP, mas a Microsoft ficou brava. Ento eles resolveram fazer um envio para a porta de status da impressora, de forma a justar o endereo usado (naquele instante + 0x800 ) e uma terceira porta de E/S para a leitura que tecnicamente pode ser localizada em qualquer lugar entre 0x200 e 0x3ff . P: R: Vocs podem definir um nmero principal para um driver de dispositivo que eu escrevi? Isso depende se voc pretende tornar o driver disponvel para o pblico. Se sim, ento por favor nos mande uma cpia do cdigo-fonte do driver, mais as devidas modificaes para o files.i386 , um exemplo do arquivo de configurao, e os devidos cdigos do MAKEDEV(8) para criar qualquer arquivo especial que seu dispositivo precise. Se voc no pode, ou est impedido por causa de restries de licena, ento o character major number 32 e o block major number 8 esto reservados especificadamente para este propsito; por favor, use-os. De qualquer maneira, ns gostaramos de obter maiores informaes sobre seu driver na lista de discusso de assuntos tcnicos relacionados ao FreeBSD. E sobre polticas alternativas de layout de diretrios? Em resposta a questo da poltica de formatos alternativos para diretrios, o esquema que est atualmente em uso est imutvel desde quando eu o escrevi em 1983. Eu escrevi aquela poltica para o FFS (fast filesystem) original, e nunca o revisei. Ele funciona bem em evitar que os os grupos de cilindros sejam completamente preenchidos. Como muitos de vocs notaram, ele funciona mediocremente para procura. A maioria dos sistemas de arquivos so criados partir de arquivos que foram criados por uma primeira procura em profundidade (depth first search, tambm conhecido como ftw). Estes diretrios acabam sendo distribudos pelo grupo de cilindros, criando assim um cenrio horrvel em relao a futuras primeiras buscas de profundidade. Se pudssemos saber o nmero total de diretrios a serem criados, a soluo seria criar (total / fs_ncg) por grupo de

P: R:

176

Captulo 18. Tpicos Avanados cilindros antes de mov-los. Evidentemente, seria necessrio criar um conjunto de mtodos heursticos para adivinhar esse nmero. Mesmo usando um pequeno nmero fixo, digamos 10, ele produziria um aumento na ordem de magnitude. Para diferenciar restauraes de operaes normais (quando o algoritmo atual provavelmente mais sensvel), voc poderia usar o agrupamento acima de 10 se eles fossem finalizados dentro de uma janela de dez segundos. De qualquer maneira, minha concluso que isso uma rea pronta para experimentaes. Kirk McKusick, Setembro de 1998 P: R: O que fazer com os dados que eu vejo quando tenho um kernel panic? [Esta seo foi extrada de um e-mail escrito por Bill Paul na freebsd-current por Dag-Erling C. Smrgrav, que arrumou alguns problemas de impresso e adicionou os comentrios entre chaves]
From:BillPaul<wpaul@skynet.ctr.columbia.edu> Subject:Re:thefsfunneverstops To:BenRosengart Date:Sun,20Sep199815:22:50-0400(EDT) Cc:current@FreeBSD.org

Ben Rosengart posted the following panic message]


>Fataltrap12:pagefaultwhileinkernelmode >faultvirtualaddress=0x40 >faultcode=supervisorread,pagenotpresent >instructionpointer=0x8:0xf014a7e5 ^^^^^^^^^^ >stackpointer=0x10:0xf4ed6f24 >framepointer=0x10:0xf4ed6f28 >codesegment=base0x0,limit0xfffff,type0x1b >=DPL0,pres1,def321,gran1 >processoreflags=interruptenabled,resume,IOPL=0 >currentprocess=80(mount) >interruptmask= >trapnumber=12 >panic:pagefault

[Quando] voc v uma mensagem como essa, no suficiente somente reproduzla e envi-la em um e-mail. O valor do ponteiro de instruo (instruction pointer) que eu destaquei acima muito importante; infelizmente, ele tambm depende de configurao. Em outras palavras, os valores variam de acordo com a exata imagem do kernel que voc estiver usando. Se voc estiver usando uma imagem GENERIC do kernel de um dos snapshots, ento possvel que algum acompanhe a funo ofensiva, mas se voc est rodando um kernel customizado ento s voc pode nos dizer aonde a falha ocorreu. O que voc deve fazer isso: 177

1. 2.

Anote o valor do ponteiro de instruo. Observe que o 0x8: parte do comeo no significante. Nesse caso o 0xf0xxxxxx que ns queremos. Quando o sistema reinicializar, faa o seguinte:
%nm-n/kernel.that.caused.the.panic|grepf0xxxxxx

Onde f0xxxxxx o valor do ponteiro de instruo. As chances so que voc no ter um resultado exato visto que os smbolos na tabela de smbolos do kernel so para os pontos de entrada (entry points) de funes e o endereo do ponteiro de instruo estaro em algum lugar dentro de uma funo, no no comeo. Se voc no receber um resultado exato, omita o ltimo dgito do valor do ponteiro de instruo e tente novamente, ex:
%nm-n/kernel.that.caused.the.panic|grepf0xxxxx

Se isso no produz nenhum resultado, corte outro dgito. Repita at que voc tenha algum tipo de retorno. O resultado ser uma possvel lista de funes que causaram o panic. Isso menos do que um mecanismo exato para rastreamento de um ponto de falha, mas melhor que nada. Eu vejo pessoas constantemente mostrando mensagens de panic como essa, mas eu raramente vejo algum comparar o ponteiro de instruo com uma funo na tabela de smbolos do kernel. A melhor maneira de rastrear a causa de um panic guardar as mensagens de falha (crash dump), e ento usar o gdb(1) para gerar um stack trace da falha. Em qualquer caso, o mtodo que eu normalmente uso esse: 1. Definir um arquivo de configurao do kernel, opcionalmente adiconando a options DDB se voc acha que precisa do debugger do kernel para algo. (Eu uso isso principalmente para ajustar breakpoints se eu suspeito que h uma condio de lao infinito (infinite loop ou algo do tipo). Use config -g KERNELCONFIG configurar o diretrio da construo.
cd /sys/compile/ KERNELCONFIG; make

2. 3. 4. 5. 6.

Espere o kernel acabar de compilar.


make install

reboot

O processo do make(1) ter construdo dois kernels. kernel e kernel.debug . O kernel foi instalado como /kernel , enquanto o kernel.debug pode ser usado como fonte smbolos de debug para o gdb(1). 178

Captulo 18. Tpicos Avanados Para ter certeza que voc ir capturar o crash dump, voc precisa editar o /etc/ rc.conf e ajustar o dumpdev para apontar para sua partio swap. Isso far com que os scripts rc(8) usem o comando dumpon(8) para habilitar os crash dumps. Voc pode tambm executar o dumpon(8) manualmente. Depois de um panic, o crash dump pode ser recuperado usando o savecore(8); se variavel dumpdev estiver definida no /etc/rc.conf , os scripts rc(8) iro executar o savecore(8) automaticamente e colocar o crash dump em /var/crash .

Nota
Os crash dumps do FreeBSD so geralmente do mesmo tamanho da memria RAM fsica da sua mquina. Isto , se voc tem 64MB de RAM, voc ter um crash dump de 64MB. Ento voc deve ter certeza que h espao suficiente em /var/crash para alocar o dump. Alternativamente, voc executa o savecore(8) manualmente e pode faz-lo recuperar o crash dump para onde voc tenha mais espao. possvel limitar o tamanho do crash dump utilizando a opo options MAXMEM=(foo) para ajustar a quantia de memria que o kernel ir usar para algo um pouco mais sensvel. Por exemplo, se voc tem 128MB de RAM, voc pode limitar o uso de memria do kernel para 16MB para que o tamanho do seu crash dump tenha somente 16MB ao invs de 128MB. Uma vez que voc recuperou o crash dump, voc pode ter um stack trace com o gdb(1) como segue:
%gdb-k/sys/compile/KERNELCONFIG/kernel.debug/var/crash/ vmcore.0 (gdb) where

Note que h vrias telas com informaes valiosas; seria ideal o uso do script(1) para capturar todas elas. Usando a imagem (unstripped) do kernel com todos os smbolos de debug deve mostrar a linha exata do cdigo-fonte do kernel onde o panic ocorreu. Geralmente mais interessante ler o stack trace de baixo para cima a fim de rastrear a exata seqncia de eventos que levaram ao crash. Voc tambm pode usar o gdb(1) para exibir os contedos de vrias variveis ou estruturas a fim de examinar o estado do sistema no instante do crash. Agora, se voc realmente louco e tem um segundo computador, voc tambm pode configurar o gdb(1) para executar um debug remoto, tanto que voc pode usar o gdb(1) em um sistema para debugar o kernel em outro sistema, incluindo o ajuste de breakpoints, rastreamento passo-a-passo pelo cdigo do kernel, do mesmo modo 179

que voc pode fazer com um programa do modo de usurio normal. Eu ainda no brinquei com isso pois no tive a chance de configurar duas lado a lado com o nico propsito de debugging. [Adendo de Bill: "Eu esqueci de mencionar uma coisa: se voc tem DDB habilitado e o kernel em modo de debug, voc pode forar um panic (e um crash dump) apenas digitando panic no prompt do ddb. Ele pode parar no debugger novamente durante a fase de panic. Se isso acontecer, digite continue e ele finalizar o crash dump."-ed] P: R: Por que a dlsym() no funciona mais nos executveis ELF? A toolchain (cadeia de ferramentas) ELF no faz, por padro, os smbolos definidos em um executvel visvel para o linkador dinmico (dynamic linker). Conseqentemente, a procura em nomes obtidos de chamadas com a dlsym() para dlopen(NULL, flags) ir falhar ao buscar tais smbolos. Se a inteno usar a dlsym() para buscar smbolos que possam existir nos executveis principais do processo, necessrio linkar o programa com a opo export-dynamic com o linker ELF (ld(1)). P: R: Como eu posso aumentar ou reduzir o espao de endereamento disponvel para o kernel? Por padro, o espao de endereamento (address space) do kernel 256 MB no FreeBSD 3.x e 1 GB no FreeBSD 4.x. Em um servidor de rede com trfego intensivo (por exemplo, um servidor FTP ou HTTP de muito trfego) pode acontecer de, por exemplo, 256MB de memria no ser o suficiente. Mas ento, como aumentar esse espao? Existem duas formas. Primeiro, necessrio dizer ao kernel que ele deve reservar uma grande quantidade de espao em memria para ele mesmo. Segundo, considerando que o kernel carregado no topo do espao de endereamento, preciso diminuir o endereo de forma que no conflite com as pginas anteriores de memria, e que no lugar disso, ele seja carregado em seu novo local. O primeiro objetivo facilmente atingido aumentando as definies de valores do NKPDE no arquivo src/sys/i386/include/pmap.h . Aqui est o arquivo, como deve ser, para 1GB de endereo de memria:
#ifndefNKPDE #ifdefSMP #defineNKPDE254/*addressablenumber ofpagetables/pde's*/ #else #defineNKPDE255/*addressablenumber ofpagetables/pde's*/ #endif/*SMP*/ #endif

180

Captulo 18. Tpicos Avanados Para achar o valor correto de NKPDE , divida o nmero desejado (em megabytes) por quatro, ento subtraia um para mquinas mono processadas e dois para mquinas com SMP. Para atingir o segundo objetivo necessrio descobrir o endereo correto de carregamento. Para isso basta subtrair o tamanho do espao de endereamento desejado (em bytes) de 0x100100000; o resultado 0xc0100000 para um endereo de espao de 1 GB. Ajuste LOAD_ADDRESS em src/sys/i386/conf/Makefile.i386 para esse valor, agora ajuste o contador de posio listada no inicio do src/sys/ i386/conf/kernel.script para o mesmo valor, como a seguir:
OUTPUT_FORMAT("elf32-i386","elf32-i386","elf32-i386") OUTPUT_ARCH(i386) ENTRY(btext) SEARCH_DIR(/usr/lib);SEARCH_DIR(/usr/obj/elf/home/src/tmp/usr/ i386-unknown-freebsdelf/lib); SECTIONS { /*Read-onlysections,mergedintotextsegment:*/ .=0xc0100000+SIZEOF_HEADERS; .interp:{*(.interp)}

Agora recompile e reinstale seu kernel. Provavelmente aparecero problemas com o ps(1) e com o top(1), executar um make world deve solucionar tais problemas (ou ento, a recompilao manual da libkvm , do ps(1) e do top(1), depois de incluir o pmap.h alterado em /usr/include/vm/ . OBS: o tamanho do espao em memria do kernel deve ser um mltiplo de quatro megabytes. [Adendo por David Greenman: Acho que o endereo de espao do kernel precisa ser uma potncia de dois, mas eu no estou certo disso. O cdigo do processo de inicializao antigo costumava mexer com os bits de endereo de alta ordem, o que implicava em uma granularidade de 256MB]

181

Captulo 19. Reconhecimentos


Se voc encontrar algum problema no FAQ ou se desejar submeter uma nova entrada, por favor envie um e-mail para o Responsvel pelo FAQ <faq@FreeBSD.org >. Ns apreciamos o seu feedback e no podemos tornar este FAQ melhor sem a sua ajuda! Grupo Central (FreeBSD Core Team) Jordan K. Hubbard Atualizaes e ajustes ocasionais na ordenao das informaes do FAQ . Doug White Pelos servios prestados acima e alm da chamada do dever em freebsd-questions Jrg Wunsch Pelos servios prestados acima e alm da chamada do dever na Usenet Garrett Wollman Rede (networking) e formatao Jim Lowe Informaes sobre Multicast Peter da Silva Escravo de digitao mecnica do FAQ FreeBSD A Equipe FreeBSD Reclamaes, rabujices e envio de informaes E a todos os outros que ns nos esquecemos, nossas desculpas e obrigado do corao!

Você também pode gostar