[Índice de documentos] [Sección 12 - Cuestiones sobre plataformas específicas]
Antes de empezar, se recomienda leer la página del manual de disklabel(8).
Las «clasificaciones del disco» (disklabels) se crean para permitir una interfaz eficiente entre el disco y los controladores del disco que contiene el núcleo del sistema (kernel). Estas clasificaciones contienen cierta información sobre el disco, como la geometría del controlador e información sobre los sistemas de archivos (filesystems). Esta información la utiliza el programa de arranque para cargar el controlador y para saber en qué parte del controlador se encuentran los sistemas de archivos. Las clasificaciones también se usan en conjunto con los sistemas de archivos para crear un entorno más eficiente. Hay una documentación más detallada sobre disklabel en la página del manual de disklabel(5).
Además, el uso de disklabel ayuda a superar las limitaciones de las arquitecturas al particionar el disco. Por ejemplo, en i386 sólo se puede crear cuatro particiones primarias (particiones que puedan ver otros sistemas operativos como Windows NT o DOS). Con disklabel(8), una de esas particiones primarias se usa para almacenar todas nuestras particiones de OpenBSD (swap, /, /usr, /var, ...), y todavía nos quedarán tres particiones libres para otros sistemas operativos.
Una de las partes principales de la instalación de OpenBSD es la creación inicial de «clasificaciones» (labels). Para los usuarios de plataformas i386, éste es el paso que viene justo después de usar fdisk(1). Durante la instalación, el programa que se usa para crear clasificaciones separadas que contengan los puntos de montaje separados es disklabel(8). Durante este proceso se puede configurar los puntos de montaje desde dentro de disklabel, pero esto no es del todo necesario si consideramos que más tarde nos pedirá que confirmemos nuestras elecciones. De todos modos hace que la instalación sea un poco más suave.
Ya que esto ocurre durante la instalación, todavía no tendremos ninguna clasificación creada y, por lo tanto, antes debemos crearlas. La primera clasificación que tendremos que crear es la clasificación 'a'. Esta clasificación DEBE ser en la que se monte el sistema de archivos /. Puede verse una lista de las particiones que se recomienda crear, y sus respectivos tamaños recomendados, en la sección 4.3 de las preguntas frecuentes. Para servidores se recomienda que, como mínimo, se creen estas particiones separadas. Para los usuarios de computadoras (ordenadores) de sobremesa, será suficiente con crear un sólo punto de montaje para /. Cuando se cree por primera vez esta partición raíz (clasificación a), hay que tener en cuenta que será necesario dejar ALGO de espacio para la clasificación de swap. Ahora que ya hemos explicado lo más básico, pasemos a ver un ejemplo de la utilización de disklabel durante la instalación. En este primer ejemplo se asume que OpenBSD va a ser el único sistema operativo en la máquina, y que se llevará a cabo una instalación completa.
N. del T.: el texto que sigue a continuación está
traducido para el propósito de este documento, pero durante la
instalación el texto aparecerá en inglés
Si se comparte el disco con otros sistemas operativos, esos sistemas
operativos deben tener una entrada de la partición en la BIOS
que abarque completamente el espacio que ocupen. Hay que asegurarse
de que todos los sistemas de archivos de OpenBSD se encuentren dentro
del tamaño especificado en la tabla de particiones de la BIOS 'A6'
(por definición, el editor de disklabel tratará de forzar
esto). Si no se está seguro de cómo usar correctamente
particiones múltiples (o sea, /, /usr, /tmp, /var, /usr/local, y
otras separadas), se puede dividir el espacio de momento en una
partición raíz y otra swap.
# using MBR partition 3: type A6 off 63 (0x3f) size 4991553 (0x4c2a41)
Treating sectors 63-16386300 as the OpenBSD portion of the disk.
You can use the 'b' command to change this.
Initial label editor (enter '?' for help at any prompt)
> d a
> a a
offset: [63] <Intro>
size: [16386237] 64M
Rounding to nearest cylinder: 131040
FS type: [4.2BSD] <Intro>
mount point: [none] /
fragment size: [1024] <Intro>
block size: [8192] <Intro>
cpg: [16] <Intro>
> a b
offset: [131103] <Intro>
size: [16255197] 64M
Rounding to nearest cylinder: 131040
FS type: [swap] <Intro>
Hasta este punto hemos creado una partición raíz de 64MB montada en /, y una partición swap de 64MB. Note que empieza ("offset") en el sector 63. En la parte correspondiente al tamaño, disklabel muestra su tamaño en sectores; sin embargo no es necesario introducirlos en el mismo formato. Como en el ejemplo anterior, puede introducir los tamaños de la forma 64 Megabytes = 64M y 2 Gigabytes = 2G. Disklabel los redondeará hasta el cilindro más cercano. También notará en el ejemplo anterior que disklabel asume que la clasificación 'b' será swap. Esto es correcto ya que el núcleo del sistema GENERIC está configurado para buscar swap en la clasificación b, y todo lo que usted debe hacer es seguir esta guía y usar b como su área de swap.
El siguiente ejemplo le guiará por la creación de dos
clasificaciones más. Esto quiere decir que no es una
instalación completa, ya que el tamaño de éstas no
será suficiente para instalar OpenBSD al completo. Mostrar otra
vez la creación de todas las particiones sería redundante.
> a d
offset: [262143] <Intro>
size: [16124157] 64M
Rounding to nearest cylinder: 131040
FS type: [4.2BSD] <Intro>
mount point: [none] /tmp
fragment size: [1024] <Intro>
block size: [8192] <Intro>
cpg: [16] <Intro>
> a e
offset: [393183] <Intro>
size: [15993117] 64M
Rounding to nearest cylinder: 131040
FS type: [4.2BSD] <Intro>
mount point: [none] /var
fragment size: [1024] <Intro>
block size: [8192] <Intro>
cpg: [16] <Intro>
En este ejemplo puede notar dos diferencias con el anterior. Una, que el inicio del sector (offset) lo averigua de forma automática. Cuando haga una instalación de este tipo no tendrá que configurar los sectores. Otra diferencia es que la clasificación 'c' representa a todo el disco. Por este motivo no debe tocar la clasificación c.
Una vez que todas las clasificaciones hayan sido creadas, todo lo
quedará por hacer será grabarlas en el disco y pasar al
proceso de instalación. Para grabarlo todo y salir de disklabel
(y continuar con la instalación), haga lo siguiente:
> w
> q
*NOTA* - Para usuarios con discos grandes. Si la BIOS de su equipo no tiene soporte para el tamaño de su disco, OpenBSD tampoco tendrá soporte para éste. En cualquier otro caso OpenBSD debería ser capaz de tratar su disco sin problema alguno. Si se encuentra en una situación en la que la BIOS de su máquina no dispone de soporte para su disco, puede probar Maxtor EZ-Drive u otro producto complementario de similares características.
Una vez que esté instalado el sistema, el uso frecuente de
disklabel no debería ser necesario. Pero a veces tendrá
que usarlo cuando añada, elimine, o reestructure sus discos. Una
de las primeras cosas que tendrá que hacer será ver su
disklabel actual. Para ello, escriba lo siguiente:
# disklabel wd0 <----- O cualquier dispositivo de disco que quiera ver
# using MBR partition 3: type A6 off 64 (0x40) size 16777152 (0xffffc0)
# /dev/rwd0c:
type: ESDI
disk:
label: TOSHIBA MK2720FC
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 2633
total sectors: 2654064
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0
16 partitions:
# size offset fstype [fsize bsize cpg]
a: 2071440 65583 4.2BSD 1024 8192 16 # (Cyl. 65*- 2120)
b: 65520 63 swap # (Cyl. 0*- 65)
c: 2654064 0 unused 0 0 # (Cyl. 0 - 2632)
j: 512001 2137023 4.2BSD 1024 8192 16 # (Cyl. 2120*- 2627*)
La orden anterior le permite ver el disklabel presente, y de este modo
asegurarse de que no lía nada (algo que todos necesitamos algunas
veces). Pero para poder hacer cambios debe usar disklabel con la
opción -E, de este modo:
# disklabel -E wd0
Esto le llevará hasta un «punto de pedido» ("prompt"), el mismo que usó durante la instalación de OpenBSD. Probablemente, la orden más importante de todas en este punto de pedido sea '?'. Con esta orden obtendrá una lista de posibles opciones relacionadas con disklabel(8). Incluso podrá ver la página del manual de disklabel(8) al completo con la orden 'M'. Desde este punto podrá añadir o eliminar todo lo que desee, o hacer cambios en las particiones. Para más información al respecto lea la página del manual de disklabel(8).
Antes que nada, asegúrese de leer la página del manual principal de fdisk(8)
Fdisk es un programa de ayuda para el mantenimiento de sus particiones. Este programa se usa durante la instalación para configurar la partición de OpenBSD (esta partición puede contener varias clasificaciones, cada una de ellas con sistemas de archivos, swap, etc... ). Puede dividir el espacio de sus dispositivos y activar uno de ellos. Fdisk se suele usar en «Modo Monousuario» (boot -s - "Single User Mode"). Fdisk también configura el MBR de los discos.
Para la instalación, la mayoría de las veces sólo necesitará UNA partición de OpenBSD, y a continuación usar disklabel para poner en ella una swap y un sistema de archivos.
Para ver sólo su tabla de particiones con fdisk, haga lo
siguiente:
# fdisk fd0
lo que le dará una salida parecida a ésta:
Disk: fd0 geometry: 80/2/18 [2880 sectors]
Offset: 0 Signatures: 0xAA55,0x0
Starting Ending
#: id cyl hd sec - cyl hd sec [ start - size]
----------------------------------------------------------------------
----------------------------------------------------------------------
*0: A6 0 0 1 - 79 1 18 [ 0 - 2880] OpenBSD
1: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
2: A7 0 0 2 - 79 1 18 [ 1 - 2879] NEXTSTEP
3: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
En este ejemplo estamos viendo la salida de fdisk para el dispositivo de la disquetera. Podemos ver la partición de OpenBSD (A6) y su tamaño. El asterisco (*) nos indica que la partición de OpenBSD es una partición de arranque.
En el ejemplo anterior sólo vimos nuestra información.
¿Y si quisiéramos editar nuestra tabla de particiones?
Pues bien, para ello debemos usar el indicador -e, que nos
trasladará a una línea de órdenes desde la que
podremos interaccionar con fdisk.
# fdisk -e wd0
Enter 'help' for information
fdisk: 1> help
help Command help list
manual Show entire OpenBSD man page for fdisk
reinit Re-initialize loaded MBR (to defaults)
setpid Set the identifier of a given table entry
disk Edit current drive stats
edit Edit given table entry
flag Flag given table entry as bootable
update Update machine code in loaded MBR
select Select extended partition table entry MBR
print Print loaded MBR partition table
write Write loaded MBR to disk
exit Exit edit of current MBR, without saving changes
quit Quit edit of current MBR, saving current changes
abort Abort program without saving current changes
fdisk: 1>
Entrar en fdisk y explorar el disco es totalmente seguro, sólo debe asegurarse de contestar N cuando le pregunte si quiere guardar los cambios, y de que NO usa la orden write.
Aquí tiene una revisión de las órdenes que puede usar cuando escoja el indicador -e.
Una vez que ya tenga su disco instalado CORRECTAMENTE, deberá usar fdisk(8) (sólo i386) y disklabel(8) para configurarlo en OpenBSD.
Los usuarios de plataformas i386 deben empezar con fdisk. El resto de
plataformas pueden ignorar esta parte. En el ejemplo que sigue a
continuación estamos añadiendo un tercer dispositivo SCSI
al sistema.
# fdisk -i sd2
De este modo se iniciará la tabla de particiones
«real» para su uso exclusivo por OpenBSD. A
continuación debe crear un disklabel. Esto le parecerá
algo confuso.
# disklabel -e sd2
(la pantalla se queda en blanco y aparece su $EDITOR)
type: SCSI
...bla...
sectors/track: 63
total sectors: 6185088
...bla...
16 partitions:
# size offset fstype [fsize bsize cpg]
c: 6185088 0 unused 0 0 # (Cyl. 0 - 6135)
d: 1405080 63 4.2BSD 1024 8192 16 # (Cyl. 0*- 1393*)
e: 4779945 1405143 4.2BSD 1024 8192 16 # (Cyl. 1393*- 6135)
Ignore la partición c, siempre está ahí y es para que funcionen programas como disklabel. El tipo de sistema de archivos (fstype) para OpenBSD es 4.2BSD. El número total de sectores es el tamaño total del disco. Supongamos que éste es un disco de 3GB; tres gigabytes, en términos del fabricante del disco, son 3000 megabytes. Divida 6185088 entre 3000 (use bc(1)) y obtendrá 2061. Por lo tanto, para crear particiones para a, d, e, f, g, ... simplemente multiplique X*2061 y obtendrá el número de megabytes de espacio en esa partición. El sector de inicio (offset) para su primera partición nueva debe ser el mismo que el "sectors/track" que le haya dado anteriormente la salida de disklabel. En este caso es 63. El sector de inicio para cada partición consecutiva debe ser una combinación del tamaño de cada partición y el sector de inicio de la misma (excepto la partición c, ya que no juega ningún papel aquí).
O, si sólo quiere tener una partición en el disco (si, por
ejemplo, quisiera usarlo todo para almacenaje de web o como directorio
home), tome el tamaño total del disco y réstele los
sectores por pista ("sectors/track"). En este caso,
6185088-63 = 6185025. La partición quedará así:
d: 6185025 63 4.2BSD 1024 8192 16
¡Si todo esto le parece complicado e innecesario, puede usar disklabel -E para obtener el mismo modo de particiones que tiene en su disco de instalación! Ahí puede usar «96M» para especificar «96 megabytes» (o con un disco lo bastante grande, 96G para 96 gigabytes). Desafortunadamente, el modo -E usa la geometría del disco de la BIOS, no la geometría del disco real, y con frecuencia éstas no son las mismas. Para evitar esta limitación, escriba 'g d' para la 'geometría del disco'. Otras opciones son 'g b' para la 'geometría de la bios' y 'g u' para la 'geometría del usuario', o simplemente lo que indique la «clasificación» (label) antes de que disklabel efectúe algún cambio.
Esto ha sido largo, pero todavía no ha terminado. Para
finalizar, debe crear el sistema de archivos en el disco usando
newfs(8).
# newfs sd2a
O cualquiera otra denominación de su disco de acuerdo con el esquema de numeración del disco de OpenBSD (mire la salida de dmesg(8) para averiguar el nombre que OpenBSD da a su disco).
Ahora debe decidir dónde va a montar la nueva partición
que acaba de crear. Digamos que quiere ponerla en /u. Primero cree el
directorio /u, y luego móntelo.
# mount /dev/sd2a /u
Finalmente, añádalo a
/etc/fstab(5):
/dev/sd2a /u ffs rw 1 1
¡Y si necesitara migrar a un directorio ya existente como
/usr/local? Entonces debería montar la partición nueva en
/mnt, y usar cpio -pdum para copiar /usr/local al directorio
/mnt. A continuación editar el fichero
/etc/fstab(5)
para indicar que la partición /usr/local es ahora /dev/sd2a (su
partición recién creada). Por ejemplo:
/dev/sd2a /usr/local ffs rw 1 1
Reinicie en modo monousuario con boot -s y copie el fichero /usr/local existente a /usrs/local-backup (eliminando el original cuando esté seguro), y cree un directorio /usr/local vacío. Reinicie el sistema y ¡ya está! ¡ahí están los ficheros!
(Nota: si lo que quiere es usar un fichero como memoria de intercambio ("swap") porque obtiene errores del tipo "virtual memory exhausted", debería intentar antes elevar los límites por proceso con la utilidad unlimit(1) de csh, o ulimit(1)) de sh.
Para el uso de un fichero como memoria de intercambio (swap file) no es estrictamente necesaria la compilación de un núcleo del sistema personalizado, pero en este documento mostraremos cómo añadir espacio swap de las dos formas.
Usar un fichero como memoria de swap es la forma más
fácil y rápida de obtener una configuración
adicional del espacio de swap. El fichero no debe residir en un
sistema de archivos que tenga SoftUpdates activado (se encuentra
desactivado por definición). Para empezar, puede ver
cuánta memoria de swap tiene en ese momento y
cuánta está usando con la utilidad
swapctl(8),
del modo siguiente:
$ swapctl -l
Device 512-blocks Used Avail Capacity Priority
swap_device 65520 8 65512 0% 0
Esto le mostrará los dispositivos que están siendo usados como memoria de swap y sus estadísticas actuales. En el ejemplo anterior, sólo hay un dispositivo denominado "swap_device". Éste es el área predefinida para swap (si lo viéramos con disklabel, lo mostraría como la partición b). También puede ver en el ejemplo anterior que el dispositivo no está siendo muy usado en ese momento. Pero para el propósito de este documento, procederemos como si necesitáramos 32MB adicionales.
El primer paso para configurar un fichero como un dispositivo de
swap es crear el fichero. El mejor modo de hacerlo es con la
utilidad
dd(1). He aquí un ejemplo de cómo crear el fichero
/var/swap, que tendrá un tamaño de 32MB.
$ sudo dd if=/dev/zero of=/var/swap bs=1k count=32768
32768+0 records in
32768+0 records out
33554432 bytes transferred in 20 secs (1677721 bytes/sec)
Una vez que lo hayamos creado, podemos activar el uso de ese dispositivo
como memoria de swap. Para activarlo, use la siguiente orden:
$ sudo chmod 600 /var/swap
$ sudo swapctl -a /var/swap
Ahora debemos comprobar si se ha añadido correctamente a la lista
de nuestros dispositivos de swap.
$ swapctl -l
Device 512-blocks Used Avail Capacity Priority
swap_device 65520 8 65512 0% 0
/var/swap 65536 0 65536 0% 0
Total 131056 8 131048 0%
Ahora que ya está activado el fichero y que se está usando
como swap, debe añadir una línea a su fichero
/etc/fstab, para que el fichero también se active en el
próximo arranque. Si no añade esta línea, no
tendrá este dispositivo de swap configurado.
$ cat /etc/fstab
/dev/wd0a / ffs rw 1 1
/var/swap /var/swap swap sw 0 0
Ésta es una solución más permanente que la de
añadir más espacio de swap. Para usar
permanentemente un fichero como memoria de swap, primero compile
un núcleo con vnd0c como swap. Si su sistema de archivos
raíz es wd0a, entonces wd0b es el swap anterior y debe
usar la siguiente línea en el fichero de configuración del
núcleo (si tiene dudas, lea el
capítulo 5 de las preguntas frecuentes
referente a la compilación del núcleo del sistema):
config bsd root on wd0a swap on wd0b and vnd0c dumps on wd0b
Después de esto, tendrá que crear el fichero que se
usará como memoria de swap. Debe hacerlo usando la misma
orden que en los ejemplos anteriores.
$ sudo dd if=/dev/zero of=/var/swap bs=1k count=32768
32768+0 records in
32768+0 records out
33554432 bytes transferred in 20 secs (1677721 bytes/sec)
Ahora el fichero está en su sitio y debe añadirlo a
/etc/fstab. Aquí tiene una línea de ejemplo de
cómo arrancar con este dispositivo como swap.
$ cat /etc/fstab
/dev/wd0a / ffs rw 1 1
/dev/vnd0c none swap sw 0 0
En este punto su máquina debe ser reiniciada para que los cambios
en el núcleo hagan efecto. A continuación deberá
configurar el dispositivo como memoria de swap. Para ello
usará
vnconfig(8).
$ sudo vnconfig -c -v vnd0 /var/swap
vnd0: 33554432 bytes on /var/swap
El último paso es activar ese dispositivo como memoria de
swap. Lo haremos como en los ejemplos anteriores, usando
swapctl(8). Después comprobaremos si ha sido correctamente
añadido a nuestra lista de dispositivos de swap.
$ sudo swapctl -a /dev/vnd0c
$ swapctl -l
Device 512-blocks Used Avail Capacity Priority
swap_device 65520 8 65512 0% 0
/dev/vnd0c 65536 0 65536 0% 0
Total 131056 8 131048 0%
Soft Updates está basado en una idea propuesta por Greg Gangerand Yale Patt y desarrollada para FreeBSD por Kirk McKusick. Soft Updates impone un orden parcial en las operaciones de la memoria intermedia de caché que eliminar la escritura sincrónica de entradas de directorio del código de FFS. De este modo se consigue un gran aumento en el rendimiento de la escritura en disco.
El potencial de ejecutar fsck(8) en plano de fondo usando Soft Updates aún no es posible en OpenBSD, por lo que todavía es necesario fsck(8) después de que el sistema se apague de forma abrupta. Esto puede cambiar en versiones futuras.
Para activar Softupdates, el núcleo debe estar compilado con
option FFS_SOFTUPDATES
Esta opción está incluida en el núcleo GENERIC.
La activación de Soft Updates se debe realizar con una
opción de tiempo en el montaje. Cuando se monta una
partición con la utilidad
mount(8),
se puede indicar que se active soft updates en esa
partición. La siguiente muestra es de una entrada en
/etc/fstab(5)
para una partición sd0a que queremos que se monte con
soft updates activado.
/dev/sd0a / ffs rw,softdep 1 1
Nota para los usuarios de sparc: no se debe activar soft updates en las máquinas sun4 o sun4c. Estas arquitecturas sólo tienen soporte para una cantidad de memoria del núcleo muy limitada, y no pueden usar esta funcionalidad. Las máquinas sun4m no tienen esta limitación y sí pueden usarla.
El proceso de arranque de OpenBSD/i386 no es algo trivial, y entender cómo funciona puede ayudarnos a resolver algún problema. Hay cuatro piezas clave en el proceso de arranque:
Aunque OpenBSD incluya un MBR, no es necesario usar éste ya que prácticamente cualquier otro MBR puede arrancar OpenBSD. El MBR se manipula con el programa fdisk(8), que se usa para modificar la tabla de particiones además de para instalar el código de MBR en el disco.
El MBR de OpenBSD se anuncia con el mensaje
Using Drive: 0 Partition: 3
mostrando así el disco y la partición desde las que va a
cargar el PBR.
El PBR lo instala
installboot,
que se describe con detalle en la
sección 14.8 de este documento.
El PBR se anuncia con el mensaje
reading boot....
imprimiendo la línea de puntos según va leyendo los
sectores del disco.
boot(8) es un programa interactivo. Después de cargarse, intenta
ubicar y leer /etc/boot.conf si existe (en una
instalación típica no existe), y procesa cualquier orden
que lleva. A menos que /etc/boot.conf le dé otras
instrucciones, pasa un punto de inserción al usuario:
probing: pc0 com0 com1 apm mem[636k 190M a20=on]
disk: fd0 hd0+
>> OpenBSD/i386 BOOT 2.02
boot>
En la configuración predeterminada, le da al usuario cinco
segundos para que le pase alguna orden; si no se hace nada durante este
tiempo, incia su tarea predeterminada: cargar el núcleo del
sistema, bsd, desde la partición raíz del primer
disco duro. El cargador de arranque de segunda fase sondea (examina) el
hardware del sistema a través de la BIOS (ya que
todavía no se ha cargado el núcleo de OpenBSD). En el
cuadro de arriba se pueden ver unas pocas cosas que ha buscado y
encontrado:
El caracter '+' después de "hd0" indica que la BIOS a informado a /boot de que este disco es accesasible mediante LBA. Cuando se realiza una primera instalación, a veces se observa un caracter '*' después del disco duro; esto indica un disco que no parece tener una clasificación de disco de OpenBSD válida.
Así pues, el inicio del proceso de arranque seguiría un esquema como el siguiente:
Using Drive: 0 Partition: 3 <- MBR
reading boot.... <- PBR
probing: pc0 com0 com1 apm mem[636k 190M a20=on] <- /boot
disk: fd0 hd0+
>> OpenBSD/i386 BOOT 2.02
boot>
booting hd0a:/bsd 4464500+838332 [58+204240+181750]=0x56cfd0
entry point at 0x100120
[ using 386464 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993 <- Kernel
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2003 OpenBSD. All rights reserved. http://www.OpenBSD.org
OpenBSD 3.4 (GENERIC) #18: Wed Sep 17 03:34:47 MDT 2003
...
En este caso podemos instalar el MBR de OpenBSD en el disco duro usando
el programa fdisk. Para ello arrancaremos desde el medio de
instalación que tengamos, y escogeremos la opción
"Shell" para obtener un punto de inserción de
órdenes, desde donde le pasaremos la orden:
# fdisk -u wd0
También podemos instalar un MBR específico en el disco
usando fdisk. Por ejemplo:
# fdisk -u -f /usr/mdec/mbr wd0
instalará el archivo /usr/mdec/mbr como el MBR de
nuestro sistema. Este archivo en concreto, en una instalación
típica de OpenBSD, es el MBR estándar que también
se encuentra dentro de fdisk. Pero se puede especificar cualquier otro
MBR.
Para más información sobre el proceso de arranque de i386, véase los documentos:
OpenBSD tiene soporte para sistemas de archivos de tamaños mucho mayores que cualquier de los discos duros que existen en la actualidad o incluso de los que puedan aparecer en breve; sin embargo, existen limitaciones en algunas interfaces que son de menor tamaño que el máximo teórico de OpenBSD.
No son posibles todas las combinaciones de hardware. Un nuevo disco duro IDE de 250GB no funcionará en las interfaces más viejas (anteriores a los estándares >137GB), y algunos adaptadores SCSI muy viejos han dado problemas con discos más modernos. Hay que respetar las posibilidades y limitaciones del hardware.
Desafortunadamente, la capacidad absoluta del sistema operativo no se encontrará disponible hasta DESPUÉS de que el sistema operativo haya sido cargado en la memoria y el proceso de arranque haya introducido sus propios límites. El proceso de arranuqe tiene que utilizar (y por lo tanto está limitado por) la ROM de arranque del sistema. El cargador de arranque de primera face de OpenBSD/i386 (biosboot(8)) también tiene su propia limitación interna de 8GB, heredada del límite de las BIOS antiguas.
Por este motivo, todo el fichero /bsd (el núcleo del sistema) se debe ubicar dentro del área direccionable de la ROM de arranque en el disco, o dentro de los primeros 8G del disco, cualquiera que sea más pequeña. Esto significa que en algunos equipos i386 más antiguos, la partición root debe encontrarse dentro del límite de los primeros 504M, pero en la mayoría de equipos nuevos se puede encontrar en cualquier parte dentro de los primeros 8G.
Nótese que es posible instalar un dispositivo de 40GB en un 486 antiguo y cargar OpenBSD como una sola partición gigante, y por ello creer que la regla anterior ha sido violada con éxito. Sin embargo, puede volver para vengarse en un modo horrible:
¿Por qué? Porque cuando copió «sobre» el nuevo fichero /bsd, no sobreescribió el antiguo, sino que se reubicó en un nuevo espacio del disco, probablemente fuera del rango de los 504M para los que tiene soporte la BIOS. El cargador de arranque no pudo localizar /bsd y el sistema se colgó.
Para que OpenBSD arranque, los cargadores de arranque (biosboot(8) y /boot en el caso de i386) y el núcleo (/bsd) deben encontrarse dentro del rango del soporte de la ROM de arranque, y dentro de sus propias capacidades. Para ir sobre seguro, la regla es fácil:
Toda la partición root debe estar dentro del espacio direccionable por la BIOS (o ROM de arranque) de la máquina o dentro de los primeros 8G, cualquiera que sea el más pequeño de los dos. En este momento no hay forma de evitar esto, es necesario seguir esta regla.
Ésta es otra buena razón para dividir el disco duro en particiones, en lugar de usar una única partición grande.
Otra consideración con sistemas de archivos grandes es la del tiempo y memoria requeridos para poder usar fsck(8) en el sistema de archivos después de una caída del sistema o de una interrupción de la fuente eléctrica. No se debe poner un sistema de archivos de 120GB en un sistema con 32MB de RAM y esperar que fsck(1) se ejecute con éxito después de una caída. El sistema debería tener como mínimo 1MB de memoria disponible por cada 1GB de espacio en disco para que fsck se ejecute con éxito sobre el disco. El tiempo requerido para que fsck repare el disco puede ser un problema según se va incrementando el tamaño del sistema de archivos.
Las versiones más antiguas de MS-DOS sólo podían
reconocer geomtrías de disco de 1024 cilindros o menos. Ya que
casi prácticamente todos los discos modernos tienen más de
1024 cilindros, la mayoría de chips de BIOS SCSI (que vienen
integrados en la tarjeta controladora SCSI) y de BIOS IDE (que son parte
del resto de la BIOS para PCs) disponen de una opción (algunas
veces preactivada) para «traducir» la geometría real
del disco en algo que esté dentro de los límites de la
capacidad de MS-DOS. Sin embargo, no todos los chips de BIOS
«traducen» la geometría del mismo modo. Si cambia su
BIOS (instalando una nueva placa base o añadiendo una nueva
controladora SCSI) y la nueva usa una «traducción» de
la geometría diferente, no podrá cargar la segunda fase
del gestor de arranque (y por lo tanto no podrá cargar el
núcleo). Esto se debe a que la primera fase del gestor de
arranque contiene una lista de bloques que comprende /boot en
términos de la geometría «traducida» original.
Si está usando discos IDE y realiza cambios en la
configuración de su BIOS, también puede cambiar sin
saberlo su traducción (la mayoría de BIOS IDE ofrecen 3
traducciones diferentes). Para que su bloque de arranque pueda iniciar
con normalidad, ponga un disquete de arranque (o use un CD-ROM con
capacidad arranque), y en el punto boot> escriba b
hd0a:/bsd para forzar el arranque desde el primer disco duro (y no
desde el disquete). Su máquina debería iniciar sin
ningún problema. Ahora debe actualizar la primera fase del
gestor de arranque para poder ver la nueva geometría (y
reescribir el bloque de arranque de acuerdo con ella).
En el ejemplo se asume que su disco de arranque es sd0 (SCSI, pero si
fuera IDE sería wd0, etc... ):
# cd /usr/mdec; ./installboot /boot biosboot sd0
Si installboot protesta porque es incapaz de leer la geometría de
la BIOS, puede invocar la orden 'machine diskinfo' (o su forma
abreviada, 'ma di') desde el punto boot>, para ver la
información que necesite. Rellene con los valores
"heads" y "secs" los indicadores -h
y
-s
de installboot respectivamente, para que la orden
modificada de installboot quede como sigue:
# cd /usr/mdec; ./installboot -h <heads> -s <secs> /boot biosboot sd0
Si se requiriera una versión de los bloques de arranque,
tendría que compilarlos usted mismo.
# cd /sys/arch/i386/stand/
# make && make install
# cd /usr/mdec; cp ./boot /boot
# ./installboot /boot biosboot sd0 (o cualquier otro
dispositivo que sea su disco)
Si su instalación de OpenBSD va a ser lo que se llama un servidor de producción, es aconsejable disponer de algún tipo de respaldo por si acaso uno de sus discos fijos fallara.
Esta información le ayudará a usar las utilidades típicas dump(8)/restore(8) disponibles con OpenBSD. Existe una utilidad para copias de seguridad más avanzada, llamada "Amanda", con la que se pueden hacer copias de seguridad de múltiples servidores en una sola cinta. En la mayoría de entornos, dump(8)/restore(8) es suficiente. Sin embargo, si necesita hacer copias de seguridad de múltiples máquinas en una sola cinta, vale la pena que conozca Amanda.
Los dispositivos de ejemplo en este documento son para una configuración que usa discos y cintas SCSI. En un entorno de producción, se recomiendan los discos SCSI sobre los IDE debido al modo que gestionan los bloques erróneos, lo que no significa que esta información sea inútil si está usando un disco IDE u otro tipo de cinta; en este caso los nombres de sus dispositivos serán ligeramente diferentes. Por ejemplo, sd0a sería wd0a en un sistema basado en IDE.
Para hacer copias en una cinta es necesario saber de antemano
dónde están montados los sistemas de archivos. Esto se
puede determinar usando la orden
mount(8)
desde el punto de pedido del intérprete de órdenes
(shell prompt). Debería obtener una salida similar a
ésta:
# mount
/dev/sd0a on / type ffs (local)
/dev/sd0h on /usr type ffs (local)
En este ejemplo, el sistema de archivos raíz (/) reside físicamente en sd0a, lo que indica que es la partición a del disco fijo SCSI 0. El sistema de archivos /usr reside en sd0h, lo que indica que es la partición h del disco fijo SCSI 0.
Otro ejemplo de una tabla de puntos de montaje más avanzado
sería:
# mount
/dev/sd0a on / type ffs (local)
/dev/sd0d on /var type ffs (local)
/dev/sd0e on /home type ffs (local)
/dev/sd0h on /usr type ffs (local)
En este ejemplo, el sistema de archivos raíz reside físicamente en sd0a, el sistema de archivos /var reside en sd0d, el sistema de archivos /home en sd0e y finalmente, /usr en sd0h.
Para hacer copias de seguridad de su máquina necesitará
pasar información a dump sobre el nombre de cada partición
del disco fijo. Aquí tiene un ejemplo de las órdenes que
se necesitan para hacer copias de la primera tabla de montaje (la
más simple):
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h
# mt -f /dev/rst0 rewind
Para la segunda tabla (la más avanzada), usaría algo
parecido a esto:
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0d
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0e
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h
# mt -f /dev/rst0 rewind
Puede revisar la página del manual de dump(8) para averiguar qué es lo que hace exactamente cada uno de los parámetros en la línea de órdenes. Aquí tiene una breve descripción de los parámetros usados:
La última parte indica la partición de la que se hará la copia de seguridad (/dev/rsd0a, etc... ).
La orden mt(1) se usa al final para rebobinar el controlador. Revise la página del manual de mt para ver más opciones (como "eject").
Si no está seguro de cuál es el nombre de su dispositivo
de cinta, use dmesg para localizarlo. Un ejemplo de entrada del
dispositivo de cinta en dmesg será parecido al siguiente:
st0 at scsibus0 targ 5 lun 0: <ARCHIVE, Python 28388-XXX, 5.28>
Es posible que haya notado que al realizar la copia de seguridad, se accede al controlador de la cinta con el nombre del dispositivo "nrst0" en lugar de "st0", que es el nombre que se ve en dmesg. Cuando se accede a st0 como nrst0 se está accediendo al mismo controlador físico de la cinta, pero indicando al controlador que no debe rebobinar al final del proceso y que acceda al dispositivo en modo virgen. Para hacer copias de seguridad de múltiples sistemas de archivos en una sola cinta, asegúrese de usar el dispositivo sin rebobinar; si usa un dispositivo de rebobinado (rst0) para hacer copias de seguridad de múltiples sistemas de archivos, acabará anulando el sistema de archivos anterior cuando el próximo dump intente grabar en la cinta. Puede encontrar una descripción más elaborada sobre los distintos dispositivos de control de cinta en la página del manual de dump.
Si quiere escribir un pequeño guión (script), puede
hacerlo como el siguiente:
echo " Empezando Copia de Seguridad Completa..."
/sbin/dump -0au -f /dev/nrst0 /dev/rsd0a
/sbin/dump -0au -f /dev/nrst0 /dev/rsd0d
/sbin/dump -0au -f /dev/nrst0 /dev/rsd0e
/sbin/dump -0au -f /dev/nrst0 /dev/rsd0h
echo
echo -n " Rebobinando el Dispositivo, por favor espere..."
mt -f /dev/rst0 rewind
echo "Fin."
echo
Si desea programar las copias de seguridad para que se hagan por la noche o a cualquier otra hora, puede usar cron(8) para que lance el guión de forma automática.
También puede serle de ayuda documentar (en un trozo de papel) el tamaño necesario para cada sistema de archivos. Puede usar la orden df -h para determinar cuánto espacio está usando cada partición. Esto le será útil cuando el dispositivo falle y necesite recrear su partición en el nuevo dispositivo.
Restaurar sus datos también le ayudará a reducir la
fragmentación. Para asegurarse de que tiene todos los ficheros,
la mejor forma de hacer copias de seguridad es reiniciando el sistema en
modo monousuario. Los sistemas de archivos no necesitan estar montados
para hacer las copias. Después de reiniciar no se olvide de
montar la partición raíz (/) con permisos de escritura (r)
y lectura (w), o dump fallará cuando intente grabar los
"dumpdates". Para iniciar en modo monousuario haga lo
siguiente desde el punto de arranque:
boot> bsd -s
Después de que haya hecho las correspondientes copias de seguridad por primera vez, es una buena idea que pruebe su cinta y que se asegure de que los datos en ella sean los que Vd. esperaba que fueran.
Puede usar el siguiente ejemplo para revisar un catálogo de
ficheros en una cinta:
# /sbin/restore -tvs 1 -f /dev/rst0
Esto hará que se muestre una lista con los ficheros existentes en la primera partición de la cinta. De acuerdo con los ejemplos anteriores, 1 sería su sistema de archivos raíz (/).
Para poder ver el contenido de la segunda partición de la cinta y
enviar la salida a un fichero, use una orden como la siguiente:
# /sbin/restore -tvs 2 -f /dev/rst0 > /home/me/list.txt
Si tiene una tabla de particiones como la simple de ejemplos anteriores, 2 sería /usr; si la tabla es como la más avanzada, entonces 2 podría ser /var u otro sistema de archivos. El número de secuencia coincide con el orden en el que se graben los sistemas de archivos en la cinta.
El ejemplo que verá más adelante podría ser útil si su disco fijo fallara totalmente. En caso de que quiera restaurar sus sistemas de archivos desde un único fichero de la cinta, revise la página del manual de restore(8) y preste atención a las instrucciones sobre el modo interactivo.
Si se ha preparado bien, substituir un disco y restaurar sus datos desde la cinta puede ser un proceso muy rápido. El disquete de instalación/arranque estándar de OpenBSD contiene la utilidad que se requiere para restaurar, así como los binarios que se requieren para particionar y hacer que pueda arrancar desde su dispositivo. En la mayoría de los casos, este disquete y su cinta con la copia de seguridad más reciente será todo lo que necesite para restaurar el sistema.
Después de substituir físicamente el dispositivo de disco erróneo, los pasos básicos para restaurar sus datos son los siguientes:
# fdisk -e sd0
Revise la sección 14.2 sobre fdisk para más información.
# disklabel -E sd0
No se olvide de la partición de swap. Revise la sección 14.1 sobre disklabel para más información.
# newfs /dev/rsd0a
# newfs /dev/rsd0h
# mount /dev/sd0a /mnt
# cd /mnt
# restore -rs 1 -f /dev/rst0
# fdisk -i sd0
# cp /usr/mdec/boot /mnt/boot
# /usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot sd0
# umount /mnt
# halt
boot> bsd -s
La orden bsd -s hará que el núcleo del sistema inicie en modo monousuario, por lo que sólo necesitará el sistema de archivos raíz (/).
# mount -u -w /
(tabla de particiones simple)
# mount /dev/sd0h /usr; cd /usr; restore -rs 2 -f /dev/rst0
(tabla de particiones más avanzada)
# mount /dev/sd0d /var; cd /var; restore -rs 2 -f /dev/rst0
# mount /dev/sd0e /home; cd /home; restore -rs 3 -f /dev/rst0
# mount /dev/sd0h /usr; cd /usr; restore -rs 4 -f /dev/rst0
Puede usar "restore rvsf" en lugar de usar sólo "rsf", para ver lo nombres de los objetos mientras los extrae de la copia de seguridad.
Para montar una imagen de disco (imágenes ISO, imágenes de disco creadas con ґddґ, etc.. ) en OpenBSD, debe configurar un dispositivo vnd(4). Por ejemplo, si tuviera una imagen ISO ubicada en /tmp/ISO.image, debería seguir los siguientes pasos para montar la imagen:
# vnconfig svnd0 /tmp/ISO.image
# mount -t cd9660 /dev/svnd0c /mnt
|
Note que, dado que esta imagen es una imagen de CD, debe especificar el tipo cd9660 al montarla. Esto se debe aplicar a cualquier tipo; v.g. deberá usar el tipo ffs cuando monte imágenes de disco.
Para desmontar la imagen use la siguiente orden:
# umount /mnt
# vnconfig -u svnd0
|
Para más información mire la página del manual de vnconfig(8)
PCI IDE DMA es inestable en muchas combinaciones de hardware. Hasta hace poco tiempo, la mayoría de sistemas operativos «más conocidos» que aseguraban dar soporte para transferencias DMA con dispositivos IDE, no tenían esa funcionalidad activada de modo predeterminado.
OpenBSD es agresivo, e intenta usar el modo DMA más alto que
pueda configurar. Esto corrompe las transferencias de datos en algunas
configuraciones, por culpa de placas base con chipsets
erróneos, controladoras erróneas y, o, ruido en los
cables. Por suerte, los modos Ultra-DMA protegen las transferencias de
datos con un CRC para detectar la corrupción. Cuando el CRC
Ultra-DMA falla, OpenBSD muestra un mensaje de error e intenta repetir
la operación.
wd2a: aborted command, interface CRC error reading fsbn 64 of 64-79
(wd2 bn 127; cn 0 tn 2 sn 1), retrying
Después de un par de fallos, OpenBSD prueba un modo Ultra-DMA más bajo, pero más estable. Si se llega al modo 0 Ultra-DMA, el controlador baja de grado hasta el modo PIO.
Si OpenBSD no consigue bajar el modo, o si el proceso bloquea la máquina, por favor envíe un informe sobre el error.
RAID (Redundant Array of Inexpensive Disks) ofrece la oportunidad de usar dispositivos múltiples para obtener un mejor rendimiento, más capacidad, y/o redundancia de la que se puede obtener de un único dispositivo. Aunque una explicación completa de los beneficios y riesgos de RAID no entra en los objetivos de esta sección, hay un par de puntos que son importantes aquí:
Si es la primera vez que lee información sobre RAID, tenga en cuenta que esto no es un buen comienzo para explorar RAID.
OpenBSD incluye RAIDframe, una solución de software de RAID. Puede encontrar documentación sobre RAIDframe en los siguientes sitios:
Desde la versión 3.1 de OpenBSD, se puede replicar la partición raíz directamente usando la opción "Autoconfiguration" de RAIDframe.
Muchas plataformas de OpenBSD incluyen soporte para varios productos de hardware de RAID. Las opciones varían según la plataforma; mire en la página de soporte apropiada para cada una aquí.
Otra opción disponible para muchas plataformas es la de los muchos productos que hacen que dispositivos múltiples actúen como un único dispositivo IDE o SCSI, y están conectados en un adaptador IDE o SCSI normal. Estos dispositivos pueden funcionar en casi cualquier plataforma de hardware que disponga de soporte para SCSI o IDE.
Algunos de los fabricantes de estos productos:
(Nota: éstos son simplemente productos sobre los que los usuarios de OpenBSD han informado que utilizan, no es ningún tipo de recomendación ni es una lista exhaustiva).
Una pregunta formulada a menudo en las listas de correo es si «hay soporte para las controladoras de IDE RAID Promise o HighPoint», y la respuesta es «No». Estas tarjetas y chips no son controladores de hardware de RAID reales, sino software de RAID de arranque asistido por la BIOS. Como OpenBSD ya dispone de soporte para software de RAID independiente del hardware, no hay un deseo entre los desarrolladores de OpenBSD la implementación de un soporte especial para estas tarjetas.
[Índice de documentos] [Sección 12 - Cuestiones sobre plataformas específicas]