FreeBSD es un Sistema Operativo libre estilo Unix (vea la licencia). De regreso a 1993 cuando el desarrollo de 386BSD se detuvo, nacieron dos proyectos: NetBSD, normalmente conocido por correr en un gran número de arquitecturas y FreeBSD que soporta las arquitecturas x86, amd64, ia64, sparc64 y alpha. FreeBSD tiene fama por su estabilidad, rendimiento y seguridad, por lo tanto es usado en pequeñas y hasta en las más grandes compañías de todo el mundo.
La versión actual de producción de FreeBSD es la 7.1. Gentoo/FreeBSD está basado en la versión 6.2 y las versiones anteriores de Gentoo/FreeBSD están descontinuadas y ya no tienen soporte.
Gentoo/FreeBSD es un subproyecto del Proyecto Gentoo/Alt (Gentoo en plataformas alternativas), cuyo objetivo es proporcionar un sistema operativo FreeBSD completo con características propias del diseño de Gentoo Linux, tales como el sistema de inicio (init) y el sistema de gestión de paquetes Portage.
Los usuarios que migran desde Linux a FreeBSD normalmente consideran a los dos sistemas operativos "casi lo mismo". De hecho, FreeBSD realmente comparte muchas similitudes con las distribuciones de Linux en general. Sin embargo, tiene algunas diferencias claves que son dignas de señalar:
Además, FreeBSD también posee algunas diferencias técnicas que lo distinguen de Linux. Algunas de ellas son muy importantes de conocer, incluso si no tiene intenciones de unirse al esfuerzo de desarrollo de Gentoo/FreeBSD:
Luego de esta breve introducción, finalmente es hora de instalar Gentoo/FreeBSD. Desafortunadamente carecemos de nuestro propio medio de instalación, así que debe elegir entre dos métodos alternativos. El primero sería usar una instalación existente de FreeBSD para particionar su disco duro y usarla como base para instalar Gentoo/FreeBSD. Esta guía describirá como usar el LiveCD FreeSBIE como medio de instalación para Gentoo/FreeBSD.
Nota: Si tiene intención de usar FreeSBIE para instalar Gentoo/FreeBSD, por favor asegúrese de utilizar una versión basada en FreeBSD 6.x, como FreeSBIE 2.0 (o una versión candidata previa al lanzamiento). Se puede descargar del tracker Bittorrent de FreeSBIE. |
Primero, arranque desde el CD para comenzar el proceso de instalación. Se le presentará una pantalla de login. El nombre de usuario que debe ingresar es freesbie y no requiere clave. Luego, ejecute sudo su para convertirse en el usuario root y opcionalmente cree su clave. Si desea pasar el tiempo durante la instalación, puede ejecutar startx para entrar en un entorno gráfico Xfce, apto para navegar en la red, hacer chat con AIM y demás. A diferencia de Linux, FreeBSD basa el nombre del interfaz en el nombre del manejador del interfaz. Por ejemplo, el manejador para el interfaz Intel EtherExpress (fxp) aparece como fxp0 (manejador fxp, primera tarjeta de red). Para ver cuál es su interfaz, use ifconfig:
Listado de Código 2.1: Averiguando el interfaz de red con ifconfig |
# ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet6 fe80::2d0::b7ff:febc:4fe3%fxp0 prefixlen 64 scopeid 0x1
inet 192.168.0.106 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:d0:b7:bc:4f:e3
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8007<LOOPBACK,MULTICAST> mtu 16384
|
Si la petición original de DHCP durante el arranque ha fallado, podrá usar el comando dhclient para obtener un número IP:
Listado de Código 2.2: Obteniendo una dirección con DHCP usando dhclient |
# dhclient fxp0
DHCPDISCOVER on fxp0 to 255.255.255.255 port 67 interval 9
DHCPOFFER from 192.168.0.1
DHCPREQUEST on fxp0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.106 -- renewal in 302400 seconds
|
Nota: La salida presentada aquí podría ser distinta, basada en su red. |
Ahora que tenemos un punto de montaje, es hora de particionar el disco duro. Esto se hace con el comando sysinstall:
Listado de Código 2.3: Ejecutando el comando sysinstall para particionar el disco |
# sysinstall diskPartitionEditor diskPartitionWrite
|
Recomendamos usar el patrón por defecto de particiones. Pulse enter en la caja de diálogo, luego pulse a seguido por q para aceptar la disposición por defecto. La siguiente pantalla presentará una opción de gestor de arranque, para la cual escoja la opción "None", ya que estaremos instalándolo más adelante. Después viene la definición de los tamaños de las particiones y los puntos de montaje.
El siguiente paso también usa sysinstall, pero con parámetros diferentes:
Listado de Código 2.4: Usando sysinstall para configurar las particiones y puntos de montaje |
# sysinstall diskLabelEditor diskLabelCommit
|
Aquí no aprovecharemos la disposición automática de particionamiento y crearemos una gran partición raíz y una de intercambio. Pulse c para crear una nueva partición. En la caja de diálogo, coloque el tamaño, usando MB/GB para especificar tamaños o C para especificar cilindros. Para la partición raíz, escoja FS para el tipo de partición y configure el punto de montaje como /mnt/. Si no coloca el punto de montaje, ¡sobreescribirá el entorno de FreeSBIE! Como /boot no será una partición separada, deberá desactivar los "soft-updates" o sino ¡el sistema no arrancará! Para hacer esto use las flechas del teclado para navegar a la partición recién creada y pulse la tecla s hasta que "Newfs" no contenga +S. Ahora navegue con las flechas hasta iluminar la línea "Disk" y pulse la tecla c de nuevo para crear una partición de intercambio. Generalmente, recomendamos una partición del doble de la memoria RAM disponible. Escoja SWAP como tipo de partición y no se preocupe por los "soft-updates", ya que no aplican a este tipo de partición. Ahora hemos terminado, así que pulse q para concluir el proceso.
Al escoger un punto de montaje diferente a / para la partición, sysinstall creará una partición 'd', desde la cual el gestor de arranque no podrá arrancar. Para arreglar esto, ejecute:
Nota: Por favor, asegúrese que ad0s1 esté desmontada antes de ejecutar el siguiente comando, de otra forma el comando no funcionará. |
Listado de Código 2.5: Arreglando la letra de la partición raíz |
# disklabel ad0s1 | sed 's/^ d:/ a:/' | disklabel -R ad0s1 /dev/stdin
|
Con esto concluye el proceso de particionamiento y formatea el disco en UFS para ser utilizada por FreeBSD. También montará el disco en el punto de montaje especificado anteriormente (/mnt/). Puede verificar que funcionó ejecutando mount:
Listado de Código 2.6: Verificando el montaje de las particiones con mount |
# mount
...
/dev/ad0s1a on /mnt (ufs, local)
|
Ahora que hemos montado la partición, es hora de comenzar con la configuración de Gentoo.
Primero debemos descargar un archivo stage3 comprimido y desempaquetarlo en el chroot. Apunte el navegador a http://distfiles.gentoo.org/experimental/x86/freebsd/stages/, descargue la imagen más reciente y desempaquétela en el punto de montaje:
Listado de Código 2.7: Obtener y descomprimir un tarball con stage3 |
# cd /mnt/ (También funcionará cualquier otro servidor réplica de Gentoo que tenga el directorio "experimental") # wget http://distfiles.gentoo.org/experimental/x86/freebsd/stages/stage3-x86-freebsd-6.2-r1.tar.bz2 # tar -jxvpf stage3-x86-freebsd-6.2-r1.tar.bz2 (Puede borrar el tarball con el siguiente comando si lo desea) # rm stage3-x86-freebsd-6.2-r1.tar.bz2 |
Nota: Si desea, puede usar el "overlay" transicional con ebuilds semi-experimentales y parches que todavía no se están en el árbol principal de Portage, pero que al mismo tiempo, permite mayor amplitud en lo que respecta paquetes soportados. Por favor, vea la documentación del overlay Gentoo/ALT. Por favor note que el overlay no es imprescindible y se puede fácilmente instalar y usar Gentoo/FreeBSD sin usarlo. |
Para que la instalación funcione, hará falta montar el sistema de archivos /dev del sistema anfitrión al punto de montaje correspondiente en el Gentoo/FreeBSD antes de continuar con el entorno enjaulado.
Listado de Código 2.8: Montando el sistema de archivos /dev y entrando al chroot |
# mount -t devfs none /mnt/dev/ # cp /etc/resolv.conf /mnt/etc/ # chroot /mnt/ /bin/bash # env-update && source /etc/profile |
Después de obtener el overlay Gentoo/FreeBSD es hora de enlazar /etc/make.profile al perfil correcto y preparar el /etc/make.conf para Gentoo/FreeBSD.
Ahora debe obtener una copia del árbol principal de Portage de Gentoo, el cual, dependiendo de su conexión, podría tomar bastante tiempo.
Listado de Código 2.9: Obtener el árbol Portage |
# emerge --sync (También es posible obtener el árbol Portage de otra forma:) # cd / # wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2 # tar -xjf portage-latest.tar.bz2 -C /usr/ # emerge --metadata |
Listado de Código 2.10: Configurar el perfil y editar /etc/make.conf |
# ln -sf /usr/portage/profiles/default-bsd/fbsd/6.2/x86/ /etc/make.profile # nano /etc/make.conf (Por favor, asegúrese de agregar al menos las siguientes líneas:) CHOST="i686-gentoo-freebsd6.2" FEATURES="collision-protect" |
Nota: La palabra clave ~x86-fbsd todavía no cubre completamente el mismo árbol que ~x86; pero, le pedimos por favor no coloque ~x86 en ACCEPT_KEYWORDS. Más bien, use /etc/portage/package.keywords para probar paquetes y reportar los que funcionen a través del Bugzilla. |
Si lo desea, ahora puede recompilar los paquetes centrales del sistema.
Listado de Código 2.11: Recompilar los paquetes centrales de FreeBSD (opcional) |
# emerge -e system
|
Primero asegúrese que la fecha y la hora estén correctos, usando date yyyymmddHHMM. Use la hora UTC.
Listado de Código 3.1: Ajustando la fecha y hora UTC |
(Revise el reloj) # date Mon Mar 6 00:14:13 UTC 2006 (Ajuste la fecha y hora actual si es necesario) # date 200603060016 (El formato es yyyymmddHHMM) Mon Mar 6 00:16:00 UTC 2006 |
Luego ajuste su zona horaria usando el listado correcto en /usr/share/zoneinfo.
Listado de Código 3.2: Ajustando la zona horaria |
# ls /usr/share/zoneinfo (Usando a Bruselas como ejemplo) # cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime # date Wed Mar 8 00:46:05 CET 2006 |
Modifique /etc/conf.d/clock para definir la zona horaria usada previamente.
Listado de Código 3.3: Modifique /etc/conf.d/clock |
# nano -w /etc/conf.d/clock
TIMEZONE="Europe/Brussels"
|
Si ejecutó emerge -e system, las fuentes del núcleo de FreeBSD se instalaron en el directorio /usr/src/sys. Si saltó este paso puede obtenerlas así:
Listado de Código 3.4: Obtener las fuentes del núcleo de FreeBSD |
# emerge freebsd-sources
|
El configurar y compilar un núcleo personalizado es bastante diferente que hacerlo en Linux, así que, si no está familiarizado con el proceso, lo animamos a que le dé una mirada al capítulo 8 del manual de FreeBSD.
Importante: Por favor, note que actualmente ¡sólo está soportada la forma "Tradicional" de compilar el núcleo en Gentoo/FreeBSD! |
Listado de Código 3.5: Ingresando al directorio de fuentes del núcleo |
# cd /usr/src/sys/
|
Examinando la disposición, podemos ver varias arquitecturas y subdirectorios para distintas partes del núcleo. Para comenzar la instalación, nos dirigimos al directorio i386/conf/:
Listado de Código 3.6: El directorio de configuración del núcleo |
# cd i386/conf/ # ls .cvsignore GENERIC Makefile PAE DEFAULTS GENERIC.hints NOTES SMP |
Los principales archivos a notar son GENERIC y GENERIC.hints. Como será necesitado para la instalación del núcleo, copie el archivo GENERIC.hints a /boot/device.hints:
Listado de Código 3.7: Copiando el archivo GENERIC.hints |
# cp GENERIC.hints /boot/device.hints
|
Este archivo es usado por los manejadores del núcleo para obtener información básica de configuración, como ajustes IRQ. Ahora ha llegado el momento de configurar el núcleo. FreeBSD usa el comando config para hacer esto. config usa el archivo dado (en este caso GENERIC) para copiar todos los archivos requeridos a un directorio compile en el directorio padre. El archivo GENERIC es similar al .config para el núcleo Linux. Ejecute config para producir el directorio de construcción del núcleo:
Listado de Código 3.8: Configurando la construcción del núcleo |
# config GENERIC
Kernel build directory is ../compile/GENERIC
Don't forget to ''make cleandepend; make depend''
|
config ha creado un directorio para construir un núcleo GENERIC para nosotros en el directorio padre. Entre con cd y ejecute lo siguiente para llevar a cabo la construcción:
Listado de Código 3.9: Construir e instalar el núcleo |
# cd ../compile/GENERIC # make cleandepend && make depend && make && make install |
Esto producirá un núcleo completo con el cual trabajar. Ahora necesitamos configurar el gestor de arranque para que el núcleo arranque. En el siguiente capítulo discutiremos dos métodos de configurar el gestor de arranque: boot0 y grub.
Configurando el gestor de arranque (boot0)
Importante: boot0 es el gestor de arranque de FreeBSD. Previamente era el único soportado, hasta la introducción de grub en el sistema ports con soporte para particiones UFS. Para instalar y configurar boot0, ejecute el siguiente comando. Recuerde reemplazar adXsY con el verdadero número y partición del disco. |
Listado de Código 3.10: Instalando y configurando boot0 |
# emerge boot0 (Salga del entorno enjaulado) # exit (Ejecutado desde afuera del chroot) # fdisk -B -b /mnt/boot/boot0 /dev/adX # chroot /mnt/ /bin/bash # disklabel -B adXsY |
Si requiere más información acerca de la configuración de boot0, por favor consulte el capítulo 12 del manual FreeBSD. Ahora debemos hacer algunas configuración y ajustes básicos.
En la siguiente sección, veremos como usar el gestor de arranque alternativo, grub.
Configurando el gestor de arranque (grub)
A partir de la versión 0.97-r1 de grub, las particiones UFS pueden ser leídas por grub. Esto permite que usemos grub como nuestro gestor de arranque, el cual es el método preferido por los que vienen desde Linux. Para empezar, hagamos emerge grub y configuremos la partición como arrancable. Recuerde reemplazar adXsY con el verdadero número y partición del disco.
Listado de Código 3.11: Instalando grub |
# emerge grub # disklabel -B adXsY |
Ahora ejecute grub y obtenga una línea de comando, para configurar la partición de la siguiente manera:
Listado de Código 3.12: Configurando grub |
(Esto se hace para prevenir el "disk error 29") # sysctl kern.geom.debugflags=16 # grub (Ejemplo usando ad0s1d) grub> root (hd0,0,d) Filesystem type is ufs2, partition type 0xa5 grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/ufs2_stage1_5" exists... yes Running "embed /boot/grub/ufs2_stage1_5 (hd0)"... 14 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+14 p (hd0,0,d)/boot/grub/stage 2 /boot/grub/menu.lst"... succeeded Done. grub> quit |
Para hacer que el cargador ubique el núcleo en una partición en específico (por defecto busca la 'a'), agregue una línea con vfs.root.mountfrom al archivo /boot/loader.conf:
Listado de Código 3.13: Digámosle al cargador dónde buscar el núcleo |
# echo 'vfs.root.mountfrom="ufs:ad0s1d"' >> /boot/loader.conf
|
Al arrancar por primera vez, tal vez no reciba un menú grub. Si es así, ejecute esto en la línea de comando:
Listado de Código 3.14: Arrancando el núcleo sin menú |
grub> find /boot/grub/stage1 (La salida es lo que usaremos en el siguiente comando) (hd0,0,d) grub> kernel (hd0,0,d)/boot/loader [FreeBSD-a.out, loadaddr=0x200000, text=0x1000, data=0x3a000, bss=0x0, entry=0x200000] grub> boot |
Nota: Para más información acerca de la configuración de grub, por favor consulte el Manual Gentoo Linux. |
Aviso: Grub no sigue los enlaces simbólicos de UFS, así que asegúrese de borrar el enlace /boot/grub/menu.lst y usar el archivo menu.lst para configurar a (no se hace uso de grub.conf). |
Primero, vamos a configurar los puntos de montaje de los sistemas de archivos en /etc/fstab.
Listado de Código 3.15: Editar el sistema de archivos en /etc/fstab |
# nano /etc/fstab (Esto es un ejemplo, reemplace X e Y con los números correctos para su disco duro.) #Device Mountpoint Fstype Options Dump Pass /dev/adXsYb none swap sw 0 0 /dev/adXsYa / ufs rw 1 1 /dev/adXsYe /usr/home ufs rw 2 2 /dev/adXsYd /tmp ufs rw 2 2 /dev/acdX /cdrom cd9660 ro,noauto 0 0 |
Ahora también sería bueno ajustar la conexión de red antes de reiniciar. Puede encontrar toda la información necesaria para configurar la red en el Manual Gentoo. Para que el interfaz esté activado al arrancar, agréguelo al nivel de ejecución por defecto:
Listado de Código 3.16: Agregar su tarjeta de red al nivel de ejecución default |
# rc-update add net.fxp0 default
|
El nombre de su computadora puede ser cambiado en /etc/conf.d/hostname.
Listado de Código 3.17: Ajustar el nombre de la computadora |
# nano /etc/conf.d/hostname (Ajuste la variable HOSTNAME con el nombre de su computadora) HOSTNAME="tux" |
También debería configurar su nombre de dominio, lo que se hace en el archivo /etc/conf.d/domainname:
Listado de Código 3.18: Configurar el nombre de dominio |
# nano /etc/conf.d/domainname (Ajuste la variable dns_domain al nombre del dominio y lo al de la red local) dns_domain_lo="homenetwork" |
Si tiene un dominio NIS, debe definirlo en el archivo /etc/conf.d/domainname:
Listado de Código 3.19: Configurar el nombre de dominio NIS |
# nano /etc/conf.d/domainname (Ajuste la variable nis_domain con su nombre de dominio NIS y lo al de la red local) nis_domain_lo="my-nisdomain" |
Nota: Para más información acerca de nombres de dominios y redes, por favor, refiérase al Manual Gentoo y por favor lea la documentación en el archivo /etc/conf.d/net.example. |
En caso de que necesite usar otra disposición de teclado para su idioma, tiene que configurar el valor correcto en /etc/conf.d/syscons. El siguiente ejemplo usa la disposición para el idioma castellano, así que tendrá que ajustarlo si quiere usar otro.
Listado de Código 3.20: Cambiar la disposición del teclado (Opcional) |
# nano /etc/conf.d/syscons KEYMAP="spanish.iso.acc" (Los mapas de teclado disponibles se encuentran en /usr/share/syscons/keymaps). |
Ahora ajuste la clave para el superusuario root y agregue otra cuenta de usuario para su trabajo diario.
Listado de Código 3.21: Cambiar la clave del superusuario y agregar un nuevo usuario |
# passwd # adduser Username: fred Full Name: Fred Smith (Acepte el valor por defecto, solo pulse Enter.) Uid (Leave empty for default): (Se puede aceptar el valor por defecto acá también; pulse Enter.) Login group [fred]: (Ingrese los grupos, separados por espacios en blanco. Deben existir previamente.) Login group is fred. Invite fred into other groups? []: wheel portage (Acepte el valor por defecto aquí, pulse Enter) Login class [default]: (Es una preferencia personal. Asegúrese que exista en /etc/shells) Shell (sh bash tcsh csh esh ksh zsh sash nologin) [sh] bash (Acepte el valor por defecto aquí, pulse Enter en cada uno) User password-based authentication [yes] Use an empty password (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: password goes here Enter password again: retype it (Acepte el valor por defecto, pulse Enter) Lock out the account after creation? [no]: Username : fred Password : ***** Full Name : Fred Smith (Aquí esto podría variar) Uid : 1002 Class : Groups : fred wheel portage Home : /home/fred Shell : /bin/bash Locked : no (Confirme que la información está correcta) OK? (yes/no): yes adduser: INFO: Sucessfully added (fred) to the user database Add another user? (yes/no): no Goodbye! # |
Felicitaciones, ha finalizado su instalación de Gentoo/FreeBSD y que puede empezar a explorar luego de reiniciar. ¡Que se divierta!
Listado de Código 3.22: Reiniciar el sistema |
# exit # reboot |
4. Desarrollando para Gentoo/FreeBSD
Hay muchas cosas en las que podría ayudar dependiendo de sus habilidades y tiempo libre:
En este instante todavía hay bastante problemas conocidos. Se nombran a continuación los que valen la pena señalar:
Se puede encontrar una lista de los desarrolladores de Gentoo/FreeBSD en la página del proyecto. Hay otras formas de contactar a los desarrolladores, entre ellas, el canal de IRC #gentoo-bsd en Freenode (irc.freenode.net) y también en la lista de correos gentoo-bsd.
El contenido de este documento está registrado bajo los términos de la licencia Creative Commons - Reconocimiento / Compartir Igual