                   Guia de FreeBSD para usuarios de Linux(R)

  John Ferrell

   Revision: 32483e929e

   Copyright (c) 2008 El Proyecto de Documentacion de FreeBSD

   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 trademarks 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.

   2019-03-29 15:24:26 +0000 por Gabor Kovesdan.
   Resumen

   El objetivo de este documento es familiarizar de forma rapida a usuarios
   de nivel intermedio o avanzado de Linux(R) sobre los conceptos basicos de
   FreeBSD.

   Traduccion de Gabor Ko:vesdan <gabor@FreeBSD.org>.

   [ Split HTML / Single HTML ]

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

   Tabla de contenidos

   1. Introduccion

   2. Shells: ?No esta Bash?

   3. Packages y Ports: Instalacion de software en FreeBSD

   4. Arranque del sistema: ?Donde estan los niveles de ejecucion?

   5. Configuracion de la red

   6. Firewall

   7. Actualizando FreeBSD

   8. procfs: Desaparecido pero no olvidado

   9. Comandos comunes

   10. ConclusiA^3n

1. Introduccion

   En este documento se muestran las diferencias entre FreeBSD y Linux(R)
   para que usuarios de nivel intermedio o avanzado de Linux(R) puedan
   aprender rapidamente los fundamentos de FreeBSD. Es solamente una breve
   presentacion tecnica, no intenta explicar las diferencias de las
   "filosofias" que hay detras de ambos sistemas operativos.

   Este documento presupone que usted ya tiene FreeBSD instalado. Si no lo ha
   instalado o necesita ayuda con el proceso de la instalacion consulte el
   capitulo en el que se explica la instalacion de FreeBSD del Handbook.

2. Shells: ?No esta Bash?

   Quienes vienen de Linux(R) se suelen sorprender de que Bash no sea la
   shell por omision, que en FreeBSD es tcsh(1). De hecho Bash ni siquiera
   forma parte de la instalacion minima de FreeBSD. A pesar de esto tanto
   Bash como cualquiera de sus shell favoritas estan en la Coleccion de
   Packages y Ports de FreeBSD.

   Si instala otras shell puede usar chsh(1) como shell por omision para sus
   usuarios, pero le recomendamos encarecidamente que no cambie la shell por
   omision del usuario root. La razon es que las shell que no forman parte de
   la instalacion base generalmente se instalan en /usr/local/bin o en
   /usr/bin. En caso de problemas es posible que los sistemas de ficheros
   donde estan /usr/local/bin y /usr/bin no puedan montarse. En un caso asi
   root no podria acceder a su shell por omision, con lo que no podria
   iniciar su sesion. Para evitar este tipo de problemas se creo una segunda
   cuenta de usuario root, el usuario toor. Consulte la seccion de seguridad
   de las FAQ si quiere saber mas sobre la cuenta toor.

