DELL VOSTRO 260 BIOS をアップデートしようとしています。 なかなかうまくいきません。詳細については、以下を参照してください。
私は単純にフラッシュROMを直接抽出することにしました。フラッシュステップを実行しようとしているのではなく、単に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/32bits修復ディスクを使用することはできないことに注意してください(私はここ実際、実行時に必要な 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
どうやらこの DLL は Win7/32 ビット修復ディスクには存在しないようです。
答え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 ファイルを抽出するには、書き込み可能な作業ディレクトリが必要です。)