Actualizando el BIOS con FreeDOS

Puede desear o necesitar actualizar el BIOS del PC, cuando el fabricante de la placa madre anuncie alguna mejora en el software del BIOS. El programa de instalación es normalmente ofrecido como una aplicación de MS-DOS.

Esta es una manera de actualizar el BIOS desde un USB en Linux. Funciona con llaves y con tarjetas micro/mini/SD (con el adaptador adecuado).

Primero, el BIOS tiene que permitir la inicialización desde USB y ser compatible con discos duros USB. Algunas formatos de BIOS solamente aceptan USB, floppies, CD-ROMs o dispositivos ZIP, aunque útiles, pueden hacer más dificil la actualización; sin embargo, puede ser que no tenga otra opción (en particular los ordenadores portátiles).

Necesitará tres cosas:

  1. Una llave USB, preferiblemente de <2 GB (FAT16 no permite más de 2 GB), y una instalación completa de FreeDOS solamente necesita 5.8 MB. El FAT16 es el formato recomendado, en vista de que el FAT32 no es detectable por todos los BIOS.
  2. Un medio de instalación de FreeDOS, fdbasecd.iso (8MB) debe ser suficiente.
  3. qemu (# apt-get install qemu), qemu se requiere para el instalador; basicamente el BIOS emulado por qemu hace que el pendrive USB se parezca a FreeDOS como un disco duro normal, así que lo puede instalar normalmente (y evita quemar un CD para el FreeDOS).
Esto es absolutamente critico: en ningún momento hay que montar el pendrive USB. Tenga mucho cuidado al selecionar el nodo de dispositivo corecto, de otra manera todos los datos en el disco equivocado serán borrados sin remedio; por ejemplo, su disco duro principal.

Enchufe el pendrive USB, recuerde, no tiene que montar el pendrive. Revise el dmesg (los ultimos mensajes, si acaba de enchufarlo), para determinar cuál nodo de dispositivo fue asignado al pendrive USB, vamos a suponer que sea /dev/sdb .

Limpie el pendrive USB, atención, todos los datos serán borrados, puede limpiar todo en vez de solamente los primeros 16 MB.

$ su
Contraseña:
dd if=/dev/zero of=/dev/sdb bs=1M count=16
16+0 records in
16+0 records out
16777216 bytes (17 MB) copied, 2.35751 s, 7.1 MB/s

Particionando el pendrive USB

Particionar y formatear el pendrive USB correctamente es probablemente lo más difícil.

Fije la etiqueta a FAT16, en pendrives de <2 GB (ofrece la mejor compatibilidad con todos los tipos de BIOS).

Use el fdisk para particionar:

# fdisk /dev/sdb
fdisk /dev/sdb
Dispositivo no contiene una tabla de partición valida de DOS, ni una etiqueta de Sun, SGI o OSF.
Construyendo nueva etiqueta para DOS con el identificador 0xa8993739.
Los cambios quedaran en memoria solamente, hasta que decida escribirlos.
Despues de eso, por supuesto, el contenido previo no será recuperable.

Aviso: bandeja invalido 0x0000 de la tabla de partición 4 será corregido por w(rite) (escribir)

Ahora, cree una partición:

Comando (m para ayuda): n
Comando de la acción:
   e   Extendido
   p   Partición Primario (1-4)
p
Número de Partición (1-4): 1
Primer cilindro (1-1018, por defecto 1):
Utilizando valor por defecto 1
Último cilindro ó +tamaño ó +tamañoM ó +tamañoK (1-1018, por defecto 1018):
Utilizando valor por defecto 1018

Confirmar la creación de la partición mostrando la tabla de particiones:

Comando (m para ayuda): p

Disco /dev/sdb: 2003 MB, 2003828736 bytes
62 cabezas, 62 sectores/pista, 1018 cilindros
Unidades = cilindros de 3844 * 512 = 1968128 bytes
Identificador del Disco: 0xa8993739

Diapositivo Inicio   Comienzo Fin  Bloques     Id  Sistema
/dev/sdb1               1        1018     1956595+  83  Linux

Fije la etiqueta correcta para la patición: '6' para FAT16:

Comando (m para ayuda): t
Partición Seleccionada 1
Código Hex  (tipea L para listar códigos): l

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX

Código Hex (teclear L para listar códgos): 6

Cambio tipo de sistema en partición 1 a 6 (FAT16)

Activar la nueva y única partición:

Comando (m para ayuda): a
Número de Partición (1-4): 1

Mostrar la tabla de partición de nuevo, para reconfirmar que la partición esta activada:

Comando (m para ayuda): p

Disco /dev/sdb: 2003 MB, 2003828736 bytes
62 cabezas, 62 sectores/pista, 1018 cilindros
Units = cylinders of 3844 * 512 = 1968128 bytes
Identificador de Disco: 0xa8993739

Diapositivo Inicio   Comienzo Fin  Bloques     Id  Sistema
/dev/sdb1   *           1        1018     1956595+   6  FAT16

Escriba la tabla de partición nuevo al pendrive USB y salga de fdisk:

Comando (m para ayuda): w
La tabla de particiones ha sido alterada!

Llamando ioctl() para leer de nuevo la tabla de particiones.

AVISO: Si ha creado o modificado cualquier DOS 6.x
particiones, por favor vea la página man para información adicional.
Sincronizando discos.
# exit

Formatear el pendrive USB, nuevamente particionado:

mkfs -t vfat -n FreeDOS /dev/sdb1
exit

La fase preparatoria se ha completado. Ahora el pendrive USB está particionado y formateado. Ya es momento de comenzar el proceso de instalación.

Iniciando FreeDOS con qemu

DOS no es capaz de reconocer el pendrive USB, por lo que necesita una manera de que el instalador de FreeDOS reconozca el pendrive como un disco duro ordinario. En un LiveBoot, el BIOS del sistema lo hace por nosotros, pero aquí tendrá que hacer que el qemu lo reconozca:

como usuario $:
qemu -hda /dev/sdb -cdrom /ruta/al/fdbasecd.iso -boot d

Use el comutador ctrl-alt entre el raton y el teclado, permitiendo cambiar entre escritorios para leer de nuevo cualquier aviso que salga en cada etapa.

QEMU FreeDOS

Esto inicia el FreeDOS DC y hace que el pendrive USB sea visto como el disco duro primario maestro (ahora actúa la capacidad de qemu de eumular el BIOS, lo que causa que el pendrive USB parezca a DOS como un disco duro normal.) Seleccione el instalador desde el menú de arranque de la instancia de FreeDOS virtualizada:

1) Continua a inicializar FreeDOS desde el CD-ROM
1
enter

