Bem, estou me sentindo muito velho para passar por vários obstáculos difíceis de atualizar vários firmwares através da forma usual de fornecedor específico: Baixe algumas ferramentas DOS, perca algum tempo criando um meio de inicialização (Free-) DOS e perdendo mais tempo para fazer o BIOS realmente inicialize a partir disso e, finalmente, faça o upgrade do firmware.
Isso é tão anos 1980.
Encontrei alguns ferramenta linux flash do projeto Coreboot . Parece suportar vários chips FLASH. Mas como isso funciona na prática?
Acho que existem algumas armadilhas ao converter atualizações de firmware fornecidas pelo fornecedor para o formato correto. Ou que tal identificar o chip de destino certo?
Atualmente, provavelmente terei que atualizar, por exemplo:
Como você atualiza o firmware dos seus dispositivos em um sistema Linux?
grub-pc
Instalado no Ubuntu)syslinux-common
E seu memdisk residirá em /usr/lib/syslinux/memdisk
Sudo -s
mkdir -p /mnt/floppy
mount -o loop -t msdos fdboot.img /mnt/floppy
cp -via FLASH.EXE BIOS.IMG /mnt/floppy/
(FLASH.EXE
E BIOS.IMG
São exemplos)umount /mnt/floppy
linux16 (hd
. Agora pressione a guia. Uma lista de discos rígidos será exibida.linux16 (hd0,
, Por exemplo./usr/lib/syslinux
Está montado em sua instalação do Linux.linux16 (hd0,msdos3)/usr/lib/syslinux/memdisk
. Pressione Enter.fdboot.img
, Mas com o comando initrd16
Em vez de linux16
. Você terminará com uma linha como esta: initrd16 (hd0,msdos3)/home/janus/fdboot.img
. Pressione Enter.boot
e pressione enter.FLASH.EXE
. Pressione Enter.Se não houver espaço suficiente na imagem, use a menor imagem de chtaube.e . Descompacte a imagem e filtre-a embora xxd
. Agora pesquise 55aa . Deve estar em 0x1fe
. Você pode montar a imagem com offset=$((0x200))
como um sinalizador de montagem adicional. Esteja ciente de que a sintaxe $(())
é específica do Bash, mas também funcionará no Zsh.
Como alternativa, consulte https://www.fladi.at/posts/large-freedos-boot-image/
Cada dispositivo com firmware atualizável provavelmente terá seus próprios métodos para fazer isso. As placas-mãe, em particular, são notoriamente incompatíveis nesse aspecto.
Quanto aos discos rígidos, novamente, é um assunto proprietário. Seagate fornece downloads de liveCDs e Windows para realizar atualizações de firmware, mas não ferramentas Linux ou Unix.
Você pode construir imagens inicializáveis para atualizações do BIOS Thinkpad que podem ser inicializadas a partir do GRUB.
Caso contrário, você apenas terá que verificar com o fabricante as ferramentas.
Por outro lado, se você estiver trabalhando com microcontroladores, muitas vezes pode programá-los com ferramentas bastante universais, embora ainda de forma limitada (por exemplo, os chips Atmel geralmente podem ser programados com avrdude
).
para vídeo Seagate de 3 TB (ST3000VX000-9YW1):
sg_write_buffer -v -m 5 -I <FW file> <dev>
Eu atualizei com sucesso uma unidade Seagate Barracuda 7200.12 ST31000528AS (1TB SATA) com o seguinte método: ( Use por sua conta e risco !)
PH-CC49.ima
do arquivo .isodd if=./PH-CC49.ima of=/dev/sdX bs=512k
É isso aí! Sem Windows, sem CDs volumosos, sem edições do Grub, sem FreeDos, sem Windows .exe instáveis (tentei, mas falhou com uma mensagem de erro obscura)
O crédito vai para a fonte: http://ubuntuaddicted.blogspot.ca/2014/10/seagate-firmware-flash-using-usb.html (encontrou-o pesquisando PH-CC49.ima)
Para o meu Seagate ST2000NM0024-1HT174 eu fiz isso: baixei o firmware da Seagate e o armazenei em uma chave USB. reiniciei meu pc com um usb (ou dvd) do linux mint mate 17.3. e descompacte todos os utilitários seagate diretamente no Desktop. copiou um comando do firmware no Desktop e, em seguida, renomeou o comando seaflashlin_33_054 para mais simplesmente seaflashlin. Depois de abrir o terminal e escrever:
[email protected] ~ $ Sudo su (enter in Superuser live mint)
mint mint # cd Desktop
mint Desktop # ./seaflashlin
bash: ./seaflashlin: Permission denied
(Erro! Eu mudo o arquivo de permissão)
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
(isso confirma que meu firmware é da versão SN02 e HD está localizado em/dev/sg0)
Agora posso fazer o Flash do BIOS com: (xxx.LOD = disco rígido do firmware)
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 confirmam que o BIOS foi alterado de SN02 para SN05
Muito perigoso, use isso por sua própria conta e risco!
Boa sorte !
Você pode usar flashrom para atualizar o BIOS de uma placa-mãe.
Exemplo (Abit KN9 Ultra):
A placa é AMD Athlon 64, soquete AM2, chipset Nvidia, lançada em 2006. Ela tem um chip flash de 256 KB que é substituível. O BIOS é rotulado com 'Award', que parece ser uma marca comercial da Phoenix.
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 Vanilla do fornecedor (usando, por exemplo, xxd
e vimdiff
).
Algumas diferenças são esperadas - porque alguns 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 da Abit KN9 Ultra. Os dados DMI são armazenados nos primeiros 1872 bytes - e são facilmente regenerados 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 arquivo BIN
, por exemplo M520A_23.BIN
. Neste exemplo, o arquivo bin contém a imagem do BIOS no estado em que se encontra, ou seja, pode ser escrito 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 inicializar. Nessa placa, o CMOS pode ser apagado por meio de uma configuração de jumper. A limpeza via software também é possível (por exemplo, via CmosPwd ).
Para manter endereços MAC padrão exclusivos, a imagem do novo 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:
Usar o disquete de atualização do DOS inicializado com GRUB como mencionado antes funciona para a maioria dos hardwares. Em alguns casos, você pode encontrar ferramentas nativas. A Dell ainda prepara repositórios que se integram ao sistema de empacotamento da distro:
http://linux.Dell.com/wiki/index.php/Repository/firmware
Infelizmente, a maioria das atualizações requer a reinicialização da máquina para ser concluída.
Experimentar:
hdparm --fwdownload
(E TENHA MUITO CUIDADO!)
No entanto, tenha cuidado!
Minha pequena experiência é que usei o Flashrom para atualizar o BIOS da minha placa-mãe Intel e funcionou bem. Em geral, parece uma ferramenta muito boa.