Escenario
Desde hace más de diez años uso un servidor para almacenar mi música, copias de seguridad, películas, fotos y vídeos. Tiene instalado Nas4free, un software para gestionar los recursos de la NAS que corre sobre el sistema operativo FreeBSD. Desde el 2018 el software empezó a publicarse bajo el nombre XigmaNas. Esto último me he enterado hoy después de que estallará un tormenta que ha provocado un apagón de menos de un segudo, el tiempo suficiente para que el servidor NAS deje de funcionar.
Problema I
Cuando arranca se queda pillado en la instrucción:
pcib0: acpi host-pci bridge port 0xcf8-0xcff on acpi0 pcib0
Lo apago y arranco tres veces, pero invariablemente el sistema operativo deja de cargarse en esa instrucción. Tras buscar en internet, leo en varios foros que se puede solucionar estableciendo la siguiente variable cuando arranca el ordenador, y luego reiniciando:
set hw.pci.realloc_bars=1boot
Para poder establecer la variable, en vez de dejar que Nas4free arranque normalmente, tengo que usar la opción para que inicie en modo consola. Una vez en modo consola, lanzo los dos comandos, pero sigue deteniéndose en el mismo sitio. Me huelo que algún componente del hardware ha muerto o la BIOS ha dejado de reconocerlo. Decido desmontar el disco duro para por lo menos rescatar el contenido del disco de arranque. Una de las particiones tiene una base de datos sqlite de la que hace tiempo no hago una copia de seguridad.
Es un disco viejo de tipo IDE. Lo monto en una carcasa USB y enchufo a un ordenador con Ubuntu 18.04. Para montar un disco formateado en UFS hay que usar el siguiente comando:
$ sudo mount -t ufs -o ro,ufstype=ufs2 /dev/sdc5 /media/std
Problema II
Al menos que se compile el kernel con la opción explícita, Ubuntu no permite escribir en un disco con el sistema de ficheros UFS, solo leer. He decidido que voy a modificar el fichero /boot/loader.conf para añadir la variable de la que hablé arriba. Lo mismo así consigo rescatar el sistema. Vuelvo a buscar en internet y resulta que hay un tipo que ha publicado en
Github una herramienta para montar particiones UFS para lectura y escritura. Las instrucciones del README no son muy claras. Así es como he conseguido que . Antes de compilar el código hay que instalar tres paquetes de Ubuntu:
$ sudo apt install libfuse$ sudo apt install e2fslibs-dev$ sudo apt install libfuse-dev
A continuación hacemos un pull del código, compilamos e instalamos:
$ git clone git@github.com:mkatiyar/fuse-ufs2.git$ cd fuse-ufs2$ ./autogen.sh$ ./configure$ make$ sudo make install
Ahora sí que puede montar la partición con el comando
$ sudo fuse-ufs /dev/sdc5 /media/st3 -o rw+
Y modificar el fichero de configuración. Vuelvo a montar el disco duro en la máquina de origen, pero el arranque sigue atascándose en el mismo punto. Me digo que tengo que comprarme un nueva máquina. Pero antes, arranco el Nas4free en modo verboso por si se me hubiera escapado algo. Veo que se para en:
ohci early: SMM active, request owner change
Tras una búsqueda rápida caigo en un
foro de FreeBSD donde apuntan que
ohci es un término usado en el ámbito de las conexiones USB. Reinicio la máquina para entrar en la BIOS, deshabilito los dispositivos de USB y —quién me lo iba a decir después de tres horas de lucha desesperada— ¡mi vieja máquina vuelve a arrancar!
Solución
Mucho me temo que, tarde o temprano, la solución definitiva pase por comprar otra máquina.