"Después del juego es antes del juego"
Sepp Herberger

Mostrando entradas con la etiqueta actualizar. Mostrar todas las entradas
Mostrando entradas con la etiqueta actualizar. Mostrar todas las entradas

miércoles, 10 de septiembre de 2025

Actualizar BIOS desde FreeDOS+USB

Me ha pasado varias veces que actualizando hardware en equipos algo antiguos he tenido que actualizar la BIOS. El problema viene cuando esa actualización necesita usar MS-DOS (no hay forma de actualizar usando Linux, Windows o a través de la propia BIOS) y el equipo no tiene disquetera ni lector de CD (y además y no ya no tengo ni disquetes ni CDs). Otra opción es arracancar un sistema MS.DOS por red usando PXE, pero es demasiado rebuscdao.

En ese caso la solución más sencilla que he encontrado es bajar una imagen de FreeDOS (clon libre de MS-DOS), meter en ella los ficheros necesarios para la actualización y grabarla en un pendrive usando Rufus (Unetbootin me ha dado casi siempre problemas con este tipo de imágenes).

Vamos a ver un ejemplo práctico. Quiero actualizar una placa base Gigabyte GA-H61M-DS2 (rev. 2.0) a la BIOS versión F9. La descargo desde aqui y las descomprimo. Los ficheros son:
Efiflash.exe
h61mds22.f9
autoexec.bat
Ahora descargo la imagen FreeDOS desde aqui: https://freedos.org/download/. Descargamos la imagen FullUSB y descomprimos el .zip extrayendo el fichero FD12FULL.img.

Este fichero contiene dentro una imagen de anrranque FreeDOS. Hay que montarla y meter dentro los 3 ficheros anteriores para que al arrancar podamos disponer de ellos. Como está en un formato de imagen FreeDOS no se monta con un simple "mount -o loop", hay que hacer alguna operación adicional. Lo primero es hacer
# fdisk -l FD14FULL.img
FD14FULL.img1 * 63 2096639 2096577 1023,7M c W95 FAT32 (LBA)
Esto nos dice que dentro hay una partición FAT32 (LBA), que empieza en el sector 63 y como sector tiene normalmente 512 bytes, tenemos que calcular el offset:

offset = 63 * 512 = 32256

Entonces el comando para montar la imagen sería:
# sudo mount -o loop,offset=32256 -t vfat FD14FULL.img /mnt
/mnt es el directorio donde se montará la imagen. Evidentemente se puede cambiar por otro. -t vfat indica que es FAT32. offset le dice a mount en que punto del fichero .img comienza la partición como tal. Si no se indica el comando mount no puede montarla.

Hecho esto podemos acceder en /mnt al contenido de la imagen. Haremos
# cd /mnt
# mkdir BIOSH61M
# cd BIOSH61M
# cp ...../Efiflash.exe .
# cp ...../h61mds22.f9 .
# cp ...../autoexec.bat .
# cd /root
# umount /mnt
Con esto ya tenemos el fichero IMG con el contenido correcto dentro. Desde un Windows y usando Rufus metemos la imagen IMG en un pendrive..



Luego arrancamos en el PC con ese pendrive y se cargará el FreeDOS. Nos preguntará si queremos instalar FreeDOS pero no, cancelamos la instalación y nos lleva al prompt X:\> de los viejos tiempos. Una vez allí hacemos;
CD BIOS...
EFIFLASH.EXE H61MDS22.F9
Dejamos que acabe y listo, ya tenemos la BIOS actualizada...