3. Packages y Ports: Instalacion de software en FreeBSD

   Aparte del metodo tradicional de instalar software en UNIX(R) (descargar
   fuentes, descomprimir, editar el fuente y compilar), FreeBSD ofrece dos
   alternativas para instalar programas: packages y dos alternativas para
   instalar programas: package y ports. Una lista y ports. Hay una lista
   completa de los ports disponibles aqui.

  3.1. Packages

   Los "packages" son programas precompilados, equivalentes en FreeBSD a los
   ficheros .deb en sistemas Debian/Ubuntu y .rpm en sistemas Red Hat/Fedora.
   Los packages se instalan usando pkg_add(1). Por ejemplo, puede instalar
   Apache 2.2 del siguiente modo:

 # pkg_add /tmp/apache-2.2.6_2.tbz

   Al usar la opcion -r, pkg_add(1) automaticamente descargara el package
   indicado y lo instalara, asi como todos aquellos que necesite para su
   funcionamiento. Esto son las dependencias.

 # 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:

   Si usa una version release de FreeBSD (6.2, 6.3, 7.0, etc., lo que
   seguramente es una instalacion desde CD-ROM) pkg_add -r descargara
   packages compilados para esa release especifica. Estos packages pueden ser
   versiones desactualizadas del programa. Puede usar la variable PACKAGESITE
   para ignorar este comportamiento, que es el que se espera por omision del
   programa. Por ejemplo, asigne a PACKAGESITE el valor
   ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/ si
   quiere descargar los packages mas recientes compilados para la version
   6.X.

   Para mas informacion sobre los packages consulte la seccion 4.4 del
   Handbook: Uso del sistema de packages.

  3.2. Ports

   El segundo metodo que ofrece FreeBSD para instalar programas es usar la
   Coleccion de Ports. la Coleccion de Ports es un entorno de ficheros
   Makefile y parches adaptados especificamente para poder instalar desde el
   codigo fuente aplicaciones de lo mas variopinto en sistemas FreeBSD. Si
   instala un port el sistema descargara los fuentes, aplicara los parches
   necesarios, compilara el codigo e instalara el programa (y hara
   exactamente los mismo con todas las dependencias).

   La Coleccion de Ports, tambien conocida como arbol de ports, esta en
   /usr/ports si se instalo durante el proceso de instalacion de FreeBSD. Si
   la Coleccion de Ports no esta instalada puede hacerlo puede hacerlo desde
   los discos de instalacion mediante sysinstall(8) o desde los servidores de
   FreeBSD gracias a csup(1) o portsnap(8). Tiene instrucciones detalladas
   para instalar la Coleccion de Ports en la seccion 4.5.1 del Handbook.

   Instalar un port es (generalmente) tan simple como entrar en el directorio
   del port y ejecutar el proceso de compilacion. El ejemplo que se muestra a
   continuacion instala Apache 2.2 desde la Coleccion de Ports:

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

   Una de las principales ventajas del uso de ports para instalar software es
   la posibilidad de ajustar las opciones de la instalacion. Por ejemplo, es
   posible activar mod_ldap dentro de su Apache 2.2 durante la instalacion
   mediante el uso de la variable WITH_LDAP de make(1):

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

   Para mas informacion sobre la Coleccion de Ports consulte la seccion del
   Handbook dedicada a la Coleccion de Ports.

  3.3. ?Que deberia usar? ?Ports o Packages?

   Los packages son simplemente ports precompilados, asi que es cuestion de
   elegir entre instalar desde los fuentes (ports) o instalar binarios
   directamente (packages). Cualquiera de los dos tiene sus propias ventajas:

   Package (binario)
     * Instalacion mas rapida (compilar programas grandes puede llevar su
       tiempo).
     * No hay que comprender el proceso de compilar software.
     * No es necesario instalar compiladores en su sistema.
   Ports (fuente)
     * Es posible ajustar las opciones de la instalacion. (Los packages se
       generan normalmente con las opciones estandar. Con los ports puede
       ajustar diversas opciones, como disponer de modulos adicionales o
       cambiar la ruta por omision.)
     * Puede usar sus propios parches si tiende hacerlo.

   Si no tiene requisitos especiales los packages probablemente cubran sus
   necesidades sin problema. Si alguna vez necesita algo mas ajustado puede
   recurrir a los ports. Tenga en cuenta que si necesita un programa a su
   medida pero sigue prefiriendo usar packages puede hacerse uno su gusto
   mediante make patch y luego copie el package a otras maquinas.

