             Guia Rapido do FreeBSD para Usuarios Linux(R)

  John Ferrell

   $FreeBSD:
   release/8.4.0/pt_BR.ISO8859-1/articles/linux-users/article.xml
   39890 2012-11-01 10:55:05Z ebrandi $

   Copyright (c) 2008 The FreeBSD Documentation Project

   $FreeBSD:
   release/8.4.0/pt_BR.ISO8859-1/articles/linux-users/article.xml
   39890 2012-11-01 10:55:05Z ebrandi $

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   Linux is a registered trademark of Linus Torvalds.

   Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and
   Xeon are trademarks or registered trademarks of Intel Corporation
   or its subsidiaries in the United States and other countries.

   Red Hat, RPM, are trademarks or registered trademarks of Red Hat,
   Inc. in the United States and other countries.

   UNIX is a registered trademark of The Open Group in the United
   States and other countries.

   Many of the designations used by manufacturers and sellers to
   distinguish their products are claimed as trademarks. Where those
   designations appear in this document, and the FreeBSD Project was
   aware of the trademark claim, the designations have been followed
   by the "(TM)" or the "(R)" symbol.

   O objetivo deste documento e familiarizar rapidamente os usuarios
   intermediarios e avanc,ados de Linux(R) com o FreeBSD.

     --------------------------------------------------------------

1 Introduc,ao

   Este documento ira destacar as diferenc,as entre FreeBSD e Linux
   para que os usuarios intermediarios e avanc,ados possam
   rapidamente se familiarizar com os conceitos basicos do FreeBSD.
   Esta e apenas uma rapida introduc,ao tecnica, ela nao tenta
   discutir as diferenc,as "filosoficas" entre os dois sistemas
   operacionais.

   Este documento assume que voce ja tem o FreeBSD instalado. Se voce
   nao tem o FreeBSD instalado ou precisa de ajuda com o processo de
   instalac,ao, por favor, consulte o capitulo   Instalando o FreeBSD
   no Handbook.

     --------------------------------------------------------------

2 Shells: Sem Bash?

   Usuarios vindos do Linux sao frequentemente surpreendidos por nao
   encontrarem o Bash como o shell padrao no FreeBSD. De fato, o Bash
   nem mesmo esta presente na instalac,ao padrao. Em vez disso, o
   FreeBSD usa o tcsh(1) como shell padrao. Embora o Bash e seus
   outros shells favoritos estejam disponiveis na   Colec,ao de Ports
   do FreeBSD.

   Se voce instalar outros shells, o chsh(1) podera ser usado para
   definir o shell padrao dos usuarios. Contudo, e recomendavel que o
   shell padrao do root permanec,a inalterado. A razao para isso e
   que shells nao incluidos na base do sistema sao normalmente
   instalados em /usr/local/bin ou /usr/bin. Caso ocorra um problema
   no sistema de arquivos no qual estao localizados o /usr/local/bin
   e o /usr/bin, eles nao poderao ser montados. Neste caso, o usuario
   root nao teria acesso ao seu shell padrao, o que o impediria de
   efetuar login. Por este motivo uma segunda conta root, a conta
   toor, foi criada para uso com shells que nao fazem parte da base
   do sistema. Leia o FAQ de seguranc,a para obter informac,oes sobre
   a conta toor.

     --------------------------------------------------------------

