Я пытаюсь обновить BIOS DELL VOSTRO 260. Я изо всех сил пытаюсь добраться куда угодно, см. Для получения дополнительной информации:

Я решил просто извлечь Flashrom напрямую. Я не пытаюсь запустить шаг перепрошивки, просто извлечь ROM из exe. Поэтому, если я скачаю exe-файл и попробую запустить его с помощью dosmu, вот что я получу:

$ 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?

3 ответа3

2

На самом деле это было тривиально, просто запустите его под вином:

$ 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/32bit не вариант (я следовал инструкциям здесь). Действительно, 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.

1

есть переключатель командной строки для извлечения ПЗУ (может потребоваться Windows):

MS-A10.exe /writeromfile
0

Что выводится при запуске EXE-файла с дополнительным параметром "-?"?
Вы можете получить список используемых параметров командной строки.

Если он сделан со старой версией RAR для DOS, то обычно "-x" делает только извлечение, не пытаясь сразу запустить BIOS.

В любом случае: вы никогда не сможете запустить флэш-утилиту на основе DOS из среды Linux. Это фактически вызывает сообщение SMBios, которое вы видите. Это означает, что он не может найти BIOS-чип. Эмулятор типа Dosemu не поможет. Он не может дать команде DOS необходимый низкоуровневый доступ к оборудованию.

Лучшим вариантом будет создать загрузочную флешку USB или загрузочный компакт-диск с FreeDOS и запустить с него EXE-файл. Это не потребует распаковки EXE-файла вообще. (При работе с носителя только для чтения вам придется настроить FreeDOS для создания RAM-диска и запустить оттуда EXE-файл. Для извлечения файла BIOS ему понадобится доступный для записи рабочий каталог.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .