Actualizar el microcode del procesador del nas
#1
Este tutorial va ser muy largo más que nada por las explicaciones que voy a dar para que se entienda en que consiste y lo que se pretende conseguir, su puesta en funcionamiento va a ser más sencilla. Lo primero que tengo que decir es que va a estar más enfocado en los nas Qnap con procesador Intel aunque también comentaré la posibilidad de implementarlo en nas con procesador AMD, los nas que van a quedar descartados serán los que lleven procesadores ARM o de otro tipo.


INTRODUCCION:


Como es sabido los procesadores van integrados en dispositivos de todo tipo, cuando un fabricante de procesadores sea Intel o AMD saca un procesador al mercado este procesador recibe actualizaciones a lo largo del tiempo y esas actualizaciones son lo que se conoce como microcodes. Esos microcódigos se los podría considerar como actualizaciones del firmware del procesador con varios matices. El primero de ellos es que esas actualizaciones del microcode del procesador no " se graban " en el propio procesador. Por norma general el microcode está incluido en la Bios de la placa base del equipo en cuestión y la actualización del microcódigo se guarda en la memoria volátil y cada vez que encendemos el equipo la BIOS / UEFI actualiza el microcódigo del procesador en cada arranque. Dicho de otra forma, al encender el equipo la Bios le dice al procesador como " se tiene que comportar " con arreglo al microcódigo que lleva incorporado la propia Bios. Como he explicado antes tanto Intel como AMD actualizan el microcódigo de cada uno de sus procesadores a lo largo del tiempo corrigiendo errores que pueden causar desde un procesamiento incorrecto hasta corrupción de código y datos que incluso pueden llegar a provocar bloqueos del sistema, es decir, aumentando la estabilidad del procesador como también mejorando su rendimiento.


Los fabricantes de placas base de ordenadores y portátiles suelen lanzar cada cierto tiempo actualizaciones de Bios y en esas actualizaciones se debería de suponer que integran también actualizaciones de los microcodes, digo debería porque no hay absolútamente ninguna información sobre este aspecto, esto lo podemos comprobar si revisamos el changelog de las actualizaciones de las Bios. Aparte de lo anterior existen ciertos dispositivos que una vez adquiridos no reciben actualizaciones de la Bios, un ejemplo de esto podrían ser los minipc chinos de Aliexpress y otro son los Nas al menos la gran mayoría de ellos.


Por suerte existe otro método para actualizar el microcode de los procesadores sin tener que pasar por la Bios del equipo y este va a ser el objetivo de este tutorial. Actualizar el microcode del procesador del nas no es sencillo por las limitaciones que impone Qnap para modificar QTS pero aún así no va a ser complicado.


Procesadores AMD: 

Como comenté al principio este tutorial va estar enfocado en los procesadores Intel de los nas de Qnap y el motivo es porque no dispongo de ningún nas con procesador AMD, sin embargo creo fírmemente que se puede realizar de igual manera ya que prácticamente se hace lo mismo. Para actualizar los microcode primero los tenemos que descargar en un ordenador, en el caso de los microcode para procesadores AMD lo tendremos que hacer desde aquí:

https://github.com/platomav/CPUMicrocode...master/AMD

En el caso Intel la actualización del microcode se basará en una carpeta llamada intel-ucode que los integra, en el caso de AMD esa carpeta se llamará amd-ucode y esa es prácticamente la única diferencia ya que todo lo que explicaré a partir de ahora será iguálmente válido para AMD así que los que tengáis en el nas un procesador AMD os recomiendo seguir leyendo este tutorial hasta el final. Aún así vuelvo a repetir que al no tener un nas AMD no he tenido ocasión de probarlo.


PRIMERA PARTE ( Explicación ):