4. Arranque del sistema: ?Donde estan los niveles de ejecucion?

   Linux(R) usa el sistema de inicio SysV, mientras que FreeBSD usa el
   sistema init(8) tradicional en BSD. En el init(8) del estilo BSD no
   existen ni los niveles de ejecucion ni /etc/inittab; en vez de esto el
   inicio se controla desde rc(8). El script /etc/rc lee los ficheros
   /etc/defaults/rc.conf y /etc/rc.conf para determinar que servicios deben
   arrancarse. Despues de esto se arrancan los servicios a los que se hace
   referencia en los scripts de arranque ubicados en /etc/rc.d/ o
   /usr/local/etc/rc.d/. Estos scripts son similares a los que hay en
   /etc/init.d/ en un sistema Linux(R).

   ?Por que los script de arranque arranque estan en dos sitios? Los script
   situados en /etc/rc.d/ son para programas del sistema "base", como
   cron(8), sshd(8), syslog(3) y otros. Los scripts de /usr/local/etc/rc.d/
   son para software instalado por el usuario como por ejemplo Apache, Squid,
   etc.

   ?Cual es la diferencia entre el sistema "base" y los programas instalados
   por el usuario? FreeBSD se desarrolla como un sistema operativo completo.
   En otras palabras, el kernel, las bibliotecas del sistema y las utilidades
   (por ejemplo ls(1), cat(1), cp(1), etc.) se desarrollan y se publican como
   un todo. A esto es a lo que nos referimos como "sistema base". Los
   programas instalados por el usuario, como por ejemplo Apache, X11,
   Mozilla Firefox, etc. no forman parte del sistema "base". Estos programas
   normalmente se instalan desde la Coleccion de Packages y Ports. Para
   separarlos del sistema "base" se instalan normalmente en /usr/local/. De
   ahi que los binarios de los programas instalados por los usuario se situen
   en /usr/local/bin/, los ficheros de configuracion en /usr/local/etc/, etc.

   Los servicios se arrancan mediante lineas NombreDeServicio_enable="YES" en
   /etc/rc.conf (rc.conf(5)). Eche un vistazo a /etc/defaults/rc.conf: La
   configuracion por omision del sistema puede sobreescribirse desde
   /etc/rc.conf. Ademas, al instalar programas debe asegurarse de leer la
   documentacion para determinar como arrancar los servicios que puedan estar
   relacionados.

   El siguiente fragmento de /etc/rc.conf arranca sshd(8) y Apache 2.2.
   Tambien hace que Apache arranque con SSL.

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

   Una vez que un servicio aparece en /etc/rc.conf el servicio puede
   arrancarse desde la linea de comandos (sin reiniciar el sistema):

 # /etc/rc.d/sshd start

   Si un servicio no dispone de la correspondiente entrada en /etc/rc.conf se
   puede arrancar desde la linea de comandos usando la opcion forcestart:

 # /etc/rc.d/sshd forcestart

