Você pode usar o flashrom para atualizar o BIOS de uma placa-mãe.
Exemplo (Abit KN9 Ultra):
A placa é a placa AMD Athlon 64, chipset AM2 Socket, Nvidia, lançada em 2006. Possui um chip flash de 256 KB que é substituível. O BIOS está rotulado com 'Award', que parece ser uma marca comercial da Phoenix.
O Flashrom suporta esse chipset e esse chip flash.
O suporte pode ser testado com um 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.
Faz sentido fazer backup do conteúdo atual do chip flash, primeiro:
# flashrom --programmer internal -c Pm49FL004 -r backup.bin
Em seguida, ele pode ser comparado a um arquivo de imagem de baunilha do fornecedor (usando, por exemplo, xxd
e vimdiff
).
Algumas diferenças são esperadas - porque algumas BIOS também armazenam informações adicionais (por exemplo, DMI) e configuração (por exemplo, endereços MAC) no flash. Este também é o caso do Abit KN9 Ultra. Os dados do DMI são armazenados nos primeiros 1872 bytes - e são facilmente gerados pelo BIOS durante a inicialização. Os endereços MAC são armazenados no deslocamento 0x74E30.
Os arquivos de firmware do fornecedor são empacotados em um arquivo zip que contém awdflash.exe
e um BIN
arquivo, por exemplo M520A_23.BIN
. Neste exemplo, o arquivo bin contém a imagem do BIOS como está, ou seja, pode ser gravada diretamente no chip flash com um 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.
Dependendo da atualização, pode ser necessário limpar o CMOS para a próxima reinicialização - caso contrário, o BIOS pode não iniciar. Nessa placa, o CMOS pode ser limpo através de uma configuração de jumper. A limpeza por software também é possível (por exemplo, via CmosPwd ).
Para manter endereços MAC padrão exclusivos, a nova imagem do fornecedor pode ser corrigida antes de piscar, por exemplo:
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
Armadilhas:
- A gravação do flash pode falhar devido a um código de habilitação da placa- mãe específico (ou seja, para desativar a proteção contra gravação) que ainda não foi implementado pelo flashrom.