                Guia rapido de FreeBSD para usuarios de Linux(R)

  John Ferrell

   Revisao: 092e09873a

   Copyright (c) 2008 Projeto de Documentac,ao do FreeBSD

   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.

   2020-11-22 20:58:48 +0000 por Danilo G. Baio.
   Resumo

   Este documento tem a intenc,ao de familiarizar rapidamente usuarios
   intermediarios ou avanc,ados do Linux(R) com o basico do FreeBSD.

   [ Documento HTML em partes / Documento HTML completo ]

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

   Indice

   1. Introduc,ao

   2. Shell Padrao

   3. Colec,ao de Pacotes e Arvore de Ports: Instalando novos programas no
   FreeBSD

   4. Inicializac,ao do Sistema

   5. Configurac,ao de Rede

   6. Firewall

   7. Atualizando o FreeBSD

   8. procfs: E passado, mas foi nao esquecido

   9. Comandos Comuns

   10. Conclusao

1. Introduc,ao

   Esse documento destaca algumas diferenc,as tecnicas entre o FreeBSD e o
   Linux(R) para que os usuarios intermediarios ou avanc,ados do Linux(R)
   possam se familiarizar rapidamente com o basico do FreeBSD.

   Este documento assume que o FreeBSD ja esta instalado. Acesse o link do
   capitulo Instalando o FreeBSD no Handbook do FreeBSD para obter ajuda no
   processo de instalac,ao.

2. Shell Padrao

   Os usuarios do Linux(R) sao geralmente surpreendidos quando descobrem que
   o Bash nao e o shell padrao do FreeBSD. De fato, o Bash nao e incluido na
   instalac,ao padrao. Ao inves disto, o FreeBSD usa o tcsh(1) como shell
   padrao para o usuario root, e o sh(1), um shell compativel com o Bourne
   shell, como shell padrao para os demais usuarios. O sh(1) e muito similar
   ao Bash mas com um conjunto de funcionalidades muito menor. Geralmente os
   scripts shell escritos para o sh(1) irao ser executados no Bash, mas o
   contrario nao.

   Entretanto, o Bash e outros shells estao disponiveis para a instalac,ao
   usando a Colec,ao de Pacotes e a Arvore de Ports.

   Depois de instalar um novo shell, use o comando chsh(1) para trocar o
   shell padrao do usuario. E recomendado que o shell padrao do usuario root
   se mantenha inalterado uma vez que os shells que nao fazem parte da base
   do sistema sao instalados em /usr/local/bin. No caso de ocorrer algum
   problema com o sistema de arquivos onde o diretorio /usr/local/bin esta
   localizado e este nao puder ser utilizado, o usuario root podera nao ter
   acesso ao shell padrao, evitando que o usuario root entre no sistema para
   corrigir o problema.

3. Colec,ao de Pacotes e Arvore de Ports: Instalando novos programas no FreeBSD

   FreeBSD prove dois metodos para a instalac,ao de novos aplicativos:
   pacotes binarios e atraves da compilac,ao do codigo fonte (Arvore de
   ports). Cada metodo tem seu beneficio:

   Pacotes Binarios
     * Instalac,ao rapida quando comparada com a compilac,ao de grandes
       aplicativos .
     * Nao ha a necessidade de compreender como compilar um software.
     * Nao e necessario a instalac,ao de um compilador.
   Arvore de Ports
     * Possibilidade de customizar as opc,oes de instalac,ao
     * Possibilidade de se aplicar patchs customizados

   Se a instalac,ao da aplicac,ao nao necessitar de opc,oes customizadas, a
   instalac,ao via pacotes e suficiente. Compile o port sempre que o
   aplicativo exigir a personalizac,ao das opc,oes padrao. Se voce necessita
   de pacotes customizados, voce podera obte-los atraves da compilac,ao a
   partir do ports utilizando o comando make Pacotes.

   A lista completa da arvore de ports e dos pacotes pode ser encontrada
   aqui.

  3.1. Pacotes

   Pacotes sao aplicac,oes pre-compiladas, os equivalentes no FreeBSD aos
   arquivos .deb nos sistemas baseados no Debian/Ubuntu e aos arquivos .rpm
   nos sistemas baseados no Fedora/Red Hat. Pacotes sao instalados atraves do
   comando pkg. Por exemplo, o comando a seguir instala o Apache 2.4:

 # pkg install apache24

   Para mais informac,oes sobre pacotes, veja a sec,ao 5.4 do Handbook do
   FreeBSD: Usando pkgng para gerenciar pacotes binarios.

  3.2. Arvore de Ports

   A arvore de ports do FreeBSD e um framework de Makefiles e patches
   customizados especificamente para a instalac,ao atraves do codigo fonte no
   FreeBSD. Quando um port e instalado, o sistema ira buscar o codigo fonte,
   aplicar qualquer patch que seja necessario, compilar o codigo, instalar a
   aplicac,ao e qualquer outra dependencia da qual ela necessite.

   A Colec,ao de Ports, algumas vezes referenciada como a arvore de ports,
   pode ser instalada em /usr/ports usando o comando portsnap(8) (se estiver
   rodando FreeBSD 11.4 ou 12.1) ou Subversion (se estiver rodando
   FreeBSD-CURRENT). Instruc,oes detalhadas para instalac,ao da Colec,ao de
   Ports podem ser encontradas na sec,ao 5.5 do Handbook do FreeBSD.

   Para compilar um port, mude para o diretorio do port e inicie o processo
   de compilac,ao. O exemplo abaixo instala o Apache 2.4 atraves da Colec,ao
   de Ports:

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

   Um dos beneficios de usar a arvore de ports para realizar a instalac,ao de
   um software e a possibilidade de customizar as opc,oes de instalac,ao. O
   exemplo a seguir, especifica que o modulo mod_ldap tambem deve ser
   instalado:

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

   Veja Usando a Colec,ao de Ports para mais informac,oes.