3 Pacotes e Ports: Adicionando programas no FreeBSD

   Alem do tradicional metodo UNIX(R) de instalac,ao de programas
   (baixar o codigo fonte, extrair, editar o codigo fonte, e
   compilar), o FreeBSD oferece dois outros metodos para instalar
   aplicac,oes: pacotes e ports. Uma lista completa de todos os ports
   e pacotes disponiveis pode ser encontrada aqui.

     --------------------------------------------------------------

  3.1 Pacotes

   Pacotes sao aplicac,oes pre-compiladas, o equivalente no FreeBSD
   ao .deb nos sistemas baseados no Debian/Ubuntu e ao .rpm nos
   sistemas baseados no Red Hat/Fedora. Pacotes sao instalados usando
   pkg_add(1). Por exemplo, o seguinte comando instala o Apache 2.2:

 # pkg_add /tmp/apache-2.2.6_2.tbz

   Usar a opc,ao -r dira ao pkg_add(1) para baixar automaticamente o
   pacote e instala-lo, juntamente com quaisquer dependencias que ele
   possua:

 # pkg_add -r apache22
 Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/apache22.tbz... Done.
 Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/expat-2.0.0_1.tbz... Done.
 Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/perl-5.8.8_1.tbz... Done.
 [snip]

 To run apache www server from startup, add apache22_enable="YES"
 in your /etc/rc.conf. Extra options can be found in startup script.

     Nota: Se voce esta rodando uma versao de release do FreeBSD
     (6.2, 6.3, 7.0, etc., geralmente instalada a partir de um
     CD-ROM) o pkg_add -r vai baixar o pacote compilado
     especificamente para esta versao. Este pacote pode nao ser a
     versao mais atual da aplicac,ao. Voce pode usar a variavel
     PACKAGESITE para sobrescrever este comportamento padrao. Por
     exemplo, ajuste PACKAGESITE para
     ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/
     para baixar os pacotes mais recentes compilados para a serie
     6.X.

   Para mais informac,oes sobre pacotes, por favor, consulte a sec,ao
   4.4 do Handbook do FreeBSD:   Usando o Sistema de Pacotes.

     --------------------------------------------------------------

  3.2 Ports

   O segundo metodo para instalac,ao de aplicac,oes no FreeBSD e a
   Colec,ao de Ports. A Colec,ao de Ports e um framework de Makefiles
   e patches especialmente customizados para a instalac,ao de varios
   programas a partir do codigo fonte no FreeBSD. Ao instalar um port
   o sistema ira baixar o codigo fonte, aplicar qualquer patch
   necessario, compilar o codigo, e instalar a aplicac,ao. O mesmo
   processo sera aplicado para todas as suas dependencias.

   A Colec,ao de Ports, por vezes designada como a arvore de ports,
   pode ser encontrada em /usr/ports. Isto assumindo que a Colec,ao
   de Ports foi instalada durante o processo de instalac,ao do
   FreeBSD. Se a Colec,ao de Ports nao foi instalada, ela pode ser
   adicionada a partir dos discos de instalac,ao usando
   sysinstall(8), ou baixada dos servidores do FreeBSD usando csup(1)
   ou portsnap(8). Instruc,oes detalhadas para a instalac,ao da
   Colec,ao de Ports podem ser encontradas na   sec,ao 4.5.1 do
   Handbook.

   A instalac,ao de um port e tao simples (geralmente) quanto entrar
   no diretorio do port desejado e iniciar o processo de compilac,ao.
   O exemplo seguinte instala o Apache 2.2 a partir da Colec,ao de
   Ports:

 # cd /usr/ports/www/apache22
 # make install clean

   Um grande beneficio do uso do ports para instalar programas e a
   possibilidade de personalizar as opc,oes de instalac,ao. Por
   exemplo, ao instalar o Apache 2.2 a partir do ports, voce podera
   habilitar o mod_ldap definindo a variavel WITH_LDAP ao executar
   make(1):

 # cd /usr/ports/www/apache22
 # make WITH_LDAP="YES" install clean

   Por favor, leia a sec,ao 4.5 do Handbook do FreeBSD,   Usando a
   Colec,ao de Ports, para maiores informac,oes sobre a Colec,ao de
   Ports.

     --------------------------------------------------------------

  3.3 Ports ou pacotes, qual eu devo usar?

   Pacotes sao apenas ports pre-compilados, entao na pratica e uma
   questao de instalarmos a partir do codigo fonte (ports) contra
   instalarmos de um pacote binario. Cada metodo tem seus proprios
   beneficios:

   Pacotes (binario)

     * Instalac,ao rapida (a compilac,ao de grandes aplicac,oes pode
       ser um tanto demorada).

     * Voce nao precisar saber como compilar o programa.

     * Nao e necessario instalar compiladores no seu sistema.

   Ports (codigo fonte)

     * Possibilidade de personalizar as opc,oes de instalac,ao.
       (Pacotes normalmente sao compilados com as opc,oes padroes.
       Com o ports voce pode personalizar varias opc,oes, como a
       compilac,ao de modulos adicionais ou a mudanc,a do path de
       instalac,ao padrao.)

     * Voce pode aplicar seus proprios patches se assim desejar.

   Se voce nao tem qualquer requisito especial, o sistema de pacotes
   provavelmente vai se adequar muito bem `a sua situac,ao. Se voce
   for precisar personalizar a instalac,ao, o ports e a melhor
   opc,ao. (E lembre-se, se voce precisa personalizar a instalac,ao,
   mas prefere pacotes, voce pode compilar um pacote personalizado a
   partir do ports usando make package e, em seguida, copiar o pacote
   para outros servidores.)

     --------------------------------------------------------------

4 Inicializac,ao do Sistema: Onde estao os run-levels?

   O Linux usa o sistema SysV init, enquanto o FreeBSD usa o
   tradicional BSD-style init(8). Sob o BSD-style init(8) nao existem
   run-levels e nem /etc/inittab, em vez disso a inicializac,ao e
   controlada pelo utilitario rc(8). O script /etc/rc le
   /etc/defaults/rc.conf e /etc/rc.conf para determinar quais
   servic,os serao iniciados. Os servic,os especificados sao, entao,
   inicializados rodando os scripts de inicializac,ao correspondentes
   em /etc/rc.d/ e /usr/local/etc/rc.d/. Esses scripts sao similares
   aos scripts localizados em /etc/init.d/ nos sistemas Linux.

   +----------------------------------------------------------------+
   | Por que existem dois locais para scripts de inicializac,ao de  |
   | servic,os? Os scripts encontrados em /etc/rc.d/ sao para       |
   | aplicac,oes que sao parte da "base" do sistema. (cron(8),      |
   | sshd(8), syslog(3), e outros.) Os scripts em                   |
   | /usr/local/etc/rc.d/ sao para aplicac,oes instaladas pelo      |
   | usuario, como Apache, Squid, etc.                              |
   |                                                                |
   | Qual e a diferenc,a entre a "base" do sistema e as aplicac,oes |
   | instaladas pelo usuario? O FreeBSD e desenvolvido como um      |
   | sistema operacional completo. Em outras palavras, o kernel,    |
   | bibliotecas do sistema, e utilitarios de nivel de usuario      |
   | (como ls(1), cat(1), cp(1), etc.) sao desenvolvidos juntos e   |
   | lanc,ados como um so. Isso e designado como "base" do sistema. |
   | As aplicac,oes instaladas pelo usuario sao aplicac,oes que nao |
   | fazem parte da "base" do sistema, como Apache, X11,            |
   | Mozilla Firefox, etc. Estas aplicac,oes instaladas pelo        |
   | usuario sao geralmente instaladas usando os Pacotes e a        |
   | Colec,ao de Ports. A fim de mante-las separadas da "base" do   |
   | sistema, as aplicac,oes dos usuario sao normalmente instaladas |
   | sob /usr/local/. Portanto, os binarios instalados pelo usuario |
   | residem em /usr/local/bin/, arquivos de configurac,ao em       |
   | /usr/local/etc/, e assim por diante.                           |
   +----------------------------------------------------------------+

   Os Servic,os sao ativados espeficificando
   NomeDoServic,o_enable="YES" em /etc/rc.conf (rc.conf(5)). De uma
   olhada em /etc/defaults/rc.conf para visualizar os padroes do
   sistema, essas configurac,oes padroes podem ser sobrescritas por
   configurac,oes em /etc/rc.conf. Quando instalar aplicac,oes
   adicionais nao deixe de analisar a documentac,ao para determinar
   como ativar qualquer servic,o associado.

   O seguinte trecho do /etc/rc.conf ativa o sshd(8) e o Apache 2.2.
   Ele tambem determina que o Apache deve ser iniciado com SSL.

 # enable SSHD
 sshd_enable="YES"
 # enable Apache with SSL
 apache22_enable="YES"
 apache22_flags="-DSSL"

   Uma vez que o servic,o foi ativado em /etc/rc.conf, ele pode ser
   inicializado pela linha de comando (sem precisar reinicializar o
   sistema):

 # /etc/rc.d/sshd start

   Se o servic,o nao foi ativado, ele pode ser inicializado pela
   linha de comando usando forcestart:

 # /etc/rc.d/sshd forcestart

     --------------------------------------------------------------

5 Configurac,ao da rede

  5.1 Interfaces de Rede

   Em vez do identificador generico ethX, que o Linux usa para
   identificar uma interface de rede, o FreeBSD usa o nome do driver
   do dispositivo de rede seguido por um numero como identificador. A
   seguinte saida do ifconfig(8) mostra duas interfaces de rede
   Intel(R) Pro 1000 (em0 e em1):

 % ifconfig
 em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         options=b<RXCSUM,TXCSUM,VLAN_MTU>
         inet 10.10.10.100 netmask 0xffffff00 broadcast 10.10.10.255
         ether 00:50:56:a7:70:b2
         media: Ethernet autoselect (1000baseTX <full-duplex>)
         status: active
 em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         options=b<RXCSUM,TXCSUM,VLAN_MTU>
         inet 192.168.10.222 netmask 0xffffff00 broadcast 192.168.10.255
         ether 00:50:56:a7:03:2b
         media: Ethernet autoselect (1000baseTX <full-duplex>)
         status: active

     --------------------------------------------------------------

  5.2 Configurac,ao IP

   Um enderec,o IP pode ser atribuido a uma interface de rede usando
   ifconfig(8). No entanto, para mante-lo persistente entre as
   reinicializac,oes, a configurac,ao deve ser incluida em
   /etc/rc.conf. O seguinte exemplo configura o hostname, o enderec,o
   IP, e o gateway padrao:

 hostname="server1.example.com"
 ifconfig_em0="inet 10.10.10.100  netmask 255.255.255.0"
 defaultrouter="10.10.10.1"

   Use a seguinte sintaxe para configurar a interface para DHCP:

 hostname="server1.example.com"
 ifconfig_em0="DHCP"

     --------------------------------------------------------------

6 Firewall

   Como o IPTABLES no Linux, o FreeBSD tambem oferece um firewall ao
   nivel de kernel; atualmente o FreeBSD oferece tres opc,oes de
   firewalls:

     * IPFIREWALL

     * IPFILTER

     * PF

   O IPFIREWALL, ou IPFW (o comando para gerenciar um conjunto de
   regras IPFW e ipfw(8)), e o firewall desenvolvido e mantido pelos
   desenvolvedores do FreeBSD. O IPFW pode ser integrado com
   dummynet(4) para prover a capacidade de controle de trafego e
   simular diferentes tipos de conexoes de rede.

   Amostra de uma regra do IPFW para permitir uma conexao de entrada
   do SSH:

 ipfw add allow tcp from any to me 22 in via $ext_if

   IPFILTER e um aplicativo de firewall desenvolvido por Darren Reed.
   Ele nao e especifico para o FreeBSD e foi portado para varios
   sistemas operacionais, incluindo NetBSD, OpenBSD, SunOS, HP/UX, e
   Solaris.

   Amostra do comando IPFILTER para permitir uma conexao de entrada
   do SSH:

 pass in on $ext_if proto tcp from any to any port = 22

   O ultimo aplicativo de firewall, PF, e desenvolvido pelo projeto
   OpenBSD. O PF foi criado como um substituto para o IPFILTER. Como
   tal, a sintaxe do PF e muito similar `a do IPFILTER. O PF pode ser
   integrado com altq(4) para prover recursos de QoS.

   Amostra do comando PF para permitir uma conexao de entrada do SSH:

 pass in on $ext_if inet proto tcp from any to ($ext_if) port 22

     --------------------------------------------------------------

