Monday, January 2, 2023

Preparar una USB en Linux para flashear la BIOS de tu mobo.

 <Contexto>

Uno de los últimos días de diciembre del 2022 me hice de un "combo" de mobo + procesador + memoria ram, a través del mercado de pulgas local de una red social que comienza con "F" —uno de los pros de usar redes sociales: se aprovecha el comercio formal e informal... 

Esto es lo que compré:

  • Mobo (motherboard, placa base) MSI, modelo h81i ("H81I" en mayúsculas)
  • i7 4790 (el i7 de multiplicador bloqueado más potente de su generación)
  • 16GB de RAM (2x8GB Corsair Vengeance DDR3). 

La placa, como la "i" indica, es mini-ITX (170mm x 170mm) y cabe en el Cooler Master Elite 130, donde hasta hace unos meses tuve una AsRock QC5000-ITX (con el AMD A4-5000 "Kabini" soldado directamente, procesador de bajo consumo del 2013 para laptops de gama baja) que compré hace ya varios años, y donde instalé Debian Stretch (¿o era Jesse? no recuerdo) y que hace meses murió (capacitores estallados)

Para los estándares actuales, mi actualización es parecida a Apple lanzando "novedades" cada año, con hardware de hace un par de generaciones atrás (tanto la placa base como la ram y CPU tienen varios años ya); pero con AMD actualmente pateándole el c**lo a Intel desde Ryzen, los precios de equipo que antes fuera "gama alta" están cayendo y dado que buscaba algo "frugal", aproveché la oportunidad apropiada para reemplazar la placa AsRock. 

 

El vendedor (alguien que parece gustar de equipo de gama media-alta) me dejó probarla antes de la compra y parecía funcionar bien excepto que al reiniciar, no había POST. Imaginé que una configuración en la BIOS o incluso, un jumper o un cable mal puesto podrían causar esto y eventualmente lo arreglaría así que procedimos a cerrar negocio. Días después removí la placa quemada e instalé la MSI "nueva"; reemplacé el disipador stock con el radiador Corsair H60 que compré entre el 2010 - 2011; reconecté cables e hice un par de pruebas de encendido-apagado y reinicio... y reiniciando descubrí que el inconveniente seguía allí: 


No hay POST* después de cada reinicio.

(*Power On Self Test, que sucede en el momento en el que aparece en pantalla, la marca de la placa base u OEM, antes de localizar el sistema operativo y arrancarlo). 


Probé distintos SSDs, un cable HDMi y uno VGA... probé reiniciando con una sola memoria a la vez y obtuve la misma respuesta siempre. Busqué este problema en línea y encontré una publicación en el foro oficial de MSI, de una motherboard similar, reportando el mismo problema. Las placas base que MSI lanzó con el chipset H81 mostraban este comportamiento con procesadores Haswell (Intel Core de 4ta generación). Según uno de los miembros del foro, tuvo que hacer flash a cada versión de BIOS desde la primera (versión "0") hasta la que finalmente aplica el "fix" (la versión 3, ó A.3 aplica el fix para mi mobo).


Cuando trabajé en Soporte Técnico de Dell para Latitude y Optiplex del 2009 al 2012, solíamos hacer un "flash" a las BIOS cuando surgían ciertos probleams de hardware: se buscaba el archivo BIOS (usualmente un .exe), se descargaba y corría desde Windows... la computadora realizaba el resto por su cuenta; solía ser un proceso sumamente sencillo pero con riesgos (el de "bricking" la placa base, si se usa un archivo BIOS para el modelo de PC equivocado). La solución reportada en el foro de MSI es en efecto, flashear BIOS (la versión mínima que corrige este problema es la A.3). Leí varias instrucciones de las maneras recomendadas de flashear BIOS para MSI y en su mayoría se refieren a procedimientos y herramientas dedicadas para Windows. 


El propósito de esta entrada es describirte cómo usar heramientas dentro de tu distro de Linux para preparar una USB y flashear tu BIOS desde dentro de la interfaz BIOS (fuera del Sistema Operativo) —siempre que el fabricante de tu placa base ("mobo") lo permita. Las instrucciones de cómo flashear la BIOS desde fuera del Sistema Operativo varían según cada fabricante y necesitarás complementar esta lectura con la documentación/manual de tu mobo (un folleto físico que viene con tu placa base, aunque los fabricantes los comparten en línea por si alguien pierde el folleto, o no lo tiene... como en mi caso) o explorando las opciones disponibles en tu BIOS. Abajo comparto los pasos necesarios que pueden realizarse desde Linux.

    </Contexto>


    Cómo hacer flash a una motherboard MSI vía m-flash usando Linux: 

    1. Busqué y guardé cada versión de BIOS (y en el caso de algunos procesadores Intel, el archivo Intel ME —asumo que se refiere a Intel Management Engine, y que afortunadamente encontréen los foros oficiales de MSI). Obtendrás archivos .zip (el ME lo encontré en formato .zip). 
    2. Decomprimí cada archivo (para los .zip, $ tar -xvf ...) con cualquiera de estos dos comandos: 
        • tar -xzvf nombredelarchivo.zip
        • unzip nombredelarchivo.zip
      • Esto creará directorios ("carpetas") donde habrá varios archivos: usualmente un .txt con detalles de la revisión, un .exe ejecutable para Windows (no nos sirve ni lo necesitamos) y un archivo cuya extensión varía según el fabricante de la placa base (MSI los nombra "nombre.A00", "nombre.A10", etc.) 
    3. Reformateé una memoria USB en FAT32 (según el fabricante, chipset y edad de tu placa base, podrías o no usar un puerto USB 3.0); asumiendo que tu USB está en /dev/sdc1, cualquiera de estos dos comandos te servirán: 
      • sudo mkfs.vfat -F 32 /dev/sdc1
      • Opcionalmente: 
      • sudo mkfs.vfat -F 32 -n "nombre de tu memoria USB" /dev/sdc1
    4. Guardé el respectivo archivo de BIOS (no el .exe ni el .txt) en el directorio más alto de la memoria USB para leerlo y cargarlo desde de la interfaz BIOS ("flashear" la BIOS) fuera de subdirectorios o "carpetas" adicionales en la USB; los guardé en el "top level directory" de la USB. 
      • Encendí mi PC, cargué a la interfaz BIOS (para mobos MSI, la tecla "delete" durante el POST).
      • Fui a "M-Flash"; navegué en el "top level directory" de la USB, escogí uno el archivo de BIOS con la primera versión y di "Enter". 
      • La interfaz cargó el archivo, hizo el "flash" (en resumen, escribir a una EPROM o Memoria Flash de la mobo, con las instrucciones necesarias de bajo nivel).

    Saltar directamente hasta la versión de BIOS A.3 (la que implementa el soporte a chips Haswell) no logró resolver el problema. En efecto y como mencioné párrafos atrás, tuve que flashear dede la primera versión (A.0) progresivamente hasta llegar a la A.3 para finalmente logré reiniciar la PC sin problemas; esto significó descargar, decomprimir y guardar en mi memoria USB varias versiones de archivos BIOS para aplicar la actualización que resolvió.   

    Cómo notarás, es posible realizar toda la preparación desde la terminal de tu distribución Linux favorita, sin usar .exe's ni herramientas que los fabricantes lanzan casi exclusivamente para Windows. 

    P.D: hace ya mucho desde la última vez que compartimos una entrada y es posible que pase tiempo antes de la siguiente... ¡Te deseamos un 2023 lleno de logros y nuevo conocimiento y sigás aprendiendo más sobre Linux!

    Entradas populares.