4. Inicializac,ao do Sistema

   Muitas distribuic,oes Linux(R) usam o sistema init do SysV, enquanto o
   FreeBSD usa o tradicional init(8) estilo BSD. Por utilizar este sistema
   init(8), nao existe niveis diferenciados de execuc,ao e o arquivo
   /etc/inittab nao existe. Ao inves disto, a inicializac,ao e controlada por
   meio de scripts rc(8). Na inicializac,ao do sistema, o /etc/rc le o
   arquivo /etc/rc.conf e o arquivo /etc/defaults/rc.conf para determinar
   quais sao os servic,os que devem ser inicializados. Os servic,os
   especificados sao inicializados pela execuc,ao de scripts de
   inicializac,ao localizados em /etc/rc.d/ e /usr/local/etc/rc.d/. Esses
   scripts sao similares aos contidos no diretorio /etc/init.d/ dos sistemas
   Linux(R).

   Os scripts encontrados no diretorio /etc/rc.d/ fazem parte das aplicac,oes
   da "base" do sistema, tais como cron(8), sshd(8), e syslog(3). Os scripts
   encontrados no diterorio /usr/local/etc/rc.d/ correspondem aos aplicativos
   instalados pelo usuario, como por exemplo: Apache e Squid.

   Uma vez que o FreeBSD e desenvolvido como um sistema completo, aplicac,oes
   instaladas pelos usuarios nao sao consideradas parte do sistema "base". As
   aplicac,oes dos usuarios sao geralmente instaladas por meio dos Pacotes
   Binarios ou da Colec,ao de Ports. Para mante-los separados da base do
   sistema, eles sao instalados sob o diretorio /usr/local/. Portanto, os
   aplicativos binarios instalados pelos usuarios localizam-se em
   /usr/local/bin/, e os arquivos de configurac,ao em /usr/local/etc/.

   Os servic,os sao habilitados pela adic,ao de uma entrada no arquivo
   /etc/rc.conf . As configurac,oes padroes sao encontradas no arquivo
   /etc/defaults/rc.conf e essas configurac,oes padroes sao sobre postas
   pelas configurac,oes realizadas no arquivo /etc/rc.conf. Veja o manual do
   rc.conf(5) para maiores informac,oes sobre as entradas disponiveis. Quando
   voce instalar aplicac,oes adicionais, leia as mensagens de instalac,ao da
   aplicac,ao para determinar como habilitar os servic,os associados a essa
   aplicac,ao.

   As seguintes entradas no arquivo /etc/rc.conf habilitam o sshd(8), o
   Apache 2.4, e especifica que o Apache deve ser inicializado com SSL
   ativado.

 # enable SSHD
 sshd_enable="YES"
 # enable Apache with SSL
 apache24_enable="YES"
 apache24_flags="-DSSL"

   Uma vez que o servic,o tenha sido habilitado no arquivo /etc/rc.conf, ele
   pode ser inicializado sem a necessidade de uma reinicializac,ao do
   sistema.

 # service sshd start
 # service apache24 start

   Se o servic,o nao tiver sido habilitado, ele podera ser inicializado a
   partir da linha de comando usando a opc,ao onestart:

 # service sshd onestart

