Estou tentando atualizar meu BIOS do DELL VOSTRO 260. Estou lutando para chegar a algum lugar, veja para mais informações:
Decidi simplesmente extrair o flashrom diretamente. Não estou tentando executar a etapa de flashing, simplesmente extrair a ROM do exe. Então, se eu baixar o exe e tentar executá-lo usando o Dosesmu, aqui está o que recebo:
$ wget http://downloads.dell.com/FOLDER01639275M/1/MS-A10.exe
$ dosemu -dumb MS-A10.exe > log
$ cat log
SfxDos v2.11. [2012/06/25]
Extracting Files: [6174382 / 6174382] 100%
Missing SMBIOS Table
O que isso significa ? Alguém conseguiu extrair o firmware real desses exe? Não consegui encontrar nada funcionando:
$ unrar l MS-A10.exe
UNRAR 5.00 beta 8 freeware Copyright (c) 1993-2013 Alexander Roshal
MS-A10.exe is not RAR archive
ou
$ unzip -l MS-A10.exe
Archive: MS-A10.exe
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of MS-A10.exe or
MS-A10.exe.zip, and cannot find MS-A10.exe.ZIP, period.
Para referência:
$ file MS-A10.exe
MS-A10.exe: MS-DOS executable
Como faço para extrair o arquivo ROM deste exe DOS auto-extraível?
Responder1
Na verdade, isso foi trivial, basta executá-lo no vinho:
$ wine MS-A10.exe
A saída será encontrada no diretório .wine:
$ find $HOME/.wine | grep MS-A10
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AFUWIN.EXE
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AMIFLDRV.VXD
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AMIFLDRV64.SYS
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AMIFLDRV32.SYS
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/RosaBUU.exe
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/Pmxdll.dll
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/Idrvdll.dll
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/FWUpdLcl.exe
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/settings.ini
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/error.log
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/1176upd.BIN
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AFUWINx64.EXE
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/RosaBUU.log
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/MS-A10.BIN
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/FWUpdLcl64.exe
com:
$ file MS-A10.BIN
MS-A10.BIN: Intel serial flash for PCH ROM
Eu acho que isso tem pouco interesse para quem está tentando fazer esta atualização do BIOS, você deve estar ciente de que usar um disco de reparo Win7/32bits não é uma opção (segui as instruções deaqui). Na verdade, a DLL necessária em tempo de execução requer que oledlg.dll seja encontrado:
$ objdump -x RosaBUU.exe | grep DLL
vma: Hint Time Forward DLL First
DLL Name: dbghelp.dll
DLL Name: KERNEL32.dll
DLL Name: USER32.dll
DLL Name: GDI32.dll
DLL Name: COMDLG32.dll
DLL Name: WINSPOOL.DRV
DLL Name: ADVAPI32.dll
DLL Name: SHELL32.dll
DLL Name: COMCTL32.dll
DLL Name: SHLWAPI.dll
DLL Name: oledlg.dll
DLL Name: ole32.dll
DLL Name: OLEAUT32.dll
Aparentemente, esta DLL não está presente em um disco de reparo Win7/32bits.
Responder2
Há uma opção de linha de comando para extrair a ROM (pode exigir Windows):
MS-A10.exe /writeromfile
Responder3
Qual é a saída quando você executa o arquivo EXE com parâmetro extra "-?" ?
Você pode obter uma lista de opções de linha de comando utilizáveis.
Se for feito com uma versão antiga do RAR para DOS, normalmente "-x" faria apenas uma extração, sem tentar executar o pisca-pisca do BIOS imediatamente depois.
De qualquer forma: você nunca será capaz de executar o utilitário flash baseado em DOS em um ambiente Linux. Na verdade, isso está causando a mensagem SMBios que você está vendo. Isso significa que não é possível localizar o chip BIOS. Um emulador como o Dosesmu não ajudará. Ele não pode fornecer ao comando DOS o acesso de baixo nível necessário ao hardware.
A melhor opção seria criar um stick de inicialização USB ou CD inicializável com FreeDOS e executar o EXE a partir dele. Isso não exigirá a descompactação do EXE. (Ao executar a partir de uma mídia somente leitura, você terá que configurar o FreeDOS para criar um disco RAM e executar o EXE a partir daí. Será necessário um diretório de trabalho gravável para extrair o arquivo BIOS.)