Позвольте представиться, меня зовут Белов Александр, работаю в московском государственном колледже информационных технологий в должности системного администратора.
В моём обслуживании около 300 компьютеров, из них около 70 процентов компьютеров находятся в учебных лабораториях. Достаточно часто встаёт вопрос быстрой диагностики системного блока, например запуск системных утилит для проверки оперативной памяти и жёсткого диска, восстановление работоспособности операционной системы и т.д.
На первых порах я использовал несколько загрузочных флешек для загрузки необходимых утилит. Но оказалось, что некоторые bios'ы в материнских платах настолько старые, что не подерживают загрузку с USB или скорость передачи ограничена USB 1.0. Плюс суммарный размер образов для восстановления у нас превышает 100 Гб, поэтому проходилось таскать кучу разных флешек.
Параллельно были попытки попробовать загружать все это добро из сети. Остановился на использовании lan boot rom сетевой карты на клиентской стороне и tftp сервере с pxelinux утилитой на серверной стороне соответственно. Утилиты memtest, mhdd, всякие линуксы, acronis практически без проблем загружались по сети, лишь бы памяти на компьютере хватило.
Можно даже загружать winpe(bartpe), предварительно интегрируя в образ специальный драйвер.
Была предпринята попытка переноса автоматической системы установки ОС в сеть. Работает она так — специалист загружает с флешки специальную winpe сборку на основе win7, после загрузки происходит инициализация сети и скрипт загружает из сети список возможных образов для востановления. Специалисту остается выбрать нужный образ и дождатся его распаковки.
WinPE 3 (на нем основана система востановления) распространяется microsoft как wim образ. Это файл-ориентированный архив и в отличии от iso образов его не так просто загрузить через сеть. Существует проект iPXE, который ставит целью open source реализацию протокола PXE. На одной из страниц было найдено решение. Для PXELINUX загрузчика оно выглядит примерно так:
DEFAULT vesamenu.c32
PROMPT 0
FONT /pxelinux.cfg/fonts/cyr_a8x16.psf
INCLUDE /pxelinux.cfg/menu_color.conf
MENU TITLE Автоматическая установка
LABEL winpxe86drivers
MENU LABEL Windows 7 x86 (with drivers)
COM32 linux.c32 /wimboot
APPEND wimboot initrdfile=/install/7x86d/boot/bootmgr,/install/7x86d/boot/bcd,/install/7x86d/boot/fonts/chs_boot.ttf,/install/7x86d/boot/fonts/cht_boot.ttf,/install/7x86d/boot/fonts/jpn_boot.ttf,/install/7x86d/boot/fonts/kor_boot.ttf,/install/7x86d/boot/fonts/wgl4_boot.ttf,/install/7x86d/boot/boot.sdi,/install/7x86d/boot.wim
LABEL winpxe86
MENU LABEL Windows 7 x86
COM32 linux.c32 /wimboot
APPEND wimboot initrdfile=/install/7x86/boot/bootmgr,/install/7x86/boot/bcd,/install/7x86/boot/fonts/chs_boot.ttf,/install/7x86/boot/fonts/cht_boot.ttf,/install/7x86/boot/fonts/jpn_boot.ttf,/install/7x86/boot/fonts/kor_boot.ttf,/install/7x86/boot/fonts/wgl4_boot.ttf,/install/7x86/boot/boot.sdi,/install/7x86/boot.wim
MENU SEPARATOR
LABEL back
MENU LABEL Назад
KERNEL /vesamenu.c32
APPEND /pxelinux.cfg/maintenance.conf
Решение работоспособно и было проверенной на множестве аппаратных конфигурациях. Ошибки возникали, если на машине было меньше 512 МБ памяти или в загрузочном wim-образе отсутствовали необходимые драйвера для запуска сети.
И тут я наткнулся на одну странность. В одной учебной аудитории данный метод загрузки не работал, а именно — сетевая карта не инициализировалась (линк был, но передача данных была не возможна). Опытным путем было установлено, что драйвера тут не причем. Тот же образ WinPE, загружаемый с флешки, исправно работал. Подозрение пало на Nvidia Boot Agent. После непродолжительного поиска информации в интернете было обнаружено несколько упоминаний о забагованном Nvidia Boot Agent модуле. Баг заключался в том, что модуль не отключался после загрузки данных через сеть и мешал ОС инициализировать сетевую карту. При этом загрузка с помощью ipxe образа проходила успешно.
Встал вопрос — возможно ли заменить Nvidia Boot Agent на iPXE модуль. После непродолжительных экспериментов было найдено решение.
Внимание: Будьте внимательны — вы используете все приведенные компоненты на свой страх и риск, никаких гарантий я не даю, и никакой ответственности за последствия использования не несу!
Итак
Материнская плата: ASUS M2NPV-VM
Версия BIOS: 1401
Необходимые утилиты: CBROM32 v198
1. Скачиваем предпоследний bios 1401 с сайта asus. К сожалению последний bios нам не подходит по простой причине — не хватит место для включения iPXE модуля.
2. Скачиваем CBROM32 v198
3. Смотрим, что у нас находится в bios`е:
C:1>CBROM.EXE 1401.BIN /D
CBROM.EXE V1.98 [08/27/08] (C)Phoenix Technologies 2001-2008
******** 1401.BIN BIOS component ********
No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================
0. System BIOS 20000h(128.00K) 14AB9h(82.68K) 1.BIN
1. XGROUP CODE 0E7A0h(57.91K) 09FD7h(39.96K) awardext.rom
2. CPU micro code 02000h(8.00K) 003EFh(0.98K) CPUCODE.BIN
3. ACPI table 0706Eh(28.11K) 02B92h(10.89K) ACPITBL.BIN
4. EPA LOGO 0168Ch(5.64K) 002AAh(0.67K) AwardBmp.bmp
5. YGROUP ROM 0C370h(48.86K) 05325h(20.79K) awardeyt.rom
6. GROUP ROM[ 0] 07BA0h(30.91K) 030C3h(12.19K) _EN_CODE.BIN
7. BIOSF0 01F60h(7.84K) 01561h(5.34K) _DMI.BIN
8. BIOSF9 0F550h(61.33K) 00797h(1.90K) _RT.BIN
9. BIOSF7 007A0h(1.91K) 005F5h(1.49K) _Xsetup.BIN
10. OEM0 CODE 0D9F0h(54.48K) 00698h(1.65K) BGROUP.BIN
11. PCI ROM[A] 0C000h(48.00K) 0703Ch(28.06K) NVRAID.ROM
12. PCI ROM[B] 0E000h(56.00K) 07271h(28.61K) NVPXES.NIC
13. VGA ROM[1] 0F000h(60.00K) 0A9FEh(42.50K) C51PV0.ROM
14. LOGO BitMap 4B30Ch(300.76K) 092ECh(36.73K) M2NPV-VM.BMP
15. OEM1 CODE 00BAFh(2.92K) 006D3h(1.71K) PMU.BIN
16. GV3 0414Eh(16.33K) 0113Eh(4.31K) AGESACPU.ROM
17. BIOSF6 0E20Ch(56.51K) 0790Dh(30.26K) EZFLASH.EXE
(BB) Compress BT-VGA 05E00h(23.50K) 04266h(16.85K) C51PV0BB.ROM
Total compress code space = 65000h(404.00K)
Total compressed code size = 57ADDh(350.72K)
Remain compress code space = 0D523h(53.28K)
*** NVMM 4.062.1906/19/06 <¦ * Start Offset => 0, End Offset => 1b00 ***
** Micro Code Information **
Bridge ID | Bridge ID
North South Patch ID CPUID | North South Patch ID CPUID
---------------------------------------+----------------------------------------
0062 00000414 | 0068 0000040A| 006D 000004
1B
0083 0000068|
Под 12 номером находится модуль NVPXES.NIC, именно его мы будем заменять.
4. Пора зайти на сайт, выбрать «Advanced, for experienced users», далее «ROM binary (flashable) image (.rom)» и указать DEV и VEN характеристики вашей сетевой карты (VEN 10DE DEV 0269 для нашего случая), и наконец, нажать Proceed.
5. Переименуем скачанный модули iPXE в NVPXES.NIC для корректного определения утилитой CBROM. Произведем замену модуля в bios`е (не обращаем внимания на проценты):
C:1>CBROM.EXE 1401.BIN /PCI NVPXES.NIC
CBROM.EXE V1.98 [08/27/08] (C)Phoenix Technologies 2001-2008
Adding NVPXES.NIC ........ 98.5%
6. Проверим внесенные изменения:
C:1>CBROM.EXE 1401.BIN /D
CBROM.EXE V1.98 [08/27/08] (C)Phoenix Technologies 2001-2008
******** 1401.BIN BIOS component ********
No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================
0. System BIOS 20000h(128.00K) 14AB9h(82.68K) 1.BIN
1. XGROUP CODE 0E7A0h(57.91K) 09FD7h(39.96K) awardext.rom
2. CPU micro code 02000h(8.00K) 003EFh(0.98K) CPUCODE.BIN
3. ACPI table 0706Eh(28.11K) 02B92h(10.89K) ACPITBL.BIN
4. EPA LOGO 0168Ch(5.64K) 002AAh(0.67K) AwardBmp.bmp
5. YGROUP ROM 0C370h(48.86K) 05325h(20.79K) awardeyt.rom
6. GROUP ROM[ 0] 07BA0h(30.91K) 030C3h(12.19K) _EN_CODE.BIN
7. BIOSF0 01F60h(7.84K) 01561h(5.34K) _DMI.BIN
8. BIOSF9 0F550h(61.33K) 00797h(1.90K) _RT.BIN
9. BIOSF7 007A0h(1.91K) 005F5h(1.49K) _Xsetup.BIN
10. OEM0 CODE 0D9F0h(54.48K) 00698h(1.65K) BGROUP.BIN
11. PCI ROM[A] 0C000h(48.00K) 0703Ch(28.06K) NVRAID.ROM
12. VGA ROM[1] 0F000h(60.00K) 0A9FEh(42.50K) C51PV0.ROM
13. LOGO BitMap 4B30Ch(300.76K) 092ECh(36.73K) M2NPV-VM.BMP
14. OEM1 CODE 00BAFh(2.92K) 006D3h(1.71K) PMU.BIN
15. GV3 0414Eh(16.33K) 0113Eh(4.31K) AGESACPU.ROM
16. BIOSF6 0E20Ch(56.51K) 0790Dh(30.26K) EZFLASH.EXE
17. PCI ROM[B] 11E00h(71.50K) 119D5h(70.46K) NVPXES.NIC
(BB) Compress BT-VGA 05E00h(23.50K) 04266h(16.85K) C51PV0BB.ROM
Total compress code space = 65000h(404.00K)
Total compressed code size = 62241h(392.56K)
Remain compress code space = 02DBFh(11.44K)
*** NVMM 4.062.1906/19/06 <¦ * Start Offset => 0, End Offset => 1b00 ***
** Micro Code Information **
Bridge ID | Bridge ID
North South Patch ID CPUID | North South Patch ID CPUID
---------------------------------------+----------------------------------------
0062 00000414 | 0068 0000040A| 006D 000004
1B
0083 0000068|
12 модуль был удален, на его место установлен 17.
7. Копируем измененный bios на флешку, втыкаем в компьютер, заходим в bios и прошиваем новый bios с помощью встроенной утилиты Asus EZ Flash.
8. Радуемся безглючной загрузкой по сети!
В качестве бонуса — цветное pxe меню аля BIOS.
menu color screen 0 #00000000 #00000000 none
menu color border 0 #ffFFFFFF #00000000 none
menu color title 0 #ffFFFFFF #00000000 none
menu color unsel 0 #ffFFFF55 #00000000 none
menu color hotkey 0 #ffFFFFFF #00000000 none
menu color sel 0 #ffFFFFFF #ffAA0000 none
menu color hotsel 0 #ff0000AD #00000000 none
menu color disabled 0 #ff505655 #00000000 none
menu color scrollbar 0 #ffA8A8A8 #00000000 none
menu color tabmsg 0 #ffFFFFFF #00000000 none
menu color cmdmark 0 #ffFFFFFF #00000000 none
menu color cmdline 0 #ffFFFFFF #00000000 none
menu color pwdborder 0 #ffFFFFFF #ffAA0000 none
menu color pwdheader 0 #ffFFFFFF #ffAA0000 none
menu color pwdentry 0 #ffFFFFFF #ffAA0000 none
menu color timeout_msg 0 #ffFFFFFF #00000000 none
menu color timeout 0 #ffFFFFFF #00000000 none
menu color help 0 #ffFFFFFF #00000000 none
menu color msg07 0 #ffFFFFFF #00000000 none
menu background #0000AA
Автор: zer0nka