Como tanto la gama actual de nases de Qnap como también las gamas antiguas pueden tener diferencias relativas al funcionamiento de QTS lo primero que tenemos que hacer obligatóriamente es realizar una comprobación, y esa comprobación consite en verificar la existencia en el nas de un archivo de nombre reload.
Para hacerlo nos conectaremos al nas por SSH con Filezilla o similares y nos dirigiremos a la siguiente ruta:

/sys/devices/system/cpu/microcode



   



Como se puede ver ese archivo reload está instalado " de serie " en mi nas. Hecha la comprobación nos olvidamos de este tema.

Lo siguiente que paso a explicar es como actualizar el microcode Intel del nas que es el objetivo de este tutorial como también demostraré que lo que se va a hacer funciona, sin embargo aunque lo voy a poner en práctica no va a ser la forma que verdadéramente vamos a utilizar, al menos en su mayor parte, esto último lo explicaré en la segunda parte de este tutorial.

Como he comentado antes una de las formas de actualizar el microcode del procesador es a través de la Bios pero al no recibir actualizaciones de ellas tenemos un problema que vamos a resolver de otra forma consistente en hacer lo mismo pero a través de QTS.

Lo primero que tenemos que hacer es descargarnos a nuestro ordenador los microcodes desde la web de Intel en Github:

https://github.com/intel/Intel-Linux-Pro...e-20240531

Nos descargaremos el archivo Source code:



   



Una vez descargado lo descomprimimos y nos encontramos con esto:



   


De todo lo que aparece sólo nos va a interesar la carpeta intel-ucode de lo demás nos olvidamos.
Dentro de la carpeta intel-ucode nos encontramos los microcodes de TODOS los procesadores Intel habidos y por haber y tiene esta pinta:



   



Como es imposible saber que microcode se corresponde al de nuestro nas vamos a utilizarlos todos, es decir, la carpeta intel-ucode al completo. En el momento de redactar este tutorial esa carpeta tiene un tamaño ligéramente mayor de 12 megas así que no es problema utilizarla al completo.
Esta carpeta intel-ucode la tenemos que pasar con Filezilla al nas y ponerla en la siguiente ruta:

/lib/firmware



   


Hecho esto deberíamos lanzar un comando reload mediante Terminal que será el encargado de actualizar el microcode Intel de nuestro nas, ese comando reload lo hará el archivo reload que comprobamos su existencia al principio de este tutorial, el comando es el siguiente:

echo 1 > /sys/devices/system/cpu/microcode/reload



   



Lo que acabo de hacer es simplemente demostrar que lo que estoy explicando en este tutorial funciona, es decir, en este caso sólo es una demostración. El comando que acabo de ejecutar lo vamos a utilizar después de otra forma que explicaré como he dicho antes en la segunda parte.

En la imagen que acabo de poner se puede ver además del citado comando que puse antes otro comando que sirve para comprobar que se ha hecho corréctamente la actualización del microcode. Se puede ver que el microcode del procesador Intel de mi nas se ha actualizado a la versión con fecha 26 - 09 - 2023 con el número de revisión 0x24000026

Antes de continuar con el tutorial voy a explicar alguna cosa más. Tanto en la web de Intel en Github como en el interior de la carpeta intel-ucode que nos hemos descargado la información sobre los microcodes es prácticamente nula así que vamos a buscar otras fuentes. Al estar QTS basado en Debian - Ubuntu un buen sitio donde buscar es en la web de Ubuntu:

https://www.ubuntuupdates.org/package/co...-microcode

Intel actualiza en su web de Github los microcodes de sus procesadores cada 3 meses y los microcodes que nos hemos descargado a la hora de realización de este tutorial tienen fecha del 31 de Mayo del 2024 y en la web de Ubuntu van un pelin retrasados:



   



Si nos fijamos en el listado de microcodes que aparecen podemos ver que el que se corresponde al procesador Intel de mi nas está incluido:



   



