                 Guia Rapido do FreeBSD para Usuarios Linux(R)

  John Ferrell

   Revisao: 43184

   Copyright (c) 2008 The FreeBSD Documentation Project

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   Linux is a registered trademark of Linus Torvalds.

   Intel, Celeron, Centrino, Core, 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.

   2013-11-13 07:52:45 por hrs.
   Resumo

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

   [ Documento HTML em partes / Documento HTML completo ]

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

   Indice

   1. Introduc,ao

   2. Shells: Sem Bash?

   3. Pacotes e Ports: Adicionando programas no FreeBSD

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

   5. Configurac,ao da rede

   6. Firewall

   7. Atualizando o FreeBSD

   8. procfs: Morto, mas vivo na memoria

   9. Comandos Comuns

   10. Conclusao

1. Introduc,ao

   Este documento ira destacar as diferenc,as entre FreeBSD e Linux(R) 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(R) 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(R) 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(R).

   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(R) 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(R), 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(R). 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(R), 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(R).)

   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(R)       Equivalente no            proposito          
         (Red Hat/Debian)            FreeBSD      
   yum install pacote / apt-get pkg_add -r pacote Instala o pacote a partir   
   install pacote                                 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        Equivalente no                 Proposito             
        Linux(R)             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.
