nkbj@image.dk
fdisk
) antes de leer este documento. Las
indicaciones que aquì se dan han sido testeadas usando FreeBSD 2.2.2, pero deberìa
ser vàlido en versiones tanto anteriores como posteriores 3.0.0) sin
). No dudes en enviarme un mail si tienes dudas, comentarios o su-
gerencias acerca de este documento. Tambien quisiera conocer gente que tenga al-
guna experiencia utilizando Linux con NetBSD y OpenBSD.
FreeBSD es sistema operativo de tipo UNIX de libre distribuciòn, como Linux. La principal diferencia es que mientras el Kernel de Linux se ha escrito desde cero, FreeBSD se basa en partes de libre distribuciòn de 4.4BSD (Berkeley Sofware Distribution) conocida como 4.4BSD-lite. Este hecho incita a pensar a algunos que FreeBSD està mas cerca de ser un "verdadero" UNIX(TM) que Linux. FreeBSD funciona unicamente en plataformas intel PC (i386 y mayores), aunque se està portando a plataformas DEC Alpha y Sun Sparc. Los requerimientos de hardware de FreeBSD son similares a los de Linux.
El desarrollo de FreeBSD se administra de forma diferente a como se hace en Linux. Un nùcleo de desarrolladores seleccionan y proporcionan un lìder para el proyecto. En listas de correo se discuten con anterioridad los grandes cambios. El proyecto FreeBSD dispone de dos ramas de desarrollo (igual que Linux): '' CURRENT'' y ''STABLE''. La rama de desarrollo ''CURRENT'' es donde se ofrecen los nuevos progresos y avances. El desarrollo de la rama ''STABLE'' se dedica a corregir bugs e investigar y testear minuciosamente nuevas caracterìsticas y soportes.
FreeBSD puede ser utilizado y (re)distribuido libremente igual que Linux. La mayorìa de las partes de FreeBSD son publicadas bajo el copyrigth de BSD; el resto es bajo GNU GPL o GNU LGPL.
Puedes encontrar mas informaciòn acerca de FreeBSD (y bajar el sistema completo) de The FreeBSD Project Homepage. Los nuevos paquetes "STABLE'' y codigo de desarrollo ``CURRENT'' son vendidos tambien en CDROMs por Walnut Creek CDROM (su web y servidores ftp funcionan bajo FreeBSD).
La forma en que Linux y FreeBSD etiquetan discos duros y particiònes siguen esquemas diferentes. Esta secciòn explica las mayores diferencias entre ellos. El etiquetado utilizado por FreeBSD es en realidad una adaptaciòn del clàsico de BSD, con la adaptaciòn particular que requieren las particiones en un PC. Todo esto es muy similar a otros sistemas basados en BSD como NetBSD, OpenBSD, Ultrix, Digital Unix, SunOs y Solaris.
FreeBSD necesita una de las cuatro entradas en la tabla de particiones en el
disco duro. Esta particiòn primaria se le denomina ``slice'' en la
terminologìa FreeBSD. Entonces se emplea el programa disklabel
para crear
ocho particiones en esta primera particiòn. Esta particiones lògicas son
llamadas ``particiones'' en tèrminos FreeBSD. Este concepto es similar a la
forma en que Linux (y DOS) crean particiones lògicas en una extendida.
No puedes instalar FreeBSD en una particiòn extendida hecha por Linux (o DOS).
Observa que el fdisk
de Linux no muestra las particiones BSD en un "slice"
FreeBSD desde el menu general, pero puedes ver la informaciòn del etiquetado
BSD si pones la opciòn -b. La salida serà similar a esta (/dev/hda4
es
el "slice" FreeBSD):
bash# fdisk /dev/hda Command (m for help): p Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders Units = cylinders of 4032 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 27 54400+ 83 Linux native /dev/hda2 28 28 55 56448 83 Linux native /dev/hda3 56 56 403 701568 83 Linux native /dev/hda4 404 404 621 439488 a5 BSD/386 Command (m for help): b Reading disklabel of /dev/hda4 at sector 1624897. BSD disklabel command (m for help): p 8 partitions: # size offset fstype [fsize bsize cpg] a: 64512 1624896 4.2BSD 0 0 0 # (Cyl. 404 - 419) b: 104832 1689408 swap # (Cyl. 420 - 445) c: 878976 1624896 unused 0 0 # (Cyl. 404 - 621) e: 64512 1794240 4.2BSD 0 0 0 # (Cyl. 446 - 461) f: 645120 1858752 4.2BSD 0 0 0 # (Cyl. 462 - 621) BSD disklabel command (m for help): q bash#
Las letras 'a'...'f' de la primera columna, son las mismas etiquetas que se muestran en un ejemplo para una "slice" FreeBSD. Existen tres particiones especiales en lenguaje BSD. La letra 'a' designa a la particiòn root, 'b' designa la particiòn de intercambio ("swap"), mientras 'c' designa la totlidad del "slice". Ver la documentaciòn de FreeBSD para saber como asignar estas letras a diferentes particiones.
Los discos duros son etiquetados de la siguiente manera en Linux y FreeBSD
Linux FreeBSD Primer dispositivo IDE /dev/hda /dev/wd0 Segundo dispositivo IDE /dev/hdb /dev/wd1 Primer dispositivo SCSI /dev/sda /dev/sd0 Segundo dispositivo SCSI /dev/sdb /dev/sd1
Las particiones (FreeBSD slices) en un disco IDE se etiquetan del modo que sigue
(/dev/hda
se utiliza en este ejemplo):
Linux FreeBSD Primera particiòn primaria /dev/hda1 /dev/wd0s1 Segunda paticiòn primaria /dev/hda2 /dev/wd0s2 Tercera Particiòn primaria /dev/hda3 /dev/wd0s3 Cuarta particiòn primaria /dev/hda4 /dev/wd0s4
Las particiones de mi "slice" FreeBSD estan señaladasde este modo. Este es el marcado
que se hace por defecto. Es posible cambiarlo si quieres cambiar tu instalaciòn de
FreeBSD (/dev/hda4
es el "slice" FreeBSD en el ejemplo).
Linux label FreeBSD label FreeBSD mount point /dev/hda5 /dev/wd0s4a / /dev/hda6 /dev/wd0s4b swap /dev/hda7 /dev/wd0s4e /var /dev/hda8 /dev/wd0s4f /usr
Si ejecutas dmesg
en Linux podràs ver (se supone que tienes una particiòn
con FreeBSD y un Kernel con soporte UFS filesystem support para esto.
Ver secciòn
Instalando y preparando Linux):
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
Si has instalado FreeBSD en /dev/sd1s3
"slice" (/dev/sdb3
en
lenguaje Linux) /dev/sdb2
es una particiòn Linux extendida conteniendo
dos particiones lògicas (/dev/sdb5
y /dev/sdb6
), el anterior
ejemplo queda asì.
Linux label FreeBSD label FreeBSD mount point /dev/sdb7 /dev/sd1s3a / /dev/sdb8 /dev/sd1s3b swap /dev/sdb9 /dev/sd1s3e /var /dev/sdb10 /dev/sd1s3f /usr
Se muestra de manera
Partition check: sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3 < sdb7 sdb8 sdb9 sdb10 >en la salida de
dmesg
.
Si tienes una particiòn extendida Linux despuès de tu FreeBSD "slice", puedes
tener problemas, porque muchos discos de instalaciòn de Linux estan hechos sin
soporte para UFS, entonces no podra reconocer las particiones FreeBSD dentro
del "slice". Lo que deberia tener que reconocerse como (/dev/hda3
es
la "slice" FreeBSD y /dev/hda4
es la particiòn extendida Linux).
Partition check: hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 > hda4 < hda9 hda10 >es vista como
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 >
Esto puede dar lugar a destruir la tabla de particiones de disco y causar la pèrdida de datos. Mi advertencia es ¡¡ poner siempre el "slice" FreeBSD despuès de una particiòn extendida Linux, y no cambiar particiones lògicas en tu particiòn extendida de Linux despuès de instalar FreeBSD !!.
Esta secciòn describe como he hecho para compartir "swap" entre Linux y FreeBSD. Hay otros caminos para conseguir el mismo resultado. Pudes instalar FreeBSD antes que Linux si quieres, pero presta atenciòn al orden en que particionas el "slice" de FreeBSD.
El primer paso es instalar Linux normalmente. Debes tambien preparar espacio para el "slice" FreeBSD en el disco duro. No es necesario crear una particiòn "swap" para Linux, aunque si quieres una, ponla en el espacio que que has asignado para FreeBSD. De esta manera puedes borrar el espacio "swap" mas tarde y utilizarlo para FreeBSD.
Cuando hayas instalado Linux, necesitaras construir un nuevo Kernel (en caso de no tener soporte UFS...). Lee The Linux Kernel HOWTO si no sabes como. Debes incluir en la compilaciòn UFS filesystem support (read only) and BSD disklabel (FreeBSD partition tables) support:
UFS filesystem support (read only) (CONFIG_UFS_FS) [N/y/m/?] y BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?] (NEW) y
Instala el nuevo Kernel y rearranca. Borra la linea que incluye la palabra "swap"
de tu /etc/fstab
si has hecho particiòn "swap". Asegurate de tener
un disket de arranque con el nuevo Kernel. Ahora estas preparado para instalar
FreeBSD.
La instalaciòn de FreeBSD se describe en la documentaciòn de FreeBSD. Quita la
particiòn "swap" si creaste una (puedes utilizar el fdisk
de FreeBSD).
Presta atenciòn al orden de las particiones en el "slice" FreeBSD. Si utilizas
el etiquetado por defecto, la segunda particiòn sera "swap". Completa la
instalaciòn de FreeBSD y arranca con Linux usando el disco de arranque.
ejecuta dmesg
cuando hayas entrado en Linux. Debe aparecer algo como esto.
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
Esto muestra que /dev/hda4
es tu FreeBSD "slice", mientras
/dev/hda5
, /dev/hda6
, /dev/hda7
y
/dev/hda8
son las particiones FreeBSD. Si tu espacio "swap" es la
segunda particiòn en el "slice", entonces sera /dev/hda6
.
Debes poner la siguiente linea en el /etc/fstab
archivo para activar
la particiòn "swap":
/dev/hda6 none swap sw 0 0
Mientras FreeBSD puede ejecutar "swap" en varios tipos de particiones, Linux
necesita una marca especial en la suya. esta firma la hace mkswap
.
FreeBSD destuye esta firma cuando utiliza su espacio de intercambio, por lo
tanto deberas ejecutar mkswap
cada vez que entres en Linux. Para hacer
esto automagicamente :), localiza el script que ejecuta swapon
al inicio.
En Red Hat Linux esta /etc/rc.d/rc.sysinit
. Pon la siguiente lìnea
justo antes de swapon -a
:
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab
Ello ejecutarà mkswap
en cualquier particiòn "swap" de /etc/fstab
cada vez que arranques excepto si esta comentada (poniendo``#'' como primer
caracter en la lìnea.)
Ejecuta free
para saber el espacio de "swap" que tienes cuando hayas
reiniciado. Deberas iniciar FreeBSD para asegurarte de que todo ha ido bien. Si
esto no es asi, seguramente has utilizado una particiòn "swap" equivocada. La
soluciòn al problema, es reinstalar FreeBSD. La experiencia es un gran maestro.
;-)
Puedes facilmente arrancar con LILO. No instales el arrancador de FreeBSD
(Booteasy
) si quieres utilizar LILO. Añade las siguientes lìneas en el
/etc/lilo.conf
y ejecutan lilo
(asumiendo que el "slice" FreeBSD es
/dev/hda4
):
other=/dev/hda4 table=/dev/hda label=FreeBSD
Si has instalado FreeBSD en el segundo disco SCSI, haz algo parecido a esto
(el FreeBSD slice empieza /dev/sdb2
):
other=/dev/sdb2 table=/dev/sdb loader=/boot/chain.b label=FreeBSD
Desafortunadamente el controlador UFS en los Kernel 2.0.xx no incluyen soporte para BSD. Cuando pruebes a montar las particiones FreeBSD, puedes recibir algunos mensajes de error (las particiones estan montadas, pero no puede leerse nada en ellas). Este problema se ha resuelto a partir de Linux-2.1.87.
Hay otra versiòn para los controladores UFS en los kernel 2.0.xx (xx <= 30)
en
SunSite. Se
llama U2FS y la actual versiòn es u2fs-0.4.3.tar.gz
.Una versiòn de
U2FS (ufs-0.4.4.tar.gz
)para Linux 2.0.31 y superiores(2.0.xx; not 2.1.xx)
puede encontrarse en
this site con mayor y completa informaciòn sobre U2FS (y UFS.)
Ahora construye un kernel con soporte para el sistema de archivos U2FS y sistema BSD de etiquetas. Ver la secciòn Instalando y preparando Linux para mayor informaciòn sobre esto. Puedes dejar fuera UFS filesystem support en el kernel si utilizas U2FS.
Cuando tengas instalado el nuevo kernel, puedes montar los archivos tipo UFS (todas las particiones en el "slice" excepto la "swap") con un comando como este
mount -t u2fs /dev/hda8 /mnt
Deberàs utilizar este
mount -t ufs /dev/hda8 /mntsi usas un kernel a partir de 2.1.87.
El controlador UFS (U2FS) es solo de lectura, solo puedes leer, no escribir en un sistema de archivos UFS. El desarrollo de un controlador lectura/escritura, acaba justamente de empezar.
Para montar un sistema de archivos ext2fs en FreeBSD, primero tienes que construir un kernel con soporte para ello. Lee the FreeBSD handbook para saber como hacerlo. Pon la linea
options "EXT2FS"en el archivo de configuracion del nuevo kernel para ello.
Cuando hayas arrancado con el nuevo kernel, puedes montar un sistema de archivos ext2fs con este comando:
mount -t ext2fs /dev/wd0s3 /mnt
Debes saber que no puedes montar sistemas de archivos exts2fs en una particiòn extendida de FreeBSD.
debido a un bug en FreeBSD 2.2.5 y anteriores, deberàs desmontar las particiones
ext2fs antes de apagar el equipo o hacer un reinicio si utilizas estas versiones.
Si reinicias FreeBSD sin haber desmontado las particiones ext2fs, el sistema
no puede sincronizar el sistema de archivos UFS. Esto conlleva a que fsck
se activara en el pròximo arranque de FreeBSD.
El paquete iBCS
da soporte para ejecutar binarios FreeBSD bajo Linux,
pero es antiguo y no esta mantenido. No puedo hacer que funcione. Por favor,
hazme saber si has tenido mas suerte con esto.
FreeBSD tiene la habilidad de ejecutar binarios de Linux, compilados en formato ELF y a.out. Para conseguir esto necesitas seguir estos tres pasos.
/etc/rc.conf
y cambia
linux_enable="NO"to
linux_enable="YES"y reinicia. Otra forma de cargar el soporte para binarios de Linux es ejecutar el comando
/usr/bin/linux
. De esta manera no necesitas rebotar, y no
necesitas tener siempre el soporte de binarios Linux cargado (ahorras memoria).
options COMPAT_LINUXen la configuraciòn del archivo del kernel FreeBSD si generas un nuevo kernel.
linux_lib-2.4.tgz
. Ejecuta el siguiente comando para
instalar
pkg_add <path_to_package>/linux_lib-2.4.tgz<path_to_package> es el directorio donde esta el archivado el paquete. Tambien puedes traertelo desde internet con:
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/packages-stable/All/linux_lib-2.4.tgzo ejecutando
/stand/sysinstall
. Pon ``Configure'', ``Packages''
y usa los menus. Debes ejecutar el siguiente comando si pretendes arrancar un
programa binario Linux estaticamente enlazado
brandelf -t Linux <name_of_statically_linked_linux_binary>
He ejecutado satisfactoriamente versiones Linux de Applixware 4.3 y Netscape 3.01 (en formato ELF) con FreeBSD utilizando este mètodo (si, ya se que hay una versiòn para FreeBSD nativa de Netscape 4.) Las versiones Linux de Acroread y StarOffice tambièn trabajan bien en FreeBSD. Lee la documentaciòn de FreeBSD para mas informaciòn acerca de este asunto.
La ultima versiòn de este MINI-Howto puede ser descargada de my homepage en varios formatos (incluyendo SGML y PostScript). El documento ha sido traducido al japonès por Mr. Teruyoshi Fujiwara com parte de the JF project.
Gregor Hoffleit mantiene una homepage con màs informaciòn acerca de U2FS y UFS.
The FreeBSD Project Homepage existe bastante informaciòn acerca de FreeBSD (ademas del sistema entero para poder descargarlo).
El Linux Kernel HOWTO esta editado en The Linux Documentation Project.
Gràcias a los miembros de *BSD user group in DenmarkPor responder a las inquietudes de un novato en el sistema FreeBSD, a Mr. Takeshi Okazaki por facilitarme la existencia del paquete U2FS, y a Mr. David O'Brien por sus valiosas sugerencias.
Aunque la informaciòn que se da en este documento creemos que es correcta, los autores no asumiràn ninguna responsabilidad sobre el contenido de la misma. Utiliza los consejos y recomendaciones que aquì se dan bajo tu pròpia responsabilidad.
Copyright © 1997, 1998 by Niels Kristian Bech Jensen. Este documento puede ser distribuido unicamente sujeto a las condiciones expuestas en la licencia LDP the LDP license.