5. Configurac,ao de Rede

   Diferente da identificac,ao generica ethX usada pelo Linux(R) para
   identificar a interface de rede, o FreeBSD usa o nome do driver seguido
   por um numero. A seguinte saida do comando 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

   Um enderec,o IP pode ser designado `a uma interface utilizando o comando
   ifconfig(8). Para torna-lo definitivo e persistente entre as
   reinicializac,oes, o enderec,o IP deve ser incluido no arquivo
   /etc/rc.conf. A seguinte entrada no arquivo /etc/rc.conf especifica o nome
   da maquina, o enderec,o IP e o gateway padrao da rede:

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

   Use a seguinte entrada para configurar uma interface para obter sua
   configurac,ao por meio do DHCP:

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

6. Firewall

   O sistema FreeBSD nao utiliza o Linux(R) IPTABLES como seu firewall, o
   FreeBSD oferece tres tipos de firewall a nivel de kernel:

     * PF
     * IPFILTER
     * IPFW

   O PF e desenvolvido pelo projeto OpenBSD e portado para o FreeBSD. O PF
   foi criado para substituir o IPFILTER e sua sintaxe e similar ao IPFILTER.
   O PF pode ser utilizado em conjunto com altq(4) para prover funcionalidade
   de QoS.

   O exemplo abaixo mostra uma regra do PF para permitir conexoes de entrada
   do SSH:

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

   O IPFILTER e uma aplicac,ao de firewall desenvolvida por Darren Reed. Ela
   nao e especifica para o FreeBSD e foi portado para diversos sistemas
   operacionais, incluindo NetBSD, OpenBSD, SunOS, HP/UX, e Solaris.

   A sintaxe do IPFILTER para permitir conexoes de entrada do SSH e:

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

   O IPFW e o firewall desenvolvido e mantido pelo FreeBSD. Ele pode ser
   utilizado em conjunto com o dummynet(4) para prover a funcionalidade de
   traffic shaping e simular diferentes tipos de conexoes de rede.

   A sintaxe do IPFW para permitir conexoes de entrada do SSH e:

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

7. Atualizando o FreeBSD

   Existem dois metodos para realizar a atualizac,ao em um sistema FreeBSD: a
   partir do codigo fonte ou atualizac,ao binaria.

   Atualizar atraves do codigo fonte e a forma mais trabalhosa, mas ela
   oferece uma grande flexibilidade. O processo envolve a sincronizac,ao da
   copia local do codigo fonte do FreeBSD com os servidores de Subversion do
   FreeBSD. Uma vez que o codigo fonte local esteja atualizado, uma nova
   versao do kernel e da userland poderao ser compiladas.

   Atualizac,ao binaria e similar ao uso do comando yum ou apt-get para
   atualizar um sistema Linux(R). No FreeBSD, o comando freebsd-update(8)
   pode ser utilizado para buscar uma nova atualizac,ao binaria e a
   instala-la. Estas atualizac,oes podem ser agendada usando o cron(8).

  Nota:

   Quando utilizar o cron(8) para agendar as atualizac,oes, use o comando
   freebsd-update cron no arquivo crontab(1) para reduzir a possibilidade de
   que um grande numero de maquinas busquem a atualizac,ao ao mesmo tempo:

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

   Para maiores informac,oes sobre a atualizac,ao por meio do codigo fonte ou
   dos updates binarios, acesse o capitulo sobre atualizac,ao do Handbook do
   FreeBSD .

8. procfs: E passado, mas foi nao esquecido

   Em algumas distribuic,oes do Linux(R), voce pode consultar o
   /proc/sys/net/ipv4/ip_forward para verificar se o encaminhamento de IP
   esta ou nao abilitado. No FreeBSD, o comando sysctl(8) e utilizado para
   ver o status desta e tambem de outras variaveis do sistema.

   Por exemplo, use o seguinte comando para determinar se o encaminhamento de
   IP esta ou nao habilitado.

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

   Use a opc,ao -a para ver todas as variaveis do sistema:

 % sysctl -a | more

   Se alguma aplicac,ao necessitar do procfs, adicione a seguinte entrada no
   arquivo /etc/fstab:

 proc                /proc           procfs  rw,noauto       0       0

   Incluindo a opc,ao noauto ira previnir que o /proc seja montado
   automaticamente durante a inicializac,ao do sistema.

   Para montar o sistema de arquivos sem reinicializar:

 # mount /proc

9. Comandos Comuns

   Alguns comandos comuns e equivalentes sao os seguintes:

    Comandos do Linux(R)   Equivalente no              Proposito              
      (Red Hat/Debian)         FreeBSD     
   yum install package /   pkg install     Instalac,ao de um pacote binario   
   apt-get install package package         de um repositorio remoto           
   rpm -ivh package / dpkg pkg add package Instalac,ao de um pacote local.    
   -i package              
                                           Listar os pacotes instalados       
   rpm -qa / dpkg -l       pkg info        (Pacotes binarios e atraves da     
                                           arvore de ports)                   
   lspci                   pciconf         Lista os dispositivos PCI          
   lsmod                   kldstat         Lista os modulos do kernel que     
                                           foram carregados                   
   modprobe                kldload /       Carrega/Descarrega modulos do      
                           kldunload       kernel.                            
   strace                  truss           Rastreia chamadas do sistema       

10. Conclusao

   EEste documento forneceu uma visao geral do FreeBSD. Veja o Handbook do
   FreeBSD para uma cobertura mais profunda desses topicos, assim como outros
   nao cobertos por este documento.
