我正在嘗試更新我的 DELL VOSTRO 260 BIOS。我正在努力去任何地方,請參閱以了解更多資訊:
我決定直接提取flashrom。我並不是要執行刷新步驟,只是從 exe 中提取 ROM。因此,如果我下載 exe 並嘗試使用osemu 運行它,我會得到以下結果:
$ 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
這意味著什麼?有人設法從這些 exe 中提取實際的韌體嗎?我找不到任何有效的東西:
$ unrar l MS-A10.exe
UNRAR 5.00 beta 8 freeware Copyright (c) 1993-2013 Alexander Roshal
MS-A10.exe is not RAR archive
或者
$ 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.
以供參考:
$ file MS-A10.exe
MS-A10.exe: MS-DOS executable
如何從這個自解壓縮 DOS exe 中提取 ROM 檔案?
答案1
其實這很簡單,只需在 wine 下運行即可:
$ wine MS-A10.exe
輸出將在 .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
和:
$ file MS-A10.BIN
MS-A10.BIN: Intel serial flash for PCH ROM
我想這對於嘗試進行此 BIOS 更新的人來說沒什麼興趣,您應該知道使用 Win7/32 位元修復碟不是一個選擇(我按照以下說明進行操作)這裡)。事實上,運行時所需的 DLL 需要找到 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
顯然 Win7/32 位元修復盤中不存在此 DLL。
答案2
有一個命令列開關可以提取 ROM(可能需要 Windows):
MS-A10.exe /writeromfile
答案3
當您執行帶有額外參數“-”的 EXE 檔案時,輸出是什麼? ?
您可能會獲得可用命令列選項的清單。
如果它是用舊版的 DOS 版 RAR 製作的,那麼通常「-x」只會執行提取操作,而不會在之後立即嘗試執行 BIOS 刷新程式。
無論如何:您將永遠無法在 Linux 環境中執行基於 DOS 的快閃記憶體實用程式。這實際上是導致您看到的 SMBios 訊息的原因。這意味著它無法找到 BIOS 晶片。像 dosmu 這樣的模擬器不會有幫助。它無法為 DOS 命令提供對硬體的必要低階存取。
最好的選擇似乎是使用 FreeDOS 建立 USB 啟動棒或可啟動 CD,並從中運行 EXE。這根本不需要解壓縮 EXE。 (從只讀媒體運行時,您必須設定 FreeDOS 來製作 RAM 磁碟並從那裡運行 EXE。它將需要一個可寫工作目錄來將 BIOS 檔案提取到其中。)