- ENTRADA 7 -

Instalando OpenBSD multiboot, en un segundo disco, y encima compartido


Si, es que me gusta rizar el rizo y complicarme la vida. Tengo un equipo de sobremesa con la siguiente configuración MBR:


— Disco 1: 1 TB —



— Disco 2: 500 Gb —




Como en el Disco 1 ya están las 4 particiones primarias a las que está limitado MBR, y OpenBSD no admite instalación en partición extendida, la idea fue meterlo en el Disco 2... y empezaron los problemas.


Consideraciones técnicas de OpenBSD


OpenBSD, realmente, particiona una partición, también llamadas Particiones del Sistema de Archivos (las particiones fdisk se conocen como Particiones MBR). En FreeBSD se llaman "slices", pero OpenBSD las llama históricamente "particiones" a ambas, y eso es confuso y lleva a errores de comprensión de la documentación.


OpenBSD básicamente no se preocupa por el MBR o GPT. El particionado de disco está definido por la etiqueta BSD y lo demás se la suda. El MBR o GPT solo se consulta al arrancar o cuando no existe etiqueta BSD. Incluso si creas más de una partición MBR de OpenBSD podrás hacerlas, pero no servirá de nada porque OpenBSD solo hará caso a una etiqueta.


OpenBSD no ve otros sistemas y no hace demasiado caso a nada que no sea su zona BSD, ¿por qué?, pues porque sus desarrolladores entienden que OpenBSD se va a usar como sistema único y no dan mucha importancia a la interacción con otros sistemas, aunque últimamente tienen un debate al respecto.

Si se añade una partición no-BSD no se reconocerá automáticamente, ya que a OpenBSD solo le importa SU partición, por lo que el núcleo ignorará la partición adicional.

Esto da problemas cuando particionas desde GNU/Linux con Gparted para dejar el disco preparado. OpenBSD va a ignorar ese espacio, así que hay que tirar de fdisk y disklabel.



Empieza la odisea


He de decir que he conseguido una instalación exitosa a base de prueba/error. Por suerte OpenBSD se instala en poquísimo tiempo; donde realmente he perdido más tiempo ha sido buscando información en foros y leyendo la documentación oficial, ya sabes, RTFM.


Errores a evitar


OpenBSD es muy suyo debido al objetivo al que está destinado: la seguridad, así que todos los pasos de particionado que ya sabemos de GNU/Linux no nos van a servir aquí.

Hay que tirar de 2 herramientas básicas: fdisk y disklabel, así que ya estás tardando en empollar fdisk (porque disklabel es sumamente fácil de usar) y algo de geometría de un disco.


NOTA: No sirven los comandos FDISK de GNU/Linux en OpenBSD, son diferentes, toca repasar FDISK para OpenBSD sí o sí, aunque el programa es el mismo y si sabes usarlo en GNU/Linux sabrás usarlo en OpenBSD.


El manual oficial dice que hay que pasar el comando "fdisk -iy disco" para escribir el MBR y pueda ser arrancable, pero en este caso no lo haré porque elimina el particionado, dejando todo el disco como etiqueta para OpenBSD (así perdí yo los datos, suerte de los backups).



FDISK


Así pues, cargado con 3 tilas, 6 folios llenos de notas a reventar y mis escasas neuronas, después de haber fracasado con particionados desde GNU/Linux, me pongo con FDISK.

Arranco con el CD y a la primera pregunta le digo que me abra una Shell y activo el disco:


cd /dev && sh MAKEDEV sd1

La partición MBR en OpenBSD por defecto se aloja en el espacio 3 con un ID 06, quedando los espacios 0, 1 y 2 con las opciones a 0 (cero) y con la etiqueta "unused". Si haces una partición nueva para almacenaje (como es mi caso), la alojará en el primer espacio, que es el 0 (cero) y la tendremos liada, porque OpenBSD espera ser la primera partición, y el resto ir detrás, pero por geometría del disco es imposible, no hay nada más allá del tercer espacio.

Hay que editar la tercera partición y quitarla:


fdisk -e sd1

sd1: > e 3

Partition id ('0' to disable) [01 - FF]: (? for help):

En esa pregunta que nos hace hemos de poner 00 para que aplique la etiqueta "unused". Si pulsas "?" te saldrán todos los tipos de sistemas con su valor hexadecimal (es bueno que apuntes los que vayas a utilizar).

Ahora voy al espacio 0 y la edito para crear un sistema OpenBSD:


NOTA: Hacer la partición "bootable" con la opción "flag 0" es necesario si solo hay un sistema para que la BIOS entregue el control al sistema operativo en esa partición. Aquí no sería necesario, ya que yo le pasaré a GRUB2 el control, no al propio sistema. Hazlo si no usas GRUB2 y/o quieres iniciar desde BIOS.


sd1*: > e 0

Partition id ('0' to disable) [01 - FF]: (? for help): A6
Do you wish to edit in CHS mode? [n]: "Tecla Intro"
Partition offset [0 - 1250263664]: [0] 64
Partition size: [1250263664] 623910912

sd1*: > flag 0
sd1*: >w
sd1*: >q

NOTA: Para calcular el espacio en sectores, usé la siguiente web de conversión a gigas:

Unitconversion


Como ves, he puesto A6 que es el sistema de archivos OpenBSD, el offset lo he dejado en 64, ya que el espacio hasta esos 64 es donde irá alojado el MBR de arranque, y el tamaño de la partición es la mitad del disco, y flag es para hacer la partición activa. W y Q para guardar y salir.


Bien, aquí vemos como cuando se crea la partición aparece el siguiente mensaje:


wq - writing MBR at offset 0


Esto significa que escribirá el sector MBR de arranque desde el 0 hasta el 64, y que no será necesario pasar el comando "fdisk -iy sd1" que, como dije antes, liquida toda partición que haya en el disco.