Sobre esto último voy a explicar algo más. Como acabo de comentar Intel actualiza los microcodes cada 3 meses, pero eso no significa que actualice todos los microcodes de sus procesadores tanto actuales como pasados en ese tiempo, es decir, unas veces actualiza unos y otras veces otros. En este punto conviene recordar lo que expliqué al principio, tanto si nuestro nas es un modelo más o menos antiguo como si es un modelo reciente va a tener una Bios " desfasada " en la que lógicamente no va a llevar integrada actualizaciones de los microcodes de nuestro procesador independiéntemente de que Intel los haya actualizado más o menos que a bien seguro lo habrá hecho.

Continúo con el tutorial. Una vez lanzado el comando anterior mediante Terminal y comprobado que se ha actualizado el microcode corréctamente lo siguiente que habría que hacer es que ese procedimiento fuera automático ya que como expliqué al principio la actualización del microcode no se " graba " físicamente en el procesador sino que funciona a través de memoria volatil. Para conseguir ese funcionamiento automático lo siguiente que habría que hacer es decirle al kernel de nuestro nas que haga ese proceso de forma automática cuando se enciende o se reinicia el nas. Lamentáblemente Qnap no permite ese tipo de modificaciones por parte de sus usuarios en QTS.
Ese sería un primer problema a solucionar, el segundo consiste en algo parecido. Como comenté antes tenemos que meter en el nas la carpeta intel-ucode que descargamos antes en la ruta /lib/ firmware y esto funciona siempre y cuando no apaguemos o reiniciemos el nas, si lo hacemos QTS elimina automáticamente esa carpeta cuando el nas se inicia. La solución de estos dos problemas la voy a explicar en la segunda parte de este tutorial que es reálmente la que tenemos que poner en práctica.



SEGUNDA PARTE:


Lo primero que vamos a hacer es pasar la carpeta intel-ucode que tenemos descargada en el ordenador a nuestro nas, la podemos meter dentro de la carpeta compartida del nas que nos apetezca:



   



Hecho esto lo siguiente va a consistir en la utilización de un script, en este punto quiero darle las gracias a mi buen amigo Pepe BETIS que ha tenido a bien hacerme un script conforme a las indicaciones que le he indicado. El script lo pondré después como también explicaré como utilizarlo y que es lo que hace pero antes de eso voy a demostrar que su ejecución funciona. Para el ejemplo el script llevará el nombre de microcode.sh

Al poner ese script en una carpeta compartida del nas y ejecutarlo manuálmente a través de Terminal podemos comprobar que funciona corréctamente actualizando el microcode del procesador cogiéndolo de la carpeta intel-ucode que también hemos puesto en el nas:



   



Como acabo de decir no vamos a utilizar ese script de esa forma, antes de explicar como lo vamos a hacer os pongo el contenido del script:


#!/bin/bash

PATH=/share/CACHEDEV1_DATA/.qpkg/container-station/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin

cp -r /share/CACHEDEV1_DATA/Scripts/intel-ucode /lib/firmware/

echo 1 > /sys/devices/system/cpu/microcode/reload &> /share/CACHEDEV1_DATA/Scripts/microcode.log


El script hace dos cosas, la primera es copiar la carpeta intel-ucode que en mi caso está en la carpeta compartida que se puede ver en ese script y copiarlo a la carpeta /lib/firmware también de nuestro nas. Lo segundo que hace es ejecutar el comando reload que expliqué antes y a continuación crear un archivo log de registro. Todo lo anterior lo hace de forma automática y desatendida.

A tener en cuenta: Mi carpeta intel-ucode la tengo puesta en mi nas en la ruta /share/CACHEDEV1_DATA/Scripts/intel-ucode que es la que aparece en el script que acabo de poner así que a vosotros os toca modificar ese script con la ruta de la carpeta compartida de vuestro nas donde tengáis puesta la carpeta intel-ucode
En el último parámetro del script se puede ver escrito /share/CACHEDEV1_DATA/Scripts/microcode.log que lo que hace es crear un archivo log de registro llamado microcode.log para poder comprobar que el script se ejecuta bien. Esto es opcional, es decir, si no queremos que el script cree ese archivo lo podemos borrar, aún así es mejor opción dejarlo como está, lo que si tenemos que hacer al igual que hemos hecho antes es modificar el script poniendo la ruta de la carpeta compartida del nas en la que queramos que se cree ese archivo microcode.log

