我正在尝试更新我的 DELL VOSTRO 260 BIOS。我很难找到任何方法,请参阅更多信息:
我决定直接提取 flashrom。我并没有尝试运行刷新步骤,只是从 exe 中提取 ROM。因此,如果我下载 exe 并尝试使用 dosemu 运行它,我会得到以下结果:
$ 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/32bits 修复盘中不存在此 DLL。
答案2
有一个命令行开关可以提取 ROM(可能需要 Windows):
MS-A10.exe /writeromfile
答案3
当您使用额外参数“-?”运行 EXE 文件时,输出是什么?
您可能会获得可用命令行选项的列表。
如果它是使用旧版本的 DOS RAR 制作的,那么通常“-x”只会进行提取,而不会尝试随后立即运行 BIOS 刷新程序。
无论如何:您永远无法在 Linux 环境中运行基于 DOS 的闪存实用程序。这实际上导致了您看到的 SMBios 消息。这意味着它无法找到 BIOS 芯片。像 dosemu 这样的模拟器不会有帮助。它无法为 DOS 命令提供对硬件的必要低级访问权限。
最好的选择似乎是创建一个装有 FreeDOS 的 USB 启动盘或可启动 CD,然后从中运行 EXE。这样根本不需要解压 EXE。(从只读媒体运行时,您必须设置 FreeDOS 以创建 RAM 磁盘并从中运行 EXE。它需要一个可写的工作目录来提取 BIOS 文件。)