7 Atualizando o FreeBSD

   Existem tres metodos para atualizar um sistema FreeBSD: a partir
   do codigo fonte, atualizac,ao binaria, e a partir dos discos de
   instalac,ao.

   A atualizac,ao a partir do codigo fonte e a mais demorada, mas por
   outro lado e a que oferece a maior flexibilidade. O processo
   envolve a sincronizac,ao de uma copia local do codigo fonte do
   sistema a partir dos servidores Subversion do FreeBSD. Uma vez que
   o codigo fonte local esta atualizado, voce pode compilar a nova
   versao do kernel e dos aplicativos de nivel de usuario. Para
   maiores informac,oes sobre atualizac,oes a partir do codigo fonte
   veja   o capitulo sobre atualizac,ao no Handbook do FreeBSD.

   As atualizac,oes binarias sao similares ao uso do yum ou apt-get
   para atualizar sistemas Linux. O comando freebsd-update(8) vai
   baixar e instalar as novas atualizac,oes. As atualizac,oes podem
   ser agendadas usando cron(8).

     Nota: Se voce utilizar o cron(8) para agendar as atualizac,oes,
     por favor, certifique-se de usar freebsd-update cron em seu
     crontab(1) para reduzir a possibilidade de que um grande numero
     de maquinas busquem as atualizac,oes todas ao mesmo tempo.

 0 3 * * * root /usr/sbin/freebsd-update cron

   O ultimo metodo de atualizac,ao, a partir dos discos de
   instalac,ao, e um processo bastante simples. Efetue o boot a
   partir dos discos de instalac,ao e selecione a opc,ao para
   atualizar.

     --------------------------------------------------------------