Siga escogiendo el preseleccionado, 1 y/o selecionando Si cuando le pregunte.

freedos-inst1
freedos-inst2
freedos-inst3

El instalador pide que se reinicie - pero no lo haga todavia, hay que corregir dos (2) errores en el instalador de FreeDOS para el "mbr" y el "bootmenu". Escriba la letra n.

freedos-do not reboot type n

Escribiendo un sector de inicio en el pendrive USB

El primer error a corregir es el del "mbr", como sigue:

fdisk /mbr 1

Para corregir el segundo error del "bootmenu" en el nuevo fdconfig.sys, ejecute:

cd \
edit fdconfig.sys

y modifique la línea de arranque del "command.com" a lo siguiente:

1234?SHELLHIGH=C:\FDOS\command.com C:\FDOS /D /P=C:\fdauto.bat /K set
(no cambie este comando realmente, sólo anteponga "1234?" al inicio de la línea (antes de  SHELLHIGH==C:\FDOS\command.com .....
NOTA literalmente: 1234?
fdconfig.sys

Aunque no coincida, no cambie nada más, ya que las instrucciones de la línea dependen de su configuración de instalación.

Guárdelo y salga de "edit":

[alt]+[f]

Una vez de regreso en el prompt de la línea de comando, ya puede salir de qemu.

Verifique si el qemu arranca el pendrive USB.

qemu -hda /dev/sdb -boot c

El pendrive USB ahora es iniciable y contiene una completa instalación de FreeDOS de 5.4 MB, para "flashing", escribiendo en el BIOS. Realmente, debe reiniciar sin ningún driver , (opción del menu, 4), porque cargando los archivos himem.sys y emm386, puede interferir con las utilidades de "flashing" para el BIOS!:

Actualizando el BIOS

Asumiendo que el PC está funcionando, enchufe el pendrive USB con FreeDOS, móntelo y baje los archivos de BIOS requeridos, según recomiende el fabricante de la placa madre/BIOS, hacia el pendrive USB con FreeDOS; desmonte luego el pendrive.

Apague el PC, enchufe el pendrive USB con FreeDOS, y siga el procedimiento recomendado por el fabricante de la placa madre/BIOS para reiniciarlo desde un dispositivo externo.

Contenido revisado 14/08/2010 0100 UTC