Объединение нескольких реаниматоров на базе windows 7
В данной статье рассматривается объединение нескольких реаниматоров на базе windows 7 / 2008 (точнее, WinPE 2.x - windows Vista, Windows 7, Windows 2008, Windows 2008 R2). Здесь не рассматривается само создание подобных реаниматоров - предполагается, что они у Вас уже есть (либо созданы Вами ранее, либо взяты откуда-либо готовые).
Мы рассмотрим объединение нескольких реаниматоров на примере AntiWinLockLiveCD 3.3 и Passware WinKey 11.1.
Эти реаниматоры могут загружаться как с CD/DVD, так и с флешки / жесткого диска (с равным успехом),
не требуя предварительной загрузки всего образа в RAM.
Для выполнения инструкций в этой статье Вам понадобятся различные программы и файлы. Скачать их можно здесь. Обратите внимание: архив защищен паролем! Пароль на архив: 12345.
Ключевые вещи, которые нам понадобятся:
- Grub4DOS для загрузки с флешки (а также с CD/DVD) или BCDW для загрузки с CD/DVD
- BOOTMGR от каждого ISO образа, которые надо будет пропатчить
- папки BOOT (которые содержат конфигуратор загрузки - BCD)
- папки SOURCES (которые содержат WIM файлы - эти файлы и являются самими образами для загрузки)
Что имеет место на данный момент (порядок загрузки любого реаниматора на базе WinPE 2.x):
- загрузчик (из MBR или из бутсектора) передает управление файлу BOOTMGR;
- BOOTMGR в папке BOOT находит файл BCD, считывает оттуда конфигурацию (варианты) загрузки и при наличии нескольких вариантов отображает их на экране;
- при выборе варианта загрузки (или сразу же, если вариант всего 1) из BCD считывается информация о загружаемом WIM файле (обычно \SOURCES\BOOT.WIM) и производится его загрузка;
- пошла загрузка WIM файла и запускается сам реаниматор.
Что мы хотим получить:
- загрузчик (из MBR или из бутсектора) передает управление либо на GRLDR (в случае Grub4DOS), либо BCDW;
- GRLDR / BCDW отображает меню загрузки, в котором (помимо прочего) имеются НЕСКОЛЬКО вариантов реаниматоров на базе WinPE 2.x (если такой реаниматор ОДИН, то ничего дальше делать не нужно, просто передайте управление файлу BOOTMGR и все);
- далее (для удобства) предполагается, что варианты загрузки у нас нумеруются 01,02,03,... и соответствующие файлы BOOTMGR называются BOOTMGR01, BOOTMGR02, BOOTMGR03, ...;
- Мы выбираем какой-то вариант загрузки (т.е. управление передается файлу BOOTMGRXX, где XX - числа от 00 до 99);
- BOOTMGRXX в папке BOOT находит файл BXX (где XX - числа от 00 до 99), считывает оттуда конфигурацию (варианты) загрузки и при наличии нескольких вариантов отображает их на экране (у нас планируется в каждом файле BXX только 1 вариант загрузки, но при желании можно все варианты реаниматоров на базе WinPE 2.x "запихнуть" в один BCD файл, тогда не нужно патчить BOOTMGR);
- при выборе варианта загрузки (или сразу же, если вариант всего 1) из BXX считывается информация о загружаемом WIM файле: \SOURCES\BOOTXX.WIM (где XX - числа от 00 до 99) и производится его загрузка;
- пошла загрузка WIM файла и запускается сам реаниматор.
Таким образом, пропатченные файлы обязательно должны ссылаться друг на друга:
\BOOTMGRx -> \BOOT\BCx -> \SOURCES\BOOTx.WIM
или
\BOOTMGRxx -> \BOOT\Bxx -> \SOURCES\BOOTxx.WIM
При этом файлы (к примеру) bootmgr00 и B00 должны быть из одного и того же реаниматора (т.е. цифры в именах BOOTMGR и BCD должны совпадать, при этом каждый BOOTMGRx или BOOTMGRxx должен иметь соответствующий ему BOOT\BCx или BOOT\Bxx , а также \SOURCES\BOOTx.WIM или \SOURCES\BOOTxx.WIM файл).
Чтобы получить из пункта "Что имеет место на данный момент" пункт "Что мы хотим получить", надо:
- Переименовать файл BOOTMGR у КАЖДОГО реаниматора (и обозвать эти файлы соответственно - BOOTMGRXX) и положить эти файлы в одну папку, в корень будущего диска (можно в папку \BOOT - это не принципиально);
- пропатчить каждый файл BOOTMGRXX так, чтобы он ссылался НЕ на \BOOT\BCD, а на \BOOT\BXX;
- переименовать файлы в папках \BOOT\BCD у КАЖДОГО реаниматора и дать им названия \BOOT\BXX (где XX - числа от 00 до 99) и положить эти файлы в одну папку BOOT, которая находится в корне будущего диска;
- пропатчить КАЖДЫЙ файл \BOOT\BXX таким образом, чтобы он ссылался НЕ на \SOURCES\BOOT.WIM, а на \SOURCES\BOOTXX.WIM (где XX - числа от 00 до 99);
- переименовать файлы \SOURCES\BOOT.WIM для КАЖДОГО реаниматора в файлы \SOURCES\BOOTXX.WIM и положить их в папку SOURCES, которая находится в корне будущего диска.
Пример: при наличии 3-х реаниматоров на базе WinPE 2.x структура диска будет выглядеть так:
\BOOTMGR01
\BOOTMGR02
\BOOTMGR02
\BOOT\B01
\BOOT\B02
\BOOT\B03
\SOURCES\BOOT01.WIM
\SOURCES\BOOT02.WIM
\SOURCES\BOOT03.WIM
Ну и, кроме того, должны быть файлы GRLDR и MENU.LST (для Grub4DOS) или файлы BCDW. При этом пропатченные файлы должны ссылаться друг на друга следующим образом:
\BOOTMGR01 -> \BOOT\B01 -> \SOURCES\BOOT01.WIM
\BOOTMGR02 -> \BOOT\B02 -> \SOURCES\BOOT02.WIM
\BOOTMGR03 -> \BOOT\B03 -> \SOURCES\BOOT03.WIM
Патчим BOOTMGR
Тут имеются 2 варианта: старый (и возможно более простой), но ограниченный всего 11-ю вариантами загрузки (т.е. можно на 1 диске использовать не более 11 реаниматоров на базе WinPE 2), и новый, который дает как минимум 100 вариантов загрузки.
Старый вариант патча BOOTMGR: Использование zbootmgr.exe
Рассматриваем на создании одного варианта загрузки (под номером 1). Для создания других вариантов просто используйте другую цифру.
- запустите утилиту zbootmgr.exe
- нажмите "Open", выберите папку с нужным Вам реаниматором и выберите в этой папке файл BOOTMGR
- При этом в окне программы над путем к этому файлу может появиться надпись: "unsupported version, or already modified". При этом поле "Select new BCD store location" становится серым и кнопка "Save" не нажимается. Это значит, что либо Вы взяли уже измененный файл (который ссылается не на \BOOT\BCD, а на что-то другое), либо этот файл не поддерживается программой zbootmgr. В этом случае у Вас есть несколько вариантов:
- найти неизмененный (оригинальный) файл BOOTMGR
- взять файл BOOTMGR от другого реаниматора (zbootmgr.exe НЕ поддерживает файл BOOOTMGR от Win 7 SP1, но для этого реаниматора можно взять BOOTMGR от Win7 SP0, WinVista SP0/SP1/SP2)
- отказаться от использования этой программы (zbootmgr) и перейти к новому варианту патчинга BOOOTMGR
- В окне программы над путем к выбранному Вами файлу BOOTMGR может также отобразиться надпись "Windows 7 SP0 RTM" или "Windows Vista SP2 RTM" и т.п. Это значит, что все в порядке, можно патчить;
- В поле "Select new BCD store location" выбираем вариант, на который будет ссылаться BOOTMGR, в нашем случае - \BOOT\BC1;
- Нажимаете "Save..." и программа автоматически предлагает новое имя для BOOTMGR - BOOTMGR1. Не забудьте выбрать новое местоположение файла - в корень будущего диска.
Аналогичным образом патчим BOOTMGR для всех нужных нам реаниматоров. Кстати, не обязательно (теоретически) каждый раз указывать исходный файл BOOTMGR: можно все реаниматоры сделать на база одного и того же BOOTMGR файла (просто выберите самый свежий BOOTMGR из имеющихся). Т.е. достаточно 1 раз нажать "Open...", выбрать нужный файл, убедиться, что zbootmgr его поддерживает, и далее просто много раз выбираете нужный номер варианта ("Select new BCD store location") и каждый раз нажимаете "Save...".
В результате:
bootmgr0 будет ссылаться на \boot\bc0
bootmgr1 будет ссылаться на \boot\bc1
bootmgr2 будет ссылаться на \boot\bc2
и так далее.
Нетрудно подсчитать, что в этом случае количество вариантов загрузки будет не более 11-ти:
bootmgr -> \boot\bcd
bootmgr0 -> \boot\bc0
...
bootmgr9 -> \boot\bc9
Новый вариант патча BOOTMGR. Использование hackers_patcher
В данном случае будет выполняться патч оригинального файла, поэтому необходимо предварительно скопировать файлы BOOTMGR
из всех нужных реаниматоров, положить их в корень будущего диска и обозвать BOOTMGRXX.
Для работы Вам понадобится утилита hpatch.exe.
Для начала делаем копии файла bootmgr-all.hp по количеству вариантов и называем bootmgr-allXX.hp (где XX - числа от 00 до 99). Каждый файл bootmgr-allXX.hp необходимо изменить следующим образом:
В самом низу файла, где строки начинаются со слова "snr", необходимо строку символов "??30??30??" заменить на
строку "??YY??YY??", где YY - это ASCII-коды цифр от 0 до 9.
строка "??30??30??" означает замену на число "00", где первое число "30" слева - это код первого "0", а второе - второго "0".
Поясняю: чтобы получить файл BOOTMGR, который будет ссылаться не на \BOOT\BCD, а на \BOOT\B00,
оставляем все без изменений (т.е. НЕ ТРОГАЕМ файл bootmgr-all00.hp). Если же нам нужно сделать, чтобы
BOOTMGR ссылался на \BOOT\B01, то меняем его следующим образом:
"??30??30??" заменяем на "??30??31??" (без кавычек)
Итак, для патчинга ВО ВСЕХ строках, начинающихся с "snr", вместо строки ??30??30?? должна быть строка:
для \BOOT\B00 ??30??30??
для \BOOT\B01 ??30??31??
для \BOOT\B02 ??30??32??
для \BOOT\B03 ??30??33??
для \BOOT\B04 ??30??34??
для \BOOT\B05 ??30??35??
для \BOOT\B06 ??30??36??
для \BOOT\B07 ??30??37??
для \BOOT\B08 ??30??38??
для \BOOT\B09 ??30??39??
для \BOOT\B10 ??31??30??
для \BOOT\B11 ??31??31??
для \BOOT\B12 ??31??32??
для \BOOT\B13 ??31??33??
для \BOOT\B14 ??31??34??
для \BOOT\B15 ??31??35??
для \BOOT\B16 ??31??36??
для \BOOT\B17 ??31??37??
для \BOOT\B18 ??31??38??
для \BOOT\B19 ??31??39??
для \BOOT\B20 ??32??30??
для \BOOT\B21 ??32??31??
для \BOOT\B22 ??32??32??
и так далее
для \BOOT\B99 ??39??30??
Теперь, в файле bootmgr-all01.hp у нас будет строка ??30??31??, в файле bootmgr-all20.hp - строка ??32??30??, и т.д.
Необходимо подготовить EXE файлы для патчя BOOTMGR файлов. Для этого выполните следующую команду из командной строки:
hpatch.exe bootmgr-all01.hp
hpatch.exe bootmgr-all02.hp
hpatch.exe bootmgr-all03.hp
...
При каждом запуске программа попросит у Вас админских прав (нужно согласиться) и в результате работы создаст в текущей папке
файл bootmgr-allXX.exe (для bootmgr-all01.hp - bootmgr-all01.exe, для bootmgr-all55.hp - bootmgr-all55.exe, и т.д.)
Теперь патчим файлы BOOTMGR. Для этого по очереди запускаем каждый файл bootmgr-allXX.exe, выбираем соответствующий ему
файл BOOTMGRXX и нажимаем "Patch", и проверяем, что появилась надпись "Target file BOOTMGR succesfully patched."
Всё, все файлы BOOTMGRXX пропатчены!
Патчим BCD
Тут имеются 2 варианта: с использованием bcdedit и с использованием BOOTICE.
Вариант с BCDedit можно (и нужно) использовать, если у Вас Windows Vista / Windows 7 / Windows 2008
Вариант с BOOTICE немного сложнее, но не требует ничего кроме BOOTICE и windows XP или windows 2003 (можно даже загрузиться
с реаниматора и сделать патч BCD).
Патчим BCD с использованием BCDedit
Источник информации (на английском языке) находится здесь:
http://www.rmprepusb.com/tutorials/how-to-create-a-usb-drive-that-will-install-vista-win7-and-server-2008
http://sites.google.com/site/rmprepusb/tutorials/how-to-create-a-usb-drive-that-will-install-vista-win7-and-server-2008
http://puhpol.0pk.ru/viewtopic.php?id=19
В этих методичках написано, что нужно скачать и установить windows WAIK, чтобы получить утилиту ImageX utility и WinPE OS.
Но это требуется только если Вы хотите пропатчить сами WIM файлы. В нашем же случае мы будем использовать реаниматоры на базе
Windows 7, а не дистрибутивы windows vista / windows 7, поэтому WAIK (и ImageX) не нужен.
Методика:
- Скопируйте файлы ChangeBCD_to_BCx.cmd и ChangeBCD_to_Bxx.cmd в корень Вашего будущего диска (например C:\MYUSB )
- Скопируйте bootmgr (или сделайте много копий bootmgr)
- Скопируйте файл bootmgr в папку C:\MYUSB и пропатчите его (как описано выше)
- Скопируйте \boot\BCD файл из каждого реаниматора в папку C:\MYUSB\boot\ под именем BCx (где x - цифра от 0 до 9)
или
Скопируйте \boot\BCD файл из каждого реаниматора в папку C:\MYUSB\boot\ под именем Bxx (где xx - число от 00 до 99)
- Откройте командную строку от имени администратора (кликнуть правой кнопкой мыши и выбрать "Запуск от имени администратора")
командная строка должна выглядеть примерно так:
C:\Windows\system32>
Теперь введите следующий текст, после каждой строки нажимая Enter:
C:
CD C:\MYUSB
а теперь запустите команду:
ChangeBCD_to_BCx
или
ChangeBCD_to_Bxx
Эти действия приведут к смене текущей папки на папку C:\MyUSB и запуску ChangeBCD_to_BCx.cmd (или ChangeBCD_to_Bxx.cmd),
который находится в папке C:\MYUSB.
При запуске ChangeBCD_to_BCx попросит ввести цифру от 0 до 9. Эта цифра будет соответствовать цифре в имени файла
BCx (где x - цифра от 0 до 9).
При запуске ChangeBCD_to_Bxx попросит ввести число от 00 до 99. Это число будет соответствовать числу в имени файла
Bxx (где xx - от 00 до 99).
Для изменения файла BC1 введите 1 (в случае файла ChangeBCD_to_BCx)
или
для изменения файла B01 введите 01 (в случае файла ChangeBCD_to_Bxx)
При этом файл C:\MYUSB\BOOT\BC1 (или C:\MYUSB\BOOT\B01 соответственно) будет изменен таким образом, что он будет
ссылаться на файл boot1.wim вместо boot.wim
Повторите эти действия для всех файлов BCx (или Bxx), которые лежат в папке C:\MYUSB\BOOT (Если Вы уже закрыли окно с командной строкой - повторите действия с начала пункта 5)
- Обязательно скопируйте файл boot.sdi из папки \BOOT одного из реаниматоров в C:\MYUSB\boot\boot.sdi
(если этот файл отсутствует, Вы получите множество сообщений об ошибках при запуске файлов boot.wim)
Патчим BCD с использованием BOOTICE
Для начала скопируйте файлы BCD из папок \BOOT каждого реаниматора в папку BOOT, находящуюся в корне будущего диска.
Дайте им названия в формате BCx или Bxx (где X - цифра от 0 до 9, хх - число от 00 до 99). Напоминаю, что названия
должны соответствовать названиям файлов BOOTMGR.
- Запускаете BOOTICE, и выбираете вкладку BCD Edit;
- Выбираете пункт "Other BCD file";
- Нажимаете на кнопку "..." и выбираете BCx или Bxx файл для редактирования;
- Нажимаете View / Edit и перед Вами появляется окно с настройками BCD;
- Проверяете конфигурацию:
- в меню загрузки (оно слева) должен быть только 1 пункт;
- в поле Boot disk (оно в правой части окна) должно стоять "BOOT";
- флажки "Detecthal" и "WINPE mode" должны быть ВКЛЮЧЕНЫ;
- Если все верно, переходим к следующему пункту.
- В поле "Device file" указан путь к файлу, который будет загружаться:
\sources\boot.wim
изменяем его на:
\sources\bootX.wim
или
\sources\bootXX.wim
(где X - цифра от 0 до 9, а XX - число от 00 до 99)
- нажимаете "Save current system".
- должно появиться сообщение "The settings of current system is saved successfully!"
- Повторите эти действия (с 1 по 8) для всех файлов BCx (или Bxx), которые лежат в папке C:\MYUSB\BOOT
- Обязательно скопируйте файл boot.sdi из папки \BOOT одного из реаниматоров в C:\MYUSB\boot\boot.sdi
(если этот файл отсутствует, Вы получите множество сообщений об ошибках при запуске файлов boot.wim)
- Теперь осталось только переименовать файлы \SOURCES\BOOT.WIM для КАЖДОГО реаниматора в файлы \SOURCES\BOOTXX.WIM и положить
их в папку SOURCES, которая находится в корне будущего диска (например, в C:\MYUSB).
- Ну а теперь все стандартно: нужно в файлах menu.lst (в случае Grub4DOS) или в bootcat.ini (в случае BCDW) добавить ссылки на запуск файлов
bootmgrX (или bootmgrXX соответственно).
|