Puede usar flashrom para actualizar el BIOS de una placa base.
Ejemplo (Abit KN9 Ultra):
La placa es 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 conjunto de chips 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 original 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 es también el caso con el 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 se empaquetan en un archivo zip que contiene awdflash.exe
y un BIN
archivo, por ejemplo 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 ser necesario borrar el 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 una configuración de puente. También es posible borrar a través del software (por ejemplo, a través de CmosPwd ).
Para mantener direcciones MAC predeterminadas únicas, la nueva imagen del proveedor se puede parchear antes de flashear, 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
Trampas:
- La escritura flash puede fallar debido a un código de habilitación de placa específica de la placa base (es decir, para deshabilitar la protección contra escritura) que aún no está implementado por flashrom.