doc/pt_BR.ISO8859-1/books/faq/book.sgml
Mario Sergio Fujikawa Ferreira a43544e01c Add Brazilian Portuguese translated version
Reviewed by:		blackend, keramida,
			phantom (in principle)
Approved by:		phantom (mentor)
Obtained from:		The FreeBSD Brazilian Portuguese Documentation Project
Original revision:	1.456
2002-10-01 02:58:47 +00:00

15732 lines
607 KiB
Text

<!--
The FreeBSD Documentation Project
The FreeBSD Brazilian Portuguese Documentation Project
Original revision: 1.456
$FreeBSD$
-->
<!DOCTYPE BOOK PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man;
<!ENTITY % freebsd PUBLIC "-//FreeBSD//ENTITIES DocBook Miscellaneous FreeBSD Entities//EN">
%freebsd;
<!ENTITY % authors PUBLIC "-//FreeBSD//ENTITIES DocBook Author Entities//EN">
%authors;
<!ENTITY % teams PUBLIC "-//FreeBSD//ENTITIES DocBook Team Entities//PTBR">
%teams;
<!ENTITY % bookinfo PUBLIC "-//FreeBSD//ENTITIES DocBook BookInfo Entities//PTBR">
%bookinfo;
<!ENTITY % mailing-lists PUBLIC "-//FreeBSD//ENTITIES DocBook Mailing List Entities//PTBR">
%mailing-lists;
<!ENTITY % words PUBLIC "-//FreeBSD//ENTITIES DocBook Specific Word Translations Entities//PTBR">
%words;
<!ENTITY bibliography SYSTEM "../../share/sgml/bibliography.sgml">
]>
<book>
<bookinfo>
<title>Perguntas mais freq&uuml;entes sobre FreeBSD 2.X, 3.X e
4.X</title>
<corpauthor>Projeto de Documenta&ccedil;&atilde;o do FreeBSD</corpauthor>
<pubdate>$FreeBSD$</pubdate>
<copyright>
<year>1995</year>
<year>1996</year>
<year>1997</year>
<year>1998</year>
<year>1999</year>
<year>2000</year>
<year>2001</year>
<year>2002</year>
<holder>Projeto de Documenta&ccedil;&atilde;o do FreeBSD</holder>
</copyright>
&bookinfo.legalnotice;
<abstract>
<para>Estas s&atilde;o as Perguntas Mais Freq&uuml;entes
(<literal>FAQ</literal>) para as vers&otilde;es 2.X, 3.X e 4.X
do FreeBSD. Deve-se assumir que todos os assuntos aqui
tratados s&atilde;o relevantes para FreeBSD 2.0.5 ou
posterior, a n&atilde;o ser que o contr&aacute;rio esteja
explicitamente denotado. Todos os assuntos assinalados com
&lt;XXX&gt; est&atilde;o em processo de desenvolvimento. Se
voc&ecirc; estiver interessado em ajudar este projeto, envie
e-mail para &a.doc;. A vers&atilde;o mais atualizada deste
documento est&aacute; sempre dispon&iacute;vel no <ulink
URL="../../../../index.html">servidor WWW do
FreeBSD</ulink>. Tamb&eacute;m pode ser obtida como um
&uacute;nico grande arquivo <ulink
URL="book.html">HTML</ulink> via HTTP; ou, como texto puro,
ou nos formatos postscript, PDF, etc. no <ulink
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">servidor FTP do
FreeBSD</ulink>. Voc&ecirc; tamb&eacute;m pode querer
<ulink URL="../../../../search/index.html">realizar uma busca
nas Perguntas Mais Freq&uuml;entes
(<literal>FAQ</literal>)</ulink>.</para>
</abstract>
</bookinfo>
<chapter id="introduction">
<title>Introdu&ccedil;&atilde;o</title>
<para>Bem vindo &agrave;s Perguntas Mais Freq&uuml;entes
(<literal>FAQ</literal>) para as vers&otilde;es 2.X &agrave; 4.X
do FreeBSD!</para>
<para>Como &eacute; de costume em Perguntas Mais Freq&uuml;entes
(<literal>FAQ</literal>) da Usenet, este documento pretende
cobrir as perguntas mais freq&uuml;entes relacionadas ao sistema
operacional FreeBSD (e claro, respond&ecirc;-las todas!).
Embora originalmente tais documentos tivessem apenas a
finalidade de reduzir a utiliza&ccedil;&atilde;o da largura de
banda da rede ao evitar que o mesmo tipo de pergunta antiga
fosse sempre repetida, <literal>FAQs</literal> tornaram-se
reconhecidamente uma fonte valiosa de
informa&ccedil;&otilde;es.</para>
<para>In&uacute;meros esfor&ccedil;os foram feitos para tornar
este <literal>FAQ</literal> o mais informativo poss&iacute;vel;
se voc&ecirc; tiver alguma sugest&atilde;o de como esse
documento pode ser melhorado, sinta-se a vontade para enviar
suas sugest&otilde;es por e-mail para o &a.faq;.</para>
<qandaset>
<qandaentry>
<question id="what-is-FreeBSD">
<para>O que &eacute; FreeBSD?</para>
</question>
<answer>
<para>Em s&iacute;ntese, FreeBSD &eacute; um sistema
operacional <foreignphrase>UN*X-like</foreignphrase> para
plataformas i386 e Alpha/AXP, baseado no
<quote>4.4BSD-Lite</quote> da Universidade da
Calif&oacute;rnia em Berkeley, com alguns aprimoramentos
adotados do <quote>4.4BSD-Lite2</quote>. O FreeBSD
tamb&eacute;m &eacute; baseado, indiretamente, na
convers&atilde;o de William Jolitz conhecida como
<quote>386BSD</quote> para a plataforma i386 do
<quote>Net/2</quote> da Universidade da Calif&oacute;rnia,
em Berkeley; apesar que pouqu&iacute;ssimo c&oacute;digo
originado do 386BSD ainda exista no FreeBSD. Uma
descri&ccedil;&atilde;o mais abrangente do que &eacute;
FreeBSD e como o sistema funciona, pode ser encontrada na
<ulink URL="../../../../index.html">p&aacute;gina
principal do FreeBSD</ulink>.</para>
<para>O FreeBSD &eacute; amplamente utilizado por empresas,
Provedores de Servi&ccedil;o Internet, pesquisadores,
profissionais de inform&aacute;tica, estudantes e
usu&aacute;rios dom&eacute;sticos no mundo todo, para
trabalho, educa&ccedil;&atilde;o e
recrea&ccedil;&atilde;o. Alguns destes exemplos podem ser
observados na <ulink
URL="../../../../gallery/index.html">Galeria
FreeBSD,</ulink>.</para>
<para>Para informa&ccedil;&otilde;es mais detalhadas sobre o
FreeBSD, por favor, leia o <ulink
URL="../handbook/index.html">&a.ptbr.p.handbook;</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="FreeBSD-goals">
<para>Qual o objetivo do Projeto FreeBSD?</para>
</question>
<answer>
<para>O objetivo do Projeto FreeBSD &eacute; oferecer
<foreignphrase>software</foreignphrase> que possa ser
utilizado para qualquer finalidade e sem
obriga&ccedil;&otilde;es anexadas &agrave; esse
c&oacute;digo. Muitos de n&oacute;s investimos
significantemente no c&oacute;digo (e no projeto como um
todo), e com certeza n&atilde;o nos importar&iacute;amos
em receber algum tipo de compensa&ccedil;&atilde;o
financeira neste momento ou qualquer outro no futuro, mas
ningu&eacute;m no projeto insistir&aacute; nisso.
Acreditamos que a nossa primeira e mais importante
miss&atilde;o &eacute; oferecer c&oacute;digo para toda e
qualquer pessoa, que possa ser utilizado para qualquer
prop&oacute;sito, de forma que esse c&oacute;digo
ofere&ccedil;a o maior n&uacute;mero poss&iacute;vel de
benef&iacute;cios e formas de uso. N&oacute;s acreditamos
que este &eacute; um dos objetivos fundamentais do
<foreignphrase>Software</foreignphrase> Livre, e &eacute;
um dos quais n&oacute;s apoiamos com entusiasmo.</para>
<para>O c&oacute;digo fonte em nossa &aacute;rvore que
&eacute; distribu&iacute;do sob a <ulink
url="http://www.FreeBSD.org/copyright/COPYING">Licen&ccedil;a
P&uacute;blica Geral GNU (GPL)</ulink> ou sob a <ulink
url="http://www.FreeBSD.org/copyright/COPYING.LIB">
Licen&ccedil;a P&uacute;blica Geral de Bibliotecas GNU
(LGPL)</ulink> inclue, pode-se dizer, algumas
obriga&ccedil;&otilde;es anexadas a ele; contudo tais
restri&ccedil;&otilde;es visam garantir o acesso livre a
esse c&oacute;digo, e n&atilde;o o contr&aacute;rio.
Devido &agrave; complexidades adicionais que envolvem a
utiliza&ccedil;&atilde;o comercial de software licenciado
sob GPL, n&oacute;s procuramos substituir tais softwares
sob a mais relaxada <ulink
url="http://www.FreeBSD.org/copyright/freebsd-license.html">licen&ccedil;a
de direito autoral FreeBSD</ulink> sempre que
poss&iacute;vel;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="bsd-license-restrictions">
<para>A licen&ccedil;a FreeBSD tem alguma
restri&ccedil;&atilde;o?</para>
</question>
<answer>
<para>Sim. Entrentanto, essas restri&ccedil;&otilde;es
n&atilde;o definem regras a respeito de como o
c&oacute;digo deve ser utilizado, mas de como voc&ecirc;
deve tratar o Projeto FreeBSD ao utilizar c&oacute;digo
distribu&iacute;do pelo mesmo. Se voc&ecirc; tem
s&eacute;rias d&uacute;vidas sobre o licen&ccedil;iamento,
sinta-se a vontade para ler a <ulink
url="http://www.FreeBSD.org/copyright/freebsd-license.html">
licen&ccedil;a</ulink>. Para os meramente curiosos, a
licen&ccedil;a pode ser resumida em:</para>
<itemizedlist>
<listitem>
<para>N&atilde;o alegue que o c&oacute;digo foi escrito
por voc&ecirc;.</para>
</listitem>
<listitem>
<para>N&atilde;o nos processe se o c&oacute;digo
falhar.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="replace-current-OS">
<para>O FreeBSD pode substituir meu sistema operacional
atual?</para>
</question>
<answer>
<para>Para maioria das pessoas, sim. Mas essa n&atilde;o
&eacute; uma pergunta t&atilde;o simples assim.</para>
<para>A maioria das pessoas, na verdade, n&atilde;o utiliza
um sistema operacional. As aplica&ccedil;&otilde;es
utilizadas pelos usu&aacute;rios &eacute; que realmente
usam o sistema operacional. O FreeBSD &eacute; projetado
de forma a oferecer um ambiente robusto e completo para as
aplica&ccedil;&otilde;es. Suporta uma enorme variedade de
navegadores internet, de su&iacute;tes de
escrit&oacute;rio, clientes de e-mail, programas de
manipula&ccedil;&atilde;o gr&aacute;fica, ambientes de
programa&ccedil;&atilde;o, servidores e servi&ccedil;os de
rede, e praticamente tudo mais que voc&ecirc; pode
desejar. A maioria destas aplica&ccedil;&otilde;es podem
ainda ser gerenciadas atrav&eacute;s da <ulink
url="http://www.freebsd.org/ports/">Cole&ccedil;&atilde;o
de <literal>Ports</literal></ulink>.</para>
<para>Em circunst&acirc;ncias nas quais precise usar uma
aplica&ccedil;&atilde;o dispon&iacute;vel apenas para um
determinado sistema operacional, n&atilde;o &eacute;
poss&iacute;vel substituir aquele sistema operacional.
Entretanto, h&aacute; uma boa chance que alguma
aplica&ccedil;&atilde;o similar &agrave; que voc&ecirc;
precisa, exista para FreeBSD. Se voc&ecirc; quer ter,
desde um s&oacute;lido conjunto de
aplica&ccedil;&otilde;es para escrit&oacute;rio,
at&eacute; um robusto e altamente escal&aacute;vel
servidor Internet, ou simplesmente uma
esta&ccedil;&atilde;o de trabalho confi&aacute;vel, onde
voc&ecirc; possa realizar seu trabalho sem
interrup&ccedil;&otilde;es, FreeBSD provavelmente vai
suprir todas as suas necessidades. In&uacute;meras
pessoas pelo mundo todo, desde usu&aacute;rios novatos
&agrave; administradores de sistemas UNIX experientes usam
FreeBSD como seu &uacute;nico sistema operacional para
<foreignphrase>desktop</foreignphrase>.</para>
<para>Se voc&ecirc; est&aacute; migrando para FreeBSD a
partir de algum outro ambiente UNIX, provavelmente
j&aacute; sabe quase tudo o que precisa pra come&ccedil;ar
a se envolver com o sistema. Entretanto, se o seu
hist&oacute;rico em computa&ccedil;&atilde;o envolveu
somente sistemas operacionais baseados em ambientes
gr&aacute;ficos como Windows e antigos Mac OS, ser&aacute;
necess&aacute;rio investir algum tempo a mais aprendendo a
maneira UNIX de fazer as coisas. Este
<literal>FAQ</literal> e o <ulink
url="../handbook/index.html">&a.ptbr.p.handbook;</ulink>
s&atilde;o excelentes formas de come&ccedil;ar sua
jornada.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="why-called-FreeBSD">
<para>Por que o sistema se chama FreeBSD?</para>
</question>
<answer>
<itemizedlist>
<listitem>
<para>Pode ser utilizado sem nenhum encargo
monet&aacute;rio, inclusive para uso comercial.</para>
</listitem>
<listitem>
<para>O c&oacute;digo fonte completo do sistema
operacional &eacute; livremente distribu&iacute;do, e
pode ser adquirido gratuitamente. O menor
n&uacute;mero poss&iacute;vel de
restri&ccedil;&otilde;es foram colocadas sobre o uso
do sistema, sua distribui&ccedil;&atilde;o e sua
incorpora&ccedil;&atilde;o &agrave; outro projeto
(comercial ou n&atilde;o).</para>
</listitem>
<listitem>
<para>Qualquer pessoa que tiver feito alguma
corre&ccedil;&atilde;o ou aprimoramento do
c&oacute;digo do sistema pode livremente enviar suas
altera&ccedil;&otilde;es e ter seu c&oacute;digo
adicionado &agrave; &aacute;rvore de c&oacute;digo
fonte do sistema (obviamente sujeito a pr&eacute;vias
an&aacute;lises).</para>
</listitem>
</itemizedlist>
<para>&Eacute; importante ressaltar que a palavra de origem
inglesa <quote>free</quote> em portugu&ecirc;s pode ser
traduzida como <quote>livre</quote> e
<quote>gratuito</quote>. Al&eacute;m disso, a palavra
<quote>free</quote> est&aacute; sendo usada aqui com dois
significados: <quote>sem custo</quote> e <quote>voc&ecirc;
pode fazer o que quiser</quote>. <quote>Free</quote> no
nome do sistema operacional remete aos dois significados
da palavra. O sistema pode ser utilizado <quote>sem
nenhum custo</quote>, e pode ser utilizado <quote>da
forma que voc&ecirc; quiser</quote>. Exceto por algumas
poucas coisinhas que voc&ecirc; n&atilde;o pode fazer com
o FreeBSD (por exemplo, fingir que foi voc&ecirc; quem o
escreveu), voc&ecirc; pode realmente fazer o que bem
entender com o sistema.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="latest-version">
<para>Qual a vers&atilde;o mais recente do FreeBSD?</para>
</question>
<answer>
<para>A vers&atilde;o <ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel.current;-RELEASE/">&rel.current;</ulink>
&eacute; a vers&atilde;o <emphasis>RELEASE</emphasis> mais
recente; lan&ccedil;ada em &rel.current.date;. Esta
tamb&eacute;m &eacute; a vers&atilde;o
<emphasis>STABLE</emphasis> mais recente.</para>
<para>Resumidamente, <emphasis>-STABLE</emphasis> &eacute; a
s&eacute;rie voltada para Provedores de Servi&ccedil;o de
Internet, usu&aacute;rios corporativos, ou qualquer
usu&aacute;rio que deseje estabilidade e um n&uacute;mero
m&iacute;nimo de altera&ccedil;&otilde;es e novas
caracter&iacute;sticas adotadas do
<foreignphrase>snapshot</foreignphrase>
<emphasis>-CURRENT</emphasis>. Lan&ccedil;amentos podem
vir de qualquer um dos ramos de desenvolvimento; a
s&eacute;rie <emphasis>-CURRENT</emphasis>, todavia,
deveria ser utilizada apenas por usu&aacute;rios
preparados para um ambiente em constante
modifica&ccedil;&atilde;o, inst&aacute;vel em muitas de
suas caracter&iacute;sticas e extremamente sem garantias
(ao menos, quando comparado ao
<emphasis>-STABLE</emphasis>).</para>
<para>Lan&ccedil;amentos s&atilde;o realizados <link
linkend="release-freq">de alguns em alguns meses</link>.
Muitos usu&aacute;rios mant&eacute;m o c&oacute;digo fonte
de seus sistemas em mais sincronia com a &aacute;rvore de
desenvolvimento do FreeBSD (veja as perguntas sobre <link
linkend="current">FreeBSD-CURRENT</link> e <link
linkend="stable">FreeBSD-STABLE</link>) que isto, fazer
isto &eacute; uma demonstra&ccedil;&atilde;o de interesse
e compromisso visto que o c&oacute;digo fonte sofre
constantes modifica&ccedil;&otilde;es.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="current">
<para>O que &eacute; FreeBSD-CURRENT?</para>
</question>
<answer>
<para><ulink
URL="../handbook/cutting-edge.html#CURRENT">FreeBSD-CURRENT</ulink>
&eacute; a vers&atilde;o de desenvolvimento do sistema
operacional, que brevemente se tornar&aacute; a
s&eacute;rie 5.0-<literal>RELEASE</literal>. Exatamente
por ser uma s&eacute;rie de desenvolvimento, e portanto
sem garantias de estabilidade, o uso desse sistema
operacional &eacute; de interesse exclusivo de
desenvolvedores que trabalham no sistema, usu&aacute;rios
extremamente experientes que acompanham e analisam
(testam) o novo sistema ou daqueles que o fazem por
<foreignphrase>hobby</foreignphrase>. Veja a <ulink
URL="../handbook/cutting-edge.html#CURRENT">se&ccedil;&atilde;o
relevante</ulink> no <ulink
URL="../handbook/index.html">&a.ptbr.p.handbook;</ulink>.</para>
<para>Se voc&ecirc; n&atilde;o tem familiaridade com o
sistema operacional, n&atilde;o &eacute; um usu&aacute;rio
experiente ou n&atilde;o consegue distinguir a
diferen&ccedil;a entre um problema de verdade e um
problema tempor&aacute;rio, ent&atilde;o &eacute;
desaconselh&aacute;vel que voc&ecirc; use o
FreeBSD-CURRENT. Essa s&eacute;rie, as vezes, evolui de
forma extremamente r&aacute;pida, e pode se tornar
extremamente inst&aacute;vel e subutiliz&aacute;vel por
v&aacute;rios dias seguidos. Usu&aacute;rios 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 inv&eacute;s de
<quote>pequenos problemas tempor&aacute;rios de
instabilidade
(<foreignphrase>glitches</foreignphrase>)</quote>.
Perguntas sobre o porqu&ecirc; de <quote>make world
produzir erros a respeito de grupos</quote> s&atilde;o
devidamente ignoradas ou escrachadas na lista de
discuss&atilde;o da s&eacute;rie -CURRENT.</para>
<para>Diariamente, <ulink
URL="../../../../releases/snapshots.html"><foreignphrase>snapshots</foreignphrase></ulink>
s&atilde;o lan&ccedil;ados baseados no estado atual de
desenvolvimento dos ramos -CURRENT e -STABLE. Atualmente,
distribui&ccedil;&otilde;es ocasionais de
<foreignphrase>snapshots</foreignphrase> est&atilde;o
sendo disponibilizadas. Os objetivos por tr&aacute;s do
lan&ccedil;amento de cada
<foreignphrase>snapshot</foreignphrase> s&atilde;o:</para>
<itemizedlist>
<listitem>
<para>Testar a vers&atilde;o mais recente do programa de
instala&ccedil;&atilde;o.</para>
</listitem>
<listitem>
<para>Dar a oportunidade para aqueles que querem usar o
-CURRENT ou o -STABLE - mas n&atilde;o tem tempo ou
n&atilde;o tem uma conex&atilde;o Internet
r&aacute;pida o suficiente para estarem diariamente
sincronizados com a vers&atilde;o mais atualizada do
c&oacute;digo no projeto.</para>
</listitem>
<listitem>
<para>Manter um ponto de refer&ecirc;ncia fixo, em
rela&ccedil;&atilde;o ao c&oacute;digo em
desenvolvimento e o c&oacute;digo dispon&iacute;vel
at&eacute; ent&atilde;o, para o caso de n&oacute;s
seriamente <quote>quebrarmos</quote> alguma coisa.
(Embora CVS normalmente previna que desastres
horr&iacute;veis como este aconte&ccedil;am :)</para>
</listitem>
<listitem>
<para>Garantir que todas as novas caracter&iacute;sticas
e fun&ccedil;&otilde;es do sistema que precisem ser
testadas, tenham o maior n&uacute;mero poss&iacute;vel
de pessoas potencialmente testando-as.</para>
</listitem>
</itemizedlist>
<para>Sob nenhuma circunst&acirc;ncia, nenhum
<foreignphrase>snapshot</foreignphrase> -CURRENT pode ser
considerado software de <quote>qualidade de
produ&ccedil;&atilde;o</quote> para qualquer que seja o
prop&oacute;sito, e por mais maduro que o c&oacute;digo
-CURRENT atual possa parecer. Se a inten&ccedil;&atilde;o
&eacute; usar um sistema est&aacute;vel e completamente
testado, voc&ecirc; dever&aacute; usar apenas
lan&ccedil;amentos, ou
<foreignphrase>snapshots</foreignphrase> do ramo
-STABLE.</para>
<para>Os <foreignphrase>snapshots</foreignphrase>
lan&ccedil;ados podem ser diretamente acessados em <ulink
URL="ftp://current.FreeBSD.org/pub/FreeBSD/">
ftp://current.FreeBSD.org/pub/FreeBSD/</ulink> para a
s&eacute;rie 5.0-CURRENT e em <ulink
URL="ftp://releng4.FreeBSD.org/pub/FreeBSD">
releng4.FreeBSD.org</ulink> para
<foreignphrase>snapshots</foreignphrase> da s&eacute;rie
4-STABLE. <foreignphrase>Snapshots</foreignphrase> para a
s&eacute;rie 3-STABLE n&atilde;o est&atilde;o sendo
produzidos na data em que este documento foi escrito (Maio
de 2000).</para>
<para>Normalmente, os snapshots s&atilde;o gerados uma vez
ao dia, para todas as s&eacute;ries em desenvolvimento
ativo.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="stable">
<para>Qual o conceito por tr&aacute;s do
FreeBSD-STABLE?</para>
</question>
<answer>
<para>Nos prim&oacute;rdios do projeto quando o FreeBSD
2.0.5 foi lan&ccedil;ado, a &aacute;rvore de
desenvolvimento do sistema foi dividida em dois ramos. Um
ramo foi chamado <ulink
URL="../handbook/current-stable.html#STABLE">-STABLE</ulink>
e o outro <ulink
URL="../handbook/current-stable.html#CURRENT">-CURRENT</ulink>.
O FreeBSD-STABLE &eacute; direcionado para Provedores de
Servi&ccedil;os de Internet e para outros empreendimentos
comerciais que n&atilde;o pretendem conviver com
mudan&ccedil;as bruscas ou testar novas
caracter&iacute;sticas experimentais do sistema. Ele
recebe apenas c&oacute;digo que tenha sido totalmente
testado, corre&ccedil;&otilde;es de problemas e outras
pequenas inova&ccedil;&otilde;es incrementais. O
FreeBSD-CURRENT, por outro lado, tem sido uma linha sem
interrup&ccedil;&otilde;es visando ao 5.0-RELEASE (e
al&eacute;m) desde o lan&ccedil;amento 2.0. Se uma
pequena ilustra&ccedil;&atilde;o em arte ASCII ajudasse,
isto seria o que pareceria:</para>
<programlisting> 2.0
|
|
| [2.1-STABLE]
*BRANCH* 2.0.5 -&gt; 2.1 -&gt; 2.1.5 -&gt; 2.1.6 -&gt; 2.1.7.1 [2.1-STABLE termina]
| (Mar 1997)
|
|
| [2.2-STABLE]
*BRANCH* 2.2.1 -&gt; 2.2.2-RELEASE -&gt; 2.2.5 -&gt; 2.2.6 -&gt; 2.2.7 -&gt; 2.2.8 [fim]
| (Mar 1997) (Out 97) (Abr 98) (Jul 98) (Dez 98)
|
|
3.0-SNAPs (inicio Q1 1997)
|
|
3.0-RELEASE (Out 1998)
|
| [3.0-STABLE]
*BRANCH* 3.1-RELEASE (Fev 1999) -&gt; 3.2 -&gt; 3.3 -&gt; 3.4 -&gt; 3.5 -&gt; 3.5.1
| (Mai 1999) (Set 1999) (Dez 1999) (Jun 2000) (Jul 2000)
|
| [4.0-STABLE]
*BRANCH* 4.0 (Mar 2000) -&gt; 4.1 -&gt; 4.1.1 -&gt; 4.2 -&gt; 4.3 -&gt; 4.4 -&gt; ... Lan&ccedil;amentos 4.x futuro ...
|
| (Jul 2000) (Set 2000) (Nov 2000)
\|/
+
[5.0-CURRENT continua]</programlisting>
<para>O ramo 2.2-STABLE saiu de produ&ccedil;&atilde;o com o
lan&ccedil;amento 2.2.8. O ramo 3-STABLE saiu de
produ&ccedil;&atilde;o com o lan&ccedil;amento 3.5.1, que
foi tamb&eacute;m o &uacute;ltimo -RELEASE 3.X. As
&uacute;nicas modifica&ccedil;&otilde;es ainda realizadas
em quaisquer destes ramos s&atilde;o praticamente
relacionados apenas &agrave; corre&ccedil;&otilde;es de
seguran&ccedil;a.</para>
<para>O 4-STABLE &eacute; o ramo -STABLE em desenvolvimento
ativo. A vers&atilde;o mais recente da s&eacute;rie
4-STABLE &eacute; &rel.current;-RELEASE, lan&ccedil;ada em
&rel.current.date;.</para>
<para>O ramo 5-CURRENT est&aacute; lentamente progredindo
para o que se tornar&aacute; o FreeBSD 5.0-RELEASE e
al&eacute;m. Veja <link linkend="current">O que &eacute;
FreeBSD-CURRENT?</link> para obter mais
informa&ccedil;&otilde;es sobre este ramo.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="release-freq">
<para>Quando s&atilde;o realizados lan&ccedil;amentos
FreeBSD?</para>
</question>
<answer>
<para>O &a.re; lan&ccedil;a uma nova vers&atilde;o do
FreeBSD, em m&eacute;dia, a cada 4 meses. As datas de
lan&ccedil;amento s&atilde;o anunciadas com uma certa
anteced&ecirc;ncia, de forma que os desenvolvedores
trabalhando no sistema saibam quando seus projetos
precisam estar terminados e testados. Um per&iacute;odo
de testes antecede cada novo lan&ccedil;amento, de forma a
garantir que a adi&ccedil;&atilde;o de novas
caracter&iacute;sticas n&atilde;o comprometa a
estabilidade do lan&ccedil;amento. Muitos usu&aacute;rios
consideram tais precau&ccedil;&otilde;es 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.</para>
<para>Mais informa&ccedil;&otilde;es sobre o processo de
engenharia de lan&ccedil;amento (incluindo a
programa&ccedil;&atilde;o de novos lan&ccedil;amentos)
podem ser obtidas nas p&aacute;ginas de <ulink
url="http://www.FreeBSD.org/releng/index.html">engenharia
de lan&ccedil;amento</ulink> no s&iacute;tio WWW do
FreeBSD.</para>
<para>Para as pessoas que precisam, ou desejam um pouco mais
de emo&ccedil;&atilde;o,
<foreignphrase>snapshots</foreignphrase> bin&aacute;rios
s&atilde;o feitos diariamente como discutido acima.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="responsible">
<para>Quem &eacute; respons&aacute;vel pelo FreeBSD?</para>
</question>
<answer>
<para>As principais decis&otilde;es relacionadas ao Projeto
FreeBSD, como os objetivos e dire&ccedil;&atilde;o geral
do projeto, e quem tem permiss&atilde;o para adicionar
c&oacute;digo &agrave; &aacute;rvore de c&oacute;digo,
s&atilde;o tomadas por um <ulink
URL="../../articles/contributors/article.html#STAFF-CORE">grupo
central (<literal>core team</literal>)</ulink> composto
de 9 pessoas. Existe um grupo muito maior, composto de
mais de 200 desenvolvedores, denominados <ulink
URL="../../articles/contributors/article.html#STAFF-COMMITTERS"><foreignphrase>committers</foreignphrase></ulink>,
que tem autoriza&ccedil;&atilde;o para fazer
altera&ccedil;&otilde;es diretamente na &aacute;rvore de
c&oacute;digo do FreeBSD.</para>
<para>Entretanto, a maioria das altera&ccedil;&otilde;es
n&atilde;o triviais s&atilde;o previamente discutidas nas
<link linkend="mailing"> listas de
discuss&otilde;es</link>, e n&atilde;o existe
restri&ccedil;&atilde;o quanto a quem pode participar das
discuss&otilde;es.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="where-get">
<para>Onde posso obter o FreeBSD?</para>
</question>
<answer>
<para>Todo lan&ccedil;amento significativo do FreeBSD
est&aacute; dispon&iacute;vel via FTP an&ocirc;nimo no
<ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/">s&iacute;tio
FTP do Projeto FreeBSD</ulink>:</para>
<itemizedlist>
<listitem>
<para>Para obter o lan&ccedil;amento 3.X-STABLE
corrente, 3.5.1-RELEASE, veja <ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/3.5.1-RELEASE/">diret&oacute;rio
3.5.1-RELEASE</ulink>.</para>
</listitem>
<listitem>
<para>O lan&ccedil;amento 4-STABLE corrente,
&rel.current;-RELEASE pode ser encontrado no <ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel.current;-RELEASE/">diret&oacute;rio
&rel.current;-RELEASE</ulink>.</para>
</listitem>
<listitem>
<para><ulink
URL="ftp://releng4.FreeBSD.org/pub/FreeBSD/"><foreignphrase>Snapshots</foreignphrase>
4.X</ulink> s&atilde;o normalmente criados uma vez
ao dia.</para>
</listitem>
<listitem>
<para>Lan&ccedil;amentos <ulink
URL="ftp://current.FreeBSD.org/pub/FreeBSD/"><foreignphrase>Snapshot</foreignphrase>
5.0</ulink> s&atilde;o feitos uma vez ao dia no ramo
<link linkend="current">-CURRENT</link>, &uacute;til
apenas tanto para aqueles que gostam de viver no
limite quanto para aqueles que precisam usar a
vers&atilde;o mais recente poss&iacute;vel com todas
as &uacute;ltimas caracter&iacute;sticas; sejam pessoas
conduzindo testes ou desenvolvedores.</para>
</listitem>
</itemizedlist>
<para>Informa&ccedil;&atilde;o sobre como obter o FreeBSD em
CD, DVD, e outras m&iacute;dias, pode ser encontrada no
<ulink
url="../handbook/mirrors.html">&a.ptbr.p.handbook;</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="access-pr">
<para>Como eu acesso o banco de dados de Relat&oacute;rios
de Problemas?</para>
</question>
<answer>
<para>A base de dados de Relat&oacute;rios de Problemas
&eacute; um banco de pedidos de altera&ccedil;&otilde;es
realizados pelos usu&aacute;rios. Todos os pedidos de
altera&ccedil;&atilde;o j&aacute; realizados podem ser
consultados (ou novos submetidos) atrav&eacute;s de
nossas interfaces PR WWW para <ulink
URL="http://www.FreeBSD.org/send-pr.html">submeter
(novos pedidos)</ulink> e <ulink
URL="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">consultar
(j&aacute; submetidos)</ulink>.
O comando &man.send-pr.1; tamb&eacute;m pode ser usado
para submeter relat&oacute;rios de problema e pedidos
de altera&ccedil;&atilde;o por meio de correio
eletr&ocirc;nico.</para>
<para>Antes de enviar um relat&oacute;rio de problema, por
favor, leia o artigo <ulink
URL="../../articles/problem-reports/article.html">Escrevendo
Relat&oacute;rios de Problemas para o FreeBSD</ulink>,
que d&aacute; boas dicas de como escrever um bom
relat&oacute;rio de problema.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="become-web-mirror">
<para>Como eu me torno um espelho do s&iacute;tio WWW
FreeBSD?</para>
</question>
<answer>
<para>Existam v&aacute;rias formas de espelhar o
s&iacute;tio WWW do FreeBSD.</para>
<itemizedlist>
<listitem>
<para>Voc&ecirc; pode obter os arquivos j&aacute;
formatados a partir de um servidor CVSup FreeBSD
usando o aplicativo <filename
role="package">net/cvsup</filename>. O arquivo
<filename>/usr/share/examples/cvsup/www-supfile</filename>
oferece um exemplo de configura&ccedil;&atilde;o do
CVSup para espelhar o servidor WWW do projeto
FreeBSD.</para>
</listitem>
<listitem>
<para>Voc&ecirc; pode obter o c&oacute;digo fonte do
s&iacute;tio 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&aacute;-los
em formato WWW tradicional. Voc&ecirc; pode
come&ccedil;ar a espelhar o projeto a partir de <ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www">ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www</ulink>.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="other-info-sources">
<para>Que outras fontes de informa&ccedil;&otilde;es sobre o
FreeBSD existem?</para>
</question>
<answer>
<para>Por gentileza, queira verificar a lista de <ulink
url="http://www.FreeBSD.org/docs.html">Documenta&ccedil;&atilde;o</ulink>
no s&iacute;tio WWW principal <ulink
url="http://www.FreeBSD.org">FreeBSD</ulink>.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="support">
<title>Documenta&ccedil;&atilde;o e Suporte</title>
<qandaset>
<qandaentry>
<question id="books">
<para>Quais bons livros existem sobre FreeBSD?</para>
</question>
<answer>
<para>O projeto FreeBSD produz um grande n&uacute;mero de
documentos dispon&iacute;veis em <ulink
url="http://www.freebsd.org/docs.html">http://www.FreeBSD.org/docs.html</ulink>.
Al&eacute;m destes, outros livros recomendados s&atilde;o
referenciados nas Bibliografias dispon&iacute;veis ao
final deste <literal>FAQ</literal> e do
&a.ptbr.p.handbook;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="doc-formats">
<para>A documenta&ccedil;&atilde;o est&aacute;
dispon&iacute;vel em outros formatos, como texto puro
(ASCII) ou Postscript?</para>
</question>
<answer>
<para>Claro. A documenta&ccedil;&atilde;o pode ser obtida
em uma variedade de formatos e op&ccedil;&otilde;es de
compress&atilde;o no servidor FTP do FreeBSD, sob o
diret&oacute;rio <ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">/pub/FreeBSD/doc/</ulink>.</para>
<para>A documenta&ccedil;&atilde;o &eacute; organizada em
diversas categorias, como:</para>
<itemizedlist>
<listitem>
<para>O nome do documento, como <literal>faq</literal>
ou <literal>&a.ptbr.p.handbook;</literal>.</para>
</listitem>
<listitem>
<para>A codifica&ccedil;&atilde;o e l&iacute;ngua do
conte&uacute;do do documento. Tal
categoriza&ccedil;&atilde;o &eacute; baseada nos nomes
de localiza&ccedil;&atilde;o, que podem ser
encontrados sob <filename>/usr/share/locale</filename>
no seu FreeBSD. Atualmente existem documentos nas
seguintes l&iacute;nguas e
codifica&ccedil;&otilde;es:</para>
<informaltable frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Nome</entry>
<entry>Significado</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>en_US.ISO8859-1</literal></entry>
<entry>Ingl&ecirc;s Americano</entry>
</row>
<row>
<entry><literal>de_DE.ISO8859-1</literal></entry>
<entry>Alem&atilde;o</entry>
</row>
<row>
<entry><literal>es_ES.ISO8859-1</literal></entry>
<entry>Espanhol</entry>
</row>
<row>
<entry><literal>fr_FR.ISO8859-1</literal></entry>
<entry>Franc&ecirc;s</entry>
</row>
<row>
<entry><literal>ja_JP.eucJP</literal></entry>
<entry>Japon&ecirc;s (codifica&ccedil;&atilde;o
EUC)</entry>
</row>
<row>
<entry><literal>ru_RU.KOI8-R</literal></entry>
<entry>Russo (codifica&ccedil;&atilde;o
KOI8-R)</entry>
</row>
<row>
<entry><literal>zh_TW.Big5</literal></entry>
<entry>Chin&ecirc;s (codifica&ccedil;&atilde;o
Big5)</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<note>
<para>Alguns documentos podem n&atilde;o estar
dispon&iacute;veis em todas as
l&iacute;nguas.</para>
</note>
</listitem>
<listitem>
<para>Formato da documenta&ccedil;&atilde;o. A
documenta&ccedil;&atilde;o &eacute; produzida em
v&aacute;rios formatos. Cada qual com suas vantagens
e desvantagens. Alguns formatos s&atilde;o mais
apropriados para leitura on-line, enquanto outros
s&atilde;o mais agrad&eacute;veis est&eacute;ticamente
em formato impresso. Disponibilizar a
documenta&ccedil;&atilde;o em todos estes formatos,
garante que os leitores poder&atilde;o sempre ler os
trechos de seu interesse, tanto no monitor do seu
computador quanto em papel impresso. Atualmente os
formatos dispon&iacute;veis s&atilde;o:</para>
<informaltable frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Formato</entry>
<entry>Significado</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>html-split</literal></entry>
<entry>Uma s&eacute;rie de pequenos documentos
HTML, devidamente ligados.</entry>
</row>
<row>
<entry><literal>html</literal></entry>
<entry>Um &uacute;nico grande arquivo HTML
contendo todo o documento.</entry>
</row>
<row>
<entry><literal>pdb</literal></entry>
<entry>Formato de banco de dados pra Palm Pilot,
para ser usado com o visualizador <ulink
URL="http://www.iSilo.com/">iSilo</ulink>.</entry>
</row>
<row>
<entry><literal>pdf</literal></entry>
<entry>PDF (Formato de Documento
Port&aacute;vel) da Adobe</entry>
</row>
<row>
<entry><literal>ps</literal></entry>
<entry>Postscript</entry>
</row>
<row>
<entry><literal>rtf</literal></entry>
<entry>RTF (Formato de Texto Enriquecido) da
Microsoft<footnote>
<para>A n&uacute;mera&ccedil;&atilde;o de
p&aacute;gina n&atilde;o &eacute;
automaticamente atualizada quando este
tipo de arquivo &eacute; aberto no Word.
Digite <keycombo
action="simul"><keycap>CTRL</keycap><keycap>A</keycap></keycombo>,
<keycombo
action="simul"><keycap>CTRL</keycap><keycap>END</keycap></keycombo>,
<keycap>F9</keycap> depois de abrir o
documento no Word, para atualizar a
numera&ccedil;&atilde;o das
p&aacute;ginas.</para>
</footnote>
</entry>
</row>
<row>
<entry><literal>txt</literal></entry>
<entry>Texto puro</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
<listitem>
<para>As t&eacute;cnicas de compress&atilde;o e
empacotamento dos arquivos. Atualmente, 3 destes
formatos est&atilde;o em uso:</para>
<orderedlist>
<listitem>
<para>Para o formato <literal>html-split</literal>,
os arquivos s&atilde;o todos empacotados com
&man.tar.1;. O resultado &eacute; um arquivo
<literal>.tar</literal> que &eacute;
posteriormente comprimido usando as
t&eacute;cnicas de compress&atilde;o detalhadas a
seguir.</para>
</listitem>
<listitem>
<para>Todos os outros formatos geram apenas um
arquivo, nomeado
<filename>book.<replaceable>formato</replaceable></filename>
(por exemplo, <filename>book.pdb</filename>,
<filename>book.html</filename>, e outros).</para>
<para>Estes arquivos s&atilde;o, ent&atilde;o
comprimidos utilizando tr&ecirc;s t&eacute;cnicas
de compress&atilde;o:</para>
<informaltable frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Tipo</entry>
<entry>Descri&ccedil;&atilde;o</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>zip</literal></entry>
<entry>Formato Zip. Se voc&ecirc; quiser
descomprimir este formato no FreeBSD,
ser&aacute; necess&aacute;rio instalar o
<literal>port</literal> <filename
role="package">archivers/unzip</filename>
antes.</entry>
</row>
<row>
<entry><literal>gz</literal></entry>
<entry>Formato GNU Zip. Para descomprimir
estes arquivos, use o comando
&man.gunzip.1; que faz parte do
FreeBSD.</entry>
</row>
<row>
<entry><literal>bz2</literal></entry>
<entry>Formato BZip2. Esse formato &eacute;
menos popular que os outros, mas
geralmente produz arquivos menores.
Instale o <literal>port</literal>
<filename
role="package">archivers/bzip2</filename>
para descomprimir arquivos deste
formato.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>Portanto, o &a.ptbr.p.handbook; em formato
Postscript comprimido com o BZip2 ser&aacute;
armazenado como <filename>book.ps.bz2</filename>
sob o diret&oacute;rio
<filename>handbook/</filename>.</para>
</listitem>
<listitem>
<para>A documenta&ccedil;&atilde;o formatada
est&aacute; dispon&iacute;vel ainda como um pacote
FreeBSD.</para>
</listitem>
</orderedlist>
</listitem>
</itemizedlist>
<para>Ap&oacute;s escolher o formato e o mecanismo de
compress&atilde;o, voc&ecirc; deve decidir se vai ou
n&atilde;o pegar o documento em formato de
<emphasis>pacote</emphasis> FreeBSD.</para>
<para>A vantagem de baixar e instalar os pacotes &eacute;
que a documenta&ccedil;&atilde;o pode ent&atilde;o ser
gerenciada usando os comandos de gerenciamento de pacotes
FreeBSD, como &man.pkg.add.1; e &man.pkg.delete.1;.</para>
<para>Se decidir baixar e instalar o pacote, ent&atilde;o
voc&ecirc; deve conhecer o nome do arquivo antes de
come&ccedil;ar. Os arquivos de
documenta&ccedil;&atilde;o-como-pacotes est&atilde;o
estocados em um diret&oacute;rio chamado
<filename>packages</filename>. Cada arquivo de pacote
segue o padr&atilde;o de nome
<filename><replaceable>document-name</replaceable>.<replaceable>lang</replaceable>.<replaceable>encoding</replaceable>.<replaceable>format</replaceable>.tgz</filename>.</para>
<para>Por exemplo, o <literal>FAQ</literal>, em
l&iacute;ngua Inglesa e formato PDF, estar&aacute; no
pacote de nome
<filename>faq.en_US.ISO8859-1.pdf.tgz</filename>.</para>
<para>Sabendo isto, voc&ecirc; pode usar o seguinte comando
pra instalar o pacote contendo o <literal>FAQ</literal> na
l&iacute;ngua Inglesa e formato PDF:</para>
<screen>&prompt.root; <userinput>pkg_add
ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/packages/faq.en_US.ISO8859-1.pdf.tgz</userinput></screen>
<para>Depois disso, voc&ecirc; pode usar o &man.pkg.info.1;
pra determinar onde o documento foi instalado.</para>
<screen>&prompt.root; <userinput>pkg_info -f faq.en_US.ISO8859-1.pdf</userinput>
Information for faq.en_US.ISO8859-1.pdf:
Packing list:
Package name: faq.en_US.ISO8859-1.pdf
CWD to /usr/share/doc/en_US.ISO8859-1/books/faq
File: book.pdf
CWD to .
File: +COMMENT (ignored)
File: +DESC (ignored)</screen>
<para>Como pode ver, <filename>book.pdf</filename>
ter&aacute; sido instalado sob
<filename>/usr/share/doc/en_US.ISO8859-1/books/faq</filename>.</para>
<para>Se voc&ecirc; preferir n&atilde;o usar pacotes,
ser&aacute; necess&aacute;rio baixar os arquivos
comprimidos, depois descomprim&iacute;-los e copiar os
documentos apropriados para os lugares corretos.</para>
<para>Por exemplo, a vers&atilde;o do <literal>FAQ</literal>
dividido em v&aacute;rios arquivos HTML, comprimido usando
&man.gzip.1;, pode ser encontrado no arquivo
<filename>doc/en_US.ISO8859-1/books/faq/book.html-split.tar.gz</filename>.
Para baixar e descomprimir aquele arquivo, voc&ecirc;
deveria fazer o seguinte.</para>
<screen>&prompt.root; <userinput>fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.gz</userinput>
&prompt.root; <userinput>gzip -d book.html-split.tar.gz</userinput>
&prompt.root; <userinput>tar xvf book.html-split.tar</userinput></screen>
<para>Ser&aacute; criada, ent&atilde;o, uma s&eacute;rie de
arquivos <filename>.html</filename>. O principal arquivo
&eacute; chamado <filename>index.html</filename> contendo
o &iacute;ndice, material introdut&oacute;rio e links para
outras partes do documento. Posteriormente, voc&ecirc;
pode copiar ou mover esses arquivos pra onde voc&ecirc;
quiser.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="mailing">
<para>Onde posso obter informa&ccedil;&otilde;es sobre as
listas de discuss&atilde;o FreeBSD?</para>
</question>
<answer>
<para>Voc&ecirc; pode encontrar uma vasta gama de
informa&ccedil;&otilde;es na <ulink
URL="../handbook/eresources.html#ERESOURCES-MAIL">se&ccedil;&atilde;o
do &a.ptbr.p.handbook; sobre listas de
discuss&atilde;o</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="y2k">
<para>Onde encontro informa&ccedil;&otilde;es sobre a
compatibilidade FreeBSD ano 2000 (FreeBSD Y2K)?</para>
</question>
<answer>
<para>Informa&ccedil;&otilde;es completas na <ulink
URL="../../../../y2kbug.html">p&aacute;gina FreeBSD
Y2K</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="newsgroups">
<para>Que grupos de not&iacute;cias (<foreignphrase>news
groups</foreignphrase>) existem sobre o FreeBSD?</para>
</question>
<answer>
<para>Informa&ccedil;&otilde;es completas podem ser
encontradas na <ulink
URL="../handbook/eresources-news.html">se&ccedil;&atilde;o
do &a.ptbr.p.handbook; sobre grupos de not&iacute;cias
(<foreignphrase>newsgroups</foreignphrase>)</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="irc">
<para>Existem canais de bate-papo retransmitido via Internet
(<acronym>IRC</acronym>) FreeBSD?</para>
</question>
<answer>
<para>Sim, a maioria das grandes redes de bate-papo
retransmitido via Internet (<acronym>IRC</acronym>) tem um
canal de bate-papo sobre FreeBSD:</para>
<itemizedlist>
<listitem>
<para>O canal <literal>#FreeBSD</literal> na <ulink
URL="http://www.efnet.org/index.php">EFNet</ulink>
&eacute; essencialmente um f&oacute;rum sobre FreeBSD,
mas n&atilde;o entre no canal se voc&ecirc; procura
suporte t&eacute;cnico, nem se voc&ecirc; est&aacute;
procurando uma maneira de evitar a leitura de
p&aacute;ginas de manual ou fazer suas pr&oacute;prias
pesquisas. Este &eacute; essencialmente um canal de
bate-papo geral. Assuntos como sexo, esportes ou
armas nucleares s&atilde;o t&atilde;o comuns quanto
FreeBSD no canal. Lembre-se, Voc&ecirc; Foi Avisado!
Para conectar-se, use o servidor
<hostid>irc.chat.org</hostid>.</para>
</listitem>
<listitem>
<para>O canal <literal>#FreeBSDhelp</literal> na <ulink
URL="http://www.efnet.org/index.php">EFNet</ulink>
&eacute; dedicado a suporte e auxilio de
usu&aacute;rios de FreeBSD. Os participantes neste
canal s&atilde;o bem mais receptivos a perguntas que
os do canal <literal>#FreeBSD</literal>.</para>
</listitem>
<listitem>
<para>O canal <literal>#FreeBSD</literal> na <ulink
URL="http://www.dal.net/">DALNET</ulink> pode ser
acessado em <hostid>irc.dal.net</hostid> nos Estados
Unidos, e <hostid>irc.eu.dal.net</hostid> na
Europa.</para>
</listitem>
<listitem>
<para>O canal <literal>#FreeBSD</literal> na <ulink
URL="http://www.undernet.org/">UNDERNET</ulink> pode
ser acessado em <literal>us.undernet.org</literal> nos
Estados Unidos, e <literal>eu.undernet.org</literal>
na Europa. Partindo do princ&iacute;pio que esse
&eacute; um canal de ajuda, esteja preparado para ler
todos os documentos a que for referido.</para>
</listitem>
<listitem>
<para>O canal <literal>#FreeBSD</literal> na <ulink
url="http://www.hybnet.net/">HybNet</ulink>
<emphasis>&eacute;</emphasis> um canal de ajuda. Uma
lista de servidores pode ser encontrada no <ulink
url="http://www.hybnet.net/">s&iacute;tio WWW da
HybNet</ulink>.</para>
</listitem>
</itemizedlist>
<para>Cada um destes canais &eacute; independente, e
exatamente por estarem em redes distintas, n&atilde;o
&eacute; conectada ou relacionada entre si. Os estilos de
bate-papo em cada um dos canais s&atilde;o bastante
distintos, pode ser necess&aacute;rio testar cada um para
descobrir qual &aacute; mais adequado ao seu estilo
pessoal de bate-papo. Como em toda rede de bate-papo
retransmitido via Internet (<acronym>IRC</acronym>), nem
considere acessar os canais se voc&ecirc; ofende-se
facilmente ou se voc&ecirc; n&atilde;o se d&aacute; bem
com muita gente jovem (e alguns bem velhos) que usam as
mais irregulares formas de escrita e
conversa&ccedil;&atilde;o poss&iacute;vel, quase sempre
assassinando sem o menor pudor todos os princ&iacute;pios
verbais - de qualquer l&iacute;ngua que seja.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="training">
<para>Onde eu consigo treinamento em e suporte comercial ao
FreeBSD?</para>
</question>
<answer>
<para>DaemonNews oferece treinamento em e suporte comercial
ao FreeBSD. Mais informa&ccedil;&otilde;es podem ser
obtidas no s&iacute;tio WWW <ulink
url="http://www.bsdmall.com/">BSD Mall</ulink>.</para>
<para>FreeBSD Services oferece suporte comercial ao FreeBSD
no Reino Unido (al&eacute;m de vender o FreeBSD em
m&iacute;dia DVD). Veja o <ulink
url="http://www.freebsd-services.com">s&iacute;tio
WWW</ulink> deles para maiores
informa&ccedil;&otilde;es.</para>
<para>A FreeBSD Mall oferece suporte comercial ao FreeBSD.
Maiores informa&ccedil;&otilde;es podem ser obtidas no
<ulink url="http://www.freebsdmall.com/">s&iacute;tio
WWW deles</ulink>.</para>
<para>Qualquer outra organiza&ccedil;&atilde;o que
ofere&ccedil;a treinamento em ou suporte ao FreeBSD deve
entrar em contato com o projeto para serem listadas
aqui.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="install">
<chapterinfo>
<author>
<firstname>Nik</firstname>
<surname>Clayton</surname>
<affiliation>
<address><email>nik@FreeBSD.org</email></address>
</affiliation>
</author>
</chapterinfo>
<title>Instala&ccedil;&atilde;o</title>
<qandaset>
<qandaentry>
<question id="floppy-download">
<para>De qual arquivo eu devo baixar o FreeBSD da
rede?</para>
</question>
<answer>
<para>At&eacute; a vers&atilde;o 3.1 era necess&aacute;rio
apenas um disquete para instala&ccedil;&atilde;o do
FreeBSD, o disco era o
<filename>floppies/boot.flp</filename>. Contudo, depois
que o 3.1 foi lan&ccedil;ado, o Projeto adicionou ao
<foreignphrase>kernel</foreignphrase> gen&eacute;rico o
suporte a uma grande variedade de dispositivos, de forma
que ele passou a consumir mais espa&ccedil;o. Por este
motivo, desde a s&eacute;rie 3.X s&atilde;o
necess&aacute;rios dois disquetes, o
<filename>floppies/kernel.flp</filename> e o
<filename>floppies/mfsroot.flp</filename>. Essas imagens
precisam ser copiadas para disquetes, usando ferramentas
como o <command>fdimage</command> ou o &man.dd.1;.</para>
<para>Caso seja necess&aacute;rio baixar da rede a
distribui&ccedil;&atilde;o do sistema (por exemplo, para
uma instala&ccedil;&atilde;o por meio de um sistema de
arquivos DOS), voc&ecirc; ter&aacute; que obter as
seguintes estruturas da distribui&ccedil;&atilde;o
padr&atilde;o:</para>
<itemizedlist>
<listitem>
<para>bin/</para>
</listitem>
<listitem>
<para>manpages/</para>
</listitem>
<listitem>
<para>compat*/</para>
</listitem>
<listitem>
<para>doc/</para>
</listitem>
<listitem>
<para>src/ssys.*</para>
</listitem>
</itemizedlist>
<para>Para obter instru&ccedil;&otilde;es completas sobre o
procedimento de instala&ccedil;&atilde;o do FreeBSD e
maiores detalhes sobre os meios de
instala&ccedil;&atilde;o, por gentileza, consulte a <ulink
URL="../handbook/install.html">se&ccedil;&atilde;o de
instala&ccedil;&atilde;o</ulink> no
&a.ptbr.p.handbook;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="floppy-image-too-large">
<para>O que eu devo fazer se as imagens de disquete
n&atilde;o couberem em um &uacute;nico disco?</para>
</question>
<answer>
<para>Um disquete de 3.5 polegadas (1,44 MB) armazena
at&eacute; 1474560 bytes de dados. O tamanho da imagem de
inicializa&ccedil;&atilde;o &eacute; de exatamente 1474560
bytes.</para>
<para>Erros comuns, cometidos na
prepara&ccedil;&atilde;o dos discos de
inicializa&ccedil;&atilde;o, s&atilde;o:</para>
<itemizedlist>
<listitem>
<para>Baixar a imagem de disco via
<acronym>FTP</acronym> sem utilizar o modo de
transfer&ecirc;ncia
<emphasis>bin&aacute;rio</emphasis>.</para>
<para>Alguns clientes de FTP - especialmente navegadores
de Internet - costumam usar por padr&atilde;o o modo
de transfer&ecirc;ncia <emphasis>ascii</emphasis> nas
sess&otilde;es 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 inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) corrompida.
Verifique o tamanho da imagem que voc&ecirc; tem em
m&atilde;os, se &eacute; exatamente do mesmo tamanho
da imagem no servidor. Caso o tamanho n&atilde;o seja
<emphasis>exatamente</emphasis> o mesmo, voc&ecirc;
pode suspeitar do arquivo que voc&ecirc;
baixou.</para>
<para>Para garantir que esse problema n&atilde;o ocorra,
digite <emphasis>binary</emphasis> na prompt de
comando do seu cliente FTP, ou defina as
prefer&ecirc;ncias do programa para utilizar o modo
bin&aacute;rio. A&iacute; sim, fa&ccedil;a baixe da
rede a imagem de inicializa&ccedil;&atilde;o.</para>
</listitem>
<listitem>
<para>Usar o comando <command>copy</command> do DOS (ou
simplesmente copiar, por meio da Interface
Gr&aacute;fica do sistema) para transferir a imagem de
inicializa&ccedil;&atilde;o para o disquete.</para>
<para>Programas como o <command>copy</command>
n&atilde;o v&atilde;o funcionar para copiar a imagem
de inicializa&ccedil;&atilde;o direto para o disquete,
exatamente porque a imagem foi criada de forma que ela
seja carregada diretamente. A imagem tem o
conte&uacute;do completo que o disquete deve ter, com
seus dados alocados trilha-a-trilha, e portanto
n&atilde;o pode ser copiado para o disquete como um
simples arquivo. Voc&ecirc; tem que copiar a imagem
para o disquete usando alguma ferramenta de
<quote>c&oacute;pia crua</quote> (raw copy, como o
<command>fdimage</command> ou o
<command>rawrite</command>) como descrito no <ulink
URL="../handbook/install.html">guia de
instala&ccedil;&atilde;o do FreeBSD</ulink>.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="install-instructions-location">
<para>Onde est&atilde;o as instru&ccedil;&otilde;es para
instalar o FreeBSD?</para>
</question>
<answer>
<para>As instru&ccedil;&otilde;es de
instala&ccedil;&atilde;o do FreeBSD podem ser encontradas
na <ulink
URL="../handbook/install.html">se&ccedil;&atilde;o de
instala&ccedil;&atilde;o do FreeBSD no
&a.ptbr.p.handbook;</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="need-to-run">
<para>O que &eacute; preciso para usar o FreeBSD?</para>
</question>
<answer>
<para>Voc&ecirc; vai precisar, no m&iacute;nimo de um PC 386
com 5MB de mem&oacute;ria RAM e no m&iacute;nimo 60 MB em
disco. Essa configura&ccedil;&atilde;o permite o uso de
uma placa de v&iacute;deo MDA simples, mas para usar o
X11R6 &eacute; necess&aacute;rio uma placa de v&iacute;deo
VGA ou mais avan&ccedil;ada.</para>
<para>Para mais informa&ccedil;&otilde;es consulte <xref
linkend="hardware"></para>
</answer>
</qandaentry>
<qandaentry>
<question id="four-meg-ram-install">
<para>Eu tenho apenas 4 MB de mem&oacute;ria RAM. Posso
usar o FreeBSD?</para>
</question>
<answer>
<para>O FreeBSD 2.1.7 foi a &uacute;ltima vers&atilde;o do
sistema que rodava com apenas 4MB de mem&oacute;ria. A
partir do FreeBSD 2.2, &eacute; necess&aacute;rio no
m&iacute;nimo 5MB de mem&oacute;ria para usar o
sistema.</para>
<para>Praticamente todas as vers&otilde;es do FreeBSD podem
<emphasis>rodar</emphasis> com 4MB de mem&oacute;ria RAM,
contudo, a instala&ccedil;&atilde;o do sistema operacional
n&atilde;o pode ser feita com apenas 4MB. Voc&ecirc; pode
colocar mais mem&oacute;ria para o processo de
instala&ccedil;&atilde;o do sistema, e depois de
instalado, voltar a m&aacute;quina para apenas 4MB de
mem&oacute;ria, ou como alternativa, instale o seu disco
r&iacute;gido em uma m&aacute;quina com mais de 4MB,
efetue a instala&ccedil;&atilde;o do sistema, e depois
instale o seu disco de volta na m&aacute;quina com apenas
4MB.</para>
<para>O FreeBSD 2.1.7 n&atilde;o ir&aacute; instalar em
sistemas que usam 640 Kb de mem&oacute;ria base + 3 MB de
mem&oacute;ria extendida. Se sua placa m&atilde;e pode
fazer o remapeamento da mem&oacute;ria
<quote>subutilizada</quote> que vai sobrar dos 640kB da
regi&atilde;o de 1MB, ai sim, voc&ecirc; vai conseguir
usar o FreeBSD 2.1.7. Entre no Setup da sua BIOS, procure
a op&ccedil;&atilde;o ``remap'' e habilite-a. Talvez
voc&ecirc; tenha que desabilitar a op&ccedil;&atilde;o de
ROM shadowing. Com certeza &eacute; mais f&aacute;cil
voc&ecirc; conseguir mais 4MB apenas para a
instala&ccedil;&atilde;o, compilar um
<foreignphrase>kernel</foreignphrase> customizado e
portanto menor, e ai sim, tirar esses 4MB sobresalentes e
usar o sistema com apenas os 4MB originais. Tamb&eacute;m
&eacute; poss&iacute;vel instalar o FreeBSD 2.0.5 e depois
<quote>atualiz&aacute;-lo</quote> para o 2.1.7 com a
op&ccedil;&atilde;o ``upgrade'' dispon&iacute;vel no
programa de instala&ccedil;&atilde;o do FreeBSD
2.1.7.</para>
<para>Depois de instalado o sistema, voc&ecirc; pode
compilar um <foreignphrase>kernel</foreignphrase>
personalizado, que provavelmente ir&aacute; permitir que o
sistema seja usado com 4MB de mem&oacute;ria apenas.
Existem relatos de sucesso na utiliza&ccedil;&atilde;o do
sistema com apenas 2MB de mem&oacute;ria, contudo, nesse
caso &eacute; praticamente imposs&iacute;vel usar alguma
outra aplica&ccedil;&atilde;o junto ao sistema
operacional.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="custom-boot-floppy">
<para>Como eu crio meu pr&oacute;prio disquete de
instala&ccedil;&atilde;o?</para>
</question>
<answer>
<para>Atualmente n&atilde;o existe uma forma de
<emphasis>simplesmente criar</emphasis> um disco de
instala&ccedil;&atilde;o personalizado. Para criar um
disquete personalizado voc&ecirc; ter&aacute; que preparar
todo um novo <literal>release</literal>, o qual, a&iacute;
sim, teria instru&ccedil;&otilde;es de
instala&ccedil;&atilde;o.</para>
<para>Para montar um <literal>release</literal>
personalizado siga as instru&ccedil;&otilde;es do artigo
de <ulink
url="../../articles/releng/article.html">Engenharia de
<literal>Release</literal></ulink> article.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="multiboot">
<para>Posso ter mais de um sistema operacional no meu PC?</para>
</question>
<answer>
<para>De uma olhada na p&aacute;gina de <ulink URL="../../articles/multi-os/index.html">m&uacute;ltiplos-SO</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="windows-coexist">
<para>O Windows 95/98 pode co-existir com o FreeBSD?</para>
</question>
<answer>
<para>Sim. Primeiro voc&ecirc; deve instalar o seu Windows,
e depois instalar o FreeBSD. O gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do FreeBSD vai ser
instalado na MBR do seu disco, e vai conseguir controlar o
inicializa&ccedil;&atilde;o entre o FreeBSD e seu Windows.
Se voc&ecirc; instalar o Windows depois do FreeBSD, a
instala&ccedil;&atilde;o dele ir&aacute; sobrescrever o
setor de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do seu disco, e
conseq&uuml;entemente seu gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>), sem avisar ou pedir
qualquer confirma&ccedil;&atilde;o. Se esse for o caso,
leia a pr&oacute;xima se&ccedil;&atilde;o.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="win95-damaged-boot-manager">
<para>O Windows 95/98 sobrescreveu meu gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>)! Como eu instalo ele
de volta?</para>
</question>
<answer>
<para>Voc&ecirc; pode reinstalar o gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do FreeBSD de uma
das 3 maneiras:</para>
<itemizedlist>
<listitem>
<para>Sob o DOS, entre no diret&oacute;rio tools/ da sua
distribui&ccedil;&atilde;o do FreeBSD (seu CDROM por
exemplo) e procure o programa
<filename>bootinst.exe</filename>. Depois, execute-o
da seguinte forma:</para>
<screen><prompt>...\TOOLS&gt;</prompt> <userinput>bootinst.exe boot.bin</userinput></screen>
<para>e o gerenciador de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) ser&aacute;
reinstalado.</para>
</listitem>
<listitem>
<para>Fa&ccedil;a a inicializa&ccedil;&atilde;o do
FreeBSD pelos disquetes de instala&ccedil;&atilde;o ou
pelo CDROM novamente. Entre na op&ccedil;&atilde;o
&quot;Custom&quot; do menu de
instala&ccedil;&atilde;o, escolha a o &iacute;tem de
parti&ccedil;&otilde;es (Partition), selecione o drive
do disco que continha o seu gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) (normalmente, se
trata do primeiro disco) e ent&atilde;o voc&ecirc;
entra no editor de parti&ccedil;&otilde;es. N&atilde;o
fa&ccedil;a nenhuma altera&ccedil;&atilde;o, apenas
aperte a tecla W (Write). O programa de
instala&ccedil;&atilde;o ir&aacute; pedir a
confirma&ccedil;&atilde;o, se voc&ecirc; quer gravar
suas informa&ccedil;&otilde;es mesmo sem ter feito
nenhuma altera&ccedil;&atilde;o. Escolha Sim. O
programa ir&aacute; perguntar se voc&ecirc; deseja
instalar o gerenciador de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do FreeBSD ou se
voc&ecirc; deseja deixar o setor de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) intacto (ou
instalar um setor de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) padr&atilde;o)
exatamente como no instante da primeira
instala&ccedil;&atilde;o do FreeBSD. Escolha
<quote>Boot Manager</quote>. Agora o gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) ser&aacute;
reinstalado no disco. Saia do programa de
instala&ccedil;&atilde;o e reinicie o processo de
inicializa&ccedil;&atilde;o pelo HD
normalmente.</para>
</listitem>
<listitem>
<para>Inicie o FreeBSD com o disquete (ou CD) de
inicializa&ccedil;&atilde;o tradicional, escolha a
op&ccedil;&atilde;o <quote>Fixit</quote> no menu do
sysinstall. Escolha entre o disquete de
corre&ccedil;&atilde;o ou o segundo CDROM (a
op&ccedil;&atilde;o <quote>live</quote> na
distribui&ccedil;&atilde;o padr&atilde;o do FreeBSD)
no menu a seguir, e entre na shell de
corre&ccedil;&atilde;o do sistema. Em seguida execute
o comando:</para>
<screen><prompt>Fixit#</prompt> <userinput>fdisk -B -b /boot/boot0 <replaceable>bootdevice</replaceable></userinput></screen>
<para>substituindo <replaceable>bootdevice</replaceable>
pela device controladora do seu disco, como por
exemplo, <devicename>ad0</devicename> (para o primeiro
disco IDE),<devicename>ad4</devicename> (para o
primeiro disco IDE na controladora secund&aacute;ria),
<devicename>da0</devicename> (para o primeiro disco
SCSI), etc.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="boot-on-thinkpad">
<para>O meu IBM Thinkpad s&eacute;rie A, T ou X trava
sempre, quando eu tento inicializar
(<foreignphrase>boot</foreignphrase>) o FreeBSD. Como eu
resolvo isso?</para>
</question>
<answer>
<para>Um bug nas primeiras vers&otilde;es da BIOS da IBM
nessas m&aacute;quinas, erroneamente identifica as
parti&ccedil;&otilde;es FreeBSD como
parti&ccedil;&otilde;es FAT especiais. Quando a BIOS
tenta reconhecer a parti&ccedil;&atilde;o FreeBSD, o
sistema trava.</para>
<para>De acordo com a IBM<footnote><para>Em um e-mail
enviado por Keith Frechettei
<email>kfrechet@us.ibm.com</email>.</para></footnote>,
os seguintes modelos/BIOS tem esse problema
corrigido:</para>
<informaltable frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Modelo</entry>
<entry>Revis&atilde;o da BIOS</entry>
</row>
</thead>
<tbody>
<row>
<entry>T20</entry>
<entry>IYET49WW ou posterior</entry>
</row>
<row>
<entry>T21</entry>
<entry>KZET22WW ou posterior</entry>
</row>
<row>
<entry>A20p</entry>
<entry>IVET62WW ou posterior</entry>
</row>
<row>
<entry>A20m</entry>
<entry>IWET54WW ou posterior</entry>
</row>
<row>
<entry>A21p</entry>
<entry>KYET27WW ou posterior</entry>
</row>
<row>
<entry>A21m</entry>
<entry>KXET24WW ou posterior</entry>
</row>
<row>
<entry>A21e</entry>
<entry>KUET30WW</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>Existem relatos de que as revis&otilde;es posteriores
das BIOS IBM re-introduziram esse bug. <ulink
url="http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=200565+208320+/usr/local/www/db/text/2001/freebsd-mobile/20010429.freebsd-mobile">Essa
mensagem</ulink> enviada por Jacques Vidrine para a
&a.mobile; descreve uma s&eacute;rie de procedimentos que
podem funcionar no seu laptop IBM, caso seja uma
vers&atilde;o um pouco mais nova, e que n&atilde;o consiga
inicializar (<foreignphrase>boot</foreignphrase>) o
FreeBSD corretamente. Voc&ecirc; pode ainda fazer uma
atualiza&ccedil;&atilde;o ou desatualiza&ccedil;&atilde;o
(upgrade ou downgrade) da BIOS.</para>
<para>Se a BIOS &eacute; mais antiga, e voc&ecirc;
n&atilde;o considera sua atualiza&ccedil;&atilde;o, existe
uma op&ccedil;&atilde;o que pode sanar seu problema. A
instala&ccedil;&atilde;o do FreeBSD pode ser feita
alterando-se a identifica&ccedil;&atilde;o da
parti&ccedil;&atilde;o (partition ID) do sistema, e depois
instalar novos setores de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) que podem controlar
uma partition ID diferente.</para>
<para>O primeiro passo &eacute; restaurar o seu laptop ao
ponto onde ele pode fazer os auto-testes, ou seja, os
testes b&aacute;sicos de I/O da BIOS. Para fazer isso,
basta ligar o computador de forma que ele n&atilde;o
consiga encontrar a parti&ccedil;&atilde;o prim&aacute;ria
do FreeBSD. A maneira mais simples de faze-lo, &eacute;
retirando o disco r&iacute;gido do seu laptop, e
temporariamente ligando-o em um ThinkPad mais antigo (como
oThinkPad 600) ou em um PC comum, com um cabo de
convers&atilde;o apropriado. Uma vez feito isso, basta
apagar a parti&ccedil;&atilde;o 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.</para>
<para>Com a m&aacute;quina funcionando, basta seguir as
pr&oacute;ximas instru&ccedil;&otilde;es para fazer o seu
FreeBSD instalar:</para>
<procedure>
<step>
<para>Baixe da rede os arquivos
<filename>boot1</filename> e
<filename>boot2</filename> no site <ulink
url="http://people.FreeBSD.org/~bmah/ThinkPad/">http://people.FreeBSD.org/~bmah/ThinkPad/</ulink>.
Coloque esses arquivos em algum lugar onde voc&ecirc;
possa acess&aacute;-los posteriormente.</para>
</step>
<step>
<para>Instale o FreeBSD normalmente no ThinkPad.
<emphasis>N&atilde;o</emphasis> use o modo
<literal>Dangerously Dedicated</literal>.
<emphasis>N&atilde;o</emphasis> reinicie o sistema
quando o processo de instala&ccedil;&atilde;o for
conclu&iacute;do.</para>
</step>
<step>
<para>V&aacute; para a <quote>Shell Hologr&aacute;fica
de Emerg&ecirc;ncia</quote> (<keycombo
action="simul"><keycap>ALT</keycap>
<keycap>F4</keycap></keycombo>) ou inicie uma shell
de recupera&ccedil;&atilde;o -
<quote>fixit</quote></para>
</step>
<step>
<para>Use o &man.fdisk.8; para alterar a partition ID de
<literal>165</literal> para <literal>166</literal>
(166 &eacute; o ID usado pelo OpenBSD).</para>
</step>
<step>
<para>Coloque os arquivos <filename>boot1</filename> e
<filename>boot2</filename> no sistema de arquivos
local.
</step>
<step>
<para>Use o &man.disklabel.8; para escrever o
<filename>boot1</filename> e o
<filename>boot2</filename> na sua
parti&ccedil;&atilde;o FreeBSD.</para>
<screen>&prompt.root; <userinput>disklabel -B -b boot1 -s boot2 ad0s<replaceable>n</replaceable></userinput></screen>
<para><replaceable>n</replaceable> &eacute; o
n&uacute;mero da parti&ccedil;&atilde;o onde o FreeBSD
est&aacute; instalado.</para>
</step>
<step>
<para>Reinicie o sistema. O gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>)
oferecer&aacute; a op&ccedil;&atilde;o de iniciar o
<literal>OpenBSD</literal>, mas na verdade essa
op&ccedil;&atilde;o estar&aacute; iniciando o
FreeBSD.</para>
</step>
</procedure>
<para>Agora, se voc&ecirc; quer manter os sistemas
operacionais OpenBSD e FreeBSD no mesmo laptop ThinkPad,
pode considerar isso um exerc&iacute;cio pr&aacute;tico
que fica a crit&eacute;rio do leitor.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="install-bad-blocks">
<para>Posso instalar o FreeBSD em um disco com bad
blocks?</para>
</question>
<answer>
<para>At&eacute; a vers&atilde;o 3.0, o FreeBSD tinha um
utilit&aacute;rio chamado <command>bad144</command>, que
automaticamente remapeava os bad blocks. Atualmente, os
discos IDE modernos s&atilde;o capazes de fazer isso
sozinhos, portanto o <command>bad144</command> foi
retirado da &aacute;rvore do FreeBSD. Se sua
inten&ccedil;&atilde;o &eacute; instalar o FreeBSD 3.0 ou
alguma vers&atilde;o mais recente, n&oacute;s sinceramente
aconselhamos que voc&ecirc; compre um novo disco. Se
voc&ecirc; n&atilde;o quer comprar um disco novo,
ent&atilde;o use o FreeBSD 2.X.</para>
<para>Se voc&ecirc; esta tendo problemas de bad block com
algum disco IDE moderno, provavelmente o disco ser&aacute;
perdido em breve, j&aacute; que ele est&aacute; t&atilde;o
corrompido que a controladora interna n&atilde;o
est&aacute; conseguindo corrigir e remapear os bad blocks.
Sugerimos que voc&ecirc; compre um disco novo logo, e
realize c&oacute;pia de seguran&ccedil;a
(<foreignphrase>backup</foreignphrase>) dos dados,
enquanto o disco ainda funciona.</para>
<para>Se o drive de disco &eacute; SCSI e est&aacute;
apresentando bad blocks, leia <link linkend="awre">essa
resposta</link>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="bad144-3x-4x">
<para>Eu acabei de atualizar o sistema da s&eacute;rie 3.X
para 4.X, e a minha primeira inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) falhou com a
mensagem <errorname>bad sector table not
supported</errorname></para>
</question>
<answer>
<para>O FreeBSD 3.X e anteriores suportavam o programa
<command>bad144</command>, que automaticamente remapeava
bad blocks. O FreeBSD 4.X e posteriores n&atilde;o
suportam mais esse programa, devido ao fato que os
controladores de discos IDE atuais conseguem remapear bad
blocks automaticamente. Leia <link
linkend="install-bad-blocks">essa pergunta</link> para
mais informa&ccedil;&otilde;es.</para>
<para>Para corrigir esse problema depois de uma
atualiza&ccedil;&atilde;o, &eacute; necess&aacute;rio
mover fisicamente o disco com problemas para um outro
sistema FreeBSD funcional e usar o &man.disklabel.8; da
forma discutida a seguir.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="find-bad144">
<para>Como eu fa&ccedil;o se um disco tem
informa&ccedil;&otilde;es criadas pelo
<command>bad144</command> antes de atualizar o sistema, e
depois de atualizado para o FreeBSD 4.0 ou posterior, a
inicializa&ccedil;&atilde;o falha?</para>
</question>
<answer>
<para>Use o &man.disklabel.8; para identificar esse ambiente.
<command>disklabel -r <replaceable>drive
device</replaceable></command> vai te mostrar o
conte&uacute;do do disco. Procure o campo
<literal>flags</literal>. Se encontrar a
informa&ccedil;&atilde;o <literal>flags: badsect</literal>
&eacute; porque esse disco est&aacute; usando o bad144.
Por exemplo, o disco a seguir tem o
<command>bad144</command> habilitado:</para>
<screen>&prompt.root; disklabel -r wd0
# /dev/rwd0c:
type: ESDI
disk: wd0s1
label:
flags: badsect
bytes/sector: 512
sectors/track: 63</screen>
</answer>
</qandaentry>
<qandaentry>
<question id="disable-bad144">
<para>Como eu removo o <command>bad144</command> do meu
sistema anterior ao 4.X de forma que eu possa
atualiz&aacute;-lo com seguran&ccedil;a?</para>
</question>
<answer>
<para>Use o comando <command>disklabel -e -rwd0</command>
para editar as informa&ccedil;&otilde;es do seu disco.
Basta retirar a palavra <literal>badsect</literal> do seu
campo flags, salvar a altera&ccedil;&atilde;o e sair do
programa. O bad144 ainda estar&aacute; ocupando algum
espa&ccedil;o no seu disco, mas ele estar&aacute;
funcional para s&eacute;rie 4.X e posteriores.</para>
<para>Caso seu disco tenha um n&uacute;mero muito alto de
bad blocks, &eacute; recomendado a troca do disco.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="boot-floppy-strangeness">
<para>Coisas estranhas acontecem quando inicio o sistema com
o disco de instala&ccedil;&atilde;o! O que est&aacute;
acontecendo?</para>
</question>
<answer>
<para>Se sua m&aacute;quina est&aacute; desligando ou
espont&acirc;neamente reiniciando sempre que voc&ecirc;
tenta iniciar o sistema com o disco de
instala&ccedil;&atilde;o, aqui v&atilde;o algumas
perguntas que voc&ecirc; deveria fazer a si mesmo:</para>
<orderedlist>
<listitem>
<para>O disco de instala&ccedil;&atilde;o foi feito a
partir de um disquete novo, rec&eacute;m formatado e
completamente livre de erros (de prefer&ecirc;ncia
algum disco que acabou de sair da caixa, ao
contr&aacute;rio desse seu disco que estava perdido
h&aacute; quase 3 anos debaixo da cama)?</para>
</listitem>
<listitem>
<para>Voc&ecirc; baixou da rede a imagem em modo
bin&aacute;rio? (n&atilde;o se envergonhe, at&eacute;
o melhor de n&oacute;s j&aacute; baixou um arquivo
bin&aacute;rio em modo ASCII ao menos uma vez na
vida!)</para>
</listitem>
<listitem>
<para>No Windows 95 ou 98, voc&ecirc; usou o
<command>fdimage</command> ou o
<command>rawrite</command> 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 cria&ccedil;&atilde;o
da imagem de disco faz, mesmo que voc&ecirc; execute
um prompt do DOS no ambiente gr&aacute;fico o problema
pode ocorrer.</para>
</listitem>
</orderedlist>
<para>Ainda existem not&iacute;cias de arquivos de imagens
sendo corrompidos pelo Netscape, durante o
<foreignphrase>download</foreignphrase>, por isso &eacute;
mais seguro utilizar um cliente de FTP diferente.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="no-install-cdrom">
<para>Eu inicializei o FreeBSD a partir do meu CDROM ATAPI,
mas o programa de instala&ccedil;&atilde;o diz que o CDROM
n&atilde;o foi encontrado. Para onde ele foi?</para>
</question>
<answer>
<para>A causa desse problema curioso &eacute; a
configura&ccedil;&atilde;o 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 &oacute;ptico do tipo mestre na mesma controladora.
De acordo com as especifica&ccedil;&otilde;es ATAPI esse
tipo de configura&ccedil;&atilde;o &eacute; incorreta e
ilegal. Alguns sistemas, como o Windows, simplesmente
ignoram uma s&eacute;rie de especifica&ccedil;&otilde;es
legais na arquitetura de computadores pessoais, e acabam
oferecendo suporte a essa configura&ccedil;&atilde;o
err&ocirc;nea - 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 n&atilde;o
consegue encontr&aacute;-lo, para completar a
instala&ccedil;&atilde;o.</para>
<para>Reconfigure o seu computador de forma que o CDROM
esteja como mestre na sua controladora IDE, ou que exista
um outro perif&eacute;rico como mestre na controladora
onde o CD estiver como escravo.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="install-PLIP">
<para>Posso instalar o FreeBSD no meu laptop via PLIP (IP em
Linha Paralela)?</para>
</question>
<answer>
<para>Claro. Use o cabo laplink padr&atilde;o. Caso
necess&aacute;rio, verifique a <ulink
url="../handbook/plip.html">se&ccedil;&atilde;o de
PLIP</ulink> do &a.ptbr.p.handbook; para obter detalhes
sobre a instala&ccedil;&atilde;o do FreeBSD via rede em
porta paralela.</para>
<para>Se voc&ecirc; est&aacute; usando o FreeBSD 3.X ou
anterior, d&ecirc; uma olhada na p&aacute;gina de <ulink
url="http://www.FreeBSD.org/docs.html#PAO">Computa&ccedil;&atilde;o
M&oacute;vel</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="geometry">
<para>Qual geometria eu devo utilizar para um disco?
</question>
<answer>
<note>
<para>Por <quote>geometria</quote>, n&oacute;s entendemos
o n&uacute;mero de cilindros, cabe&ccedil;as e
setores/trilhas de um disco. Por conveni&ecirc;ncia,
vamos nos referir &agrave; esses dados como C/H/S
(Cylinders/Heads/Sectores). &Eacute; a partir dessa
informa&ccedil;&atilde;o que a BIOS dos PCs definem
quais &aacute;reas de um disco podem ser usadas para
leitura/escrita.</para>
</note>
<para>A geometria de disco costuma causar uma s&eacute;rie
de confus&otilde;es entre administradores de sistemas
menos experientes. Para come&ccedil;ar, a geometria
<emphasis>f&iacute;sica</emphasis> de um disco SCSI
&eacute; totalmente irrelevante, pois o FreeBSD trabalha
com blocos de discos. Na verdade, n&atilde;o existe
exatamente <quote>a</quote> geometria f&iacute;sica de um
disco, visto que a densidade de um setor varia de acordo
com os discos. Os fabricantes chamam de <quote>geometria
f&iacute;sica</quote> as especifica&ccedil;&otilde;es
que eles definem para que o menor espa&ccedil;o
poss&iacute;vel em disco seja desperdi&ccedil;ado. Em
discos IDE, o FreeBSD trabalha com as
informa&ccedil;&otilde;es de C/H/S, mas todos os
dispositivos modernos, internamente convertem essa
informa&ccedil;&otilde;es em refer&ecirc;ncias a blocos de
disco.</para>
<para>O que importa, portanto, &eacute; a geometria
<emphasis>l&oacute;gica</emphasis>. O valor l&oacute;gico
&eacute; a resposta que a BIOS obt&eacute;m quando
pergunto <quote>qual sua geometria?</quote> ao disco.
&Eacute; esse valor, ent&atilde;o, que &eacute; usado para
definir a forma de acesso ao dispositivo de armazenamento.
O FreeBSD usa as informa&ccedil;&otilde;es da BIOS quando
inicializa (<foreignphrase>boot</foreignphrase>), e por
isso &eacute; extremamente importante obter essa
informa&ccedil;&atilde;o de maneira correta. No geral, se
voc&ecirc; tem mais de um sistema operacional no mesmo
disco, eles devem concordar no valor l&oacute;gico da
geometria do disco, caso contr&aacute;rio voc&ecirc;
ter&aacute; s&eacute;rios problemas ao iniciar o
sistema.</para>
<para>Em discos SCSI, a geometria &agrave; ser utilizada
depende do suporte &agrave; tradu&ccedil;&atilde;o
extendida definido na sua controladora de disco
(normalmente esse suporte &eacute; chamado de
<quote>support for DOS disks &gt;1GB</quote>, que
identifica o suporte &agrave; discos DOS cuja capacidade
de armazenamento &eacute; maior que 1GB - ou alguma
identifica&ccedil;&atilde;o similar.). Se essa
op&ccedil;&atilde;o est&aacute; desabilitada, ent&atilde;o
o C/H/S do disco ser&aacute; de
<replaceable>N</replaceable> cilindros, 64 cabe&ccedil;as
e 32 setores/trilhas, onde o valor
<replaceable>N</replaceable> equivale a capacidade (em MB)
do disco. Por exemplo, um disco de 2GB teria 2048
cilindros, 64 cabe&ccedil;as e 32 setores/trilhas.</para>
<para>Se a op&ccedil;&atilde;o <emphasis>estiver</emphasis>
habilitada (normalmente ela &eacute; habilitada por
padr&atilde;o, para sanar algumas limita&ccedil;&otilde;es
de sistemas baseados em MSDOS), e a capacidade do disco
forma maior que 1GB, os valores C/H/S do disco
ser&atilde;o M cilindros, 63 setores por trilha
(<emphasis>n&atilde;o</emphasis> 64) e 255 cabe&ccedil;as,
sendo 'M' a capacidade do disco, em MB, dividido por
7.844238 (!). Ent&atilde;o, por exemplo, o mesmo disco de
2GB nessa situa&ccedil;&atilde;o teria 261 cilindros, 63
setores por trilha e 255 cabe&ccedil;as.</para>
<para>Se voc&ecirc; n&atilde;o entendeu o porque disso, ou
se o seu FreeBSD falha no momento de reconhecer a
geometria correta do seu disco durante a
instala&ccedil;&atilde;o, existe uma forma de tentar
resolver esse problema. Crie uma pequena
parti&ccedil;&atilde;o do tipo DOS no seu disco, e
verifique se a BIOS consegue identificar corretamente a
geometria do mesmo. Caso consiga, a
instala&ccedil;&atilde;o vai se completar com
tranq&uuml;ilidade, e a pequena parti&ccedil;&atilde;o DOS
pode sempre ser deletada, com o editor de
parti&ccedil;&otilde;es do FreeBSD.</para>
<para>Como alternativa, existe uma aplica&ccedil;&atilde;o
gratuitamente dispon&iacute;vel com a
distribui&ccedil;&atilde;o do FreeBSD, chamada de
<filename>pfdisk.exe</filename>. Ela pode ser encontrada
sob o diret&oacute;rio <filename>tools</filename> 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
parti&ccedil;&otilde;es do FreeBSD.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="disk-divide-restrictions">
<para>Existem restri&ccedil;&otilde;es quanto ao
particionamento de discos?</para>
</question>
<answer>
<para>Sim, existem. A principal delas, &eacute; que a
parti&ccedil;&atilde;o <quote>root</quote> n&atilde;o pode
ter mais de 1024 cilindros, sen&atilde;o a BIOS n&atilde;o
consegue iniciar o <foreignphrase>kernel</foreignphrase>
do sistema a partir dessa parti&ccedil;&atilde;o. (Note
que essa &eacute; uma limita&ccedil;&atilde;o das BIOS dos
computadores pessoais, e n&atilde;o do FreeBSD).</para>
<para>Em um disco SCSI, essa limita&ccedil;&atilde;o implica
que a parti&ccedil;&atilde;o raiz (root) deve estar
alocada nos primeiros 1024MB do disco (ou nos primeiros
4096MB, caso o suporte a tradu&ccedil;&atilde;o extendida
esteja habilitada - veja pergunta anterior). Em discos
IDE, o valor correspondente equivale a 504MB para
parti&ccedil;&atilde;o raiz (root).</para>
</answer>
</qandaentry>
<qandaentry>
<question id="disk-manager">
<para>O FreeBSD suporta programas gerenciadores de
discos?</para>
</question>
<answer>
<para>O FreeBSD reconhece apenas o <quote>Ontrack Disk
Manager</quote>. Outros gerenciadores de discos
n&atilde;o s&atilde;o suportados.</para>
<para>Se sua inten&ccedil;&atilde;o &eacute; usar o disco
com FreeBSD, voc&ecirc; n&atilde;o precisa de um
gerenciador de discos. Basta configurar o disco para o
total de espa&ccedil;o que a BIOS reconhece (normalmente
504MB) e o FreeBSD vai conseguir identificar o tamanho
real do disco. Se voc&ecirc; estiver usando um disco
antigo com uma controladora MFM, ser&aacute;
necess&aacute;rio avisar ao FreeBSD quantos cilindros o
disco tem.</para>
<para>Caso queira usar o disco com FreeBSD e algum outro
sistema operacional, provavelmente tamb&eacute;m
n&atilde;o ser&aacute; necess&aacute;rio um gerenciador de
discos. Certifique-se apenas que a parti&ccedil;&atilde;o
de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do FreeBSD e a
parti&ccedil;&atilde;o do outro sistema operacional
estejam nos primeiros 1024 cilindros do disco.
Normalmente, para administradores de sistemas que tomam
decis&otilde;es racionais, 20MB de espa&ccedil;o em uma
parti&ccedil;&atilde;o de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) &eacute; mais que o
suficiente.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="missing-os">
<para>Quando eu inicio o FreeBSD, eu obtenho a mensagem
<errorname>Missing Operating System</errorname>. O que
est&aacute; acontecendo?</para>
</question>
<answer>
<para>Esse &eacute; um caso t&oacute;pico do FreeBSD e o DOS
ou qualquer outro sistema operacional discordando de suas
defini&ccedil;&otilde;es em rela&ccedil;&atilde;o a <link
linkend="geometry">geometria</link> do disco.
Provavelmente voc&ecirc; ter&aacute; que reinstalar o
FreeBSD, mas se seguir as instru&ccedil;&otilde;es citadas
nas perguntas anteriores, raramente esse problema vai
acontecer.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="stop-at-boot-manager">
<para>Porque eu n&atilde;o consigo passar da tela
<prompt>F?</prompt> do gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>)?</para>
</question>
<answer>
<para>Esse &eacute; mais um sintoma do problema descrito na
pergunta anterior. A geometria que a sua BIOS reconhece
n&atilde;o equivale ao valor definido no FreeBSD! Se a sua
controladora de disco ou sua BIOS suportam o modo de
tradu&ccedil;&atilde;o de cilindros (normalmente chamado
de <quote>&gt;1GB drive support</quote>), tente alterar
essa op&ccedil;&atilde;o e reinstalar o FreeBSD.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="need-complete-sources">
<para>Eu preciso instalar todos os fontes do sistema
operacional?</para>
</question>
<answer>
<para>Geralmente n&atilde;o, mas &eacute; altamente
recomend&aacute;vel que voc&ecirc; instale ao menos os
fontes <literal>base</literal>, que incluem
in&uacute;meros arquivos mencionados ao longo desse
documento, como as fontes do sistema,
<literal>sys</literal> que inclui as fontes do
<foreignphrase>kernel</foreignphrase> do FreeBSD, sem os
quais n&atilde;o se pode criar um
<foreignphrase>kernel</foreignphrase> personalizado.
N&atilde;o existe qualquer depend&ecirc;ncia do sistema
operacional em rela&ccedil;&atilde;o aos seus fontes; com
a &uacute;nica exce&ccedil;&atilde;o do programa
&man.config.8;, o resto do sistema operacional n&atilde;o
precisa dos fontes para funcionar. Os outros fontes do
sistema operacional - exceto os fontes do
<foreignphrase>kernel</foreignphrase> - podem ser montados
remotamente (via NFS, por exemplo) em qualquer lugar, e
ainda assim novos bin&aacute;rios podem ser compilados a
partir dos mesmos. Devido a restri&ccedil;&atilde;o
&uacute;nica dos fontes do
<foreignphrase>kernel</foreignphrase>, &eacute;
recomend&aacute;vel que os outros fontes n&atilde;o sejam
diretamente montados sob <filename>/usr/src</filename> mas
sim, que sejam montados separadamente e depois
interligados com links simb&oacute;licos
apropriados.</para>
<para>Tendo todos os fontes dispon&iacute;veis, e sabendo
reconstruir o sistema a partir dos mesmos, ser&aacute;
muito mais f&aacute;cil manter o FreeBSD sincronizado e
atualizado com futuros releases.</para>
<para>Para escolher um subconjunto dos fontes do sistema,
escolha a op&ccedil;&atilde;o <literal>Custom</literal>
quando estiver na op&ccedil;&atilde;o
<literal>Distributions</literal> do programa de
instala&ccedil;&atilde;o do sistema.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="need-kernel">
<para>Eu preciso criar um
<foreignphrase>kernel</foreignphrase>
personalizado?</para>
</question>
<answer>
<para>Construir um novo
<foreignphrase>kernel</foreignphrase> costumava ser uma
obriga&ccedil;&atilde;o na instala&ccedil;&atilde;o do
FreeBSD, mas hoje em dia existe uma interface de
configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase> muito mais
amig&aacute;vel, que permite a redefini&ccedil;&atilde;o
de recursos do sistema. Para acessar essa ferramenta,
basta inicializar (<foreignphrase>boot</foreignphrase>) o
sistema com a op&ccedil;&atilde;o <option>-c</option> no
prompt de (<literal>boot:</literal>). Em especial, os
principais perif&eacute;ricos ISA - normalmente os mais
problem&aacute;ticos - podem ser facilmente configurados
com essa op&ccedil;&atilde;o.</para>
<para>Ainda &eacute; recomend&aacute;vel que se construa um
<foreignphrase>kernel</foreignphrase> personalizado,
apenas com suporte aos equipamentos e
caracter&iacute;sticas do sistema que voc&ecirc; precisa,
de forma a economizar recursos no sistema (especialmente
mem&oacute;ria RAM), mas essa recompila&ccedil;&atilde;o
n&atilde;o &eacute; mais uma obriga&ccedil;&atilde;o na
maioria dos sistemas - mas &eacute; sem d&uacute;vida um
h&aacute;bito saud&aacute;vel.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="password-encryption">
<para>Eu devo usar criptografia DES, Blowfish, ou MD5 para
senhas do sistema? Como eu defino qual delas o
usu&aacute;rio deve usar?</para>
</question>
<answer>
<para>O formato padr&atilde;o para senhas no FreeBSD
&eacute; a criptografia <emphasis>MD5</emphasis>. Esse
padr&atilde;o &eacute; considerado mais seguro do que os
formatos tradicionais de senhas Unix, que normalmente eram
baseados no algor&iacute;timo <emphasis>DES</emphasis>. O
FreeBSD ainda pode trabalhar com senhas em formato DES
caso voc&ecirc; precise compartilh&aacute;-las com
sistemas que ainda armazenam suas senhas no formato antigo
- e menos seguro - dos sistemas Unix originais (para isso
voc&ecirc; ter&aacute; que instalar a
distribui&ccedil;&atilde;o <quote>crypto</quote> via
sysinstall ou apartir do c&oacute;digo fonte). Instalando
as bibliotecas crypto ser&aacute possivel utilizar outros
tipos de criptografia, como o formato Blowfish, que
&eacute; ainda mais seguro do que o MD5. A
defini&ccedil;&atilde;o de qual codifica&ccedil;&atilde;o
utilizar &eacute; definida no campo
<quote>passwd_format</quote> do arquivo de
configura&ccedil;&otilde;es de login, o
<filename>/etc/login.conf</filename>. Esse campo deve ter
o valor <quote>des</quote>, <quote>blf</quote> (caso suas
bibliotecas estejam dispon&iacute;veis) ou
<quote>md5</quote>. Veja a p&aacute;gina de manuais do
&man.login.conf.5; para maiores
informa&ccedil;&otilde;es.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="boot-floppy-hangs">
<para>Por que o disco de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) inicia, mas trava na
tela <literal>Probing Devices...</literal>?</para>
</question>
<answer>
<para>Se voc&ecirc; tem um drive Zip IDE ou um Jaz conectado
ao seu computador, remova-o e tente de novo. A
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) de
instala&ccedil;&atilde;o do sistema se confunde as vezes
quando esses dispositivos est&atilde;o dispon&iacute;veis
no computador. Depois da instala&ccedil;&atilde;o os
drives s&atilde;o reconhecidos e controlados normalmente.
Provavelmente - esperamos - esse problema ser&aacute;
corrigido nas pr&oacute;ximas vers&otilde;es.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="panic-on-install-reboot">
<para>Por que ocorre o erro <errorname>panic: can't mount
root</errorname>, quando eu reinicio o sistema, depois
de t&ecirc;-lo instalado.</para>
</question>
<answer>
<para>Esse problema costuma ocorrer por conta de uma pequena
confus&atilde;o entre os blocos do setor de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do disco, e as
defini&ccedil;&otilde;es de disco no
<foreignphrase>kernel</foreignphrase>. &Eacute; um erro
t&iacute;pico apenas de sistemas com dois discos IDE,
quando os mesmos est&atilde;o definidos como disco mestre
e escravo, mas em controladoras distintas, e com o FreeBSD
instalado na controladora secund&aacute;ria. Os blocos de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) acham que o sistema
est&aacute; instalado no segundo disco IDE (o segundo
disco reconhecido pela BIOS) enquanto o
<foreignphrase>kernel</foreignphrase> assume o primeiro
disco na segunda controladora IDE. Depois do
reconhecimento dos equipamentos do sistema o
<foreignphrase>kernel</foreignphrase> tenta montar a
parti&ccedil;&atilde;o raiz no disco que o bloco de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) acredita ser o disco
de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>), wd1, ao
inv&eacute;s do disco correto na segunda controladora,
wd2, e por isso o processo de inicializa&ccedil;&atilde;o
falha.</para>
<para>Para corrigir esse problema, voc&ecirc; tem tr&ecirc;s
op&ccedil;&otilde;es:</para>
<orderedlist>
<listitem>
<para>No FreeBSD 3.3 e posteriores, reincie o sistema e
aperte <keycap>Enter</keycap> na tela <literal>Booting
kernel in 10 seconds; hit [Enter] to
interrupt</literal>. Voc&ecirc; ser&aacute;
direcionado ao <literal>boot loader</literal>.</para>
<para>Depois, digite <literal> set
root_disk_unit="<replaceable>disk_number</replaceable>"</literal>.
<replaceable>disk_number</replaceable> dever&aacute;
ser <literal>0</literal> se o FreeBSD estiver
instalado como mestre na primeira controladora IDE,
<literal>1</literal> se for o escravo na primeira
controladora, <literal>2</literal> se for o mestre da
segunda controladora IDE, e <literal>3</literal> se
for o escravo na segunda controladora.</para>
<para>Depois digite <literal>boot</literal>, e seu sistema deve ser iniciado corretamente.</para>
<para>Para tornar essa altera&ccedil;&atilde;o
permanente, (para que voc&ecirc; n&atilde;o tenha que
digitar isso na m&atilde;o toda vez que seu FreeBSD
tiver que reiniciar) basta colocar a linha <literal>
root_disk_unit="<replaceable>disk_number</replaceable>"</literal>
no arquivo
<filename>/boot/loader.conf.local</filename>.</para>
</listitem>
<listitem>
<para>Se voc&ecirc; estiver usando o FreeBSD 3.2 ou
alguma vers&atilde;o anterior, digite
<literal>1:wd(2,a)kernel</literal> na prompt de
inicializa&ccedil;&atilde;o do sistema e aperte
<keycap>Enter</keycap>. Se o sistema iniciar
normalmente, execute o comando <command>echo
"1:wd(2,a)kernel" &gt; /boot.config</command> para
tornar essa altera&ccedil;&atilde;o permanente.</para>
</listitem>
<listitem>
<para>Mude o disco com o FreeBSD para primeira
controladora IDE.</para>
</listitem>
<listitem>
<para><ulink
URL="../handbook/kernelconfig.html">Recompile o
<foreignphrase>kernel</foreignphrase></ulink>,
altere as linhas de configura&ccedil;&atilde;o wd
para: </para>
<programlisting>controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr
disk wd0 at wdc0 drive 0
# disk wd1 at wdc0 drive 1 # comment out this line
controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr
disk wd1 at wdc1 drive 0 # change from wd2 to wd1
disk wd2 at wdc1 drive 1 # change from wd3 to wd2</programlisting>
<para>E instale o novo
<foreignphrase>kernel</foreignphrase>. Se voc&ecirc;
mudou seu disco e quer voltar ele para
configura&ccedil;&atilde;o original, mude a ordem
deles no PC e reinicie o sistema. Seu sistema deve
iniciar com sucesso.</para>
</listitem>
</orderedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="memory-limits">
<para>Quais s&atilde;o as limita&ccedil;&otilde;es de
mem&oacute;ria?</para>
</question>
<answer>
<para>A limita&ccedil;&atilde;o de mem&oacute;ria &eacute;
de 4 gigabytes. Essa defini&ccedil;&atilde;o foi testada,
veja a <ulink
URL="ftp://ftp.cdrom.com/archive-info/configuration">configura&ccedil;&atilde;o
do wcarchive</ulink> para obter mais detalhes. Se
voc&ecirc; pretende instalar essa quantidade de
mem&oacute;ria no FreeBSD, seja cuidadoso. D&ecirc;
prefer&ecirc;ncia para mem&oacute;rias ECC e reduza a
capacidade de carga usando modules de mem&oacute;ria de 9
chips, ai inv&eacute;s dos m&oacute;dulos de 18
chips.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ffs-limits">
<para>Qual a limita&ccedil;&atilde;o para o sistema de
arquivos FFS?</para>
</question>
<answer>
<para>Para o sistema de arquivos FFS, o limite
m&aacute;ximo, na teoria &eacute; de 8 terabytes (para
blocos de 2K), ou 16TB para o tamanho padr&atilde;o dos
blocos, que &eacute; de 8K. Na pr&aacute;tica os limites
variam de 1TB a 4TB de acordo com algumas
modifica&ccedil;&otilde;es no sistema de arquivos.</para>
<para>O tamanho m&aacute;ximo para um arquivo no sistema FFS
&eacute; de 1G de blocos (4TB) caso os blocos sejam de
4K.</para>
<table>
<title>Tamanho m&aacute;ximo dos arquivos.</title>
<tgroup cols="5">
<thead>
<row>
<entry>Tamanho do bloco</entry>
<entry>2.2.7-stable</entry>
<entry>3.0-current</entry>
<entry>Funciona com</entry>
<entry>Deve funcionar</entry>
</row>
</thead>
<tbody>
<row>
<entry>4K</entry>
<entry>4T-1</entry>
<entry>4T-1</entry>
<entry>4T-1</entry>
<entry>&gt;4T</entry>
</row>
<row>
<entry>8K</entry>
<entry>&gt;32G</entry>
<entry>8T-1</entry>
<entry>&gt;32G</entry>
<entry>32T-1</entry>
</row>
<row>
<entry>16K</entry>
<entry>&gt;128G</entry>
<entry>16T-1</entry>
<entry>&gt;128G</entry>
<entry>32T-1</entry>
</row>
<row>
<entry>32K</entry>
<entry>&gt;512G</entry>
<entry>32T-1</entry>
<entry>&gt;512G</entry>
<entry>64T-1</entry>
</row>
<row>
<entry>64K</entry>
<entry>&gt;2048G</entry>
<entry>64T-1</entry>
<entry>&gt;2048G</entry>
<entry>128T-1</entry>
</row>
</tbody>
</tgroup>
</table>
<para>Quando o sistema de arquivos possui blocos de 4K, o
triplo de blocos indiretores funcionam, e o limite
m&aacute;ximo do sistema de arquivos deveria ser atingido,
mas a triplica&ccedil;&atilde;o dos blocos indiretores
(representados aproximadamente pelo resultado de 1K^3 +
1K^2 + 1K) se limita ao valor (err&ocirc;neo) de 1G-1 no
n&uacute;mero de blocos do sistema de arquivos. O limite
do n&uacute;mero de blocos deveria ser 2G-1. Mas por
causa de alguns problemas com o n&uacute;mero dos blocos
no sistema de arquivos, esse valor n&atilde;o pode ser
alcan&ccedil;ado quando o tamanho dos blocos no sistema de
arquivos &eacute; 4K.</para>
<para>Em blocos com tamanho de 8K ou maiores, o limite geral
&eacute; de 2G-1 no n&uacute;mero de blocos do sistema de
arquivos, exceto no FreeBSD -STABLE onde o triplo indireto
do n&uacute;mero de blocos pode ser alcan&ccedil;ado, de
forma que o limite m&aacute;ximo do sistema de arquivos
seja representado pela equa&ccedil;&atilde;o
((blocksize/4)^2 + (blocksize/4)), e sob o -CURRENT onde a
exce&ccedil;&atilde;o desse limite pode causar
problemas.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="archsw-readin-failed-error">
<para>Por que a mensagem de erro
<errorname>archsw.readin.failed</errorname> me perturba
sempre, depois que eu recompilo e carrego um
<foreignphrase>kernel</foreignphrase> novo?</para>
</question>
<answer>
<para>Voc&ecirc; pode carregar um novo
<foreignphrase>kernel</foreignphrase> ao especifica-lo
diretamente no segundo est&aacute;gio do processo de
inicializa&ccedil;&atilde;o, simplesmente apertando
qualquer tecla quando o pipe ( | ) aparecer, antes que o
loader seja carregado. Provavelmente voc&ecirc; atualizou
todo o sistema operacional, mas recompilou apenas o
<foreignphrase>kernel</foreignphrase>, <emphasis>sem dar
um make world</emphasis>. Essa a&ccedil;&atilde;o
&eacute; arriscada e n&atilde;o &eacute; suportada.
Fa&ccedil;a um Make World!!!!</para>
</answer>
</qandaentry>
<qandaentry>
<question id="upgrade-3x-4x">
<para>Como eu atualizo meu sistema da s&eacute;rie 3.X para 4.X?</para>
</question>
<answer>
<para>&Eacute; <emphasis>altamente</emphasis>
recomend&aacute;vel que voc&ecirc; use
<foreignphrase>snapshots</foreignphrase> bin&aacute;rios
para fazer isso. <foreignphrase>Snapshots</foreignphrase>
bin&aacute;rio do 4-STABLE podem ser encontrados em <ulink
URL="ftp://releng4.FreeBSD.org/">ftp://releng4.FreeBSD.org/</ulink>.</para>
<para>Devido &agrave;s in&uacute;meras
altera&ccedil;&otilde;es da s&eacute;rie 3.X para
s&eacute;rie 4-STABLE, uma atualiza&ccedil;&atilde;o
direta, a partir dos fontes, corre grande riscos de
falhar. A atualiza&ccedil;&atilde;o dos fontes pode ser
feita, inclusive desde as prim&oacute;rdias vers&otilde;es
2.X at&eacute; as mais recentes 4-STABLE ou at&eacute;
mesmo 5-CURRENT, mas essa atualiza&ccedil;&atilde;o deve
ser realizada em v&aacute;rios est&aacute;gios. Primeiro,
atualize a sua s&eacute;rie 3.X pra vers&atilde;o mais
recente, a 3-STABLE (<literal>RELENG_3</literal>). Depois
atualize para o 4.1.1-RELEASE
(<literal>RELENG_4_1_1_RELEASE</literal>). Finalmente,
tente atualizar para o 4-STABLE
(<literal>RELENG_4</literal>).</para>
<para>Se voc&ecirc; pretende atualizar seu sistema a partir
dos fontes, por gentileza, refira-se ao <ulink
URL="../handbook/cutting-edge.html">&a.ptbr.p.handbook;</ulink>
para maiores informa&ccedil;&otilde;es.</para>
<caution>
<para>A atualiza&ccedil;&atilde;o direta por meio dos
fontes nunca &eacute; aconselh&aacute;vel para
usu&aacute;rios inexperientes, a
atualiza&ccedil;&atilde;o da s&eacute;rie 3.X para 4.X
portanto &eacute; menos aconselh&aacute;vel ainda,
portanto, caso voc&ecirc; n&atilde;o tenha
experi&ecirc;ncias com esse processo de
atualiza&ccedil;&atilde;o, leia todas as
instru&ccedil;&otilde;es dispon&iacute;veis no
&a.ptbr.p.handbook; com cuidado.</para>
</caution>
</answer>
</qandaentry>
<qandaentry>
<question id="security-profiles">
<para>Onde est&atilde;o essas
<quote>especifica&ccedil;&otilde;es de
seguran&ccedil;a</quote>?</para>
</question>
<answer>
<para>Uma <quote>especifica&ccedil;&atilde;o de
seguran&ccedil;a</quote> se refere a um conjunto de
configura&ccedil;&otilde;es e de op&ccedil;&otilde;es no
sistema, que tendem a garantir um n&iacute;vel
desej&aacute;vel de seguran&ccedil;a, por meio de definir
ou desabilitar algumas op&ccedil;&otilde;es e programas no
FreeBSD. Para maiores detalhes, veja a
se&ccedil;&atilde;o de <ulink
url="../handbook/install-post.html#SECURITYPROFILE">
Especifica&ccedil;&atilde;o de Seguran&ccedil;a</ulink>
no <ulink
url="../handbook/install-post.html">cap&iacute;tulo de
p&oacute;s-instala&ccedil;&atilde;o</ulink> do
&a.ptbr.p.handbook;.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="hardware">
<title>Compatibilidade de Hardware</title>
<qandaset>
<qandaentry>
<question id="architectures">
<para>O FreeBSD suporta outras arquiteturas al&eacute;m da
x86?</para>
</question>
<answer>
<para>Sim. Atualmente o FreeBSD tem suporte para
arquiteturas Intel x86 e DEC (agora Compaq) Alpha.
Tamb&eacute;m existe um interesse conhecido no
<literal>port</literal> FreeBSD para plataforma SPARC.
Caso exista interesse em participar desse projeto ou saber
mais informa&ccedil;&otilde;es sobre
<literal>port</literal> para esta arquitetura, queira
juntar-se &agrave; lista de discuss&atilde;o do &a.sparc;.
As plataformas IA-64 e Power-PC foram recentemente
adicionadas &agrave; lista de arquiteturas que
ser&atilde;o futuramente suportadas; entre na lista do
&a.ia64; e/ou &a.ppc; para mais informa&ccedil;&otilde;es
sobre tais arquiteturas. Para discuss&otilde;es gerais
sobre outras arquiteturas, entre na lista de
discuss&atilde;o &a.platforms;.</para>
<para>Caso seu computador seja de uma arquitetura n&atilde;o
suportada pelo FreeBSD e precise de uma
solu&ccedil;&atilde;o imediata, n&oacute;s sugerimos uma
olhada no <ulink
URL="http://www.netbsd.org/">NetBSD</ulink> ou <ulink
URL="http://www.openbsd.org/">OpenBSD</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="which-hardware-to-get">
<para>Preciso adquirir um novo hardware para um sistema com
FreeBSD. Qual o melhor modelo/marca/tipo?</para>
</question>
<answer>
<para>Essa &eacute; uma discuss&atilde;o tradicional nas
listas do FreeBSD. Partindo do princ&iacute;pio que os
tipos de equipamentos e suas caracter&iacute;sticas
alteram-se de forma muita r&aacute;pida, e que n&oacute;s
tentamos suportar essas mudan&ccedil;as e torn&aacute;-las
suportadas, &eacute; <emphasis>fortemente
recomendado</emphasis> que voc&ecirc; sempre leia as
<ulink URL="&rel.current.hardware;">Notas de
Hardware</ulink> e fa&ccedil;a uma busca nos <ulink
URL="http://www.freebsd.org/search/#mailinglists">hist&oacute;rico
das listas de discuss&atilde;o</ulink> antes de
perguntar sobre os melhores e mais novos equipamentos
dispon&iacute;veis. &Eacute; muito prov&aacute;vel que as
informa&ccedil;&otilde;es que voc&ecirc; quer sobre
determinado equipamento tenham sido discutidas h&aacute;
menos de uma semana.</para>
<para>Caso voc&ecirc; esteja procurando
informa&ccedil;&otilde;es sobre
<foreignphrase>laptops</foreignphrase>, verifique o
hist&oacute;rico da lista FreeBSD-mobile. Do
contr&aacute;rio, o hist&oacute;rico da FreeBSD-questions
ser&aacute; o mais indicado, ou de alguma lista
espec&iacute;fica sobre o tipo de hardware em
quest&atilde;o.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="supported-hard-drives">
<para>Que tipos de discos r&iacute;gido o FreeBSD
suporta?</para>
</question>
<answer>
<para>O FreeBSD suporta discos EIDE e SCSI (com alguma
controladora compat&iacute;vel; veja a pr&oacute;xima
pergunta) e todos os outros discos que usam a interface de
controle original da <quote>Western Digital</quote> (MFM,
RLL, ESDI, e &eacute; claro IDE). Algumas controladoras
ESDI que usam interfaces de controle propriet&aacute;ria
n&atilde;o funcionar&atilde;o no FreeBSD: mude para
controladoras do tipo WD1002/3/6/7 ou algum clone dessa
interface.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="supported-scsi-controllers">
<para>Quais controladoras SCSI s&atilde;o suportadas pelo
FreeBSD?</para>
</question>
<answer>
<para>Veja a lista completa de equipamentos suportados nas
<ulink URL="&rel.current.hardware;">Notas de
Hardware</ulink> atuais.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="supported-cdrom-drives">
<para>Quais drives de CDROM s&atilde;o suportados pelo
FreeBSD?</para>
</question>
<answer>
<para>Quaisquer drives SCSI ligados &agrave; controladoras
suportadas s&atilde;o controladas pelo FreeBSD.</para>
<para>As seguintes interfaces propriet&aacute;rias de CDROM
tamb&eacute;m s&atilde;o suportadas:</para>
<itemizedlist>
<listitem>
<para>Mitsumi LU002 (8bits), LU005 (16bits) e FX001D
(16bits velocidade 2x (2x Speed)).</para>
</listitem>
<listitem>
<para>Sony CDU 31/33A.</para>
</listitem>
<listitem>
<para>CDROM Sound Blaster n&atilde;o-SCSI.</para>
</listitem>
<listitem>
<para>CDROM Matsushita/Panasonic.</para>
</listitem>
<listitem>
<para>CDROMs IDE compat&iacute;veis com o padr&atilde;o
ATAPI.</para>
</listitem>
</itemizedlist>
<para>Todo equipamento n&atilde;o-SCSI &eacute;
reconhecidamente mais lento do que os SCSI, e alguns
drives de CDROM ATAPI podem n&atilde;o funcionar
corretamente.</para>
<para>A partir da vers&atilde;o 2.2, todos os CDROM do
FreeBSD distribu&iacute;dos pela FreeBSD Mall podem ser
iniciados (booting) diretamente pela unidade de CD.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="supported-cdrw-drives">
<para>Quais drives de CD-RW s&atilde;o suportados pelo
FreeBSD?</para>
</question>
<answer>
<para>O FreeBSD suporta qualquer tipo de unidade CD-RW ou
CD-R IDE compat&iacute;veis com o padr&atilde;o ATAPI. No
FreeBSD 4.0 e posteriores, leia a p&aacute;gina de manual
do &man.burncd.8;.Em vers&otilde;es anteriores, veja os
exemplos de utiliza&ccedil;&atilde;o desses equipamentos
em <filename>/usr/share/examples/atapi</filename>.</para>
<para>O FreeBSD tamb&eacute;m suporta qualquer drive de CD-R
ou CD-RW do tipo SCSI. Instale o aplicativo
<command>cdrecord</command> a partir da
cole&ccedil;&atilde;o de <literal>ports</literal> ou como
pacote, e tenha certeza de ter o device
<devicename>pass</devicename> compilado no seu
<foreignphrase>kernel</foreignphrase>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="zip-support">
<para>O FreeBSD suporta ZIP Drives?</para>
</question>
<answer>
<para>O FreeBSD suporta ZIP Drives do tipo SCSI, &eacute;
claro. Essa unidade deve ser configurada apenas nos SCSI
ID n&uacute;meros 5 ou 6, mas se a sua BIOS tem suporte
&agrave inicializ&atilde;&ccedil;o(boot) pela unidade
SCSI, essa caracter&iacute;stica pode ser usada sem
problemas. N&atilde;o est&aacute; claro exatamente quais
adaptadores SCSI suportam a caracter&iacute;stica de
inicializ&atilde;&ccedil;o(boot) em IDs diferentes de 0 ou
1, portanto ser&aacute; necess&aacute;rio consultar o
manual do seu equipamento para obter
informa&ccedil;&otilde;es mais precisas sobre esse
recurso.</para>
<para>Os ZIP Drives padr&atilde;o ATAPI (IDE) s&atilde;o
suportados pelo FreeBSD desde a vers&atilde;o 2.2.6 e em
todas as posteriores.</para>
<para>O FreeBSD tem suporte ainda a ZIP Drives de Porta
Paralela desde a vers&atilde;o 3.0. Caso seu sistema seja
dessa vers&atilde;o ou superior, verifique o suporte a
<devicename>scbus0</devicename>,
<devicename>da0</devicename>,
<devicename>ppbus0</devicename>,
<devicename>vp0</devicename> no seu
<foreignphrase>kernel</foreignphrase> (o
<foreignphrase>kernel</foreignphrase> GENERIC tem todos
esses suportes, exceto &agrave; device
<devicename>vp0</devicename>). Com esses suportes
presentes no <foreignphrase>kernel</foreignphrase>, o
drive de Porta Paralela deve estar dispon&iacute;vel em
<devicename>/dev/da0s4</devicename>. Os discos ZIP podem
ser montados usando o comando <command>mount /dev/da0s4
/mnt</command> OU (discos formatados como DOS)
<command>mount_msdos /dev/da0s4 /mnt</command>, como
&eacute; de costume.</para>
<para>Verifique tamb&eacute;m o <link
linkend="jaz"><literal>FAQ</literal> sobre discos
remov&iacute;veis</link> dispon&iacute;vel ainda nesse
cap&iacute;tulo, e <link linkend="disklabel">as notas
sobre <quote>formata&ccedil;&atilde;o</quote></link> no
cap&iacute;tulo de Administra&ccedil;&atilde;o.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="jaz-zip-removable-support">
<para>O FreeBSD suporta discos JAZ, EZ ou outras unidades
remov&iacute;veis?</para>
</question>
<answer>
<para>Fora a vers&atilde;o IDE dos discos EZ, os outros
discos s&atilde;o 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.</para>
<para><anchor id="jaz">N&atilde;o h&aacute; uma certeza
quanto &agrave; forma que o FreeBSD trata uma
altera&ccedil;&atilde;o de m&iacute;dia enquanto o sistema
est&aacute; em pleno uso, ent&atilde;o &eacute;
necess&aacute;rio 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&ecirc;-las.</para>
<para>Veja essa <link linkend="disklabel">nota sobre
<quote>formata&ccedil;&atilde;o</quote></link>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="multiport-serial-support">
<para>Que dispositivos seriais de m&uacute;ltiplas portas
s&atilde;o suportados pelo FreeBSD?</para>
</question>
<answer>
<para>Existe uma lista dessas unidades na
se&ccedil;&atilde;o de <ulink
URL="../handbook/install.html#INSTALL-MISC">Dispositivos
Diversos</ulink> do &a.ptbr.p.handbook;.</para>
<para>Alguns dispositivos clones parecem tamb&eacute;m
funcionar normalmente no sistema, em especial equipamentos
que se dizem ser AST compat&iacute;veis.</para>
<para>Verifique a p&aacute;gina de manual do &man.sio.4; para
obter mais informa&ccedil;&otilde;es quanto &agrave;
configura&ccedil;&atilde;o desses dispositivos.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="usbkbd">
<para>O FreeBSD suporta meu teclado USB?</para>
</question>
<answer>
<para>O suporte a dispositivos USB foi adicionado no FreeBSD
desde a vers&atilde;o 3.1. Contudo, na vers&atilde;o 3.1,
o suporte ainda &eacute; muito preliminar, e alguns
equipamentos podem n&atilde;o funcionar antes da
vers&atilde;o 3.2. Caso voc&ecirc; queira usar o suporte
a teclados USB, tente o seguinte.</para>
<procedure>
<step>
<para>No FreeBSD 3.2 ou posterior.</para>
</step>
<step>
<para>Adicione as seguintes linhas no arquivo de
configura&ccedil;&atilde;o do seu
<foreignphrase>kernel</foreignphrase>, e
recompile-o.</para>
<programlisting>device uhci
device ohci
device usb
device ukbd
options KBD_INSTALL_CDEV</programlisting>
<para>Em vers&otilde;es anteriores &agrave; 4.0,
use:</para>
<programlisting>controller uhci0
controller ohci0
controller usb0
controller ukbd0
options KBD_INSTALL_CDEV</programlisting>
</step>
<step>
<para>No diret&oacute;rio <filename>/dev</filename>,
crie os seguintes devices:</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>./MAKEDEV kbd0 kbd1</userinput></screen>
</step>
<step>
<para>Edite o <filename>/etc/rc.conf</filename> e
adicione as seguintes linhas:</para>
<programlisting>usbd_enable="YES"
usbd_flags=""</programlisting>
</step>
</procedure>
<para>Depois de reiniciado(rebooting) o sistema, o teclado
AT aparece como <devicename>/dev/kbd0i</devicename> e o
teclado USB aparece como
<devicename>/dev/kbd1</devicename> , se ambos estiverem
conectados ao sistema. Se estiver somente o teclado USB,
ele estar&aacute; como
<devicename>/dev/ukbd0</devicename>.</para>
<para>Caso queira usar o teclado USB no console, &eacute;
necess&aacute;rio informar explicitamente ao driver do
console que ele deve usar esse teclado. Isso pode ser
feito com o seguinte comando em tempo de
inicializa&ccedil;&atilde;o do sistema:</para>
<screen>&prompt.root; <userinput>kbdcontrol -k /dev/kbd1 &lt; /dev/ttyv0 &gt; /dev/null</userinput></screen>
<para>Note que se o teclado USB for o &uacute;nico teclado
dispon&iacute;vel, ele ser&aacute; acessado via
<devicename>/dev/kbd0</devicename>, portanto a linha de
comando deve-se parecer com:</para>
<screen>&prompt.root; <userinput>kbdcontrol -k /dev/kbd0 &lt; /dev/ttyv0 &gt; /dev/null</userinput></screen>
<para>O arquivo <filename>/etc/rc.i386</filename> &eacute;
um bom lugar para colocar o comando acima.</para>
<para>Depois de configurado, o teclado USB deve funcionar
tamb&eacute;m no ambiente X, sem nenhuma outra
configura&ccedil;&atilde;o especial.</para>
<para>Conectar e desconectar o teclado USB com o sistema
ligado ainda n&atilde;o &eacute; um comportamento
completamente suportado, portando &eacute;
aconselh&aacute;vel ligar o teclado antes de iniciar o
sistema e apenas deslig&aacute;-lo depois que o computador
estiver desligado, para evitar poss&iacute;veis
problemas.</para>
<para>Veja a p&aacute;gina de manual do &man.ukbd.4; para
maiores informa&ccedil;&otilde;es.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="busmouse">
<para>Eu tenho um mouse de barramento n&atilde;o tradicional.
Como o configuro?</para>
</question>
<answer>
<para>O FreeBSD suporta o barramento de mouse tradicional do
tipo InPort fabricados pela Microsoft, Logitech e ATI. O
suporte a esse perif&eacute;rico &eacute; compilado por
padr&atilde;o no <foreignphrase>kernel</foreignphrase>
GENERIC do FreeBSD na vers&atilde;o 2.X, mas n&atilde;o
&eacute; suportado por padr&atilde;o na vers&atilde;o 3.0
e posteriores. Se voc&ecirc; quer recompilar um
<foreignphrase>kernel</foreignphrase> com suporte ao
barramento de mouse, adicionando a linha ao seu arquivo de
configura&ccedil;&atilde;o:</para>
<para>No FreeBSD 3.0 e anteriores, adicione:</para>
<programlisting>device mse0 at isa? port 0x23c tty irq5 vector mseintr</programlisting>
<para>Na s&eacute;rie 3.X do FreeBSD, a linha deve
ser:</para>
<programlisting>device mse0 at isa? port 0x23c tty irq5</programlisting>
<para>E na s&eacute;rie 4.X e posteriores, a linha deve
ser:</para>
<programlisting>device mse0 at isa? port 0x23c irq5</programlisting>
<para>Barramentos de mouse costumam ter uma interface
dedicada que permite definir o endere&ccedil;o de
mem&oacute;ria e a IRQ que a placa vai funcionar. Nesse
caso, refira-se ao manual do seu equipamento e &agrave;
p&aacute;gina de manual do &man.mse.4; para maiores
informa&ccedil;&otilde;es.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ps2mouse">
<para>Como eu uso o meu mouse (<quote>mouse port</quote> ou
<quote>keyboard</quote>) PS/2?</para>
</question>
<answer>
<para>Em vers&otilde;es posteriores ao 2.2.5, o
<foreignphrase>kernel</foreignphrase> do FreeBSD inclui
por padr&atilde;o o suporte ao device
<devicename>psm</devicename>, que controlar&aacute; seu
mouse PS/2 desde o momento de inicializa&ccedil;&atilde;o
do sistema.</para>
<para>Caso seu FreeBSD seja 2.1.X ou similar, o suporte a
PS/2 pode ser inclu&iacute;do no
<foreignphrase>kernel</foreignphrase>, no momento da
instala&ccedil;&atilde;o, ou mesmo depois desse processo,
com a op&ccedil;&atilde;o <option>-c</option> na tela de
<command>boot:</command> do sistema. O suporte nesse caso
&eacute; desabilitado por padr&atilde;o e por isso deve
ser explicitamente habilitado.</para>
<para>Caso sua vers&atilde;o de FreeBSD seja antiga,
adicione a seguinte linha ao seu
<foreignphrase>kernel</foreignphrase> e
recompile-o:</para>
<para>No FreeBSD 3.0 e anteriores, a linha &eacute;:</para>
<programlisting>device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr</programlisting>
<para>No FreeBSD 3.1 e posteriores da mesma s&eacute;rie, a
linha deve ser:</para>
<programlisting>device psm0 at isa? tty irq 12</programlisting>
<para>No FreeBSD 4.0 e posteriores, a linha &eacute;:</para>
<programlisting>device psm0 at atkbdc? irq 12</programlisting>
<para>Veja a se&ccedil;&atilde;o de <ulink
URL="../handbook/kernelconfig.html">configura&ccedil;&atilde;o
do <foreignphrase>kernel</foreignphrase></ulink> no
&a.ptbr.p.handbook; caso voc&ecirc; n&atilde;o tenha
experi&ecirc;ncia com a compila&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase>.</para>
<para>Uma vez detectado o <devicename>psm0</devicename>
durante a inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do seu sistema,
tenha certeza de que existe uma entrada
<devicename>psm0</devicename> no
<filename>/dev</filename>. Fa&ccedil;a o seguinte:</para>
<screen>&prompt.root; <userinput>cd /dev; sh MAKEDEV psm0</userinput></screen>
<para>logado como usu&aacute;rio
<username>root</username>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="moused">
<para>&Eacute; poss&iacute;vel usar mouse de alguma forma,
fora do sistema X Windows?</para>
</question>
<answer>
<para>Se estiver utilizando o driver padr&atilde;o de
console, o syscons, pode-se usar o mouse para copiar &amp;
colar texto. Execute o mouse daemon,
<command>moused</command>, para habilitar o mouse nos
consoles virtuais da seguinte forma:</para>
<screen>&prompt.root; <userinput>moused -p /dev/<replaceable>xxxx</replaceable> -t <replaceable>yyyy</replaceable></userinput>
&prompt.root; <userinput>vidcontrol -m on</userinput></screen>
<para>Onde <replaceable>xxxx</replaceable> deve ser
substitu&iacute;do pelo nome de device do seu mouse e
<replaceable>yyyy</replaceable> pelo tipo de protocolo do
mesmo. Veja a p&aacute;gina de manual do &man.moused.8;
para maiores informa&ccedil;&otilde;es quanto aos tipos de
protocolos suportados.</para>
<para>&Eacute; prov&aacute;vel que voc&ecirc; queira usar o
mouse daemon automaticamente, sempre que o FreeBSD for
iniciado. Na vers&atilde;o 2.2.1, defina as seguintes
vari&aacute;veis, no arquivo
<filename>/etc/sysconfig</filename>.</para>
<programlisting>mousedtype="yyyy"
mousedport="xxxx"
mousedflags=""</programlisting>
<para>Da vers&atilde;o 2.2.2 at&eacute; a 3.0, defina as
seguintes vari&aacute;veis no
<filename>/etc/rc.conf</filename>.</para>
<programlisting>moused_type="yyyy"
moused_port="xxxx"
moused_flags=""</programlisting>
<para>Da vers&atilde;o 3.1 em diante, caso voc&ecirc; tenha
um mouse PS/2 &eacute; necess&aacute;rio apenas adicionar
a op&ccedil;&atilde;o
<literal>moused_enable=&quot;YES&quot;</literal> no
arquivo <filename>/etc/rc.conf</filename>.</para>
<para>E se a inten&ccedil;&atilde;o &eacute; usar o mouse em
todos os terminais virtuais ao inv&eacute;s de apenas no
console, insira a seguinte linha no
<filename>/etc/rc.conf</filename>.</para>
<programlisting>allscreens_flags="-m on"</programlisting>
<para>Desde a vers&atilde;o 2.2.6 do FreeBSD, o mouse daemon
&eacute; capaz de detectar o tipo de protocolo do mouse
automaticamente, a n&atilde;o ser que o dispositivo em
quest&atilde;o seja um mouse serial muito velho. Defina
<literal>auto</literal> para que o programa identifique o
protocolo do mouse automaticamente.</para>
<para>Quando o daemon est&aacute; rodando, o acesso ao
dispositivo deve ser coordenado entre ele e qualquer outra
aplica&ccedil;&atilde;o, como o X-Windows, por exemplo.
Leia uma <link linkend="x-and-moused">outra
pergunta</link> sobre esse assunto.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="text-mode-cut-paste">
<para>Como eu copio e colo com o mouse em um console modo
texto?</para>
</question>
<answer>
<para>Uma vez configurado o mouse (<link
linkend="moused">veja a pergunta anterior</link>),
aperte o bot&atilde;o 1 (bot&atilde;o esquerdo) do mouse e
mova o cursor por toda a regi&atilde;o desejada,
selecionando o texto em quest&atilde;o. Depois, basta
apertar o bot&atilde;o 2 (do meio) ou o bot&atilde;o 3
(direito) para colar o conte&uacute;do selecionado
anteriormente.</para>
<para>A partir da vers&atilde;o 2.2.6 o bot&atilde;o 2 cola
o texto copiado, enquanto o bot&atilde;o 3 ``extende'' a
regi&atilde;o selecionada. Caso seu mouse n&atilde;o
tenha o bot&atilde;o do meio, &eacute; poss&iacute;vel
remapear (ou emular) os bot&otilde;es do perif&eacute;rico
usando algumas op&ccedil;&otilde;es espec&iacute;ficas do
mouse daemon. Veja a p&aacute;gina de manual do
&man.moused.8; para maiores detalhes.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="usbmouse">
<para>O FreeBSD suporta mouse USB?</para>
</question>
<answer>
<para>No FreeBSD 3.1 existe um suporte preliminar &agrave;
recursos USB que n&atilde;o funciona muito bem dependendo
da situa&ccedil;&atilde;o. A partir da vers&atilde;o 4.0
o FreeBSD suporta dispositivos USB por padr&atilde;o. Caso
queira usar um mouse USB no FreeBSD 3.X, siga as seguintes
instru&ccedil;&otilde;es.</para>
<procedure>
<step>
<para>Atualize seu sistema para FreeBSD 3.2 ou
posterior.</para>
</step>
<step>
<para>Adicione o seguinte suporte ao seu
<foreignphrase>kernel</foreignphrase>, e
recompile-o:</para>
<programlisting>device uhci
device ohci
device usb
device ums</programlisting>
<para>Em vers&otilde;es anteriores &agrave; 4.0 o
suporte &agrave; ser adicionado &eacute;:</para>
<programlisting>controller uhci0
controller ohci0
controller usb0
device ums0</programlisting>
</step>
<step>
<para>Entre no diret&oacute;rio
<filename>/dev</filename> e crie os devices
necess&aacute;rios:</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>./MAKEDEV ums0</userinput></screen>
</step>
<step>
<para>Edite o <filename>/etc/rc.conf</filename> e
adicione as linhas:</para>
<programlisting>moused_enable="YES"
moused_type="auto"
moused_port="/dev/ums0"
moused_flags=""
usbd_enable="YES"
usbd_flags=""</programlisting>
<para>Veja a <link linkend="moused">se&ccedil;&atilde;o
anterior</link> para uma discuss&atilde;o mais
detalhada sobre o moused.</para>
</step>
<step>
<para>Para configurar o mouse USB no X, edite o
<filename>XF86Config</filename> e, caso esteja usando
o XFree86 3.3.2 ou posterior, adicione as seguintes
linhas na se&ccedil;&atilde;o
<emphasis>Pointer</emphasis>:</para>
<programlisting>Device "/dev/sysmouse"
Protocol "Auto"</programlisting>
<para>Caso esteja usando uma vers&atilde;o anterior do
Xfree86, adicione tamb&eacute;m na se&ccedil;&atilde;o
<emphasis>Pointer</emphasis> as seguintes
linhas:</para>
<programlisting>Device "/dev/sysmouse"
Protocol "SysMouse"</programlisting>
</step>
</procedure>
<para>Leia tamb&eacute;m uma <link
linkend="x-and-moused">outra pergunta</link> sobre o uso
do mouse em ambiente X.</para>
<para>Conectar e desconectar o teclado USB com o sistema
ligado ainda n&atilde;o &eacute; um comportamento
completamente suportado, portando &eacute;
aconselh&aacute;vel ligar o teclado antes de iniciar o
sistema e apenas deslig&aacute;-lo depois que o computador
estiver desligado, para evitar poss&iacute;veis
problemas.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="mouse-wheel-buttons">
<para>Eu tenho um mouse do tipo Wheel com uma rodinha e
bot&otilde;es adicionais. Posso us&aacute;-lo no
FreeBSD?</para>
</question>
<answer>
<para>A resposta, infelizmente &eacute;,
<quote>Depende</quote>. Esse tipo de mouse tem algumas
caracter&iacute;sticas especiais que requerem o uso de
<foreignphrase>drivers</foreignphrase> especiais na
maioria dos casos. A n&atilde;o ser que o device do seu
mouse tenha suporte espec&iacute;fico, ou se a
aplica&ccedil;&atilde;o em quest&atilde;o reconhecer esse
tipo de equipamento, ele ir&aacute; funcionar simplesmente
como um mouse tradicional de dois ou tr&ecirc;s
bot&otilde;es.</para>
<para>Mais informa&ccedil;&otilde;es sobre o uso de mouse do
tipo Wheel em ambiente X Windows, refira-se a essa <link
linkend="x-and-wheel">se&ccedil;&atilde;o</link>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="psmerr">
<para>Por que meu mouse PS/2 do tipo Wheel fica louco,
pulando pela tela?</para>
</question>
<answer>
<para>O suporte ao mouse PS/2 no FreeBSD 3.2 e anteriores
&eacute; falho quanto a mouses do tipo Wheel, incluindo o
modelo M-S48 da Logitech e seus similares OEM. Aplique o
seguinte patch no arquivo
<filename>/sys/i386/isa/psm.c</filename> e recompile seu
<foreignphrase>kernel</foreignphrase>:</para>
<programlisting>Index: psm.c
===================================================================
RCS file: /src/CVS/src/sys/i386/isa/Attic/psm.c,v
retrieving revision 1.60.2.1
retrieving revision 1.60.2.2
diff -u -r1.60.2.1 -r1.60.2.2
--- psm.c 1999/06/03 12:41:13 1.60.2.1
+++ psm.c 1999/07/12 13:40:52 1.60.2.2
@@ -959,14 +959,28 @@
sc->mode.packetsize = vendortype[i].packetsize;
/* set mouse parameters */
+#if 0
+ /*
+ * A version of Logitech FirstMouse+ won't report wheel movement,
+ * if SET_DEFAULTS is sent... Don't use this command.
+ * This fix was found by Takashi Nishida.
+ */
i = send_aux_command(sc->kbdc, PSMC_SET_DEFAULTS);
if (verbose >= 2)
printf("psm%d: SET_DEFAULTS return code:%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);
+ } else if (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);
/* request a data packet and extract sync. bits */
if (get_mouse_status(sc->kbdc, stat, 1, 3) < 3) {</programlisting>
<para>Em vers&otilde;es posteriores &agrave; 3.2, o suporte
deve funcionar.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="laptop-mouse-trackball">
<para>Como eu uso o mouse/bolinha-de-rolagem/touchpad no meu
laptop?</para>
</question>
<answer>
<para>Por gentileza, <link linkend="ps2mouse">leia a
pergunta anterior</link>. Verifique tamb&eacute;m a
<ulink
url="http://www.FreeBSD.org/docs.html#PAO">p&aacute;gina
de Computa&ccedil;&atilde;o M&oacute;vel</ulink> do
Projeto.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="tape-support">
<para>Que tipos de dispositivos de fitas s&atilde;o
suportados pelo FreeBSD?</para>
</question>
<answer>
<para>O FreeBSD suporta dispositivos de fitas do tipo SCSI e
QIC-36 (com interface QIC-02). Tal suporte inclui drives
8-mm (tamb&eacute;m conhecidos como Exabyte) e unidades de
fita DAT.</para>
<para>Alguns dispositivos 8-mm mais antigos n&atilde;o
s&atilde;o compat&iacute;veis com o padr&atilde;o SCSI-2 e
por isso podem n&atilde;o funcionar bem no FreeBSD.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="tape-changer-support">
<para>O FreeBSD suporta bibliotecas de fitas?</para>
</question>
<answer>
<para>O FreeBSD suporta alternadores (tamb&eacute;m
conhecidos com carross&eacute;is) SCSI, usando o device
&man.ch.4; e o comando &man.chio.1;. Os detalhes
relativos a como controlar o alternador de fitas podem ser
encontrados na p&aacute;gina de manual do
&man.chio.1;.</para>
<para>Caso voc&ecirc; n&atilde;o esteja usando o
<application>AMANDA</application> ou qualquer outro
produto que entenda o funcionamento dos alternadores,
lembre-se que tal equipamento simplesmente alterna a
posi&ccedil;&atilde;o da fita, de um compartimento para
outro, e portanto deve-se saber em qual compartimento a
fita est&aacute; e para qual ela deve voltar.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="sound-card-support">
<para>Quais placas de som s&atilde;o suportadas pelo
FreeBSD?</para>
</question>
<answer>
<para>O FreeBSD suporta as placas SoundBlaster, SoundBlaster
Pro, SoundBlaster 16, Pro Audio Spectrum 16, AdLib e
Gravis UltraSound. Existe ainda um suporte - limitado,
&eacute; verdade - para as placas MPU-401 e placas MIDI
compat&iacute;veis. Placas de som que estiverem em
conformidade com a especifica&ccedil;&atilde;o MSS
(Microsoft Sound System) tamb&eacute;m s&atilde;o
suportadas pela controladora pcm do
<foreignphrase>kernel</foreignphrase>.</para>
<note>
<para>Esse suporte &eacute; espec&iacute;fico para apenas
som! Exceto no caso das placas SoundBlaster, o suporte
n&atilde;o inclui controle de joysticks, CDROMs ou SCSI.
A interface SCSI da SoundBlaster e alguns CDROMs
n&atilde;o-SCSI s&atilde;o suportados, mas o sistema
n&atilde;o pode iniciar(booting) a partir desses
dispositivos.</para>
</note>
</answer>
</qandaentry>
<qandaentry>
<question id="es1370-silent-pcm">
<para>Qual a solu&ccedil;&atilde;o para falta de som da
minha placa es1370 com o controlador pcm?</para>
</question>
<answer>
<para>Basta aumentar o volume do seu som ;-) Use os
seguintes comandos, sempre que o sistema iniciar:</para>
<screen>&prompt.root; <userinput>mixer pcm 100 vol 100 cd 100</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="network-cards">
<para>Quais placas de rede o FreeBSD suporta?</para>
</question>
<answer>
<para>Veja a se&ccedil;&atilde;o de <ulink
URL="../handbook/install.html#INSTALL-NICS">Placas
Ethernet</ulink> do &a.ptbr.p.handbook; para uma lista
detalhada dos dispostivos suportados.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="no-math-coprocessor">
<para>Eu n&atilde;o tenho um co-processador
matem&aacute;tico. Isso &eacute; ruim?</para>
</question>
<answer>
<note>
<para>Vale apenas para propriet&aacute;rios de
386/486SX/486SLC - outras m&aacute;quinas ter&atilde;o
um co-processador integrado &agrave; CPU.</para>
</note>
<para>No geral, a falta de um co-processador
matem&aacute;tico n&atilde;o traz nenhum problema, mas
existem algumas circunst&acirc;ncias onde voc&ecirc;
encontrar&aacute; s&eacute;rias limita&ccedil;&otilde;es,
seja no desempenho ou na precis&atilde;o da
emula&ccedil;&atilde;o dos seus c&aacute;lculos (veja a
se&ccedil;&atilde;o de <link
linkend="emul">emula&ccedil;&atilde;o FP</link>). Por
exemplo, a renderiza&ccedil;&atilde;o de c&iacute;rculos e
arcos no ambiente gr&aacute;fico ser&aacute; uma tarefa
muito lenta. &Eacute; recomend&aacute;vel comprar um
co-processador matem&aacute;tico; vale a pena.</para>
<note>
<para>Alguns co-processadores matem&aacute;ticos
s&atilde;o melhores que outros. &Eacute; estranho ter
que dizer isso, mas ningu&eacute;m 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.</para>
</note>
</answer>
</qandaentry>
<qandaentry>
<question id="other-device-support">
<para>Que outros dispositivos o FreeBSD suporta?</para>
</question>
<answer>
<para>Veja o <ulink
URL="../handbook/install.html#INSTALL-MISC">&a.ptbr.p.handbook;</ulink>
para obter uma listagem dos outros dispostivos
suportados.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="power-management-support">
<para>O FreeBSD suporta gerenciamento de energia no meu
laptop?</para>
</question>
<answer>
<para>O FreeBSD suporta <acronym>APM</acronym> em alguns
computadores. Por gentileza, refira-se ao arquivo
<filename>LINT</filename> de configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase>; procure pela
palavra <acronym>APM</acronym>. Mais
informa&ccedil;&otilde;es na p&aacute;gina de manual do
&man.apm.4;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="micron-hang-boot">
<para>Por que placas Micron travam na
inicializa&ccedil;&atilde;o(boot)?</para>
</question>
<answer>
<para>Algumas placas-m&atilde;e Micron n&atilde;o tem
conformidade na implementa&ccedil;&atilde;o de sua BIOS e
por isso confundem o FreeBSD no momento da
inicializa&ccedil;&atilde;o(boot), pois os equipamentos em
quest&atilde;o n&atilde;o foram configurados nos
endere&ccedil;os que a BIOS reportou.</para>
<para>Procure a op&ccedil;&atilde;o <quote>Plug and Play
Operating System</quote> - ou algo parecido - na sua
BIOS e desabilite-a para corrigir o problema. Mais
informa&ccedil;&otilde;es sobre esse problema podem ser
encontradas em <ulink
URL="http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron">http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="newer-adaptec-support">
<para>Por que o FreeBSD n&atilde;o reconhece nenhuma
controladora SCSI Adaptec?</para>
</question>
<answer>
<para>As s&eacute;ries mais novas (AIC789x) dos chips
Adaptec tem suporte no modo CAM SCSI, que ser&aacute;
redefinido na vers&atilde;o 3.0 do FreeBSD. Na
vers&atilde;o 2.2-STABLE, voc&ecirc; pode aplicar as
corre&ccedil;&otilde;es dispon&iacute;veis em <ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/">ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/</ulink>.
Caso voc&ecirc; precise instalar um sistema com essas
controladoras, existe um disquete de
inicializa&ccedil;&atilde;o(boot) com suporta a CAM,
dispon&iacute;vel em <ulink
URL="http://people.FreeBSD.org/~abial/cam-boot/">
http://people.FreeBSD.org/~abial/cam-boot/</ulink>. Nos
dois casos leia o arquivo README antes de tomar qualquer
a&ccedil;&atilde;o.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="internal-plugnplay-modem">
<para>Por que o FreeBSD n&atilde;o encontra o meu Modem Plug
&amp; Play interno?</para>
</question>
<answer>
<para>Ser&aacute; necess&aacute;rio adicionar o ID PnP do
modem na lista de drivers seriais do sistema para que ele
reconhe&ccedil;a-o normalmente. Isso requer hackear um
pouco o sistema. Pra habilitar o suporte Plug &amp; Play,
compile um novo <foreignphrase>kernel</foreignphrase> com
a op&ccedil;&atilde;o <literal>controller pnp0</literal> e
reinicie o seu FreeBSD. O
<foreignphrase>kernel</foreignphrase> ir&aacute; mostrar
os IDs PnP de todos os dispositivos que ele encontrar, no
momento da inicializa&ccedil;&atilde;o(boot). Copie o ID
PnP do modem em quest&atilde;o para a tabela no arquivo
<filename>/sys/i386/isa/sio.c</filename>, por volta da
linha 2777. Procure a express&atilde;o
<literal>SUP1310</literal> na estrutura
<literal>siopnp_ids[]</literal> para encontrar essa
tabela. Recompile o seu
<foreignphrase>kernel</foreignphrase>, instale-o e
reinicie o sistema. Seu modem deve ser encontrado.</para>
<para>Provavelmente ser&aacute; necess&aacute;rio configurar
o dispositivo PnP manualmente, usando o comando
<literal>pnp</literal> no momento do boot, como a
seguir:</para>
<programlisting>pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8</programlisting>
<para>para for&ccedil;ar detec&ccedil;&atilde;o do
modem.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="support-winmodem">
<para>O FreeBSD suporta software modems, como os
Winmodems?</para>
</question>
<answer>
<para>O FreeBSD suporta alguns software modems por meio de
programas adicionais. A aplica&ccedil;&atilde;o <filename
role="package">comms/ltmdm</filename> dispon&iacute;vel
na cole&ccedil;&atilde;o de <literal>Ports</literal> do
FreeBSD suporta os modems baseados no popular chipset
Lucent LT. A aplica&ccedil;&atilde;o <filename
role="package">comms/mwavem</filename> suporta o modem
em laptops IBM Thinkpad 600 e 700.</para>
<para>N&atilde;o &eacute; poss&iacute;vel instalar o FreeBSD
via software modem, visto que os programas adicionais para
controlar esse equipamento s&oacute; podem ser
configurados depois que o sistema operacional j&aacute;
est&aacute; instalado.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="serial-console-prompt">
<para>Como eu fa&ccedil;o para o interpretador(prompt) de
inicializa&ccedil;&atilde;o(boot): aparecer no console
serial?</para>
</question>
<answer>
<orderedlist>
<listitem>
<para>Construa um <foreignphrase>kernel</foreignphrase>
com a op&ccedil;&atilde;o <literal>options
COMCONSOLE</literal>.</para>
</listitem>
<listitem>
<para>Crie o arquivo /boot.config e coloque os
caracteres <option>-P</option> como o &uacute;nico
texto no arquivo. </para>
</listitem>
<listitem>
<para>Desligue o teclado do computador.</para>
</listitem>
</orderedlist>
<para>Leia o arquivo
<filename>/usr/src/sys/i386/boot/biosboot/README.serial</filename>
para mais informa&ccedil;&otilde;es.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="micron-3comnic-failure">
<para>Por que a placa de rede PCI da 3Com n&atilde;o
funciona com motherboards Micron?</para>
</question>
<answer>
<para>Algumas placas-m&atilde;e Micron n&atilde;o tem
conformidade na implementa&ccedil;&atilde;o de sua BIOS e
por isso confundem o FreeBSD no momento do boot, pois os
equipamentos em quest&atilde;o n&atilde;o foram
configurados nos endere&ccedil;os que a BIOS
reportou.</para>
<para>Procure a op&ccedil;&atilde;o <quote>Plug and Play
Operating System</quote> - ou algo parecido - na sua
BIOS e desabilite-a para corrigir o problema.</para>
<para>Mais informa&ccedil;&otilde;es sobre esse problema
podem ser encontradas em <ulink
URL="http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron">http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron</ulink></para>
</answer>
</qandaentry>
<qandaentry>
<question id="smp-support">
<para>O FreeBSD suporta Multiprocessamento Sim&eacute;trico
(SMP)?</para>
</question>
<answer>
<para>SMP &eacute; suportado a partir do FreeBSD 3.0-STABLE.
O suporte ao SMP (multiprocessamento sim&eacute;trico)
n&atilde;o est&aacute; dispon&iacute;vel por padr&atilde;o
no <foreignphrase>kernel</foreignphrase>
<emphasis>GENERIC</emphasis>, portanto &eacute;
necess&aacute;rio compilar um novo
<foreignphrase>kernel</foreignphrase> para habilitar o
suporte SMP. Veja o arquivo
<filename>/sys/i386/conf/LINT</filename> para descobrir
quais op&ccedil;&otilde;es s&atilde;o necess&aacute;rias
adicionar ao seu
<foreignphrase>kernel</foreignphrase>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="asusk7v-boot-failure">
<para>O disquete de inicializa&ccedil;&atilde;o(boot) trava
em um computador cuja placa-m&atilde;e &eacute; a ASUS
K7V. O que eu fa&ccedil;o?</para>
</question>
<answer>
<para>Entre na configura&ccedil;&atilde;o da BIOS da sua
placa e desligue a op&ccedil;&atilde;o <quote>boot virus
protection</quote>.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="troubleshoot">
<title>Resolu&ccedil;&atilde;o de Problemas</title>
<qandaset>
<qandaentry>
<question id="awre">
<para>O que fazer quando meu disco r&iacute;gido tiver bad
blocks?
</para>
</question>
<answer>
<para>Com controladoras SCSI, o drive (HD) deveria ser capaz
de remapear blocos ruins e corrig&iacute;-los
automaticamente. Por&eacute;m, muitos desses discos
mant&eacute;m essa fun&ccedil;&atilde;o desabilitada por
alguma raz&atilde;o misteriosa...</para>
<para>Para habilitar essa fun&ccedil;&atilde;o &eacute;
necess&aacute;rio editar o primeiro modo de p&aacute;gina
do dispositivo, o qual pode ser feito com o comando abaixo
(como <username>root</username>)</para>
<screen>&prompt.root; <userinput>scsi -f /dev/rsd0c -m 1 -e -P 3</userinput></screen>
<para>E mudando os valores de AWRE e ARRE de 0 para
1:-</para>
<programlisting>AWRE (Auto Write Reallocation Enbld): 1
ARRE (Auto Read Reallocation Enbld): 1</programlisting>
<para>Os par&aacute;grafos seguintes foram enviados por Ted
Mittelstaedt <email>tedm@toybox.placo.com</email>:</para>
<para>Para os discos IDE, qualquer bad block &eacute;
considerado um sinal de dificuldade em potencial. Todos
os discos IDE modernos j&aacute; v&ecirc;m com um
remapeador interno que realoca bad blocks por outros
blocos em bom estado, automaticamente. Todos os disco
r&iacute;gido IDE fabricados hoje em dia oferecem
garantias extensas.</para>
<para>Se ainda quiser tentar salvar um drive IDE com bad
blocks, pode fazer um download do programa de
diagn&oacute;stico e corre&ccedil;&atilde;o do
pr&oacute;prio fabricante do disco r&iacute;gido.
&Agrave;s vezes estes programas podem fixar e
for&ccedil;ar eletronicamente o disco a marcar estes
blocos ruins e desativ&aacute;-los.</para>
<para>Em discos ESDI, RLL e MFM, a exist&ecirc;ncia de bad
blocks &eacute; normal e n&atilde;o 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 c&oacute;digo da
BIOS para acessar o disco. Por&eacute;m, o driver
(software controlador) do FreeBSD n&atilde;o trabalha ou
acessa comandos da BIOS para para interagir com o drive
(HD), ent&atilde;o um mecanismo chamado bad144, existente
no FreeBSD, acaba substituindo esta funcionalidade. O
bad144 s&oacute; trabalha com o drive wd (portanto,
n&atilde;o &eacute; suportado no FreeBSD 4.0), e
n&atilde;o pode ser usado com drive SCSI. O bad144
trabalha marcando e organizando setores ruins encontrados
no HD, em um arquivo especial no disco.</para>
<para>Uma caracter&iacute;stica do bad144 - o bloco
danificado &eacute; colocado em um arquivo especial
situado na &uacute;ltima trilha do disco. Como este
arquivo cont&eacute;m uma lista de setores defeituosos que
pode incluir valores perto do in&iacute;cio do disco, onde
o /kernel pode estar alocado, esse arquivo dever&aacute;
ser acess&iacute;vel ao bootstrap para que o programa -
por meio da BIOS - leia o
<foreignphrase>kernel</foreignphrase>; isso significa que
o disco usado com bad144 n&atilde;o deve exceder 1024
cilindros, 16 cabe&ccedil;as, e 63 setores, logo, temos um
limite efetivo de 500MB para discos mapeados com o
bad144..</para>
<para>Para ativar o uso do bad144, simplesmente defina a
op&ccedil;&atilde;o de procurar por <quote>Bad
Block</quote> como ON na tela do fdisk do FreeBSD,
durante a instala&ccedil;&atilde;o. Essas
instru&ccedil;&otilde;es 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
opera&ccedil;&atilde;o durante pelo menos 4 horas antes de
executar o bad144, permitindo assim a expans&atilde;o
t&eacute;rmica do HD.</para>
<para>Se o disco tem mais de 1024 cilindros (como um disco
ESDI grande) a controladora ESDI usa um tipo de
tradu&ccedil;&atilde;o especial em modo DOS. A device wd
tamb&eacute;m entende esses mesmos modos de
tradu&ccedil;&atilde;o e convers&atilde;o, isso se o
<quote>tradutor</quote> de geometria for ativado como
<quote>geometria fixa</quote>, quando particionado pelo
fdisk. Voc&ecirc; tamb&eacute;m n&atilde;o deve usar o
modo <quote>dangerously dedicated</quote> para criar
parti&ccedil;&otilde;es do FreeBSD, pois isso ignora o
tipo de geometria. Embora o fdisk use a geometria
definida pelo usu&aacute;rio, ele continua reconhecendo o
tamanho verdadeiro do disco, e tentar&aacute; criar uma
parti&ccedil;&atilde;o maior para o FreeBSD. Se a
geometria de disco for alterada para geometria
traduzida(translated geometry), a parti&ccedil;&atilde;o
DEVE ser criada manualmente, informando os n&uacute;meros
de blocos do HD.</para>
<para>Um truque r&aacute;pido &eacute; usar um disco grande
ESDI com uma controladora ESDI, iniciar(booting) o sistema
com um disco DOS e formatar uma parti&ccedil;&atilde;o
DOS. Depois reiniciar o sistema com um disco de
instala&ccedil;&atilde;o do FreeBSD, e anotar o
n&uacute;mero e tamanho dos blocos que ser&atilde;o
apresentados na tela do fdisk para a
parti&ccedil;&atilde;o DOS. Redefina a geometria do disco
com os valores anotados, apague a parti&ccedil;&atilde;o
DOS e crie uma parti&ccedil;&atilde;o FreeBSD
<quote>cooperativa</quote>. Defina essa
parti&ccedil;&atilde;o como boot&aacute;vel e habilite o
reconhecimento de bad blocks. Na
instala&ccedil;&atilde;o, o bad144 &eacute; carregado
antes que qualquer outro sistema de arquivos seja criado
(voc&ecirc; pode ver isso com um
<keycombo
action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>).
Se houver problemas na cria&ccedil;&atilde;o do arquivo de
defini&ccedil;&otilde;es de setor danificado (o arquivo de
badsector) &eacute; porque a geometria definida &eacute;
maior do que o seu valor real - reinicie o sistema e
comece todos os procedimentos novamente, inclusive o
particionamento e formata&ccedil;&atilde;o da
parti&ccedil;&atilde;o DOS.</para>
<para>Se o remapeamento j&aacute; estiver habilitado e os
problemas com bad block continuarem, considere a
substitui&ccedil;&atilde;o imediata do disco, pois os
danos e os bad blocks aumentar&atilde;o consideravelmente
com o passar do tempo.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="bustek742a-eisa-scsi">
<para>Por que o FreeBSD n&atilde;o reconhece a minha
controladora SCSI EISA Bustek 742a?</para>
</question>
<answer>
<para>As informa&ccedil;&otilde;es a seguir s&atilde;o para
o modelo 742a, mas provavelmente tamb&eacute;m servem para
as placas Buslogic. (Bustek = Buslogic).</para>
<para>Existem duas <quote>vers&otilde;es</quote>
tradicionais da placa 742a. S&atilde;o os equipamentos de
revis&atilde;o A-G e de revis&atilde;o H; as letras de
cada revis&atilde;o s&atilde;o colocadas depois do
n&uacute;mero de fabrica&ccedil;&atilde;o, ao lado das
placas. A placa 742a possui 2 chips ROM acoplados, o
primeiro &eacute; o chip da BIOS e o segundo &eacute; o do
Firmware. Para o FreeBSD a vers&atilde;o da BIOS &eacute;
irrelevante, mas a vers&atilde;o do Firmware &eacute; uma
informa&ccedil;&atilde;o fundamental. &Eacute;
interessante dizer que, se voc&ecirc; fizer uma chamada ao
departamento de suporte da Buslogic, eles ir&atilde;o te
enviar um upgrade desses ROMs, e &eacute; muito bom sempre
manter a vers&atilde;o mais recente do ROM do seu Firmware
para a vers&atilde;o de revis&atilde;o do seu
equipamento.</para>
<para>As placas cuja letra de revis&atilde;o &eacute; A-G
aceitam apenas atualiza&ccedil;&otilde;es da BIOS/Firmware
de vers&atilde;o 2.41/2.21 respectivamente. A
revis&atilde;o H (REV H) aceita as vers&otilde;es mais
recentes da BIOS/Firmware at&eacute; a vers&atilde;o
4.70/3.37. A principal diferen&ccedil;a entre as
vers&otilde;es do Firmware &eacute; que a vers&atilde;o
3.37 tem suporte a<quote>round robin</quote>.</para>
<para>As placas Buslogic tamb&eacute;m tem um n&uacute;mero
serial. Caso seu equipamento seja antigo, tente abrir uma
chamada no departamento de RMA da Buslogic e informe-os o
n&uacute;mero de s&eacute;rie da sua placa. Se ela
estiver entre os seriais de abrang&ecirc;ncia, a Buslogic
vai aceitar seu equipamento para revis&atilde;o.</para>
<para>O FreeBSD 2.1 aceita apenas as revis&otilde;es de
Firmware at&eacute; o 2.21. Caso o seu Firmware seja mais
antigo do que o 2.21 sua placa n&atilde;o ser&aacute;
reconhecida como Buslogic. Contudo, &eacute;
poss&iacute;vel que o equipamento seja reconhecido como
Adaptec 1540, j&aacute; que os Firmware mais antigos da
Buslogic possuem um modo de
<quote>emula&ccedil;&atilde;o</quote> da AHA1540, o que
n&atilde;o &eacute; uma boa coisa, para uma placa
EISA.</para>
<para>Caso seu Firmware seja antigo e voc&ecirc; conseguiu
obter uma revis&atilde;o para a vers&atilde;o 2.21,
n&atilde;o se esque&ccedil;a que &eacute;
necess&aacute;rio alterar o jumper W1 da
posi&ccedil;&atilde;o A-B (padr&atilde;o) para
posi&ccedil;&atilde;o B-C ao atualizar a placa.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="hpnetserver-scsi-failure">
<para>Por que o FreeBSD n&atilde;o detecta a controladora
SCSI do Netserver HP??</para>
</question>
<answer>
<para>Isso j&aacute; &eacute; um problema conhecido. A
controladora SCSI on-board EISA dos servidores HP
Netserver est&atilde;o no slot EISA n&uacute;mero 11,
portanto todos os <quote>verdadeiros</quote> slots EISA
est&atilde;o na sua frente. O endere&ccedil;o definido
para os slots EISA &gt;= 10 ocupa um endere&ccedil;o
compartilhado com o barramento PCI, e portanto entra em
conflito com seus recursos. Essa &eacute; uma
situa&ccedil;&atilde;o onde a configura&ccedil;&atilde;o
autom&aacute;tica do FreeBSD n&atilde;o se comporta muito
bem.</para>
<para>Portanto o que voc&ecirc; deve fazer, &eacute; fingir
que n&atilde;o existe limita&ccedil;&atilde;o quanto ao
intervalo de endere&ccedil;os, definindo a
op&ccedil;&atilde;o option <literal>EISA_SLOTS</literal>
do <foreignphrase>kernel</foreignphrase> para o valor 12.
Configure e compile um novo
<foreignphrase>kernel</foreignphrase>, conforme descrito
no <ulink
URL="../handbook/kernelconfig.html">cap&iacute;tulo de
configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase> no
&a.ptbr.p.handbook;</ulink>.</para>
<para>Obviamente esse problema &eacute; ainda maior quando
se trata de uma nova instala&ccedil;&atilde;o. Para
corrigir esse problema &eacute; necess&aacute;rio uma
pequena altera&ccedil;&atilde;o no modo
<emphasis>UserConfig</emphasis>. N&atilde;o use a
interface de configura&ccedil;&atilde;o
<quote>visual</quote> do
<foreignphrase>kernel</foreignphrase>, use a Interface de
Linha de Comando (CLI), simplesmente digitando:</para>
<programlisting>eisa 12
quit</programlisting>
<para>na tela do modo CLI, e continue a
instala&ccedil;&atilde;o do FreeBSD como de costume. De
qualquer forma, &eacute; recomend&aacute;vel recompilar e
instalar um novo <foreignphrase>kernel</foreignphrase>
depois da instala&ccedil;&atilde;o do sistema..</para>
<para>Futuras vers&otilde;es do FreeBSD ter&atilde;o esse
problema corrigido automaticamente.</para>
<note>
<para>N&atilde;o use discos em modo <literal>dangerously
dedicated</literal> com um HP Netserver. Veja <link
linkend="dedicate">essa nota</link> para maiores
informa&ccedil;&otilde;es.</para>
</note>
</answer>
</qandaentry>
<qandaentry>
<question id="cmd640-ide">
<para>O que est&aacute; havendo com minha controladora IDE
CMD640?</para>
</question>
<answer>
<para>Est&aacute; com defeito! N&atilde;o suporta mais
comandos nos dois canais de forma simult&acirc;nea.</para>
<para>Existe uma corre&ccedil;&atilde;o dispon&iacute;vel e
automaticamente habilitada, se voc&ecirc; usa uma
controladora com esse chip. Para maiores detalhes,
refira-se a p&aacute;gina de manual da controladora de
disco (&man.wd.4;).</para>
<para>Se o FreeBSD em quest&atilde;o &eacute; o FreeBSD
2.2.1 ou 2.2.2 com essa controladora em quest&atilde;o, e
voc&ecirc; quer usar o segundo canal, compile um novo
<foreignphrase>kernel</foreignphrase> com a
op&ccedil;&atilde;o <literal>options "CMD640"</literal>
habilitada. Essa configura&ccedil;&atilde;o &eacute;
padr&atilde;o para o FreeBSD 2.2.5 e posteriores.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ed1-timeout">
<para>Eu sempre vejo mensagens como <errorname>ed1:
timeout</errorname>. O que elas significam?</para>
</question>
<answer>
<para>Normalmente esse problema &eacute; causado por um
conflito de interrup&ccedil;&otilde;es (por exemplo, duas
placas usando a mesma IRQ). O FreeBSD at&eacute; a
vers&atilde;o 2.0.5R costumava ser tolerante quanto a esse
problema e a placa de rede continuava funcionando mesmo
com IRQ conflitantes. Contudo desde a vers&atilde;o
2.0.5R os conflitos de interrup&ccedil;&otilde;es
n&atilde;o s&atilde;o mais tolerados. Inicie o sistema
com a op&ccedil;&atilde;o de boot -c e mude as device
ed0/de0/... para o valor correspondente ao da
placa.</para>
<para>Caso esteja usando um conector BNC na sua placa de
rede, &eacute; prov&aacute;vel que existam device timeout
por causa de m&aacute; termina&ccedil;&atilde;o do
barramento. Pra tirar isso a limpo coloque um terminador
direto na placa (sem cabos) e veja se as mensagens de erro
param.</para>
<para>Algumas placas compat&iacute;veis NE2000
apresentar&atilde;o esse problema caso a porta UTP
n&atilde;o receba sinal de link, ou se o cabo estiver
desconectado.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="bad-3c509">
<para>Por que minha placa 3COM 3C509 parou de funcionar sem
motivo aparente?</para>
</question>
<answer>
<para>Esse cart&atilde;o tem um h&aacute;bito
horr&iacute;vel de perder suas informa&ccedil;&otilde;es
de configura&ccedil;&atilde;o. Redefina as
informa&ccedil;&otilde;es da placa usando o programa de
DOS chamado <command>3c5x9.exe</command>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="printer-slow">
<para>Minha impressora paralela est&aacute; ridiculamente
lenta. O que devo fazer?</para>
</question>
<answer>
<para>Se o &uacute;nico problema &eacute; a lerdeza
terr&iacute;vel da sua impressora, tente mudar seu <ulink
url="../handbook/printing-intro-setup.html#PRINTING-PARALLEL-PORT-MODE">modo
da porta de impress&atilde;o</ulink> conforme discutido
na se&ccedil;&atilde;o de <ulink
url="../handbook/printing-intro-setup.html">Configura&ccedil;&atilde;o
de Impressoras</ulink> no &a.ptbr.p.handbook;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="signal11">
<para>Por que alguns programas ocasionalmente morrem com
erro de <errorname>Signal 11</errorname> ?</para>
</question>
<answer>
<para>Erros de sinal 11 s&atilde;o fruto de tentativas de
acesso indevido a mem&oacute;ria. Esse acesso normalmente
&eacute; controlado pelo sistema operacional, e quando o
sistema n&atilde;o permite acessar determinados
endere&ccedil;os, o processo &eacute; morto com signal 11.
Se isso estiver acontecendo em intervalos
aleat&oacute;rios de tempo, &eacute; preciso investigar as
causas com cuidado.</para>
<para>Esse problema normalmente &eacute; atribu&iacute;do
a:</para>
<orderedlist>
<listitem>
<para>Se o problema ocorre apenas em um programa
espec&iacute;fico que voc&ecirc; mesmo esta
desenvolvendo, se trata de um bug no c&oacute;digo do
seu programa.</para>
</listitem>
<listitem>
<para>Se o problema &eacute; com algum programa que faz
parte da base do FreeBSD, &eacute; poss&iacute;vel que
tamb&eacute;m seja um problema de bug no c&oacute;digo
em quest&atilde;o. Contudo, esses problemas costumam
ser corrigidos antes que os usu&aacute;rios
tradicionais percebam sua exist&ecirc;ncia - e
necessitem ler este <literal>FAQ</literal> - afinal,
&eacute; para isso que o -CURRENT existe.</para>
</listitem>
</orderedlist>
<para>Em especial, uma indica&ccedil;&atilde;o que esse
problema <emphasis>n&atilde;o</emphasis> &eacute; um bug
do FreeBSD, &eacute; um erro repetitivo no mesmo instante
da compila&ccedil;&atilde;o, mas o problema que o
compilador apresenta muda de linha a cada nova
compila&ccedil;&atilde;o.</para>
<para>Por exemplo, suponha que voc&ecirc; esteja executando
um <quote>make buildworld</quote>, e a
compila&ccedil;&atilde;o falha na hora de compilar o
<filename>ls.c</filename> em <filename>ls.o</filename>. Se
voc&ecirc; rodar o <quote>make buildworld</quote> de novo
e a compila&ccedil;&atilde;o falha exatamente no mesmo
trecho do c&oacute;digo, ent&atilde;o o problema realmente
&eacute; com o fonte da aplica&ccedil;&atilde;o, nesse
caso atualize os fontes do FreeBSD e tente novamente.
Agora se a compila&ccedil;&atilde;o falhar em um trecho
diferente do c&oacute;digo, &eacute; quase certo que o
problema seja f&iacute;sico, ou seja, com o seu
equipamento.</para>
<para>O que deve ser feito:</para>
<para>Em primeiro lugar, deve-se usar um debugador, como o
gdb, por exemplo, para encontrar o ponto exato do
c&oacute;digo que est&aacute; tentando acessar um
endere&ccedil;o problem&aacute;tico de mem&oacute;ria, e
corrigi-lo.</para>
<para>Em segundo lugar, verifique se a culpa n&atilde;o
&eacute; do seu equipamento.</para>
<para>As causas mais comuns para o problema incluem::</para>
<orderedlist>
<listitem>
<para>Os seus discos r&iacute;gidos podem estar
superaquecidos: Verifique se o sistema de
ventila&ccedil;&atilde;o do seu PC est&aacute;
funcionando. Verifique coolers internos (da fonte) e
externos, e verifique se n&atilde;o existe
superaquecimento de outros componentes do
computador.</para>
</listitem>
<listitem>
<para>O processador est&aacute; superaquecido: Pode ser
porque foi feito um overclock no processador em
quest&atilde;o, ou no caso mais tradicional, pode ser
que o cooler tenha parado de funcionar ou que esteja
sujo e portanto funcionando em rota&ccedil;&atilde;o
baixa. Em ambos os casos, o primeiro passo &eacute;
garantir que o processador esteja rodando sob as
mesmas condi&ccedil;&otilde;es que ele foi
constru&iacute;do para funcionar - por exemplo, com a
velocidade do clock original e com a
ventila&ccedil;&atilde;o adequada.</para>
<para>Caso tenha sido feito overclock no processador,
lembre-se que &eacute; mais barato usar um computador
um pouco mais lento, do que trocar o processador da
m&aacute;quina por causa de um chip fritado ;-)
Al&eacute;m do que a maioria das pessoas n&atilde;o
s&atilde;o simpatizantes de overclock, mesmo que
voc&ecirc; considere a a&ccedil;&atilde;o segura ou
n&atilde;o.</para>
</listitem>
<listitem>
<para>Caso tenha m&uacute;ltiplos pentes de
mem&oacute;ria SIMM/DIMM, tente deslig&aacute;-los e
experimente usar cada pente de uma vez,
indiviualmente. Com isso &eacute; poss&iacute;vel
descobrir se o problema &eacute; com algum chip
DIMM/SIMM ou se o problema &eacute; a
combina&ccedil;&atilde;o entre os pentes.</para>
</listitem>
<listitem>
<para>Configura&ccedil;&otilde;es super otimistas na
BIOS da sua placa m&atilde;e s&atilde;o outra causa
prov&aacute;vel. Algumas BIOS tem
op&ccedil;&otilde;es que permitem alterar a velocidade
e frequ&ecirc;ncia de v&aacute;rios recursos.
Normalmente os valores padr&atilde;o na BIOS
s&atilde;o os mais conservadores, e portanto devem ser
o bastante para controlar corretamente o equipamento;
contudo algumas op&ccedil;&otilde;es como por exemplo
<quote>RAM Speed: Turbo</quote> ou alguma
op&ccedil;&atilde;o parecida coloca o estado de espera
para o acesso a mem&oacute;ria em um valor muito
baixo, e as vezes, por mais otimista que voc&ecirc;
seja, sua mem&oacute;ria pode n&atilde;o ser
r&aacute;pida o bastante. O ideal &eacute; definir os
valores padr&atilde;o da sua BIOS, mas &eacute;
interessante anotar os valores atuais primeiro!</para>
</listitem>
<listitem>
<para>Alimenta&ccedil;&atilde;o insuficiente de energia
na placa-m&atilde;e. Caso exista alguma placa que
n&atilde;o esteja sendo utilizada, algum disco
r&iacute;gido ou CDROM, &eacute; interessante
desliga-los temporariamente do computador, ou
simplesmente remover o cabo de energia desses
equipamentos. Mesmo em sub utiliza&ccedil;&atilde;o,
essas placas e discos est&atilde;o sob constante
alimenta&ccedil;&atilde;o e talvez sua fonte consiga
suprir uma carga menor. Ou tente trocar a fonte do
seu PC, de prefer&ecirc;ncia por uma com maior poder
de alimenta&ccedil;&atilde;o (por exemplo, se a sua
fonte &eacute; de 250 Watts troque por uma de 300
Watts).</para>
</listitem>
</orderedlist>
<para>Leia ainda o <literal>FAQ</literal> SIG11
(dispon&iacute;vel a seguir) que tem outras boas
explica&ccedil;&otilde;es sobre esses problemas. O
<literal>FAQ</literal> tamb&eacute;m discute como alguns
programas de teste de mem&oacute;ria podem pensar que um
pente problem&aacute;tico est&aacute; funcionando
corretamente.</para>
<para>Finalmente, se nenhum dos casos acima ajudou a
solucionar seu problema, pode ser que exista um bug no
FreeBSD. Voc&ecirc; deve seguir as
intru&ccedil;&otilde;oes para enviar um relat&oacute;rio
de problemas para o Projeto FreeBSD.</para>
<para>Existe um <literal>FAQ</literal> extenso que cobre
esse assunto, dispon&iacute;vel <ulink
URL="http://www.bitwizard.nl/sig11/"> no
<literal>FAQ</literal> dos problemas com
SIG11.</ulink></para>
</answer>
</qandaentry>
<qandaentry>
<question id="trap-12-panic">
<para>O meu sistema trava com o erro <errorname>Fatal trap
12: page fault in kernel mode</errorname>, ou
<errorname>panic:</errorname>, e sai mostrando uma
quantidade enorme de informa&ccedil;&otilde;es. O que eu
fa&ccedil;o?</para>
</question>
<answer>
<para>A equipe de desenvolvimento do FreeBSD tem muito
interesse nesse tipo de erro, mas &eacute;
necess&aacute;rio obter algumas informa&ccedil;&otilde;es
suplementares, do que apenas o erro que voc&ecirc;
est&aacute; tendo. Copie sua mensagem de erro inteira,
consulte o <literal>FAQ</literal> sobre <link
linkend="KERNEL-PANIC-TROUBLESHOOTING"><foreignphrase>kernel</foreignphrase>
panics</link>, compile um
<foreignphrase>kernel</foreignphrase> em modo de
debuga&ccedil;&atilde;o e tente analisar o problema.
Parece uma tarefa dif&iacute;cil, mas n&atilde;o &eacute;
necess&aacute;rio conhecimento de
programa&ccedil;&atilde;o; basta seguir as
instru&ccedil;&otilde;es.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="screen-loses-sync">
<para>Por que a tela fica preta e perde sincronia quando eu
inicio o sistema?</para>
</question>
<answer>
<para>Esse &eacute; um problema conhecido da placa de
v&iacute;deo ATI Mach 64. O problema &eacute; que essa
placa usa o endere&ccedil;o <literal>2e8</literal>, o
mesmo utilizado pela quarta porta serial dos computadores
pessoais. Devido a um bug (ou uma vantagem?) da
&man.sio.4; ,essa porta ser&aacute; sempre reconhecida,
ainda que n&atilde;o exista a quarta porta serial no seu
computador, ou <emphasis>mesmo</emphasis> se o sio3 (a
quarta porta) estiver desabilitado.</para>
<para>At&eacute; que o bug seja corrigido, voc&ecirc; pode
usar essa solu&ccedil;&atilde;o:</para>
<orderedlist>
<listitem>
<para>Entre no modo de configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase> com
op&ccedil;&atilde;o <option>-c</option> na tela de
inicializa&ccedil;&atilde;o(boot). (Isto colocara o
<foreignphrase>kernel</foreignphrase> no modo de
configura&ccedil;&atilde;o).</para>
</listitem>
<listitem>
<para>Desabilite a <devicename>sio0</devicename>,
<devicename>sio1</devicename>,
<devicename>sio2</devicename> e
<devicename>sio3</devicename> (todas elas). Dessa
forma ser&aacute; ativada, logo, voc&ecirc; n&atilde;o
ter&aacute; -&gt; problemas.</para>
</listitem>
<listitem>
<para>Digite exit para continuar o boot.</para>
</listitem>
</orderedlist>
<para>Caso queira usar as portas seriais, ser&aacute;
necess&aacute;rio construir um
<foreignphrase>kernel</foreignphrase> customizado, com as
seguintes altera&ccedil;&otilde;es: no fonte
<filename>/usr/src/sys/i386/isa/sio.c</filename> encontre
a ocorr&ecirc;ncia da express&atilde;o
<literal>0x2e8</literal> e apague essa express&atilde;o e
a v&iacute;rgula que a antecede (mantenha a outra).
Depois compile o novo
<foreignphrase>kernel</foreignphrase> normalmente.</para>
<para>Mesmo depois dessa corre&ccedil;&atilde;o, &eacute;
prov&aacute;vel que o X Windows ainda n&atilde;o funcione
como esperado. Se for o caso, garanta que a vers&atilde;o
do Xfree86 em quest&atilde;o seja ao menos o XFree86 3.3.3
ou uma vers&atilde;o superior. Esse XFree86 e os
posteriores tem suporte nativo &agrave;s placas de
v&iacute;deo Mach64, e tem inclusive um X Server dedicado
para tal equipamento.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="reallybigram">
<para>Por que o FreeBSD s&oacute; detecta 64MB de
mem&oacute;ria RAM se eu tenho 128MB instalados?</para>
</question>
<answer>
<para>Devido &agrave; maneira que o FreeBSD obt&eacute;m as
informa&ccedil;&otilde;es quanto ao tamanho da
mem&oacute;ria dispon&iacute;vel por interm&eacute;dio da
BIOS, pode acontecer de apenas 16 bits v&aacute;lidos
serem detectados (65535 Kbytes = 64MB) ou at&eacute;
menos, dependendo da BIOS (em alguns casos, apenas 16MB).
Mesmo nessa situa&ccedil;&atilde;o o FreeBSD tenta
detectar mais que 64MB de mem&oacute;ria, mas esse
reconhecimento pode falhar.</para>
<para>Pra corrigir esse problema pode ser usada a
op&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase> descrita a seguir.
Existe uma forma de obter informa&ccedil;&otilde;es
completas quanto ao tamanho da mem&oacute;ria, a partir da
BIOS, mas devido a algumas limita&ccedil;&otilde;es isso
nem sempre &eacute; poss&iacute;vel hoje em dia.
Futuramente ser&aacute;. De qualquer forma, temos ainda a
op&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase> para
situa&ccedil;&otilde;es onde toda a mem&oacute;ria
n&atilde;o puder ser reconhecida.</para>
<para><literal>options
"MAXMEM=<replaceable>n</replaceable>"</literal></para>
<para>Onde <replaceable>n</replaceable> equivale &agrave;
mem&oacute;ria (em Kilobytes) dispon&iacute;vel no
sistema. Para 128 MB de mem&oacute;ria, use o valor
<literal>131072</literal>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="panic-kmemmap-too-small">
<para>Por que o FreeBSD 2.0 entre em p&acirc;nico com a
mensagem <errorname>kmem_map too
small!</errorname>?</para>
</question>
<answer>
<note>
<para>A mensagem em quest&atilde;o tamb&eacute;m pode ser
<literal>mb_map too small!</literal></para>
</note>
<para>Essa mensagem de p&acirc;nico indica que o sistema
ficou sem mem&oacute;ria suficiente pros buffers de rede
(especificamente, os mbuf clusters). A quantidade de
mem&oacute;ria virtual dispon&iacute;vel para os clusters
mbuf pode ser elevada com a op&ccedil;&atilde;o::</para>
<para><literal>options
"NMBCLUSTERS=<replaceable>n</replaceable>"</literal></para>
<para>no arquivo de configura&ccedil;&atilde;o do seu
<foreignphrase>kernel</foreignphrase>, onde
<replaceable>n</replaceable> equivale ao valor entre
512-4096, dependendo do n&uacute;mero de conex&otilde;es
TCP simult&acirc;neas que voc&ecirc; espera poder
suportar. O valor 2048 &eacute; recomend&aacute;vel, e
provavelmente ser&aacute; o bastante para sanar o problema
que causa o p&acirc;nico em quest&atilde;o O n&uacute;mero
de clusters mbuf em uso pode ser monitorado com o comando
<command>netstat -m</command> (veja &man.netstat.1;). O
valor padr&atilde;o para a vari&aacute;vel NMBCLUSTERS no
<foreignphrase>kernel</foreignphrase> do FreeBSD &eacute;
<literal>512 + MAXUSERS * 16</literal>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="proc-table-full">
<para>Por que o erro <errorname>/kernel: proc: table is
full</errorname>ocorre?</para>
</question>
<answer>
<para>O <foreignphrase>kernel</foreignphrase> do FreeBSD
limita o n&uacute;mero m&aacute;ximo de processos
simult&acirc;neos existentes no sistema. O n&uacute;mero
em quest&atilde;o &eacute; baseado na op&ccedil;&atilde;o
<literal>MAXUSERS</literal>. do sistema. A
op&ccedil;&atilde;o <literal>MAXUSERS</literal> afeta
ainda in&uacute;meros outros limites do
<foreignphrase>kernel</foreignphrase> do FreeBSD, como por
exemplo os buffers dispon&iacute;veis para o stack de rede
do sistema (veja <link
linkend="panic-kmemmap-too-small">esta</link> resposta
anterior). Se o computador estiver sob grande carga,
provavelmente ser&aacute; necess&aacute;rio aumentar o
<literal>MAXUSERS</literal>. Essa altera&ccedil;&atilde;o
aumentar&aacute; os limites do sistema em
adi&ccedil;&atilde;o ao n&uacute;mero de processos
permitido.</para>
<para>Desde a vers&atilde;o 4.4 do FreeBSD, o valor para
<literal>MAXUSERS</literal> se tornou configur&aacute;vel,
n&atilde;o sendo mais necess&aacute;rio recompilar o
<foreignphrase>kernel</foreignphrase> para
alter&aacute;-lo, bastando definir a vari&aacute;vel
<varname>kern.maxusers</varname> no arquivo
<filename>/boot/loader.conf</filename>. Em
vers&otilde;oes mais recentes do FreeBSD, deve-se ajustar
o <literal>MAXUSERS</literal> em sua
configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase>.</para>
<para>Caso seu sistema n&atilde;o esteja muito carregado,
mas o n&uacute;mero de processos simult&acirc;neos ainda
assim &eacute; alto basta definir a vari&aacute;vel
<varname>kern.maxproc</varname> com o sysctl. Em casos
especiais, onde esses in&uacute;meros processos
est&atilde;o sendo executados por um &uacute;nico
usu&aacute;rio, ser&aacute; preciso alterar ainda alterar
o valor da vari&aacute;vel
<varname>kern.maxprocperuid</varname> para um a menos do
que o valor de <varname>kern.maxproc</varname>. (deve ser
ao menos 1 processo a menos, visto que ao menos o
&man.init.8; do sistema vai estar sempre em
execu&ccedil;&atilde;o.)</para>
<para>Para tornar uma altera&ccedil;&atilde;o de
vari&aacute;vel do sysctl permanente, defina-a no arquivo
<filename>/etc/sysctl.conf</filename> nas vers&otilde;es
mais recentes do FreeBSD, ou ent&atilde;o no arquivo
<filename>/etc/rc.local</filename> em vers&otilde;es mais
antigas do sistema.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="cmap-busy-panic">
<para>Por que acontece o erro <errorname>CMAP
busy</errorname> quando eu reinicio com um novo
<foreignphrase>kernel</foreignphrase>?</para>
</question>
<answer>
<para>A l&oacute;gica que tenta detectar uma data errada nos
arquivos <filename>/var/db/kvm_*.db</filename> as vezes
&eacute; falha, o que leva o sistema a entrar em
p&acirc;nico.</para>
<para>Se for o caso, reinicie seu sistema em modo
monousu&aacute;rio e fa&ccedil;a:</para>
<screen>&prompt.root; <userinput>rm /var/db/kvm_*.db</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="brkadrint-illegal-host-access">
<para>O que a mensagem <errorname>ahc0: brkadrint, Illegal
Host Access at seqaddr 0x0</errorname>
significa??</para>
</question>
<answer>
<para>Trata-se de um conflito com o Ultrastor SCSI Host
Adapter.</para>
<para>Durante o processo de
inicializa&ccedil;&atilde;o(boot), entre no menu de
configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase> e desabilite a
<devicename>uha0</devicename>, que esta causando o
problema.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="aci0-illegal-cable">
<para>Quando eu inicio o sistema, encontro o erro
<errorname>ahc0: illegal cable configuration</errorname>,
mas o meu cabo est&aacute; certo. O que est&aacute;
havendo?</para>
</question>
<answer>
<para>A placa-m&atilde;e em quest&atilde;o n&atilde;o
consegue se dar bem com o suporte a
termina&ccedil;&atilde;o autom&aacute;tica do barramento.
Altere sua BIOS SCSI para a termina&ccedil;&atilde;o
correta, de acordo com a configura&ccedil;&atilde;o do
equipamento, ao inv&eacute;s de usar
termina&ccedil;&atilde;o autom&aacute;tica. O driver
AIC7XXX n&atilde;o consegue descobrir se o reconhecimento
externo dos cabos (e conseq&uuml;ente
auto-termina&ccedil;&atilde;o) est&aacute;
dispon&iacute;vel, e portanto ele simplesmente assume que
o suporte existe, caso a configura&ccedil;&atilde;o da
EEPROM serial esteja definida como automatic termination.
Sem o reconhecimento de cabo externo o driver ir&aacute;
sempre configurar a termina&ccedil;&atilde;o de forma
incorreta, o que compromete a confiabilidade do barramento
SCSI.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="mail-loopback">
<para>Por que o Sendmail retorna um erro que diz
<quote><errorname>mail loops back to
myself</errorname></quote>?</para>
</question>
<answer>
<para>Essa pergunta &eacute; respondida no
<literal>FAQ</literal> do pr&oacute;prio Sendmail, e
diz:-</para>
<literallayout> * Eu estou tendo problemas de configura&ccedil;&otilde;es local "Local configuration error" como essas:
553 relay.domain.net config error: mail loops back to myself
554 &lt;user@domain.net&gt;... Local configuration error
Como posso resolver esse problema?
Voc&ecirc; definiu que as mensagens enviadas para o dom&iacute;nio
em quest&atilde;o (domain.net) devem ser repassadas para uma outra
esta&ccedil;&atilde;o espec&iacute;fica (nesse caso para
relay.domain.net) usando um registro MX, mas essa m&aacute;quina de
relay n&atilde;o se reconhece como a esta&ccedil;&atilde;o
respons&aacute;vel pelas mensagens do dom&iacute;nio domain.net.
Adicione domain.net no arquivo /etc/mail/local-host-names
(caso voc&ecirc; esteja usando FEATURE(use_cw_file)) ou ent&atilde;o
adicione a linha "Cw domain.net" em /etc/mail/sendmail.cf.
</literallayout>
<para>Atualmente a vers&atilde;o mais recente do <ulink
URL="ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq"><literal>FAQ</literal>
do sendmail</ulink> &eacute; mantida em sincronia com as
vers&otilde;es mais atuais do MTA, mas ela ainda &eacute;
enviada regularmente para os grupos de not&iacute;cias
<ulink
URL="news:comp.mail.sendmail">comp.mail.sendmail</ulink>,
<ulink URL="news:comp.mail.misc">comp.mail.misc</ulink>,
<ulink URL="news:comp.mail.smail">comp.mail.smail</ulink>,
<ulink URL="news:comp.answers">comp.answers</ulink>, e
<ulink URL="news:news.answers">news.answers</ulink>.
Ainda &eacute; poss&iacute;vel receber um c&oacute;pia por
e-mail do <literal>FAQ</literal>, enviando uma mensagem
para <email>mail-server@rtfm.mit.edu</email> com o comando
<literal>send
usenet/news.answers/mail/sendmail-faq</literal> no corpo
da mensagem.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="remote-fullscreen">
<para>Porque algumas aplica&ccedil;&otilde;es que usam tela
inteira n&atilde;o se comportam muito bem em
esta&ccedil;&otilde;es remotas?</para>
</question>
<answer>
<para>A esta&ccedil;&atilde;o remota deve estar definindo o
terminal como algum tipo diferente do
<literal>cons25</literal> que &eacute; o tipo de terminal
usado pelo console do FreeBSD.</para>
<para>Existem in&uacute;meras corre&ccedil;&otilde;es para
esse problema:</para>
<itemizedlist>
<listitem>
<para>Depois de logar-se na esta&ccedil;&atilde;o
remota, defina a vari&aacute;vel de ambiente TERM como
<literal>ansi</literal> ou <literal>sco</literal> caso
a m&aacute;quina em quest&atilde;o tenha
informa&ccedil;&otilde;es quanto a esse tipo de
terminal.</para>
</listitem>
<listitem>
<para>Use um emulador VT100 como o
<application>screen</application> no console do
FreeBSD. O <application>screen</application> oferece
a possibilidade de usar m&uacute;ltiplas
sess&otilde;es concorrentes em um mesmo terminal, e
&eacute; um grande programa. Cada janela do
<application>screen</application> se comporta como um
terminal VT100, portanto a vari&aacute;vel TERM deve
ser definida como <literal>vt100</literal>.</para>
</listitem>
<listitem>
<para>Instale a base do <literal>cons25</literal> na
esta&ccedil;&atilde;o remota. A maneira correta de
faze-lo depende do sistema operacional em
quest&atilde;o na esta&ccedil;&atilde;o remota.
Consulte os manuais de administra&ccedil;&atilde;o do
sistema remoto em quest&atilde;o para descobrir como
faze-lo.</para>
</listitem>
<listitem>
<para>Levante um X server do lado FreeBSD da coisa e
acesse a esta&ccedil;&atilde;o remota usando um
terminal baseado no ambiente X, como o
<command>xterm</command> ou o <command>rxvt</command>.
A vari&aacute;vel TERM deve ser definida
como<literal>xterm</literal> ou
<literal>vt100</literal> no lado remoto.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="calcru-negative">
<para>Por que meu computador apresenta a mensagem
<errorname>calcru: negative time...</errorname>?</para>
</question>
<answer>
<para>Esse comportamento pode ser causado por diversos
motivos relacionados a interrup&ccedil;&otilde;es de
<foreignphrase>hardware</foreignphrase> e/ou software.
Pode ser devido a algum bug, mas tamb&eacute;m pode
acontecer por causa da natureza de alguns devices. Por
exemplo, usar TCP/IP via porta paralela com uma MTU muito
grande &eacute; uma boa forma de provocar esse
comportamento. Aceleradores gr&aacute;ficos tamb&eacute;m
s&atilde;o eficientes para criar esse tipo de problema,
nesse caso, sendo necess&aacute;rio analisar as
configura&ccedil;&otilde;es de interrup&ccedil;&otilde;es
do software.</para>
<para>Um efeito colateral desse problema s&atilde;o
processos que morrem<quote>SIGXCPU exceeded cpu time
limit</quote>.</para>
<para>No FreeBSD 3.0 e sistemas posteriores a 29 de Novembro
de 1998, caso o problema n&atilde;o possa ser solucionado
de outra forma, uma corre&ccedil;&atilde;o pode ser
definir a seguinte vari&aacute;vel do sysctl:</para>
<screen>&prompt.root; <userinput>sysctl -w kern.timecounter.method=1</userinput></screen>
<para>Isso causa um impacto de performance, mas dependendo
do problema que causava esse comportamento, &eacute;
prov&aacute;vel que nem consiga-se notar a mudan&ccedil;a
nessa performance. Se o problema continuar, mantenha a
vari&aacute;vel do sysctl habilitada e defina a
op&ccedil;&atilde;o <literal>NTIMECOUNTER</literal> no
<foreignphrase>kernel</foreignphrase> para valores
crescentes. Se chegar a um ponto em que foi
necess&aacute;rio definir
<literal>NTIMECOUNTER=20</literal> e o problema ainda
n&atilde;o tiver sido resolvido, as
interrup&ccedil;&otilde;es s&atilde;o serias demais e seu
comportamento n&atilde;o &eacute; confi&aacute;vel.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="pcm0-not-found">
<para>Acontece da pcm n&atilde;o ser encontrada, com a
mensagem <errorname>pcm0 not found</errorname> ou
ent&atilde;o minha placa de som &eacute; encontrada na
<devicename>pcm1</devicename> mas no meu
<foreignphrase>kernel</foreignphrase> a entrada se refere
a <literal>device pcm0</literal>. O que est&aacute;
havendo?</para>
</question>
<answer>
<para>Isso acontece no FreeBSD 3.X com placas de som PCI. A
<devicename>pcm0</devicename> &eacute; reservada
exclusivamente para placas de som ISA e por isso se a
placa em quest&atilde;o &eacute; PCI, ela ser&aacute;
reconhecida como <devicename>pcm1</devicename> e a
mensagem em quest&atilde;o pode acontecer.
</para>
<note>
<para>N&atilde;o &eacute; poss&iacute;vel evitar a
mensagem de advert&ecirc;ncia simplesmente alterando o
seu <foreignphrase>kernel</foreignphrase> e definindo
<literal>device pcm1</literal> pois isso
resultar&aacute; na <devicename>pcm1</devicename> sendo
reservada para placas ISA, e o seu equipamento PCI
ser&aacute; reconhecido na <devicename>pcm2</devicename>
(e a mensagem de advert&ecirc;ncia <errorname>pcm1 not
found</errorname> continuar&aacute;).</para>
</note>
<para>
Caso sua placa de som seja PCI ainda ser&aacute; preciso
criar a device <devicename>snd1</devicename> ao
inv&eacute;s da <devicename>snd0</devicename>:</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>./MAKEDEV snd1</userinput></screen>
<para>Esse comportamento n&atilde;o ocorre na s&eacute;rie
4.X do FreeBSD, muito trabalho foi feito para tornar o
sistema mais <emphasis>PnP-centric</emphasis> e a device
<devicename>pcm0</devicename> n&atilde;o &eacute; mais
reservada exclusivamente para placas ISA.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="pnp-not-found">
<para>Porque a minha placa PnP n&atilde;o &eacute; mais
encontrada (ou &eacute; encontrada como
<literal>unknown</literal>) desde a
atualiza&ccedil;&atilde;o para o FreeBSD 4.X?</para>
</question>
<answer>
<para>O FreeBSD 4.X &eacute; muito mais
<emphasis>PnP-centric</emphasis> do que as vers&otilde;es
anteriores, e isso causou alguns efeitos distintos em
algumas placas PnP (como algumas placas de som e alguns
modems interno por exemplo) que n&atilde;o funcionam mais
da forma como funcionavam no FreeBSD 3.X.</para>
<para>O motivo para esse comportamento &eacute; explicado no
seguinte e-mail, que foi enviada na lista
freebsd-questions pelo Reter Wemm, respondendo uma
pergunta sobre um modem interno que n&atilde;o era mais
reconhecido no FreeBSD depois de atualizar o sistema para
vers&atilde;o 4.X (os coment&aacute;rios entre
<literal>[]</literal>foram adicionados com a
inten&ccedil;&atilde;o de explicar melhor o contexto da
mensagem).</para>
<note>
<para>Os &iacute;ndices dessa cita&ccedil;&atilde;o foram
atualizados de seu texto original</para>
</note>
<blockquote>
<para>A bios PNP configurou ele [o modem] e o deixou
conectado na porta em quest&atilde;o, por isso o estilo
antigo [no 3.X] <quote>reconhece</quote> o equipamento
ISA.</para>
<para>No FreeBSD 4 o c&oacute;digo ISA &eacute; bem mais
PnP-centric. Era poss&iacute;vel [no 3.X] encontrar uma
placa ISA que funcionava com <quote>determinada</quote>
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 &agrave;s placas
program&aacute;veis de forma que essa confus&atilde;o e
dupla detec&ccedil;&atilde;o de
<foreignphrase>hardware</foreignphrase> n&atilde;o
ocorra. Essa mudan&ccedil;a implica tamb&eacute;m 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>
</blockquote>
<para>Para fazer o equipamento voltar a funcionar, &eacute;
necess&aacute;rio encontrar seu PnP id e
adicion&aacute;-lo a lista de devices ISA reconhecidas
como PnP. Essa informa&ccedil;&atilde;o pode ser obtida
usando &man.pnpinfo.8; que detecta a
configura&ccedil;&atilde;o dos equipamentos. Por exemplo,
veja a sa&iacute;da do &man.pnpinfo.8; de um modem
interno:</para>
<screen>&prompt.root; <userinput>pnpinfo</userinput>
Checking for Plug-n-Play devices...
Card assigned CSN #1
Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff
PnP Version 1.0, Vendor Version 0
Device Description: Pace 56 Voice Internal Plug & Play Modem
Logical Device ID: PMC2430 0x3024a341 #0
Device supports I/O Range Check
TAG Start DF
I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8
[16-bit addr]
IRQ: 4 - only one type (true/edge)</screen>
<para>[algumas linhas com TAG foram eliminadas]</para>
<screen>TAG End DF
End Tag
Successfully got 31 resources, 1 logical fdevs
-- card select # 0x0001
CSN PMC2430 (0x3024a341), Serial Number 0xffffffff
Logical device #0
IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8
IRQ 5 0
DMA 4 0
IO range check 0x00 activate 0x01</screen>
<para>A informa&ccedil;&atilde;o que voc&ecirc; quer
&eacute; a linha <quote>Vendor ID</quote> no come&ccedil;o
da sa&iacute;da do comando. O valor hexadecimal entre
par&ecirc;nteses (0x3024a341 esse caso) &eacute; PnP id e
o conjunto de caracteres que o antecede (PMC2430) &eacute;
a identifica&ccedil;&atilde;o ASCII &uacute;nica.</para>
<para>Alternativamente, se o &man.pnpinfo.8; n&atilde;o
listou sua placa em quest&atilde;o, o &man.pciconf.8; pode
ser usado preferivelmente. Esta &eacute; a sa&iacute;da
do comando <command>pciconf -vl</command> de uma placa de
som onboard:</para>
<screen>&prompt.root; <userinput>pciconf -vl</userinput>
chip1@pci0:31:5: class=0x040100 card=0x00931028 chip=0x24158086 rev=0x02 hdr=0x00
vendor = 'Intel Corporation'
device = '82801AA 8xx Chipset AC'97 Audio Controller'
class = multimedia
subclass = audio</screen>
<para>Aqui deve-se usar o valor do <varname>chip</varname>,
<quote>0x24158086</quote>.</para>
<para>Tais informa&ccedil;&otilde;es (Vendor ID ou valor do
chip) precisam ser adicionadas ao arquivo
<filename>/usr/src/sys/isa/sio.c</filename>.</para>
<para>Primeiro fa&ccedil;a uma c&oacute;pia de
seguran&ccedil;a do <filename>sio.c</filename> no caso de
algo dar errado e tamb&eacute;m para que voc&ecirc; possa
fazer um patch para enviar junto com o seu
Relat&oacute;rio de Problemas (voc&ecirc; vai enviar um
PR, n&atilde;o vai?) e depois edite o
<filename>sio.c</filename> e procure a linha</para>
<programlisting>static struct isa_pnp_id sio_ids[] = {</programlisting>
<para>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 s&atilde;o
ordenadas de acordo com a identifica&ccedil;&atilde;o
ASCII do fabricante do produto a qual deve ser
inclu&iacute;da como coment&aacute;rio na coluna do lado
do c&oacute;digo em quest&atilde;o, e junto com a
<emphasis>descri&ccedil;&atilde;o da placa</emphasis> ou
parte dela, conforme identificada na sa&iacute;da do
&man.pnpinfo.8;:</para>
<programlisting>{0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */
{0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
{0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
{0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
{0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */</programlisting>
<para>Adicione o ID hexadecimal do fabricante da placa no
local apropriado, salve o arquivo e recompile o
<foreignphrase>kernel</foreignphrase>, depois reinicie o
sistema. Agora a sua placa deve ter sido encontrada como
uma device <literal>sio</literal> exatamente como era
encontrada no FreeBSD 3.X</para>
</answer>
</qandaentry>
<qandaentry>
<question id="nlist-failed">
<para>Qual a causa do erro <errorname>nlist
failed</errorname> quando eu executo, por exemplo, o
<command>top</command> ou o
<command>systat</command>?</para>
</question>
<answer>
<para>O problema &eacute; que o programa que voc&ecirc;
est&aacute; tentando executar tenta ler alguma
informa&ccedil;&atilde;o espec&iacute;fica do
<foreignphrase>kernel</foreignphrase>, baseando-se no
<foreignphrase>kernel</foreignphrase> symbol em
quest&atilde;o, mas por algum motivo, essa
informa&ccedil;&atilde;o n&atilde;o pode ser encontrada;
esse erro &eacute; causado por um dos seguintes
problemas:</para>
<itemizedlist>
<listitem>
<para>O <foreignphrase>kernel</foreignphrase> e o
userland do sistema n&atilde;o est&atilde;o em
sincronia (por exemplo, voc&ecirc; compilou um
<foreignphrase>kernel</foreignphrase> novo e o
instalou sem de dar um
<maketarget>installworld</maketarget>, ou vice-versa),
e por isso a tabela de informa&ccedil;&otilde;es dos
<foreignphrase>kernel</foreignphrase> symbols &eacute;
diferente do que o programa pensa que &eacute;. Se
esse for o caso basta completar os procedimentos de
atualiza&ccedil;&atilde;o do sistema (veja o arquivo
<filename>/usr/src/UPDATING</filename> para a correta
seq&uuml;&ecirc;ncia de a&ccedil;&otilde;es).</para>
</listitem>
<listitem>
<para>O <command>/boot/loader</command> n&atilde;o
est&aacute; sendo usado para carregar o
<foreignphrase>kernel</foreignphrase> dessa
esta&ccedil;&atilde;o, ao inv&eacute;s dele, o boot2
(veja &man.boot.8;) est&aacute; sendo usado
diretamente. Apesar de n&atilde;o ter problema algum
deixar de usar o <command>/boot/loader</command>, ele
costuma se comportar melhor na hora de tornar os
<foreignphrase>kernel</foreignphrase> symbols
dispon&iacute;veis para aplica&ccedil;&otilde;es em
n&iacute;vel de usu&aacute;rio.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="connection-delay">
<para>Porque demora tanto para a conex&atilde;o se
estabelecer via <command>ssh</command> ou
<command>telnet</command>?</para>
</question>
<answer>
<para>O sintoma: existe um atraso muito grande entre o
estabelecimento da conex&atilde;o TCP e o momento que o
programa cliente pede a senha (ou no caso do
&man.telnet.1;, quando a tela de login aparece).</para>
<para>O problema: o programa servidor dessa
transa&ccedil;&atilde;o leva muito tempo tentando resolver
o nome da esta&ccedil;&atilde;o cliente que est&aacute; se
conectando. A maioria dos servidores, incluindo os
servidores Telnet e SSH que vem junto com o FreeBSD tentam
resolver o n&uacute;mero IP do cliente no nome da
esta&ccedil;&atilde;o, para, entre outras coisas, gravar
essa informa&ccedil;&atilde;o em um arquivo de log para
refer&ecirc;ncias futuras por parte do
administrador.</para>
<para>A solu&ccedil;&atilde;o: Se o problema acontece apenas
quando voc&ecirc; (o cliente) tenta se conectar no
servidor, o problema &eacute; com o lado cliente da
transa&ccedil;&atilde;o; se o problema acontece com
qualquer esta&ccedil;&atilde;o que tente se conectar ao
computador (servidor) ent&atilde;o o problema &eacute; do
lado servidor.</para>
<para>Se o problema &eacute; com o cliente, a &uacute;nica
maneira de corrigir o problema &eacute; configurar
corretamente o servidor DNS que responde autoritativamente
pelo endere&ccedil;o da esta&ccedil;&atilde;o. Se for uma
rede local considere esse comportamento um problema do
servidor, e continue lendo; se a conex&atilde;o deve ser
estabelecida na rede global (internet) , ent&atilde;o
entre em contato com o seu Provedor de Servi&ccedil;os
Internet e solicite que eles corrijam o problema.</para>
<para>Se o problema &eacute; do lado servidor, e a rede em
quest&atilde;o, se trata de uma rede local, ser&aacute;
necess&aacute;rio configurar o servidor de forma que ele
consiga resolver os endere&ccedil;os dos clientes em
nomes. Veja as p&aacute;ginas de manual do &man.hosts.5;
e &man.named.8; para obter mais informa&ccedil;&otilde;es.
Se a conex&atilde;o &eacute; na Internet, provavelmente o
resolvedor (lado cliente do servi&ccedil;o de nomes) do
seu servidor n&atilde;o est&aacute; funcionando
corretamente. Pra fazer o teste, tente descobrir o
endere&ccedil;o IP do site <hostid>www.yahoo.com</hostid>
por exemplo. Se n&atilde;o funcionar, esta ai o
problema.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="stray-irq">
<para>O que a mensagem <errorname>stray IRQ</errorname> quer
dizer?</para>
</question>
<answer>
<para>Stray IRQs s&atilde;o sintomas de
<foreignphrase>hardware</foreignphrase> que interrompe o
pedido de interrup&ccedil;&atilde;o no meio de um ciclo de
autoriza&ccedil;&atilde;o de
interrup&ccedil;&atilde;o.</para>
<para>Existem tr&ecirc;s formas de tratar o problema:</para>
<itemizedlist>
<listitem>
<para>Aprenda a conviver com as mensagens de
advert&ecirc;ncia. De qualquer forma, todas as
mensagens exceto as 5 primeiras para cada IRQ
s&atilde;o suprimidas pelo sistema mesmo.</para>
</listitem>
<listitem>
<para>Evite o inconveniente alterando de 5 para 0 na
fun&ccedil;&atilde;o
<function>isa_strayintr()</function> o n&uacute;mero
de mensagens antes de suprimir as
advert&ecirc;ncias.</para>
</listitem>
<listitem>
<para>Evite as advert&ecirc;ncias instalando algum
equipamento de porta paralela que use a IRQ 7 e o
driver PPP (&eacute; o usual, na maioria dos sistemas)
e instale algum driver IDE ou qualquer outro
dispositivo que use a IRQ 15 e seu respectivo
suporte.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="file-table-full">
<para>Por que a mensagem <errorname>file: table is
full</errorname> aparece repetidas vezes no
dmesg?</para>
</question>
<answer>
<para>
Esse erro indica que voc&ecirc; excedeu o n&uacute;mero
m&aacute;ximo de descrevedores (descriptors) de arquivos
no sistema. Leia a se&ccedil;&atilde;o <ulink
url="../handbook/configtuning-kernel-limits.html#KERN-MAXFILES">
kern.maxfiles </ulink>da<ulink
url="../handbook/configtuning-kernel-limits.html">
cap&iacute;tulo de Ajuste de Limites do
<foreignphrase>Kernel</foreignphrase></ulink> no
&a.ptbr.p.handbook; do FreeBSD para obter mais
informa&ccedil;&otilde;es sobre o problema.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="laptop-clock-skew">
<para>Por que o rel&oacute;gio do meu laptop mantem a hora
incorreta?</para>
</question>
<answer>
<para>Rode o comando &man.dmesg.8;, e procure algumas linhas
com a express&atilde;o <literal>Timecounter</literal>. A
&uacute;ltima linha encontrada ser&aacute; o
rel&oacute;gio que o FreeBSD escolheu, e com certeza ele
ser&aacute; <literal>TSC</literal>.</para>
<screen>&prompt.root; <userinput>dmesg | grep Timecounter</userinput>
Timecounter "i8254" frequency 1193182 Hz
Timecounter "TSC" frequency 595573479 Hz</screen>
<para>Essa informa&ccedil;&atilde;o pode ser confirmada ao
verificar a vari&aacute;vel
<varname>kern.timecounter.hardware</varname> do
&man.sysctl.3;.</para>
<screen>&prompt.root; <userinput>sysctl kern.timecounter.hardware</userinput>
kern.timecounter.hardware: TSC</screen>
<para>A BIOS do laptop altera a frequ&ecirc;ncia do
rel&oacute;gio 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 n&atilde;o faz distin&ccedil;&atilde;o
entre frequ&ecirc;ncia do clock e modos especiais de
trabalho, e por isso pode atrasar ou adiantar a hora do
sistema.</para>
<para>Esse exemplo, o laptop em quest&atilde;o tem dois
rel&oacute;gios; portanto o <literal>i8254</literal> pode
ser definido como padr&atilde;o na vari&aacute;vel
<varname>kern.timecounter.hardware</varname> do
&man.sysctl.3;.</para>
<screen>&prompt.root; <userinput>sysctl -w kern.timecounter.hardware=i8254</userinput>
kern.timecounter.hardware: TSC -&gt; i8254</screen>
<para>Agora o seu laptop deve conseguir manter a data e hora
de forma mais precisa.</para>
<para>Pra tornar essa altera&ccedil;&atilde;o
autom&aacute;tica, adicione a seguinte linha no arquivo
<filename>/etc/sysctl.conf</filename>.</para>
<programlisting>kern.timecounter.hardware=i8254</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="null-null">
<para>Por que o meu laptop n&atilde;o funciona muito bem na
hora de identificar cart&otilde;es PCMCIA?</para>
</question>
<answer>
<para>Esse problema &eacute; comum em laptops que tem mais
de um sistema operacional instalado. Alguns sistemas
n&atilde;o-BSD fazem os cart&otilde;es PCMCIA ficarem em
um estado inconsistente, causando um reconhecimento
problem&aacute;tico dos dispositivos por parte do
<command>pccardd</command>, como por exemplo, detectando
os cart&otilde;es como
<errorname>"(null)""(null)"</errorname> ao inv&eacute;s da
sua marca e modelo verdadeiros.</para>
<para>&Eacute; necess&aacute;rio desligar completamente a
alimenta&ccedil;&atilde;o de energia do equipamento para
garantir que o mesmo seja completamente resetado.
Desligue completamente o laptop (n&atilde;o suspenda seu
funcionamento, n&atilde;o o deixe entrar em modo de
espera, conhecido como standby, a
alimenta&ccedil;&atilde;o deve ser completamente
interrompida), espere alguns - poucos - minutos e reinicie
o laptop. Tudo deve correr bem.</para>
<para>Alguns laptops s&atilde;o grandes mentirosos quando
afirmam estar desligados. Se o procedimento acima
n&atilde;o funcionar, tire a bateria do laptop, espere
alguns minutos e ligue o sistema novamente.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="boot-read-error">
<para>Por que o bootloader do FreeBSD mostra a mensagem
<errorname>Read error</errorname> e p&aacute;ra
completamente logo ap&oacute;s a tela da BIOS?</para>
</question>
<answer>
<para>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 parti&ccedil;&atilde;o FreeBSD.</para>
<para>A geometria correta do disco pode ser verificada na
BIOS do computador. Procure pelo n&uacute;mero de
cilindros, cabe&ccedil;as e de setores do disco em
quest&atilde;o.
</para>
<para>No fdisk do &man.sysinstall.8;, aperte a tecla
<keycap>G</keycap> para definir a geometria do disco
manualmente.
</para>
<para>Ir&aacute; aparecer uma janela de di&aacute;logo
perguntando o n&uacute;mero de cilindros, cabe&ccedil;as e
setores do disco. Defina esses valores, conforme anotados
da BIOS do sistema e separados por barras.</para>
<para>5000 cilindros, 250 cabe&ccedil;as e 60 setores, por
exemplo, seria definido como
<userinput>5000/250/60.</userinput>
</para>
<para>Aperte ENTER para confirmar os valores e depois aperte
a tecla <keycap>W</keycap> para escrever as novas
informa&ccedil;&otilde;es na tabela de
parti&ccedil;&otilde;es do disco.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="bootmanager-restore">
<para>Outro sistema operacional destruiu o meu gerenciador
de inicializa&ccedil;&atilde;o(Boot Manager). Como eu o
recupero?
</para>
</question>
<answer>
<para>Entre no &man.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
<keycap>espa&ccedil;os(space)</keycap>. Depois aperte a
tecla <keycap>W</keycap> para escrever as novas
informa&ccedil;&otilde;es no disco. Vai aparecer uma
tela, perguntando o que deve ser instalado na MBR do
disco. Escolha o Gerenciador de
inicializa&ccedil;&atilde;o(Boot Manager), e ele
ser&aacute; reinstalado.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="indefinite-wait-buffer">
<para>O que o erro <errorname>swap_pager: indefinite wait
buffer:</errorname> quer dizer?</para>
</question>
<answer>
<para>Quer dizer que existe um processo tentando paginar uma
&aacute;rea da mem&oacute;ria para o disco, e que esse
processo demorou mais de 20 segundos; portanto falhou.
&Eacute; prov&aacute;vel que a causa desse erro sejam
blocos defeituosos no disco, falha nos cabos, ou
at&eacute; mesmo algum outro erro de I/O relacionado ao
<foreignphrase>hardware</foreignphrase>. Se o disco
estiver danificado, ser&atilde;o apresentadas mensagens de
erro referentes ao mesmo em
<filename>/var/log/messages</filename> e tamb&eacute;m na
sa&iacute;da do <command>dmesg</command>. Do
contr&aacute;rio, verifique seus cabos e
conectores.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="commercial">
<title>Aplica&ccedil;&otilde;es Comerciais</title>
<note>
<para>Esta se&ccedil;&atilde;o se encontra ainda muito
escassa, embora esperamos, naturalmente, que as empresas
fa&ccedil;am adi&ccedil;&otilde;es a ela! :) Os
desenvolvedores do FreeBSD n&atilde;o tem interesses
financeiros em nenhuma das empresas listadas aqui, mas apenas
as listam como um servi&ccedil;o p&uacute;blico (e sente que o
interesse comercial no FreeBSD pode ter muitos efeitos
positivos na viabilidade do uso do sistema a longo prazo).
N&oacute;s encorajamos que os vendedores de softwares
comerciais mandem seus softwares para inclus&atilde;o.
Consulte <ulink URL="../../../../commercial/index.html"> a
p&aacute;gina de Fabricantes</ulink> para obter uma lista
maior.</para>
</note>
<qandaset>
<qandaentry>
<question id="officesuite">
<para>Onde eu posso conseguir <foreignphrase>Office
Suite</foreignphrase>) para o FreeBSD?</para>
</question>
<answer>
<itemizedlist>
<listitem>
<para><ulink url="http://www.freebsdmall.com/">A FreeBSD
Mall</ulink> oferece uma vers&atilde;o nativa do
<ulink
url="http://www.vistasource.com/">VistaSource</ulink>
ApplixWare 5 para o FreeBSD.</para>
<para>O ApplixWare &eacute; uma poderosa su&iacute;te
comercial de aplica&ccedil;&otilde;es para
escrit&oacute;rio no FreeBSD. Ela cont&eacute;m um
processador de texto, planilha de c&aacute;lculos, um
programa de apresenta&ccedil;&atilde;o e um pacote
para desenho vetorial e outros aplicativos.</para>
<para>O ApplixWare &eacute; vendido com parte integrante
da edi&ccedil;&atilde;o de Desktops BSD da FreeBSD
Mall.</para>
</listitem>
<listitem>
<para>A vers&atilde;o para Linux do <ulink
url="http://www.sun.com/staroffice/">StarOffice</ulink>
funciona sem problemas no FreeBSD. A maneira mais
f&aacute;cil de instalar a vers&atilde;o para Linux do
StarOffice &eacute; pela <ulink
url="../handbook/ports.html">Cole&ccedil;&atilde;o
de <literal>Ports</literal> do FreeBSD</ulink>.
Vers&otilde;es futuras da su&iacute;te Open-Source de
escrit&oacute;rio,<ulink
url="http://www.openoffice.org/">OpenOffice</ulink>
dever&atilde;o funcionar tamb&eacute;m.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="motif">
<para>Onde posso conseguir o Motif para o FreeBSD?</para>
</question>
<answer>
<para>O Open Group lan&ccedil;ou o c&oacute;digo fonte do
Motif 2.1.30, que pode ser instalado como o pacote
<literal>open-motif</literal>, ou ent&atilde;o ser
compilado pelo <literal>Ports</literal>. Consulte a
<ulink url="../handbook/ports.html"> se&ccedil;&atilde;o
sobre o <literal>Ports</literal> no
&a.ptbr.p.handbook;</ulink> para obter mais
informa&ccedil;&otilde;es sobre o assunto.
<note>
<para>O Open Motif pode ser redistribu&iacute;do apenas
se sua distribui&ccedil;&atilde;o estiver sendo usada
em sistemas operacionais <ulink
url="http://www.opensource.org/">open
source</ulink>.</para>
</note>
</para>
<para>Em contrapartida, existem distribui&ccedil;&otilde;es
comerciais do Motif dispon&iacute;veis. Tais
distribui&ccedil;&otilde;es contudo n&atilde;o s&atilde;o
gratuitas, mas suas licen&ccedil;as permitem que ele seja
utilizando em softwares de c&oacute;digo fechado. Contate
a <link linkend="apps2go">Apps2go</link> para obter
informa&ccedil;&otilde;es quanto a vers&atilde;o mais
barata do ELF Motif 2.1.20 para FreeBSD (tanto para i386
quanto para Alpha).<anchor id="apps2go"></para>
<para>Existem duas distribui&ccedil;&otilde;es, a
<quote>development edition</quote> e a <quote>runtime
edition</quote> (bem mais barata). Tais
distribui&ccedil;&otilde;es incluem:</para>
<itemizedlist>
<listitem>
<para>OSF/Motif manager, xmbind, panner, wsm.</para>
</listitem>
<listitem>
<para>Kit de Desenvolvimento com uil, mrm, xm, xmcxx,
arquivos include e arquivos.</para>
</listitem>
<listitem>
<para>Bibliotecas ELF est&aacute;ticas e din&acirc;micas
(para serem usadas com FreeBSD 3.0 e
superiores).</para>
</listitem>
<listitem>
<para>Applets de demonstra&ccedil;&atilde;o.</para>
</listitem>
</itemizedlist>
<para>Lembre-se de especificar que voc&ecirc; quer a
vers&atilde;o para FreeBSD do Motif quando encomendado
(n&atilde;o esque&ccedil;a de mencionar a arquitetura que
voc&ecirc; quer tamb&eacute;m)! Vers&otilde;es para
NetBSD e OpenBSD tamb&eacute;m s&atilde;o vendidas pela
<emphasis>Apps2go</emphasis>. Atualmente o produto
&eacute; apenas dispon&iacute;vel para download via
FTP.</para>
<variablelist>
<varlistentry>
<term>Mais informa&ccedil;&otilde;es:</term>
<listitem>
<para><ulink URL="http://www.apps2go.com/">
P&aacute;gina WWW da Apps2go</ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>ou</term>
<listitem>
<para>
<email>sales@apps2go.com</email> ou
<email>support@apps2go.com</email>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ou</term>
<listitem>
<para>fone [EUA] (817) 431 8775 ou +1 817
431-8775</para>
</listitem>
</varlistentry>
</variablelist>
<para>Contate <link linkend="metrox">Metro Link</link> para
obter informa&ccedil;&otilde;es quanto a vers&atilde;o ELF
ou a vers&atilde;o a.out do Motif 2.1 para o
FreeBSD.</para>
<para>Tal distribui&ccedil;&atilde;o inclui:</para>
<itemizedlist>
<listitem>
<para>Gerenciador OSF/Motif, xmbind, panner, wsm.</para>
</listitem>
<listitem>
<para>Kit de desenvolvimento com uil, mrm, xm, xmcxx,
arquivos include e arquivos Imake.</para>
</listitem>
<listitem>
<para>Bibliotecas est&aacute;ticas e din&acirc;micas
(n&atilde;o se esque&ccedil;a de especificar que
voc&ecirc; 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).</para>
</listitem>
<listitem>
<para>Applets de Demonstra&ccedil;&atilde;o.</para>
</listitem>
<listitem>
<para>P&aacute;ginas de manual previamente
formatadas.</para>
</listitem>
</itemizedlist>
<para>Certifique-se de especificar que voc&ecirc; quer a
vers&atilde;o para FreeBSD do Motif quando
encomend&aacute;-lo! Vers&otilde;es para Linux
tamb&eacute;m s&atilde;o vendidas pela <emphasis>Metro
Link</emphasis>. O produto est&aacute;
dispon&iacute;vel em CDROM ou download via FTP.</para>
<para>Contate a <link linkend="xig">Xi Graphics</link> para
obter informa&ccedil;&otilde;es quanto a vers&atilde;o
a.out do Motif 2.0 para o FreeBSD.</para>
<para>A distribui&ccedil;&atilde;o inclui:</para>
<itemizedlist>
<listitem>
<para>Gerenciador OSF/Motif, xmbind, panner, wsm.</para>
</listitem>
<listitem>
<para>Kit de desenvolvimento com uil, mrm, xm, xmcxx,
arquivos include e arquivos Imake.</para>
</listitem>
<listitem>
<para>Bibliotecas est&aacute;ticas e din&acirc;micas
(para o FreeBSD 2.2.8 e anteriores).</para>
</listitem>
<listitem>
<para>Applets de Demonstra&ccedil;&atilde;o.</para>
</listitem>
<listitem>
<para>P&aacute;ginas de manual previamente
formatadas.</para>
</listitem>
</itemizedlist>
<para>certifique-se de especificar que voc&ecirc; quer a
vers&atilde;o para FreeBSD do Motif quando
encomend&aacute;-lo! Vers&otilde;es para BSDI e para
Linux tamb&eacute;m s&atilde;o vendidas pela <emphasis>Xi
Graphics</emphasis>. Atualmente o produto se trata de
um conjunto de 4 disquetes... futuramente se
tornar&aacute; uma distribui&ccedil;&atilde;o &uacute;nica
em CD, como o CDE da mesma empresa.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="cde">
<para>Onde posso adquirir o CDE para o FreeBSD?</para>
</question>
<answer>
<para><link linkend="xig">A Xi Graphics</link> costumava
vender o CDE para o FreeBSD, mas n&atilde;o o faz
mais.</para>
<para><ulink URL="http://www.kde.org/">O KDE</ulink>
&eacute; um Desktop de c&oacute;digo fonte aberto para X11
similar ao CDE em muitos aspectos. Talvez voc&ecirc;
tamb&eacute;m aprecie o visual e as caracter&iacute;sticas
do <ulink URL="http://www.xfce.org/">xfce</ulink>. KDE e
xfce est&atilde;o ambos dispon&iacute;veis no <ulink
URL="../../../../ports/index.html">sistema de
<literal>ports</literal> do FreeBSD</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="commercial-xserver">
<para>Existe algum servidor X comercial de
alta-performance?</para>
</question>
<answer>
<para>Sim, a <ulink URL="http://www.xig.com/">Xi
Graphics</ulink> e a <ulink
URL="http://www.metrolink.com/">Metro Link</ulink>
vendem produtos da Accelerated-X para o FreeBSD e para
outros sistemas baseados em Intel.</para>
<para>O que a Metro Link oferece &eacute; um servidor X de
alta-performance que possui um esquema de
configura&ccedil;&atilde;o extremamente f&aacute;cil,
fazendo uso da su&iacute;te de ferramentas de
gerenciamento de pacotes do FreeBSD, com suporte a
m&uacute;ltiplas placas de v&iacute;deo simult&acirc;neas
e &eacute; distribu&iacute;do apenas em forma
bin&aacute;ria, por meio conveniente de um download via
FTP. Sem esquecer que, o produto oferecido pela Metro
Link est&aacute; dispon&iacute;vel a um pre&ccedil;o muito
razo&aacute;vel, $39 d&oacute;lares.<anchor
id="metrox"></para>
<para>A Metro Link vende tamb&eacute;m o Motif e formato ELF
e a.out para o FreeBSD (veja pergunta anterior).</para>
<variablelist>
<varlistentry>
<term>informa&ccedil;&otilde;es:</term>
<listitem>
<para><ulink URL="http://www.metrolink.com/">
P&aacute;gina WWW da Metro Link</ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>ou</term>
<listitem>
<para><email>sales@metrolink.com</email> ou
<email>tech@metrolink.com</email>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ou</term>
<listitem>
<para>fone [EUA] (954) 938-0283 ou +1 954
938-0283</para>
</listitem>
</varlistentry>
</variablelist>
<para>O produto oferecido pela Xi Graphics &eacute; um
servidor X de alta performance, que oferece uma interface
f&aacute;cil de configura&ccedil;&atilde;o e com suporte a
m&uacute;ltiplas placas de v&iacute;deo simult&acirc;neas,
e &eacute; distribu&iacute;do apenas de forma
bin&aacute;ria em uma distribui&ccedil;&atilde;o
&uacute;nica para FreeBSD e Linux. A Xi Graphics oferece
ainda um servidor X de alta performance com suporte
desenvolvido especificamente para laptops.<anchor
id="xig"></para>
<para>Existe uma vers&atilde;o
de<quote>demonstra&ccedil;&atilde;o de
compatibilidade</quote> dispon&iacute;vel na
vers&atilde;o 5.0 do servidor gr&aacute;fico.</para>
<para>A Xi Graphics vende ainda o Motif e o CDE para o
FreeBSD (veja acima).</para>
<variablelist>
<varlistentry>
<term>Mais informa&ccedil;&otilde;es:</term>
<listitem>
<para><ulink URL="http://www.xig.com/"> P&aacute;gina
WWW da Xi Graphics</ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>ou</term>
<listitem>
<para><email>sales@xig.com</email> ou
<email>support@xig.com</email>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ou</term>
<listitem>
<para>fone [EUA] (800) 946 7433 ou +1 303
298-7478.</para>
</listitem>
</varlistentry>
</variablelist>
</answer>
</qandaentry>
<qandaentry>
<question id="database-systems">
<para>Existe algum sistema de Banco de Dados para o
FreeBSD?</para>
</question>
<answer>
<para>Sim! Veja a se&ccedil;&atilde;o de <ulink
URL="../../../../commercial/software_bycat.html#CATEGORY_DATABASE">
Fabricantes Comerciais</ulink> do Web site do
FreeBSD.</para>
<para>D&ecirc; uma olhada tamb&eacute;m na
se&ccedil;&atilde;o de <ulink
URL="../../../../ports/databases.html">
Databases</ulink> da Cole&ccedil;&atilde;o de
<literal>Ports</literal> do FreeBSD.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="oracle-support">
<para>Posso rodar o Oracle no FreeBSD?</para>
</question>
<answer>
<para>Pode. As p&aacute;ginas a seguir descrevem exatamente
como configurar o Oracle para Linux no FreeBSD:</para>
<itemizedlist>
<listitem>
<para><ulink
URL="http://www.scc.nl/~marcel/howto-oracle.html">
http://www.scc.nl/~marcel/howto-oracle.html</ulink></para>
</listitem>
<listitem>
<para><ulink
URL="http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd">
http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd</ulink></para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="applications">
<title>Aplica&ccedil;&otilde;es de Usu&aacute;rio</title>
<qandaset>
<qandaentry>
<question id="user-apps">
<para>Ent&atilde;o, onde est&atilde;o todas as
aplica&ccedil;&otilde;es de usu&aacute;rios?</para>
</question>
<answer>
<para>Por gentileza, d&ecirc; uma olhada <ulink
URL="../../../../ports/index.html">na p&aacute;gina do
<literal>Ports</literal></ulink> para
informa&ccedil;&otilde;es sobre pacotes de programas
dispon&iacute;veis na Cole&ccedil;&atilde;o de
<literal>Ports</literal> do FreeBSD. A lista atualmente
ultrapassa &os.numports; aplica&ccedil;&otilde;es e
est&aacute; crescendo diariamente, ent&atilde;o retorne
&agrave; p&aacute;gina e verifique freq&uuml;entemente as
aplica&ccedil;&otilde;es, ou ent&atilde; inscreva-se na
lista de discuss&atilde;o
<literal>freebsd-announce</literal> <link
linkend="mailing">mailing list</link> para
atualiza&ccedil;&otilde;es peri&oacute;dicas ou novas
adi&ccedil;&otilde;es.</para>
<para>A maioria dos <literal>ports</literal> devem estar
dispon&iacute;veis para as vers&otilde;es 2.2, 3.x e 4.x,
e muitos deles devem funcionar tamb&eacute;m em sistemas
2.1.x. Cada vez que um lan&ccedil;amento do FreeBSD
&eacute; produzido, um
<foreignphrase>snapshot</foreignphrase> da &aacute;rvore
do <literal>ports</literal> do momento da
lan&ccedil;amento tamb&eacute;m &eacute; inclu&iacute;da
no diret&oacute;rio <filename>ports/</filename>.</para>
<para>O FreeBSD tamb&eacute;m suporta o conceito de
<quote>pacote</quote>, que essencialmente nada mais
&eacute; do que uma distribui&ccedil;&atilde;o
bin&aacute;ria compactada com o gzip e com um pouco de
intelig&ecirc;ncia extra embutido nesse pacote, para fazer
o trabalho que &eacute; requerido para uma
instala&ccedil;&atilde;o customizada. Um pacote pode ser
instalado e desinstalado repetidas vezes de forma
f&aacute;cil, sem ter que se conhecer os detalhes
horrendos dos arquivos que ele inclui.</para>
<para>Use o menu de instala&ccedil;&atilde;o de pacotes em
<filename>/stand/sysinstall</filename> (sobre a
op&ccedil;&atilde;o do pos-configuration menu) ou invoque
o comando &man.pkg.add.1; nos arquivos de pacotes
espec&iacute;ficos que voc;&ecirc; quer instalar. Os
pacotes podem ser identificados normalmente pelo sufixo
<filename>.tgz</filename> e o pessoal da
distribui&ccedil;&atilde;o em CDROM tem um
diret&oacute;rio <filename>/packages/All </filename> no cd
que cont&eacute; esses arquivos. Eles podem tamb&eacute;m
ser baixados pela rede para v&aacute;rias vers&otilde;es
do FreeBSD nos seguintes endere&ccedil;os: do (sobre a
op&ccedil;&atilde;o PostConfiguration do menu) ou invoque
o comando &man.pkg.add.1;</para>
<variablelist>
<varlistentry>
<term>para o 2.2.8-RELEASE/2.2.8-STABLE </term>
<listitem>
<para><ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/">
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/</ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>para o 3.X-RELEASE/3.X-STABLE</term>
<listitem>
<para><ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/">
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/</ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>para o 4.X-RELEASE/4-STABLE</term>
<listitem>
<para><ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/">
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/</ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>para o 5.X-CURRENT</term>
<listitem>
<para><ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/">
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current</ulink></para>
</listitem>
</varlistentry>
</variablelist>
<para>ou em um s&iacute;tio espelho mais perto de
voc&ecirc;.</para>
<para>Note que nem todos os <literal>Ports</literal> podem
estar dispon&iacute;veis em formato de pacotes, visto que
a atualiza&ccedil;&atilde;o da Cole&ccedil;&atilde;o de
<literal>Ports</literal> do FreeBSD &eacute; muito
freq&uuml;ente, e novos programas s&atilde;o
constantemente adicionados, e outros s&atilde;o
atualizados. &Eacute; sempre bom verificar periodicamente
quais pacotes est&atilde;o dispon&iacute;veis no servidor
FTP mestre do projeto FreeBSD, o <ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/">ftp.FreeBSD.org.</ulink>
</para>
</answer>
</qandaentry>
<qandaentry>
<question id="missing-libcso30">
<para>Onde eu encontro a libc.so.3.0?</para>
</question>
<answer>
<para>Voc&ecirc; est&aacute; tentando usar um pacote
constru&iacute;do para o FreeBSD 2.2 ou para
vers&otilde;es posteriores, em um sistema 2.1.X. Por
gentileza, d&ecirc; uma olhada na se&ccedil;&atilde;o
anterior e pegue o <literal>port</literal>/pacote correto
para o seu sistema.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="missing-libcso40">
<para> Por que eu estou tendo problemas cuja mensagem de
erro mostra <quote>Error: can't find
libc.so.4.0</quote>?.</para>
</question>
<answer>
<para>Acidentalmente voc&ecirc; pegou um pacote
constru&iacute;do para FreeBSD 4.X ou para o 5.X e
est&aacute; tentando instala-lo no seu FreeBSD 2.X ou 3.X.
Por favor, pegue a vers&atilde;o correta dos
pacotes.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="emul">
<para> Por que o ghostscript gera um monte de erros no meu
386/486SX?</para>
</question>
<answer>
<para>Deixe-me adivinhar. Voc&ecirc; n&atilde;o tem um
co-processador matem&aacute;tico, certo? Ser&aacute;
necess&aacute;rio adicionar um co-processador
matem&aacute;tico alternativo ao seu
<foreignphrase>kernel</foreignphrase>; voc&ecirc; pode
fazer isso adicionando a seguinte linha no arquivo de
configura&ccedil;&atilde;o do seu
<foreignphrase>kernel</foreignphrase>, e depois
recompil&aacute;-lo:</para>
<programlisting>options GPL_MATH_EMULATE</programlisting>
<note>
<para>Quando voc&ecirc fizer isto, ser&aacute;
necess&aacute;rio remover a op&ccedil;&atilde;o
<literal>MATH_EMULATE</literal></para>
</note>
</answer>
</qandaentry>
<qandaentry>
<question id="sco-socksys">
<para>Por que aplica&ccedil;&otilde;es do SCO/iBCS2
bombardeiam o ``socksys''? (FreeBSD 3.0 e anteriores,
apenas).</para>
</question>
<answer>
<para>Primeiro, &eacute; necess&aacute;rio editar o arquivo
<filename>/etc/sysconfig</filename> (ou
<filename>/etc/rc.conf</filename>, veja o &man.rc.conf.5;)
e modificar a &uacute;ltima se&ccedil;&atilde;o, alterando
para <literal>YES</literal> a seguinte
vari&aacute;vel:</para>
<programlisting># Set to YES if you want ibcs2 (SCO) emulation loaded at startup
ibcs2=NO</programlisting>
<para>Essa altera&ccedil;&atilde;o far&aacute; o sistema
carregar os m&oacute;dulos de
<foreignphrase>kernel</foreignphrase> do ibcs2 na
inicializa&ccedil;&atilde;o.</para>
<para>Depois, ser&aacute; necess&aacute;rio alterar o
/compat/ibcs2/dev para parecer com:</para>
<screen>lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -&gt; /dev/null
lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -&gt; socksys
-rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null
lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -&gt; /dev/null
crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx</screen>
<para>&Eacute; necess&aacute;rio que o socksys aponte para
<devicename>/dev/null</devicename> (veja &man.null.4;) para
fingir o processo de abertura e fechamento do device. O
c&oacute;digo mais recente (<literal>-CURRENT</literal>)
se encarregar&aacute; dos outros detalhes. Essa maneira
de trabalhar o socksys &eacute; bem mais limpa do que a
forma que era usada anteriormente. Se voc&ecirc; quer que
o driver <devicename>spx</devicename> fique
dispon&iacute;vel para um socket X local, defina a
op&ccedil;&atilde;o <literal>SPX_HACK</literal> no
<foreignphrase>kernel</foreignphrase> do FreeBSD quando
voc&ecirc; o recompilar.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="configure-inn">
<para> Como eu configuro um sistema de INN (Internet News)
na minha esta&ccedil;&atilde;o?
</para>
</question>
<answer>
<para>Depois de instalar o pacote <filename
role="package">news/inn</filename> ou o
<literal>port</literal>, um excelente lugar para iniciar
&eacute; <ulink
URL="http://www.cis.ohio-state.edu/~barr/INN.html">Dave
Barr's INN Page</ulink> onde vo&ccedil;e
encontrar&aacute o <literal>FAQ</literal> do INN.
</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ms-frontpage">
<para>Qual vers&atilde;o do Microsoft FrontPage eu devo
usar?</para>
</question>
<answer>
<para>Use os <literal>Ports</literal>, Luke! Uma
vers&atilde;o previamente corrigida do Apache,<filename
role="package">apache13-fp</filename>, est&aacute;
dispon&iacute;vel na &aacute;rvore do
<literal>Ports</literal>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="java">
<para>O FreeBSD suporta Java?</para>
</question>
<answer>
<para>Veja a p&aacute;gina <ulink
URL="../../../../java/index.html">
http://www.FreeBSD.org/java/</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ports-3x">
<para>Por que eu n&atilde;o consigo compilar determinado
<literal>port</literal> na minha esta&ccedil;&atilde;o
3.X-STABLE?</para>
</question>
<answer>
<para>Caso esteja usando uma vers&atilde;o do FreeBSD
significativamente mais velha do que o -CURRENT ou o
-STABLE, ser&aacute; necess&aacute;rio usar o kit de
atualiza&ccedil;&atilde;o dos <literal>Ports</literal>,
dispon&iacute;vel em <ulink
URL="../../../../ports/index.html">http://www.FreeBSD.org/ports/</ulink>.
Caso esteja atualizado mas ainda assim voc&ecirc; tem
dificuldades, &eacute; prov&aacute;vel que algu&eacute;m
disponibilizou uma vers&atilde;o do programa que funciona
perfeitamente no -CURRENT mas que n&atilde;o compila
corretamente no -STABLE. Por gentileza, envie um
Relat&oacute;rio de Problemas com o comando &man.send-pr.1;
porque a cole&ccedil;&atilde;o de <literal>Ports</literal>
deve funcionar tanto no -STABLE quanto no -CURRENT.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="find-ldso">
<para>Onde posso encontrar o arquivo ld.so?</para>
</question>
<answer>
<para>Algumas aplica&ccedil;&otilde;es cujo formato
bin&aacute;rio &eacute; o a.out, como o Netscape
Navigator, necessitam das bibliotecas a.out. Uma
vers&atilde;o do FreeBSD nativamente constru&iacute;do com
bibliotecas ELF n&atilde;o instala as bibliotecas a.out
por padr&atilde;o. Voc&ecirc; ter&aacute; problemas por
n&atilde;o ter o <filename>/usr/libexec/ld.so</filename>,
se esse for o caso do seu sistema. Estas bibliotecas
est&atilde;o dispon&iacute;veis embutidas na
distribui&ccedil;&atilde;o compat22. Utilize o
&man.sysinstall.8; para instal&aacute;-los. Pode-se
instal&aacute;-lo apartir do c&oacute;digo fonte do
FreeBSD:</para>
<screen>&prompt.root; <userinput>cd /usr/src/lib/compat/compat22</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>Se quiser instalar as bibliotecas mais recentes do
compat22 sempre que executar o <command>make
world</command>, edite
<filename>/etc/make.conf</filename> para incluir
<varname>COMPAT22=YES</varname>. Bibliotecas de
compatibilidade antigas raramente sofrem mudan&ccedil;as ,
as vezes nunca, ent&atilde;o geralmente n&atilde;o
&eacute; necess&aacute;rio.</para>
<para> Tamb&eacute;m veja as p&aacute;ginas de ERRATAS para
o 3.1-RELEASE e 3.2-RELEASE.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ports-update">
<para>Eu atualizei meus fontes. E agora, como eu atualizo
meus <literal>Ports</literal> instalados?</para>
</question>
<answer>
<para>FreeBSD n&atilde;o inclui uma ferramenta de
atualiza&ccedil;&atilde;o do <literal>ports</literal>, mas
existem algumas ferramentas que tornam o processo de
atualiza&ccedil;&atilde;o dos <literal>Ports</literal> uma
tarefa, digamos, f&aacute;cil. &Eacute; poss&iacute;vel
ainda instalar algumas ferramentas adicionais que
facilitam o gerenciamento dos <literal>Ports</literal>
instalados</para>
<para>O comando &man.pkg.version.1; pode gerar um script que
atualizar&aacute; os <literal>ports</literal> instalados
para as &uacute;ltimas vers&otilde;es da &aacute;rvore de
<literal>Ports</literal>.</para>
<screen>&prompt.root; <userinput>pkg_version <option>-c</option> > <replaceable>/tmp/myscript</replaceable></userinput></screen>
<para>O script de sa&iacute;da <emphasis>deve</emphasis> ser
editado manualmente antes de ser usado. As vers&otilde;es
mais recentes do &man.pkg.version.1; for&ccedil;am a
edi&ccedil;&atilde;o do arquivo, colocando um &man.exit.1;
no come&ccedil;o do script.</para>
<para>A sa&iacute;da do script deve ser salva pois ela gera
informa&ccedil;&otilde;es sobre os pacotes que s&atilde;o
depend&ecirc;ncias dos que est&atilde;o sendo atualizados.
Tais depend&ecirc;ncias podem precisar ser atualizadas ou
n&atilde;o, dependendo de cada uma delas. Os casos comuns
onde as depend&ecirc;ncias precisam ser atualizadas
&eacute; quando a vers&atilde;o das bibliotecas
compartilhadas foram alteradas, portanto o
<literal>port</literal> que usava aquela biblioteca
precisa ser atualizado para que a nova vers&atilde;o seja
usada.</para>
<para>Caso tenha espa&ccedil;o o bastante em disco , pode
ser interessante usar a ferramenta
<command>portupgrade</command> para automatizar o processo
de atualiza&ccedil;&atilde;o das aplica&ccedil;&otilde;es
instalados por meio de <literal>ports</literal> ou
pacotes. Posto que ele foi programado em Ruby, o
<command>portupgrade</command> &eacute; um candidato
improv&aacute;vel &agrave; se tornar parte da
&aacute;rvore principal do FreeBSD. Mas isso n&atilde;o
evita que qualquer pessoa use o programa. Alias, ele
&eacute; uma &oacute;tima ferramenta. Ele est&aacute;
dispon&iacute;vel em <filename
role="package">sysutils/portupgrade</filename>.</para>
<para>Se a esta&ccedil;&atilde;o fica constantemente
conectada, &eacute; interessante usar o sistema
&man.periodic.8; para gerar um relat&oacute;rio semanal
sobre as vers&otilde;es do <literal>Ports</literal> que
podem ser atualizadas. Pra configurar o sistema para
isso, insira a linha
<literal>weekly_status_pkg_enable="YES"</literal> no
<filename>/etc/periodic.conf</filename>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="minimal-sh">
<para>Por que o <command>/bin/sh</command> &eacute;
t&atilde;o pequeno? Por que o FreeBSD n&atilde;o usa o
<command>bash</command> ou outro interpretador de comandos
(<foreignphrase>shell</foreignphrase>)?</para>
</question>
<answer>
<para>Porque o POSIX diz que &eacute; assim que deve ser um
interpretador de comandos
(<foreignphrase>shell</foreignphrase>)?</para>
<para>A reposta mais complicada: muitas pessoas precisam
escrever scripts <foreignphrase>shell</foreignphrase> que
sejam port&aacute;veis atrav&eacute;s de muitos sistemas.
&Eacute; por isso que o POSIX especifica o interpretador
de comandos (<foreignphrase>shell</foreignphrase>) e
comandos utilit&aacute;rios com tanto detalhe. A maioria
dos scripts s&atilde;o escritos para o interpretador de
comandos Bourne (Bourne
<foreignphrase>shell</foreignphrase>), e v&aacute;rias
interfaces importantes de programa&ccedil;&atilde;o
(&man.make.1;, &man.system.3;, &man.popen.3; e
an&aacute;logos em linguagens de alto-n&iacute;vel como
Perl e Tcl) o usam como interpretador de comandos
(<foreignphrase>shell</foreignphrase>) padr&atilde;o. Por
ser t&atilde;o amplamente utilizado &eacute; importante
que o interpretador de comandos
(<foreignphrase>shell</foreignphrase>) Bourne seja
r&aacute;pido para carregar, seja determin&iacute;stico em
seu comportamento, e que tenha uma pequena
aloca&ccedil;&atilde;o de mem&oacute;ria.
</para>
<para>A implementa&ccedil;&atilde;o atual &eacute; o nosso
melhor esfor&ccedil;o para encontrar a maior parte destes
requerimentos simultaneamente. Como forma de manter o
<command>/bin/sh</command> do menor tamanho
poss&iacute;vel, n&atilde;o inclu&iacute;mos muitas das
caracter&iacute;sticas convenientes que outros
interpretadores de comando
(<foreignphrase>shell</foreignphrase>) possuem. &Eacute;
por isso que a Cole&ccedil;&atilde;o de
<literal>Ports</literal> disponibiliza outros
interpretadores de comandos
(<foreignphrase>shell</foreignphrase>) com
caracter&iacute;sticas mais abrangentes, como o bash, o
csh, o tcsh, e o zsh. (Voc&ecirc; pode comparar a
utiliza&ccedil;&atilde;o de mem&oacute;ria entre todos
esses interpretadores de comandos
(<foreignphrase>shell</foreignphrase>), analisando as
colunas <quote>VSZ</quote> e <quote>RSS</quote> na
sa&iacute;da do comando <command>ps -u</command>.)</para>
</answer>
</qandaentry>
<qandaentry>
<question id="netscape-slow-startup">
<para>Por que o Netscape e o Opera demoram tanto para
iniciar?</para>
</question>
<answer>
<para>A resposta tradicional &eacute; que o DNS no seu
computador est&aacute; mal configurado. O Netscape e o
Opera fazem verifica&ccedil;&atilde;o de DNS ao iniciar, e
por isso n&atilde;o se tornar&atilde;o dispon&iacute;veis
at&eacute; que obtenham uma resposta do servidor DNS ou
at&eacute; que eles determinem que a esta&ccedil;&atilde;o
n&atilde;o est&aacute; conectada na rede.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="kernelconfig">
<title>Configura&ccedil;&atilde;ao do
<foreignphrase>Kernel</foreignphrase></title>
<qandaset>
<qandaentry>
<question id="make-kernel">
<para>Eu gostaria de configurar meu
<foreignphrase>kernel</foreignphrase>. &Eacute;
dif&iacute;cil?</para>
</question>
<answer>
<para>De modo algum! Veja a <ulink
URL="../handbook/kernelconfig.html">se&ccedil;&atilde;o
"kernel config" do &a.ptbr.p.handbook;</ulink>.</para>
<note>
<para>Recomenda-se que voc&ecirc; fa&ccedil;a uma
c&oacute;pia datada do seu <filename>kernel</filename>
na forma <filename>/kernel.AAMMDD</filename> e o
diret&oacute;rio <filename>/modules</filename> para
<filename>/modules.AAMMDD</filename> depois que estiver
tudo funcionando. Desta forma se voc&ecirc; fizer
alguma bobagem quando mexer com a sua
configura&ccedil;&atilde;o, pode-se iniciar aquele
<foreignphrase>kernel</foreignphrase> ao inv&eacute;s de
ter que desfazer tudo novamente no
<filename>kernel.GENERIC</filename>. Isso &eacute;
particularmente importante se voc&ecirc; estiver dando
boot em um equipamento n&atilde;o suportado pelo
<foreignphrase>kernel</foreignphrase> gen&eacute;rico
(<literal>GENERIC</literal>).</para>
</note>
</answer>
</qandaentry>
<qandaentry>
<question id="missing-hw-float">
<para>A compila&ccedil;&atilde;o do meu
<foreignphrase>kernel</foreignphrase> falha porque
est&aacute; faltando o <literal>_hw_float</literal>. Como
eu resolvo o problema?</para>
</question>
<answer>
<para>Deixa eu adivinhar. Voc&ecirc; removeu o
<devicename>npx0</devicename> (veja &man.npx.4;) do
arquivo de configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase> porque voc&ecirc;
n&atilde;o possui um co-processador aritm&eacute;tico,
certo? Errado! :-) O <devicename>npx0</devicename>
&eacute; <emphasis>OBRIGAT&Oacute;RIO</emphasis>. Mesmo
que voc&ecirc; n&atilde;o tenha um co-processador
aritm&eacute;tico, o dispositivo
<devicename>npx0</devicename> <emphasis>deve</emphasis>
ser incluido.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="why-kernel-big">
<para>Por que meu <foreignphrase>kernel</foreignphrase>
&eacute; t&atilde;o grande (cerca de 10MB)?</para>
</question>
<answer>
<para>Provavelmente, seu
<foreignphrase>kernel</foreignphrase> foi compilado em
<emphasis>modo de depura&ccedil;&atilde;o
(<literal>debug</literal>)</emphasis>. Um
<foreignphrase>kernel</foreignphrase> constru&iacute;do em
modo de depura&ccedil;&atilde;o (<literal>debug</literal>)
cont&ecirc;m muitos s&iacute;mbolos usados para
depura&ccedil;&atilde;o que aumentam muito o seu tamanho.
Note que se voc&ecirc; est&aacute; executando um FreeBSD
3.0 ou superior, ter&aacute; pouca, ou nenhuma, perda de
performance por usar um
<foreignphrase>kernel</foreignphrase> em modo de
depura&ccedil;&atilde;o (<literal>debug</literal>), sendo
&uacute;til ter um para o caso de pane no sistema.
</para>
<para>Entretanto, se voc&ecirc; possui pouco espa&ccedil;o
em disco, ou simplesmente n&atilde;o quer executar um
<foreignphrase>kernel</foreignphrase> para
depura&ccedil;&atilde;o, certifique-se que os dois itens
abaixo sejam verdadeiros:</para>
<itemizedlist>
<listitem>
<para>N&atilde;o existe a seguinte linha no arquivo de
configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase></para>
<programlisting>makeoptions DEBUG=-g</programlisting>
</listitem>
<listitem>
<para>Voc&ecirc; n&atilde;o est&aacute; executando
&man.config.8; com a op&ccedil;&atilde;o
<option>-g</option>.</para>
</listitem>
</itemizedlist>
<para>Ambas as situa&ccedil;&otilde;es acima fazem com que o
<foreignphrase>kernel</foreignphrase> seja compilado no
modo de depura&ccedil;&atilde;o
(<literal>debug</literal>). T&atilde;o logo voc&ecirc;
tenha certeza que n&atilde;o se enquadra naqueles itens, o
<foreignphrase>kernel</foreignphrase> poder&aacute; ser
compilado normalmente e notadamente diminuir&aacute; o
tamanho; a maioria dos
<foreignphrase>kernels</foreignphrase> tendem a ficar em
torno de 1.5MB a 2MB.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="multiport-serial-interrupts">
<para>Porque est&atilde;o ocorrendo conflitos de
interrup&ccedil;&atilde;o com portas multi-seriais?</para>
</question>
<answer>
<para>Quando se compila um
<foreignphrase>kernel</foreignphrase> com suporte a porta
multi-serial, ele avisa que somente a primeira porta
&eacute; testada e as demais s&atilde;o ignoradas devido a
conflitos de interrup&ccedil;&atilde;o. Como eu conserto
isto?</para>
<para>O problema, neste caso, &eacute; que o FreeBSD possui
c&oacute;digo para evitar que o
<foreignphrase>kernel</foreignphrase> fique com lixo
(<foreignphrase>trashed kernel</foreignphrase>) por causa
de conflitos de hardware ou software. A maneira de
corrigir isto &eacute; excluindo as
defini&ccedil;&otilde;s de IRQ em todas as portas exceto
uma. Veja o exemplo:</para>
<programlisting>#
# Multiport high-speed serial line - 16550 UARTS
#
device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="generic-kernel-build-failure">
<para>Porque todo <foreignphrase>kernel</foreignphrase> que
eu tento construir falha na compila&ccedil;&atilde;o,
mesmo o GENERIC?</para>
</question>
<answer>
<para>Existem v&aacute;rias causas poss&iacute;veis para
esse problema. Elas s&atilde;o, sem uma ordem particular:
</para>
<itemizedlist>
<listitem>
<para>Voc&ecirc; n&atilde;o est&aacute; usando os
comandos <command>make buildkernel</command> e
<command>make installkernel</command>, e seus fontes
est&atilde;o estruturados de forma diferente daqueles
usados para construir o sistema atual (por exemplo,
est&aacute; sendo um 4.3-RELEASE em um sistema
4.0-RELEASE). Se estiver sendo feita uma
atualiza&ccedil;&atilde;o, leia o arquivo
<filename>/usr/src/UPDATING</filename>, prestando
aten&ccedil;&atilde;o ao final da se&ccedil;&atilde;o
<quote>COMMON ITEMS</quote>.</para>
</listitem>
<listitem>
<para>Voc&ecirc; est&aacute; usando os comandos
<command>make buildkernel</command> e <command>make
installkernel</command>, mas n&atilde;o garantiu a
correta finaliza&ccedil;&atilde;o do comando
<command>make buildworld</command>. O <command>make
buildkernel</command> depende de arquivos gerados
pelo <command>make buildworld</command> para fazer seu
trabalho corretamente.</para>
</listitem>
<listitem>
<para>Mesmo que voc&ecirc; esteja tentando construir um
<link linkend="stable">FreeBSD-STABLE</link>, &eacute;
poss&iacute;vel que os fontes tenham sido pegos quando
estavam sendo modificados, ou inconsistentes por
alguma outra raz&atilde;o; somente os releases
s&atilde;o absolutamente garantidos de serem
compilados, embora o <link
linkend="stable">FreeBSD-STABLE</link> possa ser
compilado com sucesso na grande maioria das vezes.
Caso j&aacute; n&atilde;o tenha conseguido, tente
buscar os fontes novamente e veja se o problema
j&aacute; n&atilde;o foi resolvido. Tente um servidor
diferente, para o caso daquele que est&aacute; sendo
usado estar com problemas.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="disks">
<title>Discos, Sistemas de Arquivos e Carregadores de
Inicializa&ccedil;&atilde;o (<foreignphrase>Boot
Loaders</foreignphrase>)</title>
<qandaset>
<qandaentry>
<question id="adding-disks">
<para>Como procedo para adicionar um novo disco
r&iacute;gido no FreeBSD?</para>
</question>
<answer>
<para>Veja o Tutorial sobre a Formata&ccedil;&atilde;o de
Discos no s&iacute;tio<ulink
URL="../../articles/formatting-media/index.html">
www.FreeBSD.org</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="new-huge-disk">
<para>Como eu mudo todo o meu sistema operacional para um
disco novo?</para>
</question>
<answer>
<para>A melhor maneira de migrar seu sistema de um disco
para o outro &eacute; reinstalar completamente o SO na
nova unidade de armazenamento e depois migrar os dados dos
usu&aacute;rios do disco antigo para nova
instala&ccedil;&atilde;o. Essa forma &eacute; a mais
recomendada, caso o sistema tenha sido -STABLE por mais de
uma vers&atilde;o, ou caso tenha atualizado um Release ao
inv&eacute;s de ter instalado um novo sistema. O booteasy
pode ser facilmente instalado com o comando
&man.boot0cfg.8;, de forma a permitir que o sistema possa
iniciar dois sistemas distintos, at&eacute; que voc&ecirc;
esteja satisfeito com o novo sistema. Pule o
pr&oacute;ximo par&aacute;grafo para saber algumas formas
seguras de migrar os dados dos usu&aacute;rios para o novo
disco.</para>
<para>Voc&ecirc; pode ter decidido por n&atilde;o refazer
uma nova instala&ccedil;&atilde;o; nesse caso ser&aacute;
necess&aacute;rio reparticionar o novo disco com o
<filename>/stand/sysinstall</filename>, ou &man.fdisk.8;
ou &man.disklabel.8;. Tamb&eacute;m &eacute;
necess&aacute;rio instalar o booteasy em ambas as unidades
com o comando &man.boot0cfg.8;, de forma que voc&ecirc;
possa alternar a inicializa&ccedil;&atilde;o entre o novo
sistema e a configura&ccedil;&atilde;o atual do mesmo,
at&eacute; que a c&oacute;pia dos dados tenha sido
efetuada. Veja o artigo <ulink
url="../../articles/formatting-media/index.html">
</ulink>referente a formata&ccedil;&atilde;o de
m&iacute;dias para obter mais detalhes quanto a esse
processo.</para>
<para>Agora, com um novo disco configurado, voc&ecirc;
est&aacute; pronto para come&ccedil;ar a mover os dados da
antiga para nova unidade de armazenamento. Infelizmente
os dados n&atilde;o podem simplesmente ser copiados ao
acaso. Existem alguns arquivos especiais (como os
arquivos de dispositivos <filename>/dev</filename>),
flags, e links que tendem a n&atilde;o funcionar no novo
sistema, visto que esses arquivos ocupam inodes ou tem
informa&ccedil;&otilde;es espec&iacute;ficas da unidade, e
por isso n&atilde;o podem ser copiados como um arquivo
comum. &Eacute; necess&aacute;rio usar ferramentas que
entendam esse comportamento. Isso significa que
voc&ecirc; ter&aacute; que usar o &man.dump.8;. &Eacute;
sempre uma boa id&eacute;ia realizar esse processo de
c&oacute;pia de dados em modo mono-usu&aacute;rio, contudo
tal precau&ccedil;&atilde;o n&atilde;o &eacute;
obrigat&oacute;ria - &eacute; apenas sinal de
cuidado.</para>
<para>N&atilde;o &eacute; aconselh&aacute;vel usar nenhuma
outra ferramenta a n&atilde;o ser o &man.dump.8; e
&man.restore.8; para copiar o sistema de arquivos da
parti&ccedil;&atilde;o raiz (&quot;/&quot;). O
&man.tar.1; pode funcionar de forma satisfat&oacute;ria,
mas pode ser que n&atilde;o. Tamb&eacute;m &eacute;
&oacute;tima id&eacute;ia usar o &man.dump.8; e
&man.restore.8; para copiar (ou mover completamente) os
dados em uma parti&ccedil;&atilde;o para uma outra
parti&ccedil;&atilde;o vazia. Os passos
necess&aacute;rios para usar o dump para copiar os dados
de uma parti&ccedil;&atilde;o existente para uma nova
parti&ccedil;&atilde;o s&atilde;o:</para>
<procedure>
<step>
<para>Crie um novo sistema de arquivos com o
&man.newfs.8 na nova parti&ccedil;&atilde;o.</para>
</step>
<step>
<para>Monte a parti&ccedil;&atilde;o em um ponto de
montagem tempor&aacute;rio.</para>
</step>
<step>
<para>Entre (cd) no ponto de montagem em
quest&atilde;o.</para>
</step>
<step>
<para>Finalmente mova os dados da parti&ccedil;&atilde;o
existente para a nova parti&ccedil;&atilde;o com o
&man.dump.8;.</para>
</step>
</procedure>
<para>Por exemplo, se a inten&ccedil;&atilde;o &eacute;
copiar os dados da parti&ccedil;&atilde;o raiz para a
parti&ccedil;&atilde;o
<devicename>/dev/ad1s1a</devicename>, cujo ponto de
montagem tempor&aacute;rio &eacute; o
<filename>/mnt</filename>, fa&ccedil;a o seguinte:</para>
<screen>&prompt.root; <userinput>newfs /dev/ad1s1a</userinput>
&prompt.root; <userinput>mount /dev/ad1s1a /mnt</userinput>
&prompt.root; <userinput>cd /mnt</userinput>
&prompt.root; <userinput>dump 0af - / | restore xf -</userinput></screen>
<para>Redefinir a estrutura das parti&ccedil;&otilde;es com
o &man.dump.8 &eacute; um processo um pouco mais
trabalhoso. Caso voc&ecirc; queira, por exemplo, unir o
conte&uacute;do da parti&ccedil;&atilde;o
<filename>/var</filename> com as parti&ccedil;&otilde;es
de n&iacute;vel acima, crie uma parti&ccedil;&atilde;o que
seja grande o bastante para alocar o conte&uacute;do de
ambas, copie a parti&ccedil;&atilde;o principal como no
exemplo descrito acima e depois copie as
sub-parti&ccedil;&otilde;es para os diret&oacute;rios
vazios que o primeiro comando deve ter criado:</para>
<screen>&prompt.root; <userinput>newfs /dev/ad1s1a</userinput>
&prompt.root; <userinput>mount /dev/ad1s1a /mnt</userinput>
&prompt.root; <userinput>cd /mnt</userinput>
&prompt.root; <userinput>dump 0af - / | restore xf -</userinput>
&prompt.root; <userinput>cd var</userinput>
&prompt.root; <userinput>dump 0af - /var | restore xf -</userinput></screen>
<para>Para separar um diret&oacute;rio de sua estrutura
atual, ou seja, no mesmo exemplo ainda, alocar os dados de
<filename>/var</filename> em uma parti&ccedil;&atilde;o
pr&oacute;pria quando na defini&ccedil;&atilde;o atual o
/var &eacute; apenas um diret&oacute;rio comum, &eacute;
necess&aacute;rio montar a sub parti&ccedil;&atilde;o no
diret&oacute;rio apropriado do ponto de montagem
tempor&aacute;rio, simulando assim o sistema de arquivos a
ser criado a partir da raiz (montada no diret&oacute;rio
tempor&aacute;rio), depois basta copiar os dados do
diret&oacute;rio antigo para nova
parti&ccedil;&atilde;o:</para>
<screen>&prompt.root; <userinput>newfs /dev/ad1s1a</userinput>
&prompt.root; <userinput>newfs /dev/ad1s1d</userinput>
&prompt.root; <userinput>mount /dev/ad1s1a /mnt</userinput>
&prompt.root; <userinput>mkdir /mnt/var</userinput>
&prompt.root; <userinput>mount /dev/ad1s1d /mnt/var</userinput>
&prompt.root; <userinput>cd /mnt</userinput>
&prompt.root; <userinput>dump 0af - / | restore xf -</userinput></screen>
<para>Talvez voc&ecirc; prefira usar &man.cpio.1;,
&man.pax.1;, &man.tar.1; ao inv&eacute;s de &man.dump.8;
na hora de copiar os dados de usu&aacute;rios. Quando
este <literal>FAQ</literal> foi escrito, esses comandos
costumavam perder atributos especiais dos arquivos ou
mesmo alterar algumas permiss&otilde;es ou autoridade
(dono dos arquivos), portanto use esses comandos com
cuidado.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="dangerously-dedicated">
<para>Um disco no modo <quote>dangerously dedicated</quote>
pode ser prejudicial a minha sa&uacute;de?</para>
</question>
<answer>
<para><anchor id="dedicate">O processo de
instala&ccedil;&atilde;o permite a escolha entre dois
modos distintos de particionar o(s) disco(s)
r&iacute;gido. A maneira tradicional permite que outros
sistemas operacionais na mesma esta&ccedil;&atilde;o
possam acessar essas parti&ccedil;&otilde;es, criando
entradas na tabela do fdisk (entradas chamadas de
<quote>slices</quote> no FreeBSD) sob uma
parti&ccedil;&atilde;o FreeBSD pr&oacute;pria. Uma
caracter&iacute;stica desse particionamento &eacute;
permitir m&uacute;ltiplos sistemas operacionais e permitir
a instala&ccedil;&atilde;o de um gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) para alternar entre
esses sistemas. A segunda maneira, a alternativa ao modo
tradicional faz uso do disco todo para o FreeBSD e
n&atilde;o faz esfor&ccedil;os para se tornar
compat&iacute;vel com outros sistemas operacionais.</para>
<para>Ent&atilde;o, por que esse modo &eacute; chamado de
<quote>modo perigosamente dedicado</quote>? Um disco
particionado dessa forma n&atilde;o tem algumas
caracter&iacute;sticas tradicionais que os PCs poderiam
considerar entradas v&aacute;lidas do fdisk. Dependendo
das circunst&acirc;ncias o PC pode reclamar e gerar
advert&ecirc;ncias sobre o disco em quest&atilde;o, assim
que o primeiro contato com essa unidade seja feito, ou
pior, o PC pode ainda danificar o processo de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do BSD
(<foreignphrase>bootstrap</foreignphrase>) sem pedir
confirma&ccedil;&atilde;o da altera&ccedil;&atilde;o ou
at&eacute; mesmo sem avisar o usu&aacute;rio dessa
mudan&ccedil;a. O <quote>modo perigosamente
dedicado</quote> ainda costuma confundir v&aacute;rias
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 s&eacute;rie
53C8xx de controladoras SCSI). N&atilde;o s&atilde;o
apenas esses dois modelos que podem apresentar
dificuldades com esse modo de particionamento de disco, a
lista completa &eacute; ainda maior. O principal sintoma
desse tipo de confus&atilde;o &eacute; a presen&ccedil;a
de mensagens de <errorname>read error</errorname>
apresentada pelo <foreignphrase>bootstrap</foreignphrase>
do FreeBSD quando ele tem dificuldades de encontrar-se;
outro sintoma &eacute; a falta de sistema operacional no
momento da inicializa&ccedil;&atilde;o do PC.</para>
<para>Ent&atilde;o porque esse modo de particionamento de
disco existe? Esse modo economiza o uso de alguns poucos
kbytes de espa&ccedil;o em disco, e pode, em contrapartida
gerar grandes problemas em uma nova
instala&ccedil;&atilde;o do sistema. O modo
<quote>perigosamente dedicado</quote> em sua origem
&eacute; um desejo antigo dos usu&aacute;rios do FreeBSD,
especialmente durante a instala&ccedil;&atilde;o, que
&eacute; simplesmente poder ignorar a
<quote>geometria</quote> de disco reconhecida pela BIOS e
usar o disco todo de forma independente, sem prestar
satisfa&ccedil;&atilde;o ao sistema b&aacute;sico de
entrada/sa&iacute;da do PC.</para>
<para>O conceito de <quote>Geometria</quote> &eacute;
ultrapassado, mas infelizmente ainda faz parte do
cora&ccedil;&atilde;o da BIOS dos Computadores Pessoais,
sendo extremamente necess&aacute;rio para a
intera&ccedil;&atilde;o do computador com seus discos.
Quando o FreeBSD cria as parti&ccedil;&otilde;es, ele tem
que gravar sua localiza&ccedil;&atilde;o de forma
correspondente a maneira que a BIOS ir&aacute;
procur&aacute;-la. Se essa informa&ccedil;&atilde;o
n&atilde;o &eacute; acess&iacute;vel &agrave; BIOS, pode
ser que o sistema n&atilde;o consiga iniciar-se.</para>
<para><quote>O modo Dangerously dedicated</quote> tenta
evitar esse desconforto fazendo a opera&ccedil;&atilde;o
se tornar mais simples. Em muitos casos essa forma de
particionamento funciona, mas ela foi criada para ser
usada como &uacute;ltima alternativa &agrave; necessidade
de definir a geometria do disco - em 99% dos casos existem
formas mais vantajosas de resolver problemas com
geometria.</para>
<para>Mas ent&atilde;o, como evitar a necessidade do modo
<quote>DD</quote> na instala&ccedil;&atilde;o 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
op&ccedil;&atilde;o <option>-v</option> no prompt de
<literal>boot:</literal> usando <command>boot
-v</command> nas configura&ccedil;&otilde;es do loader
do sistema operacional. Antes do programa de
instala&ccedil;&atilde;o ser carregado o kernel apresenta
a listagem dos valores para a Geometria de discos
reconhecida pela BIOS do computador; n&atilde;o se
precipite nem se preocupe, essas informa&ccedil;&otilde;es
podem ser visualizadas paginando a tela para as
nota&ccedil;&otilde;es anteriores, sendo poss&iacute;vel
assim verificar esses valores. Normalmente as unidades de
disco da BIOS s&atilde;o apresentadas na mesma ordem que o
FreeBSD as encontra, sendo primeiro as unidades IDE
seguido das SCSI.</para>
<para>No momento do particionamento do disco, verifique se a
geometria apresentada pelo FDISK corresponde ao valor
apresentado pela BIOS; caso n&atilde;o corresponda use a
tecla <keycap>g</keycap> para redefinir esses valores.
Tamb&eacute;m pode ser necess&aacute;rio definir a
geometria manualmente em casos onde o disco em
quest&atilde;o est&aacute; vazio e sem nenhum outro tipo
de parti&ccedil;&atilde;o criada, ou se o disco foi
instalado em um outro computador e foi colocado na
esta&ccedil;&atilde;o atual recentemente. Note que esse
tipo de complica&ccedil;&atilde;o n&atilde;o &eacute;
comum, e quando acontece, acontece apenas com o disco onde
o FreeBSD est&aacute; iniciando; Qualquer outro disco
existente no computador ser&aacute; controlado
perfeitamente pelo FreeBSD em qualquer
situa&ccedil;&atilde;o.</para>
<para>Uma vez existindo a concord&acirc;ncia de Geometria
entre a BIOS e o FreeBSD, com certeza seus problemas
ter&atilde;o acabado, e n&atilde;o existia a necessidade
de usar o modo <quote>DD</quote>. Contudo, se em casos
extremos ainda ocorrerem erros de <errorname>read
error</errorname> ent&atilde;o pode cruzar os dedos e
usar o modo dedicado (DD), afinal n&atilde;o h&aacute;
nada a perder, visto que das formas tradicionais sua BIOS
insiste em n&atilde;o cooperar de forma correta.</para>
<para>Para voltar um disco particionado em modo
<quote>dangerously dedicated</quote> para uso normal em um
PC existem duas alternativas. A primeira &eacute; alocar
dados nulos (NULL bytes) o bastante na MBR do disco, de
forma que qualquer instala&ccedil;&atilde;o posterior
acredite que o disco est&aacute; vazio. Isso pode ser
feito, por exemplo, da seguinte maneira:</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda0 count=15</userinput></screen>
<para>E a segunda forma, a
<quote>op&ccedil;&atilde;o</quote> n&atilde;o documentada
do DOS:</para>
<screen><prompt>C:\&gt;</prompt> <userinput>fdisk /mbr</userinput></screen>
<para>instalar&aacute; um novo registro mestre de
inicializa&ccedil;&atilde;o no disco em quest&atilde;o,
sobrepondo inclusive o
<foreignphrase>bootstrap</foreignphrase> do BSD.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="safe-softupdates">
<para>Em quais parti&ccedil;&otilde;es podemos seguramente
usar o softupdates? Eu tenho ouvido falar de problemas em
se usar o softupdates na parti&ccedil;&atilde;o
<filename>/</filename>?</para>
</question>
<answer>
<para>A resposta breve: o softupdates pode ser usado com
seguran&ccedil;a em todas as
parti&ccedil;&otilde;es.</para>
<para>A resposta mais completa: existiam algumas
restri&ccedil;&otilde;es quanto ao uso do softupdates na
parti&ccedil;&atilde;o raiz do sistema. Tais
restri&ccedil;&otilde;es se deviam a duas
caracter&iacute;sticas causadas pelo softupdates, que eram
a pouqu&iacute;ssima chance de perder alguns dados da
parti&ccedil;&atilde;o raiz se acontecesse algum system
crash; apesar das probabilidades de perda de dados serem
m&iacute;nimas, elas existem; n&atilde;o existe uma
danifica&ccedil;&atilde;o ou corros&atilde;o do sistema de
arquivos, apenas alguns arquivos podem ser simplesmente
perdidos. E a segunda caracter&iacute;stica &eacute; a
diminui&ccedil;&atilde;o tempor&aacute;ria de
espa&ccedil;o em disco.</para>
<para>Quando o softupdates est&aacute; ativado o kernel pode
levar at&eacute; trinta segundos para realmente escrever
alguns dados fisicamente em disco. Caso algum arquivo
grande seja apagado, ela permanece temporariamente em
disco at&eacute; que o kernel realmente o apague, o que
pode causar uma condi&ccedil;&atilde;o de corrida
simples(simple race condition). Imagine, apenas para
ilustrar, que voc&ecirc; apague um arquivo enorme do
disco, e logo em seguida crie um outro arquivo t&atilde;o
grande quanto o primeiro; a grava&ccedil;&atilde;o de
metadados no disco pode n&atilde;o ter sido realizada
ainda quando o segundo arquivo &eacute; criado, ou seja o
primeiro n&atilde;o foi realmente definido como um arquivo
apagado. Nesse caso &eacute; prov&aacute;vel que
voc&ecirc; receba uma mensagem dizendo que n&atilde;o
existe espa&ccedil;o o bastante em disco para o segundo
arquivo, quando voc&ecirc; tem certeza absoluta que o
espa&ccedil;o que acabou de ser liberado ao apagar o
primeiro arquivo &eacute; o suficiente para alocar o
segundo! A&iacute; voc&ecirc; tenta gravar o segundo
arquivo mais uma vez, alguns meros segundos depois, e o
processo de cria&ccedil;&atilde;o do mesmo, simplesmente
funciona como esperado. Esse tipo de comportamento
j&aacute; levou mais de um usu&aacute;rio a
balan&ccedil;ar sua cabe&ccedil;a e duvidar de sua
pr&oacute;pria sanidade, ou mesmo da sanidade do sistema
de arquivos do FreeBSD; em caso extremos, de
d&uacute;vidas do bom estado de ambos, a sanidade do
sistema de arquivos e do pr&oacute;prio usu&aacute;rio
;-)</para>
<para>Se o sistema falhar antes do kernel aceitar um
conjunto de dados que tem que ser escrito no disco antes
do mesmo ser gravado, &eacute; prov&aacute;vel que exista
perda dos dados em quest&atilde;o. Esse risco &eacute;
extremamente baixo, e geralmente &eacute;
contorn&aacute;vel. O uso, por exemplo, das
op&ccedil;&otilde;es de cache de grava&ccedil;&atilde;o
das unidades de disco IDE &eacute; um fator que causa a
possibilidade desse tipo de desconforto, portanto &eacute;
altamente recomend&aacute;vel que essa op&ccedil;&atilde;o
seja desativada nos discos IDE quando for usar o
softupdates.</para>
<para>Esse comportamento afeta todas as
parti&ccedil;&otilde;es que estiverem com softupdates.
Portanto, o que isso implica para a parti&ccedil;&atilde;o
raiz?</para>
<para>A maioria das informa&ccedil;&otilde;es vitais da
parti&ccedil;&atilde;o raiz mudam com pouqu&iacute;ssima
freq&uuml;&ecirc;ncia. Arquivos como o
<filename>/kernel</filename> e o conte&uacute;do do
<filename>/etc</filename> s&atilde;o alterados apenas
durante a manuten&ccedil;&atilde;o do sistema operacional,
ou quando os usu&aacute;rios alteram suas senhas. Caso o
sistema falhe durante essa janela de trinta segundos,
depois que uma dessas altera&ccedil;&otilde;es foi feita,
&eacute; poss&iacute;vel que alguns dados sejam perdidos.
Esse risco &eacute; baix&iacute;ssimo e praticamente
indiferente para maioria das aplica&ccedil;&otilde;es, mas
deve-se atentar que o risco existe. Caso seu sistema
n&atilde;o tolere nem uma possibilidade t&atilde;o baixa
de riscos, n&atilde;o use o softupdates na
parti&ccedil;&atilde;o raiz!</para>
<para>A <filename>/</filename> normalmente &eacute; uma das
menores parti&ccedil;&otilde;es do sistema. Por
padr&atilde;o o FreeBSD coloca o diret&oacute;rio
<filename>/tmp</filename> na parti&ccedil;&atilde;o
<filename>/</filename>, comportamento este que pode ser
modificado por administradores de sistemas mais
experientes. Caso seu <filename>/tmp</filename> costume
ocupar muito espa&ccedil;o, pode ser criado um link
simb&oacute;lico para o <filename>/var/tmp</filename>, o
comportamento inverso tamb&eacute;m &eacute; v&aacute;lido
e bastante seguro, caso o /tmp seja uma
parti&ccedil;&atilde;o grande o bastante para alocar os
dados do /var/tmp tamb&eacute;m.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="inappropriate-ccd">
<para>O que &eacute; inapropriado no meu ccd?</para>
</question>
<answer>
<para>Os sintomas desse tipo de d&uacute;vida:</para>
<screen>&prompt.root; <userinput>ccdconfig -C</userinput>
ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format</screen>
<para>Esse problema normalmente ocorre quando se tenta
concatenar as parti&ccedil;&otilde;es <literal>c</literal>
cujo tipo padr&atilde;o &eacute;
<literal>unused</literal>. O ccd requer que a
parti&ccedil;&atilde;o que ele esteja usando seja do tipo
FS_BSDFFS. Edite o disklabel dos discos em quest&atilde;o
e altere o tipo das parti&ccedil;&otilde;es para
<literal>4.2BSD</literal>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ccd-disklabel">
<para>Porque eu n&atilde;o posso editar o disklabel do meu
ccd?</para>
</question>
<answer>
<para>Os sintomas desse tipo de d&uacute;vida:</para>
<screen>&prompt.root; <userinput>disklabel ccd0</userinput>
(it prints something sensible here, so let us try to edit it)
&prompt.root; <userinput>disklabel -e ccd0</userinput>
(edit, save, quit)
disklabel: ioctl DIOCWDINFO: No disk label on disk;
use "disklabel -r" to install initial label</screen>
<para>Isso acontece por que o disklabel que o ccd retorna
&eacute; na verdade um valor <quote>falso</quote>, que
n&atilde;o est&aacute; realmente gravado no disco. Esse
problema pode ser resolvido ao reescrever explicitamente
esse dado, da seguinte forma:</para>
<screen>&prompt.root; <userinput>disklabel ccd0 &gt; /tmp/disklabel.tmp</userinput>
&prompt.root; <userinput>disklabel -Rr ccd0 /tmp/disklabel.tmp</userinput>
&prompt.root; <userinput>disklabel -e ccd0</userinput>
(agora ir&aacute funcionar)</screen>
</answer>
</qandaentry>
<qandaentry>
<question id="mount-foreign-fs">
<para>Posso montar outros tipos de parti&ccedil;&otilde;es
externas sobre FreeBSD?</para>
</question>
<answer>
<variablelist>
<varlistentry>
<term>Digital UNIX</term>
<listitem>
<para>CDROMs do tipo UFS podem ser montados
diretamente no FreeBSD, j&aacute; a montagem de
parti&ccedil;&otilde;es de disco do Digital UNIX que
usam o UFS pode ser um pouco mais complexa,
dependendo dos detalhes do particionamento de disco
para o sistema operacional em quest&atilde;o.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Linux</term>
<listitem>
<para>A partir do 2.2, o FreeBSD suporta
parti&ccedil;&otilde;es do tipo
<literal>ext2fs</literal>. Veja o
&man.mount.ext2fs.8; para obter mais
informa&ccedil;&otilde;es.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>NT</term>
<listitem>
<para>Existe suporte somente-leitura as
parti&ccedil;&otilde;es NTFS no FreeBSD. Para obter
mais informa&ccedil;&otilde;es leia esse tutorial,
escrito por Mark Ovens em <ulink
URL="http://ukug.uk.FreeBSD.org/~mark/ntfs_install.html">http://ukug.uk.FreeBSD.org/~mark/ntfs_install.html</ulink>.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Mais informa&ccedil;&otilde;es sobre esse assunto
seriam bem vindas :-)</para>
</answer>
</qandaentry>
<qandaentry>
<question id="mount-dos">
<para>Como montar uma parti&ccedil;&atilde;o DOS
secund&aacute;ria?</para>
</question>
<answer>
<para>As parti&ccedil;&otilde;es secund&aacute;rias do DOS
s&atilde;o encontradas depois que TODAS as
parti&ccedil;&otilde;es prim&aacute;rias foram definidas.
Por exemplo, se voc&ecirc; tem a parti&ccedil;&atilde;o
<quote>E</quote> como a segunda parti&ccedil;&atilde;o
DOS no segundo disco SCSI, ser&aacute; necess&aacute;rio
criar um arquivo especial para essa <quote>quinta
parti&ccedil;&atilde;o</quote> (slice 5) no /dev, depois
montar /dev/da1s5:</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>sh MAKEDEV da1s5</userinput>
&prompt.root; <userinput>mount -t msdos /dev/da1s5 /dos/e</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="crypto-filesystem">
<para>Existe um sistema de arquivos criptografado para o
FreeBSD?</para>
</question>
<answer>
<para>Sim, veja o <literal>port</literal> <filename
role="package">security/cfs</filename>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="nt-bootloader">
<para>Como posso usar o carregador do NT para iniciar o
FreeBSD?</para>
</question>
<answer>
<para>Esse procedimento &eacute; um pouco diferente entre o
FreeBSD 2.2.X e o 3.X (que tem um sistema de inic&iacute;o
(<foreignphrase>boot</foreignphrase>) de 3 fases).</para>
<para>A id&eacute;ia geral se consiste em copiar os
primeiros setores da parti&ccedil;&atilde;o raiz nativa do
FreeBSD e transforma-los em um arquivo, para ser colocado
dentro da parti&ccedil;&atilde;o DOS/NT. Se assumir-mos
que voc&ecirc; vai chamar esse arquivo de
<filename>c:\bootsect.bsd</filename> (inspirado por
<filename>c:\bootsect.dos</filename>), pode-se
ent&atilde;o editar o arquivo
<filename>c:\boot.ini</filename> de forma a
carreg&aacute;, mais ou menos assim:</para>
<programlisting>[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT"
C:\BOOTSECT.BSD="FreeBSD"
C:\="DOS"</programlisting>
<para>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 parti&ccedil;&otilde;es respectivas do fdisk no
<emphasis>mesmo</emphasis> disco. Esse exemplo foi
testado em um sistema onde o DOS &amp; NT estavam
instalados na primeira parti&ccedil;&atilde;o do fdisk, e
o FreeBSD na segunda. O FreeBSD havia sido configurado
para iniciar a partir de sua parti&ccedil;&atilde;o
nativa, e n&atilde;o pela MBR do disco.</para>
<para>Monte um disquete formatado em DOS (caso ele tenha
sido convertido para NTFS) ou em FAT, por exemplo, sob o
ponto de montagem <filename>/mnt</filename>.</para>
<screen>&prompt.root; <userinput>dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1</userinput></screen>
<para>Reinicie o computador no DOS ou NT. Sobre o NTFS,
copie o arquivo <filename>bootsect.bsd</filename> e/ou
arquivo <filename>bootsect.lnx</filename> do disquete para
<filename>C:\</filename>. Modifique os atributos
originais(permiss&otilde;es) do
<filename>boot.ini</filename> com:</para>
<screen><prompt>C:\&gt;</prompt> <userinput>attrib -s -r c:\boot.ini</userinput></screen>
<para>Edite e adicione as entradas apropriadas no
<filename>boot.ini</filename> seguindo o exemplo anterior
e volte os atributos originais:</para>
<screen><prompt>C:\&gt;</prompt> <userinput>attrib +s +r c:\boot.ini</userinput></screen>
<para>Se o FreeBSD estiver inicializando pela MBR,
reconstrua-a com o comando <command>fdisk</command> do DOS
depois de configurar os sistemas para iniciar a partir de
suas parti&ccedil;&otilde;es nativas.</para>
<para>No FreeBSD 3.X esse procedimento &eacute; mais
simples.</para>
<para>Se o FreeBSD estiver instalado no mesmo disco que a
parti&ccedil;&atilde;o de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do NT est&aacute;
instalada, copie o <filename>/boot/boot1</filename> para
<filename>C:\BOOTSECT.BSD</filename>. Contundo, se o
FreeBSD estiver em uma parti&ccedil;&atilde;o distinta, o
<filename>/boot/boot1</filename> n&atilde;o ir&aacute;
funcionar, nesse caso, o <filename>/boot/boot0</filename>
ser&aacute; necess&aacute;rio.
<warning>
<para>N&Atilde;O COPIE SIMPLESMENTE O
<filename>/boot/boot0</filename> NO LUGAR DO
<filename>/boot/boot1</filename>, POIS A TABELA DE
PARTI&Ccedil;&Atilde;O SER&Aacute; REESCRITA, E O
COMPUTADOR SE TORNAR&Aacute; N&Atilde;O
INICIALIZ&Aacute;VEL!!</para>
</warning> O <filename>/boot/boot0</filename> precisa ser
instalado com o sysinstall, selecionando o gerenciador de
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do FreeBSD na tela
que o programa pergunta se voc&ecirc; deseja usar um
gerenciador de inicializa&ccedil;&atilde;o(boot manager).
Isso se deve ao fato que o
<filename>/boot/boot0</filename> cont&eacute;m
informa&ccedil;&otilde;es sobre a &aacute;rea da tabela de
parti&ccedil;&otilde;es definidas como caracteres nulos,
mas o sysinstall copia a tabela de parti&ccedil;&otilde;es
antes de copiar o <filename>/boot/boot0</filename> para a
MBR.</para>
<para>Quando o gerenciador de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do FreeBSD &eacute;
executado, ele grava qual &uacute;ltimo sistema
operacional foi carregado, definindo uma flag de sistema
ativo na tabela de parti&ccedil;&atilde;o referente aquele
sistema, e depois ele escreve todos os 512 bytes do
pr&oacute;prio gerenciador de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) de volta na MBR,
portanto se o <filename>/boot/boot0</filename>
simplesmente for copiado para
<filename>C:\BOOTSECT.BSD</filename> ser&aacute; definida
uma tabela de parti&ccedil;&atilde;o vazia com a flag de
parti&ccedil;&atilde;o ativa, na MBR.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="lilo-bootloader">
<para>Como posso iniciar o FreeBSD e o Linux com o
LILO?</para>
</question>
<answer>
<para>Caso o FreeBSD e o Linux estejam no mesmo disco, basta
seguir as instru&ccedil;&otilde;es de
instala&ccedil;&atilde;o do LILO para carregar sistemas
operacionais n&atilde;o-Linux. De forma breve, tais
instru&ccedil;&otilde;es s&atilde;o</para>
<para>Carregue o Linux e adicione as seguintes linhas no
<filename>/etc/lilo.conf</filename>:</para>
<programlisting>other=/dev/hda2
table=/dev/hda
label=FreeBSD</programlisting>
<para>(A defini&ccedil;&atilde;o acima assume que a sua
parti&ccedil;&atilde;o FreeBSD &eacute; conhecida pelo
Linux como <devicename>/dev/hda2</devicename>; altere esse
valor para sua necessidade). Depois basta executar o
comando <command>lilo</command> como usu&aacute;rio
<username>root</username> e deve estar pronto.</para>
<para>Caso o FreeBSD esteja em um outro disco, ser&aacute;
preciso criar uma entrada
<literal>loader=/boot/chain.b</literal> no LILO. Por
exemplo:</para>
<programlisting>other=/dev/dab4
table=/dev/dab
loader=/boot/chain.b
label=FreeBSD</programlisting>
<para>Em alguns casos &eacute; necess&aacute;rio especificar
o n&uacute;mero 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 inicializa&ccedil;&atilde;o
(<foreignphrase>boot loader</foreignphrase>) do FreeBSD
ser&aacute; necess&aacute;rio definir:</para>
<screen>Boot: <userinput>1:da(0,a)/kernel</userinput></screen>
<para>No FreeBSD 2.2.5 e posteriores, o &man.boot.8; pode
ser configurado para que ele automaticamente defina essa
informa&ccedil;&atilde;o na hora da
inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>).</para>
<para>The <ulink
URL="http://sunsite.unc.edu/LDP/HOWTO/mini/Linux+FreeBSD.html">
Linux+FreeBSD mini-HOWTO</ulink> &eacute; uma boa
refer&ecirc;ncia sobre a utiliza&ccedil;&atilde;o do
FreeBSD com o Linux.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="booteasy-loader">
<para>Como eu inicio o FreeBSD e o Linux usando o
BootEasy?</para>
</question>
<answer>
<para>Instale o LILO no come&ccedil;o da sua
parti&ccedil;&atilde;o de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) do Linux ao
inv&eacute;s de instala-lo na MBR. Agora o LILO pode ser
carregado a partir do BootEasy.</para>
<para>Com Windows 9x e Linux essa &eacute; uma
a&ccedil;&atilde;o recomendada sempre, para garantir que o
Linux possa ser iniciado de forma mais f&aacute;cil caso
seja necess&aacute;rio reinstalar o Windows (que &eacute;
um sistema operacional que n&atilde;o espera nenhum outro
sistema na MBR).</para>
</answer>
</qandaentry>
<qandaentry>
<question id="changing-bootprompt">
<para>Como eu altero a tela de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) de
<literal>???</literal> para algo mais
significativo?</para>
</question>
<answer>
<para>Voc&ecirc; n&atilde;o pode alterar esse comportamento
no gerenciador de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) padr&atilde;o sem
reescreve-lo. Existem in&uacute;meros outros
gerenciadores de inicializa&ccedil;&atilde;o
(<foreignphrase>boot</foreignphrase>) na categoria
<filename>sysutils</filename> da da cole&ccedil;&atilde;o
de <literal>ports</literal>, que oferecem esse
recurso.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="removable-drives">
<para>Possuo uma nova unidade de disco remov&iacute;vel,
como posso usa-la?</para>
</question>
<answer>
<para>Ainda que seja uma unidade remov&iacute;vel como um
ZIP Drive, um EZ Drive (ou at&eacute; 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
quest&atilde;o, as coisas passam a funcionar da mesma
forma para qualquer tipo de dispositivo.</para>
<para><anchor id="disklabel">(essa se&ccedil;&atilde;o
&eacute; baseada no <ulink
URL="http://www.vmunix.com/mark/FreeBSD/ZIP-FAQ.html">ZIP
<literal>FAQ</literal> de Mark Mayo</ulink>)</para>
<para>Caso o dispositivo seja um ZIP Drive ou um disquete
cujo sistema de arquivos j&aacute; tenha sido criado como
sendo do tipo DOS, o seguinte comando &eacute; o bastante
para mont&aacute;-lo:</para>
<screen>&prompt.root; <userinput>mount -t msdos /dev/fd0c /floppy</userinput></screen>
<para>caso seja um disquete, ou ent&atilde;o:</para>
<screen>&prompt.root; <userinput>mount -t msdos /dev/da2s4 /zip</userinput></screen>
<para>caso seja um disco ZIP com as
configura&ccedil;&otilde;es de f&aacute;brica.</para>
<para>Para outros tipos de disco, veja como eles s&atilde;o
tratados, usando o &man.fdisk.8; ou
&man.sysinstall.8;.</para>
<para>Os pr&oacute;ximos exemplos ser&atilde;o para um ZIP
Drive controlado pela device da2, ou seja, correspondente
ao terceiro disco SCSI.</para>
<para>A n&atilde;o ser que se trate de um disquete ou de um
disco remov&iacute;vel que se planeje compartilhar com
outras pessoas, provavelmente &eacute; mais sensata a
id&eacute;ia 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 confian&ccedil;a. O primeiro passo
&eacute; redefinir a parti&ccedil;&atilde;o DOS da unidade
remov&iacute;vel de forma que a mesma passe a ser do tipo
BSD; o &man.fdisk.8; ou
<filename>/stand/sysinstall</filename> podem ser usados
para esse fim, em um disco pequeno onde n&atilde;o se
queira preocupa&ccedil;&otilde;es quanto a possibilidade
de manter suporte a m&uacute;ltiplos sistemas
operacionais. Nesse caso simplesmente elimine toda a
parti&ccedil;&atilde;o FAT do disco e use o particionador
do BSD:</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda2 count=2</userinput>
&prompt.root; <userinput>disklabel -Brw da2 auto</userinput></screen>
<para>O disklabel ou <filename>/stand/sysinstall</filename>
podem ser usados para criar m&uacute;ltiplas
parti&ccedil;&otilde;es do tipo BSD. Certamente o
usu&aacute;rio vai querer criar mais de uma
parti&ccedil;&atilde;o BSD se a inten&ccedil;&atilde;o for
criar espa&ccedil;o de Swap. De qualquer forma, esse tipo
de a&ccedil;&atilde;o &eacute; irrelevante em um disco
remov&iacute;vel do tipo ZIP.</para>
<para>Finalmente, crie um novo sistema de arquivos como
esse, que usa todo o disco em um ZIP Drive:</para>
<screen>&prompt.root; <userinput>newfs /dev/rda2c</userinput></screen>
<para>e monte-o:</para>
<screen>&prompt.root; <userinput>mount /dev/da2c /zip</userinput></screen>
<para>provavelmente &eacute; uma boa id&eacute;ia adicionar
uma entrada no <filename>/etc/fstab</filename> para
facilitar o processo de montagem dessa unidade(veja
&man.fstab.5;)de forma que seja apenas necess&aacute;rio
digitar o comando <command>mount /zip</command> no
futuro:</para>
<programlisting>/dev/da2c /zip ffs rw,noauto 0 0</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="mount-cd-superblock">
<para>Por que eu tive o erro <errorname>Incorrect super
block</errorname> na hora de montar um CDROM?</para>
</question>
<answer>
<para>&Eacute; necess&aacute;rio avisar ao &man.mount.8; que
tipo de unidade est&aacute; sendo montada. Essa
defini&ccedil;&atilde;o &eacute; tratada com mais detalhes
em <ulink URL="../handbook/creating-cds.html"> na
se&ccedil;&atilde;o de m&iacute;dias &oacute;pticas do
&a.ptbr.p.handbook; </ulink>, mais precisamente na
se&ccedil;&atilde;o <ulink
URL="../handbook/creating-cds.html#MOUNTING-CD">Usando
CDs de Dados</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="cdrom-not-configured">
<para><errorname>Device not configured</errorname> ocorre na
hora de montar o CDROM?</para>
</question>
<answer>
<para>Geralmente esse tipo de comportamento indica que
n&atilde;o existe nenhum CD na unidade de CDROM, ou
ent&atilde;o, que o CD em quest&atilde;o n&atilde;o
&eacute; vis&iacute;vel ao barramento de dados do seu PC,
comum quando um CD-RW n&atilde;o pode ser lido por um
drive tradicional. Por gentileza, queira referir-se a
<ulink
URL="../handbook/creating-cds.html#MOUNTING-CD">Usando
CDs de Dados </ulink> da se&ccedil;&atilde;o do
&a.ptbr.p.handbook; para uma discuss&atilde;o mais
detalhada sobre esse assunto.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="cdrom-unicode-filenames">
<para>Porque todos caracteres n&atilde;o-Ingl&ecirc;s
s&atilde;o apresentados como <quote>?</quote> no sistema
de arquivos do CD que acabou de ser montado no
FreeBSD?</para>
</question>
<answer>
<para>Provavelmente seu CDROM usa extens&otilde;es
<quote>Joliet</quote> para armazenar
informa&ccedil;&otilde;es sobre tipos de arquivos e
diret&oacute;rios. Esse assunto &eacute; discutido no
cap&iacute;tulo de <ulink
URL="../handbook/creating-cds.html">
Cria&ccedil;&atilde;o e Uso de CDROMs do
&a.ptbr.p.handbook;</ulink>, mais precisamente na
se&ccedil;&atilde;o <ulink
URL="../handbook/creating-cds.html#MOUNTING-CD">de Uso
de CDs de Dados</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="burncd-isofs">
<para>Eu queimei um CD no FreeBSD e agora esse disco
n&atilde;o pode ser lido em nenhum outro sistema
operacional. Por que?</para>
</question>
<answer>
<para>Provavelmente voc&ecirc; queimou um CD de forma crua
(usando raw mode) no seu sistema, ao inv&eacute;s de criar
um sistema de arquivos do tipo ISO 9660. D&ecirc; uma
olhada no <ulink URL="../handbook/creating-cds.html">
Cap&iacute;tulo de Cria&ccedil;&atilde;o de CDROMs do
&a.ptbr.p.handbook;</ulink>, em espec&iacute;fico na
se&ccedil;&atilde;o <ulink
URL="../handbook/creating-cds.html#RAWDATA-CD">criando
CDS de dados puros</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="copy-cd">
<para>Como posso criar uma imagem de um CD de dados?</para>
</question>
<answer>
<para>A cria&ccedil;&atilde;o de imagens de CDs de dados
&eacute; discutida na se&ccedil;&atilde;o <ulink
url="../handbook/creating-cds.html#IMAGING-CD">duplicando
CDs de dados do &a.ptbr.p.handbook;</ulink>. Para mais
informa&ccedil;&otilde;es sobre unidades &oacute;pticas,
por gentileza, queira referir-se a se&ccedil;&atilde;o
<ulink url="../handbook/creating-cds.html">
Cria&ccedil;&atilde;o de CDs</ulink> no cap&iacute;tulo
de Armazenamento do &a.ptbr.p.handbook;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="mount-audio-CD">
<para>Por que um CD de &aacute;udio n&atilde;o pode ser
montado com o comando <command>mount</command>?</para>
</question>
<answer>
<para>Ao tentar montar um CD de &aacute;udio, o mais
prov&aacute;vel &eacute; que ocorra um erro do tipo
<errorname>cd9660: /dev/acd0c: Invalid
argument</errorname>. Isso se deve ao fato que o
comando <command>mount</command> trabalha exclusivamente
com sistema de arquivos, o que n&atilde;o &eacute; o caso
de CDs de &aacute;udio. CDs de &aacute;udio cont&eacute;m
apenas dados, e por isso &eacute; necess&aacute;rio alguma
aplica&ccedil;&atilde;o capaz de ler tais CDs. Use algum
programa como o <filename
role="package">audio/xmcd</filename>na
cole&ccedil;&atilde;o de <literal>Ports</literal> do
FreeBSD para ler dados em CDs desse tipo.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="multi-session-CD">
<para>Como eu monto um CD com m&uacute;ltiplas
sess&otilde;es de grava&ccedil;&atilde;o?</para>
</question>
<answer>
<para>Por padr&atilde;o, o &man.mount.8; tenta montar a
&uacute;ltima trilha de dados (sess&atilde;o) de um CD.
Caso queira montar uma sess&atilde;o anterior pode-se usar
o argumento <option>-s</option> na linha de comando em
quest&atilde;o. Por gentileza, refira-se a p&aacute;gina
de manual do comando &man.mount.cd9660.8; para obter
exemplos espec&iacute;ficos do uso dessa e de outras
op&ccedil;&otilde;es.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="user-floppymount">
<para>Como posso permitir que usu&aacute;rios comuns montem
disquetes, CDROMs e outros tipos de m&iacute;dia
remov&iacute;vel?</para>
</question>
<answer>
<para>Usu&aacute;rios comuns podem ter a permiss&atilde;o de
montar dispositivos. Veja como:</para>
<procedure>
<step>
<para>Como <username>root</username> defina a
vari&aacute;vel <varname>vfs.usermount</varname> do
sysctl para <literal>1</literal>.</para>
<screen>&prompt.root; <userinput>sysctl -w vfs.usermount=1</userinput></screen>
</step>
<step>
<para>Como <username>root</username> defina as
permiss&otilde;es apropriadas nos dispositivos
associados ao controle da m&iacute;dia
remov&iacute;vel.</para>
<para>Por exemplo, para permitir que os usu&aacute;rios
possam montar a primeira unidade de disquete,
use:</para>
<screen>&prompt.root; <userinput>chmod 666 /dev/fd0</userinput></screen>
<para>Para permitir que os usu&aacute;rios do grupo
<groupname>operator</groupname> montem a unidade de
CDROM, use:</para>
<screen>&prompt.root; <userinput>chgrp operator /dev/cd0c</userinput>
&prompt.root; <userinput>chmod 640 /dev/cd0c</userinput></screen>
</step>
<step>
<para>Finalmente, para tornar essa
altera&ccedil;&atilde;o permanente, adicione a linha
<literal><varname> vfs.usermount</varname>=1</literal>
no arquivo
<filename>/etc/sysctl.conf</filename>.</para>
</step>
</procedure>
<para>Agora todos os usu&aacute;rios podem montar qualquer
disquete no <devicename>/dev/fd0</devicename> em algum
ponto de montagem que lhes perten&ccedil;a:</para>
<screen>&prompt.user; <userinput>mkdir ~/my-mount-point</userinput>
&prompt.user; <userinput>mount -t msdos /dev/fd0 ~/my-mount-point</userinput></screen>
<para>Os usu&aacute;rios no grupo
<groupname>operator</groupname> agora tem permiss&atilde;o
para montar os CDs no <devicename>/dev/cd0c</devicename>
em qualquer ponto de montagem que lhes
perten&ccedil;a:</para>
<screen>&prompt.user; <userinput>mkdir ~/my-mount-point</userinput>
&prompt.user; <userinput>mount -t msdos /dev/cd0c ~/my-mount-point</userinput></screen>
<para>Desmontar o dispositivo &eacute; extremamente
simples:</para>
<screen>&prompt.user; <userinput>umount <filename>~/my-mount-point</></userinput></screen>
<para>Contudo, habilitar a op&ccedil;&atilde;o
<varname>vfs.usermount</varname>, contudo, causa algumas
implic&acirc;ncias quanto ao quesito seguran&ccedil;a;. A
forma mais racional de acessar m&iacute;dia do tipo MSDOS
no FreeBSD &eacute; usando a aplica&ccedil;&atilde;o
<ulink
URL="http://www.FreeBSD.org/cgi/ports.cgi?query=%5Emtools-&amp;stype=name">mtools
</ulink>, dispon&iacute;vel na Cole&ccedil;&atilde;o de
<literal>Ports</literal>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="du-vs-df">
<para>Os comandos <command>du</command> e
<command>df</command> apresentam quantias distintas de
espa&ccedil;o em disco dispon&iacute;vel. O que
est&aacute; havendo?</para>
</question>
<answer>
<para>&Eacute; necess&aacute;rio entender o que os comandos
<command>du</command> e <command>df</command> realmente
fazem. O <command>du</command> percorre a &aacute;rvore
de diret&oacute;rios medindo o tamanho de cada arquivo e
apresentando o total da soma de todos os arquivos
encontrados em um dado diret&oacute;rio, e posteriormente
apresentando a soma de ambos subdiret&oacute;rios no
diret&oacute;rio de n&iacute;vel seguinte,
<command>df</command> simplesmente pergunta ao sistema de
arquivos quanto espa&ccedil;o ainda lhe resta. Parece o
mesmo comportamento, mas um arquivo alocado fora de um
diret&oacute;rio, por exemplo, afeta os dados apresentados
pelo <command>df</command>, mas n&atilde;o afeta o
<command>du</command>.</para>
<para>Quando um programa est&aacute; usando algum arquivo, e
este &eacute; apagado, o arquivo n&atilde;o &eacute;
retirado do sistema de arquivos at&eacute; que o programa
em quest&atilde;o pare de us&aacute;-lo. Contudo, esse
arquivo &eacute; imediatamente deletado da listagem de
diret&oacute;rios; isso pode ser mais bem observado com
algum paginador como o <command>more</command>. Por
exemplo, assuma que existe um arquivo grande o bastante
que sua presen&ccedil;a seja percept&iacute;vel claramente
na sa&iacute;da dos comandos <command>du</command> e
<command>df</command>. (Considerando que hoje em dia os
discos s&atilde;o bem grandes, o arquivo em quest&atilde;o
deve ser um arquivo de tamanho <emphasis>extremamente
consider&aacute;vel!</emphasis>) Caso o arquivo seja
apagado em quanto ele esteja sendo paginado com o
<command>more</command>, pode-se perceber que o
<command>more</command> n&atilde;o passa a reclamar que o
arquivo n&atilde;o pode mais ser visualizado no mesmo
instante. Contudo, a listagem, do diret&oacute;rio em
quest&atilde;o n&atilde;o apresentar&aacute; mais esse
arquivo, de forma que nenhum usu&aacute;rio ou outro
programa possa acess&aacute;-lo. A entrada do arquivo no
diret&oacute;rio &eacute; simplesmente removida. O
<command>du</command> vai mostrar que esse arquivo
n&atilde;o existe mais &mdash; -- afinal, o du percorreu
todo o diret&oacute;rio e n&atilde;o encontrou esse
arquivo listado -- contudo o <command>df</command> mostra
que o arquivo continua no disco, pois o sistema de
arquivos sabe que o <command>more</command> continua
usando aquele espa&ccedil;o de dados que se encontram no
disco. Uma vez terminada a sess&atilde;o do
<command>more</command>,<command>du</command> e
<command>df</command> concordar&atilde;o entre si.</para>
<para>Note que em sistemas de arquivos com softupdates, a
libera&ccedil;&atilde;o de espa&ccedil;o em disco
tamb&eacute;m pode ser atrasada em at&eacute; 30 segundos
dependendo da situa&ccedil;&atilde;o; apenas depois desse
tempo, a altera&ccedil;&atilde;o em disco ser&aacute;
vis&iacute;vel!</para>
<para>Esse comportamento &eacute; comum e f&aacute;cil de
ser observado em Servidores Web. Muitos usu&aacute;rios
configuram algum Servidor Web no FreeBSD e se esquecem de
rotacionar os arquivos de log da aplica&ccedil;&atilde;o,
os quais entopem o <filename>/var</filename>. O novo
administrador do sistema deleta os arquivos de log em
quest&atilde;o, mas o sistema operacional continua
reclamando que a parti&ccedil;&atilde;o est&aacute; cheia,
at&eacute; que o Servidor Web seja desligado e religado,
de forma que a aplica&ccedil;&atilde;o libera o arquivo e
permite que o sistema apague o arquivo, recuperando o
espa&ccedil;o em disco em quest&atilde;o. Para prevenir
que isso ocorra, configure o &man.newsyslog.8;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="add-swap-space">
<para>Como eu posso adicionar mais espa&ccedil;o para
<foreignphrase>swap</foreignphrase>?</para>
</question>
<answer>
<para>No cap&iacute;tulo <ulink
url="../handbook/config-tuning.html">Configura&ccedil;&atilde;o
e Ajuste Fino
(<foreignphrase>Tuning</foreignphrase>)</ulink> do
&a.ptbr.p.handbook;, pode ser encontrada uma <ulink
url="../handbook/adding-swap-space.html">se&ccedil;&atilde;o
</ulink> descrevendo como fazer isto.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="admin">
<title>Administra&ccedil;&atilde;o do Sistema</title>
<qandaset>
<qandaentry>
<question id="startup-config-files">
<para>Onde est&atilde;o os arquivos que configuram a
inicializa&ccedil;&atilde;o do sistema ?</para>
</question>
<answer>
<para>Do FreeBSD 2.0.5R at&eacute; o 2.2.1R, o arquivo de
configura&ccedil;&otilde;es prim&aacute;rio &eacute; o
<filename>/etc/sysconfig</filename>. Todas as
op&ccedil;&otilde;es devem ser definidas nesse arquivo ou
ent&atilde;o em outros, como o
<filename>/etc/rc</filename> (veja o manual para o
&man.rc.8;) e o <filename>/etc/netstart</filename></para>
<para>D&ecirc; uma olhada no
<filename>/etc/sysconfig</filename> e altere as
vari&aacute;veis de acordo com o que voc&ecirc; quer
configurar no seu sistema. O arquivo &eacute; repleto de
coment&aacute;rios que auxiliam a correta
defini&ccedil;&atilde;o dos valores a serem
definidos.</para>
<para>A partir do 2.2.1 at&eacute; o 3.0, o
<filename>/etc/sysconfig</filename> foi renomeado para
&man.rc.conf.5;, que &eacute; auto-descritivo, e cuja
sintaxe foi melhorada no processo de
substitui&ccedil;&atilde;o. O
<filename>/etc/netstart</filename> agora se chama
<filename>/etc/rc.network</filename>, de forma que todos
os arquivos possam ser copiados com um simples comando
como um <command>cp /usr/src/etc/rc* /etc</command></para>
<para>E depois, a partir do FreeBSD 3.1, o
<filename>/etc/rc.conf</filename> foi alterado para o
<filename>/etc/defaults/rc.conf</filename>.
<emphasis>N&atilde;o edite esse arquivo!</emphasis> Ao
inv&eacute;s disso, para todas as entradas que voc&ecirc;
queira alterar no
<filename>/etc/defaults/rc.conf</filename>, basta apenas
copiar a linha relativa &agrave; essa entrada para o
<filename>/etc/rc.conf</filename> e depois modificar seu
valor.</para>
<para>Por exemplo, caso deseje iniciar o named, o servidor
DNS dispon&iacute;vel no FreeBSD, a partir do FreeBSD 3.1
basta fazer isso:</para>
<screen>&prompt.root; <userinput>echo named_enable="YES" &gt;&gt; /etc/rc.conf</userinput></screen>
<para>Para iniciar servi&ccedil;os locais no FreeBSD 3.1 e
posteriores, basta colocar os scripts shell de
inicializa&ccedil;&atilde;o desses servi&ccedil;os no
diret&oacute;rio <filename>/usr/local/etc/rc.d</filename>.
Tais shell scripts devem ser execut&aacute;veis e
terminarem com a extens&atilde;o .sh. No FreeBSD 3.0 ou
anteriores, o arquivo <filename>/etc/rc.local</filename>
era a &uacute;nica op&ccedil;&atilde;o para iniciar
servi&ccedil;os/processos locais automaticamente.</para>
<para>O arquivo <filename>/etc/rc.serial</filename> &eacute;
usado para a inicializa&ccedil;&atilde;o de portas seriais
(por exemplo, para definir as caracter&iacute;sticas das
portas, e assim por diante).</para>
<para>O arquivo <filename>/etc/rc.i386</filename> &eacute;
usado para configura&ccedil;&otilde;es espec&iacute;ficas
de sistemas Intel e compat&iacute;veis, como por exemplo,
emula&ccedil;&atilde;o iBCS2 ou defini&ccedil;&otilde;es
do sistema de console dos PC.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="adding-users">
<para>Como posso adicionar um usu&aacute;rio de forma
simples?</para>
</question>
<answer>
<para>Use o comando &man.adduser.8;. Caso prefira uma forma
mais complexa (e mais completa), use o comando
&man.pw.8;.</para>
<para>Para remover o usu&aacute;rio do sistema, use o
comando &man.rmuser.8;. Mais uma vez, o &man.pw.8;
tamb&eacute;m funciona muito bem nesse caso.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="root-not-found-cron-errors">
<para>Depois de editar o crontab, mensagens como
<errorname>root: not found</errorname> ficam aparecendo
sempre. Por que?</para>
</question>
<answer>
<para>Normalmente esse &eacute; um problema causado ao se
editar o crontab do sistema
(<filename>/etc/crontab</filename>) e depois usar o
&man.crontab.1; para instala-lo:</para>
<screen>&prompt.root; <userinput>crontab /etc/crontab</userinput></screen>
<para>Essa n&atilde;o &eacute; a forma correta de fazer as
coisas. O crontab do sistema tem um formato distinto do
crontab dos usu&aacute;rios, o qual o &man.crontab.1;
atualiza (o manual do &man.crontab.5; explica tais
diferen&ccedil;as de forma mais detalhada).</para>
<para>Caso voc&ecirc; tenha cometido esse engano, o novo
crontab &eacute; uma simples c&oacute;pia do
<filename>/etc/crontab</filename>, ou seja, com um formato
errado. Apague-o com o comando:</para>
<screen>&prompt.root; <userinput>crontab -r</userinput></screen>
<para>Da pr&oacute;xima vez que editar o
<filename>/etc/crontab</filename>, nenhuma
a&ccedil;&atilde;o precisa ser tomada para avisar o
&man.cron.8; das altera&ccedil;&otilde;es. Ele vai
perceber as mudan&ccedil;as automaticamente.</para>
<para>Caso queira executar alguma tarefa di&aacute;ria,
semanal ou mensal, &eacute; mais indicado adicionar alguns
scripts de shell sob o
<filename>/usr/local/etc/periodic</filename> e deixar o
programa &man.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.</para>
<para>A &uacute;nica raz&atilde;o para esse erro &eacute;
que a tabela de cron do sistema tem um campo a mais, que
especifica o usu&aacute;rio que deve executar o comando.
No crontab do sistema padr&atilde;o do FreeBSD, esse
usu&aacute;rio &eacute; o <username>root</username>, em
todas as entradas. Quando essa crontab &eacute; usada
como a tabela de cron do <username>root</username> (que
&eacute; diferente da tabela de cron do sistema), o
&man.cron.8; assume que a string <username>root</username>
fosse um primeiro comando, mas esse comando n&atilde;o
existe, por isso ocorre o erro.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="su-wheel-group">
<para>Porque o erro <errorname>you are not in the correct
group to su root</errorname> ocorre, quando eu tento
virar <username>root</username> com o su ?</para>
</question>
<answer>
<para>Essa &eacute; uma caracter&iacute;stica de
seguran&ccedil;a do FreeBSD. Para se tornar
<username>root</username> com o su (ou qualquer outro
usu&aacute;rio com privil&eacute;gios de super
usu&aacute;rio), &eacute; preciso fazer parte do grupo
<groupname>wheel</groupname>. Sem essa
caracter&iacute;stica, qualquer usu&aacute;rio com uma
conta v&aacute;lida no sistema que soubesse a senha de
<username>root</username> poderia obter privil&eacute;gios
de super usu&aacute;rio. Por causa do comportamento
atual, essa afirma&ccedil;&atilde;o n&atilde;o &eacute;
verdadeira, uma vez que o su n&atilde;o vai nem permitir
que o usu&aacute;rio d&ecirc; a senha de
<username>root</username>, caso ele n&atilde;o esteja no
grupo <groupname>wheel</groupname>.</para>
<para>Para permitir que algum usu&aacute;rio se torne
<username>root</username>, basta que ele fa&ccedil;a parte
do grupo <groupname>wheel</groupname>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="rcconf-readonly">
<para>Cometi um erro no <filename>rc.conf</filename>, ou em
algum outro arquivo de inicializa&ccedil;&atilde;o, e
agora n&atilde;o posso corrigir essa
altera&ccedil;&atilde;o porque o sistema de arquivos
&eacute; apenas-leitura. O que devo fazer?</para>
</question>
<answer>
<para>Nessa situa&ccedil;&atilde;o, o comportamento esperado
&eacute; que o sistema entre em modo monousu&aacute;rio e
pe&ccedil;a o caminho completo para o seu interpretador de
comandos (sua shell). Basta confirmar a shell
padr&atilde;o, que ele oferece, com um simples
<literal>ENTER</literal>, e depois executar um
<command>mount /</command> para remontar o sistema de
arquivos raiz ( / ) em modo leitura/escrita (rw).
Tamb&eacute;m pode ser necess&aacute;rio executar um
<command>mount -a -t ufs</command> para montar o sistema
de arquivos onde o seu editor de texto preferido vai estar
dispon&iacute;vel. Caso seu editor esteja em um sistema
de arquivos da rede, ser&aacute; necess&aacute;rio
configurar a rede manualmente, ou usar um editor
dispon&iacute;vel localmente, como o &man.ed.1;.</para>
<para>Caso queira usar um editor de tela inteira como o
&man.vi.1; ou &man.emacs.1;, ser&aacute; necess&aacute;rio
definir a vari&aacute;vel de ambiente TERM como do tipo
cons25, bastando um simples export TERM=cons25, de forma
que tais editores possam carregar as
informa&ccedil;&otilde;es corretas da base de dados do
&man.termcap.5;.</para>
<para>Depois disso, o <filename>/etc/rc.conf</filename> pode
ser editado normalmente, e a sintaxe problem&aacute;tica,
corrigida. A mensagem de erro apresentada imediatamente
ap&oacute;s o carregamento do
<foreignphrase>kernel</foreignphrase> indica o
n&uacute;mero da linha e o arquivo onde o erro
aconteceu.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="printer-setup">
<para>Porque estou tendo problemas ao configurar minha
impressora?</para>
</question>
<answer>
<para>Por gentileza, d&ecirc; uma olhada nas p&aacute;ginas
sobre impress&atilde;o do &a.ptbr.p.handbook;. O
documento deve responder a maioria de suas d&uacute;vidas.
Veja a entrada sobre <ulink
URL="../handbook/printing.html">Impress&atilde;o no
&a.ptbr.p.handbook;</ulink>.</para>
<para>Algumas impressoras precisam de um driver local,
baseado em esta&ccedil;&otilde;es, para prover qualquer
tipo de impress&atilde;o. Essas impressoras s&atilde;o
chamadas de <quote>WinPrinters</quote> e n&atilde;o
s&atilde;o suportadas nativamente pelo FreeBSD. Se sua
impressora n&atilde;o funciona sob DOS ou com Windows NT
4.0, provavelmente ela &eacute; uma WinPrinter. A
&uacute;nica esperan&ccedil;a de se obter uma impressora
desse tipo funcionando, &eacute; verificar se o
<literal>port</literal> <filename
role="package">print/pnm2ppa</filename> tem suporte para
ela.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="keyboard-mappings">
<para>Como posso corrigir o mapeamento de teclados do meu
sistema?</para>
</question>
<answer>
<para>Por gentileza, refira-se &agrave; se&ccedil;&atilde;o
usando <ulink
url="../handbook/using-localization.html">localiza&ccedil;&atilde;o
do &a.ptbr.p.handbook;</ulink>, mais precisamente na
parte sobre a <ulink
url="../handbook/using-localization.html#SETTING-CONSOLE">configura&ccedil;&atilde;o
do console</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="pnp-resources">
<para>O que causa mensagens como: <errorname>unknown:
&lt;PNP0303&gt; can't assign resources</errorname> na
inicializa&ccedil;&atilde;o do sistema?</para>
</question>
<answer>
<para>O trecho a seguir &eacute; cita&ccedil;&atilde;o de
uma mensagem enviada na lista freebsd-current.</para>
<blockquote>
<attribution>&a.wollman;, 24 Abril 2001</attribution>
<para>A mensagem <quote>can't assign resources</quote>
indica que os equipamentos em quest&atilde;o s&atilde;o
do tipo ISA, e que n&atilde;o existem entradas indicando
drivers n&atilde;o-PnP compiladas no
<foreignphrase>kernel</foreignphrase>. Esses
equipamentos podem ser controladoras de teclados,
controladora de interrup&ccedil;&atilde;o
program&aacute;vel e v&aacute;rias outras pe&ccedil;as
da infra-estrutura padr&atilde;o do sistema. Os
recursos n&atilde;o podem ser atribu&iacute;dos por
j&aacute; existirem drivers usando tais
endere&ccedil;os.</para>
</blockquote>
</answer>
</qandaentry>
<qandaentry>
<question id="user-quotas">
<para>Porque eu n&atilde;o consigo fazer as quotas de
usu&aacute;rios funcionarem de forma correta?</para>
</question>
<answer>
<orderedlist>
<listitem>
<para>N&atilde;o habilite quotas na
<filename>/</filename>,</para>
</listitem>
<listitem>
<para>Coloque o arquivo de quotas indicando o sistema de
arquivos onde se deseja estabelecer as quotas, por
exemplo:</para>
<informaltable frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Sistemas de arquivos</entry>
<entry>Arquivos de quotas</entry>
</row>
</thead>
<tbody>
<row>
<entry><filename>/usr</filename></entry>
<entry><filename>/usr/admin/quotas</filename></entry>
</row>
<row>
<entry><filename>/home</filename></entry>
<entry><filename>/home/admin/quotas</filename></entry>
</row>
<row>
<entry>&hellip;</entry>
<entry>&hellip;</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</orderedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="sysv-ipc">
<para>O FreeBSD suporta as primitivas de IPC do System
V?</para>
</question>
<answer>
<para>Sim, o FreeBSD suporta IPC ao estilo do System V.
Esse suporte inclui compartilhamento de mem&oacute;ria,
mensagens e sem&aacute;foros. &Eacute; necess&aacute;rio
adicionar as seguintes linhas no arquivo de
configura&ccedil;&otilde;es do seu
<foreignphrase>kernel</foreignphrase>, para ativar o
suporte:</para>
<programlisting>options SYSVSHM # habilita mem&oacute;ria compartilhada
options SYSVSEM # habilita sem&aacute;foros
options SYSVMSG # habilita mensagens</programlisting>
<note>
<para>No FreeBSD 3.2 e posteriores, tais
op&ccedil;&otilde;es j&aacute; fazem parte do
<foreignphrase>kernel</foreignphrase>
<emphasis>GENERIC</emphasis>, o que significa que tal
suporte j&aacute; deve estar compilado no seu
sistema.</para>
</note>
<para>Recompile e instale o novo
<foreignphrase>kernel</foreignphrase>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="uucpmail">
<para>Como posso usar o sendmail para entregar mensagens com
UUCP?</para>
</question>
<answer>
<para>A configura&ccedil;&atilde;o do sendmail
dispon&iacute;vel por padr&atilde;o no FreeBSD &eacute;
direcionada para sites que estejam conectados &agrave;
Internet. Servidores que pretendem entregar suas
mensagens via UUCP devem instalar um novo arquivo de
configura&ccedil;&otilde;es do sendmail.</para>
<para>Alterar o <filename>/etc/mail/sendmail.cf</filename>
manualmente &eacute; considerado tarefa para os mais
puristas. A vers&atilde;o 8 do sendmail tem uma nova
abordagem de arquivos de configura&ccedil;&atilde;o por
meio de pr&eacute; processamento com o &man.m4.1;, onde os
modelos de configura&ccedil;&atilde;o s&atilde;o
manipulados em um n&iacute;vel mais alto de
abstra&ccedil;&atilde;o. Use os arquivos de
configura&ccedil;&atilde;o dispon&iacute;veis sob
/usr/src/usr.sbin/sendmail/cf.</para>
<para>Caso seu sistema n&atilde;o tenha sido instalado com
os fontes, os arquivos de configura&ccedil;&atilde;o do
sendmail foram divididos em pacotes separados. Assumindo
que voc&ecirc; tenha o CDROM do FreeBSD montado,
fa&ccedil;a o seguinte:</para>
<screen>&prompt.root; <userinput>cd /cdrom/src</userinput>
&prompt.root; <userinput>cat scontrib.?? | tar xzf - -C /usr/src contrib/sendmail</userinput></screen>
<para>N&atilde;o se desespere, s&atilde;o apenas algumas
centenas de Kilobytes em tamanho. O arquivo README no
diret&oacute;rio cf serve de introdu&ccedil;&atilde;o
b&aacute;sica ao uso do m4.</para>
<para>Para entregar mensagens via UUCP, o melhor conselho
&eacute; usar o <literal>mailtertable</literal>. Trata-se
de uma base de dados que o sendmail usa para basear suas
decis&otilde;es de roteamento de mensagens.</para>
<para>Primeiro, &eacute; necess&aacute;rio criar seu arquivo
<filename>.mc</filename>. O diret&oacute;rio
<filename>/usr/src/usr.sbin/sendmail/cf/cf</filename>
&eacute; o diret&oacute;rio home para esse tipo de
arquivo. D&ecirc; uma olhada, j&aacute; existem alguns
exemplos dispon&iacute;veis por l&aacute;. Se assumirmos
que voc&ecirc; chamou o arquivo de
<filename>foo.mc</filename>, para converte-lo para um
arquivo <filename>sendmail.cf</filename> v&aacute;lido
basta:</para>
<screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/sendmail/cf/cf</userinput>
&prompt.root; <userinput>make foo.cf</userinput>
&prompt.root; <userinput>cp foo.cf /etc/mail/sendmail.cf</userinput></screen>
<para>Um arquivo <filename>.mc</filename> t&iacute;pico, se
parece com algo mais ou menos assim:</para>
<programlisting>VERSIONID(`<replaceable>N&uacute;mero da sua vers&atilde;o</replaceable>')
OSTYPE(bsd4.4)
FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
define(`UUCP_RELAY', <replaceable>your.uucp.relay</replaceable>)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')
MAILER(local)
MAILER(smtp)
MAILER(uucp)
Cw <replaceable>your.alias.host.name</replaceable>
Cw <replaceable>youruucpnodename.UUCP</replaceable></programlisting>
<para>As linhas contendo as entradas
<literal>accept_unresolvable_domains</literal>,
<literal>nocanonify</literal>, e
<literal>confDONT_PROBE_INTERFACES</literal> previnem o
uso do DNS durante a entrega das mensagens. A
cl&aacute;usula <literal>UUCP_RELAY</literal> &eacute;
necess&aacute;ria por raz&otilde;es bizarras, nem pergunte
quais. Apenas coloque o nome de uma esta&ccedil;&atilde;o
que possa manipular endere&ccedil;os com
pseudo-dom&iacute;nio .UUCP; normalmente o
endere&ccedil;o de relay de e-mail do seu Provedor de
Servi&ccedil;o Internet deve servir.</para>
<para>Depois disso, &eacute; necess&aacute;rio usar o
arquivo <filename>/etc/mail/mailertable</filename>. Caso
exista apenas um link para fora, por onde todos os e-mails
s&atilde;o roteados, as seguintes defini&ccedil;&otilde;es
s&atilde;o o bastante:</para>
<programlisting>#
# makemap hash /etc/mail/mailertable.db &lt; /etc/mail/mailertable
. uucp-dom:<replaceable>your.uucp.relay</replaceable></programlisting>
<para>Um exemplo mais complexo, se pareceria com:</para>
<programlisting>#
# makemap hash /etc/mail/mailertable.db &lt; /etc/mail/mailertable
#
horus.interface-business.de uucp-dom:horus
.interface-business.de uucp-dom:if-bus
interface-business.de uucp-dom:if-bus
.heep.sax.de smtp8:%1
horus.UUCP uucp-dom:horus
if-bus.UUCP uucp-dom:if-bus
. uucp-dom:</programlisting>
<para>Como pode-se perceber, se trata de um arquivo usado na
vida real. As primeiras tr&ecirc;s linhas tratam
situa&ccedil;&otilde;es especiais onde as mensagens
endere&ccedil;adas aquele dom&iacute;nio n&atilde;o devem
ser roteadas pela sa&iacute;da padr&atilde;o, mas ao
inv&eacute;s disso, ser entregues para algum servidor UUCP
vizinho, de forma a encurtar o caminho para entrega dos
e-mails. A linha seguinte trata mensagens para rede
Ethernet local, para dom&iacute;nios onde os mails possam
ser entregues via SMTP. Finalmente, os vizinhos UUCP
s&atilde;o mencionados na nota&ccedil;&atilde;o do
pseudo-dom&iacute;nio .UUCP, que permite um
<literal><replaceable>uucp-neighbor</replaceable>!<replaceable>recipient</replaceable></literal>
sobrescrever as regras padr&atilde;o. A &uacute;ltima
linha &eacute; sempre um ponto, que indica que todos os
e-mails que n&atilde;o 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
esta&ccedil;&otilde;es antecedendo a entrada
<literal>uucp-dom:</literal> devem ser nomes de vizinhos
UUCP v&aacute;lidos, que podem ser checados com o comando
<literal>uuname</literal>.</para>
<para>Para lembrar que esse arquivo precisa ser convertido
em base de dados do tipo DBM, o comando necess&aacute;rio
para tomar essa a&ccedil;&atilde;o est&aacute; comentado
no in&iacute;cio do arquivo mailertable. Esse comando
deve ser executado sempre que o mailertable for
alterado.</para>
<para>Dica final: caso tenha d&uacute;vidas se uma rota de
e-mail em particular ir&aacute; funcionar, lembre-se que a
op&ccedil;&atilde;o <option>-bt</option> do sendmail
permite que ele seja iniciado em modo de testes de
endere&ccedil;o; simplesmente digite
<literal>3,0</literal> seguido do endere&ccedil;o que
voc&ecirc; quer testar o roteamento de mensagens. A
&uacute;ltima linha ir&aacute; indicar o agente de
transfer&ecirc;ncia interno que foi usado, a
esta&ccedil;&atilde;o de destino com a qual esse agente de
entrega ir&aacute; se comunicar, e o seu endere&ccedil;o.
Para sair desse modo, digite Control-D.</para>
<screen>&prompt.user; <userinput>sendmail -bt</userinput>
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter &lt;ruleset&gt; &lt;address&gt;
<prompt>&gt;</prompt> <userinput>3,0 foo@example.com</userinput>
canonify input: foo @ example . com
...
parse returns: $# uucp-dom $@ <replaceable>your.uucp.relay</replaceable> $: foo &lt; @ example . com . &gt;
<prompt>&gt;</prompt> <userinput>^D</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="ispmail">
<para>Como eu configuro e-mail em uma conex&atilde;o dialup
com a rede?</para>
</question>
<answer>
<para>Se a sua conex&atilde;o discada lhe atribui um
endere&ccedil;o IP est&aacute;tico, n&atilde;o &eacute;
necess&aacute;rio configurar nenhuma op&ccedil;&atilde;o
extra. Ajuste o nome da sua esta&ccedil;&atilde;o para o
nome que a identifica na Internet, e o sendmail
far&aacute; o resto.</para>
<para>Mas se a conex&atilde;o PPP lhe atribui
endere&ccedil;os din&acirc;micos, provavelmente o seu
Provedor de Servi&ccedil;o Internet oferece uma conta de
correio eletr&ocirc;nico em seus servidores. Vamos
assumir que o nome do dom&iacute;nio do seu provedor
&eacute; <hostid role="domainname">example.net</hostid>, e
que o nome do seu usu&aacute;rio &eacute;
<username>user</username>. Vamos assumir tamb&eacute;m
que o nome da sua esta&ccedil;&atilde;o seja <hostid
role="fqdn">bsd.home</hostid> e que o Provedor de
Servi&ccedil;o Internet defina que o endere&ccedil;o
<hostid role="fqdn">relay.example.net</hostid> deva ser
usado para relay de mensagens eletr&ocirc;nicas.</para>
<para>Para acessar as mensagens da sua caixa de correio,
&eacute; necess&aacute;rio usar um agente de busca. O
<application>Fetchmail</application> &eacute; uma boa
escolha, j&aacute; que ele suporta v&aacute;rios
protocolos distintos. Normalmente o provedor em
quest&atilde;o oferece servi&ccedil;o de POP3. Caso sua
conex&atilde;o PPP seja estabelecida &agrave; n&iacute;vel
de usu&aacute;rio (user-PPP), para acessar suas mensagens
automaticamente ao estabelecer-se uma conex&atilde;o com a
rede, basta adicionar a seguinte entrada no arquivo
<filename>/etc/ppp/ppp/linkup</filename>:</para>
<programlisting>MYADDR:
!bg su user -c fetchmail</programlisting>
<para>Caso esteja usando o
<application>sendmail</application> (como foi descrito
anteriormente) para entregar suas mensagens para
endere&ccedil;os n&atilde;o-locais, insira o
comando:</para>
<programlisting> !bg su user -c "sendmail -q"</programlisting>
<para>depois da entrada apresentada anteriormente. Esse
comando ir&aacute; for&ccedil;ar o
<application>sendmail</application> a processar sua fila
de e-mail t&atilde;o logo uma conex&atilde;o com a&nbsp;
rede seja estabelecida.</para>
<para>Assumindo que exista uma conta para o
<username>user</username> na m&aacute;quina <hostid
role="fqdn">bsd.home</hostid>. No diret&oacute;rio home
do <username>user</username> na esta&ccedil;&atilde;o
<hostid role="fqdn">bsd.home</hostid>, crie um arquivo
<filename>.fetchmailrc</filename> com o seguinte
conte&uacute;do:</para>
<programlisting>poll example.net protocol pop3 fetchall pass MySecret</programlisting>
<para>Esse arquivo n&atilde;o deve ter permiss&atilde;o de
leitura para nenhum outro usu&aacute;rio, a n&atilde;o ser
o <username>user</username> j&aacute; que ele
cont&eacute;m a <literal>sua senha</literal>.</para>
<para>Para garantir que o cabe&ccedil;alho
<literal>from:</literal> esteja sempre correto, &eacute;
necess&aacute;rio indicar ao
<application>sendmail</application> que o endere&ccedil;o
<literal>user@example.net</literal> deve ser usado ao
inv&eacute;s de <literal>user@bsd.home</literal>.
Tamb&eacute;m &eacute; interessante configurar o
<application>sendmail</application> para entregar suas
mensagens via <hostid
role="fqdn">relay.example.net</hostid>, permitindo
transmiss&atilde;o de mensagens de forma mais
r&aacute;pida.</para>
<para>O seguinte arquivo <filename>.mc</filename> deve ser o
bastante:</para>
<programlisting>VERSIONID(`bsd.home.mc version 1.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</programlisting>
<para>Por gentileza, refira-se &agrave; se&ccedil;&atilde;o
anterior para obter detalhes sobre como transformar esse
arquivo <filename>.mc</filename> em um arquivo
<filename>sendmail.cf</filename>. N&atilde;o se
esque&ccedil;a tamb&eacute;m de reiniciar o
<application>sendmail</application> depois de alterar o
<filename>sendmail.cf</filename>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="sendmail-alternative">
<para>Que outros servidores de correio eletr&ocirc;nico
posso usar no lugar do Sendmail?</para>
</question>
<answer>
<para>O <ulink
url="http://www.sendmail.org/">Sendmail</ulink> &eacute;
o programa servidor de correio eletr&ocirc;nico
padr&atilde;o no FreeBSD, mas ele pode ser facilmente
substitu&iacute;do por qualquer outro MTA (por
inst&acirc;ncia, um MTA instalado a partir do
<literal>ports</literal>).</para>
<para>Existem v&aacute;rios MTA's que servem de alternativa
ao Sendmail na Cole&ccedil;&atilde;o de
<literal>Ports</literal> do FreeBSD, sendo o <filename
role="package">mail/exim</filename>, <filename
role="package">mail/postfix</filename>, <filename
role="package">mail/qmail</filename>, <filename
role="package">mail/zmailer</filename>, os mais
populares.</para>
<para>A diversidade &eacute; sempre uma boa
indica&ccedil;&atilde;o, e o fato de ter v&aacute;rios
servidores de e-mail dispon&iacute;veis &eacute;
&oacute;timo. Conte&uacute;do, evite perguntas como
<quote>O Sendmail &eacute; melhor que o Qmail?</quote> nas
listas de discuss&atilde;o. Se voc&ecirc; realmente quer
saber, procure no hist&oacute;rico das listas. As
vantagens e desvantagens de cada MTA j&aacute; foram
discutidas in&uacute;meras vezes.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="forgot-root-pw">
<para>Esqueci a senha de root! O que eu fa&ccedil;o?</para>
</question>
<answer>
<para>Em primeiro lugar, n&atilde;o entre em p&acirc;nico!
Reinicie o seu FreeBSD, digite <userinput>boot
-s</userinput> na tela do Boot: (ou apenas
<userinput>-s</userinput> para as vers&otilde;es
anteriores &agrave; 3.2 do FreeBSD) para entrar e modo
monousu&aacute;rio. Quando o sistema perguntar sobre que
shell usar, aperte ENTER. Voc&ecirc; estar&aacute; em uma
prompt de comandos; digite <command>mount -u /</command>
para montar o sistema de arquivos raiz com
leitura/escrita, e depois <command>mount -a</command> para
remontar todos os seus sistemas de arquivos. Execute o
comando <command>passwd root</command> para modificar a
senha de root do sistema, e depois digite &man.exit.1;
para continuar &nbsp;a inicializa&ccedil;&atilde;o em modo
multiusu&aacute;rio.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="CAD-reboot">
<para>Como posso evitar que a seq&uuml;&ecirc;ncia de teclas
<keycombo
action="simul"><keycap>Control</keycap><keycap>Alt</keycap><keycap>Delete</keycap></keycombo>
reinicie o sistema?</para>
</question>
<answer>
<para>Caso esteja usando o syscons (o driver padr&atilde;o
para o console) em um sistema FreeBSD 2.2.7 ou posterior,
construa e instale um novo
<foreignphrase>kernel</foreignphrase> com a
op&ccedil;&atilde;o:</para>
<programlisting>options SC_DISABLE_REBOOT</programlisting>
<para>Caso use o driver de console PCVT em um FreeBSD 2.2.5
ou posterior, use a seguinte linha:</para>
<programlisting>options PCVT_CTRL_ALT_DEL</programlisting>
<para>Em vers&otilde;es anteriores &agrave;s citadas, edite
o mapeamento do seu teclado, usado para o console, e
substitua a palavra <literal>boot</literal> por
<literal>nop</literal>. O mapeamento de teclado
padr&atilde;o est&aacute; em
<filename>/usr/share/syscons/keymaps/us.iso.kbd</filename>.
O <filename>/etc/rc.conf</filename> deve ser
instru&iacute;do de forma que esse arquivo seja lido. Se
voc&ecirc; estiver usando um outro mapa espec&iacute;fico
para o seu pa&iacute;s, edite esse mapa ao inv&eacute;s do
padr&atilde;o.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="dos-to-unix-txt">
<para>Como posso converter arquivos de texto do DOS para o
formato do Unix?</para>
</question>
<answer>
<para>Use esse comando do perl:</para>
<screen>&prompt.user; <userinput>perl -i.bak -npe 's/\r\n/\n/g' file... </userinput></screen>
<para>onde <literal>file</literal> indica o arquivo ou
arquivos a serem processados. As
modifica&ccedil;&otilde;es s&atilde;o feitas no
pr&oacute;prio arquivo e o original &eacute; salvo com a
extens&atilde;o .bak.</para>
<para>O comando &man.tr.1; tamb&eacute;m pode ser
usado:</para>
<screen>&prompt.user; <userinput>tr -d '\r' &lt; <replaceable>dos-text-file</replaceable> &gt; <replaceable>unix-file</replaceable></userinput></screen>
<para>Onde <replaceable>dos-text-file</replaceable> &eacute;
o arquivo com o texto em formato DOS, enquanto o
<replaceable>unix-file</replaceable> armazenar&aacute; a
sa&iacute;da convertida. Usar o &man.tr.1; &eacute; um
pouco mais r&aacute;pido do que usar o perl.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="kill-by-name">
<para>Como eu mato processos pelo seu nome?</para>
</question>
<answer>
<para>Use o comando &man.killall.1;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="root-acl">
<para>Por que motivos o su est&aacute; me atazanando pelo
fato de n&atilde;o pertencer &agrave; ACL do
<username>root</username>?</para>
</question>
<answer>
<para>Esse erro &eacute; proveniente do sistema de
autentica&ccedil;&atilde;o da distri&ccedil;&atilde;o do
Kerberos. O problema n&atilde;o &eacute; uma
perturba&ccedil;&atilde;o fatal. Basta executar o su com
a op&ccedil;&atilde;o -K ou ent&atilde;o desinstalar o
Kerberos, como ser&aacute; descrito na pr&oacute;xima
quest&atilde;o.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="uninstall-kerberos">
<para>Como eu desinstalo o Kerberos?</para>
</question>
<answer>
<para>Para remover o Kerberos do sistema, reinstale a
distribui&ccedil;&atilde;o <literal>bin</literal> da
vers&atilde;o que est&aacute; sendo usada. Caso tenha o
CDROM do FreeBSD, monte-o (vamos assumir, em /cdrom) e
execute os comandos:</para>
<screen>&prompt.root; <userinput>cd /cdrom/bin</userinput>
&prompt.root; <userinput>./install.sh</userinput></screen>
<para>Ou ent&atilde;o, apague todas as op&ccedil;&otilde;es
<quote>MAKE_KERBEROS</quote> do
<filename>/etc/make.conf</filename> e recompile todo o
sistema com um build world.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="add-pty">
<para>Como posso adicionar pseudo-terminais ao
sistema?</para>
</question>
<answer>
<para>Caso tenha in&uacute;meras conex&otilde;es telnet,
ssh, X, ou tela de usu&aacute;rio, &eacute;
prov&aacute;vel que voc&ecirc; atingir&aacute; o limite
dos seus pseudo-terminais. Aqui est&atilde;o as
instru&ccedil;&otilde;es de como adicionar mais
pseudo-terminais:</para>
<procedure>
<step>
<para>Construa e instale um novo
<foreignphrase>kernel</foreignphrase> com a
linha</para>
<programlisting>pseudo-device pty 256</programlisting>
<para>em seu arquivo de
configura&ccedil;&otilde;es.</para>
</step>
<step>
<para>Execute os comandos</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>sh MAKEDEV pty{1,2,3,4,5,6,7}</userinput></screen>
<para>de forma a criar 256 novos devices para os novos
terminais.</para>
</step>
<step>
<para>Edite o <filename>/etc/ttys</filename> e adicione
uma linha para cada um dos 256 terminais. Tais
entradas devem ter o formato correspondente &agrave;s
entradas j&aacute; existentes, por exemplo:</para>
<programlisting>ttyqc none network</programlisting>
<para>A ordem de defini&ccedil;&atilde;o das letras
&eacute; expressa como
<literal>tty[pqrsPQRS][0-9a-v]</literal>, ao
ilustrarmos em express&otilde;es regulares.</para>
</step>
<step>
<para>Reinicie o sistema com o novo
<foreignphrase>kernel</foreignphrase>, e
pronto.</para>
</step>
</procedure>
</answer>
</qandaentry>
<qandaentry>
<question id="create-snd0">
<para>Por que motivo n&atilde;o consigo criar a device
snd0?</para>
</question>
<answer>
<para>Simples, porque n&atilde;o existe a device
<devicename>snd</devicename>. Esse nome &eacute; usado
para identificar o conjunto de devices que comp&otilde;em
os drivers de som do FreeBSD, como as devices
<devicename>mixer</devicename>,
<devicename>sequencer</devicename>, e
<devicename>dsp</devicename>.</para>
<para>Para criar tais devices, basta executar:</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>sh MAKEDEV snd0</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="reread-rc">
<para>Como posso reler o <filename>/etc/rc.conf</filename> e
reiniciar o <filename>/etc/rc</filename> sem rebootar o
sistema?</para>
</question>
<answer>
<para>V&aacute; para o modo monousu&aacute;rio e volte para
o modo multiusu&aacute;rio.</para>
<para>&Eacute; simples; no console, fa&ccedil;a:</para>
<screen>&prompt.root; <userinput>shutdown now</userinput>
(Note: without -r or -h)
&prompt.root; <userinput>return</userinput>
&prompt.root; <userinput>exit</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="sandbox">
<para>O que &eacute; uma sandbox?</para>
</question>
<answer>
<para><quote>Sandbox</quote> &eacute; um jarg&atilde;o usado
em discuss&otilde;es pertinentes &agrave; seguran&ccedil;a
de sistemas. Pode significar duas coisas:</para>
<itemizedlist>
<listitem>
<para>Um processo enquadrado em um conjunto de paredes
virtuais que s&atilde;o criadas para prevenir que
algum usu&aacute;rio, ao explorar alguma
inconformidade do processo, possa tamb&eacute;m
explorar e obter privil&eacute;gios no sistema
operacional como um todo.</para>
<para>O processo deve conseguir <quote>rodar</quote>
dentro dessas paredes, ou seja, nada que o processo
possa fazer ao executar seu c&oacute;digo, pode ser
capaz de violar tais paredes. Dessa forma n&atilde;o
&eacute; necess&aacute;ria uma auditoria detalhada do
c&oacute;digo e das a&ccedil;&otilde;es do processo
para que se possa realizar algumas
afirma&ccedil;&otilde;es pertinentes &agrave;
seguran&ccedil;a de tal sistema.</para>
<para>Tais paredes podem ser a
identifica&ccedil;&atilde;o de um usu&aacute;rio
(userid), por exemplo. Essa &eacute; a
defini&ccedil;&atilde;o de sandbox usada nas
p&aacute;ginas de manuais do named e de
security.</para>
<para>Observe o servi&ccedil;o <literal>ntalk</literal>,
como exemplo (veja o /etc/inetd.conf). Esse
servi&ccedil;o costumava ser executado com userid do
<username>root</username>. Hoje em dia o processo
roda com o userid do <username>tty</username>. O
usu&aacute;rio <username>tty</username>, portanto,
&eacute; uma sandbox criada para dificultar qualquer
atividade de um usu&aacute;rio malicioso que por
ventura consiga acesso ao sistema por meio do ntalk.
Com essa sandbox, uma viola&ccedil;&atilde;o de
seguran&ccedil;a bem sucedida via
<literal>ntalk</literal> dificultaria qualquer
a&ccedil;&atilde;o tomada al&eacute;m das
poss&iacute;veis com o userid do
<username>tty</username>.</para>
</listitem>
<listitem>
<para>Um processo criado dentro de um ambiente de
simula&ccedil;&atilde;o. Essa &eacute; uma
situa&ccedil;&atilde;o mais complexa. Basicamente
implica que qualquer pessoa m&aacute; intencionada que
consiga explorar tal processo, acreditar&aacute; que
pode obter acesso &agrave; todo o ambiente, nas na
verdade, estar&aacute; apenas acessando um sistema de
simula&ccedil;&atilde;o, n&atilde;o alterando nenhum
dado real.</para>
<para>A forma mais comum de conseguir criar um ambiente
simulado como esse, &eacute; criando um
subdiret&oacute;rio &agrave; partir de onde o processo
consiga acessar (uma c&oacute;pia de) qualquer arquivo
do sistema que por ventura ele precise, e executar
esse processo simulando um diret&oacute;rio raiz (ou
seja, para o processo, o <filename>/</filename>
ser&aacute; o subdiret&oacute;rio determinado, e
n&atilde;o o verdadeiro <filename>/</filename> do
sistema).</para>
<para>Outra situa&ccedil;&atilde;o comum &eacute; montar
um sistema de arquivos base com apenas
permiss&atilde;o de leitura, e depois criar um outro
sistema de arquivos em uma camada superior, com acesso
de escrita/leitura, dando ao processo a
impress&atilde;o de poder ler/escrever em todo o
sistema de arquivos. Apenas o processo em
quest&atilde;o percebe esse ambiente, enquanto os
outros n&atilde;o s&atilde;o necessariamente
ludibriados.</para>
<para>A inten&ccedil;&atilde;o &eacute; que tais sandbox
sejam t&atilde;o transparentes que qualquer
usu&aacute;rio (ou hacker) n&atilde;o consiga perceber
que est&aacute; dentro de uma.</para>
</listitem>
</itemizedlist>
<para>Os sistemas Unix costumam implementar esses dois
principais tipos de sandbox, um em n&iacute;vel de
processo e o outro, muito comum, em n&iacute;vel de
userid.</para>
<para>Cada processo Unix &eacute; completamente separado dos
outros, por meio de algum tipo de parede de
seguran&ccedil;a. Um processo nunca modifica o
espa&ccedil;o de endere&ccedil;amento de outro, diferente
do ambiente Windows onde cada processo pode facilmente
sobrescrever endere&ccedil;os de outros processos, fazendo
o sistema travar.</para>
<para>Cada processo Unix &eacute; de propriedade de um
userid em particular. Caso o userid n&atilde;o seja do
<username>root</username>, ele serve de parede de
seguran&ccedil;a em rela&ccedil;&atilde;o aos processos
pertencentes a outros usu&aacute;rios. Os userid
tamb&eacute;m s&atilde;o usados para proteger dados
armazenados em disco.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="securelevel">
<para>O que &eacute; <literal>securelevel</literal>
(n&iacute;vel de seguran&ccedil;a do sistema)?</para>
</question>
<answer>
<para><literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) &eacute; um mecanismo de
seguran&ccedil;a implementado no
<foreignphrase>kernel</foreignphrase> do FreeBSD.
Basicamente, quando o <literal>securelevel</literal>
&eacute; positivo, o <foreignphrase>kernel</foreignphrase>
restringe algumas tarefas do sistema; nem mesmo o
superusu&aacute;rio (por exemplo, o
<username>root</username>) tem permiss&atilde;o de
realizar tais tarefas. Na data que este
<literal>FAQ</literal> foi escrito, o mecanismo de
<literal>securelevel</literal> do FreeBSD era capaz de,
entre outras coisas, limitar as habilidades de:</para>
<itemizedlist>
<listitem>
<para>retirar algumas flags de arquivos, como a
<literal>schg</literal> (flag de imutabilidade do
sistema),</para>
</listitem>
<listitem>
<para>escrever na mem&oacute;ria do
<foreignphrase>kernel</foreignphrase> por meio do
<devicename>/dev/mem</devicename> e
<devicename>/dev/kmem</devicename>,</para>
</listitem>
<listitem>
<para>carregar m&oacute;dulos do
<foreignphrase>kernel</foreignphrase>, e</para>
</listitem>
<listitem>
<para>alterar regras de Firewall do
&man.ipfirewall.4;.</para>
</listitem>
</itemizedlist>
<para>Para verificar o estado do
<literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) em um sistema em funcionando,
simplesmente execute o seguinte comando:</para>
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
<para>A sa&iacute;da apresentar&aacute; o nome da
vari&aacute;vel do &man.sysctl.8; (nesse caso,
<varname>kern.securelevel</varname>) e um n&uacute;mero.
Esse &uacute;ltimo ser&aacute; o valor atual do
n&iacute;vel de seguran&ccedil;a do
<foreignphrase>kernel</foreignphrase> do FreeBSD. Caso
esse valor seja positivo (maior que 0), ao menos algumas
das caracter&iacute;sticas dos n&iacute;veis de
seguran&ccedil;a estar&atilde;o habilitadas.</para>
<para>Os n&iacute;veis de seguran&ccedil;a n&atilde;o podem
ser diminu&iacute;dos em um sistema que est&aacute;
funcionando se isso fosse poss&iacute;vel o
<literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) perderia sua funcionalidade.
Caso seja necess&aacute;rio executar alguma tarefa que
necessite que o n&iacute;vel de seguran&ccedil;a seja
n&atilde;o-positivo (por exemplo, um
<maketarget>installworld</maketarget> ou alterar a data do
sistema) ser&aacute; preciso alterar as
defini&ccedil;&otilde;es de <literal>securelevel</literal>
(n&iacute;vel de seguran&ccedil;a do sistema) no
<filename>/etc/rc.conf</filename> (mais precisamente, as
vari&aacute;veis <varname>kern_securelevel</varname> e
<varname>kern_securelevel_enable</varname>) e reiniciar o
sistema.</para>
<para>Para obter mais informa&ccedil;&otilde;es quanto aos
n&iacute;veis de seguran&ccedil;a e sobre as
fun&ccedil;&otilde;es espec&iacute;ficas de cada
n&iacute;vel, por gentileza, consulte a p&aacute;gina de
manual do &man.init.8;.</para>
<warning>
<para>O <literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) n&atilde;o &eacute; uma
bala de prata; ele tem v&aacute;rias defici&ecirc;ncias
&oacute;bvias. A mais frequ&ecirc;nte &eacute; provocar
uma falsa sensa&ccedil;&atilde;o de
seguran&ccedil;a.</para>
<para>Um dos maiores problemas, e portanto que deve ser
bem observada pelo administrador do sistema, &eacute;
que, para que o <literal>securelevel</literal>
(n&iacute;vel de seguran&ccedil;a do sistema) se torne
efetivo, todos os arquivos usados pelo processo de
inicializa&ccedil;&atilde;o at&eacute; que os
n&iacute;veis de seguran&ccedil;a se tornem positivos,
devem estar seguros. Se um usu&aacute;rio que deseja
atacar o sistema, conseguir que seu c&oacute;digo seja
executado antes que o n&iacute;vel de seguran&ccedil;a
seja definido (o que ocorre pouco depois do processo de
inicializa&ccedil;&atilde;o, visto que algumas
fun&ccedil;&otilde;es que o sistema precisa realizar,
n&atilde;o podem ser iniciadas com um n&iacute;vel
elevado de seguran&ccedil;a), a prote&ccedil;&atilde;o
do <literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) ser&aacute; invalidada.
Por outro lado, a tarefa de assegurar que todos os
arquivos necess&aacute;rios pelo processo de
inicializa&ccedil;&atilde;o estejam em conformidade,
n&atilde;o &eacute; tecnicamente imposs&iacute;vel, mas,
O processo de manuten&ccedil;&atilde;o de um ambiente em
tais condi&ccedil;&otilde;es se tornaria um pesadelo,
visto que seria necess&aacute;rio baixar o sistema, no
m&iacute;nimo para modo monousu&aacute;rio sempre que
fosse necess&aacute;rio modificar os arquivos de
configura&ccedil;&atilde;o do mesmo.</para>
<para>Esse e outros pontos s&atilde;o freq&uuml;entemente
discutidos nas listas do FreeBSD, em especial na
freebsd-security. Por gentileza, queira fazer uma busca
no hist&oacute;rico da lista, <ulink
url="../../../../search/index.html">clicando
aqui</ulink>, para uma discuss&atilde;o extensa sobre
o assunto. Algumas pessoas est&atilde;o
esperan&ccedil;osas de que o securelevel logo
ser&aacute; afastado, em favor de um mecanismo de
seguran&ccedil;a mais refinado, mas as coisas ainda
est&atilde;o confusas a este respeito.</para>
<para>Considere-se advertido.</para>
</warning>
</answer>
</qandaentry>
<qandaentry>
<question id="release-candidate">
<para>Tentei atualizar meu sistema para o &uacute;ltimo
-STABLE, mas ele se tornou -RC ou -PRERELEASE! O que
est&aacute; havendo?</para>
</question>
<answer>
<para>A resposta mais curta: &Eacute; s&oacute; um nome, RC
&eacute; um acr&ocirc;nimo para <quote>Release
Candidate</quote>. Significa que uma nova vers&atilde;o
est&aacute; eminente. No FreeBSD, -PRERELEASE &eacute;
tipicamente um sinonimo de c&oacute;digo congelado antes
de uma nova vers&atilde;o. (Em algumas vers&otilde;es, o
t&iacute;tulo -BETA foi usado sob as mesmas
circunst&acirc;ncias em que o -PRERELEASE seria).</para>
<para>A resposta longa: O FreeBSD normalmente deriva suas
vers&otilde;es de duas fontes de origem. As
vers&otilde;es principais, ponto-zero, como o 3.0-RELEASE
e o 4.0-RELEASE que s&atilde;o marcadas inicialmente como
o topo da cadeia de desenvolvimento, normalmente chamados
de <link linkend="current">-CURRENT</link>. As
vers&otilde;es menores (como 3.1-RELEASE ou 4.2-RELEASE),
s&atilde;o criados a partir do
<foreignphrase>snapshot</foreignphrase> mais recente da
ramifica&ccedil;&atilde;o ativa marcada como <link
linkend="stable">-STABLE</link>. A partir do
4.3-RELEASE, cada vers&atilde;o conta tamb&eacute;m com
sua pr&oacute;pria ramifica&ccedil;&atilde;o, que pode ser
acessada por usu&aacute;rios que queiram apenas um
n&iacute;vel extremamente conservador de desenvolvimento
(tipicamente, apenas consultores de
seguran&ccedil;a).</para>
<para>Quando uma vers&atilde;o est&aacute; para ser criada,
a ramifica&ccedil;&atilde;o de onde ela se derivar&aacute;
deve passar por um certo processo. Parte desse processo
&eacute; o congelamento do c&oacute;digo. Quando o
processo de congelamento do c&oacute;digo se inicia, o
nome desta ramifica&ccedil;&atilde;o &eacute; alterado
para indicar que ela est&aacute; para se tornar uma
vers&atilde;o. Por exemplo, se a
ramifica&ccedil;&atilde;o usada chamava-se 4.5-STABLE, ela
passa a se chamar 4.6-PRERELEASE para indicar que o
c&oacute;digo est&aacute; congelado, e indicar que testes
extras, pr&eacute; vers&atilde;o, est&atilde;o
acontecendo. Durante esse per&iacute;odo
altera&ccedil;&otilde;es pertinentes a
corre&ccedil;&otilde;es de problemas s&atilde;o
realizadas. Quando o novo c&oacute;digo est&aacute;
pronto para ser lan&ccedil;ado, ele passa a ser chamado de
-RC (nesse exemplo, 4.6-RC), indicando que provavelmente a
nova vers&atilde;o ser&aacute; criada a partir do
c&oacute;digo atual. Nesse est&aacute;gio, apenas os
problemas mais s&eacute;rios s&atilde;o corrigidos.
Depois que a vers&atilde;o &eacute; finalmente
lan&ccedil;ado (4.6-RELEASE nesse exemplo) e a nova
ramifica&ccedil;&atilde;o com o nome dessa vers&atilde;o
foi criada, ela passa a se chamar -STABLE; 4.6-STABLE no
nosso exemplo.</para>
<para>Para obter mais informa&ccedil;&otilde;es sobre a
numera&ccedil;&atilde;o das vers&otilde;es e sobre as
v&aacute;rias ramifica&ccedil;&otilde;es CVS, por
gentileza, refira-se ao artigo sobre a <ulink
url="../../articles/releng/article.html">Engenharia de
Releases</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="kernel-chflag-failure">
<para>Tentei instalar um novo
<foreignphrase>kernel</foreignphrase>, mas a rotina de
chflags falhou. O que posso fazer?</para>
</question>
<answer>
<para>A resposta curta: provavelmente voc&ecirc; est&aacute;
com o <literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) acima do 0. Reinicie o
sistema em modo mono usu&aacute;rio e instale o
<foreignphrase>kernel</foreignphrase>.</para>
<para>A resposta mais completa: O FreeBSD n&atilde;o permite
que as flags do sistema sejam alteradas caso o
<literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) seja maior que 0. O
n&iacute;vel atual do <literal>securelevel</literal>
(n&iacute;vel de seguran&ccedil;a do sistema) pode ser
verificado com o comando:</para>
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
<para>O <literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) n&atilde;o pode ser
diminu&iacute;do; &eacute; necess&aacute;rio iniciar o
sistema em modo mono usu&aacute;rio, ou alterar o
n&iacute;vel de seguran&ccedil;a em
<filename>/etc/rc.conf</filename>, depois reiniciar. Veja
a p&aacute;gina de manual do &man.init.8; para obter
informa&ccedil;&otilde;es mais detalhadas sobre o
<literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema), e veja tamb&eacute;m o
<filename>/etc/defaults/rc.conf</filename> e a
p&aacute;gina de manual do &man.rc.conf.5; para obter mais
informa&ccedil;&otilde;es quanto ao rc.conf.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="kernel-securelevel-time">
<para>N&atilde;o consigo alterar mais de um segundo na hora
no meu sistema. O que posso fazer?</para>
</question>
<answer>
<para>A resposta curta: provavelmente o sistema est&aacute;
com <literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) acima do 1. Reinicie o
sistema em modo mono usu&aacute;rio e altere a
data.</para>
<para>A resposta mais completa: O FreeBSD n&atilde;o permite
que a hora do sistema seja alterada por mais de um segundo
quando o <literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) do
<foreignphrase>kernel</foreignphrase> &eacute; maior que
1. O n&iacute;vel atual do <literal>securelevel</literal>
(n&iacute;vel de seguran&ccedil;a do sistema) pode ser
verificado com o comando:</para>
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
<para>O <literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) n&atilde;o pode ser
diminu&iacute;do; &eacute; necess&aacute;rio iniciar o
sistema em modo mono usu&aacute;rio, ou alterar o
n&iacute;vel de seguran&ccedil;a em
<filename>/etc/rc.conf</filename>, depois reiniciar. Veja
a p&aacute;gina de manual do &man.init.8; para obter
informa&ccedil;&otilde;es mais detalhadas sobre o
<literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema), e veja tamb&eacute;m o
<filename>/etc/defaults/rc.conf</filename> e a
p&aacute;gina de manual do &man.rc.conf.5; para obter mais
informa&ccedil;&otilde;es quanto ao rc.conf.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="statd-mem-leak">
<para>Por que motivo o <command>rpc.statd</command>
est&aacute; usando 256 megabytes de mem&oacute;ria?</para>
</question>
<answer>
<para>N&atilde;o, m&atilde;o existe nenhuma falha no uso da
mem&oacute;ria, e ele n&atilde; &eacute; usando 256MB de
RAM. Ele simplesmente gosta de (ele sempre faz isso)
mapear uma quantia obscena de mem&oacute;ria em seu
endere&ccedil;amento, simplesmente por conveni&ecirc;ncia.
N&atilde;o existe nada terrivelmente errado com esse
comportamento, de um ponto de vista t&eacute;cnico; a
&uacute;nica quest&atilde;o &eacute; que assim o
&man.top.1; e o &man.ps.1; ficam completamente
perdidos.</para>
<para>O &man.rpc.statd.8; mapeia seu arquivo de status
(localizado sob o <filename>/var</filename>) no seu
endere&ccedil;amento para economiza
preocupa&ccedil;&otilde;es sobre esse remapeamento em um
segundo momento, quando o arquivo precisa crescer. O
mapeamento &eacute; feito a um valor enorme. Analisando o
c&oacute;digo fonte, podemos evidenciar que o tamanho do
argumento do &man.mmap.2; &eacute;
<literal>0x10000000</literal>, ou exatos 256MB em sistemas
de arquitetura IA32.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="unsetting-schg">
<para>Por que eu n&atilde;o posso retirar a flag
<literal>schg</literal> dos arquivos?</para>
</question>
<answer>
<para>O sistema est&aacute; sendo executado em um
n&iacute;vel de seguran&ccedil;a elevado (maior que 0).
Diminua o n&iacute;vel de seguran&ccedil;a e tente
novamente. Para obter mais informa&ccedil;&otilde;es, por
gentileza, refira-se &agrave; se&ccedil;&atilde;o sobre
<link linkend="securelevel"><literal>securelevel</literal>
(n&iacute;vel de seguran&ccedil;a do sistema)</link> do
<literal>FAQ</literal>, e &agrave; p&aacute;gina de manual
do &man.init.8;</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ssh-shosts">
<para>Por que a autentica&ccedil;&atilde;o do SSH via
<filename>.shosts</filename> n&atilde;o funciona por
padr&atilde;o nas vers&otilde;es recentes do
FreeBSD?</para>
</question>
<answer>
<para>O motivo &eacute; simples. A
autentica&ccedil;&atilde;o via
<filename>.shosts</filename> n&atilde;o funciona mais por
padr&atilde;o porque o &man.ssh.1; n&atilde;o est&aacute;
instalado com suid de root por padr&atilde;o.
Raz&otilde;es &oacute;bvias de seguran&ccedil;a. Para
<quote>corrigir</quote> isto, pode-se fazer o
seguinte:</para>
<itemizedlist>
<listitem>
<para>Para uma altera&ccedil;&atilde;o permanente,
defina <makevar>ENABLE_SUID_SSH</makevar> como
<literal>true</literal> no arquivo
<filename>/etc/make.conf</filename> e recompile o ssh
(ou execute um make world).</para>
</listitem>
<listitem>
<para>Uma corre&ccedil;&atilde;o tempor&aacute;ria pode
ser mudar os modos de permiss&atilde;o do&nbsp;
<filename>/usr/bin/ssh</filename> para
<literal>4555</literal> simplesmente executando o
comando <command>chmod 4555 /usr/bin/ssh</command>
logado como <username>root</username>. Depois, defina
<makevar>ENABLE_SUID_SSH= true</makevar> no
<filename>/etc/make.conf</filename> para que as
altera&ccedil;&otilde;es tenham efeito todas as vezes
que um make world for feito.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="vnlru">
<para>O que &eacute; o <literal>vnlru</literal>?</para>
</question>
<answer>
<para>O <literal>vnlru</literal> limpa e libera os vnodes
quando o sistema atinge o limite do
<varname>kern.maxvnodes</varname>. Essa thread do
<foreignphrase>kernel</foreignphrase> se mant&eacute;m
inativa a maior parte do tempo, e s&oacute; se inicia caso
exista uma grande quantidade de mem&oacute;ria RAM, e o
sistema esteja acessando dezenas de milhares de arquivos
pequenos.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="x">
<title>O sistema X, sistema de interface gr&aacute;fica e os
Consoles Virtuais</title>
<qandaset>
<qandaentry>
<question id="running-X">
<para>Quero rodar a interface gr&aacute;fica X, como
procedo?</para>
</question>
<answer>
<para>A maneira mais f&aacute;cil &eacute; simplesmente
especificar o desejo de usar o X durante o processo de
instala&ccedil;&atilde;o do FreeBSD.</para>
<para>Depois disso, leia e siga as instru&ccedil;&otilde;es
documentadas na ferramenta <command>xf86config</command>,
que auxilia o usu&aacute;rio a configurar o XFree86 para
os diversos monitores, placas de v&iacute;deo, mouse e
etc, suportados pelo X, sistema de interface
gr&aacute;fica.</para>
<para>Tamb&eacute;m pode ser interessante dar uma olhada no
servidor Xaccel. Confira a se&ccedil;&atilde;o do
<literal>FAQ</literal> pertinente &agrave; <link
linkend="xig">Xi Graphics</link> ou <link
linkend="metrox">Metro Link</link> para obter mais
detalhes.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="running-X-securelevels">
<para><emphasis>Tentei</emphasis> rodar o X, mas o erro
<errorname>KDENABIO failed (Operation not
permitted)</errorname> sempre aparece, quando eu digito
o comando <command>startx</command>. O que posso
fazer?</para>
</question>
<answer>
<para>Seu sistema est&aacute; rodando com um
<literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) elevado, n&atilde;o
est&aacute;? &Eacute; imposs&iacute;vel iniciar o X com um
secureleve elevado. Para saber exatamente os motivos
dessa inviabilidade, por gentileza, de uma olhada na
p&aacute;gina de manual do &man.init.8;.</para>
<para>Ent&atilde;o, a pergunta pode ser sobre o que
voc&ecirc; deve fazer nesse caso; basicamente, existem
duas escolhas: diminua seu <literal>securelevel</literal>
(n&iacute;vel de seguran&ccedil;a do sistema), colocando-o
de volta para zero (normalente via
<filename>/etc/rc.conf</filename>), ou ent&atilde;o inicie
o &man.xdm.1; durante o processo de
inicializa&ccedil;&atilde;o do sistema (antes que o
<literal>securelevel</literal> (n&iacute;vel de
seguran&ccedil;a do sistema) seja elevado).</para>
<para>Veja a pergunta <xref linkend="xdm-boot">, para obter
mais informa&ccedil;&otilde;es sobre como iniciar o
&man.xdm.1; durante o boot.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="x-and-moused">
<para>Por que meu mouse n&atilde;o funciona com o X?</para>
</question>
<answer>
<para>Caso esteja usando o syscons (o driver padr&atilde;o
do console), o FreeBSD pode ser configurado para suportar
um cursor de mouse em cada tela virtual. Com o
int&uacute;ito de evitar conflitos com o X, o syscons
suporta um dispositivo virtual, chamado
<devicename>/dev/sysmouse</devicename>. Todos os eventos
relacionados ao mouse, que o sistema recebe, s&atilde;o
antes enviados para o device sysmouse, por meio do moused.
Se a inten&ccedil;&atilde;o &eacute; usar o mouse em um ou
mais consoles virtuais, e tamb&eacute;m usar o X, leia
<xref linkend="moused" remap="another section"> e
configure o moused.</para>
<para>Depois, edite o <filename>/etc/XF86Config</filename> e
garanta que existam as seguintes linhas no arquivo:</para>
<programlisting>Section Pointer
Protocol "SysMouse"
Device "/dev/sysmouse"
.....</programlisting>
<para>O exemplo acima refere-se ao XFree86 3.3.2 e
posteriores. Para vers&otilde;es anteriores, a
cl&aacute;usula <emphasis>Protocol</emphasis> deve ser
substitu&iacute;da por
<emphasis>MouseSystems</emphasis>.</para>
<para>Alguns preferem usar a device
<devicename>/dev/mouse</devicename> sob o X. Para que
isso funcione, fa&ccedil;a um link de
<devicename>/dev/mouse</devicename> para
<devicename>/dev/sysmouse</devicename> (veja a
p&aacute;gina de manual do &man.sysmouse.4;).</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>rm -f mouse</userinput>
&prompt.root; <userinput>ln -s sysmouse mouse</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="x-and-wheel">
<para>Meu mouse possui aquela bolinha (esfera)
simp&aacute;tica de scroll. Posso usa-lo no X?</para>
</question>
<answer>
<para>Pode, mas &eacute; necess&aacute;rio customizar os
programas do X. Veja a p&aacute;gina do Colas Nahaboo
sobre o assunto (<ulink
URL="http://www.inria.fr/koala/colas/mouse-wheel-scroll/">
http://www.inria.fr/koala/colas/mouse-wheel-scroll/</ulink>.</para>
<para>Caso queira usar o programa
<application>imwheel</application>, simplesmente siga os
seguintes passos:</para>
<orderedlist>
<listitem>
<para>Traduza os eventos da esfera de scroll:</para>
<para>O programa <application>imwheel</application>
funciona assim: ele traduz os bot&otilde;es 4 e 5 do
mouse em eventos do teclado do computador. Dessa
forma &eacute; necess&aacute;rio assegurar que o
driver do mouse esteja traduzindo os eventos da esfera
de scroll para os eventos dos bot&otilde;es 4 e 5, ou
seja assimilar suas fun&ccedil;&otilde;es. Existem
duas formas de fazer isso, a primeira &eacute; usando
o &man.moused.8; para fazer essas
assimila&ccedil;&otilde;es, e a segunda, &eacute; usar
o pr&oacute;prio X para traduzir os eventos.</para>
<orderedlist>
<listitem>
<para>Usando o &man.moused.8; para traduzir os
eventos da bolinha de scroll.</para>
<para>Para que o &man.moused.8; fa&ccedil;a as
assimila&ccedil;&otilde;es de eventos, basta
adicionar as op&ccedil;&otilde;es <option>-z
4</option> nas op&ccedil;&otilde;es de linhas de
comando, usadas para iniciar o &man.moused.8;.
Por exemplo, se normalmente voc&ecirc; inicia o
&man.moused.8; via <command>moused -p
/dev/psm0</command> basta substituir o comando
por <command>moused -p /dev/psm0 -z 4</command>.
Se o &man.moused.8; &eacute; executado
automaticamente durante o processo de
inicializa&ccedil;&atilde;o do FreeBSD, por meio
das entradas definidas no
<filename>/etc/rc.conf</filename>, basta adicionar
<option>-z 4</option> na vari&aacute;vel
<varname>moused_flags</varname> do
<filename>/etc/rc.conf</filename>.</para>
<para>Voc&ecirc; precisa agora dizer para o X que
voc&ecirc; tem o bot&atilde;o 5 no mouse. Para
fazer isto, simplesmente adicione a linha
<literal>Buttons 5</literal> para a
se&ccedil;&atilde;o <quote>Pointer</quote> do
<filename>/etc/XF86Config</filename>. Por
exemplo, voc&ecirc; pode seguir a
se&ccedil;&atilde;o <quote>Pointer</quote> em
<filename>/etc/XF86Config</filename>.</para>
<example>
<title>Se&ccedil;&atilde;o <quote>Pointer</quote>
no XF86Config para o mouse com bolinha de
scroll, da s&eacute;rie 3.3.x do XFree86, usando
a tradu&ccedil;&atilde;o se;rie 3.3.x do
XFree86, usando a tradu&ccedil;&atilde;o por
meio do moused</title>
<programlisting>Section "Pointer"
Protocol "SysMouse"
Device "/dev/sysmouse"
Buttons 5
EndSection</programlisting>
</example>
<example>
<title>Se&ccedil;&atilde;o
<quote>InputDevice</quote> do XF86Config para
usar a tradu&ccedil;&atilde;o do X Server na
s&eacute;rie 4.X do XFree86.</title>
<programlisting>Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
Option "Buttons" "5"
EndSection</programlisting>
</example>
<example>
<title>Exemplo de <quote>.emacs</quote> para usar
paginamento em mouse com bolinha de
scroll.</title>
<programlisting>;; wheel mouse
(global-set-key [mouse-4] 'scroll-down)
(global-set-key [mouse-5] 'scroll-up)</programlisting>
</example>
</listitem>
<listitem>
<para>Usando o X Server para traduzir os eventos da
esfera de scroll.</para>
<para>Se voc&ecirc; n&atilde;o usa o &man.moused.8;
ou simplesmente n&atilde;o quer que ele
fa&ccedil;a a tradu&ccedil;&atilde;o de eventos,
&eacute; poss&iacute;vel que o servidor X
fa&ccedil;a o trabalho, no lugar do
&man.moused.8;. Essa a&ccedil;&atilde;o requer
algumas altera&ccedil;&otilde;es no seu arquivo
<filename>/etc/XF86Config</filename>. Primeiro,
&eacute; necess&aacute;rio definir o protocolo
apropriado para o mouse. A maioria dos mouses com
esferas de scroll usam o protocolo
<quote>IntelliMouse</quote>. De qualquer forma, o
XFree86 n&atilde;o suporta outros protocolos como
o <quote>MouseManPlusPS/2</quote> dos MouseMan+
Logitechfor. Uma vez definido o protocolo,
&eacute; necess&aacute;rio criar uma entrada
apropriada na se&ccedil;&atilde;o
<quote>Pointer</quote>.</para>
<para>Depois, &eacute; preciso definir que o
servidor X deve remapear os eventos 4 e 5 do
mouse. A op&ccedil;&atilde;o
<varname>ZAxisMapping</varname> &eacute; usada
para essa finalidade.</para>
<para>Por exemplo, caso n&atilde;o estejas usando o
&man.moused.8; e exista um IntelliMouse ligado na
PS/2 do seu computador, use o seguinte, no
<filename>/etc/XF86Config</filename>.</para>
<example>
<title>Se&ccedil;&atilde;o <quote>Pointer</quote>
do <filename>XF86Config</filename> com um mouse
com scroll na s&eacute;rie 3.3.x do
XFree86.</title>
<programlisting>Section "Pointer"
Protocol "IntelliMouse"
Device "/dev/psm0"
ZAxisMapping 4 5
EndSection</programlisting>
</example>
<example>
<title>Se&ccedil;&atilde;o
<quote>InputDevice</quote> do
<filename>XF86Config</filename> com um mouse com
scroll na s&eacute;rie 4.x do XFree86.</title>
<programlisting>Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psm0"
Option "ZAxisMapping" "4 5"
EndSection</programlisting>
</example>
<example>
<title>Arquivo <quote>.emacs</quote> para usar
paginamento em mouse com bolinha de
scroll.</title>
<programlisting>;; wheel mouse
(global-set-key [mouse-4] 'scroll-down)
(global-set-key [mouse-5] 'scroll-up)</programlisting>
</example>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Instale o
<application>imwheel</application></para>
<para>Depois, instale o
<application>imwheel</application> &agrave; partir da
cole&ccedil;&atilde;o de <literal>ports</literal> do
FreeBSD; ele pode ser encontrado sob a categoria
<filename>x11</filename>. A finalidade desse programa
&eacute; assimilar os eventos dos bot&otilde;es 4 e 5
do mouse, com os eventos de alguma tecla do teclado.
Por exemplo, o programa deve enviar o evento da tecla
<keycap>Page Up</keycap> quando a esfera for deslocada
para frente. O <application>imwheel</application> usa
um arquivo de configura&ccedil;&otilde;es para
assimilar esses eventos &agrave; uma tecla, de forma
que possam ser configuradas a&ccedil;&otilde;es
diferentes (teclas diferentes) para
aplica&ccedil;&otilde;es diferentes. O arquivo de
configura&ccedil;&atilde;o padr&atilde;o do
<application>imwheel</application> &eacute; instalado
em <filename>/usr/X11R6/etc/imwheelrc</filename>. Ele
pode ser copiado para
<filename>~/.imwheelrc</filename> e editado, caso se
deseja customizar o arquivo de
configura&ccedil;&atilde;o. O formato esperado para o
arquivo &eacute; documentado na p&aacute;gina de
manual do &man.imwheel.1;.</para>
</listitem>
<listitem>
<para>Configure o <application>Emacs</application> para
trabalhar em conjunto com o
<application>Imwheel</application>
(<emphasis>optional</emphasis>)</para>
<para>Se voc&ecirc; usa o
<application>emacs</application> ou o
<application>Xemacs</application>, ser&aacute;
necess&aacute;rio adicionar uma breve
se&ccedil;&atilde;o ao arquivo
<filename>~/.emacs</filename>. No
<application>emacs</application>, adicione o
seguinte:</para>
<example>
<title>Configura&ccedil;&atilde;o do
<application>Emacs</application> para
<application>Imwheel</application></title>
<programlisting>;;; For imwheel
(setq imwheel-scroll-interval 3)
(defun imwheel-scroll-down-some-lines ()
(interactive)
(scroll-down imwheel-scroll-interval))
(defun imwheel-scroll-up-some-lines ()
(interactive)
(scroll-up imwheel-scroll-interval))
(global-set-key [?\M-\C-\)] 'imwheel-scroll-up-some-lines)
(global-set-key [?\M-\C-\(] 'imwheel-scroll-down-some-lines)
;;; end imwheel section</programlisting>
</example>
<para>Pro <application>Xemacs</application>, adicione o
seguinte, no seu arquivo
<filename>~/.emacs</filename>:</para>
<example>
<title>Configura&ccedil;&atilde;o do
<application>Xemacs</application> para
<application>Imwheel</application></title>
<programlisting>;;; For imwheel
(setq imwheel-scroll-interval 3)
(defun imwheel-scroll-down-some-lines ()
(interactive)
(scroll-down imwheel-scroll-interval))
(defun imwheel-scroll-up-some-lines ()
(interactive)
(scroll-up imwheel-scroll-interval))
(define-key global-map [(control meta \))] 'imwheel-scroll-up-some-lines)
(define-key global-map [(control meta \()] 'imwheel-scroll-down-some-lines)
;;; end imwheel section</programlisting>
</example>
</listitem>
<listitem>
<para>Execute o
<application>Imwheel</application></para>
<para>Basta digitar <command>imwheel</command> 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
<application>imwheel</application>, basta adicionar o
comando no seu arquivo <filename>.xinitrc</filename>
ou no <filename>.xsession</filename>. &Eacute;
poss&iacute;vel que o
<application>imwheel</application> mostre algumas
mensagens de advert&ecirc;ncia sobre arquivos PID;
elas podem ser seguramente ignoradas, visto que
s&atilde;o mensagens que se aplicam &agrave;
vers&atilde;o para Linux.</para>
</listitem>
</orderedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="window-menu-weird">
<para>Por qu&ecirc; os menus e caixas de di&aacute;logo do
X, sistema de interface gr&aacute;fica n&atilde;o
funcionam direito?</para>
</question>
<answer>
<para>Tente desativar a tecla <keycap>Num
Lock</keycap>.</para>
<para>Se por padr&atilde;o seu <keycap>Num Lock</keycap>
&eacute; ativo na hora do processo de
inicializa&ccedil;&atilde;o, adicione a seguinte linha a
se&ccedil;&atilde;o <literal>Keyboard</literal> do seu
arquivo <filename>XF86Config</filename>.</para>
<programlisting># Deixar o servidor fazer o trabalho do NumLock. Deve ser usado apenas em versoes anteriores a R6
ServerNumLock</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="virtual-console">
<para>O que &eacute; um console virtual, e como eu crio mais
consoles?</para>
</question>
<answer>
<para>Consoles virtuais simplesmente permitem que se tenha
v&aacute;rias sess&otilde;es simult&acirc;neas em uma
mesma m&aacute;quina, sem a necessidade de fazer nada
complicado como configurar uma rede ou usar um servidor
X.</para>
<para>Quando o sistema &eacute; iniciado, a primeira
a&ccedil;&atilde;o &eacute; apresentar um prompt de login
na tela do usu&aacute;rio, t&atilde;o logo todas as
mensagens do processo de inicializa&ccedil;&atilde;o sejam
apresentadas. Nesse momento &eacute; poss&iacute;vel
entrar com seu nome de usu&aacute;rio e senha para
come&ccedil;ar trabalhar (ou brincar!) no primeiro console
virtual.</para>
<para>Em algum momento, &eacute; prov&aacute;vel que se
deseje iniciar uma outra sess&atilde;o, talvez para ler a
documenta&ccedil;&atilde;o de alguma
aplica&ccedil;&atilde;o que est&aacute; sendo usada, ou
para ler e-mail enquanto a transfer&ecirc;ncia FTP se
concl&uacute;i, enfim, qualquer a&ccedil;&atilde;o
(a)t&iacute;pica de um sistema multitarefa. Nesse caso,
basta pressionar <keycombo
action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>
(segure a tecla <keycap>Alt</keycap> e depois aperte a
tecla <keycap>F2</keycap>), e outro prompt de login
estar&aacute; esperando voc&ecirc; no segundo
<quote>console virtual</quote>! Quando quizer alternar de
volta &agrave; sess&atilde;o original, digite <keycombo
action="simul"><keycap>Alt</keycap><keycap>F1</keycap></keycombo>.</para>
<para>A instala&ccedil;&atilde;o padr&atilde;o do FreeBSD
oferece tr&ecirc;s consoles virtuais j&aacute; habilitados
(8 a partir do 3.3-RELEASE), e as teclas <keycombo
action="simul"><keycap>Alt</keycap><keycap>F1</keycap></keycombo>,
<keycombo
action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>,
e <keycombo
action="simul"><keycap>Alt</keycap><keycap>F3</keycap></keycombo>
ir&aacute; alternar entre esses consoles.</para>
<para>Para habilitar mais consoles, edite o
<filename>/etc/ttys</filename> (veja a p&aacute;gina de
manual do &man.ttys.5;) e adicione as entradas da
<devicename>ttyv4</devicename> &agrave;
<devicename>ttyvc</devicename> depois do coment&aacute;rio
sobre <quote>Virtual terminals</quote>:</para>
<programlisting># Edite as entradas existentes para ttyv3 e mude de "off" para "on"
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/libexec/getty Pc" cons25 on secure
ttyv9 "/usr/libexec/getty Pc" cons25 on secure
ttyva "/usr/libexec/getty Pc" cons25 on secure
ttyvb "/usr/libexec/getty Pc" cons25 on secure</programlisting>
<para>Use quantos consoles desejar. Quanto mais, maior o
uso de recursos; essa &eacute; uma
considera&ccedil;&atilde;o relevante quando se tem 8MB de
RAM ou menos. Tamb&eacute;m pode ser interessante mudar o
terminal de <literal>secure</literal> para
<literal>insecure</literal>.</para>
<important>
<para>Caso se deseje usar um servidor X, &eacute;
necess&aacute;rio garantir que exista ao menos um
terminal virtual fora de uso (ou desligado). Com isso,
entenda que, se sua inte&ccedil;&atilde;o for usar
consoles virtuais nas suas doze teclas de
fun&ccedil;&otilde;es, nada feito; apenas onze
poder&atilde;o ser usadas caso deseje-se usar o X na
mesma m&aacute;quina.</para>
</important>
<para>A maneira mais simples de desabilitar um console,
&eacute; desligando-o. Por exemplo, caso existam 12
terminais definidos, como mencionado na
situa&ccedil;&atilde;o acima, e se queira usar o servidor
X, o mais interessante &eacute; mudar as
configura&ccedil;&otilde;es do terminal 12 de:</para>
<programlisting>ttyvb "/usr/libexec/getty Pc" cons25 on secure</programlisting>
<para>para:</para>
<programlisting>ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting>
<para>Caso seu teclado tenha apenas dez teclas de
fun&ccedil;&otilde;es, basta encerrar as
defini&ccedil;&otilde;es com:</para>
<programlisting>ttyv9 "/usr/libexec/getty Pc" cons25 off secure
ttyva "/usr/libexec/getty Pc" cons25 off secure
ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting>
<para>(Claro que as linhas poderiam simplesmente ser
apagadas.)</para>
<para>Uma vez editado o <filename>/etc/ttys</filename>, o
passo seguinte &eacute; garantir que existam devices o
bastante pros terminais virtuais. A forma mais
f&aacute;cil de fazer isso &eacute;:</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>sh MAKEDEV vty12</userinput></screen>
<para>Em seguida, a maneira mais f&aacute;cil (e mais limpa)
de ativar cada um dos consoles virtuais &eacute; reiniciar
o sistema. Mas se reiniciar o FreeBSD n&atilde;o &eacute;
a inten&ccedil;&atilde;o, basta desligar o servidor X,
sistema de interface gr&aacute;fica e executar (logado
como <username>root</username>):</para>
<screen>&prompt.root; <userinput>kill -HUP 1</userinput></screen>
<para>&Eacute; obrigat&oacute;rio tirar por completo o X,
sistema de interface gr&aacute;fica do ar antes de dar
esse comando, caso o X esteja sendo usado. Se isso
n&atilde;o for feito, o sistema vai parecer que
travou.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="vty-from-x">
<para>Como posso acessar os consoles virtuais quando eu
estiver no X?</para>
</question>
<answer>
<para>Use <keycombo action="simul">
<keycap>Ctrl</keycap>
<keycap>Alt</keycap>
<keycap>F<replaceable>n</replaceable></keycap>
</keycombo> para alternar de volta para algum console
virtual. Por exemplo,
<keycombo action="simul">
<keycap>Ctrl</keycap>
<keycap>Alt</keycap>
<keycap>F1</keycap>
</keycombo> retornaria ao primeiro console virtual.</para>
<para>Uma vez de volta ao console textual, pode-se usar
<keycombo action="simul">
<keycap>Alt</keycap>
<keycap>F<replaceable>n</replaceable></keycap>
</keycombo> normalmente, para alternar entre os consoles
virtuais.</para>
<para>Pra voltar para sess&atilde;o X basta alternar para o
console virtual onde o X est&aacute; sendo executado.
Caso o X tenha sido iniciado por linha de comando (por
exemplo, com o comando <command>startx</command>) a
sess&atilde;o ter&aacute; sido assimilada ao
pr&oacute;ximo console virtual fora de uso, e n&atilde;o
ao console onde o comando foi digitado. Caso existam oito
terminais virtuais ativos, o X estar&aacute; sendo
executado no nono. Nesse caso as teclas
<keycombo action="simul">
<keycap>Alt</keycap>
<keycap>F9</keycap>
</keycombo> retornar&atilde;o ao sistema
gr&aacute;fico.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="xdm-boot">
<para>Como eu inicio o XDM no processo de
inicializa&ccedil;&atilde;o?</para>
</question><answer>
<para>Existem duas formas cl&aacute;ssicas de iniciar o
<ulink
URL="http://www.FreeBSD.org/cgi/man.cgi?manpath=xfree86&amp;query=xdm">xdm</ulink>.
A primeira consiste em inci&aacute;-lo a partir do
<filename>/etc/ttys</filename> (veja a p&aacute;gina de
manual do &man.ttys.5;) usando o exemplo dispon&iacute;vel
no arquivo; a segunda forma &eacute; simplesmente executar
o xdm a partir do <filename>rc.local</filename> (veja a
p&aacute;gina de manual do &man.rc.8;) ou ent&atilde;o por
um script <filename>X.sh</filename> em
<filename>/usr/local/etc/rc.d</filename>. As duas
maneiras s&atilde;o igualmente v&aacute;lidas, mas algumas
podem ser mais eficientes em algumas
situa&ccedil;&otilde;es, onde a outra forma n&atilde;o
seria ideal. Nos dois casos, o resultado ser&aacute; o
mesmo: o X iniciar&aacute; o mostrando uma tela de login:
gr&aacute;fica.</para>
<para>O m&eacute;todo de inicializa&ccedil;&atilde;o via
ttys oferece a vantagem de definir explicitamente em qual
vtyX o servidor gr&aacute;fico vai ser carregado, passando
a responsabilidade da reinicializa&ccedil;&atilde;o do X
para o init, no momento do logout. O m&eacute;todo via
rc.local oferece facilidades caso seja necess&aacute;rio
encerrar o processo xdm, no caso, por exemplo, de
ocorrerem problemas ao carregar o servidor
gr&aacute;fico.</para>
<para>Ao usar o rc.local para carregar o
<command>xdm</command>, ele n&atilde;o deve ser
acompanhado de nenhum argumento (deve ser iniciado como um
daemon e deve ser iniciado DEPOIS que o getty j&aacute;
estiver em execuss&atilde;o, sen&atilde;o &eacute;
prov&aacute;vel que ocorram conflitos entre ambos, podendo
travar o console. A melhor forma de assegurar o correto
funcionamento desse m&eacute;todo &eacute; fazer com que o
script espere 10 segundos (por exemplo, com um sleep 10;)
antes de iniciar o xdm.</para>
<para>Se a inte&ccedil;&atilde;o &eacute; iniciar o
<command>xdm</command> a partir do
<filename>/etc/ttys</filename>, ainda existe a
probabilidade de conflitos entre o <command>xdm</command>
e o &man.getty.8;. Uma forma interessante de evitar esse
tipo de desconforto, &eacute; definir, no arquivo
<filename>/usr/X11R6/lib/X11/xdm/Xservers</filename>, o
n&uacute;mero do <literal>vt</literal> onde o X deve ser
iniciado, da seguinte forma:</para>
<programlisting>:0 local /usr/X11R6/bin/X vt4</programlisting>
<para>O exemplo acima indica que o servidor X ser&aacute;
ativado no <devicename>/dev/ttyv3</devicename>. Note que
existe um offset de um vt, j&aacute; que o X come&ccedil;a
a contar os terminais (vty) a partir do um, enquando o
<foreignphrase>kernel</foreignphrase> do FreeBSD os conta
a partir do zero.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="xconsole-failure">
<para>Por que eu enfrento um <errorname>Couldn't open
console</errorname> ao executar o xconsole? </para>
</question>
<answer>
<para>Se o <application>X</application> for iniciado com um
<command>startx</command>, as permiss&otilde;es do
<devicename>/dev/console</devicename> n&atilde;o
ser&atilde;o redefinidas, resultando em
situa&ccedil;&otilde;es onde um <command>xterm
-C</command> ou mesmo o <command>xconsole</command>
n&atilde;o funcionar&atilde;o corretamente.</para>
<para>O motivo disso &eacute; a forma como as
permiss&otilde;es s&atilde;o definidas por padr&atilde;o.
Em sistemas multiusu&aacute;rio, normalmente n&atilde;o se
espera que qualquer pessoa possa escrever no console do
sistema. Para os usu&aacute;rios que est&atilde;o se
logando diretamente na m&aacute;quina, em algum VTY,
existe o arquivo &man.fbtab.5; que resolve esse tipo de
problema.</para>
<para>Se for apropriado, garanta que exista uma linha
assim</para>
<programlisting>/dev/ttyv0 0600 /dev/console</programlisting>
<para>No arquivo <filename>/etc/fbtab</filename> (veja a
p&aacute;gina de manual do &man.fbtab.5;). Essa linha
garantir&aacute; que qualquer usu&aacute;rio que se logar
no <devicename>/dev/ttyv0</devicename> ser&aacute;
tamb&eacute;m propriet&aacute;rio do console.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="xfree86-root">
<para>Antes eu conseguia usar o XFree86 com um
usu&aacute;rio sem privil&eacute;gios. Porque agora o
servidor diz que eu tenho que ser
<username>root</username>?</para>
</question>
<answer>
<para>Todo servidor gr&aacute;fico precisa ser executado
como <username>root</username> para que o sistema permita
acesso direto aos equipamentos de v&iacute;deo. Acontece
que nas vers&otilde;es mais antigas, o XFree86
(vers&otilde;es &lt;= 3.3.6) instalava o servidor de forma
que ele era automaticamente executado como
<username>root</username> (setuid de
<username>root</username>). &Oacute;bviamente esse
comportamente implica em riscos de seguran&ccedil;a em
qualquer caso onde o programa em quest&atilde;o seja
complexo e grande; esse &eacute; o caso dos servidores X.
As vers&otilde;es mais atuais do XFree86 n&atilde;o
instalam os servidores gr&aacute;ficos com todo esse
poder, exatamente por esse motivo.</para>
<para>&Eacute; claro que rodar o X como usu&aacute;rio
<username>root</username> n&atilde;o &eacute; uma
id&eacute;ia muito aceit&aacute;vel, especialmente em
rela&ccedil;&atilde;o &agrave; seguran&ccedil;a. Existem
duas formas de usar o X como usu&aacute;rio comum. A
primeira &eacute; usar o <command>xdm</command> ou
qualquer outro gerenciador de display (como o
<command>kdm</command>); a segunda &eacute; usar o
<command>Xwrapper</command>.</para>
<para>O <command>xdm</command> &eacute; um daemon que
controla logins gr&aacute;ficos. Normalmente ele &eacute;
iniciado no processo de inicializa&ccedil;&atilde;o e
&eacute; respons&aacute;vel pela
autentica&ccedil;&atilde;o dos usu&aacute;rios, e por
inciar suas sess&otilde;es; essencialmente &eacute; a
uni&atilde;o gr&aacute;fica do &man.getty.8; como o
&man.login.1;. Para mais informa&ccedil;&otilde;es sobre
o <command>xdm</command>, por gentileza, refira-se
&agrave; <ulink
url="http://www.xfree86.org/support.html">documenta&ccedil;&atilde;o
do XFree86</ulink> e &agrave; quest&atilde;o do <link
linkend="xdm-boot"><literal>FAQ</literal> sobre
xdm</link>.</para>
<para>O <command>Xwrapper</command> &eacute; um
intermediador do servidor gr&aacute;fico; &eacute; um
programa bem pequeno que possibilita a
inicializa&ccedil;&atilde;o manual do servidor
gr&aacute;fico por qualquer usu&aacute;rio, garantindo
razo&aacute;vel seguran&ccedil;a &agrave;
opera&ccedil;&atilde;o. O programa ainda faz algumas
verifica&ccedil;&otilde;es na linha de comando definida
pelo usu&aacute;rio, para garantir a sanidade das
inten&ccedil;&otilde;es do mesmo. Se todas as
inten&ccedil;&otilde;es forem aprovadas, ele executa o X.
Se por qualquer raz&atilde;o, a id&eacute;ia de usar um
gerenciador de displays n&atilde;o te agrada, o
<command>Xwrapper</command> &eacute; feito para
voc&ecirc;. Caso a cole&ccedil;&atilde;o de
<literal>Ports</literal> esteja instalada, o programa pode
ser encontrado em
<filename>/usr/ports/x11/wrapper</filename>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ps2-x">
<para>Por que meu mouse PS/2 n&atilde;o se comporta
corretamente no X?</para>
</question>
<answer>
<para>O seu mouse e a device que o controla devem ter
desincronizado.</para>
<para>Nas vers&otilde;es 2.2.5 e anteriores, a simples
altern&acirc;ncia entre o X e o terminal, e voltar para o
X, for&ccedil;a a resincroniza&ccedil;&atilde;o do mouse.
Se o problema se tornar frequ&ecirc;nte, adicione a
seguinte op&ccedil;&atilde;o ao arquivo de
configura&ccedil;&atilde;o do seu
<foreignphrase>kernel</foreignphrase>, e o
recompile:</para>
<programlisting>options PSM_CHECKSYNC</programlisting>
<para>Veja a se&ccedil;&atilde;o sobre a <link
linkend="make-kernel">compila&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase></link>, caso
voc&ecirc; n&atilde;o tenha experi&ecirc;ncia com
isso.</para>
<para>Com essa op&ccedil;&atilde;o as chances de ter
problemas com a sincronia do mouse s&atilde;o bem
pequenas. Contudo, se ainda assim o problema persistir,
clique em qualquer bot&atilde;o durante o movimento do
mouse. &Eacute; o bastante para resincroniza-lo.</para>
<para>Infelizmente essa op&ccedil;&atilde;o pode n&atilde;o
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.</para>
<para>Na vers&atilde;o 2.2.6 e posteriores, a
verifica&ccedil;&atilde;o de sincronia se tornou
razo&aacute;velmente melhor, e &eacute; padr&atilde;o nos
mouses PS/2. Deve funcionar corretamente com GlidePoint,
inclusive (como o c&oacute;digo de
verifica&ccedil;&atilde;o de sincronia ter se tornado
padr&atilde;o, a op&ccedil;&atilde;o PSM_CHECKSYNC
n&atilde;o existe mais). Contudo, em
situa&ccedil;&otilde;es muito raras, o driver de controle
do mouse pode, err&ocirc;neamente reportar problemas de
sincroniza&ccedil;&atilde;o, mostrando a seguinte mensagem
do <foreignphrase>kernel</foreignphrase>:</para>
<programlisting>psmintr: out of sync (xxxx != yyyy)</programlisting>
<para>Pensando que seu mouse n&atilde;o est&aacute;
funcionando corretamente.</para>
<para>Se for o caso, desligue o c&oacute;digo de
verifica&ccedil;&atilde;o de sincronia do mouse PS/2,
definindo a flag 0x100 na device de controle do mesmo.
Entre no modo <emphasis>UserConfig</emphasis> definindo a
op&ccedil;&atilde;o <option>-c</option> na tela do
processo de inicializa&ccedil;&atilde;o:</para>
<screen>boot: <userinput>-c</userinput></screen>
<para>Depois, na linha de comando do
<emphasis>UserConfig</emphasis>, digite:</para>
<screen>UserConfig&gt; <userinput>flags psm0 0x100</userinput>
UserConfig&gt; <userinput>quit</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="ps2-mousesystems">
<para>Por que meu mouse PS/2 da MouseSystems n&atilde;o
funciona?</para>
</question>
<answer>
<para>Existem not&iacute;cias que alguns modelos de mouse
PS/2 da MouseSystems funcionam corretamente apenas em modo
de alta resolu&ccedil;&atilde;o. Do contr&aacute;rio, o
cursor do mouse costuma pular para diagonal superior
esquerda da tela com certa frequ&ecirc;ncia.</para>
<para>Infelizmente n&atilde;o existe solu&ccedil;&atilde;o
&agrave; esse problema, nas vers&otilde;es 2.0.X e 2.1.X.
Contudo, das vers&otilde;es 2.2 &agrave; 2.2.5, basta
aplicar o seguinte patch, no
<filename>/sys/i386/isa/psm.c</filename> e recompilar o
<foreignphrase>kernel</foreignphrase>. Veja a
se&ccedil;&atilde;o sobre <link linkend="make-kernel">
compila&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase></link> caso
n&atilde;o tenha experi&ecirc;ncia com o assunto.</para>
<programlisting>@@ -766,6 +766,8 @@
if (verbose &gt;= 2)
log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n",
unit, i);
+ set_mouse_resolution(sc-&gt;kbdc, PSMD_RES_HIGH);
+
#if 0
set_mouse_scaling(sc-&gt;kbdc); /* 1:1 scaling */
set_mouse_mode(sc-&gt;kbdc); /* stream mode */</programlisting>
<para>Na vers&atilde;o 2.2.6 e vers&otilde;es posteriores,
basta especificar a flag 0x04 para device de controle do
mouse PS/2, colocando-o em modo de alta
resolu&ccedil;&atilde;o. Entre no modo
<emphasis>UserConfig</emphasis> com a op&ccedil;&atilde;p
<option>-c</option> na tela do processo de
inicializa&ccedil;&atilde;o:</para>
<screen>boot: <userinput>-c</userinput></screen>
<para>Depois, na linha de comando do
<emphasis>UserConfig</emphasis> digite:</para>
<screen>UserConfig&gt; <userinput>flags psm0 0x04</userinput>
UserConfig&gt; <userinput>quit</userinput></screen>
<para>Veja a pergunta anterior, sobre outra causa
poss&iacute;vel de problemas com o mouse.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="imake-tmpl">
<para>Ao compilar uma aplica&ccedil;&atilde;o X, o
<command>imake</command> n&atilde;o consegue encontrar o
<filename>Imake.tmpl</filename>. Onde ele
est&aacute;?</para>
</question>
<answer>
<para>O <filename>Imake.tmpl</filename> &eacute; parte do
pacote Imake, uma aplica&ccedil;&atilde;o padr&atilde;o
para constru&ccedil;&atilde;o de aplica&ccedil;&otilde;es
gr&aacute;ficas. O <filename>Imake.tmpl</filename>, assim
como v&aacute;rios outros arquivos de cabe&ccedil;alhos
necess&aacute;rios para compilar aplica&ccedil;&otilde;es
gr&aacute;ficas, &eacute; parte da
distribui&ccedil;&atilde;o do X. Eles podem ser
instalados pelo sysinstall ou manualmente a partir dos
arquivos da distribui&ccedil;&atilde;o.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="xfree86-version">
<para>Estou construindo uma aplica&ccedil;&atilde;o
gr&aacute;fica que depende do XFree86 3.3.X, mas eu estou
com o XFree86 4.X instalado. O que fazer?</para>
</question>
<answer>
<para>Pra definir que a constru&ccedil;&atilde;o do
<literal>Port</literal> deve ser linkada &agrave;s
bibliotecas do XFree86 4.X, adicione o seguinte, no seu
<filename>/etc/make.conf</filename>, (se o arquivo
n&atilde;o existir, crie-o):</para>
<programlisting>XFREE86_VERSION= 4</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="mouse-button-reverse">
<para>Como posso inverter as fun&ccedil;&otilde;es dos
bot&otilde;es do mouse?</para>
</question>
<answer>
<para>Execute o comando <command>xmodmap -e "pointer = 3 2
1"</command> &agrave; partir do
<filename>.xinitrc</filename> ou do
<filename>.xsession</filename>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="install-splash">
<para>Como instalar uma Splash Screen e onde posso
encontra-las?</para>
</question>
<answer>
<para>A partir da lan&ccedil;amento do FreeBSD 3.1, uma nova
caracter&iacute;stica foi adicionada ao sistema,
permitindo que alguns arquivos de imagens sejam usados
como <quote>Splash Screens</quote> durante as mensagens do
processo de inicializa&ccedil;&atilde;o. Tais imagens
devem ser arquivos do tipo bitmap com 256 cores
(<filename>*.BMP</filename>) ou ent&atilde;o ZSoft PCX
(<filename>*.PCX</filename>). Devem ainda ter
resolu&ccedil;&atilde;o de 320x200 pixels (ou menos), para
funcionarem corretamente em adaptadores de v&iacute;deo
VGA tradicionais. Caso o
<foreignphrase>kernel</foreignphrase> tenha sido compilado
com suporte &agrave; VESA, ent&atilde;o podem ser usados
bitmaps maiores, at&eacute; 1024.768 px. O suporte
&agrave; VESA pode ser diretamente compilado no
<foreignphrase>kernel</foreignphrase>, com a
op&ccedil;&atilde;o VESA no arquivo de
configura&ccedil;&atilde;o, ou carregado como
m&oacute;dulo, com o kld, durante o processo de
inicializa&ccedil;&atilde;o do sistema.</para>
<para>Para definir a <quote>Splash Screens</quote>, basta
modificar alguns arquivos de inicializa&ccedil;&atilde;o
que controlam o processo de inicializa&ccedil;&atilde;o do
FreeBSD. Tais arquivos foram alterados na vers&atilde;o
3.2 do FreeBSD, existindo portanto duas formas de carregar
uma <quote>Splash Screens</quote>:</para>
<itemizedlist>
<listitem>
<para>No FreeBSD 3.1</para>
<para>O primeiro passo &eacute; escolher o seu bitmap, e
sua vers&atilde;o. At&eacute; o FreeBSD 3.1, apenas
os bitmaps do tipo Windows eram suportados. Assim que
escolher (ou criar) sua <quote>Splash Screens</quote>,
copie-a para <filename>/boot/splash.bmp</filename>.
Depois, basta editar (ou criar, caso n&atilde;o
exista) o arquivo <filename>/boot/loader.rc</filename>
e adicionar as seguintes linhas:</para>
<programlisting>load kernel
load -t splash_image_data /boot/splash.bmp
load splash_bmp
autoboot</programlisting>
</listitem>
<listitem>
<para>No FreeBSD 3.2 e posteriores</para>
<para>Al&eacute;m de adicionar suporte a <quote>Splash
Screens</quote> de formato PCX, o FreeBSD 3.2 passou
a oferecer uma maneira mais interessante de configurar
o processo de inicializa&ccedil;&atilde;o. Caso
prefira, o m&eacute;todo descrito acima, para o
FreeBSD 3.1 tamb&eacute;m funciona. Nesse caso, se a
imagem for do tipo PCX basta substituir a entrada
<literal>splash_bmp</literal> por
<literal>splash_pcx</literal>. Caso queira usar a
nova configura&ccedil;&atilde;o do processo de
inicializa&ccedil;&atilde;o, basta criar um arquivo
<filename>/boot/loader.rc</filename> com o seguinte
conte&uacute;do:</para>
<programlisting>include /boot/loader.4th
start</programlisting>
<para>e depois, um
<filename>/boot/loader.conf</filename> com o
seguinte:</para>
<programlisting>splash_bmp_load="YES"
bitmap_load="YES"</programlisting>
<para>Essa configura&ccedil;&atilde;o assume que o
<filename>/boot/splash.bmp</filename> deve ser usado
como sua <quote>Splash Screens</quote>. Caso prefira
usar um arquivo PCX, copie para o
<filename>/boot/splash.pcx</filename>, e crie um
<filename>/boot/loader.rc</filename>, da forma como
foi indicado anteriormente; depois crie um
<filename>/boot/loader.conf</filename> com o
seguinte:</para>
<programlisting>splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.pcx"</programlisting>
</listitem>
</itemizedlist>
<para>Agora voc&ecirc; s&oacute; precisa de uma imagem, para
servir de <quote>Splash Screens</quote>. Pra isso,
d&ecirc; uma navegada na galeria dispon&iacute;vel em
<ulink
URL="http://www.baldwin.cx/splash/">http://www.baldwin.cx/splash/</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="windows-keys">
<para>Posso usar as teclas do Windows&reg; que meu teclado
possui, sob o X?</para>
</question>
<answer>
<para>Pode. Basta usar o &man.xmodmap.1; para redefinir a
fun&ccedil;&atilde;o das teclas.</para>
<para>Assumindo que todos os teclados <quote><trademark
class="registered">Windows</trademark></quote> sejam
padr&atilde;o, os c&oacute;digos de mapeamento pras 3
teclas s&atilde;o:</para>
<itemizedlist>
<listitem>
<para>115 - <trademark
class="registered">Windows</trademark>, entre a
tecla Ctr e a Alt do lado esquerdo.</para>
</listitem>
<listitem>
<para>116 - <trademark
class="registered">Windows</trademark>, &agrave;
direita a tecla AltGr.</para>
</listitem>
<listitem>
<para>117 - <keycap>Menu</keycap>, do lado esquerdo da
tecla Ctrl esquerda</para>
</listitem>
</itemizedlist>
<para>Por exemplo, para fazer com que a tecla Windows&reg;
esquerda imprima uma v&iacute;rgula, fa&ccedil;a o
seguinte:</para>
<screen>&prompt.root; <userinput>xmodmap -e "keycode 115 = comma"</userinput></screen>
<para>&Eacute; prov&aacute;vel que seu gerenciador de
janelas tenha que ser reiniciado, para visualizar o
resultado.</para>
<para>Pra for&ccedil;ar o carregamento autom&aacute;tico do
mapeamento das teclas <trademark
class="registered">Windows</trademark>, coloque os
comandos do <command>xmodmap</command> no arquivo
<filename>~/.xinitrc</filename> ou de prefer&ecirc;ncia,
crie um arquivo <filename>~/.xmodmaprc</filename> e inclua
as op&ccedil;&otilde;es do <command>xmodmap</command> uma
por linha, nesse arquivo. Depois adicione:</para>
<programlisting>xmodmap $HOME/.xmodmaprc</programlisting>
<para>No seu <filename>~/.xinitrc</filename>.</para>
<para>Por exemplo, pode-se mapear as 3 teclas em
quest&atilde;o para fazer o papel das teclas
<keycap>F13</keycap>, <keycap>F14</keycap>, e
<keycap>F15</keycap>, respectivamente. Dessa forma, seria
f&aacute;cil mapear as aplica&ccedil;&otilde;es de forma
que as teclas tivessem a&ccedil;&otilde;es no seu sistema,
como veremos agora.</para>
<para>Adicione o seguinte conte&uacute;do, no arquivo
<filename>~/.xmodmaprc</filename>.</para>
<programlisting>keycode 115 = F13
keycode 116 = F14
keycode 117 = F15</programlisting>
<para>Se o gerenciador de janelas em quest&atilde;o for o
<command>fvwm2</command>, por exemplo, pode-se mapear as
teclas de forma que o <keycap>F13</keycap> minimize (ou
maximize) a janela que o cursor est&aacute; apontando, a
tecla <keycap>F14</keycap> de forma que ela traga a janela
marcada pelo cursor para frente (ou volte para
tr&aacute;s, caso j&aacute; esteja &agrave; frente), e o
<keycap>F15</keycap> pode alternar o menu da &aacute;rea
detrabalho principal, o que &eacute; bem &uacute;til
quando a tela n&atilde;o &eacute; vis&iacute;vel.</para>
<para>As seguintes defini&ccedil;&otilde;es no
<filename>~/.fvwmrc</filename> implementam a
configura&ccedil;&atilde;o acima descrita:</para>
<programlisting>Key F13 FTIWS A Iconify
Key F14 FTIWS A RaiseLower
Key F15 A A Menu Workplace Nop</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="x-3d-acceleration">
<para>Como posso obter a acelera&ccedil;&atilde;o de
equipamentos 3D para o OpenGL?</para>
</question>
<answer>
<para>A disponibilidade da acelera&ccedil;&atilde;o 3D
depende da vers&atilde;o do XFree86 e da placa de
v&iacute;deo. Caso a placa seja NVIDIA, verifique a
p&aacute;gina da <ulink
url="http://nvidia.netexplorer.org/">Iniciativa de
Driver NVIDIA para o FreeBSD</ulink>, que discute a
acelera&ccedil;&atilde;o 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 &agrave; p&aacute;gina sobre
<ulink
url="http://gladstone.uoregon.edu/~eanholt/dri/">Renderiza&ccedil;&atilde;o
Direta do XFree86-4 no FreeBSD</ulink>. Usu&aacute;rios
do XFree86 na vers&atilde;o 3.3 podem usar o
<literal>port</literal> do Utah-GLX que pode ser
encontrado em <filename
role="package">graphics/utah-glx</filename> para
conseguir alguma (limitada) acelera&ccedil;&atilde;o 3D
para o OpenGL em placas Matrox Gx00, ATI Rage Pro, SiS
6326, i810, Savage, e algumas NVIDIA antigas.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="networking">
<title>Redes</title>
<qandaset>
<qandaentry>
<question id="diskless-booting">
<para>Onde obter informa&ccedil;&otilde;es a respeito do
processo de processo de inicializa&ccedil;&atilde;o sem
disco r&iacute;gido (<foreignphrase>diskless
booting</foreignphrase>)?</para>
</question>
<answer>
<para>O processo de processo de inicializa&ccedil;&atilde;o
sem disco implica na possibilidade de uma m&aacute;quina
FreeBSD ser inicializada atrav&eacute;s da rede, lendo os
arquivos necess&aacute;rios &agrave; partir de um
servidor, ao inv&eacute;s de um disco r&iacute;gido. Para
maiores detalhes, por favor, consulte o &iacute;tem <ulink
URL="../handbook/diskless.html"><foreignphrase>diskless
booting</foreignphrase> no
&a.ptbr.p.handbook;</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="router">
<para>Um sistema FreeBSD pode ser utilizado como roteador
dedicado para uma rede?</para>
</question>
<answer>
<para>Pode. Por gentileza, refira-se &agrave; <ulink
url="../handbook/routing.html">documenta&ccedil;&atilde;o
do &a.ptbr.p.handbook; sobre configura&ccedil;&otilde;es
avan&ccedil;adas de rede</ulink>, mais especificamente,
a se&ccedil;&atilde;o sobre <ulink
url="../handbook/routing.html#DEDICATED-ROUTER">roteamento
e gateways</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="win95-connection">
<para>Posso conectar minha m&aacute;quina com Win95 &agrave;
Internet, atrav&eacute;s do meu FreeBSD?</para>
</question>
<answer>
<para>Normalmente, as pessoas que prop&otilde;em esse tipo
de quest&atilde;o possuem dois computadores em casa, um
com FreeBSD e outro com Win95. A id&eacute;ia &eacute;
utilizar a maquina com FreeBSD para se conectar &agrave;
Internet, e ent&atilde;o oferecer acesso Internet a
m&aacute;quina Win95 atrav&eacute;s do FreeBSD. Essa
&eacute; apenas uma extens&atilde;o especial da
quest&atilde;o anterior.</para>
<para>... e a resposta &eacute; sim! No FreeBSD 3.x, o
&man.ppp.8; em modo usu&aacute;rio oferece a
op&ccedil;&atilde;o <option>-nat</option>. Se o
&man.ppp.8; for executado com essa op&ccedil;&atilde;o,
basta definir a vari&aacute;vel
<literal>gateway_enable</literal> para
<emphasis>YES</emphasis> no arquivo
<filename>/etc/rc.conf</filename>, e configurar
corretamente a m&aacute;quina Windows. Isso &eacute; o
bastante.</para>
<para>Para obter mais informa&ccedil;&otilde;es, por
gentileza, refira-se a p&aacute;gina de manual do
&man.ppp.8;</para>
<para>Se o &man.ppp.8; estiver sendo usado em modo
<foreignphrase>kernel</foreignphrase>
(<foreignphrase>kernel-mode</foreignphrase>) ou a
conex&atilde;o com a Internet for via Ethernet, a
op&ccedil;&atilde;o mais vi&aacute;vel ser&aacute;
utilizar o &man.natd.8;. Por favor, consulte a
se&ccedil;&atilde;o <link linkend="natd">natd</link> dessa
documenta&ccedil;&atilde;o.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="slip-ppp-support">
<para>O FreeBSD suporta SLIP e PPP?</para>
</question>
<answer>
<para>Claro. Veja as p&aacute;ginas de manual do
&man.slattach.8;, &man.sliplogin.8;, &man.ppp.8;, e
&man.pppd.8;. O &man.ppp.8; e o &man.pppd.8; oferecem
suporte &agrave; conex&otilde;es entrantes e de
sa&iacute;da (conex&otilde;es incoming/outgoing), enquanto
o &man.slattach.8; &agrave; conex&otilde;es de
sa&iacute;da (outgoing).</para>
<para>Para obter mais informa&ccedil;&otilde;es sobre a
correta utiliza&ccedil;&atilde;o desses recursos, por
gentileza, refira-se ao Cap&iacute;tulo sobre <ulink
url="../handbook/ppp-and-slip.html">PPP e SLIP do
&a.ptbr.p.handbook;</ulink>.</para>
<para>Se o seu acesso &agrave; Internet for apenas por meio
de uma conta Shell, pode ser interessante dar uma olhada
no <literal>port</literal> da aplica&ccedil;&atilde;o
<filename role="package">net/slirp</filename>. Esse
<literal>port</literal> oferece acesso (limitado) &agrave;
servi&ccedil;os como FTP e HTTP direto da m&aacute;quina
local.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="natd">
<para>O FreeBSD suporta NAT ou Masquerading?</para>
</question>
<answer>
<para>Se no seu caso, existe uma subrede (uma ou mais
m&aacute;quinas locais interconectadas em rede), mas o seu
Provedor de Internet disponibiliza apenas um IP (ou se o
endere&ccedil;o IP em quest&atilde;o &eacute;
din&acirc;mico), com certeza &eacute; interessante dar uma
olhada no &man.natd.8;. O &man.natd.8; possibilita que
uma subrede inteira acesse a Internet atrav&eacute;s de um
&uacute;nico endere&ccedil;o IP.</para>
<para>O &man.ppp.8; oferece suporte interno &agrave; essa
mesma funcionalidade, atrav&eacute;s da
op&ccedil;&atilde;o <option>-nat</option> do programa. A
biblioteca &man.libalias.3; &eacute; usada tanto pelo
&man.ppp.8; quanto pelo &man.natd.8;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="parallel-connect">
<para>Como posso conectar duas esta&ccedil;&otilde;es
FreeBSD por linha paralela, usando o PLIP?</para>
</question>
<answer>
<para>Por gentileza, refira-se &agrave; se&ccedil;&atilde;o
sobre <ulink url="../handbook/plip.html">PLIP do
&a.ptbr.p.handbook;</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="create-dev-net">
<para>Por que eu n&atilde;o posso criar um dispositivo
/dev/ed0?</para>
</question>
<answer>
<para>Porque n&atilde;o &eacute; preciso! Na estrutura de
redes de Berkeley, as interfaces de rede s&atilde;o
acessadas somente (e diretamente) pelo c&oacute;digo do
<foreignphrase>kernel</foreignphrase>. Por favor
verifique o arquivo <filename>/etc/rc.network</filename> e
as p&aacute;ginas do manual para os diversos programas de
rede ali mencionados, para maiores
informa&ccedil;&otilde;es. Se isto deix&aacute;-lo
completamente confuso, consulte um livro que descreva a
administra&ccedil;&atilde;o de rede em um outro sistema
operacional baseado no modelo BSD. Com poucas
exce&ccedil;&otilde;es significativas, a
administra&ccedil;&atilde;o de rede em sistemas FreeBSD
&eacute; basicamente a mesma da utilizada em sistemas como
o SunOS 4.0 ou o Ultrix.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ethernet-aliases">
<para>Como eu configuro aliases (apelidos) de
Ethernet?</para>
</question>
<answer>
<para>Se a inten&ccedil;&atilde;o &eacute; definir um
apelido IP para uma subrede previamente configurada, basta
adicionar a m&aacute;scara <literal>0xffffffff</literal>
junto &agrave; sintaxe usual para defini&ccedil;&atilde;o
de alias no &man.ifconfig.8;:</para>
<screen>&prompt.root; <userinput>ifconfig ed0 alias 192.0.2.2 netmask 0xffffffff</userinput></screen>
<para>Do contr&aacute;rio, basta definir o endere&ccedil;o
de rede e a netmask em quest&atilde;o, da forma
tradicional:</para>
<screen>&prompt.root; <userinput>ifconfig ed0 alias 172.16.141.5 netmask 0xffffff00</userinput</screen>
</answer>
</qandaentry>
<qandaentry>
<question id="port-3c503">
<para>Como eu configuro minha placa 3Com 3C503 para utilizar
outra interface de conex&atilde;o ?</para>
</question>
<answer>
<para>Se voc&ecirc; deseja utilizar uma outra interface de
conex&atilde;o, dever&aacute; especificar alguns
par&acirc;metros adicionais na linha de comando do
&man.ifconfig.8;. A porta padr&atilde;o &eacute; a
<literal>link0</literal>. Para usar a porta AUI ao
inv&eacute;s da porta BNC utilize a flag
<literal>link2</literal>. Tais flags devem ser definidas
atrav&eacute;s das vari&aacute;veis ifconfig_* no arquivo
<filename>/etc/rc.conf</filename>. (consulte o
&man.rc.conf.5;).</para>
</answer>
</qandaentry>
<qandaentry>
<question id="nfs">
<para>Por que eu tenho problemas com NFS no FreeBSD?</para>
</question>
<answer>
<para>Certas interfaces de rede para PC s&atilde;o melhores
do que outras (para adotarmos um eufemismo) e as vezes
podem causar problemas em aplica&ccedil;&otilde;es que
utilizam a rede de modo intensivo, como o NFS.</para>
<para>Consulte o item <ulink
URL="../handbook/nfs.html">NFS</ulink> do
&a.ptbr.p.handbook; para obter mais
informa&ccedil;&otilde;es sobre o assunto.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="nfs-linux">
<para>Por que n&atilde;o &eacute; poss&iacute;vel montar
sistemas de arquivos NFS de m&aacute;quinas Linux?</para>
</question>
<answer>
<para>Algumas vers&otilde;es do c&oacute;digo NFS do Linux
aceitam requisi&ccedil;&otilde;es de montagem provenientes
apenas de portas privilegiadas, experimente o
comando:</para>
<screen>&prompt.root; <userinput>mount -o -P linuxbox:/blah /mnt</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="nfs-sun">
<para>Por que n&atilde;o &eacute; poss&iacute;vel montar
sistemas de arquivos NFS de m&aacute;quinas Sun?</para>
</question>
<answer>
<para>Esta&ccedil;&otilde;es de trabalho Sun rodando SunOS
4.X aceitam requisi&ccedil;&otilde;es de montagem
provenientes apenas de portas privilegiadas, experimente o
comando:</para>
<screen>&prompt.root; <userinput>mount -o -P sunbox:/blah /mnt</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="exports-errors">
<para>Por que o <command>mountd</command> informa
repetidamente que <errorname>can't change
attributes</errorname> e <errorname>bad exports
list</errorname> utilizando o servidor de NFS do
FreeBSD?</para>
</question>
<answer>
<para>O problema mais freq&uuml;ente &eacute; o n&atilde;o
entendimento correto do formato do arquivo
<filename>/etc/exports</filename>. Por gentileza, leia
com aten&ccedil;&atilde;o a p&aacute;gina de manual do
&man.exports.5; e a documenta&ccedil;&atilde;o sobre
<ulink url="../handbook/nfs.html">NFS</ulink> no
&a.ptbr.p.handbook;, especialmente a se&ccedil;&atilde;o
sobre a <ulink
url="../handbook/nfs.html#CONFIGURING-NFS">configura&ccedil;&atilde;o
do NFS</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-nextstep">
<para>Por que existem problemas na comunica&ccedil;&atilde;o
(via protocolo PPP) com m&aacute;quinas NeXTStep?</para>
</question>
<answer>
<para>Experimente desabilitar a vari&aacute;vel TCP
extensions no arquivo <filename>/etc/rc.conf</filename>
(consulte &man.rc.conf.5;) alterando a vari&aacute;vel
abaixo para NO:</para>
<programlisting>tcp_extensions=NO</programlisting>
<para>M&aacute;quinas Annex da Xylogic tamb&eacute;m
apresentam um problema similar neste aspecto, e voc&ecirc;
deve adotar a mesma solu&ccedil;&atilde;o para conectar-se
a estes sistemas.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ip-multicast">
<para>Como habilitar o suporte a IP multicast?</para>
</question>
<answer>
<para>Desde o FreeBSD 2.0 que opera&ccedil;&otilde;es
Multicast s&atilde;o completamente suportadas por
padr&atilde;o. Se a iten&ccedil;&atilde;o &eacute; fazer
o sistema FreeBSD atuar como um roteador multicast,
ser&aacute; necess&aacute;rio que o
<foreignphrase>kernel</foreignphrase> do sistema seja
recompilado com a op&ccedil;&atilde;o
<literal>MROUTING</literal> e que o &man.mrouted.8; seja
executado. O FreeBSD, &agrave; partir da vers&atilde;o
2.2, pode iniciar o &man.mrouted.8; durante o processo de
inicializa&ccedil;&atilde;o se a vari&aacute;vel
<literal>mrouted_enable</literal> estiver configurada com
o par&acirc;metro <literal>"YES"</literal> no arquivo
<filename>/etc/rc.conf</filename>.</para>
<para>As ferramentas MBONE est&atilde;o dispon&iacute;veis
em sua pr&oacute;pria categoria na cole&ccedil;&atilde;o
de <literal>ports</literal>, <ulink
url="http://www.FreeBSD.org/ports/mbone.html">mbone</ulink>.
Se voc&ecirc; est&aacute; procurando as ferramentas de
confer&ecirc;ncia <command>vic</command> e
<command>vat</command>, procure neste
diret&oacute;rio!</para>
</answer>
</qandaentry>
<qandaentry>
<question id="dec-pci-chipset">
<para>Quais interfaces de rede s&atilde;o baseadas no
chipset DEC PCI?</para>
</question>
<answer>
<para>Esta &eacute; uma lista compilada por Glen Foster
<email>gfoster@driver.nsta.org</email>, com algumas
adi&ccedil;&otilde;es recentes:</para>
<table>
<title>Interfaces de rede baseadas no chipset DEC
PCI</title>
<tgroup cols=2>
<thead>
<row>
<entry>Vendedor</entry>
<entry>Modelo</entry>
</row>
</thead>
<tbody>
<row>
<entry>ASUS</entry>
<entry>PCI-L101-TB</entry>
</row>
<row>
<entry>Accton</entry>
<entry>ENI1203</entry>
</row>
<row>
<entry>Cogent</entry>
<entry>EM960PCI</entry>
</row>
<row>
<entry>Compex</entry>
<entry>ENET32-PCI</entry>
</row>
<row>
<entry>D-Link</entry>
<entry>DE-530</entry>
</row>
<row>
<entry>Dayna</entry>
<entry>DP1203, DP2100</entry>
</row>
<row>
<entry>DEC</entry>
<entry>DE435, DE450</entry>
</row>
<row>
<entry>Danpex</entry>
<entry>EN-9400P3</entry>
</row>
<row>
<entry>JCIS</entry>
<entry>Condor JC1260</entry>
</row>
<row>
<entry>Linksys</entry>
<entry>EtherPCI</entry>
</row>
<row>
<entry>Mylex</entry>
<entry>LNP101</entry>
</row>
<row>
<entry>SMC</entry>
<entry>EtherPower 10/100 (Model 9332)</entry>
</row>
<row>
<entry>SMC</entry>
<entry>EtherPower (Model 8432)</entry>
</row>
<row>
<entry>TopWare</entry>
<entry>TE-3500P</entry>
</row>
<row>
<entry>Znyx (2.2.x)</entry>
<entry>ZX312, ZX314, ZX342, ZX345, ZX346,
ZX348</entry>
</row>
<row>
<entry>Znyx (3.x)</entry>
<entry>ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442,
ZX444, ZX474, ZX478, ZX212, ZX214
(10mbps/hd)</entry>
</row>
</tbody>
</tgroup>
</table>
</answer>
</qandaentry>
<qandaentry>
<question id="fqdn-hosts">
<para>Por que preciso utilizar um FQDN (Nomes de
dom&iacute;nio completamente qualificados) pras
esta&ccedil;&otilde;es da minha rede?</para>
</question>
<answer>
<para>Provavelmente voc&ecirc; vai estar trabalhando com
esta&ccedil;&otilde;es em dom&iacute;nios diferentes. Por
exemplo, se voc&ecirc; esta em foo.bar.edu e deseja
alcan&ccedil;ar uma esta&ccedil;&atilde;o chamada
<hostid>mumble</hostid> no dom&iacute;nio <hostid
role="domainname">foo.bar.edu</hostid>, dever&aacute;
referir-se &agrave; essa esse host atrav&eacute;s do seu
nome de dom&iacute;nio qualificado, <hostid
role="fqdn">mumble.foo.bar.edu</hostid>, ao inv&eacute;s
de apenas <hostid>mumble</hostid>.</para>
<para>Normalmente era poss&iacute;vel alcan&ccedil;ar a
esta&ccedil;&atilde;o apenas por seu nome. Essa
fun&ccedil;&atilde;o era realizada pelos resolvedores BIND
do ISC. Contudo, as vers&otilde;es atuais do
<application>BIND</application> (veja o &man.named.8;) que
acompanham o FreeBSD n&atilde;o oferecem mais
abrevia&ccedil;&otilde;es padr&atilde;o para
dom&iacute;nios que n&atilde;o sejam FQDN, com a
&uacute;nica exce&ccedil;&atilde;o do dom&iacute;nio que
sua pr&oacute;pria esta&ccedil;&atilde;o faz parte. Dessa
forma, o host <hostid>mumble</hostid>, se n&atilde;o for
localizado como <hostid
role="fqdn">mumble.foo.bar.edu</hostid>, ser&aacute;
localizado atrav&eacute;s de uma busca direta &agrave;
partir da raiz dos servidores de
resolu&ccedil;&atilde;o.</para>
<para>Este comportamento &eacute; diferente do verificado
anteriormente onde a pesquisa continuaria atrav&eacute;s
de <hostid role="domainname">mumble.bar.edu</hostid> e
<hostid role="domainname">mumble.edu</hostid>. Consulte a
RFC 1535 para descobrir porque isso &eacute; considerado
uma pr&aacute;tica ru&iacute;m, e at&eacute; mesmo uma
brecha de seguran&ccedil;a.</para>
<para>Uma alternativa &eacute; adicionar a linha
abaixo:</para>
<programlisting>search foo.bar.edu bar.edu</programlisting>
<para>ao inv&eacute;s da linha previamente existente</para>
<programlisting>domain foo.bar.edu</programlisting>
<para>em seu arquivo <filename>/etc/resolv.conf</filename>
(consulte &man.resolv.conf.5;). Contudo verifique se a
ordem de pesquisa n&atilde;o vai al&eacute;m da fronteira
entre a administra&ccedil;&atilde;o p&uacute;blica e a
local, conforme definido na RFC 1535.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="network-permission-denied">
<para>Por que obtenho o erro, <errorname>Permission
denied</errorname>, para todas as
opera&ccedil;&otilde;es de rede?</para>
</question>
<answer>
<para>Se o <foreignphrase>kernel</foreignphrase> do seu
FreeBSD foi compilado com a op&ccedil;&atilde;o
<literal>IPFIREWALL</literal>, voc&ecirc; deve compreender
que a pol&iacute;tica padr&atilde;o, &agrave; partir da
vers&atilde;o 2.1.7 (atualmente alterada durante o
desenvolvimento da vers&atilde;o 2.1-STABLE) &eacute;
negar todos os pacotes que n&atilde;o forem explicitamente
permitidos.</para>
<para>A seu firewall foi erroneamente configurado, de forma
n&atilde;o intencional, a operacionalidade do sistema pode
ser restaurada, simplesmente digitando o seguinte
(conectado como <username>root</username>):</para>
<screen>&prompt.root; <userinput>ipfw add 65534 allow all from any to any</userinput></screen>
<para>A vari&aacute;vel
<literal>firewall_type="open"</literal> tamb&eacute;m pode
ser definida, no arquivo
<filename>/etc/rc.conf</filename>.</para>
<para>Para maiores informa&ccedil;&otilde;es sobre a
configura&ccedil;&atilde;o de firewall, por gentileza,
consulte a se&ccedil;&atilde;o correspondente no <ulink
URL="../handbook/firewalls.html">&a.ptbr.p.handbook;</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ipfw-overhead">
<para>Qual o acr&eacute;scimo de sobrecarga ocasionado pelo
IPFW?</para>
</question>
<answer>
<para>Por gentileza, refira-se ao cap&iacute;tulo sobre
<ulink url="../handbook/firewalls.html">Firewalls</ulink>
do &a.ptbr.p.handbook; mais espec&iacute;ficamente, a
se&ccedil;&atilde;o sobre <ulink
url="../handbook/firewalls.html#IPFW-OVERHEAD">Overhead
&amp; Otimiza&ccedil;&atilde;o do IPFW</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ipfw-fwd">
<para>Minha regra de fwd do IPFW, que deveria redirecionar
um servi&ccedil;o para outra esta&ccedil;&atilde;o,
n&atilde;o est&aacute; funcionando. Por que?</para>
</question>
<answer>
<para>Provavelmente porque a verdadeira
inten&ccedil;&atilde;o &eacute; traduzir os pacotes que
chegam na sua esta&ccedil;&atilde;o, e rescrev&ecirc;-los
para renviar para a outra m&aacute;quina, e n&atilde;o
simplesmente redirecionar o pacote. Normalmente o ideal
&eacute; fazer NAT (tradu&ccedil;&atilde;o de
endere&ccedil;os de rede). Uma regra de reenvio de
pacotes, faz exatamente o que ela deve fazer: reenviar
pacotes. As regras n&atilde;o alteram (rescrevem) o
conte&uacute;do ou cabe&ccedil;alhos dos dados presentes
no pacote. Por exemplo, digamos que a quest&atilde;o seja
a seguinte regra:</para>
<screen>01000 fwd <replaceable>10.0.0.1</replaceable> from any to <replaceable>foo 21</replaceable></screen>
<para>Quando um pacote destinado &agrave;
esta&ccedil;&atilde;o <replaceable>foo</replaceable>
chegar no FreeBSD que filtra essa regra, ele ser&aacute;
encaminhado para a m&aacute;quina cujo endere&ccedil;o IP
&eacute; <replaceable>10.0.0.1</replaceable>, mas o
endere&ccedil;o de destino original do pacote ser&aacute;
mantido, ou seja, os pacotes chegando em
<replaceable>10.0.0.1</replaceable> ainda ter&atilde;o a
esta&ccedil;&atilde;o <replaceable>foo</replaceable> como
destino final, marcado em seu cabe&ccedil;alho TCP. O
endere&ccedil;o de destino n&atilde;o &eacute; alterado
(reescrito) para a m&aacute;quina
<replaceable>10.0.0.1</replaceable>, o que propicia um
comportamento de verifica&ccedil;&atilde;o de checksum do
cabe&ccedil;alho IP. O comportamento normal &eacute; que
a m&aacute;quina <replaceable>10.0.0.1</replaceable>
descarte o pacote, j&aacute; que o endere&ccedil;o de
destino do mesmo n&atilde;o &eacute; o endere&ccedil;o da
esta&ccedil;&atilde;o em quest&atilde;o. Esse
comportamento costuma confundir alguns usu&aacute;rios
menos experientes, n&atilde;o correspondendo a
a&ccedil;&atilde;o com suas expectativas. Essa &eacute;
uma caracter&iacute;stica do IPFW, e n&atilde;o um
problema.</para>
<para>Consulte o <literal>FAQ</literal> sobre <link
linkend="service-redirect">Redirecionamento de
Servi&ccedil;os</link>, a p&aacute;gina de manual do
&man.natd.8;, ou uma das diversas ferramentas de
redirecionamento dispon&iacute;veis na
Cole&ccedil;&atilde;o de <literal>Ports</literal>, para
verificar a forma correta de obter o comportamento
desejado.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="service-redirect">
<para>Como redirecionar requisi&ccedil;&otilde;es de
servi&ccedil;o de uma m&aacute;quina para outra?</para>
</question>
<answer>
<para>Servi&ccedil;os como FTP (e outros) podem ser
redirecionados com o pacote <literal>socket</literal>,
dispon&iacute;vel na &aacute;rvore de
Cole&ccedil;&atilde;o do <literal>Ports</literal>, sob a
categoria <quote>sysutils</quote>. Simplesmente substitua
a linha de comando do servi&ccedil;o a ser redirecionado
para executar a ferramenta <literal>socket</literal>, como
no exemplo abaixo:</para>
<programlisting>ftp stream tcp nowait nobody /usr/local/bin/socket socket <replaceable>ftp.example.com</replaceable> <replaceable>ftp</replaceable></programlisting>
<para>Onde ftp.foo.com e ftp s&atilde;o a m&aacute;quina
(host) e a porta de conex&atilde;o que ser&aacute;
utilizada para o redirecionamento, respectivamente.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="bandwidth-mgr-tool">
<para>Onde obtenho uma ferramenta de gerenciamento de
banda?</para>
</question>
<answer>
<para>Existem tr&ecirc;s ferramentas de gerenciamento de
banda dispon&iacute;veis para o FreeBSD. O
&man.dummynet.4;, integrada ao FreeBSD (ou mais
especificamente ao &man.ipfw.4;);, o <ulink
URL="http://www.csl.sony.co.jp/person/kjc/programs.html">ALTQ</ulink>,
dispon&iacute;vel gratuitamente, e o <ulink
URL="http://www.etinc.com/">Bandwidth Manager da
Emerging Technologies</ulink>, um produto
comercial.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="bpf-not-configured">
<para>O que causa o erro <errorname>/dev/bpf0: device not
configured</errorname>?</para>
</question>
<answer>
<para>Voc&ecirc; est&aacute; tentando usar um programa que
precisa do Berkeley Packet Filter (veja a p&aacute;gina de
manual do &man.bpf.4; para obter maiores
informa&ccedil;&otilde;es), mas ele n&atilde;o est&aacute;
compilado no <foreignphrase>kernel</foreignphrase>.
Adicione a seguinte linha no arquivo de
configura&ccedil;&atilde;o do seu
<foreignphrase>kernel</foreignphrase> e
recompile-o:</para>
<programlisting>pseudo-device bpf # Berkeley Packet Filter</programlisting>
<para>Depois que reiniciar o sistema com o novo
<foreignphrase>kernel</foreignphrase>, basta criar a
interface do dispositivo, o que pode ser feito ao executar
o seguinte comando, no diret&oacute;rio
<filename>/dev</filename>:</para>
<screen>&prompt.root; <userinput>sh MAKEDEV bpf0</userinput></screen>
<para>Por gentileza, refira-se &agrave; se&ccedil;&atilde;o
sobre <ulink
URL="../handbook/kernelconfig-nodes.html">Cria&ccedil;&atilde;o
de interface de Dispositivos</ulink> do
&a.ptbr.p.handbook;, para obter mais
informa&ccedil;&otilde;es sobre o assunto.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="mount-smb-share">
<para>Como montar o disco de uma esta&ccedil;&atilde;o
Windows na minha rede, de forma semelhante ao smbmount em
sistemas Linux?</para>
</question>
<answer>
<para>Use o conjunto de ferramentas
<application>SMBFS</application>. Se trata de um conjunto
de modifica&ccedil;&otilde;es no
<foreignphrase>kernel</foreignphrase>, e uma s&eacute;rie
de aplica&ccedil;&otilde;es espec&iacute;ficas. O
programa e outras informa&ccedil;&otilde;es podem ser
obtidos na Cole&ccedil;&atilde;o de
<literal>Ports</literal> do FreeBSD, em <filename
role="package">net/smbfs</filename>, ou no sistema base
do FreeBSD a partir da vers&atilde;o 4.5-RELEASE.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="icmp-response-bw-limit">
<para>O que s&atilde;o as mensagens sobre
<quote>icmp-response bandwidth limit 300/200 pps</quote>
em meus registros de logs?</para>
</question>
<answer>
<para>&Eacute; o resultado de seu
<foreignphrase>kernel</foreignphrase> informando-o que
alguma atividade esta provocando o envio de um
n&uacute;mero de respostas ICMP ou TCP reset (RST)
superior ao n&uacute;mero que o
<foreignphrase>kernel</foreignphrase> julga adequado.
Respostas ICMP s&atilde;o, geralmente, comportamento
ocasionado pela tentativa de conex&atilde;o em portas UDP
n&atilde;o utilizadas. As respostas TCP reset s&atilde;o
o resultado gerado pelas tentativas de conex&atilde;o em
portas TCP n&atilde;o pon&iacute;veis. Entre outras
causas, algumas das atividades que podem ocasionar esse
tipo de mensage, s&atilde;o:</para>
<itemizedlist>
<listitem>
<para>Ataques de nega&ccedil;&atilde;o de servi&ccedil;o
(DoS) por for&ccedil;a bruta (em
oposi&ccedil;&atilde;o a ataques baseados em um
&uacute;nico pacote que visa explorar uma
vulnerabilidade espec&iacute;fica).</para>
</listitem>
<listitem>
<para>Varreduras de porta (<foreignphrase>port
scans</foreignphrase>) que visam rastrear um elevado
n&uacute;mero de portas (em oposi&ccedil;&atilde;o a
ataques que tentam varrer apenas um pequeno
n&uacute;mero de portas conhecidas).</para>
</listitem>
</itemizedlist>
<para>O primeiro n&uacute;mero (valor) na mensagem indica
quantos pacotes foram enviados pelo
<foreignphrase>kernel</foreignphrase> antes do limite
passar a vigorar e o segundo valor indica o limite
estabelecido no <foreignphrase>kernel</foreignphrase>.
Voc&ecirc; pode controlar este limite atrav&eacute;s da
vari&aacute;vel <varname>net.inet.icmp.icmplim</varname>
do sysctl com instru&ccedil;&otilde;es como esta abaixo,
onde estabelecemos um limite de 300 pacotes por
segundo:</para>
<screen>&prompt.root; <userinput>sysctl -w net.inet.icmp.icmplim=300</userinput></screen>
<para>Se a inten&ccedil;&atilde;o &eacute; n&atilde;o
registrar essas mensagens nos arquivos de registros, mas
ainda assim manter a capacidade do
<foreignphrase>kernel</foreignphrase> limitar as
respostas, a vari&aacute;vel
<varname>net.inet.icmp.icmplim_output</varname> do sysctl
pode ser usada para desabilitar o registro:</para>
<screen>&prompt.root; <userinput>sysctl -w net.inet.icmp.icmplim_output=0</userinput></screen>
<para>Finalmente se a inte&ccedil;&atilde;o &eacute;
desabilitar esse comportamento por completo, basta definir
a vari&aacute;vel <varname>net.inet.icmp.icmplim</varname>
do sysctl (conforme o exemplo acima) como 0. Desabilitar
o recurso de limite de resposta &eacute; desencorajado
pelas raz&otilde;es acima expostas.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="unknown-hw-addr-format">
<para>Do que se trata estas mensagens de erro
<errorname>arp: unknown hardware address
format</errorname>?</para>
</question>
<answer>
<para>Significa que alguma interface de rede no mesmo
barramento Ethernet que voc&ecirc;, est&aacute; usando um
endere&ccedil;o de MAC cujo formato n&atilde;o &eacute;
reconhecido pelo FreeBSD. Provavelmente isso deve estar
sendo causado por algum outro usu&aacute;rio, fazendo
experi&ecirc;ncias com placas Ethernet em algum lugar na
sua mesma rede. Em redes com Cable Modens esse
comportamento &eacute; ainda mais comum; n&atilde;o
&eacute; prejudicial e n&atilde;o atrapalha a performance
do seu FreeBSD.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="cvsup-missing-libs">
<para>Acabei de instalar o CVSup, mas ao tentar us&aacute;-lo,
aparecem erros. O que est&aacute; havendo?</para>
</question>
<answer>
<para>Primeiro, verifique se as mensagens de erro em
quest&atilde;o s&atilde;o como essas:</para>
<programlisting>/usr/libexec/ld-elf.so.1: Shared object "libXaw.so.6" not found</programlisting>
<para>Esse tipo de erro se deve &agrave;
instala&ccedil;&atilde;o do <literal>port</literal>
<filename role="package">net/cvsup</filename> em
esta&ccedil;&otilde;es sem o XFree86. Se a
inte&ccedil;&atilde;o &eacute; usar a interface
gr&aacute;fica oferecida pelo
<application>CVSup</application>, ent&atilde;o instale o
<application>XFree86</application> imediatamente. Do
contr&aacute;rio, se a inten&ccedil;&atilde;o &eacute;
usar o <application>CVSup</application> apenas por linha
de comando, basta desinstalar a aplica&ccedil;&atilde;o
anterior e instalar o <literal>port</literal> <filename
role="package">net/cvsup-without-gui</filename>. A
se&ccedil;&atilde;o sobre <ulink
url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html">CVSup</ulink>
do &a.ptbr.p.handbook; cobre essas quest&otilde;es de
forma mais detalhada.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="security">
<title>Seguran&ccedil;a</title>
<qandaset>
<qandaentry>
<question id="extra-named-port">
<para>O BIND (<command>named</command>) est&aacute;
escutando na porta 53 e em outras portas elevadas. O que
est&aacute; havendo?</para>
</question>
<answer>
<para>O FreeBSD, a partir da vers&atilde;o 3.0, utiliza
portas n&atilde;o privilegiadas e elevadas,
aleatoriamente, para responder &agrave;
requisi&ccedil;&otilde;es de DNS. Se a
inten&ccedil;&atilde;o &eacute; usar a porta 53 para
responder a estas requisi&ccedil;&otilde;es, para adequar
o comportamento do BIND &agrave; um
<foreignphrase>firewall</foreignphrase> ou apenas para
sentir-se melhor, experimente acrescentar a
instru&ccedil;&otilde;o abaixo no arquivo
<filename>/etc/namedb/named.conf</filename>:</para>
<programlisting>options {
query-source address * port 53;
};</programlisting>
<para>O <literal>*</literal> deve ser substitu&iacute;do por
um endere&ccedil;o IP &uacute;nico, caso se deseje
restringir ainda mais este comportamento.</para>
<para>De qualquer forma, parab&eacute;ns. &Eacute; uma
pratica saud&aacute;vel verificar registros n&atilde;o
usuais no conte&uacute;do de sa&iacute;da do
&man.sockstat.1; </para>
</answer>
</qandaentry>
<qandaentry>
<question id="sendmail-port-587">
<para>O Sendmail est&aacute; ouvindo na porta 587
al&eacute;m da tradicional porta 25! O que est&aacute;
havendo?</para>
</question>
<answer>
<para>As vers&otilde;es mais novas do Sendmail tem suporte
&agrave; uma caracter&iacute;stica que se chama
<foreignphrase>Mail Submission</foreignphrase>, que ouve
na porta 587. Esse servi&ccedil;o n&atilde;o &eacute;
completamente suportado ainda, mas sua popularidade vem
crescendo.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="toor-account">
<para>O que &eacute; a conta do usu&aacute;rio
<username>toor</username> que tem UID 0? Meu sistema foi
comprometido?</para>
</question>
<answer>
<para>N&atilde;o se preocupe. O usu&aacute;rio
<username>toor</username> &eacute; uma conta
<quote>alternativa</quote> com poderes de super
usu&aacute;rio (toor &eacute; root escrito ao
contr&aacute;rio). Normalmente esse usu&aacute;rio era
criado quando o interpretador de comandos &man.bash.1; era
instalado, mas agora o usu&aacute;rio existe por
padr&atilde;o no sistema. A inten&ccedil;&atilde;o
&eacute; que o usu&aacute;rio seja usado com um
interpretador de comandos fora do padr&atilde;o, de forma
que o ambiente de linha de comando do usu&aacute;rio
<username>root</username> n&atilde;o tenha que ser
alterada. Essa &eacute; uma situa&ccedil;&atilde;o
importante quando nos referimos &agrave; interpretadores
de comandos que n&atilde;o fazem parte da base do sistema
operacional (por exemplo, que foram instaladas do
<literal>Ports</literal> ou como pacotes, j&aacute; que
normalmente, elas s&atilde;o instaladas sob o
<filename>/usr/local/bin</filename> que por padr&atilde;o
est&aacute; em um sistema de arquivos diferente da raiz do
sistema. Em uma situa&ccedil;&atilde;o onde o
interpretador de comandos do usu&aacute;rio estiver sob
<filename>/usr/local/bin</filename> ou sob
<filename>/usr</filename> (ou onde quer que seja) e esse
sistema de arquivos n&atilde;o puder ser montado por
alguma raz&atilde;o, o usu&aacute;rio
<username>root</username> estar&aacute; 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.
</para>
<para>Alguns administradores costumam usar o
<username>toor</username> para tarefas do dia-a-dia, com
um interpretador de comandos
(<foreignphrase>shell</foreignphrase>) n&atilde;o comum, e
deixando o <username>root</username> com seu interpretador
de comandos (<foreignphrase>shell</foreignphrase>)
padr&atilde;o para realizar tarefas de emerg&ecirc;ncia ou
de modo mono usu&aacute;rio. Por padr&atilde;o, o
usu&aacute;rio <username>toor</username> n&atilde;o pode
ser usado, j&aacute; que ele n&atilde;o tem uma senha
definida. Para habilitar a conta, logue-se como
<username>root</username> no sistema e defina uma senha
para o <username>toor</username>.
</para>
</answer>
</qandaentry>
<qandaentry>
<question id="suidperl">
<para>Por que o <command>suidperl</command> n&atilde;o
est&aacute; funcionando corretamente?</para>
</question>
<answer>
<para>Por motivos de seguran&ccedil;a, a
instala&ccedil;&atilde;o padr&atilde;o do
<command>suidperl</command> n&atilde;o tem o bit suid
definido. Os administradores de sistemas podem reaver o
comportamento esperado com o seguinte comando:</para>
<screen>&prompt.root; <userinput>chmod u+s /usr/bin/suidperl</userinput></screen>
<para>Se a inten&ccedil;&atilde;o &eacute; que o
<command>suidperl</command> seja compilado com suid
durante as atualiza&ccedil;&otilde;es do sistema, edite o
<filename>/etc/make.conf</filename> e adicione a linha
<varname>ENABLE_SUIDPERL=true</varname> no arquivo, antes
de come&ccedil;ar um <command>make
buildworld</command>.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="ppp">
<title>PPP</title>
<qandaset>
<qandaentry>
<question id="userppp">
<para>N&atilde;o consigo fazer meu &man.ppp.8; funcionar. O
que estou fazendo de errado?</para>
</question>
<answer>
<para>Deve-se primeiro ler a man page do &man.ppp.8; e <ulink
URL="../handbook/ppp-and-slip.html#USERPPP">
se&ccedil;&atilde;o PPP do &a.ptbr.p.handbook;</ulink>.
Habilite os logs com o comando</para>
<programlisting>set log Phase Chat Connect Carrier lcp ipcp ccp command</programlisting>
<para>Este comando pode ser digitado no prompt do &man.ppp.8;
ou pode ser colocado no
<filename>/etc/ppp/ppp.conf</filename> (A
se&ccedil;&atilde;o <literal>default</literal> no
in&iacute;cio do arquivo &eacute; o melhor lugar para
colocar isso). Tenha certeza de que
seu<filename>/etc/syslog.conf</filename> (veja
&man.syslog.conf.5;) tenha as linhas</para>
<programlisting>!ppp *.*/var/log/ppp.log</programlisting>
<para>e que o arquivo <filename>/var/log/ppp.log</filename>
exista. Agora pode-se ver o que est&aacute; acontecendo
analisando seu arquivo de log. N&atilde;o se preocupe se
isso n&atilde;o faz sentido mas se precisar de ajuda, esta
informa&ccedil;&atilde;o far&aacute; sentido a
eles.</para>
<para>Se a sua vers&atilde;o do &man.ppp.8; n&atilde;o
suporta o comando set log ,deve-se fazer o download da
<ulink URL="http://people.FreeBSD.org/~brian/">
vers&atilde;o mais recente</ulink>. O FreeBSD 2.1.5 (e
posteriores) suporta a compila&ccedil;&atilde;o do
c&oacute;digo mais recente.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-hangs">
<para>Por que o &man.ppp.8; fica pendurado quando eu o
inicializo?</para>
</question>
<answer>
<para>Isso normalmente acontece porque seu hostname
n&atilde;o esta sendo resolvido. A melhor maneira de
corrigir isso &eacute; certificar-se de que o
<filename>/etc/hosts</filename> est&aacute; sendo
consultado pelo resolvedor; editando primeiro o
<filename>/etc/host.conf</filename> e colocando
<literal>hosts</literal> na primeira linha. Para isso,
simplesmente adicione no <filename>/etc/hosts/</filename>
uma entrada para sua m&aacute;quina local. Se n&atilde;o
tem nenhuma rede local, mude a linha do
<hostid>localhost</hostid>:</para>
<programlisting>127.0.0.1 foo.example.com foo localhost</programlisting>
<para>Sen&atilde;o, adicione uma outra entrada para seu
host. Consulte as man pages relevantes para maiores
detalhes.</para>
<para>Ao terminar, deve ser poss&iacute;vel dar um
<command>ping -c1 `nomedohost`</command> com sucesso.
</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-nodial-auto">
<para>Porque o &man.ppp.8; n&atilde;o disca em
modo<literal>-auto</literal>
</para>
</question>
<answer>
<para>Primeiro verifique se h&aacute; uma rota
padr&atilde;o. Ao executar um <command>netstat
-rn</command> (veja &man.netstat.1;), devem aparecer duas
entradas como essas:</para>
<programlisting>Destination Gateway Flags Refs Use Netif Expire
default 10.0.0.2 UGSc 0 0 tun0
10.0.0.2 10.0.0.1 UH 0 0 tun0</programlisting>
<para>Assume-se o uso do endere&ccedil;o recomendado pelo
&a.ptbr.p.handbook;, p&aacute;ginas de manual ou no
arquivo ppp.conf.sample. Se a rota padr&atilde;o
n&atilde;o foi definida, &eacute poss&iacute;vel que a
vers&atilde;o do &man.ppp.8; seja antiga, uma vez que
n&atilde;o entendem a palavra <literal>HISADDR</literal>
no arquivo ppp.conf. Se a vers&atilde;o do seu FreeBSD
for anterior a 2.2.5, mude a linha</para>
<programlisting>add 0 0 HISADDR</programlisting>
<para>para</para>
<programlisting>add 0 0 10.0.0.2</programlisting>
<para>Outra raz&atilde;o para a rota padr&atilde;o estar
ausente, pode ser porqu&ecirc; voc&ecirc; equivocadamente
definiu uma rota default em seu arquivo
<filename>/etc/rc.conf</filename> (veja &man.rc.conf.5;)
(este arquivo era chamado
<filename>/etc/sysconfig</filename> nas vers&otilde;es
anteriores a 2.2.2) e omitiu a linha</para>
<programlisting>delete ALL</programlisting>
<para>no <filename>ppp.conf</filename>. Se este for o
problema, volte para <ulink
URL="../handbook/ppp-and-slip.html#USERPPP-FINAL">
se&ccedil;&atilde;o de configura&ccedil;&otilde;es
Finais do &a.ptbr.p.handbook;.</ulink></para>
</answer>
</qandaentry>
<qandaentry>
<question id="no-route-to-host">
<para>O que <errorname>No route to host</errorname>
significa?</para>
</question>
<answer>
<para>Este erro &eacute; causado pela falta das linhas</para>
<programlisting>MYADDR:
delete ALL
add 0 0 HISADDR</programlisting>
<para>no seu arquivo
<filename>/etc/ppp/ppp.linkup</filename>. Isso somente
&eacute; necess&aacute;rio se voc&ecirc; tem um IP
din&acirc;mico ou n&atilde;o sabe o endere&ccedil;o do seu
gateway. Se voc&ecirc; esta usando o modo interativo,
pode-se digitar o seguinte, depois de ter entrado no
<literal>modo packet</literal> (O modo packet &eacute;
indicado pelo <acronym>PPP</acronym> mai&iacute;sculo no
prompt):
</para>
<programlisting>delete ALL
add 0 0 HISADDR</programlisting>
<para>Consulte a <ulink
URL="../handbook/ppp-and-slip.html#USERPPP-DYNAMICIP">
se&ccedil;&atilde;o PPP e Endere&ccedil;os IPs
din&acirc;micos</ulink> do &a.ptbr.p.handbook; para
maiores detalhes
</para>
</answer>
</qandaentry>
<qandaentry>
<question id="connection-threeminutedrop">
<para>Porque minha conex&atilde;o cai depois de (em m&eacute;dia)
3 minutos?</para>
</question>
<answer>
<para>O default timeout do PPP &eacute; de 3 minutos. Isso pode
ser ajustado com a linha</para>
<programlisting>set timeout <replaceable>NNN</replaceable></programlisting>
<para>Onde NNN &eacute; o n&uacute;mero em
segundos de inatividade antes da conex&atilde;o ser
fechada. Se <replaceable>NNN</replaceable> &eacute; zero a conex&atilde;o
nunca ser&aacute; fechada devido a um timeout. &Eacute;
poss&iacute;vel colocar esse comando no
<filename>ppp.conf</filename> ou digit&aacute;-lo no modo
interativo. Tamb&eacute;m &eacute;
poss&iacute;vel que isso seja ajustado enquanto sua
conex&atilde;o esta ativa conectando
pelo socket do servidor <application>ppp</application> usando
&man.telnet.1; ou &man.pppctl.8;. Consulte a man
page do &man.ppp.8; para maiores detalhes.
</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-drop-heavy-load">
<para>Por que minha conex&atilde;o cai quando est&aacute;
sobrecarregada?</para>
</question>
<answer>
<para>Se voc&ecirc; tem o relat&oacute;rio da qualidade da
liga&ccedil;&atilde;o (op&ccedil;&atilde;o LPR)
configurado &eacute; poss&iacute;vel que muitos pacotes
LQR entre sua m&aacute;quina e a origem estejam sendo
perdidos. O ppp deduz que sua linha deve ser ruim e
desconecta. Antes da vers&atilde;o 2.2.5 do FreeBSD, o
LQR era habilitado por default. Agora ele &eacute;
desabilitado por default. O LQR pode ser desabilitado com
a linha</para>
<programlisting>disable lqr</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-drop-random">
<para>Por que minha conex&atilde;o cai ap&oacute;s um
per&iacute;odo aleat&oacute;rio de tempo?</para>
</question>
<answer>
<para>&Agrave;s vezes, em uma linha telef&ocirc;nica com
ru&iacute;dos, ou quando a linha tem espera de
liga&ccedil;&otilde;es, seu modem pode desligar, pensando
(incorretamente) que perdeu o sinal de linha.</para>
<para>Existem ajustes em grande parte dos modems
determinando o qu&atilde;o tolerante ele deve ser a
respeito de perdas de sinal de linha. No USR Sportster,
por exemplo, isso &eacute; medido pelo registrador S10 em
d&eacute;cimos de segundo. Para fazer com que seu modem
n&atilde;o caia, poderia-se adicionar a seguinte string
dial up para envio/espera:</para>
<programlisting>set dial "...... ATS10=10OK......"
</programlisting>
<para>Consulte o manual do seu modem para detalhes.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-hangs-random">
<para>Por que minha conex&atilde;o fica pendurada depois de
um per&iacute;odo aleat&oacute;rio de tempo?</para>
</question><answer>
<para>Muitas pessoas experimentam conex&otilde;es presas sem
aparentemente nenhuma explica&ccedil;&atilde;o.</para>
<para>Se voc&ecirc; usa um modem externo, voc&ecirc;
simplesmente pode tentar um &man.ping.8; para ver se a luz
<acronym>TD</acronym> fica piscando quando voc&ecirc;
transmite dados. Se piscar (e a luz do
<acronym>RD</acronym> n&atilde;o), o problema &eacute; com
a extremidade remota. Se o <acronym>TD</acronym>
n&atilde;o piscar, o problema &eacute; local. Com um
modem interno voc&ecirc; precisar&aacute; usar o comando
<literal>set server</literal> no seu arquivo ppp.conf.
Quando ocorrer de cair, conecte com o &man.ppp.8; usando o
&man.pppctl.8;. Se a conex&atilde;o de sua rede voltar de
repente (o ppp voltou devido a atividade no
diagn&oacute;stico do socket) ou se voc&ecirc; n&atilde;o
consegue conectar (assumindo que o comando <literal>set
socket</literal> foi iniciado com sucesso) o problema
&eacute; local. Se voc&ecirc; puder conectar e ainda as
coisas estiverem "penduradas" habilite os logs do async
local com o comando <literal>set log local async</literal>
e use o &man.ping.8; de outra janela ou terminal para
for&ccedil;ar a atividade da conex&atilde;o. Os logs
async ir&atilde;o mostrar os dados que est&atilde;o sendo
transmitidos e recebidos durante a liga&ccedil;&atilde;o.
Se os dados est&atilde;o indo e n&atilde;o est&atilde;o
voltando, o problema &eacute; remoto.</para>
<para>Tendo estabelecido que o problema &eacute; local ou
remoto, voc&ecirc; tem agora duas possibilidades:</para>
<itemizedlist>
<listitem>
<para>Se o problema &eacute; remoto, leia a
sec&ccedil;&atilde;o <xref
linkend="ppp-remote-not-responding">.</para>
</listitem>
<listitem>
<para>Se o problema for remoto, leia a
sec&ccedil;&atilde;o <xref linkend="ppp-hung">.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-remote-not-responding">
<para>A extremidade remota n&atilde;o est&aacute;
respondendo. O que eu posso fazer?</para>
</question>
<answer>
<para>H&aacute; muito pouco que pode ser feito em
rela&ccedil;&atilde;o a isso. A maioria dos provedores
ir&atilde;o recusar ajuda-lo se voc&ecirc; n&atilde;o usar
o Windows. Voc&ecirc; pode habilitar a
<literal>lqr</literal> no seu arquivo
<filename>ppp.conf</filename>, permitindo ao &man.ppp.8;
detectar a falha remota e desligar-se, mas essa
detec&ccedil;&atilde;o &eacute; relativamente lenta e
consequentemente in&uacute;til. Pode-se querer evitar
dizer ao seu provedor que voc&ecirc; est&aacute; rodando o
user-ppp....</para>
<para>Primeiro tente desabilitar toda compress&atilde;o
local adicionando o seguinte em sua
configura&ccedil;&atilde;o:</para>
<programlisting>disable pred1 deflate deflate24 protocomp acfcomp shortseq vj
deny pred1 deflate deflate24 protocomp acfcomp shortseq vj</programlisting>
<para>Ent&atilde;o reconecte para assegurar de que isso
n&atilde;o fez diferen&ccedil;a. Se as coisas melhoraram
ou se o problema foi resolvido completamente, determine
quais ajustes fizeram a diferen&ccedil;a atrav&eacute;s de
tentativas e erros. Isto fornecer&aacute; uma boa cartada
quando voc&ecirc; contactar seu provedor (embora possa
parecer que voc&ecirc; n&atilde;o esteja rodando um
produto Microsoft).</para>
<para>Antes de contactar seu provedor, habilite o log async
localmente e aguarde at&eacute; que sua conex&atilde;o
caia novamente. Isto pode usar um bocado de espa&ccedil;o
em disco. A &uacute;ltima leitura de dados da porta pode
ser de seu interesse. S&atilde;o geramente dados em
ascii, e podem mesmo descrever o problema (<quote>Memory
fault, core dumped</quote>?).</para>
<para>Se seu provedor for prestativo, ele deve ser capaz de
habilitar o log da extremidade da conex&atilde;o dele,
ent&atilde;o 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
&a.brian ou pe&ccedil;a para seu provedor
contact&aacute;-lo diretamente.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-hung">
<para>O &man.ppp.8; est&aacute; travado. O que eu posso
fazer?</para>
</question>
<answer>
<para>A melhor coisa a fazer aqui &eacute; recompilar o
&man.ppp.8; adicionando <literal>CFLAGS+=-g </literal>e
<literal>STRIP=</literal> no final do Makefile, depois
fa&ccedil;a <command>make clean &amp;&amp; make &amp;&amp;
make install</command>. Quando o &man.ppp.8; ficar
travado, procure o id do processo com um <command>ps ajxww
| fgrep ppp</command> e execute <command>gdb ppp
</command>PID. No prompt do gdb voc&ecirc; pode
ent&atilde;o usar o <command>bt</command> para obter um
rastreamento da pilha.</para>
<para>Envie os resultados para:
<email>brian@Awfulhak.org</email>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-loginok-thennothing">
<para>Por que n&atilde;o acontece nada depois da mensagem
<quote>Login OK!</quote>?</para>
</question>
<answer>
<para>Antes da vers&atilde;o 2.2.5 do FreeBSD, uma vez que a
conex&atilde;o foi estabelecida, o &man.ppp.8; espera que o
modem remoto inicie o protocolo do controle de linha
(LCP), Muitos provedores n&atilde;o iniciar&atilde;o a
negocia&ccedil;&atilde;o e esperar&ccedil;&atilde;o que o
cliente a fa&ccedil;a. Para for&ccedil;ar o &man.ppp.8;
para iniciar o LCP, use a seguinte linha:</para>
<programlisting>set openmode active</programlisting>
<note>
<para>Nota: isto geralmente n&atilde;o prejudica em nada
se a negocia&ccedil;&atilde;o for iniciada por ambos os
lados, assim, a op&ccedil;&atilde;o openmode &eacute;
agora ativada por padr&atilde;o. Entretanto, na
pr&oacute;xima se&ccedil;&atilde;o ser&aacute; explicado
quando isso realmente <emphasis>proporciona</emphasis>
algum problema.</para>
</note>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-same-magic">
<para>Eu vejo os mesmos erros sobre <literal>magic is the
same</literal>. O que significa?</para>
</question>
<answer>
<para>Ocasionalmente, depois da conex&atilde;o, voc&ecirc;
pode ver mensagens no log dizendo <quote>"magic is the
same"</quote>. &Agrave;s vezes essas mensagens
s&atilde;o sem import&acirc;ncia e as vezes um lado ou o
outro sai. A maioria das implementa&ccedil;&otilde;es do
ppp n&atilde;o consegue continuar com esse problema, e
mesmo se a conex&atilde;o estiver para ser estabelecida,
voc&ecirc; ver&aacute; repetidas requisi&ccedil;&otilde;es
de configura&ccedil;&atilde;o e reconhecimentos de
configura&ccedil;&atilde;o no arquivo de log at&eacute;
que o &man.ppp.8; eventualmente desista e feche a
conex&atilde;o.</para>
<para>Isto normalmente acontece em m&aacute;quinas com
discos lentos que est&atilde;o dando spawning getty na
porta e executam o &man.ppp.8; atrav&eacute;s de um login
script ou programa depois do login. Eu tamb&eacute;m ouvi
relat&oacute;rios disso estar acontecendo consistentemente
ao usar slirp. A raz&atilde;o &eacute; que no tempo entre
sa&iacute;da do &man.getty.8; e a
inicializa&ccedil;&atilde;o do &man.ppp.8;, o &man.ppp.8; do
lado cliente come&ccedil;a a emitir pacotes do protocolo
do controle da linha LCP). Porque o ECHO ainda esta
ligado na porta do servidor, o cliente ent&atilde;o
v&ecirc; esses pacotes serem <quote>refletidos</quote> de
volta.</para>
<para>Uma parte da negocia&ccedil;&atilde;o LCP deve
estabelecer um n&uacute;mero m&aacute;gico para cada lado
da liga&ccedil;&atilde;o de modo que as
<quote>reflex&otilde;es</quote> possam ser detectadas. O
protocolo diz que quando um ponto tenta negociar o mesmo
n&uacute;mero m&aacute;gico, um NAK deve ser emitido e um
novo n&uacute;mero m&aacute;gico deve ser escolhido.
Durante o per&iacute;odo que a porta do server tem o ECHO
ligado, o &man.ppp.8; cliente manda pacotes LCP, v&ecirc; o
mesmo n&uacute;mero m&aacute;gico nos pacotes refletidos e
manda NAKs a ele. Ve-se tamb&eacute;m o NAK que foi
refletido (que significa que o &man.ppp.8; deve mudar o seu
n&uacute;mero m&aacute;gico). Isto produz um
n&uacute;mero potencialmente enorme de mudan&ccedil;as de
n&uacute;meros m&aacute;gicos que est&atilde;o sendo
empilhados no buffer do tty do servidor. T&atilde;o logo
o &man.ppp.8; se inicia no servidor, ele &eacute; inundado
com mudan&ccedil;as de n&uacute;meros m&aacute;gicos
imediatamente ao negociar o LCP, e desiste. Enquanto
isso, o cliente n&atilde;o v&ecirc; por muito tempo as
reflex&otilde;es e fica feliz apenas por algum tempo,
at&eacute; receber a desconex&atilde;o do servidor.</para>
<para>Isto pode ser evitado permitindo que a
negocia&ccedil;&atilde;o seja iniciada pelo servidor
(peer), adicionando a seguinte linha no seu arquivo
ppp.conf:</para>
<programlisting>set openmode passive</programlisting>
<para>Isso diz ao &man.ppp.8; para esperar que o servidor
inicie as negocia&ccedil;&otilde;es LCP. Alguns
servidores, entretanto, podem nunca iniciar as
negocia&ccedil;&otilde;es. Se este for o caso, voc&ecirc;
deve fazer algo como:</para>
<programlisting>set openmode active 3</programlisting>
<para>Isto diz ao &man.ppp.8; para ser passivo durante 3
segundos, e ent&atilde;o come&ccedil;ar a enviar
requisi&ccedil;&otilde;es LCP. Se o servidor (peer)
come&ccedil;ar a enviar requisi&ccedil;&otilde;es durante
esse per&iacute;odo, o &man.ppp.8; ir&aacute; responder
imediatamente, ao inv&eacute;s de aguardar pelo
per&iacute;odo completo de 3 segundos.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-lcp-constant">
<para>As negocia&ccedil;&otilde;es LCP continuam at&eacute;
que a conex&atilde;o seja fechada. O que est&aacute;
errado?</para>
</question>
<answer>
<para>H&aacute; atualmente uma caracter&iacute;stica
faltando no ppp onde ele n&atilde;o associa respostas LCP
, CCP &amp; IPCP com suas requisi&ccedil;&otilde;es
originais. Como consequ&ecirc;ncia, se uma
implementa&ccedil;&atilde;o ppp &eacute; 6 segundos mais
lenta do que o outro lado, esse lado emitir&aacute duas
requis&otilde;es adicionais de configura&ccedil;&atilde;o
LCP. Isto &eacute; fatal.</para>
<para>Considere duas implementa&ccedil;&otilde;es,
<hostid>A</hostid> e <hostid>B</hostid>.
<hostid>A</hostid> emite requisi&ccedil;&otilde;es LCP
imediatamente ap&oacute;s a conex&atilde;o e
<hostid>B</hostid> leva 7 segundos para iniciar. Quando
<hostid>B</hostid> inicia, <hostid>A</hostid> emitiu 3 LCP
REQs. N&oacute;s estamos supondo que a linha ECHO esteja
desabilitada, sen&atilde;o n&oacute;s ver&iacute;amos
problemas com n&uacute;mero m&aacute;gico como descritos
na se&ccedil;&atilde;o anterior. <hostid>B</hostid> emite
um REQ, entao um ACK para o primeiro dos REQs de
<hostid>A</hostid>. Isto resulta em <hostid>A</hostid>
entrando no estado <acronym>OPENED</acronym> e enviando um
ACK (o primeiro) de volta a <hostid>B</hostid>. Enquanto
isso, <hostid>B</hostid> envia de volta mais dois ACKs em
resposta aos dois REQs adicionais enviados por
<hostid>A</hostid> antes de <hostid>B</hostid> ter
iniciado. <hostid>B</hostid> ent&atilde;o recebe o
primeiro ACK de <hostid>A</hostid> e tamb&eacute;m entra
no estado de <acronym>OPENED</acronym>.
<hostid>A</hostid> recebe o segundo ACK de
<hostid>B</hostid> e retorna ao estado de
<acronym>REQ-SENT</acronym>, enviando um outro (seguinte)
REQ conforme a RFC ordena. Ent&atilde;o, recebe o
terceiro ACK e entra no estado OPENED. Enquanto isso,
<hostid>B</hostid> recebe REQ (posterior) de
<hostid>A</hostid>, tendo como resultado uma
revers&atilde;o para o estado <acronym>ACK-SENT</acronym>
e enviando um outro (segundo) REQ e (depois) ACK conforme
a RFC. Conseguindo o REQ, <hostid>A</hostid> entra em
<acronym>REQ-SENT</acronym> e envia outro REQ.
Imediatamente recebe o ACK seguinte e entra em
<acronym>OPENED</acronym>.</para>
<para>Isto continuar&aacute; at&eacute; que um dos lados
descubra que eles n&atilde;o est&atilde;o indo a lugar
algum e desista.</para>
<para>A melhor maneira de evitar isso &eacute; configurar um
lado para ser <literal>passivo</literal> - isso faz com
que um lado espere pelo outro para iniciar uma
negocia&ccedil;&atilde;o. Isto pode ser feito com o
comando</para>
<programlisting>set openmode passive</programlisting>
<para>Deve-se ter cuidado com esta op&ccedil;&atilde;o.
Voc&ecirc; tamb&eacute;m deve usar o comando</para>
<programlisting>set stopped N</programlisting>
<para>para limitar a quantidade de tempo que o &man.ppp.8;
esperar&aacute; pelo outro lado iniciar a
negocia&ccedil;&atilde;o. Alternativamente o
comando</para>
<programlisting>set openmode active N</programlisting>
<para>(onde <replaceable>N</replaceable> &eacute; o
n&uacute;mero de segundos para esperar antes de iniciar as
negocia&ccedil;&otilde;es) pode ser usado. Consulte as
p&aacute;ginas de manual para detalhes.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-lockups">
<para>Por que o &man.ppp.8; trava logo ap&oacute; a
conex&atilde;o?</para>
</question>
<answer>
<para>Antes da vers&atilde;o 2.2.5 do FreeBSD, era
poss&iacute;vel que sua liga&ccedil;&atilde;o fosse
desabilitada logo ap&oacute;s a conex&atilde;o, devido a
incapacidade de negocia&ccedil;&atilde;o da
compress&atilde;o Predictor1 do &man.ppp.8;. Isto
aconteceria somente se ambos os lados tentassem negociar
protocolos diferentes do controle da compress&atilde;o
(CCP). Este problema atualmente esta corrigido, mas se
voc&ecirc; ainda roda uma vers&atilde;o antiga do
&man.ppp.8;, o problema pode ser resolvido com a
linha:</para>
<programlisting>disable pred1</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-shell-test-lockup">
<para>Por que o &man.ppp.8; trava quando executo
comandos shell pelo &man.ppp.8;?</para>
</question>
<answer>
<para>Quando executa-se o <command>shell</command> com o
comando <command>!</command> , o &man.ppp.8; executa um
shell (ou se voc&ecirc; passar quaisquer argumentos, o
&man.ppp.8; executar&aacute; aqueles argumentos). Ppp
aguardar&aacute; o comando terminar antes de continuar.
Se voc&ecirc; tentar usar a sua liga&ccedil;o ppp enquanto
&eacute; executado o comando, a liga&ccedil;&atilde;o
aparacer&aacute; congelada. Isto porque o ppp
estar&aacute; esperando pelo finaliza&ccedil;&atilde;o da
comando.</para>
<para>Se voc&ecirc; desejar executar comandos assim, use o
comando <command>!bg</command>. Ele executar&aacute; o
comando em background e o &man.ppp.8; poder&aacute;
continuar a servir a conex&atilde;o normalmente.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-nullmodem">
<para>Como uma conex&atilde;o por &man.ppp.8; usando um nunca
termina?</para>
</question>
<answer>
<para>N&atilde;o h&aacute; nenhuma maneira para que o
&man.ppp.8; determine automaticamente que uma
conex&atilde;o direta caiu. Isto &eacute; devido
&agrave;s linhas que s&atilde;o usadas na s&eacute;rie de
cable null modems. Ao usar esse tipo de conex&atilde;o o
LQR deve sempre ser habilitado com a linha:</para>
<programlisting>enable lqr</programlisting>
<para>A LQR &eacute; aceita por padr&atilde;o, se negociada
com o outro lado.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-auto-noreasondial">
<para>Por que o &man.ppp.8; disca sem nenhuma raz&atilde;o no
modo -auto?</para>
</question>
<answer>
<para>Se o &man.ppp.8; esta discando inesperadamente,
voc&ecirc; deve determinar a causa, e setar os filtros de
discagem (dfilters) para evitar esse comportamento.</para>
<para>Para determinar a causa, use a seguinte linha:</para>
<programlisting>set log +tcp/ip</programlisting>
<para>Isto registrar&aacute; todo o tr&aacute;fego
atrav&eacute;s da conex&atilde;o. A pr&oacute;xima vez
que a linha acima for ativada, voc&ecirc; ver&aacute; a
raz&atilde;o logada.</para>
<para>Voc&ecirc; pode agora desabilitar a discagem sob estas
circunst&acirc;ncias. Geralmente, este tipo de problema
ocorre devido aos lookups do DNS. Para evitar que os
lookups do DNS estabele&ccedil;am uma conex&atilde;o (isto
<emphasis>n&atilde;o</emphasis> impedir&aacute; que o
&man.ppp.8; passe os pacotes atrav&eacute;s de uma
conex&atilde;o j&aacute; estabelecida) use o
seguinte:</para>
<programlisting>set dfilter 1 deny udp src eq 53
set dfilter 2 deny udp dst eq 53
set dfilter 3 permit 0/0 0/0</programlisting>
<para>Nem sempre isso &eacute; apropriado, porque ir&aacute;
interromper suas capacidades de discagem por demanda - a
maioria dos programas precisar&atilde;o de lookup do DNS
antes de fazer alguma outra coisa relacionada a
rede.</para>
<para>No caso do DNS, voc&ecirc; deve tentar determinar o
que esta realmente tentando resolver um hostname. Na
maioria das vezes o &man.sendmail.8; &eacute; o culpado.
Voc&ecirc; deve certificar-se que o sendmail n&atilde;o
deve fazer nenhum DNS lookup em seu arquivo de
configura&ccedil;&atilde;o. Veja na se&ccedil;&atilde;o
<link linkend="ispmail">Configura&ccedil;&atilde;o de
Mail</link> para detalhes de como criar seu
pr&oacute;prio arquivo de configura&ccedil;&atilde;o e o
que deve conter nele. Voc&ecirc; pode tamb&eacute;m
adicionar a seguinte linha ao seu arquivo
<filename>.mc</filename>:</para>
<programlisting>define(`confDELIVERY_MODE', `d')dnl
</programlisting>
<para>Isto far&aacute; o sendmail enfileirar tudo,
at&eacute; que a fila esteja funcionando (normalmente o
sendmail &eacute; invocado com <option>-bd -q30m</option>,
dizendo a ele para rodar a fila (queue) a cada 30minutos)
ou at&eacute; que o <command>sendmail</command> -q seja
feito (talvez do arquivo ppp.linkup)</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ccp-errors">
<para>O que estes erros de CCP significam?</para>
</question>
<answer>
<para>Eu estou vendo os seguintes erros em
meus logs:</para>
<programlisting>CCP: CcpSendConfigReq
CCP: Received Terminate Ack (1) state = Req-Sent (6)</programlisting>
<para>Isto &eacute; porque o &man.ppp.8; esta tentando
negociar a compress&atilde;o Predictor1, e o outro ponto
n&atilde;o quer negociar nenhuma compress&atilde;o. As
mensagens s&atilde;o inofensivas, mas se voc&ecirc;
desejar remove-las, poder&aacute; desabilitar a
compress&atilde;o Predictor1 tamb&eacute;m
localmente:</para>
<programlisting>disable pred1</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-lockup-ioerrors">
<para>Por que o &man.ppp.8; trava durante a
transfer&ecirc;ncia de arquivo com erros de
IO(Input/Output)?</para>
</question>
<answer>
<para>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
&eacute; logado atrav&eacute;s do syslogd.</para>
<para>A especifica&ccedil;&atilde;o do ppp diz que um MTU de
1500 deve ser <emphasis>sempre</emphasis> aceito como
m&iacute;nimo. Apesar de todas as
negocia&ccedil;&otilde;es de LCP, &eacute; poss&iacute;vel
diminuir o MTU para menos de 1500, independentemente
disso, seu provedor ir&aacute; transmitir pacotes de 1500
para voc&ecirc;, e isso travar&aacute; sua
conex&atilde;o.</para>
<para>O problema pode ser contornado por nunca ajustar um
MTU menor que 1500 sobre o FreeBSD 2.2.2 ou
anteriores.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-connectionspeed">
<para>Por que o &man.ppp.8; n&atilde;o loga minha velocidade
de conex&atilde;o?</para>
</question>
<answer>
<para>A fim de logar todas as linhas de
<quote>conversa&ccedil;&atilde;o</quote> de seu modem
voc&ecirc; deve habilitar o seguinte:</para>
<programlisting>set log +connect</programlisting>
<para>Isto ir&aacute; fazer o &man.ppp.8; logar tudo,
at&eacute; a ultima requisi&ccedil;&atilde;o
<quote>expect</quote>.</para>
<para>Se voc&ecirc; desejar ver sua velocidade de
conex&atilde;o e estiver usando PAP ou CHAP (e
consequentemente n&atilde;o tenha qualquer coisa para o
<quote>chat</quote> depois do CONNECT no script de
discagem - no <literal>set login</literal> script),
voc&ecirc; deve certificar-se que instruiu o &man.ppp.8; a
``a esperar" a linha inteira CONNECT, algo como:</para>
<programlisting>set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \
\"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"</programlisting>
<para>Aqui nosso CONNECT, n&atilde;o envia nada, ele espera
ent&atilde;o um line-feed, for&ccedil;ando o &man.ppp.8; a
ler toda a resposta do CONNECT.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-ignores-backslash">
<para>Por que o &man.ppp.8; ignora o caracter
<literal>\</literal> no meu script de
conversa&ccedil;&atilde;o?</para>
</question>
<answer>
<para>O Ppp analiza cada linha no seu arquivo de
configura&ccedil;&atilde;o, ent&atilde;o isso pode ser
interpretado como string tal como <literal>set phone "123
456 789"</literal> corretamente e compreende de fato que
o n&uacute;mero &eacute; um
<emphasis>&uacute;nico</emphasis> argumento. A fim de
especificar um caracter<literal>&quot;</literal>,
voc&ecirc; deve escapar desse comportamento, usando um a
barra invertida <literal>\</literal>.</para>
<para>Quando o script de conversa&ccedil;&atilde;o analizar
cada argumento, ele reinterpretar&aacute; o argumento a
fim de encontrar quaisquer sequ&ecirc;ncias especiais como
<literal>\P</literal> ou <literal>\T</literal> (veja a man
page). Como resultado desta dupla an&aacute;lise,
voc&ecirc; deve conseguir usar o n&uacute;mero correto de
espa&ccedil;os.</para>
<para>Se voc&ecirc; deseja enviar um caracter
<literal>\</literal> para dizer a seu modem, voc&ecirc;
precisar&aacute; de algo assim:</para>
<programlisting>set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK"</programlisting>
<para>resultando a seguinte sequ&ecirc;ncia:</para>
<programlisting>ATZ
OK
AT\X
OK</programlisting>
<para>ou</para>
<programlisting>set phone 1234567
set dial "\"\" ATZ OK ATDT\\T"</programlisting>
<para>resultando na seguindo sequ&ecirc;ncia:</para>
<programlisting>ATZ
OK
ATDT1234567</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-segfault-nocore">
<para>Por que o &man.ppp.8; d&aacute; um seg-fault, mas eu
n&atilde;o vejo nenhum arquivo
<filename>ppp.core</filename>?</para>
</question>
<answer>
<para>O Ppp (ou qualquer programa desta natureza) nunca
dever dar core dump. Porque o &man.ppp.8; roda com um
e-userid (effective user id) 0, o sistema operacional
n&atilde;o ir&aacute; escrever a imagem do core do
&man.ppp.8; em disco antes de termin&aacute;-lo. Mas se
acontecer de o &man.ppp.8; terminar devido a uma falha de
segmenta&ccedil;&atilde;o ou algum outro sinal que
normalmente causaria um core dumped,
<emphasis>e</emphasis> voc&ecirc; tem certeza de que esta
usando uma vers&atilde;o mais recente do ppp (veja o
come&ccedil;o desta se&ccedil;&atilde;o), voc&ecirc; deve
fazer o seguinte:</para>
<screen>&prompt.user; <userinput>tar xfz ppp-*.src.tar.gz</userinput>
&prompt.user; <userinput>cd ppp*/ppp</userinput>
&prompt.user; <userinput>echo STRIP= &gt;&gt;Makefile</userinput>
&prompt.user; <userinput>echo CFLAGS+=-g &gt;&gt;Makefile</userinput>
&prompt.user; <userinput>make clean all</userinput>
&prompt.user; <userinput>su</userinput>
&prompt.root; <userinput>make install</userinput>
&prompt.root; <userinput>chmod 555 /usr/sbin/ppp</userinput></screen>
<para>Voc&ecirc; agora tem uma vers&atilde;o
debug&aacute;vel do &man.ppp.8; instalada. Voc&ecirc;
precisar&aacute; ser <username>root</username> para rodar
o ppp porque todos os seus privil&eacute;gios foram
revogados. Quando voc&ecirc; iniciar o &man.ppp.8;, tome
nota com cuidado de qual era o seu diret&oacute;rio
corrente naquele instante.</para>
<para>Agora, quando o &man.ppp.8; receber uma
viola&ccedil;&atilde;o de segmento (seg-fault), voc&ecirc;
ter&aacute; um arquivo chamado ppp.core. Voc&ecirc; deve
ent&atilde;o fazer o seguinte:</para>
<screen>&prompt.user; <userinput>su</userinput>
&prompt.root; <userinput>gdb /usr/sbin/ppp ppp.core</userinput>
<prompt>(gdb)</prompt> <userinput>bt</userinput>
.......
<prompt>(gdb)</prompt> <userinput>f 0</userinput>
......
<prompt>(gdb)</prompt> <userinput>i args</userinput>
......
<prompt>(gdb)</prompt> <userinput>l</userinput>
.......</screen>
<para>Toda essa informa&ccedil;&atilde;o deve ser dada com a
sua pergunta, sendo poss&iacute;vel agora diagnosticar o
problema.</para>
<para>Se voc&ecirc; &eacute; familiarizado com o gdb,
voc&ecirc; pode desejar encontrar alguns outros bits e
partes como as que causaram o dump e tamb&eacute;m os
endere&ccedil;os e valores das vari&aacute;veis
revelantes.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-autodialprocess-noconnect">
<para>Por que o processo que for&ccedil;a a discagem em auto
mode nunca conecta?</para>
</question>
<answer>
<para>Este era um problema conhecido na
configura&ccedil;&atilde;o &man.ppp.8; para negociar um IP
local din&acirc;mico com o outro ponto no auto mode. Isto
foi corrigido na vers&atilde;o mais recente. Procure na
man page do &man.ppp.8; por
<literal>iface</literal>.</para>
<para>O problema era que quando este programa inicial chamava
o &man.connect.2;, o n&uacute;mero IP da interface tun
estava atribu&iacute;do ao endpoint do soquete. O
<foreignphrase>kernel</foreignphrase> cria o primeiro
pacote de sa&iacute;da e escreve-o no dispositivo tun. O
&man.ppp.8; ent&atilde;o l&ecirc; o pacote e estabelece a
conex&atilde;o. Se em consequ&ecirc;ncia da
atribui&ccedil;&atilde;o din&acirc;mica do IP do
&man.ppp.8; o endere&ccedil;o da interface for mudado, o
endpoint do soquete original ser&aacute; inv&aacute;lido.
Todos os pacotes subsequentes emitidos ao outro ponto
ser&atilde;o geralmente descartados. Mesmo se n&atilde;o
forem descartados, nenhuma das respostas ir&aacute; voltar
pela rota da m&aacute;quina de origem, isto porque o
n&uacute;mero IP j&aacute; n&atilde;o pertence a essa
m&aacute;quina.</para>
<para>H&aacute; diversas maneiras te&oacute;ricas para
abordargem desse problema. Seria mais agrad&aacute;vel se
o ponto reatribu&iacute;sse, se poss&iacute;vel o mesmo
n&uacute;mero IP <literal>:-)</literal> A vers&atilde;o
atual do &man.ppp.8; faz isso, mas a maioria das outras
implementa&ccedil;&otilde;es n&atilde;o.</para>
<para>O m&eacute;todo mais f&aacute;cil do nosso lado, seria
nunca mudar o n&uacute;mero IP da interface tun, mas ao
inv&eacute;s disso, mudar todos os pacotes de sa&iacute;da
de modo que a origem do n&uacute;mero IP &eacute; mudada
da interface IP para o IP negociado din&acirc;micamente.
Isto &eacute; essencialmente o que a op&ccedil;&atilde;o
<literal>iface-alias</literal> na vers&atilde;o mais
recente do ppp faz (com a ajuda da &man.libalias.3; e da
op&ccedil;&atilde;o <option>-nat</option> do &man.ppp.8;) -
esta mantendo endere&ccedil;os anteriores da interface e
fazendo NAT do &uacute;ltimo endere&ccedil;o
negociado.</para>
<para>Uma outra alternativa (e provavelmente a mais
confi&aacute;vel) seria implementar uma chamada de sistema
que mudasse todos os soquetes ligados de um IP para outro.
O &man.ppp.8; usaria essa chamada para modificar os
soquetes de todos os programas em execu&ccedil;&atilde;o
quando um novo endere&ccedil;o IP &eacute; negociado. O
mesmo sistema de chamadas poderia ser usado por clientes
dhcp quando s&atilde;o for&ccedil;ados a religar seus
soquetes.</para>
<para>Ainda, outra possibilidade &eacute; permitir a
interface para ser ativada sem um n&uacute;mero IP. Os
pacotes de sa&iacute;da seriam dados um n&uacute;mero IP
255.255.255.255 at&eacute; que a primeira SIOCAIFADDR
ioctl esteja pronta. Isto resultaria na completa
liga&ccedil;&atilde;o com o soquete. Seria at&eacute; o
&man.ppp.8; mudar o n&uacute;mero IP de origem, mas somente
se foi setado para 255.255.255.255, e somente o
n&uacute;mero IP e o IP checksum deveriam ser mudados.
Isto por&eacute;m, &eacute; um pequeno hack do
<foreignphrase>kernel</foreignphrase> que deve estar
enviando maus pacotes para uma interface configurada, na
suposi&ccedil;&atilde;o de que algum outro mecanismo
&eacute; capaz de corrigir as coisas de forma
restrospectiva.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ppp-nat-games">
<para>Por que a maioria dos jogos n&atilde;o funciona com a
op&ccedil;&atilde;o -nat?</para>
</question>
<answer>
<para>A raz&atilde;o para os jogos e outros programas
n&atilde;o funcionarem quando a libalias esta em uso
&eacute; porque a m&aacute;quina de fora ir&aacute; tentar
abrir uma conex&atilde;o ou enviar pacotes UDP (n&atilde;o
solicitados) para a m&aacute;quina de dentro. O software
NAT n&atilde;o sabe que deve enviar esses pacotes para a
m&aacute;quina interna.</para>
<para>Para que as coisas funcionem, certifique-se de que a
&uacute;nica coisa que esta rodando &eacute; o software
que voc&ecirc; esta tendo problemas, a seguir rode o
tcpdump na interface tun do gateway ou habilite &man.ppp.8;
tcp/ip logging (<literal>set log+tcp/ip</literal>) na
gateway.</para>
<para>Quando voc&ecirc; iniciar o software, voc&ecirc; deve
ver pacotes passando atrav&eacute;s da m&aacute;quina
gateway. Quando alguma coisa volta vindo de fora,
ser&aacute; descartado (este &eacute; o problema). Tome
nota do n&uacute;mero da porta desses pacotes e a seguir
feche o software. Fa&ccedil;a isso algumas vezes para ver
se os n&uacute;meros da porta s&atilde;o consistentes. Se
eles forem, a seguinte linha no
<filename>/etc/ppp/ppp.conf</filename> far&aacute; o
software funcional:</para>
<programlisting>nat port <replaceable>proto</replaceable><replaceable>m&aacute;quinainterna</replaceable>:
<replaceable>porta</replaceable><replaceable>porta</replaceable></programlisting>
<para>Onde <replaceable>proto</replaceable> &eacute; ou
<literal>tcp</literal> ou <literal>udp</literal>,
<replaceable>m&aacute;quinainterna</replaceable> &eacute;
a m&aacute;quina de onde voc&ecirc; quer que os pacotes
sejam enviados e <replaceable>porta</replaceable> &eacute;
n&uacute;mero da porta de destino dos pacotes.</para>
<para>Voc&ecirc; n&atilde;o poder&aacute; usar o software em
outras m&aacute;quinas sem mudar o comando acima, e rodar
o software em duas m&aacute;quinas internas ao mesmo tempo
&eacute; fora de quest&atilde;o - Apesar de tudo, o lado
de fora esta vendo toda sua rede interna como sendo
somente uma m&aacute;quina.</para>
<para>Se os n&uacute;meros da porta n&atilde;o s&atilde;o
consistentes, h&aacute; ainda mais 3
op&ccedil;&otilde;es.</para>
<orderedlist>
<listitem>
<para>Enviar o suporte na libalias. Exemplos de 'casos
especiais' podem ser encontrados em
<filename>/usr/src/lib/libalias/alias_*.c </filename>
(<filename>alias_ftp.c</filename> eh um bom tipo de
protocolo). Isto geralmente envolve ler determinados
pacotes reconhecidos na sa&iacute;da, identificando a
instru&ccedil;&atilde;o que chama a m&aacute;quina
externa para iniciar a conex&atilde;o de volta para a
m&aacute;quina interna em uma porta (aleat&oacute;ria)
espec&iacute;fica e setar a <quote>rota</quote> na
tabela de aliases de modo que os pacotes subsequentes
saibam para onde ir.</para>
<para>Esta solu&ccedil;&atilde;o &eacute; a mais
dif&iacute;cil, mas &eacute; a melhor e ir&aacute;
fazer o software trabalhar com m&uacute;ltipla
m&aacute;quinas.</para>
</listitem>
<listitem>
<para>Use um proxy. A aplica&ccedil;&atilde;o
poder&aacute; suportar sock5 por exemplo, ou (como no
caso do <quote>cvsup</quote>) pode ter uma
op&ccedil;&atilde;o <quote>passive</quote> que evita
sempre requisi&ccedil;&otilde;es feitas pelo outro
ponto de volta para a m&aacute;quina local.</para>
</listitem>
<listitem>
<para>Redirecione tudo para a m&aacute;quina interna
usando <literal>nat addr</literal>. Pode-se dizer que
essa seja a apela&ccedil;&atilde;o.</para>
</listitem>
</orderedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="useful-port-numbers">
<para>Algu&eacute;m fez uma lista de n&uacute;mero de portas
&uacute;teis?</para>
</question>
<answer>
<para>N&atilde;o ainda, mas a intens&atilde;o &eacute;
produzir tal lista (se algum interesse for mostrado). Em
cada exemplo, <replaceable>internal</replaceable> deve ser
subst&iacute;tuido pelo IP da m&aacute;quina que esta
jogando o jogo.</para>
<itemizedlist>
<listitem>
<para><application>Asheron's Call</application></para>
<para><literal>nat port udp <replaceable>
internal</replaceable>:65000
65000</literal></para>
<para>Mude manualmente o n&uacute;mero da porta dentro
do jogo para 65000. Se voc&ecirc; come&ccedil;ar com
um determinado n&uacute;mero de m&aacute;quinas que
voc&ecirc; deseja jogar atribua uma porta para cada
(por ex 65001, 65002, etc) e adicione uma
<literal>porta nat</literal> para cada uma.</para>
</listitem>
<listitem>
<para><application>Half Life</application></para>
<para><literal>nat port udp
<replaceable>internal</replaceable>:27005
27015</literal></para>
</listitem>
<listitem>
<para><application> PCAnywhere
8.0</application></para>
<para><literal>nat port udp
<replaceable>internal</replaceable>:5632 5632
</literal></para>
<para><literal>nat port tcp
<replaceable>internal</replaceable>:5631 5631
</literal></para>
</listitem>
<listitem>
<para><application>Quake</application></para>
<para><literal>nat port udp
<replaceable>internal</replaceable>:6112
6112</literal></para>
<para>Alternativamente, voc&ecirc; pode querer ir em
<ulink URL="www.battle.net"> www.batle.net</ulink>
para dar uma olhada no suporte de proxy do
quake.</para>
</listitem>
<listitem>
<para><application>Quake 2</application></para>
<para><literal>nat port udp
<replaceable>internal</replaceable>:27901
27901</literal></para>
<para><literal>nat port udp
<replaceable>internal</replaceable>:60021
60021</literal></para>
<para><literal>nat port udp
<replaceable>internal</replaceable>:60040
60040</literal></para>
</listitem>
<listitem>
<para><application>Red Alert</application></para>
<para><literal>nat port udp
<replaceable>internal</replaceable>:8675
8675</literal></para>
<para><literal>nat port udp
<replaceable>internal</replaceable>:5009 5009
</literal></para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="fcs-errors">
<para>O que s&atilde;o erros FCS?</para>
</question>
<answer>
<para>FCS significa <literal>F</literal>rame
<literal>C</literal>heck <literal>S</literal>equence.
Cada pacote do ppp tem um checksum anexado para
assegurar-se de que os dados que est&atilde;o sendo
recebidos sejam os dados que est&atilde;o sendo emitidos.
Se o FCS de um pacote de entrada estiver incorreto, o
pacote sera perdido e a contagem do HDLC FCS &eacute;
aumentada. Os valores de erro HDLC podem ser mostrados
usando o comando <literal>show hdlc</literal>.</para>
<para>Se a sua liga&ccedil;&atilde;o &eacute; ruim ou se o
driver serial esta perdendo pacotes), voc&ecirc;
ir&aacute; ver ocasionalmente erros FCS. Isto geralmente
n&atilde;o &eacute; motivo para se preocupar, embora
diminua substancialmente os protocolos de
compress&atilde;o. Se voc&ecirc; tem um modem externo,
certifique-se que seu cabo esteja protegido corretamente
de interfer&ecirc;ncias - Isso pode erradicar o
problema.</para>
<para>Se sua liga&ccedil;&atilde;o congelar assim que
voc&ecirc; conectar e vier um grande n&uacute;mero de
erros FCS, pode ser porque seu link n&atilde;o esta com o
bit 8 limpo. Certifique-se que seu modem n&atilde;o
esteja usando o controle de fluxo do software (XON/XOFF).
Se o seu datalink deve usar software de controle de fluxo,
use o comando <literal>set accmap 0x000a0000</literal>
para dizer ao ppp para ignorar os caracteres
<literal>^Q</literal> e <literal>^S</literal>.</para>
<para>Uma outra raz&atilde;o para estar vendo muitos erros
FCS pode ser que a extremidade remota parou de comunicar
com o <acronym>PPP</acronym>. Voc&ecirc; pode querer
habilitar registros <literal>async</literal> neste ponto
para determinar se os dados entrantes s&atilde;o realmente
um alerta de in&iacute;cio de sess&atilde;o do prompt da
shell. Se voc&ecirc; tiver um prompt shell na extremidade
remota, &eacute; poss&iacute;vel terminar o &man.ppp.8; sem
deixar cair a linha usando o comando <literal>close
lcp</literal> (o comando <literal>term</literal>
ir&aacute; reconectar voc&ecirc; shell da m&aacute;quina
remota). Se nada em seus logs indicar o porque de sua
liga&ccedil;&atilde;o ter sido terminada, voc&ecirc; pode
perguntar ao administrador remoto (do seu provedor?)
porque a sess&atilde;o foi terminada.</para>
</answer>
</qandaentry>
<qandaentry id=PPPoEwithNAT>
<question id="macos-win98-pppoe-freeze">
<para>Por que a conex&atilde;o do MacOS e Windows98 travam
ao rodar o PPPoE no gateway?</para>
</question>
<answer>
<para>Agradecimentos a Michael Wozniak
<email>mwozniak@netcom.ca</email> por descobrir o
problema, e a Dan Flemming
<email>danflemming@mac.com</email> pela
solu&ccedil;&atilde;o do Mac:</para>
<para>Isto &eacute; devido ao que &eacute; chamado de
roteador <quote>Buraco Negro</quote> (<foreignphrase>Black
Hole</foreignphrase>). 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
&eacute; de 1500) <emphasis>e</emphasis> tenha o
<quote>n&atilde;o fragmento</quote> do bit ajustado
(default do TCP) e o roteador Telco n&atilde;o esta
enviando ICMP <quote>deve ser fragmentado</quote> de volta
ao sitio www que voc&ecirc; esta tentando carregar.
(Alternativamente o roteador est&aacute; enviando pacotes
ICMP corretamente, mas o firewall no sitio www esta
deixando perd&ecirc;-los). Quando o servidor www esta
enviando seus frames que n&atilde;o cabem no pipe do PPPoE
o roteador Telco deixa-os perder e sua p&aacute;gina
n&atilde;o &eacute; carregada (algumas p&aacute;ginas
gr&aacute;ficas carregam porque s&atilde;o menores que um
MSS). Esta parece ser a configura&ccedil;&atilde;o
default da maioria dos Telco PPPoE (somente eles sabem
como programar o roteador).</para>
<para>Um maneira de fixar isso &eacute; usando o regedit em
sua seu Windows 95/98 e adicionar a seguinte entrada de
registro:</para>
<programlisting>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTU</programlisting>
<para>Deve ser uma string com um valor <quote>1436</quote>,
porque h&aacute; relatos de que alguns roteadores ADSL
s&atilde;o incapazes de tratar os pacotes maiores que
esse. Esta chave de registro foi mudada para
<literal>Tcpip\Parameters\Interfaces\<replaceable>ID-para-o-adptador</replaceable>\MTU</literal>
no windows 2000 e tornou-se um DWORD.</para>
<para>Consulte os documentos da Microsoft <ulink
url="http://support.microsoft.com/support/kb/articles/Q158/4/74.asp">
Q158474 - Windows TCPIP Entradas de registroi</ulink> e
<ulink
url="http://support.microsoft.com/support/kb/articles/Q120/6/42.asp">
Q120642 - TCPIP &amp; NBT Parametros de
configura&ccedil;&atilde;o para Windows NT</ulink> para
maiores informacoes sobre altera&ccedil;&otilde;es de MTU
no Windows para funcionar com um roteador NAT.</para>
<para>Uma outra possibilidade do regedit sob o Windows 2000
&eacute; setar
<literal>Tcpip\Parameters\Interfaces\<replaceable>ID-para-o-adaptador</replaceable>\EnablePMTUBHDetect</literal>
DWORD para 1 como mencionado no documento original da
Microsoft 120642 comentado acima.</para>
<para>Infelizmente o MacOS n&atilde;o oferece uma
mudan&ccedil;a TCP/IP nas configura&ccedil;&otilde;es da
interface. Entretanto, h&aacute; um software comercial
dispon&iacute;vel, o OTAdvancedTuner (OT para
OpenTransport, a pilha TCP/IP do MacOS) feito pela <ulink
URL="http://www.softworks.com/"> Sustainable
Softworks</ulink>, ele permite aos usu&aacute;rios
customizar as configura&ccedil;&otilde;es TCP/IP. Os
usu&aacute;rios de NAT do MacOS devem selecionar o
<literal>ip_interface_MTU</literal> no menu drop-down,
colocar <literal>1450</literal> em vez de
<literal>1500</literal>, clique na caixa pr&oacute;ximo ao
<literal>Save as Auto Configure</literal>, e clique em
<literal>Make Active</literal>.</para>
<para>Vers&otilde;es mais recentes do &man.ppp.8; (2.3 ou
mais recente) tem o comando <command>enable
tcpmssfixup</command> que ir&aacute; automaticamente
ajustar um valor apropriado ao MSS. Esta facilidade
&eacute; habilitada por default. Se voc&ecirc; for
apaixonado pela vers&atilde;o mais antiga do &man.ppp.8;
voc&ecirc; pode querer dar uma olhada no
<literal>port</literal> do
<application>tcpmssd</application>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="desperation">
<para>Nada disso me ajudou - Eu estou desesperado! O que eu
posso fazer?</para>
</question>
<answer>
<para>Se tudo falhar, envie o m&aacute;ximo de
informac&otilde;es que voc&ecirc; puder, incluindo seus
arquivos de configura&ccedil;&atilde;o, a forma como
est&aacute; iniciando o &man.ppp.8;, os trechos relevantes
de seu arquivo de log e a sa&iacute;da do comando
<command>netstat -rn</command> (antes e depois de
conectado) para a lista &a.questions; ou para o grupo de
not&iacute;cias <ulink
URL="news:comp.unix.bsd.freebsd.misc">comp.unix.bsd.freebsd.misc</ulink>.
Algu&eacute;m deve ajudar a solucionar seu
problema.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="serial">
<title>Comunica&ccedil;&otilde;es Seriais</title>
<para>Essa se&ccedil;&atilde;o cobre as perguntas mais comuns
sobre comunica&ccedil;&atilde;o serial com o FreeBSD. PPP e
SLIP s&atilde;o abordados na se&ccedil;&atilde;o
<xref linkend="networking" remap="Networking">.</para>
<qandaset>
<qandaentry>
<question id="found-serial">
<para>Como eu posso dizer se o FreeBSD encontrou minhas
portas seriais?</para>
</question>
<answer>
<para>Assim que o kernel do FreeBSD &eacute; carregado, ele
ir&aacute; 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 ent&atilde;o executar o seguinte comando:</para>
<screen>&prompt.user; <userinput>dmesg | grep sio</userinput></screen>
<para>assim que o sistema estiver em funcionamento e
execu&ccedil;&atilde;o.</para>
<para>Aqui est&atilde;o alguns exemplos dos resultados do
comando executado acima:</para>
<programlisting>sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A</programlisting>
<para>Eles mostram duas portas seriais. A primeira
est&aacute; na irq 4, est&aacute; usando o endere&ccedil;o
de porta <literal>0x3f8</literal>, e tem um chip modelo
UART 16550A. O segundo utiliza o mesmo tipo de chip mas
est&aacute; na irq 3 e seu endere&ccedil;o de porta
&eacute; <literal>0x2f8</literal>. Modems internos
s&atilde;o tratados como se fossem portas seriais --
exceto que sempre tem um modem <quote>conectado</quote>
&agrave; porta.</para>
<para>O <foreignphrase>kernel</foreignphrase>
<filename>GENERIC</filename> tem suporte para duas portas
seriais utilizando os mesmos irqs e
configura&ccedil;&otilde;es de endere&ccedil;os de portas
do exemplo acima. Se tais configura&ccedil;&otilde;es
n&atilde;o est&atilde;o certas para seu sistema, ou se
voc&ecirc; adicionou placas de modem ou tem mais portas
seriais para o qual o
<foreignphrase>kernel</foreignphrase> foi configurado,
apenas recompile seu
<foreignphrase>kernel</foreignphrase>. Veja a a
se&ccedil;&atilde;o de <link
linkend="make-kernel">compila&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase></link> para obter
mais detalhes.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="found-modem">
<para>Como eu posso dizer se o FreeBSD encontrou minha placa
de fax modem?</para>
</question>
<answer>
<para>Refira-se &agrave; resposta da pergunta
anterior.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="missing-tty0X">
<para>Eu acabei de atualizar para a vers&atilde;o 2.0.5 e as
minhas
<devicename>tty0<replaceable>X</replaceable></devicename>
desapareceram! Como eu resolvo esse problema?</para>
</question>
<answer>
<para>N&atilde;o se preocupe, eles foram inclu&iacute;dos
com os dispositivos
<devicename>ttyd<replaceable>X</replaceable></devicename>.
No entanto, voc&ecirc; deve mudar todos os arquivos da
configura&ccedil;&atilde;o antiga que voc&ecirc;
tiver.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="access-serial-ports">
<para>Como eu acesso as portas seriais no FreeBSD?</para>
</question>
<answer>
<para>A terceira porta serial, <devicename>sio2</devicename>
(veja &man.sio.4;, conhecida como COM3 no DOS),
est&aacute; na <devicename>/dev/cuaa2</devicename> para os
dispositivos dial-out, e na
<devicename>/dev/ttyd2</devicename> para os dispositivos
dial-in. Qual &eacute; a diferen&ccedil;a entre essas
duas classes de dispositivos?</para>
<para>Voc&ecirc; utiliza
<devicename>ttyd<replaceable>X</replaceable></devicename>
para dial-ins. Quando o
<devicename>/dev/ttyd<replaceable>X</replaceable></devicename>
se abre no modo de bloqueio, um processo ir&aacute;
aguardar que o dispositivo
<devicename>cuaa<replaceable>X</replaceable></devicename>
correspondente torne-se inativo, e aguarda a
detec&ccedil;&atilde;o do <foreignphrase>carrier
detect</foreignphrase> da linha para ativar-se. Quando
a
<devicename>cuaa<replaceable>X</replaceable></devicename>
se abre, ela deixa claro que a porta n&atilde;o esta ainda
em uso pelo dispositivo
<devicename>ttyd<replaceable>X</replaceable></devicename>.
Se a porta estiver dispon&iacute;vel, ela &eacute;
<quote>roubada</quote> do dispositivo
<devicename>ttyd<replaceable>X</replaceable></devicename>.
Al&eacute;m disso, o dispositivo
<devicename>cuaa<replaceable>X</replaceable></devicename>
n&atilde;o se importa com o carrier detect. Com esse
esquema de auto-resposta do modem, voc&ecirc; pode ter
usu&aacute;rios remotos conectando e voc&ecirc; pode ainda
discar para fora com o mesmo modem, que o sistema
ir&aacute; cuidar de todos os conflitos.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="enable-multiport-serial">
<para>Como eu habilito suporte para uma placa serial de
m&uacute;ltiplas portas?</para>
</question>
<answer>
<para>Novamente, a se&ccedil;&atilde;o de
configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase> prov&ecirc;
informa&ccedil;&otilde;es sobre a
configura&ccedil;&atilde;o de seu
<foreignphrase>kernel</foreignphrase>. Para uma placa
serial de m&uacute;ltiplas portas, coloque uma linha
&man.sio.4; para cada porta serial da placa, no arquivo de
configura&ccedil;&atilde;o do
<foreignphrase>kernel</foreignphrase>. Mas coloque o irq
e as espeficica&ccedil;&otilde;es do vetor apenas em uma
das entradas. Todas as portas da placa devem compartilhar
uma irq. Para consist&ecirc;ncia, utilize a &uacute;ltima
porta serial para especificar a irq. Al&eacute;m disso,
especifique a op&ccedil;&atilde;o
<literal>COM_MULTIPORT</literal>.</para>
<para>O exemplo seguinte &eacute; para uma placa serial AST
4-portas na irq 7:</para>
<programlisting>options "COM_MULTIPORT"
device sio4 at isa? port 0x2a0 tty flags 0x781
device sio5 at isa? port 0x2a8 tty flags 0x781
device sio6 at isa? port 0x2b0 tty flags 0x781
device sio7 at isa? port 0x2b8 tty flags 0x781 irq 7 vector siointr</programlisting>
<para>As flags indicam que a porta master tem um
<quote>minor number</quote> 7 (<literal>0x700</literal>),
diagn&oacute;sticos habilitados durante o escaneamento
(<literal>0x080</literal>), e todas as portas compartilham
uma irq (<literal>0x001</literal>).</para>
</answer>
</qandaentry>
<qandaentry>
<question id="multiport-serial-share-irq">
<para>O FreeBSD pode trabalhar com placas seriais de
m&uacute;ltiplas portas compartilhando irqs?</para>
</question>
<answer>
<para>Ainda n&atilde;o. Voc&ecirc; dever&aacute; utilizar
uma irq diferente para cada placa.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="default-serial-params">
<para>Posso definir os par&acirc;metros seriais
padr&atilde;o para uma porta?</para>
</question>
<answer>
<para>O
<devicename>ttyd<replaceable>X</replaceable></devicename>
(<devicename>cuaa<replaceable>X</replaceable></devicename>)
&eacute; um dispositivo regular que voc&ecirc; vai querer
abrir para suas aplica&ccedil;&otilde;es. Quando um
processo abre um dispositivo, ele tem um conjunto
padr&atilde;o de configura&ccedil;&otilde;es de terminais
de E/S. Voc&ecirc; pode ver essas
configura&ccedil;&otilde;es com o comando</para>
<screen>&prompt.root; <userinput>stty -a -f /dev/ttyd1</userinput></screen>
<para>Ao alterar as configura&ccedil;&otilde;es para esse
dispositivo, elas se manter&atilde;o em efeito at&eacute;
que o dispositivo seja fechado. Quando ele for reaberto,
vai para o estado padr&atilde;o. Para fazer
mudan&ccedil;as nos ajustes padr&atilde;o, pode-se abrir e
ajustar as configura&ccedil;&otilde;es do <quote>estado
inicial</quote> do dispositivo. Por exemplo, para ligar
o modo <acronym>CLOCAL</acronym>, 8 bits, e o controle de
fluxo <acronym>XON/XOFF</acronym> padr&atilde;o para a
ttyd5, fa&ccedil;a:</para>
<screen>&prompt.root; <userinput>stty -f /dev/ttyid5 clocal cs8 ixon ixoff</userinput></screen>
<para>Um bom lugar para fazer isso &eacute; no
<filename>/etc/rc.serial</filename>. Agora, uma
aplica&ccedil;&atilde;o ter&aacute; estas
configura&ccedil;&otilde;es por padr&atilde;o quando abrir
o <filename>ttyd5</filename>. No entanto, pode-se ainda
modificar estas configura&ccedil;&otilde;es a seu
gosto.</para>
<para>Voc&ecirc; pode prevenir certas
configura&ccedil;&otilde;es de serem modificadas por uma
aplica&ccedil;&atilde;o fazendo ajustes no dispositivo de
<quote>lock state</quote>. Por exemplo, para travar a
velocidade do <devicename>ttyd5</devicename> em 57600 bps,
fa&ccedil;a:</para>
<screen>&prompt.root; <userinput>stty -f /dev/ttyld5 57600</userinput></screen>
<para>Agora, uma aplica&ccedil;&atilde;o, ao abrir o
<devicename>ttyd5</devicename>, se tentar modificar a
velocidade da porta, ficar&aacute; travada a 57600
bps.</para>
<para>Naturalmente voc&ecirc; deve garantir que os
dispositivos de estado inicial e o estado de trava
(<literal>lock</literal>) tenham permiss&atilde;o de
escrita apenas para o <username>root</username>. O script
&man.MAKEDEV.8; <emphasis>N&Atilde;O</emphasis> faz isso
quando ele cria as entradas de dispositivos.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="enable-dialup">
<para>Como eu habilito logins dial-up no meu modem?</para>
</question>
<answer>
<para>Ent&atilde;o voc&ecirc; quer tornar-se um provedor de
servi&ccedil;os internet, n&atilde;o &eacute;? Primeiro,
voc&ecirc; precisa de um ou mais modems que auto-respondam
&agrave;s chamadas. Seu modem precisa confirmar o
<quote>carrier detect</quote> quando ele for detectado e
n&atilde;o faz&ecirc;-lo todo o tempo. Ele
precisar&aacute; desligar o telefone e resetar a si mesmo
quando a linha <acronym>DTR</acronym> (Data Terminal
Ready) alternar de ligado para desligado. Ele
provavelmente deve utilizar o controle de fluxo
<filename>RTS/CTS</filename> ou nenhum controle local de
fluxo. Finalmente, ele deve utilizar uma velocidade
constante entre o computador e si mesmo, mas (para ser
simp&aacute;tico com seus usu&aacute;rios) ele deve
negociar uma velocidade entre si mesmo e o modem
remoto.</para>
<para>Para muitos modems compat&iacute;veis com o conjunto
de comandos do Hayes este comando criar&aacute; estas
configura&ccedil;&otilde;es e as armazenar&aacute; na
mem&oacute;ria n&atilde;o vol&aacute;til:</para>
<programlisting>AT &amp;C1 &amp;D3 &amp;K3 &amp;Q6 S0=1 &amp;W</programlisting>
<para>Veja a se&ccedil;&atilde;o <link linkend="direct-at">
enviando comandos AT</link> abaixo para mais
informa&ccedil;&otilde;es sobre como fazer estas
configura&ccedil;&otilde;es sem o aux&iacute;lio de um
programa de terminal MS-DOS.</para>
<para>Depois, fa&ccedil;a uma entrada em
<filename>/etc/ttys</filename> (veja &man.ttys.5;) para o
modem. Este arquivo lista todas as portas nas quais o
sistema ir&aacute; aguardar pelos logins. Adicione uma
parecida com essa:</para>
<programlisting>ttyd1 "/usr/libexec/getty std.57600" dialup on insecure</programlisting>
<para>Esta linha indica que a segunda porta serial
(<devicename>/dev/ttyd1</devicename>) tem um modem
conectado e rodando a 57600 bps e sem paridade
(<literal>std.57600</literal>, que vem do arquivo
<filename>/etc/gettytab</filename>, veja
&man.gettytab.5;). O tipo de terminal para esta porta
&eacute; <literal>dialup</literal>. A porta esta
<literal>ligada</literal> e &eacute;
<literal>insegura</literal> - quer dizer que o login do
usu&aacute;rio <username>root</username> n&atilde;o
&eacute; permitido. Para portas dialin como esta,
utiliza-se a entrada
<devicename>ttyd<replaceable>X</replaceable></devicename></para>
<para>&Eacute; uma pr&aacute;tica comum utilizar
<literal>dialup</literal> como o tipo do terminal. Muitos
usu&aacute;rios configuram um
<foreignphrase>prompt</foreignphrase> para seus arquivos
<filename>.profile</filename> ou
<filename>.login</filename> para o tipo de terminal
existente se o tipo iniciante &eacute; dialup. O exemplo
mostra a porta como insegura. Para tornar-se
<username>root</username> nesta porta, voc&ecirc; tem que
logar-se como um usu&aacute;rio regular, e ent&atilde;o
&man.su.1; para tornar-se <username>root</username>. Se
voc&ecirc; usar <literal>seguro</literal>, ent&atilde;o o
<username>root</username> vai poder efetuar o login
diretamente.</para>
<para>Ap&oacute;s efetuar as opera&ccedil;&otilde;es no
<filename>/etc/ttys</filename>, voc&ecirc; precisa enviar
um sinal de <foreignphrase>hangup</foreignphrase> ou
<acronym>HUP</acronym> para o processo
&man.init.8;:</para>
<screen>&prompt.root; <userinput>kill -HUP 1</userinput></screen>
<para>Esse comando for&ccedil;ar&aacute; a releitura do
arquivo <filename>/etc/ttys</filename>. O processo init
iniciar&aacute; os processos getty em todas as portas
configuradas em <literal>on</literal> (ligadas).
Voc&ecirc; pode descobrir se seus logins est&atilde;o
dispon&iacute;veis para sua porta digitando:</para>
<screen>&prompt.user; <userinput>ps -ax | grep '[t]tyd1'</userinput></screen>
<para>Voc&ecirc; deve ver algo como:</para>
<programlisting>747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="dumb-terminal">
<para>Como eu conecto um terminal burro ao meu
FreeBSD?</para>
</question>
<answer>
<para>Se voc&ecirc; esta usando outro computador como um
terminal de seu sistema FreeBSD, consiga um cabo
<quote>null modem</quote> para ser usado entre as duas
portas seriais. Se voc&ecirc; esta utilizando um terminal
pr&oacute;prio, veja as instru&ccedil;&otilde;es que o
acompanham.</para>
<para>Ent&atilde;o, modifique o
<filename>/etc/ttys</filename> (veja &man.ttys.5;), como
acima. Por exemplo, se voc&ecirc; esta ligando um
terminal WYSE 50 &agrave; quinta porta serial, utilize uma
entrada como esta::</para>
<programlisting>ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure</programlisting>
<para>Esse exemplo mostra que a porta em
<devicename>/dev/ttyd4</devicename> tem um terminal wyse50
conectado a 38400 bps (bits por segundo) sem nenhuma
paridade (<literal>std.38400</literal> de
<filename>/etc/gettytab</filename>, veja
&man.gettytab.5;)) e o login do <username>root</username>
&eacute; permitido (<literal>seguro</literal>).</para>
</answer>
</qandaentry>
<qandaentry>
<question id="cannot-tip">
<para>Por que eu n&atilde;o posso executar o
<command>tip</command> ou o <command>cu</command>?</para>
</question>
<answer>
<para>Em seu sistema, os programas &man.tip.1; e &man.cu.1;
s&atilde;o provavelmente execut&aacute;veis somente pro
<username>uucp</username> e para o grupo
<groupname>dialer</groupname>. Voc&ecirc; pode utilizar o
grupo <groupname>dialer</groupname> para controlar quem
acessa o seu modem ou sistemas remotos. Basta adicionar
voc&ecirc; mesmo ao grupo dialer.</para>
<para>Alternativamente, voc&ecirc; pode permitir a todos no
seu sistema executarem o &man.tip.1; e o &man.cu.1;
digitando:</para>
<screen>&prompt.root; <userinput>chmod 4511 /usr/bin/cu</userinput>
&prompt.root; <userinput>chmod 4511 /usr/bin/tip</userinput></screen>
</answer>
</qandaentry>
<qandaentry>
<question id="hayes-unsupported">
<para>Meu modem modelo Hayes n&atilde;o &eacute; suportado -
o que eu posso fazer?</para>
</question>
<answer>
<para>De fato a manpage para o &man.tip.1; esta
desatualizada. H&aacute; um discador generico do Hayes
j&aacute; incorporado. Apenas insira
<literal>at=hayes</literal> em seu arquivo
<filename>/etc/remote</filename> (veja
&man.remote.5;).</para>
<para>O drive do Hayes n&atilde;o &eacute; inteligente o
bastante para reconhecer algumas das avan&ccedil;adas
caracter&iacute;sticas dos modems mais novos - mensagens
como <literal>BUSY</literal>, <literal>NO
DIALTONE</literal>, ou <literal>CONNECT 115200</literal>
estar&atilde;o apenas confundindo-o. Voc&ecirc; deve
desabilitar estas mensagens quando utilizar o &man.tip.1;
(com o comando <literal>ATX0&amp;W</literal>).</para>
<para>Al&eacute;m disso, o timeout para discagem com o
&man.tip.1; &eacute; de 60 segundos. Seu modem deve
utilizar um valor menor, sen&atilde;o o tip pensar&aacute;
que existe um problema de comunica&ccedil;&atilde;o.
Tente <literal>ATS7=45&amp;W</literal>.</para>
<para>De fato, como o &man.tip.1; n&atilde;o foi compilado
para suportar HAYES, essa funcionalidade n&atilde;o
&eacute; completamente suportada. A solu&ccedil;&atilde;o
&eacute; editar o arquivo <filename>tipconf.h</filename>
no diret&oacute;rio
<filename>/usr/src/usr.bin/tip/tip</filename>. Obviamente
voc&ecirc; precisa da distribui&ccedil;&atilde;o fonte
para fazer isso.</para>
<para>Edite a linha <literal>#define HAYES 0</literal>
alterando-a para <literal>#define HAYES 1</literal>.
Depois digite <command>make</command> e <command>make
install</command>. Tudo funcionar&aacute; bem depois
disso.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="direct-at">
<para>Como posso entrar nestes comandos AT?</para>
</question>
<answer>
<para>Fa&ccedil;a o que &eacute; chamado de uma entrada
<quote>direta</quote> no seu
<filename>/etc/remote</filename> (veja &man.remote.5;).
Por exemplo, se o seu modem est&aacute; definido na
primeira porta serial,
<devicename>/dev/cuaa0</devicename>, coloque a seguinte
linha:</para>
<programlisting>cuaa0:dv=/dev/cuaa0:br#19200:pa=none</programlisting>
<para>Utilize a taxa de velocidade mais alta que seu modem
suportar na capacidade br. Ent&atilde;o digite
<command>tip <devicename>cuaa0</devicename></command>
(veja &man.tip.1;) e voc&ecirc; estar&aacute; conectado ao
seu modem.</para>
<para>Se n&atilde;o existir nenhum
<devicename>/dev/cuaa0</devicename> no sistema,
fa&ccedil;a isso:</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>sh MAKEDEV cuaa0</userinput></screen>
<para>Ou utilize cu como <username>root</username> com o
seguinte comando:</para>
<screen>&prompt.root; <userinput>cu -l<replaceable>line</replaceable> -s<replaceable>speed</replaceable></userinput></screen>
<para>com a <replaceable>line</replaceable> sendo a porta
serial (por exemplo, <devicename>/dev/cuaa0</devicename>)
e <replaceable>speed</replaceable> sendo a velocidade (por
exemplo, <literal>57600</literal>). Quando terminar com
os comandos AT, digite <literal>~.</literal> para
sair.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="gt-failure">
<para>Porque o sinal <literal>&lt;@&gt;</literal> para a
capacidade pn n&atilde;o
funciona?</para>
</question>
<answer>
<para>O sinal <literal>&lt;@&gt;</literal> no n&uacute;mero
de telefone diz ao tip para procurar em
<filename>/etc/phones</filename> por um n&uacute;mero de
telefone. Mas o sinal <literal>&lt;@&gt;</literal>
&eacute; tamb&eacute;m um caracter especial em arquivos
como o <filename>/etc/remote</filename>. Escape dele com
um <literal>\</literal> (barra invertida):</para>
<programlisting>pn=\@</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="dial-command-line">
<para>Como eu posso discar um n&uacute;mero de telefone pela
linha de comando?</para>
</question><answer>
<para>Coloque o que &eacute; chamado de uma entrada
<quote>gen&eacute;rica</quote> no arquivo
<filename>/etc/remote</filename> (veja &man.remote.5;).
Por exemplo:</para>
<programlisting>tip115200|Disque para qualquer n&uacute;mero em 115200 bps:\
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Disque para qualquer n&uacute;mero em 57600 bps:\
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:</programlisting>
<para>Depois voc&ecirc pode fazer algo como <command>tip
-115200 5551234</command>. Se preferir o &man.cu.1; ao
inv&eacute;s do &man.tip.1;, utilize uma entrada
gen&eacute;rica:</para>
<programlisting>cu115200|Use o cu para discar qualquer n&uacute;mero em 115200bps:\
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:</programlisting>
<para>e digite <command>cu 5551234 -s
115200</command>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="set-bps">
<para>Tenho que definir a taxa de bits por segundo sempre
que fazer isso?</para>
</question>
<answer>
<para>Coloque uma entrada para <literal>tip1200</literal> ou
para <literal>cu1200</literal>, mas v&aacute; em frente e
utilize quaisquer taxas de bps (bits por segundo) que
sejam apropriadas para a capacidade br. O &man.tip.1; diz
que um bom padr&atilde;o &eacute; 1200 bps porqu&ecirc;
ele procura uma entrada <literal>tip1200</literal>. De
qualquer forma, voc&ecirc; n&atilde;o precisa utilizar
1200 bps.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="terminal-server">
<para>Como posso facilmente acessar v&aacute;rios hosts
atrav&eacute;s de um <literal>terminal
server</literal>?</para>
</question>
<answer>
<para>Ao inv&eacute;s de esperar at&eacute; a
conex&atilde;o, digitando <literal>CONNECT
<replaceable>host</replaceable></literal> sempre, use a
op&ccedil;&atilde;o <literal>cm</literal> do tip. Por
exemplo, estas entradas em
<filename>/etc/remote</filename> (veja
&man.remote.5;):</para>
<programlisting>pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:</programlisting>
<para>permitir&aacute; a voc&ecirc; digitar <command>tip
pain</command> ou <command>tip muffin</command> para se
conectar aos hosts <hostid>pain</hostid> ou
<hostid>muffin</hostid>; e <command>tip deep13</command>
para se conectar ao <literal>terminal
server</literal>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="tip-multiline">
<para>O <quote>tip</quote> pode tentar discar mais de uma
linha por vez?</para>
</question>
<answer>
<para>Normalmente esse &eacute; um problema tradicional onde
uma universidade possue v&aacute;rias linhas de modems e
v&aacute;rios milhares de estudantes tentando
us&aacute;-las...</para>
<para>Fa&ccedil;a uma entrada para sua universidade
em<filename>/etc/remote</filename> (veja &man.remote.5;) e
utilize a <literal>&lt;\@&gt;</literal> para a
caracter&iacute;stica <literal>pn</literal>:</para>
<programlisting>big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:</programlisting>
<para>Ent&atilde;o, liste os n&uacute;meros de telefones
para a universidade em <filename>/etc/phones</filename>
(veja &man.phones.5;):</para>
<programlisting>big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114</programlisting>
<para>O &man.tip.1; tentar&aacute; usar cada um na ordem
listada, e depois desistir&aacute;. Se voc&ecirc; quer
manter-se tentando, execute o &man.tip.1; em um loop
while.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="multi-controlp">
<para>Por que eu tenho que pressionar duas vezes o
<keycombo
action="simul"><keycap>CTRL</keycap><keycap>P</keycap></keycombo>
para enviar <keycombo
action="simul"><keycap>CTRL</keycap><keycap>P</keycap></keycombo>
uma &uacute;nica vez?</para>
</question>
<answer>
<para><keycombo
action="simul"><keycap>CTRL</keycap><keycap>P</keycap></keycombo>
&eacute; o padr&atilde;o para <quote>force
character</quote>, utilizado para dizer ao &man.tip.1;
que o pr&oacute;ximo caracter &eacute; um dado literal.
Voc&ecirc; pode definir o force character para qualquer
outro caracter com o escape <literal>~s</literal>, que
quer dizer <quote>defina uma vari&aacute;vel</quote>.
<para>Digite <literal>~sforce=<replaceable>single-char
</replaceable></literal> seguido de uma
<emphasis>newline</emphasis>.
<replaceable>single-charcaracter</replaceable> &eacute;
qualquer caracter &uacute;nico. Se voc&ecirc; deixar
<replaceable>single-char</replaceable>, ent&atilde;o o
<quote>force character</quote> ser&aacute; o caracter
nulo, que voc&ecirc; pode ao digitar <keycombo
action="simul"><keycap>CTRL</keycap><keycap>2</keycap></keycombo>
ou <keycombo
action="simul"><keycap>CTRL</keycap><keycap>SPACE</keycap></keycombo>.
Um valor muito bom para o
<replaceable>single-char</replaceable> &eacute; <keycombo
action="simul"><keycap>SHIFT</keycap><keycap>CTRL</keycap><keycap>6</keycap></keycombo>,
o qual eu vi sendo usado em alguns servidores de
terminais.</para>
<para>Voc&ecirc; pode ter o <quote>force character</quote>
que voc&ecirc; quiser especificando o seguinte em seu
arquivo <filename>$HOME/.tiprc</filename> o
seguinte:</para>
<programlisting>force=<replaceable>single-char</replaceable></programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="uppercase">
<para>Por que tudo o que eu digito inesperadamente
est&aacute; em CAIXA ALTA?</para>
</question>
<answer>
<para>Voc&ecirc; deve ter pressionado <keycombo
action="simul"><keycap>CTRL</keycap><keycap>A</keycap></keycombo>,
o <quote>raise character do &man.tip.1;</quote>,
especialmente projetado para pessoas com teclas
<keycap>Caps Lock</keycap> que n&atilde;o funcionam. Use
o <literal>~s</literal> como acima, e defina a
vari&aacute;vel <quote>raisechar</quote> para algo
razo&aacute;vel. De fato, voc&ecirc; pode definir isso
para o <emphasis>force character</emphasis> tamb&eacute;m,
se voc&ecirc; nunca espera utilizar ambas as
caracter&iacute;sticas.</para>
<para>Aqui est&aacute; um exemplo de arquivo
<filename>.tiprc</filename> perfeito para os
usu&aacute;rios de Emacs que precisam digitar muitos
<keycombo
action="simul"><keycap>CTRL</keycap><keycap>2</keycap></keycombo>
e <keycombo
action="simul"><keycap>CTRL</keycap><keycap>A</keycap></keycombo>:</para>
<programlisting>force=^^
raisechar=^^</programlisting>
<para>O ^^ &eacute; obtido com <keycombo
action="simul"><keycap>SHIFT</keycap><keycap>CTRL</keycap><keycap>6</keycap></keycombo>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="tip-filetransfer">
<para>Como eu posso transferir arquivos com o
<command>tip</command>?</para>
</question>
<answer>
<para>Se voc&ecirc; est&aacute; conversando com outro
sistema Unix, voc&ecirc; pode enviar e receber arquivos
com <literal>~p</literal> (put) e com
<literal>~t</literal> (take). Estes comandos executam o
&man.cat.1; e o &man.echo.1; no sistema remoto para
aceitar e enviar arquivos. Sua sintaxe &eacute;:</para>
<programlisting>~p &lt;local-file&gt; [&lt;remote-file&gt;]
~t &lt;remote-file&gt; [&lt;local-file&gt;]</programlisting>
<para>N&atilde;o h&aacute; nenhuma checagem de erro,
ent&atilde;o voc&ecirc; provavelmente deve usar um outro
protocolo, como o zmodem</para>
</answer>
</qandaentry>
<qandaentry>
<question id="zmodem-tip">
<para>Como eu posso executar o zmodem com o
<application>tip</application>?</para>
</question>
<answer>
<para>Primeiro, instale um dos programas zmodem da
cole&ccedil;&atilde;o de <literal>ports</literal> (tais
como <application>lrzsz</application> ou o
<application>rzsz</application>).</para>
<para>Para receber arquivos, inicie o programa de envio no
destino remoto. Ent&atilde;o, pressione ENTER e digite
<literal>~C rz</literal> (ou <literal>~C lrz</literal>
caso tenha instalado o <application>lrzsz</application>)
para iniciar o recebimento local</para>
<para>Para enviar arquivos, inicie o programa do lado
remoto. Depois, aperte ENTER e digite <literal>~C sz
<replaceable>arquivos</replaceable></literal> (ou
<literal>~C lsz
<replaceable>arquivos</replaceable></literal>) para
envia-los ao sistema remoto.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="cannot-find-serial">
<para>O FreeBSD pode vir a n&atilde;o encontrar minhas
portas seriais, mesmo quando as
configura&ccedil;&otilde;es est&atilde;o corretas?</para>
</question>
<answer>
<para>Sim, se sua placa-m&atilde;e for Acer UARTS. Elas
n&atilde;o escaneiam corretamente o barramento serial,
n&atilde;o permitindo que o FreeBSD encontre as Serial
Input/Output (sio) da placa. O patch dispon&iacute;vel em
<ulink
URL="http://www.lemis.com/serial-port-patch.html">www.lemis.com</ulink>
pode corrigir esse problema.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="misc">
<title>Perguntas Variadas</title>
<qandaset>
<qandaentry>
<question id="more-swap">
<para>O FreeBSD usa bem mais espa&ccedil;o de swap do que o
Linux. Por qu&ecirc;?</para>
</question>
<answer>
<para>S&oacute; parece que o FreeBSD usa mais swap do que o
Linux. Na verdade n&atilde;o usa. A principal
diferen&ccedil;a entre o FreeBSD e o Linux nesse quesito
&eacute; que o FreeBSD vai sempre remanejar - de forma
pr&oacute;-ativa - toda mem&oacute;ria que estiver
completamente inativa e subutilizada, para o swap, dessa
forma garantindo sempre mais mem&oacute;ria principal
dispon&iacute;vel para utiliza&ccedil;&atilde;o. O Linux
tende a remanejar p&aacute;ginas de mem&oacute;ria para o
swap apenas como &uacute;ltima alternativa. A
utiliza&ccedil;&atilde;o mais acentuada do swap &eacute;
balanceada pela utiliza&ccedil;&atilde;o mais eficiente da
mem&oacute;ria principal.</para>
<para>Note que, pelo fato do FreeBSD ser pr&oacute;ativo
nesse quesito, ele n&atilde;o decide arbitrariamente fazer
swap das p&aacute;ginas quando o sistema est&aacute; de
fato inativo. Portanto voc&ecirc; n&atilde;o corre o
risco de encontrar todo seu sistema despaginado pela
manh&atilde;, depois de uma noite inteira de
inatividade.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="top-freemem">
<para>Por que o <command>top</command> me mostra
pouqu&iacute;ssima mem&oacute;ria livre, mesmo quando eu
n&atilde;o tenho muitos programas rodando?</para>
</question>
<answer>
<para>A resposta simples &eacute; que mem&oacute;ria
principal livre &eacute; mem&oacute;ria
desperdi&ccedil;ada. Toda mem&oacute;ria que n&atilde;o
estiver ativamente alocada pelos seus programas s&atilde;o
utilizadas pelo Kernel do FreeBSD como cache de disco. Os
valores que o &man.top.1; mostra como
<literal>Inact</literal>, <literal>Cache</literal>, e
<literal>Buf</literal> s&atilde;o dados referentes ao
cache de disco, em est&aacute;gios distintos de
utiliza&ccedil;&atilde;o. Esses dados cacheados garantem
que o sistema n&atilde;o tenha que fazer acesso em um
disco local (muito mais lento que a mem&oacute;ria) para
utilizar os dados que foram acessados recentemente,
garantindo assim melhora significativa na performance
geral. Na maioria dos casos, se o &man.top.1; mostrar que
existe pouca mem&oacute;ria dispon&iacute;vel, isso
&eacute; uma boa indica&ccedil;&atilde;o, a n&atilde;o ser
que seja uma quantidade <emphasis>extremamente</emphasis>
baixa.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="aout-elf">
<para>Por que usar (alias, o que s&atilde;o) os formatos
execut&aacute;veis a.out e ELF?</para>
</question>
<answer>
<para>Para entender porque o FreeBSD usa o formato
<filename>ELF</filename>, voc&ecirc; deve primeiro saber
um pouco sobre os 3 formatos de execut&aacute;veis Unix
<quote>dominantes</quote> atualmente:</para>
<note>
<para>At&eacute; a vers&atilde;o 3.x o FreeBSD usava o
formato a.out.</para>
</note>
<itemizedlist>
<listitem>
<para>&man.a.out.5;</para>
<para>O mais antigo e <quote>classico</quote>formato de
objetos Unix. Ele usa um cabe&ccedil;alho curto e
compacto, com um <quote>magic number</quote> no
in&iacute;cio que &eacute; frequentemente utilizado
para identificar seu formato (mais detalhes veja
&man.a.out.5;). Ele cont&eacute;m tr&ecirc;s segmentos
a serem carregados: .text, .data, e .bss acrescidos de
uma tabela de s&iacute;mbolos e uma tabela de
caractereres adicionais.</para>
</listitem>
<listitem>
<para><acronym>COFF</acronym></para>
<para>O formato de objetos SVR3. Seu cabe&ccedil;alho
se consiste agora em uma tabela de
se&ccedil;&otilde;es, dessa forma garantindo que
voc&ecirc; tenha outras se&ccedil;&otilde;es
al&eacute;m de .text, .data, e .bss.</para>
</listitem>
<listitem>
<para><acronym>ELF</acronym></para>
<para>O sucessor do <acronym>COFF</acronym>,
atribu&iacute;do de M&uacute;ltiplas
se&ccedil;&otilde;es e valores de 32-bit ou 64-bit.
Um de seus principais inconvenientes: O formato
<acronym>ELF</acronym> foi originalmente desenvolvido
presumindo-se que existiria apenas um &uacute;nico ABI
por arquitetura. A presun&ccedil;&atilde;o &eacute;
incorreta, e nem mesmo em rela&ccedil;&atilde;o ao
mundo comercial do SYSV (onde encontramos ao menos
tr&ecirc;s ABIs distintas: SVR4, Solaris, SCO) isso
acontece.</para>
<para>O FreeBSD tenta se virar com esse problema com um
utilit&aacute;rio que <emphasis>identifica</emphasis>
um execut&aacute;vel <acronym>ELF</acronym>
relacionando-o ao ABI com o qual ele &eacute;
compat&iacute;vel. Veja a p&aacute;gina de manual do
&man.brandelf.1; para maiores
informa&ccedil;&otilde;es.</para>
</listitem>
</itemizedlist>
<para>O FreeBSD vem de tradi&ccedil;&atilde;o
<quote>cl&aacute;ssica</quote> e por isso sempre usou o
formado &man.a.out.5 que &eacute; uma tecnologia que foi
experimentada e aprovada por v&aacute;rias
gera&ccedil;&otilde;es de sistemas BSD. Apesar de,
h&aacute; algum tempo tamb&eacute;m ser poss&iacute;vel
para o FreeBSD trabalhar nativamente com bin&aacute;rios
<acronym>ELF</acronym> (e tamb&eacute;m
<foreignphrase>kernels</foreignphrase>), o FreeBSD
inicialmente resistiu &agrave;
<quote>press&atilde;o</quote> em assumir o
<acronym>ELF</acronym> como formato padr&atilde;o. Por
qu&ecirc;? Bem, quando o campo do Linux resolveu fazer
sua dolorosa transi&ccedil;&atilde;o para o formato
<acronym>ELF</acronym>, n&atilde;o sobrou muito para ser
aproveitado dos formatos <filename>a.out</filename>
especialmente por causa das limita&ccedil;&otilde;es de
tabelas que podiam ser utilizadas em seus
cabe&ccedil;alhos, e isso tornou o desenvolvimento de
bibliotecas compartilhadas extremamente &aacute;rduo para
fabricantes e desenvolvedores em geral. Depois disso, as
ferramentas <acronym>ELF</acronym> come&ccedil;aram
&agrave; oferecer solu&ccedil;&otilde;es para o
compartilhamento de bibliotecas, solu&ccedil;&otilde;es
que fossem extremamente satisfat&oacute;rias, e a
migra&ccedil;&atilde;o, apesar dos custos
necess&aacute;rios que a envolvia, foi aceita, e a
transi&ccedil;&atilde;o para <acronym>ELF</acronym> passou
a ser o <quote>caminho &agrave; ser
seguido</quote>.</para>
<para>No caso do FreeBSD, o nosso mecanismo de bibliotecas
compartilhadas tem uma base mais pr&oacute;xima do estilo
do <application>SunOS</application>, da Sun, e &eacute;
extremamente f&aacute;cil de ser utilizado. Contudo,
&agrave; partir da s&eacute;rie 3.0, o FreeBSD
oficialmente adotou o formato de bin&aacute;rios
<acronym>ELF</acronym> como padr&atilde;o. Apesar do
formato <filename>a.out</filename> sempre ter servido
muito bem &agrave;s nossas necessidades, o pessoal da GNU,
autores de algumas das ferramentas de
compila&ccedil;&atilde;o que n&oacute;s usamos,
simplesmente deixaram de suportar o formato
<filename>a.out</filename>. Tal fato nos for&ccedil;ou
&agrave; manter vers&otilde;es distintas do compilador e
do linkador, e nos permitiriam usufruir dos
esfor&ccedil;os que n&oacute;s ach&aacute;ssemos
interessantes nos desenvolvimentos GNU. Finalmente, a
demanda pelo ISO-C++, not&aacute;veis compiladores e
descompiladores, tamb&eacute;m contribuiram para uma
ado&ccedil;&atilde;o nativa dos bin&aacute;rios
<acronym>ELF</acronym> nas vers&otilde;es futuras do
FreeBSD.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="binary-formats">
<para>Certo, mas por que existem tantos formatos
diferentes?</para>
</question>
<answer>
<para>De volta &agrave;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 servi&ccedil;o de
representar o formato bin&aacute;rio 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.</para>
<para>Ent&atilde;o, algum engenheiro de hardware brilhante,
decidiu que se ele pudesse for&ccedil;ar o software
&agrave; dar conta de algumas coisinhas, alguns
truquezinhos, ele poderia ent&atilde;o passar por cima de
algumas restri&ccedil;&otilde;es 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
&eacute; conhecido como RISC), a
<filename>a.out</filename> n&atilde;o se encaixava muito
bem em suas fun&ccedil;&otilde;es, e ent&atilde;o muitos
formatos foram desenvolvidos afim de obter melhor
performance desse hardware, que a simples
<filename>a.out</filename> n&atilde;o podia comportar.
Coisas como <acronym>COFF</acronym>,
<acronym>ECOFF</acronym> e outras ainda mais obscuras
foram inventadas, e todas suas limita&ccedil;&otilde;es
foram exploradas, at&eacute; que se resultasse o formato
<acronym>ELF</acronym>.
<para>Em adi&ccedil;&atilde;o, o tamanho dos programas
passou a crescer, e os discos (assim como a mem&oacute;ria
f&iacute;sica) ainda eram relativamente pequenos,
ent&atilde;o nasceu o conceito de compartilhamento de
bibliotecas. O sistema de Mem&oacute;ria Virtual (VM)
tamb&eacute;m se tornou mais sofisticado. Cada um desses
avan&ccedil;os eram feitos utilizando-se o formato
<filename>a.out</filename>, e o seu uso crescia mais e
mais com cada nova caracter&iacute;stica. Depois, as
pessoas come&ccedil;aram a querer que as coisas fossem
din&acirc;micamente carregadas em tempo de
execuss&atilde;o, ou ent&atilde;o queriam poder descartar
algum trecho de seus programas depois que seu
c&oacute;digo de inicializa&ccedil;&atilde;o tivesse sido
executado, de modo &agrave; economizar mem&oacute;ria
principal ou mesmo Swap. As linguagens de
programa&ccedil;&atilde;o se tornaram mais sofisticadas,
ent&atilde;o as pessoas queriam c&oacute;digos com
chamadas autom&aacute;ticas antes do programa principal
(main). Come&ccedil;ou-se ent&atilde;o a hackear a
<filename>a.out</filename> de forma que ela pudesse suprir
essas necessidades. E de fato por algum tempo ela as
supriu. Depois a <filename>a.out</filename> passou a
n&atilde;o suportar mais determinados problemas sem
resultar em uma sobrecarga ou complexidade exagerada de
c&oacute;digo. Por outro lado, o formato
<acronym>ELF</acronym> resolvia a maioria desses
problemas, mas seria doloroso demais simplesmente
abandonar um formato e sistema que, basicamente
funcionavam bem. Ent&atilde;o o formato
<acronym>ELF</acronym> teve que esperar at&eacute; que
fosse ainda mais doloroso continuar com o formato
<filename>a.out</filename> do que migrar para
<acronym>ELF</acronym>.</para>
<para>Contudo, com o passar do tempo, as ferramentas de
desenvolvimento &agrave;s quais o FreeBSD derivava suas
pr&oacute;prias ferramentas de desenvolvimento
(especialmente o assembler e o carregador - loader) se
envolveram em duas &aacute;rvores paralelas. A
&aacute;rvore do FreeBSD adicionou in&uacute;meras
bibliotecas compartilhadas, e arrumou in&uacute;meros
bugs. E a rapaziada do GNU, que originalmente escreviam
algumas dessas ferramentas, passaram a rescreve-las e
adicionaram suporte para compila&ccedil;&atilde;o
derivada, ado&ccedil;&otilde;es de formatos diferentes,
etc. Depois pensou-se em desenvolver um formato derivado,
visando o FreeBSD, mas n&atilde;o obteve-se sorte o
bastante, especialmente porque os fontes antigos do
&quot;ld&quot; do FreeBSD n&atilde;o davam conta da
tarefa. A corrente de novas ferramentas GNU (as chamadas
binutils) agora suportam compila&ccedil;&atilde;o
derivada, formato <acronym>ELF</acronym>, bibliotecas
compartilhadas, extens&otilde;es de C++, etc, etc. Em
adi&ccedil;&atilde;o ainda, muitos fabricantes passaram
&agrave; lan&ccedil;ar bin&aacute;rios
<acronym>ELF</acronym>, e ent&atilde;o, por que continuar
nos chateando com o formato <filename>a.out</filename>? A
<filename>a.out</filename> &eacute; um cavalo velho e
muito cansado, que j&aacute; provou ser extremamente
&uacute;til no passado, mas agora est&aacute; na hora de
tira-lo do pasto, como recompensa por seus longos e
fi&eacute;is anos de servi&ccedil;o.</para>
<para>O formato <acronym>ELF</acronym> &eacute; mais
expressivo do que o <filename>a.out</filename>, e vai
permitir muito mais extensibilidade &agrave; base do
sistema. As ferramentas <acronym>ELF</acronym> s&atilde;o
mantidas de forma mais confi&aacute;vel, e oferecem
suporte &agrave; compila&ccedil;&atilde;o derivada, o que
&eacute; importante para muita gente. O formato
<acronym>ELF</acronym> &eacute; um pouco mais lento do que
o formato <filename>a.out</filename>, mas &eacute; quase
imposs&iacute;vel comparar ambos, existem in&uacute;meros
detalhes que os fazem diferentes, desde o mapeamento de
p&aacute;ginas de mem&oacute;ria, at&eacute; a forma como
eles tratam o c&oacute;digo de inicializa&ccedil;&atilde;o
de um bin&aacute;rio (init code). Nenhuma dessas
quest&otilde;es &eacute; importante, mas existem
diferen&ccedil;as. Com o tempo, o suporte para o formato
<filename>a.out</filename> vai ser retirado do
<foreignphrase>kernel</foreignphrase> GENERIC, e
eventualmente ser&aacute; retirado em definitivo do
<foreignphrase>kernel</foreignphrase>, uma vez que a
necessidade de rodar programas <filename>a.out</filename>
tenham se tornado passado.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="chmod-symlinks">
<para>Por que o chmod n&atilde;o modifica as
permiss&otilde;es dos links simb&oacute;licos?</para>
</question>
<answer>
<para>Links simb&oacute;licos n&atilde;o tem
permiss&otilde;es, e por padr&atilde;o, o &man.chmod.1;
n&atilde;o vai seguir os links afim de mudar as
permiss&otilde;es do arquivo original. Portanto, se
voc&ecirc; tem um arquivo qualquer, e um link
simb&oacute;lico para esse arquivo, o seguinte comando vai
lhe servir.</para>
<screen>&prompt.user; <userinput>chmod g-w &lt;link simb&oacute;lico&gt;</userinput></screen>
<para>Contudo, as permiss&otilde;es para o arquivo original
n&atilde;o ser&atilde;o alteradas. Mas se voc&ecirc; usar
a op&ccedil;&atilde;o <option>-H</option> ou
<option>-L</option> em conjunto com <option>-R</option>,
voc&ecirc; vai poder alter&aacute;-la. Veja as
p&aacute;ginas de manuais do &man.chmod.1; e do
&man.symlink.7; para mais informa&ccedil;&otilde;es.</para>
<warning>
<para>A op&ccedil;&atilde;o <option>-R</option> resulta em
um &man.chmod.1; <acronym>RECURSIVO</acronym>. Tome
muito cuidado quando for definir diret&oacute;rios ou
links simb&oacute;licos com &man.chmod.1;. Se voc&ecirc;
quer alterar as permiss&otilde;es dentro do
diret&oacute;rio referenciado pelo symlink, ent&atilde;o
basta usar o &man.chmod.1; sem qualquer outra
op&ccedil;&atilde;o, mas com uma barra
<filename>/</filename>. Por exemplo, se
<filename>A</filename> for um link simb&oacute;lico para
o arquivo original <filename>B</filename>, ent&atilde;o
para alterar sua permiss&atilde;o basta um
simples:</para>
<screen>&prompt.user; <userinput>chmod 555 A/</userinput></screen>
<para>Com essa barra, o &man.chmod.1; vai seguir o link
simb&oacute;lico para mudar as permiss&otilde;es do
arquivo original.</para>
</warning>
</answer>
</qandaentry>
<qandaentry>
<question id="login-8char">
<para>Por que os nomes de login (ou username) s&atilde;o
restritos &agrave; 8 caracteres no FreeBSD 2.2.X e
anteriores?</para>
</question>
<answer>
<para>Voc&ecirc; pode pensar que seria bem
confort&aacute;vel simplesmente mudar o
<literal>UT_NAMESIZE</literal> e depois recompilar todo o
sistema operacional, ai tudo iria funcionar
maravilhosamente bem. Infelizmente n&atilde;o &eacute;
assim que as coisas funcionam, existem estruturas de
aplica&ccedil;&otilde;es e utilit&aacute;rios (incluindo
ferramentas do sistema) que foram codificadas utilizando
n&uacute;meros pequenos (nem sempre <literal>8</literal>
ou <literal>9</literal>, mas alguns valores mais
arbitr&aacute;rios como <literal>15</literal> e
<literal>20</literal>) em estruturas e buffers. Voc&ecirc;
n&atilde;o vai ter problemas apenas com arquivos de logs,
que ser&atilde;o inutilizados (devido ao tamanho
vari&aacute;vel dos dados gravados, quando apenas um
tamanho constante era esperado), mas vai tamb&eacute;m ter
problemas com clientes NIS de m&aacute;quinas Sun, e
potencialmente provocar outros problemas ao interagir com
outros sistemas Unix.</para>
<para>No FreeBSD 3.0 e posteriores, o tamanho m&aacute;ximo
do nome de usu&aacute;rio foi elevado para 16 caracteres,
e todas as ferramentas e trechos do c&oacute;digo
principal do sistema que poderiam apresentar problemas em
rela&ccedil;&atilde;o &agrave; isso, foram encontradas e
corrigidas. O fato dessa altera&ccedil;&atilde;o mudar
tantos fatores importantes no sistema &eacute; que,
nenhuma mudan&ccedil;a tinha sido feita at&eacute; a
vers&atilde;o 3.0.</para>
<para>Se voc&ecirc; confia completamente em suas habilitades
para procurar e corrigir esses prov&aacute;veis problemas
sozinho, ent&atilde;o basta aumentar o tamanho do nome de
usu&aacute;rio no arquivo
<filename>/usr/include/utmp.h</filename> e mudar a
UT_NAMESIZE para o valor desejado. Voc&ecirc;
tamb&eacute;m vai ter que atualizar o MAXLOGNAME no
<filename>/usr/include/sys/param.h</filename> para ficar
de acordo com a mudan&ccedil;a no UT_NAMESIZE.
Finalmente, se voc&ecirc; vai recompilar os fontes,
n&atilde;o se esque&ccedil;a que o /usr/include &eacute;
atualizado sempre. Mude ent&atilde;o os arquivos
apropriados em /usr/src(...) para garantir que voc&ecirc;
vai estar alterando sempre a fonte do problema, e
n&atilde;o apenas a inst&acirc;ncia instalada, no
sistema.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="dos-binaries">
<para>Posso rodar bin&aacute;rios do DOS sob FreeBSD?</para>
</question>
<answer>
<para>Sim, &agrave; partir da vers&atilde;o 3.0, voc&ecirc;
pode utilizar o emulador <application>doscmd</application>
da BSDI. A emula&ccedil;&atilde;o DOS desse aplicativo
foi totalmente redefinida depois da sua
integra&ccedil;&atilde;o do FreeBSD. Entre na
&a.emulation; se voc&ecirc; tem interesse em se juntar ao
grupo que se esfor&ccedil;a nessa jornada.</para>
<para>Em sistemas anteriores ao 3.0, existe um
utilit&aacute;rio n&atilde;o muito interessante, chamado
<application>pcemu</application> no
<literal>Ports</literal>. O
<application>pcemu</application> emula um 8088 e algumas
fun&ccedil;&atilde;o de BIOS que s&atilde;o o bastante
para rodar aplica&ccedil;&otilde;es DOS que sejam
textuais. Ele requer o X, sistema de interface grafica
(XFree86).</para>
</answer>
</qandaentry>
<qandaentry>
<question id="translation">
<para>O que eu preciso para traduzir um documento do FreeBSD
para a minha l&iacute;ngua nativa?</para>
</question>
<answer>
<para>Veja o <ulink
url="../fdp-primer/translations.html"><literal>FAQ</literal>
de Tradu&ccedil;&atilde;o</ulink> no
<foreignphrase>FreeBSD Documentation Project
Primer</foreignphrase>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="freebsd-mail-bounces">
<para>Por que meu e-mail para qualquer endere&ccedil;o em
FreeBSD.org sempre falha?</para>
</question>
<answer>
<para>O sistema de correio eletr&ocirc;nico do site
FreeBSD.org implementa algumas das
restri&ccedil;&otilde;es do Postfix, verificando nas
mensagens que est&atilde;o chegando, se elas est&atilde;o
sendo entregues por algum servidor mal configurado, ou se
representa algum tipo de <literal>SPAM</literal> em
potencial. As suas mensagens podem estar voltando por
algum dos seguintes motivos:</para>
<itemizedlist>
<listitem>
<para>A mensagem est&aacute; sendo enviada de um
dom&iacute;nio ou bloco de endere&ccedil;os IP
reconhecidamente utilizados para
<literal>SPAM</literal>.</para>
<para>Os servidores de correio eletr&ocirc;nico do
projeto FreeBSD rejeitam mensagens de qualquer fonte
de <literal>SPAM</literal> conhecida. Se voc&ecirc;
utiliza os servi&ccedil;os de uma empresa que costuma
fazer <literal>SPAM</literal> ou permitir que seus
clientes o fa&ccedil;am, por gentileza, mude o seu
provedor de servi&ccedil;os, para um que n&atilde;o
permite tal pr&aacute;tica.</para>
</listitem>
<listitem>
<para>O corpo da mensagem cont&eacute;m apenas
HTML.</para>
<para>Mensagens de correio eletr&ocirc;nico devem ser
enviadas apenas como texto puro. Mensagens de e-mail
n&atilde;o s&atilde;o web sites. Configure o seu
cliente de correio eletr&ocirc;nico de modo que ele
apenas envie mensagens de texto puro.</para>
</listitem>
<listitem>
<para>Os servidores da FreeBSD.org n&atilde;o conseguem
resolver o seu endere&ccedil;o IP para o nome da
esta&ccedil;&atilde;o que est&aacute; entregando a
mensagem eletr&ocirc;nica.</para>
<para>Por padr&atilde;o, ter registros de DNS reverso
&eacute; 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
servi&ccedil;os resid&ecirc;nciais (como ADSL, dialup,
cable, etc) n&atilde;o permitem que voc&ecirc; mesmo
configure o seu reverso. Nesse caso, envie sua
mensagem pelo servidor de e-mail do seu provedor de
servi&ccedil;os, ou pe&ccedil;a ao provedor que ajuste
o reverso do seu IP.</para>
</listitem>
<listitem>
<para>O nome da esta&ccedil;&atilde;o enviada no
cabe&ccedil;alho inicial EHLO/HELO, parte do protocolo
de envio SMTP n&atilde;o pode ser resolvido em um
endere&ccedil;o IP correspondente.</para>
<para>O servidor que est&aacute; tentando entregar a
mensagem deve ter o registro de nomes configurado
corretamente, de forma que o nome da
esta&ccedil;&atilde;o possa ser resolvido em um
endere&ccedil;o IP. Caso sua esta&ccedil;&atilde;o
n&atilde;o tenha um registro DNS configurado, utilize
o servidor de correio eletr&ocirc;nico do seu provedor
de servi&ccedil;os.</para>
</listitem>
<listitem>
<para>Sua mensagem teve uma identifica&ccedil;&atilde;o
que terminava com o conjunto de caracteres
<quote>localhost</quote>.</para>
<para>Alguns clientes de correio eletr&ocirc;nico geram
ID - identifica&ccedil;&otilde;es - das mensagens de
forma impr&oacute;pria. Nesse caso, o seu servidor de
correio deve redefinir o ID da mensagem, ou voc&ecirc;
deve reconfigura-lo de modo que ele gere tal
identifica&ccedil;&atilde;o de forma
aceit&aacute;vel.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="free-account">
<para>Onde eu consigo uma conta gratu&iacute;ta em um
FreeBSD?</para>
</question>
<answer>
<para>O Projeto FreeBSD n&atilde;o permite acesso
p&uacute;blico a nenhum dos seus servidores, contudo
algumas empresas oferecem acesso irrestrito &agrave;
sistemas Unix. Os pre&ccedil;os variam, e alguns
servi&ccedil;os limitados podem ser
disponibilizados.</para>
<para>A <ulink URL="http://www.arbornet.org/">Arbornet,
Inc</ulink>, tamb&eacute;m conhecida como M-Net,
prov&ecirc; acesso &agrave; 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 b&aacute;sico a uma gama completa de
softwares do FreeBSD. Contudo, o acesso &agrave; rede
&eacute; limitado aos membros e patronos da
institui&ccedil;&atilde;o, que fazem doa&ccedil;&otilde;es
&agrave; empresa, uma vez que a mesma &eacute; uma
organiza&ccedil;&atilde;o sem fins lucrativos. A M-Net
tamb&eacute;m oferece um Boletim peri&oacute;dico e Chat
interativo.</para>
<para>A <ulink URL="http://www.grex.org/">Grex</ulink>
tamb&eacute;m oferece um acesso parecido com o da M-Net,
inclusive com os mesmos servi&ccedil;os, contudo a
m&aacute;quina &eacute; uma Sun 4M e seu sistema Unix
&eacute; o SunOS. Vale pela curiosidade, e para
compara&ccedil;&atilde;o entre os sistemas.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="sup-define">
<para>O que &eacute; <command>sup</command>, e como eu uso
isso?</para>
</question>
<answer>
<para><ulink
URL="http://www.FreeBSD.org/cgi/ports.cgi?^sup">SUP</ulink>
significa Protocolo de Atualiza&ccedil;&atilde;o de
Programa (Software Update Protocol ), e foi desenvolvido
pela CMU para manter suas &aacute;rvores de
desenvolvimento sempre sincronizadas. N&oacute;s
utilizamos esse protocolo para manter alguns sites remotos
em sincronia com os nossos servidores centrais de
desenvolvimento.</para>
<para>SUP n&aacute;o &eacute; amig&aacute;vel com a banda de
tramiss&atilde;o (consome muita banda) , e por isso foi
aposentado. Atualmente recomendados que voc&ecirc;
fa&ccedil;a uso do <ulink
URL="../handbook/synching.html#CVSUP">CVSup</ulink> para
manter seus fontes atualizados.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="daemon-name">
<para>Qual o nome daquele capetinha vermelho
simp&aacute;tico?</para>
</question>
<answer>
<para>Ele n&atilde;o tem um nome, &eacute; simplesmente
chamado de <quote>the BSD daemon</quote>. Se voc&ecirc;
insiste em dar um nome &agrave; ele, por gentileza,
chame-o de <quote>beastie</quote> ;-) Note que
<quote>beastie</quote> se pronuncia
<quote>BSD</quote>.</para>
<para>Voc&ecirc; pode saber mais sobre o BSD daemon na sua
<ulink
url="http://www.mckusick.com/beastie/index.html">home
page</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="use-beastie">
<para>Posso usar a imagem do BSD daemon?</para>
</question>
<answer>
<para>Talvez. O BSD daemon &eacute; de direitos autorais de
Marshall Kirk McKusick. Voc&ecirc; deve pedir a
permiss&atilde;o do McKusick para usar a imagem do BSD
Daemon, e pedir para saber os <ulink
url="http://www.mckusick.com/beastie/mainpage/copyright.html">termos
de utiliza&ccedil;&atilde;o da figura
p&uacute;blica</ulink> do nosso querido capetinha
;-)</para>
<para>Resumindo, voc&ecirc; pode fazer uso da imagem dele,
dependendo da maneira, para uso pessoal, por exemplo. Se
os cr&eacute;ditos apropriados forem dados, tudo bem.
Para fazer uso comercial da imagem, ai sim voc&ecirc; deve
falar com o McKusick, e dar uma olhada na home page do
<ulink url="http://www.mckusick.com/beastie/index.html">
BSD Daemon</ulink> para mais detalhes..</para>
</answer>
</qandaentry>
<qandaentry>
<question id="daemon-images">
<para>Voc&ecirc;s tem algumas imagens do BSD daemon que eu
poderia usar?</para>
</question>
<answer>
<para>Voc&ecirc; vai encontrar algumas figuras em eps e Xfig
sob o diret&oacute;rio
<filename>/usr/share/examples/BSD_daemon/</filename>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="define-MFC">
<para>O que significa <acronym>MFC</acronym>?</para>
</question>
<answer>
<para>MFC &eacute; um acr&ocirc;nimo para <quote>obtido a
partir do ramo -CURRENT</quote> (<foreignphrase>Merged
From -CURRENT</foreignphrase>). &Eacute; usado nos logs
do CVS para identificar uma mudan&ccedil;a que seja
originada e migrada da s&eacute;rie de desenvolvimento
(-CURRENT) para s&eacute;rie est&aacute;vel
(-STABLE).</para>
</answer>
</qandaentry>
<qandaentry>
<question id="define-BSD">
<para>O que significa <acronym>BSD</acronym>?</para>
</question>
<answer>
<para>O significado da sigla BSD &eacute; algo, em uma
l&iacute;ngua secreta que apenas os membros podem saber.
Literalmente n&atilde;o seria poss&iacute;vel traduzir BSD
para uma l&iacute;ngua que voc&ecirc; pudesse entender,
mas poder&iacute;amos tentar explicar seu significado como
algo bem pr&oacute;ximo de <quote>Equipe de
F&oacute;rmula-1</quote>, <quote>Penguins s&atilde;o
aperitivos saborosos</quote>, e tamb&eacute;m
<quote>N&oacute;s temos mais senso de humor do que o
Linux</quote>. :-)</para>
<para>A vers&atilde;o s&eacute;ria &eacute; que BSD &eacute;
um acr&ocirc;nimo para <quote>Berkeley Software
Distribution</quote>, que &eacute; o nome que o Grupo de
Pesquisa de Ci&ecirc;ncia da Computa&ccedil;&atilde;o da
Universidade de Berkeley - Berkeley
<acronym>CSRG</acronym> (Computer Systems Research Group)
- escolheu para sua pr&oacute;pria
distribui&ccedil;&atilde;o do Unix.
</para>
</answer>
</qandaentry>
<qandaentry>
<question id="define-pola">
<para>O que significa <acronym>POLA</acronym>?</para>
</question>
<answer>
<para>&Eacute; o Princ&iacute;pio de Menor
Altera&ccedil;&atilde;o. Significa que durante o processo
de desenvolvimento do FreeBSD, toda e qualquer
modifica&ccedil;&atilde;o que seja vis&iacute;vel para o
usu&aacute;rio, deve ser menos surpreendente
poss&iacute;vel, mantendo assim uma compatibilidade
pr&eacute;via com a forma de utiliza&ccedil;&atilde;o do
sistema. Por exemplo, n&atilde;o se pode alterar
arbitr&aacute;riamente as vari&aacute;veis dos scripts de
configura&ccedil;&atilde;o do sistema, em
<filename>/etc/defaults/rc.conf</filename>, pois esse tipo
de a&ccedil;&atilde;o violaria a POLA. O desenvolvimento
do FreeBSD apenas considera POLA quando as
altera&ccedil;&otilde;es s&atilde;o vis&iacute;veis pelo
usu&aacute;rio.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="define-repocopy">
<para>O que &eacute; um repo-copy?</para>
</question>
<answer>
<para>Um repo-copy (que &eacute; uma forma breve de chamar
um <quote>repository copy</quote>) &eacute; simplesmente a
c&oacute;pia direta de arquivos em um reposit&oacute;rio
CVS.</para>
<para>Sem um repo-copy, uma altera&ccedil;&atilde;o por
parte de algum mantenedor, se tornaria uma c&oacute;pia
comum, originada via <command>cvs</command>, seguida de um
<command>rm</command> para deletar o arquivo original que
tivesse sido modificado.</para>
<para>Esse processo contudo, resulta em uma n&atilde;o
constata&ccedil;&atilde;o hist&oacute;rica do arquivo
antigo, nos novos registros de log. O Projeto FreeBSD
considera extremamente importante a
manuten&ccedil;&atilde;o desse hist&oacute;rico, e por
isso as c&oacute;pias de reposit&oacute;rio s&atilde;o
frequentemente utilizadas. Nesse processo, um dos
reposit&oacute;rios centrais vai copiar os arquivos
diretamente para outro reposit&oacute;rio, e n&atilde;o
simplesmente fazer uma sincronia com o programa
&man.cvs.1;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="bikeshed-painting">
<para>Porque eu devo me preocupar com a cor do quartinho de
bicicletas (bikeshed)?</para>
</question>
<answer>
<para>A resposta mais curta, &eacute; que voc&ecirc;
n&atilde;o deve. A resposta longa &eacute; que, s&oacute;
porque voc&ecirc; &eacute; capaz de fazer quarto para
guardar sua pr&oacute;pria bicicleta, voc&ecirc;
n&atilde;o pode fazer as outras pessoas pararem de
construir seus pr&oacute;prios quartinhos tamb&eacute;m,
simplesmente porque voc&ecirc; n&atilde;o gosta da cor que
as pessoas os pintam. Essa met&aacute;fora indica que
voc&ecirc; n&atilde;o tem que argumentar nem reclamar
sobre cada coisinha, s&oacute; porque tem conhecimento o
bastante para critica-la. Algumas pessoas dizem que a
quantidade de barulho provocada por uma
altera&ccedil;&atilde;o &eacute; inversamente proporcional
&agrave; complexidade da mudan&ccedil;a.</para>
<para>A resposta ainda mais completa, e maior, &eacute; que,
depois de muita discuss&atilde;o sobre quando o
&man.sleep.1; deveria trabalhar com argumentos de segundos
fracionados, &a.phk; enviou uma mensagem, longa, chamada
de <quote><ulink
url="http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=506636+517178+/usr/local/www/db/text/1999/freebsd-hackers/19991003.freebsd-hackers">Um
quarto de bicicleta (qualquer cor serve) em um gramado
mais verde...</ulink></quote>. As partes devidas da
mensagem est&atilde;o citadas abaixo.</para>
<blockquote>
<attribution>&a.phk; na freebsd-hackers, em 2 de Outubro
de 1999</attribution>
<para><quote>O que &eacute; isso sobre a cor do quartinho
da bicicleta?</quote> Alguns de voc&ecirc;s me
perguntaram.</para>
<para>&Eacute; uma longa hist&oacute;ria, ou melhor,
&eacute; uma antiga hist&oacute;ria, mas pode ser meio
curta na verdade. Um cara chamado C. Northcote
Parkinson escreveu um livro em meados de 1960 chamado de
<quote>A Lei de Parkinson</quote>, que continha
v&aacute;rios insights sobre as din&acirc;micas da
administra&ccedil;&atilde;o.</para>
<para>[trechos irrelevantes foram cortados]</para>
<para>Vamos deixar de falar sobre o livro em s&iacute;,
mas vamos tratar apenas um exemplo. O exemplo
espec&iacute;fico, do caso do quartinho da bicileta, tem
outro componente de vital import&acirc;ncia, que
&eacute; uma usina nuclear. Isso ilustra a &eacute;poca
que o livro foi escrito.</para>
<para>Parkinson mostra como voc&ecirc; pode fazer para
chegar em um corpo de diretores de uma empresa e
convenc&ecirc;-los a construir uma usina at&ocirc;mica
multi-milhion&aacute;ria ou at&eacute; mesmo
bilhion&aacute;ria, mas diz que se voc&ecirc; abordar os
diretores da mesma forma, tentando aprovar a
constru&ccedil;&atilde;o de um quartinho de bicicleta,
voc&ecirc; vai cair em uma discuss&atilde;o profunda, e
sem fim.</para>
<para>Parkinson explica que isso acontece porque uma usina
at&ocirc;mica &eacute; t&atilde;o vasta, t&atilde;o cara
e t&atilde;o complicada que as pessoas simplesmente
preferem n&atilde;o discutir, e mesmo que tentem
faz&ecirc;-lo, eles assumem que algu&eacute;m j&aacute;
observou todos os detalhes poss&iacute;veis antes que
tal proposta chegasse &agrave; tal ponto. Richard P.
Feunmann d&aacute; alguns exemplos interessantes, sobre
o que acontece em Los Alamos em seus livros.</para>
<para>Por outro lado, um barrac&atilde;o de bicicleta pode
ser constru&iacute;do por qualquer um, em um fim de
semana qualquer, e ainda sobraria tempo ao seu
desenvolvedor para assistir o jogo na TV. Ent&atilde;o,
n&atilde;o importa o qu&atilde;o bem preparado
voc&ecirc; esteja, algu&eacute;m vai sempre querer
aparecer diante de uma situa&ccedil;&atilde;o dessas, e
querer discutir as coisas mais pequenas
poss&iacute;veis. Na Dinamarca isso se chama
<quote>Deixar sua marquinha</quote>. Envolve
prest&iacute;gio e orgulho pessoal, envolve a
possibilidade de apontar para algum lugar (qualquer
lugar que seja) e apontar dizendo
<quote><emphasis>Aquilo! Eu fiz
aquilo</emphasis></quote> (o que quer que aquilo
seja). Isso &eacute; comum em pol&iacute;ticos, mas
aparece em qualquer pessoa a quem se d&ecirc; a chance.
Simplesmente pense em pegadas, no cimento
fresco.&quot;</para>
</blockquote>
<para>Na verdade, um &quot;quartinho de bicicletas&quot; ou
&quot;barrac&atilde;o de bicicletas&quot; &eacute; uma
tradu&ccedil;&atilde;o literal para a express&atilde;o
<quote>bikeshed</quote>; comumente utilizada na
l&iacute;ngua inglesa. Um <quote>bikeshed</quote>, no
significado definido pelo dicion&aacute;rio norte
americano &eacute; um pequeno quarto ou
barra&ccedil;&atilde;o n&atilde;o raramente encontrado no
fundo de uma casa, que &eacute; 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 pr&oacute;ximos
&agrave; garagem de autom&oacute;veis. A express&atilde;o
&eacute; normalmente utilizada pelos desenvolvedores do
FreeBSD quando se come&ccedil;a uma discuss&atilde;o sobre
algum assunto que n&atilde;o &eacute; t&atilde;o
importante para o bom funcionamento de alguma outra coisa,
como por exemplo, qual a import&acirc;ncia da cor de um
quartinho de bicicletas, quando o mesmo j&aacute;
est&aacute; constru&iacute;do e servindo bem ao seu
prop&oacute;sito?</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="funnies">
<title>As gracinhas do FreeBSD</title>
<qandaset>
<qandaentry>
<question id="very-very-cool">
<para>Qu&atilde;o fresco &eacute; o FreeBSD?</para>
</question>
<answer>
<para>P. Algu&eacute;m j&aacute; 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 &eacute; um
sistema muito
<emphasis><foreignphrase>caliente</foreignphrase></emphasis>!</para>
<para>R. N&atilde;o, mas n&oacute;s j&aacute; fizemos
v&aacute;rios testes de sabor com usu&aacute;rios vendados
que, al&eacute;m de tudo, haviam tomado 250 microgramas de
LSD-25. 35% dos volunt&aacute;rios disseram que o FreeBSD
tinha um sabor parecido com laranja, enquanto o Linux
tinha sabor de n&eacute;voa p&uacute;rpura. Nenhum dos
dois grupos comentou nada significante sobre a
varia&ccedil;&atilde;o de temperatura. Eventualmente,
tivemos que jogar o resultado desses testes fora,
j&aacute; que descobrimos que v&aacute;rios desses
volunt&aacute;rios estavam vagando fora do quarto,
prejudicando os resultados. Acreditamos que hoje, a
maioria desses volunt&aacute;rios trabalhe na Apple. Eles
devem estar criando novas interfaces gr&aacute;ficas do
tipo <quote>arranha e cheira</quote>. &Eacute; um
trabalho divertido e cl&aacute;ssico, do qual n&oacute;s
fazemos parte!</para>
<para>Falando s&eacute;rio, o FreeBSD e o Linux usam as
instru&ccedil;&otilde;es <acronym>HLT</acronym> (halt)
quando o sistema est&aacute; inativo. Isto diminui
consideravelmente o consumo de energia e,
conseq&uuml;entemente, o aquecimento que ele proporciona.
Al&eacute;m disso, se seu sistema possui APM (sistema
avan&ccedil;ado de gerenciamento de energia) configurado,
o FreeBSD coloca a CPU em modo de consumo menor de
energia.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="letmeoutofhere">
<para>Quem est&aacute; arranhando meus pentes de
mem&oacute;ria??</para>
</question>
<answer>
<para>P. Existe alguma <quote>bruxaria</quote> que o
FreeBSD faz ao compilar o
<foreignphrase>kernel</foreignphrase> que, por ventura,
estaria fazendo meus pentes de mem&oacute;ria fazer
barulhos estranhos, como se estivessem sendo arranhados?
Durante a compila&ccedil;&atilde;o do sistema (e um
pouquinho depois, assim que a unidade de disquete &eacute;
reconhecida, e ap&oacute;s a inicializa&ccedil;&atilde;o
tamb&eacute;m), um barulho estranho de arranhos
come&ccedil;a a emanar de algum lugar que parece ser os
pentes de mem&oacute;ria.</para>
<para>R. Claro! Com muita frequ&ecirc;ncia, voc&ecirc; vai
ouvir falar dos <quote>daemons</quote> na
documenta&ccedil;&atilde;o do BSD. O que a maioria das
pessoas n&atilde;o sabem &eacute; que essa &eacute; uma
refer&ecirc;ncia genu&iacute;na &agrave;s entidades
n&atilde;o-corporais que est&atilde;o possuindo o seu
computador. O barulho que parece o som de alguma coisa
sendo arranhada, na verdade s&atilde;o sussuros em tons
extremamente agudos que os <quote>daem&ocirc;nios</quote>
emanam, ao decidir entre si as melhores maneiras de tratar
as v&aacute;rias tarefas referentes &agrave;
administra&ccedil;&atilde;o do seu sistema.</para>
<para>Se o barulho te dominar, um bom <command>fdisk
/mbr</command> no DOS pode fazer voc&ecirc; se livrar
dos sons, mas n&atilde;o se surpreenda se a
rea&ccedil;&atilde;o dos
<foreignphrase>daemons</foreignphrase> forem adversas, ao
tentar evitar que voc&ecirc; fa&ccedil;a isso. Na
verdade, h&aacute; qualquer momento, &eacute;
poss&iacute;vel que voc&ecirc; ou&ccedil;a a voz
sat&acirc;nica do Bill Gates pelo auto-falante interno do
seu PC. Se isso acontecer, CORRA! Corra sem parar e
n&atilde;o olhe para tr&aacute;s por qualquer que seja o
motivo! Depois de se liberarem das influ&ecirc;ncias
contrastantes dos <foreignphrase>daemons</foreignphrase>
BSD, os dem&ocirc;nios g&ecirc;meos do DOS e do Windows
costumam ter sucesso ao repossuir total controle do seu
computador, e depois disso, o tempo garantir&aacute; que
eles consigam a domina&ccedil;&atilde;o total da sua alma.
Agora que voc&ecirc; j&aacute; conhece a verdade,
esperamos que sua escolha seja conviver com os barulhinos
agudos. Ou n&atilde;o?</para>
</answer>
</qandaentry>
<qandaentry>
<question id="changing-lightbulbs">
<para>Quantos FreeBSD <foreignphrase>hackers</foreignphrase>
s&atilde;o necess&aacute;rios para trocar uma
l&acirc;mpada?</para>
</question>
<answer>
<para>Mil cento e sessenta e nove:</para>
<para>Vinte e tr&ecirc;s para reclamarem no -CURRENT que
est&atilde;o sem luz;</para>
<para>Quatro para dizer que &eacute; um problema na
configura&ccedil;&atilde;o, e que essa pergunta deveria
ser feita na freebsd-questions;</para>
<para>Tr&ecirc;s para enviar Relat&oacute;rio de Problemas
sobre a l&acirc;mpada, dos quais ao menos um, n&atilde;o
est&aacute; completamente conclu&iacute;do, e consiste
apenas de um breve <quote>t&aacute; escuro</quote>;</para>
<para>Um para adicionar uma l&acirc;mpada que nunca foi
testada, que danifica todo o <literal>buildworld
</literal> e depois de 5 minutos tem que ser
retirada;</para>
<para>Oito para reclamarem para os autores dos
Relat&oacute;rios de Problemas por n&atilde;o ter
inclu&iacute;do corre&ccedil;&otilde;es em seus
relat&oacute;rios;</para>
<para>Cinco para reclamar que o
<literal>buildworld</literal> n&atilde;o est&aacute;
funcionando;</para>
<para>Trinta e um para responder que funciona para eles, e
que os problem&aacute;ticos devem ter feito CVSup na hora
errada;</para>
<para>Um para enviar uma corre&ccedil;&atilde;o para a nova
l&acirc;mpada na freebsd-hackers;</para>
<para>Um para reclamar que ele tinha corre&ccedil;&otilde;es
para essa l&acirc;mpada h&aacute; 3 anos, mas que quando
elas foram enviadas para o -CURRENT, foram simplesmente
ignoradas, e que sua experi&ecirc;ncia com o sistema de
Relat&oacute;rio de Problemas n&atilde;o foram as melhores
poss&iacute;veis; al&eacute;m disso a nova l&acirc;mpada
proposta n&atilde;o era reflexiva;</para>
<para>Trinta e sete para gritarem em alto e bom som que as
l&acirc;mpadas n&atilde;o fazem parte da base do sistema,
e que os desenvolvedores n&atilde;o tem o direito de sair
fazendo esse tipo de coisa sem antes consultar a
comunidade, e O QUE O -CORE ESTA FAZENDO SOBRE
ISSO!?</para>
<para>Duzendos para reclamar da cor do quartinho de
bicicletas;</para>
<para>Tr&ecirc;s para dizer que a corre&ccedil;&atilde;o
enviada n&atilde;o est&aacute; de acordo com os
padr&otilde;es que o c&oacute;digo do
<foreignphrase>kernel</foreignphrase> deve ter, conforme
documentado na p&aacute;gina de manual do
&man.style.9;;</para>
<para>Dezessete para reclamar que a nova l&acirc;mpada
proposta est&aacute; licenciada sob a Licen&ccedil;a
P&uacute;blica Geral GNU (GPL);</para>
<para>Quinhentos e oitenta e seis para entrarem de corpo e
alma em uma discuss&atilde;o sobre as vantagens
comparativas entre a licen&ccedil;a P&uacute;blica Geral
GNU (GPL), a licen&ccedil;a BSD, a licen&ccedil;a do MIT,
a NPL e a higiene pessoal dos fundadores da
<foreignphrase>Free Software
Foundation</foreignphrase>;</para>
<para>Sete para copiar v&aacute;rios trechos da
discuss&atilde;o para a lista de discuss&atilde;o
freebsd-chat e para a freebsd-advocacy;</para>
<para>Um para trocar a nova l&acirc;mpada sugerida, apesar
de a nova brilha bem menos que a antiga;</para>
<para>Dois para retirarem a l&acirc;mpada furiosos, dizendo
que o FreeBSD est&aacute; melhor no escuro do que com uma
l&acirc;mpada t&atilde;o fraca;</para>
<para>Quarenta e seis para contestarem vorazmente sobre a
retirada da l&acirc;mpada fraca e escreverem um
relat&oacute;rio para o -core;</para>
<para>Onze para dar a id&eacute;ia de criar uma
l&acirc;mpada menorzinha, que poderia caber no Tamagotchi
deles, se um dia n&oacute;s decidirmos portar o FreeBSD
para tal plataforma;</para>
<para>Setenta e tr&ecirc;s para reclamar da raz&atilde;o
sinal versus ru&iacute;do na freebsd-chat e na
freebsd-hackers, e se retirarem das listas em
protesto;</para>
<para>Treze para enviarem mensagens com o conte&uacute;do
"unsubscribe", "Como eu saio da lista?", ou "Por favor, me
tirem da lista", seguidas do rodap&eacute; tradicional do
servidor de discuss&atilde;o com as
instru&ccedil;&otilde;es para sair da lista;</para>
<para>Um, para adicionar uma nova l&acirc;mpada que funciona
bem, enquanto todos os outros est&atilde;o ocupados demais
com a discuss&atilde;o para perceber que algu&eacute;m
j&aacute; trocou a l&acirc;mpada por uma funcional;</para>
<para>Trinta e um para afirmar que a nova l&acirc;mpada
brilha em m&eacute;dia 0.364% mais, se comparada com as
l&acirc;mpadas TenDRA (contudo, ela ter&aacute; que ser
refeita em formato de cubo) e que o FreeBSD deveria mudar
para TenDRA ao inv&eacute;s do GCC;</para>
<para>Um para reclamar que a nova l&acirc;mpada n&atilde;o
&eacute; honesta;</para>
<para>Nove (incluindo aqueles que enviaram os
Relat&oacute;rios de Problemas) para perguntar <quote>o
que significa MFC?</quote>;</para>
<para>Cinquenta e sete para reclamar que ficaram no escuro
por duas semanas at&eacute; que a l&acirc;mpada fosse
trocada.</para>
<para><emphasis>Um adendo do &a.nik;:</emphasis></para>
<para><emphasis>Eu estava rindo um bocado
aqui.</emphasis></para>
<para><emphasis>A&iacute; pensei, "Pera&iacute;, n&atilde;o
deveria ter ao menos '1 para documentar a nova
l&acirc;mpada' em algum lugar?</emphasis></para>
<para><emphasis>Da&iacute; eu fui iluminado
:-)</emphasis></para>
</answer>
</qandaentry>
<qandaentry>
<question id="dev-null">
<para>Para onde v&atilde;o os dados que s&atilde;o escritos
no dispositivo <filename>/dev/null</filename> ?</para>
</question>
<answer>
<para>Esses dados s&atilde;o enviados para um dissipador
especial da CPU que os converte em calor, para que depois
sejam ventilados pelo <emphasis>cooler</emphasis> do
computador. &Eacute; por isso que o esfriamento do
processador &eacute; cada vez mais importante; quanto mais
r&aacute;pido os processadores se tornam, menos
import&acirc;ncia os usu&aacute;rios d&atilde;o &agrave;
seus dados, por isso cada vez mais lixo &eacute; enviado
para o <filename>/dev/null</filename>, gerando um
superaquecimento das CPUs. Se o
<filename>/dev/null</filename> 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 in&uacute;til existente, que o
sistema vai logo come&ccedil;ar a falhar. Se voc&ecirc;
tiver uma conex&atilde;o de rede bem r&aacute;pida,
d&aacute; para resfriar o computador lendo todos os dados
criados na <filename>/dev/random</filename> e enviando-os
para algum lugar da rede. Contudo existe o risco de
superaquecer sua rede ou do Provedor de Servi&ccedil;o
Internet ficar meio bravo com voc&ecirc;, j&aacute; que
todo esse calor normalmente &eacute; recebido pelo
equipamento do provedor. Mas n&atilde;o se preocupe, os
provedores tem grandes ventiladores para esfriar suas
m&aacute;quinas, ent&atilde;o se voc&ecirc; n&atilde;o
insistir nisso com muita frequ&ecirc;ncia, vai ficar tudo
bem.</para>
<para><emphasis>Adendo de Paul Robinson:</emphasis></para>
<para>Existem outros m&eacute;todos. Como todo bom
administrador de sistemas sabe, faz parte da
pr&aacute;tica comum enviar dados das mais variadas
esp&eacute;cies para a tela. Isto mant&ecirc;m todos os
<foreignphrase>pixies</foreignphrase>
(<foreignphrase>pixie</foreignphrase> significa fadinhas
em ingl&ecirc;s) de tela felizes. Os
<foreignphrase>pixies</foreignphrase> de tela (normalmente
escritos com erro de ortografia, como 'pixels') s&atilde;o
divididos de acordo com o tipo de bon&eacute; que eles
usam (vermelho, verde ou azul) e costumam aparecer ou
sumir (mostrando a cor de seus bon&eacute;s) sempre que
eles ganham alguma coisinha para comer. As placas de
v&iacute;deo transformam os dados em comida de
<foreignphrase>pixies</foreignphrase>, e manda essa comida
para eles. Quanto mais cara for a placa de v&iacute;deo,
melhor &eacute; a qualidade da comida. Dessa forma, mais
felizes ficam os <foreignphrase>pixies</foreignphrase>.
Os <foreignphrase>pixies</foreignphrase> tamb&eacute;m
precisam ser constantemente estimulados &ndash; &eacute;
para isso que existem as prote&ccedil;&otilde;es de
telas.</para>
<para>Ent&atilde;o, para seguir a sugest&atilde;o anterior,
&eacute; interessante mandar todos os dados que
sa&iacute;rem do <filename>/dev/random</filename> para a
tela do console, para alimentar os
<foreignphrase>pixies</foreignphrase>. Isso n&atilde;o
causa nenhum aquecimento do computador, e em
contrapartida, faz os
<foreignphrase>pixies</foreignphrase> viverem mais
felizes, e ainda pode ser que fa&ccedil;a voc&ecirc; se
livrar rapidamente de todos os dados existentes no
<filename>/dev/random</filename>, mesmo considerando que a
tela fique um pouco confusa.</para>
<para>Como um ex-administrador de um provedor que teve
algumas m&aacute;s experi&ecirc;ncias tentando manter a
estabilidade da temperatura da sala dos servidores, eu
recomendo sinceramente que as pessoas n&atilde;o tentem
enviar todos os seus dados para a rede. Existem umas
pequenas fadinhas encantadas que fazem a altern&acirc;ncia
dos pacotes de redes, e que fazem o roteamento desses
mesmos pacotes. Algumas vezes essas fadinhas ficam meio
revoltadas com os usu&aacute;rios malvados que ficam
mandando seus dados in&uacute;teis para a rede.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="advanced">
<title>T&oacute;picos Avan&ccedil;ados</title>
<qandaset>
<qandaentry>
<question id="learn-advanced">
<para>Como eu posso aprender mais sobre as
caracter&iacute;sticas internas do FreeBSD?</para>
</question>
<answer>
<para> Atualmente n&atilde;o h&aacute; nenhum livro
espec&iacute;fico sobre as caracter&iacute;sticas internas
do Sistema Operacional FreeBSD. Contudo, a maior parte do
conhecimento gen&eacute;rico sobre UNIX pode ser aplicado
diretamente a ele. Al&eacute;m disso existem livros
espec&iacute;ficos para sistemas BSD cuja leitura &eacute;
recomendada.</para>
<para>Para uma lista, verifique a sess&atilde;o de <ulink
URL="../handbook/bibliography-osinternals.html">
bibliografia sobre caracter&iacute;sticas internas dos
sistemas operacionais</ulink> no
&a.ptbr.p.handbook;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="how-to-contribute">
<para>Como posso contribuir com o projeto FreeBSD?</para>
</question>
<answer>
<para>Por gentileza, consulte o artigo <ulink
url="../../articles/contributing/article.html">Contribuindo
com o Projeto FreeBSD</ulink> para obter algumas dicas
sobre o assunto. Toda ajuda &eacute; mais que bem
vinda!</para>
</answer>
</qandaentry>
<qandaentry>
<question id="define-snap-release">
<para>O que s&atilde;o SNAPs e RELEASEs?</para>
</question>
<answer>
<para>Atualmente existem tr&ecirc;s s&eacute;ries
ativas/semi-ativas no <ulink
URL="http://www.FreeBSD.org/cgi/cvsweb.cgi">Reposit&oacute;rio
CVS</ulink> do projeto FreeBSD (a RELENG_2 que &eacute;
provavelmente alterada somente duas vezes ao ano, sendo
esta a raz&atilde;o de termos somente tr&ecirc;s
s&eacute;ries em desenvolvimento):</para>
<itemizedlist>
<listitem>
<para><literal>RELENG_2_2</literal> ou
<emphasis>2.2-STABLE</emphasis></para>
</listitem>
<listitem>
<para><literal>RELENG_3</literal> ou
<emphasis>3.X-STABLE</emphasis></para>
</listitem>
<listitem>
<para><literal>RELENG_4</literal> ou
<emphasis>4-STABLE</emphasis></para>
</listitem>
<listitem>
<para><literal>HEAD</literal> ou
<emphasis>-CURRENT</emphasis> ou
<emphasis>5.0-CURRENT</emphasis></para>
</listitem>
</itemizedlist>
<para><literal>HEAD</literal> n&atilde;o &eacute; um nome de
uma tag de s&eacute;rie, como os outros dois; &eacute;
somente uma constante simb&oacute;lica para
<quote><emphasis>o atual desenvolvimento corrente, mas
n&atilde;o de s&eacute;rie</emphasis></quote> a qual
n&oacute;s simplesmente nos referimos como
<quote>-CURRENT</quote>.</para>
<para>Neste momento, a <quote>-CURRENT</quote> se refere ao
desenvolvimento atual do FreeBSD 5.0. A s&eacute;rie
<literal>4-STABLE</literal>, <symbol>RELENG_4</symbol>
originou-se da <quote>-CURRENT</quote> em Mar&ccedil;o de
2000.</para>
<para>A s&eacute;rie <literal>2.2-STABLE</literal>,
<symbol>RELENG_2_2</symbol>, originou-se da
<quote>-CURRENT</quote> em Novembro de 1996, e foi
praticamente descontinuada.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="custrel">
<para>Como fa&ccedil;o a minha pr&oacute;pria
distribui&ccedil;&atilde;o personalizada?</para>
</question>
<answer>
<para>Por gentileza, consulte o artigo sobre a <ulink
url="../../articles/releng/article.html">Engenharia de
Releases.</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="makeworld-clobbers">
<para>Por que o <command>make world</command> sobrescreve os
bin&aacute;rios j&aacute; instalados?</para>
</question>
<answer>
<para>Porque essa &eacute; a id&eacute;ia geral sobre como
ele deve funcionar; como seu nome sugere, o <command>make
world</command> reconstr&oacute;i todo o sistema
bin&aacute;rio a partir do zero, garantindo que o
usu&aacute;rio tenha um ambiente limpo e consistente ao
final da opera&ccedil;&atilde;o (&eacute; por isso que o
processo demora tanto).</para>
<para>Se a vari&aacute;vel de ambiente
<literal>DESTDIR</literal> estiver definida enquanto um
<command>make world</command> ou <command>make
installworld</command> estiver sendo executado, os
bin&aacute;rios rec&eacute;m criados ser&atilde;o
distribu&iacute;dos no diret&oacute;rio definido em
<literal>${DESTDIR}</literal>, criando no mesmo uma
r&eacute;plica do conte&uacute;do do / do sistema.
Algumas altera&ccedil;&otilde;es aleat&oacute;rias nas
bibliotecas compartilhadas podem ocasionar falhas na hora
de reconstruir o sistema com o <command>make
world</command>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="bus-speed-defaulted">
<para>Por que quando meu sistema inicializa, ele diz
<quote>(bus speed defaulted)</quote>?</para>
</question>
<answer>
<para>Os controladores SCSI Adaptec 1542 permitem que o
usu&aacute;rio defina a velocidade de acesso ao barramento
por meio de software. Algumas vers&otilde;es mais antigas
deste dispositivo tentavam determinar automaticamente a
maior velocidade poss&iacute;vel e tentavam ajustar sua
velocidade &agrave; esse limite m&aacute;ximo.
Descobriu-se contudo, que esse comportamento as vezes era
prejudicial, e fazia com que algumas m&aacute;quinas
n&atilde;o funcionassem de forma adequada, por este motivo
essa caracter&iacute;stica agora vem desabilitada por
default, para ativ&aacute;-la &eacute; necess&aacute;rio
definir a op&ccedil;&atilde;o <symbol>TUNE_1542</symbol>
no <foreignphrase>kernel</foreignphrase> do FreeBSD. Essa
op&ccedil;&atilde;o, em sistemas onde ela se aplica,
provavelmente assegura que seus discos sejam acessados de
forma mais r&aacute;pida e eficiente; contudo, em sistemas
onde o uso desse algoritmo &eacute; invi&aacute;vel, pode
resultar em perda de dados.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="ctm">
<para>Posso acompanhar a s&eacute;rie -CURRENT mesmo tendo
acesso limitado &agrave; Internet?</para>
</question>
<answer>
<para>Sim, &eacute; poss&iacute;vel acompanhar a
s&eacute;rie de desenvolvimento <literal>sem
precisar</literal> baixar sempre todo o codigo fonte do
sistema, basta utilizar o <ulink
URL="../handbook/synching.html#CTM">recurso de
CTM</ulink>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="split-240k">
<para>Como o FreeBSD foi dividido em arquivos de
240k?</para>
</question>
<answer>
<para>O comando split que acompanha as novas vers&otilde;es
dos sistemas BSD t&ecirc;m uma op&ccedil;&atilde;o
<option>-b</option> que permite dividir os arquivos em
limites arbitr&aacute;rios de bytes.</para>
<para>Eis um exemplo tirado do
<filename>/usr/src/Makefile</filename>.</para>
<programlisting>bin-tarball:
(cd ${DISTDIR}; \
tar cf - . \
gzip --no-name -9 -c | \
split -b 240640 - \
${RELEASEDIR}/tarballs/bindist/bin_tgz.)</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="submitting-kernel-extensions">
<para>Eu escrevi uma extens&atilde;o para o
<foreignphrase>kernel</foreignphrase>; a quem eu
envio?</para>
</question>
<answer>
<para>Por gentileza, consulte o artigo <quote><ulink
URL="../../articles/contributing/article.html">Contribuindo
com o Projeto FreeBSD</ulink></quote> para obter mais
informa&ccedil;&otilde;es sobre como enviar c&oacute;digo
fonte ao projeto.</para>
<para>E obrigado pelo seu interesse! :)</para>
</answer>
</qandaentry>
<qandaentry>
<question id="pnp-initialize">
<para>Como as placas Plug N Play ISA s&atilde;o detectadas e
inicializadas?</para>
</question>
<answer>
<para>Por: Frank Durda IV
<email>uhclem@nemesis.lonestar.org</email></para>
<para>Simplificando, existem poucas portas de E/S que todas
as placas PnP respondem quando o sistema indaga se algum
dispositivo est&aacute; usando-a. Ent&atilde;o, quando a
rotina de procura do PnP come&ccedil;a, ele pergunta se
h&aacute; alguma placa PnP presente, e todas as placas PnP
respondem com seus respectivos n&uacute;meros de modelo
para uma leitura de E/S da mesma porta. A rotina de
procura recebe ent&atilde;o um sinal wired-OR
representando um <quote>sim</quote> &agrave; pergunta em
quest&atilde;o. Ao menos um bit positivo constitui essa
resposta. Ent&atilde;o o c&oacute;digo de procura
&eacute; capaz de fazer com que as placas com o modelo de
identifica&ccedil;&atilde;o (atribu&iacute;do pela
Microsoft/Intel) inferior a X sejam colocados em modo
<quote>off-line</quote>. Ele ent&atilde;o ir&aacute;
verificar se alguma placa respondeu a consulta. Se a
resposta for <literal>0</literal> o sistema assume que
n&atilde;o h&aacute; placas com
identifica&ccedil;&atilde;o acima de X. Depois a rotina
de busca verifica se h&aacute; alguma placa cujo ID
&eacute; inferior a <literal>X</literal>. Se a resposta
for positiva, a rotina de busca sabe que ainda existem
placas identificadas com um valor menor que X. A&iacute;
a busca tenta identificar placas com ID superior &agrave;
X (limite / 4) e ordena que entrem em modo off-line.
Repete-se o ciclo de pesquisas e
identifica&ccedil;&otilde;es nessa forma
semi-bin&aacute;ria at&eacute; que um n&uacute;mero
necess&aacute;rio de intera&ccedil;&otilde;es seja
conclu&iacute;do. Ao final do processo o sistema
ter&aacute; identificado todas as placas PnP presentes na
m&aacute;quina em quest&atilde;o, com o n&uacute;mero de
intera&ccedil;&otilde;es necess&aacute;rias sempre menor
que 2&circ;64.</para>
<para>Os IDs (c&oacute;digos de identifica&ccedil;&atilde;o)
s&atilde;o dois campos de 32-bits (portanto, 2&circ;64)
acrescidos de 8 bits que &eacute; o checksum
(verifica&ccedil;&atilde;o de consist&ecirc;ncia 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
identifica&ccedil;&otilde;es de 32-bit. O motivo correto,
n&atilde;o se sabe, mas percebe-se que 32 bits exclusivos
para os fabricantes chega a ser um exagero.</para>
<para>Os &uacute;ltimos 32 bits &eacute; um n&uacute;mero
serial que torna a identifica&ccedil;&atilde;o dessa placa
&uacute;nica. O fabricante n&atilde;o pode nunca produzir
uma placa que tenha os 32 bits finais iguais, a n&atilde;o
ser que os 32 bits iniciais sejam distintos. Dessa forma
&eacute; poss&iacute;vel existir v&aacute;rias placas do
mesmo tipo e fabricante, e ainda assim todos os 64 bits
dessas placas serem &uacute;nicos.</para>
<para>Os grupos de 32 bits nunca podem ser todos zero. Isso
permite ao wired-OR identificar bits n&atilde;o nulos
durante a procura bin&aacute;ria inicial.</para>
<para>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 op&ccedil;&otilde;es de
interrup&ccedil;&otilde;es est&atilde;o
dispon&iacute;veis, etc. Uma busca &eacute; feita em
todas as placas para obter estas
informa&ccedil;&otilde;es.</para>
<para>Tal informa&ccedil;&atilde;o &eacute; ent&atilde;o
combinada com as informa&ccedil;&otilde;es encontradas nos
arquivos ECU, no sistema, ou ent&atilde;o da MLB BIOS. O
suporte da BIOS PnP e da ECU costuma ser sint&eacute;tica,
portanto os perif&eacute;ricos n&atilde;o s&atilde;o
exatamente PnP como &eacute; dito. Contudo, ao examinar as
informa&ccedil;&otilde;es da da BIOS e da ECU, as rotinas
de busca podem identificar dispositivos ditos PnP e evitar
que eles requeiram recursos tamb&eacute;m
necess&aacute;rios por outros dispositivos, que por sua
vez n&atilde;o podem realocar tais valores
automaticamente.</para>
<para>Os dispositivos PnP s&atilde;o visitados mais uma vez
e recebem seus endere&ccedil;os de E/S, DMA, IRQ e
endere&ccedil;amentos atribu&iacute;dos na mem&oacute;ria.
Os dispositivos permaneceram naquela ordem at&eacute; a
pr&oacute;xima inicializa&ccedil;&atilde;o do sistema,
apesar de que nada impede que eles sejam movidos quando se
desejar.</para>
<para>Essa explica&ccedil;&atilde;o &eacute; muito
simplista, mas provavelmente voc&ecirc; entendeu a
id&eacute;ia geral do comportamento PnP.</para>
<para>A Microsoft fez um exame sobre algumas das portas
prim&aacute;rias de status de impressoras para fazer PnP,
dentro da l&oacute;gica que nenhuma placa poderia
decodificar aqueles endere&ccedil;os para os ciclos
opostos de E/S. Eu encontrei uma placa genu&iacute;na de
impressora IBM que enviou dados decodificados da porta de
status durante o come&ccedil;o do per&iacute;odo da
proposta de revis&atilde;o do PnP, mas a Microsoft
<quote>ficou brava</quote>. Ent&atilde;o eles resolveram
fazer um envio para a porta de status da impressora, de
forma a justar o endere&ccedil;o usado (naquele instante +
<literal>0x800</literal>) e uma terceira porta de E/S para
a leitura que tecnicamente pode ser localizada em qualquer
lugar entre <literal>0x200</literal> e
<literal>0x3ff</literal>.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="major-numbers">
<para>Voc&ecirc;s podem definir um n&uacute;mero principal
para um driver de dispositivo que eu escrevi?</para>
</question>
<answer>
<para>Isso depende se voc&ecirc; pretende tornar o driver
dispon&iacute;vel para o p&uacute;blico. Se sim,
ent&atilde;o por favor nos mande uma c&oacute;pia do
c&oacute;digo-fonte do driver, mais as devidas
modifica&ccedil;&otilde;es para o
<filename>files.i386</filename>, um exemplo do arquivo de
configura&ccedil;&atilde;o, e os devidos c&oacute;digos do
&man.MAKEDEV.8; para criar qualquer arquivo especial que
seu dispositivo precise. Se voc&ecirc; n&atilde;o pode,
ou est&aacute; impedido por causa de
restri&ccedil;&otilde;es de licen&ccedil;a, ent&atilde;o o
character major number 32 e o block major number 8
est&atilde;o reservados especificadamente para este
prop&oacute;sito; por favor, use-os. De qualquer maneira,
n&oacute;s gostar&iacute;amos de obter maiores
informa&ccedil;&otilde;es sobre seu driver na
&a.hackers;.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="alternate-directory-layout">
<para>E sobre pol&iacute;ticas alternativas de layout de
diret&oacute;rios?</para>
</question>
<answer>
<para>Em resposta a quest&atilde;o da pol&iacute;tica de
formatos alternativos para diret&oacute;rios, o esquema
que est&aacute; atualmente em uso est&aacute;
imut&aacute;vel desde quando eu o escrevi em 1983. Eu
escrevi aquela pol&iacute;tica 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 voc&ecirc;s
notaram, ele funciona mediocremente para procura. A
maioria dos sistemas de arquivos s&atilde;o criados
&agrave; partir de arquivos que foram criados por uma
primeira procura em profundidade (depth first search,
tamb&eacute;m conhecido como ftw). Estes
diret&oacute;rios acabam sendo distribu&iacute;dos pelo
grupo de cilindros, criando assim um cen&aacute;rio
horr&iacute;vel em rela&ccedil;&atilde;o a futuras
primeiras buscas de profundidade. Se pud&eacute;ssemos
saber o n&uacute;mero total de diret&oacute;rios a serem
criados, a solu&ccedil;&atilde;o seria criar (total /
fs_ncg) por grupo de cilindros antes de mov&ecirc;-los.
Evidentemente, seria necess&aacute;rio criar um conjunto
de m&eacute;todos heur&iacute;sticos para adivinhar esse
n&uacute;mero. Mesmo usando um pequeno n&uacute;mero
fixo, digamos 10, ele produziria um aumento na ordem de
magnitude. Para diferenciar restaura&ccedil;&otilde;es de
opera&ccedil;&otilde;es normais (quando o algoritmo atual
&eacute; provavelmente mais sens&iacute;vel), voc&ecirc;
poderia usar o agrupamento acima de 10 se eles fossem
finalizados dentro de uma janela de dez segundos. De
qualquer maneira, minha conclus&atilde;o &eacute; que isso
&eacute; uma &aacute;rea pronta para
experimenta&ccedil;&otilde;es. </para>
<para>Kirk McKusick, Setembro de 1998</para>
</answer>
</qandaentry>
<qandaentry>
<question id="kernel-panic-troubleshooting">
<para>O que fazer com os dados que eu vejo quando tenho um
kernel panic?</para>
</question>
<answer>
<para><emphasis>[Esta se&ccedil;&atilde;o foi
extra&iacute;da de um e-mail escrito por &a.wpaul; na
<link linkend="mailing">freebsd-current</link> por
&a.des;, que arrumou alguns problemas de
impress&atilde;o e adicionou os coment&aacute;rios entre
chaves]</emphasis></para>
<programlisting>From: Bill Paul &lt;wpaul@skynet.ctr.columbia.edu&gt;
Subject: Re: the fs fun never stops
To: Ben Rosengart
Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT)
Cc: current@FreeBSD.org</programlisting>
<para><emphasis>Ben Rosengart posted the following panic
message]</emphasis></para>
<programlisting>&gt; Fatal trap 12: page fault while in kernel mode
&gt; fault virtual address = 0x40
&gt; fault code = supervisor read, page not present
&gt; instruction pointer = 0x8:0xf014a7e5
^^^^^^^^^^
&gt; stack pointer = 0x10:0xf4ed6f24
&gt; frame pointer = 0x10:0xf4ed6f28
&gt; code segment = base 0x0, limit 0xfffff, type 0x1b
&gt; = DPL 0, pres 1, def32 1, gran 1
&gt; processor eflags = interrupt enabled, resume, IOPL = 0
&gt; current process = 80 (mount)
&gt; interrupt mask =
&gt; trap number = 12
&gt; panic: page fault</programlisting>
<para>[Quando] voc&ecirc; v&ecirc; uma mensagem como essa,
n&atilde;o &eacute; suficiente somente reproduz&iacute;-la
e envi&aacute;-la em um e-mail. O valor do ponteiro de
instru&ccedil;&atilde;o (instruction pointer) que eu
destaquei acima &eacute; muito importante; infelizmente,
ele tamb&eacute;m depende de configura&ccedil;&atilde;o.
Em outras palavras, os valores variam de acordo com a
exata imagem do <foreignphrase>kernel</foreignphrase> que
voc&ecirc; estiver usando. Se voc&ecirc; estiver usando
uma imagem GENERIC do
<foreignphrase>kernel</foreignphrase> de um dos
<foreignphrase>snapshots</foreignphrase>, ent&atilde;o
&eacute; poss&iacute;vel que algu&eacute;m acompanhe a
fun&ccedil;&atilde;o ofensiva, mas se voc&ecirc;
est&aacute; rodando um
<foreignphrase>kernel</foreignphrase> customizado
ent&atilde;o s&oacute; <emphasis>voc&ecirc;</emphasis>
pode nos dizer aonde a falha ocorreu.</para>
<para>O que voc&ecirc; deve fazer &eacute; isso:</para>
<procedure>
<step>
<para>Anote o valor do ponteiro de
instru&ccedil;&atilde;o. Observe que o 0x8: parte do
come&ccedil;o n&atilde;o &eacute; significante. Nesse
caso &eacute; o <literal>0xf0xxxxxx</literal> que
n&oacute;s queremos.</para>
</step>
<step>
<para>Quando o sistema reinicializar, fa&ccedil;a o seguinte:
<screen>&prompt.user; <userinput>nm -n /kernel.that.caused.the.panic | grep f0xxxxxx</userinput></screen>
Onde <literal>f0xxxxxx</literal> &eacute; o valor do
ponteiro de instru&ccedil;&atilde;o. As chances
s&atilde;o que voc&ecirc; n&atilde;o ter&aacute; um
resultado exato visto que os s&iacute;mbolos na tabela
de s&iacute;mbolos do
<foreignphrase>kernel</foreignphrase> s&atilde;o para
os pontos de entrada (entry points) de
fun&ccedil;&otilde;es e o endere&ccedil;o do ponteiro
de instru&ccedil;&atilde;o estar&atilde;o em algum
lugar dentro de uma fun&ccedil;&atilde;o, n&atilde;o
no come&ccedil;o. Se voc&ecirc; n&atilde;o receber um
resultado exato, omita o &uacute;ltimo d&iacute;gito
do valor do ponteiro de instru&ccedil;&atilde;o e
tente novamente, ex:
<screen>&prompt.user; <userinput>nm -n /kernel.that.caused.the.panic | grep f0xxxxx</userinput></screen>
Se isso n&atilde;o produz nenhum resultado, corte
outro d&iacute;gito. Repita at&eacute; que voc&ecirc;
tenha algum tipo de retorno. O resultado ser&aacute;
uma poss&iacute;vel lista de fun&ccedil;&otilde;es que
causaram o panic. Isso &eacute; menos do que um
mecanismo exato para rastreamento de um ponto de
falha, mas &eacute; melhor que nada.</para>
</step>
</procedure>
<para>Eu vejo pessoas constantemente mostrando mensagens de
panic como essa, mas eu raramente vejo algu&eacute;m
comparar o ponteiro de instru&ccedil;&atilde;o com uma
fun&ccedil;&atilde;o na tabela de s&iacute;mbolos do
<foreignphrase>kernel</foreignphrase>.</para>
<para>A melhor maneira de rastrear a causa de um panic
&eacute; guardar as mensagens de falha (crash dump), e
ent&atilde;o usar o &man.gdb.1; para gerar um stack trace
da falha.</para>
<para>Em qualquer caso, o m&eacute;todo que eu normalmente
uso &eacute; esse:</para>
<procedure>
<step>
<para>Definir um arquivo de configura&ccedil;&atilde;o
do <foreignphrase>kernel</foreignphrase>,
opcionalmente adiconando a <literal>options
DDB</literal> se voc&ecirc; acha que precisa do
debugger do <foreignphrase>kernel</foreignphrase> para
algo. (Eu uso isso principalmente para ajustar
breakpoints se eu suspeito que h&aacute; uma
condi&ccedil;&atilde;o de la&ccedil;o infinito
(infinite loop ou algo do tipo).</para>
</step>
<step>
<para>Use <command>config -g
<replaceable>KERNELCONFIG</replaceable></command>
configurar o diret&oacute;rio da
constru&ccedil;&atilde;o.</para>
</step>
<step>
<para><command>cd /sys/compile/
<replaceable>KERNELCONFIG</replaceable>; make
</command></para>
</step>
<step>
<para>Espere o <foreignphrase>kernel</foreignphrase>
acabar de compilar.</para>
</step>
<step>
<para><command>make install</command></para>
</step>
<step>
<para>reboot</para>
</step>
</procedure>
<para>O processo do &man.make.1; ter&aacute;
constru&iacute;do dois
<foreignphrase>kernels</foreignphrase>.
<filename>kernel</filename> e
<filename>kernel.debug</filename>. O
<filename>kernel</filename> foi instalado como
<filename>/kernel</filename>, enquanto o
<filename>kernel.debug</filename> pode ser usado como
fonte s&iacute;mbolos de debug para o &man.gdb.1;.</para>
<para>Para ter certeza que voc&ecirc; ir&aacute; capturar o
crash dump, voc&ecirc; precisa editar o
<filename>/etc/rc.conf</filename> e ajustar o
<literal>dumpdev</literal> para apontar para sua
parti&ccedil;&atilde;o swap. Isso far&aacute; com que os
scripts &man.rc.8; usem o comando &man.dumpon.8; para
habilitar os crash dumps. Voc&ecirc; pode tamb&eacute;m
executar o &man.dumpon.8; manualmente. Depois de um panic,
o crash dump pode ser recuperado usando o &man.savecore.8;;
se variavel <literal>dumpdev</literal> estiver definida no
<filename>/etc/rc.conf</filename>, os scripts &man.rc.8;
ir&atilde;o executar o &man.savecore.8; automaticamente e
colocar o crash dump em
<filename>/var/crash</filename>.</para>
<note>
<para>Os crash dumps do FreeBSD s&atilde;o geralmente do
mesmo tamanho da mem&oacute;ria RAM f&iacute;sica da sua
m&aacute;quina. Isto &eacute;, se voc&ecirc; tem 64MB
de RAM, voc&ecirc; ter&aacute; um crash dump de 64MB.
Ent&atilde;o voc&ecirc; deve ter certeza que h&aacute;
espa&ccedil;o suficiente em
<filename>/var/crash</filename> para alocar o dump.
Alternativamente, voc&ecirc; executa o &man.savecore.8;
manualmente e pode faz&ecirc;-lo recuperar o crash dump
para onde voc&ecirc; tenha mais espa&ccedil;o. &Eacute;
poss&iacute;vel limitar o tamanho do crash dump
utilizando a op&ccedil;&atilde;o <literal>options
MAXMEM=(foo)</literal> para ajustar a quantia de
mem&oacute;ria que o
<foreignphrase>kernel</foreignphrase> ir&aacute; usar
para algo um pouco mais sens&iacute;vel. Por exemplo,
se voc&ecirc; tem 128MB de RAM, voc&ecirc; pode limitar
o uso de mem&oacute;ria do
<foreignphrase>kernel</foreignphrase> para 16MB para que
o tamanho do seu crash dump tenha somente 16MB ao
inv&eacute;s de 128MB.</para>
</note>
<para>Uma vez que voc&ecirc; recuperou o crash dump,
voc&ecirc; pode ter um stack trace com o &man.gdb.1; como
segue:</para>
<screen>&prompt.user; <userinput>gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0</userinput>
<prompt>(gdb)</prompt> <userinput>where</userinput></screen>
<para>Note que h&aacute; v&aacute;rias telas com
informa&ccedil;&otilde;es valiosas; seria ideal o uso do
&man.script.1; para capturar todas elas. Usando a imagem
(unstripped) do <foreignphrase>kernel</foreignphrase> com
todos os s&iacute;mbolos de debug deve mostrar a linha
exata do c&oacute;digo-fonte do
<foreignphrase>kernel</foreignphrase> onde o panic
ocorreu. Geralmente &eacute; mais interessante ler o
stack trace de baixo para cima a fim de rastrear a exata
seq&uuml;&ecirc;ncia de eventos que levaram ao crash.
Voc&ecirc; tamb&eacute;m pode usar o &man.gdb.1; para
exibir os conte&uacute;dos de v&aacute;rias
vari&aacute;veis ou estruturas a fim de examinar o estado
do sistema no instante do crash.</para>
<para>Agora, se voc&ecirc; &eacute; realmente louco e tem um
segundo computador, voc&ecirc; tamb&eacute;m pode
configurar o &man.gdb.1; para executar um debug remoto,
tanto que voc&ecirc; pode usar o &man.gdb.1; em um sistema
para debugar o <foreignphrase>kernel</foreignphrase> em
outro sistema, incluindo o ajuste de breakpoints,
rastreamento passo-a-passo pelo c&oacute;digo do
<foreignphrase>kernel</foreignphrase>, do mesmo modo que
voc&ecirc; pode fazer com um programa do modo de
usu&aacute;rio normal. Eu ainda n&atilde;o brinquei com
isso pois n&atilde;o tive a chance de configurar duas lado
a lado com o &uacute;nico prop&oacute;sito de
debugging.</para>
<para><emphasis>[Adendo de Bill: &quot;Eu esqueci de
mencionar uma coisa: se voc&ecirc; tem DDB habilitado e
o <foreignphrase>kernel</foreignphrase> em modo de
debug, voc&ecirc; pode for&ccedil;ar um panic (e um
crash dump) apenas digitando &acute;panic&acute; no
prompt do ddb. Ele pode parar no debugger novamente
durante a fase de panic. Se isso acontecer, digite
&acute;continue&acute; e ele finalizar&aacute; o crash
dump.&quot;-ed]</emphasis></para>
</answer>
</qandaentry>
<qandaentry>
<question id="dlsym-failure">
<para>Por que a dlsym() n&atilde;o funciona mais nos
execut&aacute;veis ELF?</para>
</question>
<answer>
<para>A toolchain (cadeia de ferramentas) ELF n&atilde;o
faz, por padr&atilde;o, os s&iacute;mbolos definidos em um
execut&aacute;vel vis&iacute;vel para o linkador
din&acirc;mico (dynamic linker). Conseq&uuml;entemente, a
procura em nomes obtidos de chamadas com a
<function>dlsym()</function> para <function>dlopen(NULL,
flags)</function> ir&aacute; falhar ao buscar tais
s&iacute;mbolos.</para>
<para>Se a inten&ccedil;&atilde;o &eacute; usar a
<function>dlsym()</function> para buscar s&iacute;mbolos
que possam existir nos execut&aacute;veis principais do
processo, &eacute; necess&aacute;rio linkar o programa com
a op&ccedil;&atilde;o <option>-export-dynamic</option> com
o linker ELF (&man.ld.1;).</para>
</answer>
</qandaentry>
<qandaentry>
<question id="change-kernel-address-space">
<para>Como eu posso aumentar ou reduzir o espa&ccedil;o de
endere&ccedil;amento dispon&iacute;vel para o
<foreignphrase>kernel</foreignphrase>?</para>
</question>
<answer>
<para>Por padr&atilde;o, o espa&ccedil;o de
endere&ccedil;amento (address space) do
<foreignphrase>kernel</foreignphrase> &eacute; 256 MB no
FreeBSD 3.x e 1 GB no FreeBSD 4.x. Em um servidor de rede
com tr&aacute;fego intensivo (por exemplo, um servidor FTP
ou HTTP de muito tr&aacute;fego) pode acontecer de, por
exemplo, 256MB de mem&oacute;ria n&atilde;o ser o
suficiente.</para>
<para>Mas ent&atilde;o, como aumentar esse espa&ccedil;o?
Existem duas formas. Primeiro, &eacute; necess&aacute;rio
dizer ao <foreignphrase>kernel</foreignphrase> que ele
deve reservar uma grande quantidade de espa&ccedil;o em
mem&oacute;ria para ele mesmo. Segundo, considerando que
o <foreignphrase>kernel</foreignphrase> &eacute; carregado
no topo do espa&ccedil;o de endere&ccedil;amento, &eacute;
preciso diminuir o endere&ccedil;o de forma que n&atilde;o
conflite com as p&aacute;ginas anteriores de
mem&oacute;ria, e que no lugar disso, ele seja carregado
em seu novo local.</para>
<para>O primeiro objetivo &eacute; facilmente atingido
aumentando as defini&ccedil;&otilde;es de valores do
<literal>NKPDE</literal> no arquivo
<filename>src/sys/i386/include/pmap.h</filename>. Aqui
est&aacute; o arquivo, como deve ser, para 1GB de
endere&ccedil;o de mem&oacute;ria:</para>
<programlisting>#ifndef NKPDE
#ifdef SMP
#define NKPDE 254 /* addressable number of page tables/pde's */
#else
#define NKPDE 255 /* addressable number of page tables/pde's */
#endif /* SMP */
#endif</programlisting>
<para>Para achar o valor correto de
<literal>NKPDE</literal>, divida o n&uacute;mero desejado
(em megabytes) por quatro, ent&atilde;o subtraia um para
m&aacute;quinas mono processadas e dois para
m&aacute;quinas com SMP.</para>
<para>Para atingir o segundo objetivo &eacute;
necess&aacute;rio descobrir o endere&ccedil;o correto de
carregamento. Para isso basta subtrair o tamanho do
espa&ccedil;o de endere&ccedil;amento desejado (em bytes)
de 0x100100000; o resultado &eacute; 0xc0100000 para um
endere&ccedil;o de espa&ccedil;o de 1 GB. Ajuste
<symbol>LOAD_ADDRESS</symbol> em
<filename>src/sys/i386/conf/Makefile.i386</filename> para
esse valor, agora ajuste o contador de
posi&ccedil;&otilde;o listada no inicio do
<filename>src/sys/i386/conf/kernel.script</filename> para
o mesmo valor, como a seguir:</para>
<programlisting>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-only sections, merged into text segment: */
. = 0xc0100000 + SIZEOF_HEADERS;
.interp : { *(.interp) }</programlisting>
<para>Agora recompile e reinstale seu
<foreignphrase>kernel</foreignphrase>. Provavelmente
aparecer&atilde;o problemas com o &man.ps.1; e com o
&man.top.1;, executar um <command>make world</command> deve
solucionar tais problemas (ou ent&atilde;o, a
recompila&ccedil;&atilde;o manual da
<filename>libkvm</filename>, do &man.ps.1; e do &man.top.1;,
depois de incluir o <filename>pmap.h</filename> alterado
em <filename>/usr/include/vm/</filename>.</para>
<para>OBS: o tamanho do espa&ccedil;o em mem&oacute;ria do
<foreignphrase>kernel</foreignphrase> deve ser um
m&uacute;ltiplo de quatro megabytes.</para>
<para><emphasis>[Adendo por &a.dg;: Acho que o
endere&ccedil;o de espa&ccedil;o do
<foreignphrase>kernel</foreignphrase> precisa ser uma
pot&ecirc;ncia de dois, mas eu n&atilde;o estou certo
disso. O c&oacute;digo do processo de
inicializa&ccedil;&atilde;o antigo costumava mexer com
os bits de endere&ccedil;o de alta ordem, o que
implicava em uma granularidade de
256MB]</emphasis></para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<chapter id="acknowledgments">
<title>Reconhecimentos</title>
<blockquote>
<attribution>Grupo Central (<literal>FreeBSD Core
Team</literal>)</attribution>
<para>Se voc&ecirc; encontrar algum problema no
<literal>FAQ</literal> ou se desejar submeter uma nova
entrada, por favor envie um e-mail para o &a.faq;. N&oacute;s
apreciamos o seu feedback e n&atilde;o podemos tornar este
<literal>FAQ</literal> melhor sem a sua ajuda!</para>
</blockquote>
<variablelist>
<varlistentry>
<term>&a.jkh;</term>
<listitem>
<para>Atualiza&ccedil;&otilde;es e ajustes ocasionais na
ordena&ccedil;&atilde;o das informa&ccedil;&otilde;es do
<literal>FAQ</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&a.dwhite;</term>
<listitem>
<para>Pelos servi&ccedil;os prestados acima e al&eacute;m da
chamada do dever em freebsd-questions</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&a.joerg;</term>
<listitem>
<para>Pelos servi&ccedil;os prestados acima e al&eacute;m da
chamada do dever na Usenet</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&a.wollman;</term>
<listitem>
<para>Rede (<foreignphrase>networking</foreignphrase>) e
formata&ccedil;&atilde;o</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Jim Lowe</term>
<listitem>
<para>Informa&ccedil;&otilde;es sobre
<quote>Multicast</quote></para>
</listitem>
</varlistentry>
<varlistentry>
<term>&a.pds;</term>
<listitem>
<para>Escravo de digita&ccedil;&atilde;o mec&acirc;nica do
<literal>FAQ</literal> FreeBSD</para>
</listitem>
</varlistentry>
<varlistentry>
<term>A Equipe FreeBSD</term>
<listitem>
<para>Reclama&ccedil;&otilde;es, rabujices e envio de
informa&ccedil;&otilde;es</para>
</listitem>
</varlistentry>
</variablelist>
<para>E a todos os outros que n&oacute;s nos esquecemos, nossas
desculpas e obrigado do cora&ccedil;&atilde;o!</para>
</chapter>
</book>
<!--
Local Variables:
mode: sgml
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
End:
-->