En este punto del tutorial tenemos una carpeta intel-ucode dentro de una carpeta compartida del nas y tenemos también el contenido de un script.
Por norma general el nas no se apaga o reinicia todos los dias así que lo interesante sería que lo que he explicado se hiciera de forma automática y desatendida únicamente cuando el nas se enciende o se reinicia.

Para conseguir esto lo vamos a hacer mediante la creación de un QPKG, es decir, una aplicación personalizada del nas. Para hacerlo tenemos que seguir el tutorial que tiene creado Ganekogorta en este foro, lo podéis ver aquí:

https://www.qnapclub.es/showthread.php?tid=2114

Del tutorial de Ganekogorta nos tenemos que olvidar de la ultimísima parte en la que explica como poner un script que nos envía un correo electrónico a una dirección nuestra. 

Al principio de ese tutorial Ganekogorta explica como poner un script con los comandos a ejecutar, para ponéroslo fácil os pongo una captura del párrafo en cuestión:


   


En ese punto del tutorial lo que tenemos que poner es el contenido del script que he puesto antes.

FIN.

Una vez creado el QPKG que integra el script reiniciamos el nas, como he comentado antes cada vez que se inicie el nas se ejecutará de forma automática y desatendida ese QPKG que mediante el script será el encargado de copiar la carpeta intel-ucode y a continuación ejecutar el comando que actualiza el microcode del procesador.

Una vez iniciado el nas podemos comprobar que el QPKG y el script incluido crean el archivo microcode.log



   


Si abrimos ese archivo microcode.log veremos que únicamente contiene un 1 señal de que se ha ejecutado corréctamente y si a continuación accedemos por SSH al nas con Filezilla veremos en la carpeta /lib/firmware la carpeta intel-ucode que habrá sido copiada por el QPKG y su script desde la carpeta compartida de nuestro nas donde la tengamos puesta.







echo
  Reply
#2
Muy buen post. Muchas gracias. Lo fijo en Firmware.

Saludos,
  Reply
#3
Hola Yeraycito

Me he puesto a realizar el proceso con una nas Intel y en el punto

(16-06-2024, 02:00 AM)yeraycito Wrote: Hecho esto deberíamos lanzar un comando reload mediante Terminal que será el encargado de actualizar el microcode Intel de nuestro nas, ese comando reload lo hará el archivo reload que comprobamos su existencia al principio de este tutorial, el comando es el siguiente:

echo 1 > /sys/devices/system/cpu/microcode/reload

Me sale esta información
   

Y me surge la duda de si ha aplicado el cambio o no  Huh
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Reply
#4
Lo primero que se ve en la imagen que has puesto es que la actualización del microcode se ha realizado corréctamente, por lo demás me pierdo ya que me faltan conocimientos, aún así me he puesto como loco a buscar información sobre el tema con el resultado de que no he encontrado prácticamente nada y lo curioso es que de lo poquísimo que he encontrado siempre está referido a procesadores AMD.

Una de las cosas que he encontrado es que " ese error " se le califica como normal:


   


Lo mismo ocurre en otro caso en que la duda se refiere a otro tema:


   


A raiz de esto comento mis impresiones desde el desconocimiento total:


1: A falta de aplicar este tutorial en mi TS-251 en mi TS-264 funciona estupéndamente, lo mismo me ocurre en mi minipc con Opnsense.

2: Tenemos que tener en cuenta que en el caso del nas actualizamos el microcode con la última opción disponible que se nos permite, es decir, el orden lógico es en primer lugar a través de la bios, en su defecto sería a través de una entrada en el kernel del nas que actuara al inicio, y como última opción si las dos anteriores no están permitidas sería la que se explica en este tutorial.

