Ich versuche, das BIOS meines Dell Vostro 260 zu aktualisieren. Ich komme nicht weiter. Weitere Informationen finden Sie unter:
Ich habe mich entschieden, das Flash-ROM einfach direkt zu extrahieren. Ich versuche nicht, den Flash-Schritt auszuführen, sondern nur das ROM aus der EXE zu extrahieren. Wenn ich also die EXE herunterlade und versuche, sie mit Dosemu auszuführen, erhalte ich Folgendes:
$ 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
Was bedeutet das? Hat es jemand geschafft, die eigentliche Firmware aus diesen EXE-Dateien zu extrahieren? Ich konnte nichts finden, was funktioniert:
$ unrar l MS-A10.exe
UNRAR 5.00 beta 8 freeware Copyright (c) 1993-2013 Alexander Roshal
MS-A10.exe is not RAR archive
oder
$ 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.
Als Referenz:
$ file MS-A10.exe
MS-A10.exe: MS-DOS executable
Wie extrahiere ich die ROM-Datei aus dieser selbstextrahierenden DOS-EXE?
Antwort1
Eigentlich war das trivial, führen Sie es einfach unter Wine aus:
$ wine MS-A10.exe
Die Ausgabe finden Sie im Verzeichnis .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
mit:
$ file MS-A10.BIN
MS-A10.BIN: Intel serial flash for PCH ROM
Ich denke, das ist für jeden, der versucht, dieses BIOS-Update durchzuführen, nicht von Interesse. Sie sollten sich bewusst sein, dass die Verwendung einer Win7/32bits-Reparaturdiskette keine Option ist (ich habe die Anweisungen von befolgt).Hier). Tatsächlich erfordert die zur Laufzeit benötigte DLL, dass oledlg.dll gefunden wird:
$ 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
Anscheinend ist diese DLL auf einer Win7/32-Bit-Reparaturdiskette nicht vorhanden.
Antwort2
Es gibt einen Befehlszeilenschalter zum Extrahieren des ROM (erfordert möglicherweise Windows):
MS-A10.exe /writeromfile
Antwort3
Was ist die Ausgabe, wenn Sie die EXE-Datei mit dem zusätzlichen Parameter "-?" ausführen?
Möglicherweise erhalten Sie eine Liste verwendbarer Befehlszeilenoptionen.
Wenn es mit einer alten Version von RAR für DOS erstellt wurde, führt „-x“ normalerweise nur eine Extraktion durch, ohne zu versuchen, den BIOS-Flasher unmittelbar danach auszuführen.
Wie dem auch sei: Sie werden das DOS-basierte Flash-Dienstprogramm niemals in einer Linux-Umgebung ausführen können. Das ist tatsächlich die Ursache für die SMBios-Meldung, die Sie sehen. Es bedeutet, dass der BIOS-Chip nicht gefunden werden kann. Ein Emulator wie Dosemu wird nicht helfen. Er kann dem DOS-Befehl nicht den erforderlichen Low-Level-Zugriff auf die Hardware geben.
Die beste Option scheint zu sein, einen USB-Bootstick oder eine bootfähige CD mit FreeDOS zu erstellen und die EXE davon auszuführen. Dazu muss die EXE überhaupt nicht entpackt werden. (Wenn Sie von einem schreibgeschützten Medium aus arbeiten, müssen Sie FreeDOS so einrichten, dass eine RAM-Disk erstellt wird, und die EXE von dort ausführen. Es wird ein beschreibbares Arbeitsverzeichnis benötigt, in das die BIOS-Datei extrahiert wird.)