5. Configuracion de la red

  5.1. Interfaces de red

   Los nombres de interfaces de red representan en FreeBSD el nombre del
   controlador seguido por un numero, en lugar del esquema que usa Linux(R),
   el generico. ethX. La salida de ifconfig(8) que se muestra a continuacion
   presenta dos interfaces del tipo Intel(R) Pro 1000 (em0 y 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

   Una direcciA^3n IP puede ser asignada a una interfaz usando ifconfig(8).
   Para que permanezca entre reinicios, la configuraciA^3n IP debe ser
   incluida en /etc/rc.conf. Las siguientes entradas en /etc/rc.conf
   especifican el hostname, la direcciA^3n IP, y el gateway por defecto:

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

   En su lugar, utilice las siguientes entradas para configurar una interfaz
   de red con DHCP:

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

6. Firewall

   FreeBSD no usa las IPTABLES de Linux(R) para su firewall. En su lugar,
   FreeBSD ofrece tres firewalls a nivel del kernel:

     * PF
     * IPFILTER
     * IPFW

   PF estA! desarrollado por el proyecto OpenBSD y portado a FreeBSD. PF fue
   creado como un reemplazo para IPFILTER y su sintaxis es similar. PF se
   puede combinar con altq(4) para proporcionar QoS.

   Este ejemplo de PF permite la entrada de trA!fico SSH:

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

   IPFILTER es el firewall desarrollado por Darren Reed. No es especAfico de
   FreeBSD y se ha portado a varios sistemas operativos, incluidos NetBSD,
   OpenBSD, SunOS, HP/UX y Solaris.

   La sintaxis de IPFILTER para permitir la entrada de trA!fico SSH es:

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

   IPFW es el cortafuegos desarrollado y mantenido por FreeBSD. Se puede
   combinar con dummynet(4) para proporcionar traffic shaping y simular
   diferentes tipos de conexiones.

   La sintaxis de IPFW para permitir la entrada de trA!fico SSH serAa:

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

7. Actualizando FreeBSD

   Hay dos mA(c)todos para actualizar un sistema FreeBSD: desde el cA^3digo
   fuente o desde la actualizaciA^3n de los binarios.

   Actualizar desde cA^3digo fuente es el mA(c)todo mA!s complejo pero el que
   ofrece mayor flexibilidad. El proceso implica la sincronizaciA^3n de una
   copia local del cA^3digo fuente de FreeBSD con los servidores Subversion
   de FreeBSD. Una vez actualizado el cA^3digo fuente, puede compilar nuevas
   versiones del kernel y utilidades.

   Las actualizaciones de los binarios son similares a usar yum o apt-get
   para actualizar un sistema Linux(R). En FreeBSD, freebsd-update(8) puede
   usarse para obtener las nuevas actualizaciones de los binarios e
   instalarlas. Estas actualizaciones pueden ser programadas usando cron(8).

  Nota:

   Cuando use cron(8) para programar actualizaciones, use freebsd-update cron
   en crontab(1) para reducir la posibilidad de que una gran cantidad de
   mA!quinas se actualicen al mismo tiempo:

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

   Para obtener mA!s informaciA^3n de las actualizaciones de cA^3digo y
   binarias, consulte el capAtulo sobre la actualizaciA^3n en el Manual de
   FreeBSD.

8. procfs: Desaparecido pero no olvidado

   En algunas distribuciones de Linux(R), puede consultar
   /proc/sys/net/ipv4/ip_forward para determinar si IP forwarding estA!
   habilitado. En FreeBSD, sysctl(8) se usa para ver esta y otras
   configuraciones del sistema.

   Por ejemplo, utilice el siguiente comando para comprobar si IP forwarding
   estA! habilitado en FreeBSD:

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

   Use -a para listar todos los ajustes del sistema:

 % sysctl -a | more

   Si una aplicaciA^3n necesita procfs, aA+-ada la siguiente lAnea a
   /etc/fstab:

 proc                /proc           procfs  rw,noauto       0       0

   Incluir noauto evitarA! que /proc se monte automA!ticamente en el
   arranque.

   Para montar el sistema de archivos sin reiniciar:

 # mount /proc

9. Comandos comunes

   Algunos equivalentes de los comandos comunes son los siguientes:

    Comando Linux(R) (Red    Equivalente en               Objetivo            
         Hat/Debian)             FreeBSD       
   yum install package /   pkg install package Instalar el paquete desde el   
   apt-get install package                     repositorio remoto             
   rpm -ivh package / dpkg pkg add package     Instalar un paquete local      
   -i package              
   rpm -qa / dpkg -l       pkg info            Listar los paquetes instalados 
   lspci                   pciconf             Listar los dispositivos PCI    
   lsmod                   kldstat             Listar los mA^3dulos cargados  
                                               en el kernel                   
   modprobe                kldload / kldunload Cargar/Descargar mA^3dulos del 
                                               kernel                         
   strace                  truss               Rastrear llamadas al sistema   

10. ConclusiA^3n

   Este documento ha proporcionado una visiA^3n general de FreeBSD. Consulte
   el Manual de FreeBSD para obtener una informaciA^3n mA!s detallada de los
   temas tratados, asA como otros muchos temas que no se han tratado en este
   documento.