8 procfs: Morto, mas vivo na memoria

   No Linux, para determinar se o encaminhamento IP esta ativado,
   voce pode olhar em /proc/sys/net/ipv4/ip_forward. No FreeBSD voce
   precisa usar o sysctl(8) para ver esta e outras opc,oes do
   sistema, pois o procfs(5) tornou-se obsoleto nas versoes mais
   recentes do FreeBSD. (Embora sysctl tambem esteja disponivel no
   Linux.)

   No exemplo do encaminhamento IP, voce poderia usar o seguinte
   comando para determinar se ele esta ativado no seu sistema
   FreeBSD:

 % sysctl net.inet.ip.forwarding
 net.inet.ip.forwarding: 0

   A opc,ao -a e utilizada para listar todas as configurac,oes do
   sistema:

 % sysctl -a
 kern.ostype: FreeBSD
 kern.osrelease: 6.2-RELEASE-p9
 kern.osrevision: 199506
 kern.version: FreeBSD 6.2-RELEASE-p9 #0: Thu Nov 29 04:07:33 UTC 2007
     root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC

 kern.maxvnodes: 17517
 kern.maxproc: 1988
 kern.maxfiles: 3976
 kern.argmax: 262144
 kern.securelevel: -1
 kern.hostname: server1
 kern.hostid: 0
 kern.clockrate: { hz = 1000, tick = 1000, profhz = 666, stathz = 133 }
 kern.posix1version: 200112
 ...

     Nota: Alguns dos valores do sysctl estao disponiveis somente
     para leitura.

   Existem ocasioes nas quais o procfs e necessario, como na
   execuc,ao de programas antigos, no uso do truss(1) para rastrear
   chamadas de sistema, e para possibilitar a   Compatibilidade
   Binaria com Linux. (Embora a Compatibilidade Binaria com Linux use
   seu proprio procfs, linprocfs(5).) Se voce precisar montar o
   procfs, voce pode adicionar a seguinte entrada no /etc/fstab:

 proc                /proc           procfs  rw,noauto       0       0

     Nota: noauto vai prevenir /proc de ser montado automaticamente
     durante o boot.

   E entao monte o procfs com:

 # mount /proc

     --------------------------------------------------------------