Ahora toca hacer lo mismo con la segunda partición. Aquí me comí la cabeza con el offset:


fdisk -e sd1
sd1*: > e 1

Partition id ('0' to disable) [01 - FF]: (? for help): 0B
Do you wish to edit in CHS mode? [n]: "Tecla Intro"
Partition offset [0 - 1250263664]: [0] 623910976
Partition size: [1250263664] 626350080

sd1*: >w
sd1*: >q

Aquí la etiqueta que elegí es W95-Fat32 que corresponde al número hexadecimal 0B. El offset ha de empezar donde finalizó la primera partición. El resultado es coger el "tamaño" (size) de la partición anterior y sumarle 64. El espacio es lo que resta de disco. W y Q para guardar y salir.


Ya está la primera parte, a por la segunda.



DISKLABEL


Ahora inicio disklabel. Este programa se usa para particionar la partición BSD, es decir, crear las "clasificaciones" (disklabels) dentro del espacio OpenBSD, y aquí tuve problemas.

Cuando quise hacer las clasificaciones, se quejó de que no había espacio OpenBSD, lo que es raro porque acababa de crearlo con FDISK y aparecía listado, pero no era accesible. El esquema que me mostró era el siguiente en cuanto a id, size y offset:


disklabel -E sd1
sd1: > p

c: 1250263664 0 unused
i: 623910912 64 OpenBSD
j: 626350080 623910976 W95-Fat32

Vaya, ya veo donde está el error. La partición para OpenBSD debe estar en el espacio a:, y en cambio, todo empieza en la unidad i: (recordar que c: no se puede tocar, solo hace referencia a todo el disco).

Decidí eliminar la partición i: y volverla a crear pero desde disklabel. Puedes consultar el paso 2 del artículo "Particionado" en el siguiente enlace:


Paso 2. Crear la partición principal


sd1: > d i
sd1*: > w
sd1: > a a

offset: [64]
size: 623910912
FS type: [4.2BSD] RAID
sd1*> p

a: 623910912 64 OpenBSD
c: 1250263664 0 unused
j: 626350080 623910976 W95-Fat32

sd1*> w
sd1> q

Voilá, ahora sí veo correctamente el orden (me fallaste FDISK).


Continuar la instalación.


Obviamos, como he dicho, la parte de la instalación donde nos dice que tecleemos "fdisk -iy sd1" y procedo con el fulldisk encryption mediante bioctl (ver artículo sobre particionado):


Particionado y cifrado de disco


NOTA: Ten en cuenta que los dispositivos de ese artículo eran de mi portátil, ahora han cambiado de nombre, el disco es sd1 y el volumen cifrado pasa a llamarse sd2


NOTA 2: Es importantísimo que apliques el comando dd para liberar el primer mega, o te aparecerá un bonito mensaje "Installboot: No OpenBSD partition, failed to install bootblocks" al acabar la instalación y tendrás que volver a empezar.


Ahora tecleo "exit" y me devuelve al inicio, donde ahora le digo que instale.



Consideraciones finales


OpenBSD es raaaaaro, raaaaaro, raaaaro, pero luego, después del ostión que te das, ya en frío y habiendo descansado la mente, te das cuenta de lo lógico que es todo, y que el hecho de desconocer el funcionamiento del sistema aumenta la dificultad, pero en cuanto lo entiendes, ya no necesitas volver a mirar guías.


Como tengo Archlinux en el primer disco con GRUB2, voy a meter una entrada para iniciar OpenBSD desde ahí:


1. Ya en GNU/Linux, editar /etc/grub.d/40_custom


menuentry "OpenBSD 7.1" {
	set root=(hd1,0)
	chainloader +1
}

NOTA: GRUB sigue llamando hdx,y a los discos, siendo 0 el primer disco,partición


2. Ejecutar como root:


update-grub

grub-mkconfig -o /boot/grub/grub.cfg

Ya se puede iniciar OpenBSD desde GRUB2



OpenBSD no se lleva bien con sistemas FAT32 ni tampoco NTFS, y se lleva algo mejor con ext4, aunque a veces se queja porque le gusta más ext2. Si quieres montar una partición NTFS olvídate de usar mount, porque la monta de solo lectura, así que hay que instalar ntfs-3g como en GNU/Linux, que opera en modo fuser y permite el uso completo de la partición NTFS.


Y para montar las particiones, hay que añadir una i al final del disco, implementación de montaje virtual. Los dispositivos extraíbles se montan igual:


mount /dev/sd3i /mnt/pendrive
mount /dev/sd1i /mnt/storage

Para mi sorpresa, me dio un error al montar la partición FAT32: "Device not configured"


Resulta que aunque ya tenía definida mi partición W95-FAT32, no estaba disponible. FDISK solo te crea la tabla, pero no el sistema de archivos, así que hay que hacerlo (igual que en GNU/Linux):


newfs -t msdos /dev/rsd1i

En poco menos de un minuto finalizó el proceso. Ahora sí pude montar la partición, aunque caí en la cuenta de que mis backups ocupan más de 4 Gb de límite que soporta FAT32, así que reformateé la partición en NTFS aprovechando que estaba en GNU/Linux, con Gparted, y uso ntfs-3g para su montaje en OpenBSD:


ntfs-3g /dev/sd1i /mnt/storage

NOTA: Si necesitas mantener los permisos de archivos de tus copias en una partición NTFS/FAT32 has de saber que estos sistemas no los respetan. O los tareas con el comando tar o crea una partición ext4.


Espero que este tocho de guía sirva para aclarar dudas si decidís instalar OpenBSD.




Tags #openbsd



◄ Listado de artículos

◄◄ Inicio



/blog/obsd/