it-swarm-es.tech

¿Cómo actualizar el firmware en Linux en la práctica?

Bueno, me siento demasiado viejo para saltar a través de varios aros ardientes para actualizar varios firmwares a través de la forma habitual específica del proveedor: descargue algunas herramientas de DOS, pierda algo de tiempo creando un medio de arranque de DOS (gratuito) y pierda más tiempo para hacer el BIOS en realidad arranque desde eso y finalmente actualice el firmware.

Esto es tan de la década de 1980.

Me encuentro con algunos herramienta flash de Linux del proyecto Coreboot . Parece ser compatible con varios chips FLASH. Pero, ¿cómo funciona en la práctica?

Supongo que existen algunos errores al convertir las actualizaciones de firmware proporcionadas por el proveedor al formato correcto. ¿O qué tal identificar el chip de destino correcto?

Actualmente probablemente tenga que actualizar, por ejemplo:

  • el firmware de algunos discos Seagate 1.5 TB
  • el firmware de una vieja placa Abit Athlon 64 (BIOS de premio)
  • BIOS/Controlador integrado-BIOS de un Thinkpad

¿Cómo se actualiza el firmware de sus dispositivos en un sistema Linux?

15
maxschlepzig

Parpadeando con FreeDOS, un reinicio y sin dispositivos extraíbles

  1. Asegúrese de estar utilizando GRUB2 (compruebe si tiene el paquete grub-pc Instalado en Ubuntu)
  2. Hazte con el MEMDISK de SYSLINUX. En Ubuntu, instale el paquete syslinux-common Y su memdisk residirá en /usr/lib/syslinux/memdisk
  3. Descargue fdboot.img , guárdelo en su directorio de inicio o en algún otro directorio que pueda escribir fácilmente con un diseño de teclado de EE. UU.
  4. Inserte su software de actualización en la imagen FreeDOS:
    1. Sudo -s
    2. mkdir -p /mnt/floppy
    3. mount -o loop -t msdos fdboot.img /mnt/floppy
    4. cp -via FLASH.EXE BIOS.IMG /mnt/floppy/ (FLASH.EXE Y BIOS.IMG Son ejemplos)
    5. umount /mnt/floppy
  5. Inicie su sistema e interrumpa en el GRUB2 (presione ESC)
  6. Presione c para ingresar a la línea de comando de GRUB2.
  7. Cargar MEMDISK:
    1. Ingrese linux16 (hd. Ahora presione el tabulador. Se mostrará una lista de discos duros.
    2. Complete la elección del disco duro de modo que la línea diga linux16 (hd0,, Por ejemplo.
    3. Presione la pestaña una vez más para obtener una lista de particiones. Necesita encontrar la partición donde su /usr/lib/syslinux Está montado en su instalación de Linux.
    4. Ahora que tiene el disco duro y la especificación de la partición, puede completar la ruta para que se vea así: linux16 (hd0,msdos3)/usr/lib/syslinux/memdisk. Presione enter.
  8. Cargar FreeDOS:
    1. Utilice la misma terminación de tabulación para encontrar fdboot.img, Pero con el comando initrd16 En lugar de linux16. Terminará con una línea como esta: initrd16 (hd0,msdos3)/home/janus/fdboot.img. Presione enter.
  9. Escriba boot y presione enter.
  10. Aparecerá el menú de inicio de FreeDOS.
  11. Elija la opción "modo seguro", ya que no necesita los controladores.
  12. En el indicador de DOS, escriba el nombre del ejecutable de actualización del firmware, por ejemplo: FLASH.EXE. Presione enter.
  13. Espere a que termine el parpadeo.
  14. El flasheador de firmware puede iniciar la máquina en sí, o puede recuperar el indicador. Si vuelve a aparecer el mensaje, presione Control-Alt-Supr para reiniciar.
  15. Como no cambió la configuración GRUB de forma permanente, se iniciará de inmediato en su sistema operativo predeterminado.

Si no hay suficiente espacio en la imagen, use la imagen más pequeña de chtaube.e . Descomprima la imagen y fíltrela a través de xxd. Ahora busque 55aa . Debería estar en 0x1fe. Puede montar la imagen con offset=$((0x200)) como una bandera de montaje adicional. Tenga en cuenta que la sintaxis $(()) es específica de Bash, pero también funcionará en Zsh.

Alternativamente, consulte https://www.fladi.at/posts/large-freedos-boot-image/

11
Janus Troelsen

Cada dispositivo con firmware actualizable probablemente tendrá sus propios métodos para hacerlo. Las placas base en particular son notoriamente incompatibles a este respecto.

En cuanto a los discos duros, nuevamente, este es un asunto de propiedad. Seagate proporciona liveCD y descargas de Windows para realizar actualizaciones de firmware, pero no herramientas Linux o Unix.

Puede compilar imágenes de arranque para las actualizaciones de BIOS Thinkpad que se pueden arrancar desde GRUB.

De lo contrario, solo tendrá que consultar con el fabricante para obtener herramientas.

Por otro lado, si está trabajando con microcontroladores, a menudo puede programarlos con herramientas bastante universales, aunque todavía de forma limitada (por ejemplo, los chips Atmel generalmente se pueden programar con avrdude).

7
greyfade

para video Seagate de 3 TB (ST3000VX000-9YW1):

sg_write_buffer -v -m 5 -I <FW file> <dev>
6
user30578

He actualizado con éxito una unidad Seagate Barracuda 7200.12 ST31000528AS (1TB SATA) con el siguiente método: ( ¡Úselo bajo su propio riesgo)

  1. Descargue ISO de Seagate: http://www.seagate.com/staticfiles/support/downloads/firmware/Barracuda12-ALL-CC49.iso
  2. montar/extraer PH-CC49.ima del archivo .iso
  3. dd el .ima a una memoria USB: dd if=./PH-CC49.ima of=/dev/sdX bs=512k
  4. Apague la computadora y desconecte todas las unidades excepto las unidades que se van a flashear
  5. Arranque desde una unidad flash USB (esto se iniciará en la utilidad de actualización de firmware de Seagate
  6. Siga las sencillas instrucciones en pantalla para flashear las unidades
  7. Apague, vuelva a conectar todo y encienda

¡Eso es! Sin Windows, sin CD voluminosos, sin ediciones de Grub, sin FreeDos, sin escamosos .exe de Windows (lo probé pero falló con un oscuro mensaje de error)

El crédito va a la fuente: http://ubuntuaddicted.blogspot.ca/2014/10/seagate-firmware-flash-using-usb.html (lo encontré buscando PH-CC49.ima)

3
Alecz

Para mi seagate ST2000NM0024-1HT174 lo he hecho: descargué el firmware de seagate y lo guardé en una llave USB. reinicié mi pc con un usb (o dvd) en vivo de linux mint mate 17.3. y descomprima todas las utilidades de Seagate directamente en el escritorio. copió el firmware y un comando en el escritorio, luego renombró el comando seaflashlin_33_054 a más simplemente seaflashlin Después de abrir la terminal y escribir:

[email protected] ~ $ Sudo su    (enter in Superuser live mint)

mint mint # cd Desktop

mint Desktop # ./seaflashlin

bash: ./seaflashlin: Permission denied 

(Error, cambio el archivo de permisos)

mint Desktop # ls -l
total 69284
drwxr-xr-x 5 mint mint      120 Nov  3 11:14 EntCap-Makara-SATA-SN05
-rw-r--r-- 1 mint mint 68386705 Nov  2 19:36 EntCap-Makara-SATA-SN05.Zip
-rw-r--r-- 1 mint mint  2032640 Sep 10  2015 MakaraEntCapSATA-STD-512E-SN05.LOD
-rw-r--r-- 1 mint mint      312 Dec 17  2015 MK-SN05.CFS
-rw-r--r-- 1 mint mint   369127 Sep 11  2015 READMEFIRST-EnterpriseCapacity3.5-Makara-SATA firmware update.pdf
-rw-r--r-- 1 mint mint   104280 Oct 26  2015 seaflashlin
-rw-r--r-- 1 mint mint    31848 Oct 26  2015 seaflashlin.046.txt
-rwxr-xr-x 1 mint mint     7874 Nov  3 11:13 ubiquity.desktop

mint Desktop # chmod ugo+rxw *

mint Desktop # ls -l

total 69284
drwxrwxrwx 5 mint mint      120 Nov  3 11:14 EntCap-Makara-SATA-SN05
-rwxrwxrwx 1 mint mint 68386705 Nov  2 19:36 EntCap-Makara-SATA-SN05.Zip
-rwxrwxrwx 1 mint mint  2032640 Sep 10  2015 MakaraEntCapSATA-STD-512E-SN05.LOD
-rwxrwxrwx 1 mint mint      312 Dec 17  2015 MK-SN05.CFS
-rwxrwxrwx 1 mint mint   369127 Sep 11  2015 READMEFIRST-EnterpriseCapacity3.5-Makara-SATA firmware update.pdf
-rwxrwxrwx 1 mint mint   104280 Oct 26  2015 seaflashlin
-rwxrwxrwx 1 mint mint    31848 Oct 26  2015 seaflashlin.046.txt
-rwxrwxrwx 1 mint mint     7874 Nov  3 11:13 ubiquity.desktop

mint Desktop # ./seaflashlin  

usage:
seaflashlin_i386 {-m <model_number> -f <fw_file> | -c <cfs_file>} [-d <sg_device>]
seaflashlin_i386 -f <fw_file> -d <sg_device>

Options:
    -i  PRINT IDENT INFO
    -v  PRINT VERSION AND EXIT (overrides all other arguments)
    -l  SHOW LICENSE
    -o  TIMEOUT VALUE (seconds)
    -x  TEST CFS FILE
Modes supported:
    -e  DEFERRED SIZE (ATA ONLY)
    -s  SEGMENT SIZE (1 segment = 512 bytes)
    -p  FORCE ATA PASSTHROUGH
    -w  FORCE WRITE BUFFER CMD
    -u  NON-SEGMENTED
e.g:
    seaflashlin_i386 -s 64 -f test.lod -d /dev/sg0
returns:
    0    No error found
    1    Fatal error in command line options
    2    FW Download Failed
    3    Invalid device

mint Desktop # ./seaflashlin -i

================================================================================
 Seagate Firmware Download Utility v0.4.6 Build Date: Oct 26 2015
 Copyright (c) 2014 Seagate Technology LLC, All Rights Reserved
 Thu Nov  3 11:20:52 2016
================================================================================
ATA       /dev/sg0 MN: ST2000NM0024-1HT174     SN: Z4H010XY             FW: SN02
Pioneer   /dev/sg1 MN: DVD-RW  DVR-221         SN:                      FW: 1.00
Pioneer   /dev/sg2 MN: DVD-RW  DVR-221         SN:                      FW: 1.00
SanDisk   /dev/sg3 MN: Cruzer Micro            SN:                      FW: 8.02

(esto confirma que mi firmware es la versión SN02 y HD se encuentra en/dev/sg0)

Ahora puedo flashear la BIOS con: (xxx.LOD = firmware hard disk)

mint Desktop # ./seaflashlin -f MakaraEntCapSATA-STD-512E-SN05.LOD -d /dev/sg0

================================================================================
 Seagate Firmware Download Utility v0.4.6 Build Date: Oct 26 2015
 Copyright (c) 2014 Seagate Technology LLC, All Rights Reserved
 Thu Nov  3 11:26:21 2016
================================================================================
Flashing microcode file MakaraEntCapSATA-STD-512E-SN05.LOD to /dev/sg0
 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  :  !
Microcode Download to /dev/sg0 SUCCESSFUL

mint Desktop # ./seaflashlin -i
================================================================================
 Seagate Firmware Download Utility v0.4.6 Build Date: Oct 26 2015
 Copyright (c) 2014 Seagate Technology LLC, All Rights Reserved
 Thu Nov  3 11:26:45 2016
================================================================================
ATA       /dev/sg0 MN: ST2000NM0024-1HT174     SN: Z4H010XY             FW: SN05
Pioneer   /dev/sg1 MN: DVD-RW  DVR-221         SN:                      FW: 1.00
Pioneer   /dev/sg2 MN: DVD-RW  DVR-221         SN:                      FW: 1.00
SanDisk   /dev/sg3 MN: Cruzer Micro            SN:                      FW: 8.02

que confirman que el BIOS se cambia de SN02 a SN05

Muy peligroso, use esto bajo su propio riesgo.

Buena suerte !

2
erikkssen

Puede usar flashrom para actualizar el BIOS de una placa base.

Ejemplo (Abit KN9 Ultra):

La placa es una placa AMD Athlon 64, AM2 Socket, chipset Nvidia, lanzado desde 2006. Tiene un chip flash de 256 KB que es reemplazable. El BIOS está etiquetado con 'Award', que parece ser una marca registrada de Phoenix.

Flashrom admite ese chipset y ese chip flash.

El soporte se puede probar con un comando como:

# flashrom --programmer internal
Calibrating delay loop... OK.
Found chipset "NVIDIA MCP55".
Enabling flash write... OK.
Enabling full flash access for board "abit KN9 Ultra"... OK.
Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) mapped at physical address 0x00000000fff80000.

Tiene sentido hacer una copia de seguridad del contenido actual del chip flash, primero:

# flashrom --programmer internal -c Pm49FL004 -r backup.bin

Luego se puede comparar con un archivo de imagen de Vanilla del proveedor (usando, por ejemplo, xxd y vimdiff).

Se esperan algunas diferencias, porque algunos BIOS también almacenan información adicional (por ejemplo, DMI) y configuración (por ejemplo, direcciones MAC) en la memoria flash. Este también es el caso del Abit KN9 Ultra. Los datos DMI se almacenan en los primeros 1872 bytes y el BIOS los vuelve a generar fácilmente durante el arranque. Las direcciones MAC se almacenan en el desplazamiento 0x74E30.

Los archivos de firmware del proveedor están empaquetados en un archivo Zip que contiene awdflash.exe y un archivo BIN, p. ej. M520A_23.BIN. En este ejemplo, el archivo bin contiene la imagen del BIOS tal cual, es decir, se puede escribir directamente en el chip flash con un comando como:

# flashrom --programmer internal -c Pm49FL004 -w M520A_23.BIN

Calibrating delay loop... OK.
Found chipset "NVIDIA MCP55".
Enabling flash write... OK.
Enabling full flash access for board "abit KN9 Ultra"... OK.
Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) mapped at physical address 0x00000000fff80000.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

Dependiendo de la actualización, puede que sea necesario borrar CMOS para el próximo reinicio; de lo contrario, es posible que el BIOS no se inicie. En esa placa, el CMOS se puede borrar mediante un ajuste de puente. También es posible borrar mediante software (por ejemplo, mediante CmosPwd ).

Para mantener direcciones MAC predeterminadas únicas, la nueva imagen del proveedor se puede parchear antes de parpadear, por ejemplo:

dd if=backup.bin of=mac.bin bs=1 count=16 skip=$(echo 16 i 74E30 p | dc)
dd if=mac.bin of=M520A_23_with_mac.bin bs=1 seek=$(echo 16 i 74E30 p | dc) \
   conv=notrunc

Escollos:

  • La escritura flash puede fallar debido a un código específico de la placa base habilitación de la placa (es decir, para deshabilitar la protección contra escritura) que aún no está implementado por flashrom.
1
maxschlepzig

El uso de un disquete de actualización de DOS iniciado con GRUB como se mencionó anteriormente funciona para la mayoría del hardware. En algunos casos, puede encontrar herramientas nativas. Dell incluso prepara repositorios que se integran con el sistema de empaquetado de distribución:

http://linux.Dell.com/wiki/index.php/Repository/firmware

Lamentablemente, la mayoría de las actualizaciones requieren reiniciar la máquina para completarse.

0
zdzichu

Tratar:

hdparm --fwdownload (¡Y MUCHO CUIDADO!)

Sin embargo, ¡ten cuidado!

0
Stoatwblr

Mi pequeña experiencia es que usé Flashrom para actualizar el BIOS de mi placa madre Intel y funcionó bien. En general, parece una herramienta realmente agradable.

0
KellyClowers