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!

    Tuesday, March 1, 2016

    ¿Cómo escojo una distro me recomiendan? Parte II

    ¿Cuál distro te recomiendo? La que resuelva tus necesidades. Tenés que definir cuáles son tus necesidades. Tus necesidades están compuestas por 
    1. Tus necesidades y expectativas. 

    2. Las limitaciones de tu hardware.


    Tus necesidades como usuario.  

    Tenés que considerar estas cosas:  
    • Tipos de release:
      • Estable, fijo o estándar: ya fue testeado, auditado, probado, certificado que no dará pedos -a menos que seás travieso y hagás cambios significativos en archivos de configuración, o que usés software o paquetes que no están en los repositorios oficiales de esa distro. En estas, usualmente todo el equipo de desarrollo aprobó su lanzamiento; todos hiceron un "thumbs up". Idealmente, querés un release oficial. Las organizaciones desrarrolladoras programan y anuncian fechas de lanzamiento. Dentro de estos releases, hay una subdivisión:
        • LTS ("Long Term Support"): reciben desarrollo y/o soporte técnico adicional por cierta cantidad de años; el soporte usualmente es un extra pagado (Canonical ofrece una versión Ubuntu LTS, por ejemplo).
      • Versiones Pre-Alpha, Nightly Builds, Alpha, Beta, Release Candidate, experimental, en desarrollo o términos afines que se refieran a lo contrario de un release oficial. Para simplificarlo, son un  "prototipo", un trabajo en progreso; son orientadas a desarrolladores, miembros respetados de la comunidad, programadores, auditores, etc. y  seguramente tendrán bugs, pedos, errores, lentitud, pantallazos y tormentas de pupú de vez en cuando. Es así porque no están listas para el usuario final. Simple. Y los que saben de desarrollo, pueden experimentar, auditar, e incluso reparar bugs, agregar cosas, modificarlas y mejorarlas. Es como si le diera mi prototipo de automóvil a un ingeniero mecánico para que haga "peer review". Si no sos un desarrollador, te recomiendo que te alejés de ellas, o al menos NO LAS USÉS COMO tu distro principal/en tu pc principal, por paz mental.
      • Rolling release: distribución en actualización constante.
      • Todo esto, tiene que ver con el ciclo de lanzamiento de software. Wikealo para aprender más, si te interesa.
    • Apariencia (influenciado por mayor o menor medida por tu hardware y habilidades técnicas) :
      • Old School.
      • Simple, minimalista.
      • Elaborada.
      • Con animaciones y efectos fluidos.
      • Transparencias.
      • Sin efectos en absoluto.
    • El propósito de tu PC: 
      • Navegar por la web
      • Ver porno
      • Jugar en FB
      • Jugar cosas de varoncito.
      • Revisar tu email.
      • Universidad.
      • Trabajo.
      • Desarrollar programas.
      • Diseño gráfico.  
      • Fapping a 1080p ó 4K.  
      • Crear, renderizar, etc. 
      • Desarrollar, programar.
      • Ver pelis.
      • Escuchar música.
      • Mezclar música. 
      • Usarla para tu trabajo.
    •   Nivel de dificultad: 
      • Usuarios domésticos (mejor conocidos con los "normalitos"), principiantes en Linux que quieren aprender Linux, estudiantes de programación/
      • Usuarios familiarizados con GNU/Linux, entusiastas,
      • Usuarios avanzados: sysadmins, hackers, desarrolladores de GNU/Linux.
    • Otros factores: 
      • Similitud a Windows o Mac OS para facilitar la transición a GNU/Linux.
      • Curva de aprendizaje pequeña.
      • Evitar usar le Terminal tanto como sea posible.

    Monday, February 15, 2016

    ¿Para qué compilar desde fuente?


    Sigo sin entender para qué cojones debo de compilar.

    Así pensaba yo también. No tiene sentido usar algo si no entiendo primero su utilidad. Te comparto un ejemplo/experiencia que tuve. 

    Me moví a Arch porque busco algo más ligero que Freya y a la vez, algo que me ayude a aprender sobre la instalación y mantenimiento del sistema operativo: algo que me permita "tener control" de los detalles, para aprender de estos. Como sabemos, Arch requiere ser instalado "desde el suelo": el sistema base no tiene GUI, es sólo el prompt y una CLI. Vos agregás componentes según tu voluntad y preferencias.
    Estoy usando Awesome WM en lugar de un Destkop Environment completo. También uso urxvt como Terminal, en lugar de una terminal pesada. Esto hace mi escritorio ligero. Ahora bien, extraño la transparencia en Terminal, como la de Pantheon-Terminal en Freya, porque permite trabajar en Terminal sobre tu navegador por ejemplo, y leer cosas mientras trabajás en Terminal. Esto me lleva a un predicamento: 

    • Podría instalar Pantheon-Terminal en Arch, pero no quiero algo tan pesado ni con barra de menú porque es un desperdicio de pixeles... más aun en una laptop. Quiero ahorrar pixeles y dedicarlos a más contenido, no a botones.
    • En todo caso, la selección de Terminal no es el problema; Awesome WM no soporta transparencias de manera nativa, sino que require un "composite manager", gestor de composición de ventanas para lograrlo. Esto significa que puedo usar virtualmente cualquier Terminal y tener transparencia, siempre y cuando tenga un Composite Manager.
    Después de documentarme, aprendí que el Composite Manager llamado Unagi, es ligero y de hecho,  fue desarrollado para Awesome WM. Unagi es un paquete adicional en Arch (y diría que en muchas otras distros). No toda la gente lo usa ni lo necesita, así que no tiene sentido para los desarrolladores de Arch, incluirlo como paquete oficial en el sistema base; hacerlo sería abusar del almacenaje de quienes no lo usarán: esta sería una definición justa del término BLOATWARE. Por eso Unagi está en el AUR, el Repositorio de Usuarios de Arch; acá hay software de calidad, en tarballs, listo para ser descargado, compilado e instalado manualmente por quien desee usarlo. 

    Así que, para ejemplificar los pasos que te compartí antes, hice lo siguiente:


    $ wget https://aur.archlinux.org/cgit/aur.git/snapshot/unagi.tar.gz
    $ tar xvf unagi.tar.gz
    $ cd unagi 
    $ cat PKGBUILD 
    $ makepkg -s 
    $ sudo pacman -U unagi.tar.xz

    Explicación: descargué el tarball (paquete comprimido), lo extraje, creó un directorio con contenido; me moví a ese directorio, leí el script de instalación o PKGBUILD (es recomendado leer el script de instalación -si entendés de bash-scripting :v para confirmar que el script está limpio y no tiene nada malicioso.); compilé el paquete asegurándome de forzar dependencias a ser instaladas (el script incluye referencias a esas dependencias), e instalé el paquete... aunque pude ahorrarme la última línea y usar $ makepkg -sri  en su lugar.



    Y listo. Ahora que tengo Unagi instalado, puedo trabajar en las configuraciones apropiadas dentro de Awesome para hacer que mi terminal sea transparente. Y esa, es otra historia. Hasta pronto :)

    Entradas populares.