Guía concisa de Gentoo/FreeBSD
1.
Introducción a FreeBSD
¿Qué es FreeBSD?
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.
¿Qué es Gentoo/FreeBSD?
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.
FreeBSD y Linux
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:
-
A diferencia de Linux, que en realidad se refiere sólo al núcleo,
FreeBSD por su parte es un sistema operativo completo, que
consiste de una biblioteca C, herramientas del espacio del usuario
(userland tools) y mucho más. Este enfoque de desarrollo hace muy
consistente el sistema global.
-
A diferencia de Linux, el desarrollo de FreeBSD no está liderado
por una persona sino que es administrado por un pequeño grupo de
personas llamados el
Equipo Central (Core Team).
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:
-
Para obtener las funciones de enlazado dinámico en tiempo de
ejecución como dlopen(), los programas no necesitan estar
enlazados contra libidl como pasa en GNU/Linux. En cambio se
enlazan contra libc.
-
FreeBSD no tiene una herramienta oficial para la compilación del
núcleo, por lo tanto tendrá que solucionar por si mismo las
dependencias de características.
-
FreeBSD usa UFS/UFS-2 como sus sistemas de archivos y no tiene
soporte oficial para, por ejemplo, ReiserFS o XFS. No obstante,
hay proyectos para añadir soporte de sólo lectura para esos
sistemas de archivos. Ya es posible acceder a particiones
ext2/ext3 pero no puede instalar su sistema en ellas.
2.
Instalando Gentoo/FreeBSD
Arrancando el CD
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.
|
Particionando el disco
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.
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/
# 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
# 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
# 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
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
|
3.
Configurando el arranque
Configurando la zona horaria
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 |
# date
Mon Mar 6 00:14:13 UTC 2006
# date 200603060016
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
# 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"
|
Instalación del núcleo
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
# exit
# 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 |
# sysctl kern.geom.debugflags=16
# grub
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
(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).
|
Configuración del sistema
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
#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
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
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
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"
|
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
Uid (Leave empty for default):
Login group [fred]:
Login group is fred. Invite fred into other groups? []: wheel portage
Login class [default]:
Shell (sh bash tcsh csh esh ksh zsh sash nologin) [sh] bash
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
Lock out the account after creation? [no]:
Username : fred
Password : *****
Full Name : Fred Smith
Uid : 1002
Class :
Groups : fred wheel portage
Home : /home/fred
Shell : /bin/bash
Locked : no
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
¿Cómo ayudar?
Hay muchas cosas en las que podría ayudar dependiendo de sus
habilidades y tiempo libre:
-
Trabajar en ebuilds vigentes: esto significa trabajar de cerca con
los mantenedores de ebuilds para crear parches o modificar ebuilds
de forma que puedan ser aceptados en el árbol principal.
-
Seguridad: si está involucrado en seguridad, ¡lo necesitamos!
Aunque seguimos y corregimos los anuncios de seguridad del
proyecto FreeBSD, siempre podemos contar con ayuda en esta área.
-
Contactos: necesitamos gente que pueda estar en contacto con
desarrolladores de FreeBSD para poder intercambiar parches y
discutir problemas varios y sus soluciones. Note que esto no
debería involucrar cualquier tipo de correo no solicitado
(spamming) en las listas de correo o canales de IRC.
-
Testing: mientras más gente esté activamente usando
Gentoo/FreeBSD, mayor será la cantidad de bugs descubiertos, lo
que nos ayuda a mejorar la calidad del proceso de portar. Si es
bueno describiendo bugs o problemas, entonces definitivamente nos
gustaría saber de usted.
-
Otras áreas donde necesitamos ayuda: ebuilds de sistema,
creación de CDs de instalación, documentación, hacking
del núcleo.
Problemas conocidos
En este instante todavía hay bastante problemas conocidos. Se nombran
a continuación los que valen la pena señalar:
-
Algunos guiones de inicio dependen del servicio de reloj (clock)
que no proveemos por ahora. Puede eliminarlo de las dependencias
en el guión y repórtelo en Bugzilla. Por favor,
recuerde usar el producto "Gentoo/Alt" al momento de enviarlo.
5.
Contacto
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
|