Я пытаюсь обновить BIOS моего DELL VOSTRO 260. Я не могу ничего сделать, для получения дополнительной информации см.:
Я решил просто извлечь flashrom напрямую. Я не пытаюсь запустить шаг перепрошивки, просто извлечь ROM из exe. Так что если я скачаю 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
Как извлечь файл ROM из этого самораспаковывающегося exe-файла DOS?
решение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/32bit.
решение2
Для извлечения ПЗУ имеется ключ командной строки (может потребоваться Windows):
MS-A10.exe /writeromfile
решение3
Что выводится при запуске EXE-файла с дополнительным параметром "-?" ?
Вы можете получить список используемых параметров командной строки.
Если он создан с помощью старой версии RAR для DOS, то обычно «-x» выполняет только извлечение, без попытки немедленно запустить программу перепрошивки BIOS.
В любом случае: вы никогда не сможете запустить DOS-based flash-utility из среды Linux. Это на самом деле является причиной сообщения SMBios, которое вы видите. Это означает, что он не может найти чип BIOS. Эмулятор типа dosemu не поможет. Он не может предоставить команде DOS необходимый низкоуровневый доступ к оборудованию.
Лучшим вариантом, по-видимому, будет создание загрузочной флешки USB или загрузочного CD с FreeDOS и запуск EXE с него. Это вообще не потребует распаковки EXE. (При запуске с носителя только для чтения вам придется настроить FreeDOS для создания RAM-диска и запуска EXE оттуда. Для извлечения файла BIOS потребуется доступный для записи рабочий каталог.)