9 Comandos Comuns

  9.1 Gerenciamento de Pacotes



       Comando no Linux       Equivalente no         proposito        
       (Red Hat/Debian)           FreeBSD      
   yum install pacote /                        Instala o pacote a     
   apt-get install pacote    pkg_add -r pacote partir do repositorio  
                                               remoto                 
   rpm -ivh pacote / dpkg -i pkg_add -v pacote Instala um pacote      
   pacote                    
   rpm -qa / dpkg -l         pkg_info          Lista de pacotes       
                                               instalados             

     --------------------------------------------------------------

  9.2 Gerenciamento do Sistema



   Comando no Linux   Equivalente no              Proposito           
                          FreeBSD       
   lspci            pciconf             Lista de dispositivos PCI     
   lsmod            kldstat             Lista de modulos do kernel    
                                        carregados                    
   modprobe         kldload / kldunload Carrega/descarrega modulos do 
                                        kernel                        
   strace           truss               Rastrear chamadas de sistema  

     --------------------------------------------------------------

10 Conclusao

   Esperamos que este documento tenha fornecido para voce o
   suficiente para comec,ar a utilizar o FreeBSD. Certifique-se de
   dar uma olhada no   Handbook do FreeBSD para se aprofundar nos
   topicos abordados, assim como nos muitos topicos nao mencionados
   neste documento.

     --------------------------------------------------------------

            Este, e outros documentos, podem ser obtidos em
                ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

  Para perguntas sobre FreeBSD, leia a documentac,ao antes de contatar
                        <questions@FreeBSD.org>.
       Para perguntas sobre esta documentac,ao, envie e-mail para
                           <doc@FreeBSD.org>.