3: He podido comprobar que en el caso de Intel esta no proporciona ninguna información sobre los logs de actualización del microcode.

4: Al actualizar el microcode en el nas según se explica en este tutorial es posible que en algún caso muy concreto sea por procesador o por su correspondiente actualización del microcode aparezca ese mensaje de CPU features have changed after loading microcode, but might not take effect

El motivo podría ser que al estar la CPU en funcionamiento cuando se aplica la actualización del microcode ciertos componentes de esa actualización no pueden ser aplicados, pero eso no significa que los demás no se apliquen y segúramente los que no se apliquen serán los de menor importancia. Como acabo de comentar en mi TS-264 la actualización se realiza corréctamente como se puede ver en las imágenes puestas en este tutorial y lógicamente la CPU de mi nas está en funcionamiento y en mi caso no hay el más mínimo problema.


Resumiendo, la actualización del microcode se realiza corréctamente, de lo demás yo no me preocuparía.
  Reply
#5
(22-06-2024, 04:05 PM)yeraycito Wrote: Lo primero que se ve en la imagen que has puesto es que la actualización del microcode se ha realizado corréctamente, por lo demás me pierdo ya que me faltan conocimientos, aún así me he puesto como loco a buscar información sobre el tema con el resultado de que no he encontrado prácticamente nada y lo curioso es que de lo poquísimo que he encontrado siempre está referido a procesadores AMD.

Una de las cosas que he encontrado es que " ese error " se le califica como normal:





Lo mismo ocurre en otro caso en que la duda se refiere a otro tema:





A raiz de esto comento mis impresiones desde el desconocimiento total:


1: A falta de aplicar este tutorial en mi TS-251 en mi TS-264 funciona estupéndamente, lo mismo me ocurre en mi minipc con Opnsense.

2: Tenemos que tener en cuenta que en el caso del nas actualizamos el microcode con la última opción disponible que se nos permite, es decir, el orden lógico es en primer lugar a través de la bios, en su defecto sería a través de una entrada en el kernel del nas que actuara al inicio, y como última opción si las dos anteriores no están permitidas sería la que se explica en este tutorial.

3: He podido comprobar que en el caso de Intel esta no proporciona ninguna información sobre los logs de actualización del microcode.

4: Al actualizar el microcode en el nas según se explica en este tutorial es posible que en algún caso muy concreto sea por procesador o por su correspondiente actualización del microcode aparezca ese mensaje de CPU features have changed after loading microcode, but might not take effect

El motivo podría ser que al estar la CPU en funcionamiento cuando se aplica la actualización del microcode ciertos componentes de esa actualización no pueden ser aplicados, pero eso no significa que los demás no se apliquen y segúramente los que no se apliquen serán los de menor importancia. Como acabo de comentar en mi TS-264 la actualización se realiza corréctamente como se puede ver en las imágenes puestas en este tutorial y lógicamente la CPU de mi nas está en funcionamiento y en mi caso no hay el más mínimo problema.


Resumiendo, la actualización del microcode se realiza corréctamente, de lo demás yo no me preocuparía.


Gracias, no he seguido adelante al ver que el mensaje difería de tus capturas.

Luego continúo con la TS453be, que me he dado cuenta de que no he indicado el modelo donde estaba haciendo las pruebas.


Un saludo

Agur eta ondo ibilli

Mon (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be y QHora-301w)
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Reply
#6
Acabo de aplicar este tutorial en mi TS-251 y antes de explicar como lo he hecho me va a servir para comentar algo que se me pasó cuando redacté este tutorial junto con alguna cosa curiosa.

Uno de los parámetros que tiene el script publicado en este post es el PATH y este componente difiere de unos nas a otros, para comprobar cual es el que se corresponde a nuestro nas tendremos que acceder por SSH mediante Terminal y ejecutar el siguiente comando:

