Estoy intentando actualizar mi BIOS DELL VOSTRO 260. Estoy luchando por llegar a cualquier parte, consulte para obtener más información:
Decidí simplemente extraer el flashrom directamente. No estoy intentando ejecutar el paso de actualización, simplemente extraer la ROM del exe. Entonces, si descargo el exe e intento ejecutarlo usando dosemu, esto es lo que obtengo:
$ 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
Qué significa esto ? ¿Alguien ha logrado extraer el firmware real de esos exe? No pude encontrar nada que funcione:
$ unrar l MS-A10.exe
UNRAR 5.00 beta 8 freeware Copyright (c) 1993-2013 Alexander Roshal
MS-A10.exe is not RAR archive
o
$ 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 referencia:
$ file MS-A10.exe
MS-A10.exe: MS-DOS executable
¿Cómo extraigo el archivo ROM de este exe autoextraíble de DOS?
Respuesta1
En realidad, eso fue trivial, simplemente ejecútelo bajo vino:
$ wine MS-A10.exe
La salida se encontrará en el directorio .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
con:
$ file MS-A10.BIN
MS-A10.BIN: Intel serial flash for PCH ROM
Supongo que esto tiene poco interés para cualquiera que intente realizar esta actualización del BIOS, debe tener en cuenta que usar un disco de reparación de Win7/32 bits no es una opción (seguí las instrucciones deaquí). De hecho, la DLL necesaria en tiempo de ejecución requiere que se encuentre oledlg.dll:
$ 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 no está presente en un disco de reparación de Win7/32 bits.
Respuesta2
Hay un modificador de línea de comandos para extraer la ROM (puede requerir Windows):
MS-A10.exe /writeromfile
Respuesta3
¿Cuál es el resultado cuando ejecuta el archivo EXE con el parámetro adicional "-?" ?
Es posible que obtenga una lista de opciones de línea de comandos utilizables.
Si está hecho con una versión antigua de RAR para DOS, entonces normalmente "-x" haría solo una extracción, sin intentar ejecutar la actualización del BIOS inmediatamente después.
De todos modos: nunca podrá ejecutar la utilidad flash basada en DOS desde un entorno Linux. En realidad, eso está causando el mensaje SMBios que estás viendo. Significa que no puede localizar el chip BIOS. Un emulador como dosemu no ayudará. No puede darle al comando DOS el acceso de bajo nivel necesario al hardware.
La mejor opción parecería ser crear una memoria USB de arranque o un CD de arranque con FreeDOS y ejecutar el EXE desde allí. Eso no requerirá descomprimir el EXE en absoluto. (Cuando se ejecuta desde un medio de solo lectura, tendrá que configurar FreeDOS para crear un disco RAM y ejecutar el EXE desde allí. Necesitará un directorio de trabajo grabable para extraer el archivo BIOS).