Guía de &os; para usuarios de &linux;JohnFerrell2008El Proyecto de Documentación de &os;$FreeBSD$$FreeBSD$
&tm-attrib.freebsd;
&tm-attrib.linux;
&tm-attrib.intel;
&tm-attrib.redhat;
&tm-attrib.unix;
&tm-attrib.general;
El objetivo de este documento es familiarizar de forma
rápida a usuarios de nivel intermedio o avanzado de
&linux; sobre los conceptos básicos de
&os;.
&trans.es.gabor;
IntroducciónEn este documento se muestran las diferencias entre &os; y &linux;
para que usuarios de nivel intermedio o avanzado de &linux; puedan
aprender rápidamente los fundamentos de &os;. Es solamente
una breve presentación técnica, no intenta explicar
las diferencias de las filosofías que hay
detrás de ambos sistemas operativos.Este documento presupone que usted ya tiene &os; instalado. Si no lo
ha instalado o necesita ayuda con el proceso de la instalación
consulte el capítulo en el que se explica la
instalación de &os; del Handbook.Shells: ?No está Bash?Quienes vienen de &linux; se suelen sorprender de que
Bash no sea la shell por omisión,
que en &os; es &man.tcsh.1;. De hecho Bash
ni siquiera forma parte de la instalación mínima de
&os;. A pesar de esto tanto Bash como
cualquiera de sus shell favoritas están en la Colección de Packages y Ports
de &os;.Si instala otras shell puede usar &man.chsh.1; como shell por
omisión para sus usuarios, pero le recomendamos encarecidamente
que no cambie la shell por omisión del usuario
root. La razón es que las shell que no
forman parte de la instalación base generalmente se instalan en
/usr/local/bin o en
/usr/bin. En caso de problemas es posible que
los sistemas de ficheros donde están
/usr/local/bin y /usr/bin
no puedan montarse. En un caso así
root no podría acceder a su shell por
omisión, con lo que no podría iniciar su sesión.
Para evitar este tipo de problemas se creó una segunda cuenta
de usuario root, el usuario
toor. Consulte la sección de seguridad
de las FAQ si quiere saber más sobre la cuenta toor.Packages y Ports: Instalación de software en &os;Aparte del método tradicional de instalar software en &unix;
(descargar fuentes, descomprimir, editar el fuente y compilar),
&os; 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 aquí.PackagesLos packages son programas precompilados,
equivalentes en &os; a los ficheros .deb en
sistemas Debian/Ubuntu y .rpm en sistemas
Red Hat/Fedora. Los packages se instalan usando
&man.pkg.add.1;. Por ejemplo, puede instalar
Apache 2.2 del siguiente modo:&prompt.root; pkg_add /tmp/apache-2.2.6_2.tbzAl usar la opción , &man.pkg.add.1;
automáticamente descargará el package indicado y
lo instalará, así como todos aquellos que necesite
para su funcionamiento. Esto son las
dependencias.&prompt.root; 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.Si usa una versión release de &os; (6.2, 6.3, 7.0,
etc., lo que seguramente es una instalación desde CD-ROM)
pkg_add -r descargará packages
compilados para esa release específica. Estos packages
pueden ser versiones desactualizadas
del programa. Puede usar la variable PACKAGESITE
para ignorar este comportamiento, que es el que se espera por
omisión 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 más recientes compilados
para la versión 6.X.Para más información sobre los packages consulte
la sección 4.4 del Handbook: Uso del sistema de packages.PortsEl segundo método que ofrece &os; para instalar programas
es usar la Colección de Ports. la Colección de Ports es
un entorno de ficheros Makefile y parches
adaptados específicamente para poder instalar desde el
código fuente aplicaciones de lo más variopinto en
sistemas &os;. Si instala un port el sistema descargará
los fuentes, aplicará los parches necesarios, compilará
el código e instalará el programa (y hará
exactamente los mismo con todas las dependencias).La Colección de Ports, también conocida como
árbol de ports, está en
/usr/ports si se instaló durante el
proceso de instalación de &os;. Si la Colección de
Ports no está instalada puede hacerlo puede hacerlo desde
los discos de instalación mediante &man.sysinstall.8; o
desde los servidores de &os; gracias a &man.csup.1; o
&man.portsnap.8;. Tiene instrucciones detalladas para instalar la
Colección de Ports en la sección 4.5.1
del Handbook.Instalar un port es (generalmente) tan simple como entrar en
el directorio del port y ejecutar el proceso de
compilación. El ejemplo que se muestra a continuación
instala Apache 2.2 desde la Colección
de Ports:&prompt.root; cd /usr/ports/www/apache22
&prompt.root; make install cleanUna de las principales ventajas del uso de ports para instalar
software es la posibilidad de ajustar las opciones de la
instalación. Por ejemplo, es posible activar
mod_ldap dentro de su
Apache 2.2 durante la instalación
mediante el uso de la variable WITH_LDAP
de &man.make.1;:&prompt.root; cd /usr/ports/www/apache22
&prompt.root; make WITH_LDAP="YES" install cleanPara más información sobre la Colección
de Ports consulte la sección del Handbook dedicada a la
Colección de Ports.?Qué debería usar? ?Ports o Packages?Los packages son simplemente ports precompilados, así que
es cuestión de elegir entre instalar desde los fuentes (ports)
o instalar binarios directamente (packages). Cualquiera de los
dos tiene sus propias ventajas:Package (binario)Instalación más rápida
(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
instalación. (Los packages se generan normalmente con las
opciones estándar. Con los ports puede ajustar diversas
opciones, como disponer de módulos adicionales o cambiar
la ruta por omisión.)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 más 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
makepatch y luego
copie el package a otras máquinas.Arranque del sistema: ?Dónde están los
niveles de ejecución?&linux; usa el sistema de inicio SysV, mientras que &os; usa el
sistema &man.init.8; tradicional en BSD. En el &man.init.8; del
estilo BSD no existen ni los niveles de ejecución ni
/etc/inittab; en vez de esto el inicio se controla
desde &man.rc.8;. El script /etc/rc lee
los ficheros /etc/defaults/rc.conf y
/etc/rc.conf para determinar qué servicios
deben arrancarse. Después 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;.?Por qué los script de arranque
arranque están en dos sitios? Los script situados en
/etc/rc.d/ son para programas del sistema
base, como &man.cron.8;, &man.sshd.8;, &man.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.?Cuál es la diferencia entre el sistema
base y los programas instalados por el
usuario? &os; se desarrolla como un sistema operativo
completo. En otras palabras, el kernel, las bibliotecas del
sistema y las utilidades (por ejemplo &man.ls.1;, &man.cat.1;,
&man.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 Colección de Packages y
Ports.
Para separarlos del sistema base se instalan
normalmente en /usr/local/. De ahí que
los binarios de los programas instalados por los usuario se
sitúen en /usr/local/bin/, los ficheros
de configuración en /usr/local/etc/,
etc.Los servicios se arrancan mediante líneas
NombreDeServicio_enable="YES" en
/etc/rc.conf (&man.rc.conf.5;). Eche un vistazo
a /etc/defaults/rc.conf: La configuración
por omisión del sistema puede sobreescribirse desde
/etc/rc.conf. Además, al instalar programas
debe asegurarse de leer la documentación para determinar
cómo arrancar los servicios que puedan estar relacionados.El siguiente fragmento de /etc/rc.conf
arranca &man.sshd.8; y Apache 2.2.
También 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 línea de comandos (sin reiniciar el sistema):&prompt.root; /etc/rc.d/sshd startSi un servicio no dispone de la correspondiente entrada en
/etc/rc.conf se puede arrancar desde la
línea de comandos usando la opción
:&prompt.root; /etc/rc.d/sshd forcestartConfiguración de la redInterfaces de redLos nombres de interfaces de red representan en &os;
el nombre del controlador seguido por un número, en lugar del
esquema que usa &linux;, el genérico.
ethX. La salida de &man.ifconfig.8; que se
muestra a continuación presenta dos interfaces del
tipo &intel; Pro 1000 (em0 y em1):&prompt.user; 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: activeConfiguración de IPCon &man.ifconfig.8; puede asignar una dirección IP
a una interfaz de red. No obstante, si quiere que la IP siga
asignada a la interfaz después de reiniciar tendrá
que incluirla en /etc/rc.conf. En el ejemplo
siguiente se especifica el nombre de la máquina, la
la dirección IP y la puerta de enlace por omisión:hostname="servidor1.ejemplo.com"
ifconfig_em0="inet 10.10.10.100 netmask 255.255.255.0"
defaultrouter="10.10.10.1"Con la siguiente configuración la interfaz indicada
intentará obtener una dirección IP mediante
DHCP:hostname="servidor1.ejemplo.com"
ifconfig_em0="DHCP"CortafuegosIgual que &linux; dispone de IPTABLES,
&os; también disponde de cortafuegos integrado en el kernel,
solo que &os; en lugar de uno dispone de tres:IPFIREWALLIPFILTERPFIPFIREWALL o
IPFW (el programa para manejar las reglas de
IPFW es &man.ipfw.8;) es el cortafuegos
que desarrollan y mantienen los desarrolladores de &os;.
IPFW se puede combinar con &man.dummynet.4;
para conseguir servicios de traffic shaping y simular
diferentes tipos de conexiones.Veamos un ejemplo de regla que permite la entrada de tráfico
SSH:ipfw add allow tcp from any to me 22 in via $ext_ifIPFILTER es el cortafuegos que
desarrolla Darren Reed. No es específico de &os; y se ha
portado ya a diversos sistemas operativos como NetBSD, OpenBSD,
SunOS, HP/UX y Solaris.El siguiente ejemplo permite la entrada de tráfico
SSH:pass in on $ext_if proto tcp from any to any port = 22El último cortafuegos,
PF, ha sido desarrollado por el proyecto
OpenBSD. PF fue creado como sustituto de
IPFILTER, de ahí que la sintaxis de
PF sea muy similar a la de
IPFILTER. PF se
puede combinar con &man.altq.4; para disponer de QoS.En el siguiente ejemplo vemos una regla que permite la entrada de
tráfico SSH:pass in on $ext_if inet proto tcp from any to ($ext_if) port 22Actualización de &os;Hay tres métodos para actualizar &os;: desde los fuentes,
mediante actualizaciones binarias y con los discos de
instalación.Actualizar desde código fuente es el método
más complejo pero el que ofrece la mayor flexibilidad.
Este proceso implica sincronizar su copia en local del código
fuente de &os; desde los servidores
CVS (Concurrent Versioning System). Una vez
actualizado el código puede compilar nuevas versiones de
kernel y utilidades. Si quiere más información
consulte el capítulo 23
del Handbook.Las actualizaciones binarias son semejantes a
yum o apt-get de &linux;. El
programa &man.freebsd-update.8; descargará las actualizaciones
pendientes del sistema y las instalará. Las actualizaciones pueden
ser programadas con &man.cron.8;.Si usa &man.cron.8; para programar las actualizaciones por favor,
asegúrese de poner freebsd-update cron en su
&man.crontab.1; para reducir la posibilidad de que una gran cantidad de
servidores descarge actualizaciones al mismo tiempo.0 3 * * * root /usr/sbin/freebsd-update cronEl último método de actualización es
desde los discos de instalación. Es un proceso
bastante claro. Encienda el sistema desde el disco y seleccione
la opción de actualizar.procfs: perdido pero no olvidadoEs posible que usando &linux; haya consultado
/proc/sys/net/ipv4/ip_forward para determinar si
IP forwarding estaba activado. En &os; tendrá
que usar &man.sysctl.8; para comprobar éste y otros
parámetros puesto que &man.procfs.5; está obsoleto
en las versiones más recientes de &os;. Tenga en cuenta que
sysctl también existe en
&linux;.Siguiendo con el ejemplo de IP forwarding
podría usar lo siguiente para determinar si tiene activado
IP forwarding en su sistema &os;:&prompt.user; sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 0La opción se usa para ver la
configuración del sistema:&prompt.user; 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
...Algunos de estos valores de sysctl son de
sólo lectura.Hay ocasiones en las que es disponer de procfs es imprescindible,
por ejemplo para ejecutar software antiguo, usar &man.truss.1; para
seguir llamadas al sistema y para la compatibilidad binaria con &linux;.
(aunque la compatibilidad binaria con &linux; use su propio procfs,
&man.linprocfs.5;.) Si necesita montar procfs añada las
siguientes líneas a /etc/fstab:proc /proc procfs rw,noauto 0 0La opción evitará
que /proc sea montado automáticamente
cuando el sistema arranque.Hecho esto monte procfs así:&prompt.root; mount /procComandos más comunesGestión de packages&linux; command (Red Hat/Debian)&os; equivalenteResultadoyum install <package> / apt-get install <package>pkg_add -r <package>Instalar <package> desde un repositorio remotorpm -ivh <package> / dpkg -i <package>pkg_add -v <package>Instalar packagerpm -qa / dpkg -lpkg_infoVer packages instaladosGestión del sistema&linux; command&os; equivalenteResultadolspcipciconfVer dispositivos PCIlsmodkldstatVer módulos cargados en el kernelmodprobekldload / kldunloadCargar/Borrar módulos del kernelstracetrussSeguir llamadas del sistemaConclusiónEsperamos que este documento le haya servido de suficiente ayuda
para empezar a usar &os;. Recuerde visitar el &os; Handbook,
donde encontrará lo tratado aquí expuesto en profundidad
y muchos otros temas que no se han tocado en este documento.