Rompiendo la barrera de los discos duros en las BIOS antiguas

Hoy en día vivimos en una época dorada de la retroinformática donde es posible ver locuras como arrancar MS-DOS en un disco SSD NVMe de última generación. Pero hay algo más doloroso, y es cómo solucionar uno de los dolores de cabeza más habituales al restaurar un PC de época: los límites de capacidad que imponen las BIOS antiguas en los discos duros.

Si alguna vez has intentado conectar una tarjeta CompactFlash de 4 GB o un disco IDE de 20 GB a una placa 386 o 486, sabrás que la BIOS original se niega a reconocerlo o se cuelga debido a las viejas limitaciones de geometría (las famosas barreras de 528 MB o 8.4 GB). Por suerte, la solución lleva con nosotros desde el mismísimo nacimiento del PC.

El secreto de IBM: Las Option ROMs

La arquitectura del IBM PC original se diseñó de forma tan modular que la BIOS podía delegar tareas en firmas de código de terceros cargadas desde tarjetas de expansión. Estas son las llamadas Option ROMs.

Un detalle curioso que muchos olvidan es que el propio sistema de arranque del IBM PC utilizaba este concepto: si la máquina no encontraba ningún disquete con sistema operativo en el sector de arranque, la BIOS saltaba a una ROM interna con el clásico IBM Cassette BASIC.

Con el paso de los años, este mecanismo de «extensión de BIOS» se ha convertido en la navaja suiza del retrocomputing:

  • Plop Boot Manager: Permite añadir capacidades de arranque avanzadas y gestión de discos mediante un Option ROM. Incluso arrancar desde USB en sistemas que ni lo soporta. Siempre lo tengo a mano.
  • XT-IDE Universal BIOS: La solución clásica por excelencia. Grabar la ROM de XT-IDE en la memoria vacante (Boot ROM) de una antigua tarjeta de red ISA/PCI es la forma más popular de añadir soporte LBA a un sistema antiguo.
  • Cargar ROMs desde disquete: Si no tienes un programador de memorias EEPROM a mano o una placa XTIDE, existen proyectos fascinantes como Optromloader de rvalles, que permite emular la carga de una Option ROM directamente desde un disquete durante el arranque.

Dando el salto a los 32 bits: IDE-386+ de Atheatos

Aunque la BIOS de XT-IDE es fantástica, fue diseñada originalmente pensando en la compatibilidad con procesadores de 8 y 16 bits (como el 8088 o el 286). Si estás trabajando en un equipo 386, 486 o Pentium, existe una alternativa mucho más moderna y optimizada: el projecto IDE-386+ Option ROM (v1.1) desarrollado por Atheatos.

IDE-386+ Option ROM by Atheatos (v1.1) aprovecha el conjunto de instrucciones de 32 bits de los procesadores 386 en adelante. Esto se traduce en:

  1. Mayor rendimiento en la traducción de sectores respecto a BIOS de 16 bits.
  2. Soporte LBA completo, eliminando cualquier cuelgue al usar convertidores de SD/CF a IDE de gran tamaño.
  3. Un tamaño extremadamente compacto para encajar en cualquier zócalo ROM.

Inyectando la ROM directamente en tu BIOS

¿Y si no quieres depender de una tarjeta de red secundaria para alojar la ROM? Si tu placa base cuenta con una BIOS de tipo Flash (común en finales de la era 486 y Pentium), puedes integrarla permanentemente dentro del propio chip de la placa.

Herramientas de modificación de BIOS como AthAMIed (para BIOS AMI) o AthAWDij (para BIOS Award) permiten abrir el archivo binario de la BIOS de tu placa e inyectar la Option ROM de IDE-386+ en un segmento libre. Al flashear la BIOS modificada de vuelta en tu equipo, la placa base reconocerá discos duros gigantescos de forma nativa desde el primer milisegundo, sin necesidad de hardware adicional ni controladores software como Ontrack Disk Manager.

El hardware antiguo tiene muchas limitaciones, pero gracias a la flexibilidad con la que se diseñó la arquitectura x86 original y al trabajo incombustible de la comunidad, nuestros viejos PCs siguen vivos y más capaces que nunca.

 

Disclaimer: modificar la bios puede hacer que tu PC no arranque, mejor ten un programador o backups a mano.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Leave the field below empty!