echo $PATH

En el caso de mi TS-264 el PATH es este:


   


/share/CACHEDEV1_DATA/.qpkg/container-station/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin


Como digo este PATH es el que está puesto en el script de este post, sin embargo mi TS-251 tiene otro PATH distinto:


   


/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin


Esto hay que tenerlo muy en cuenta en el script.


Mi TS-251 tiene una estructura de carpetas compartidas distinta a la del TS-264


   


Sabiendo todo esto he modificado el script con el nuevo PATH y lógicamente he cambiado el parámetro de la ubicación de la carpeta compartida en la que se encuentra la carpeta intel-ucode dejando el script de esta forma:


#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin

cp -r /share/CACHEDEV1_DATA/Almacen/intel-ucode /lib/firmware/

echo 1 > /sys/devices/system/cpu/microcode/reload &> /share/CACHEDEV1_DATA/Almacen/microcode.log



Teniendo el script en una carpeta compartida del nas como se puede ver en la imagen anterior lo he ejecutado manuálmente para probarlo a través de Terminal con el siguiente resultado:



   



El resultado es que el microcode del procesador del TS-251 ya está en su última versión junto a un mensaje de que el procesador es vulnerable, la vulnerabilidad en cuestión es la siguiente:

https://docs.kernel.org/admin-guide/hw-vuln/mds.html


El resultado de todo esto es que al ser una vulnerabilidad hardware imposible de solucionar, mitigar es otra cosa, Intel ha decidido no actualizar el microcode de este procesador en concreto.

Resumiendo, el tutorial sigue funcionando, otra cosa es el resultado que de en algunos procesadores, en el caso del TS-251 que lleva un Celeron dual core Intel se lució al igual que Qnap a la hora de escogerlo y no sólo lo digo por la vulnerabilidad hardware imposible de solucionar sino también por esto:

https://www.qnapclub.es/showthread.php?tid=4771


Esto no quiere decir, ni mucho menos, que esto ocurra en todos los nases, de hecho os recuerdo que en mi TS-264 funciona sin problemas, así que sigo recomendando la aplicación de este tutorial.
  Reply
#7
Hola

Adjunto captura de los cuatro comandos que he ejecutado en una vieja TS-469Pro

   

El comando reload esta en cuatro ubicaciones distintas. Una por cada cpu.

Lo que no tengo claro es si ha hecho algo en este equipo tan "vintage".
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Reply
#8
En este caso ( Qnap TS-469 Pro ):

1 : El comando reload está en cuatro ubicaciones distintas posíblemente porque el Kernel Linux del nas es antiguo comparándolo con los actuales.

2: En consonancia con lo anterior el Microcode Update Driver está en la versión v2.00 en contraste con la v2.2 actual.

3: Al ser ambas cosas distintas el proceso de actualización del microcode no es el mismo y por tanto los logs tampoco.

4: No se aprecian en la imagen mensajes de error o avisos de otro tipo, lo cual quiere decir que la actualización se ha efectuado corréctamente y por tanto no hay motivos para dudar de lo contrario.

5: La única forma de asegurarnos de tener el último microcode instalado en el nas es la que se explica en el tutorial de este post.
  Reply
#9
Otra posible razón por la que el código promocional no funciona es que haya caducado. También puede averiguarlo con seguridad buscando información en nuestro sitio web o poniéndose en contacto con el servicio de atención al cliente por teléfono o chat en línea.La siguiente situación que puede causar dudas y dificultades al utilizar códigos promocionales es el uso simultáneo de varios códigos promocionales https://www.20minutos.es/codigo-descuento/aliexpressss.Supongamos que tiene varios de nuestros códigos promocionales activos. Introduce uno de ellos, tras lo cual el botón Aplicar deja de estar disponible, al igual que el nombre del código promocional, que no se puede eliminar, corregir ni añadir.
  Reply




Users browsing this thread: 1 Guest(s)