Actualización de BIOS en computadoras Dell usando libsmbios

Importante: La actualización de BIOS si bien no debería traer problemas, no se considera segura. Siempre se recomienda hacer la actualización únicamente si es necesaria, ya que de ocurrir un error se podría dañar permanentemente el hardware del computador

Nota: Esto ha sido una traducción de un articulo en el sitio de Dell, pero actualizado para extraer el firmware de las nuevas actualizaciones de Dell para Windows. Requiere wine para la extracción.

Este articulo describe cómo actualizar el BIOS de tu sistema Dell usando, exclusivamente, utilitarios de Linux. Para lograr esto, instalaremos el libsmbios, un paquete genérico de Linux. Se asume, a lo largo de este documento, que todos los comandos serán ejecutados como el usuario 'root', excepto el paso de descargar el instalador ".EXE" para Windows y la extracción del ".HDR" usando WINE. Usa 'sudo' o 'su' para obtener privilegios de 'root' antes de usar estos comandos o ellos fallarán.

  1. Instalar libsmbios
    # apt-get update
    # apt-get install libsmbios-bin

  2. Obtener el archivo ".HDR"
    • Usando el archivo ".EXE" de actualización de Windows (Si deseas obtener la última versión)
      Nota: Este paso se puede (y se debe) hacer como un usuario regular y no como 'root'.

      1. Descargar el archivo ".EXE" para actualizar el BIOS de tu PC del sitio de soporte técnico de Dell (http://support.dell.com/). Muchas veces aquí encontrarás versiones más actualizadas.
      2. Extraer el archivo ".HDR" del archivo de instalación ".EXE"
        $ wine NOMBRE_DEL_ARCHIVO_DESCARGADO_DE_DELL.EXE -writehdrfile -nopause
        Verificar la extracción
        $ ls NOMBRE_DEL_ARCHIVO_DESCARGADO_DE_DELL*

        NOMBRE_DEL_ARCHIVO_DESCARGADO_DE_DELL.EXE    NOMBRE_DEL_ARCHIVO_DESCARGADO_DE_DELL.HDR

    • Usando el archivo ".HDR" publicado por Dell especialmente para Linux (No se actualiza con frecuencia)
      1. Obtener el 'System ID'
        # getSystemId

        Libsmbios:    0.12.1
        System ID:    0x01DD  <------- ******* Este número es el que buscamos *******
        Service Tag:  DT6WLB1
        Express Service Code: 30063287773
        Product Name: Dell DM061
        BIOS Version: 2.3.2
        Vendor:       Dell Inc.
        Is Dell:      1
      2. Descargar el último archivo ".HDR" de BIOS para este sistema. Ir a: http://linux.dell.com/repo/firmware/bios-hdrs/. Buscar un directorio cuyo nombre contenga el 'System ID' encontrado en el paso anterior. Los directorios han sido nombrados (las letras en minúsculas): system_bios_ven_0x1028_dev_SYSTEM_ID_version_BIOS_VERSION. Entrar al directorio con la versión del BIOS que desea instalar y descargar el archivo "bios.hdr".

  3. Cargar el controlador de dispositivos dell_rbu
    # modprobe dell_rbu

  4. Actualizar el BIOS
    # dellBiosUpdate -u -f NOMBRE_DEL_ARCHIVO_DESCARGADO_DE_DELL.HDR

    Supported RBU type for this system: (MONOLITHIC, PACKET)
    Using RBU v2 driver. Initializing Driver.
    Setting RBU type in v2 driver to: PACKET
    writing (4096) to file: /sys/devices/platform/dell_rbu/packet_size
    Writing RBU data (4096bytes/dot): ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
    Done writing packet data.
    Activate CMOS bit to notify BIOS that update is ready on next boot.
    Update staged sucessfully. BIOS update will occur on next reboot.

  5. Reiniciar el sistema
    # reboot

Posibles problemas

    Al seguir este proceso, puedes encontrarte con dos problemas comunes:

  • Problema: Has seguido las instrucciones, y todo dice que trabajó, pero el BIOS no se actualizó.
  • Solución: Normalmente, esto sucede porque el kernel esta haciendo un "cold reboot", lo cual causa problemas con el proceso de actualización. Le diremos al kernel que haga un "warm reboot" agregando "reboot=bios" al final de la línea de comandos del kernel (¿En Grub?). Reinicia para hacer efectivo este cambio, e intenta la actualización nuevamente.

  • Problema: Al ejecutar dellBiosUpdate te dice que no puede reservar suficiente memoria (could not allocate enough memory).
  • Solución: Algunos sistemas requieren hasta 2MB continuos de memoria *física*, lo cual a veces puede estar escaso, especialmente si el sistema ha estado corriendo por un buen tiempo. Debes reiniciar tu sistema un par de veces e intentar nuevamente la actualización.