Как установить и запустить консоль
восстановления Windows (ту, что вызывается с загрузочного дистрибутива
windows по кнопке "R") на USB-флэшку или cd-rom и запутить ее из
grub4dos:
Установка на
CD/DVD:
- Проинсталлировать консоль на локальный компьютер запуском с
дистрибутива windows:
X:\i386\Winnt32.exe с параметром /cmdcons (возможна установка
английской консоли на
русскую винду и другой версии - консоли с дистриба XP SP3 на локальную
систему XP SP2
при этом сетап ругнется на несоответствие языка..соглашаемся и идем
дальше).
- На диске откуда грузится Windows появится директория c:\cmdcons
(около 8 Мб), а также
добавиться пункт в boot.ini:
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home
Edition RU" /noexecute=optin /fastdetect
C:\CMDCONS\BOOTSECT.DAT="Microsoft Windows Recovery Console" /cmdcons
В этой директории находится
cmdcons_WinXP_SP3_Eng.zip - он содержит
оригинальную копию C:\CMDCONS заархивированную сразу после установки
консоли.
Копируем содержимое диретории C:\CMDCONS\* в корень директории
загрузочного диска C:\BootCDRoot\XPRC\*. Обязательно назовите
директорию, куда копируете четырьмя заглавными латинскими буквами, не
больше и не
меньше!
- Переименовываем ВСЕ! названия файлов в ЗАГЛАВНЫЕ буквы
C:\BootCDRoot\XPRC\*. Это необходимо потому, что файловая система
ISO9660/Joliet регистрозависима (с этим же возникают проблемы в
menu.lst Grub4Dos в используемых путях - на флэшке с
регистронезависимой FAT такой конфиг работать будет, а на загрузочном
диске нет).
Эту операцию легко выполнить в TotalCmd:
- Открываем директорию C:\BootCDRoot\XPRC
- Выбираем меню Команды-> Показать все файлы без каталогов
(Ctrl+B)
- Выбираем меню Файлы-> Пакетное переименование файлов
(Ctrl+M)
- Посредине открывшегося диалогового окна выбираем Регистр
-> ВСЕ ЗАГЛАВНЫЕ
- Жмем кнопку Выполнить.
Пункты
4
и
5
объясняют
как
поправить
пути файлов-меток MS Win CD
- Редактируем сценарий загрузки C:\BootCDRoot\XPRC\TXTSETUP.SIF
Заменяя:
cdtagfile = "\win51ip"
|
cdtagfile = "\XPRC\win51ip" |
cdtagfilei = "\win51ip"
|
cdtagfilei = "\XPRC\win51ip" |
cdtagfilem = "\win51mp"
|
cdtagfilem = "\XPRC\win51mp" |
spcdtagfilei = "\win51ip.sp3"
|
spcdtagfilei = "\XPRC\win51ip.sp3" |
cd2tagfilei = "\win51ip2" |
cd2tagfilei = "\XPRC\win51ip2" |
I386 на XPRC менять нет необходимости, хотя многие уверяют в обратном.
- Копируем файлы-метки (из
списка в пункте 4) из корня дистрибутивного диска Windows в
C:\BootCDRoot\XPRC\
WIN51IP.SP3, WIN51IP некоторых файлов может и не быть, их можно сделать
самому 0-го размера.
- Редактируем в HEX-редакторе файл C:\BootCDRoot\XPRC\SETUPLDR.BIN
заменяя I386 на XPRC. Именно поэтому мы использовали ровно 4 буквы.
Grub4Dos умеет
цепочно-грузить (chainload) загрузчики MS - ntldr, поэтому на данном
пункте можно закончить подготовку директорий и перейти к созданию
ISO-образа - пункт 7.
Пример пункта меню в конфиг файле menu.lst Grub4Dos:
title Recovery Console of Windows
NT/2K/XP/2003 from CD/DVD
find --set-root /CM_Boot.mrk
chainloader /XPRC/SETUPLDR.BIN
Для использования
isolinux/syslinux (эти загрузчики не поддерживают chainloading
ntldr) необходимо:
- Извлечь загрузочный образ оригинального загрузочного диска с
инсталляцией Windows (лучше из того, с которого установили
X:\i386\Winnt32.exe /cmdcons). И сохраним в файл C:\BootCDRoot\xprc.bin
(расширение важно!) получим файл размером 2048 байт.
- Редактируем в HEX-редакторе этот файл. Заменяем I386 на XPRC.
- Добавляем пункт меню в isolinux/syslinux
\boot\isolinux\isolinux.cfg:
label 3
kernel
/xprc.bin
- Генерируем ISO-образ загрузочного диска с помощью утилиты
mkisofs.exe:
mkisofs -iso-level 4 -volid
"CMMultiBoot" -b boot/isolinux/isolinux.bin
-c boot/isolinux/boot.cat -boot-info-table -no-emul-boot
-boot-load-size 4 -o CM_MultiBoot.iso C:\BootCDRoot
В BartPE добавлен ключь -force-uppercase - он переводит все! имена
файлов в верхний регистр при генерации *.iso, так что можно пропустить
пункт 3, но Вам могут понадобиться файлы в нижнем регистре (допустим в
батниках HirenCD) поэтому использовать его не рекомендуется.
Сравнить и увидеть изменения в оригинальных и измененных файлах
загрузчика (setupldr.bin) и сценария загрузки (txtsetup.sif) можно в
архивах
Orig_cmdcons_XPSP3Eng.zip
и
DVD_cmdcons_XPSP3Eng.zip
Используйте в названиях директорий и при правке загрузчиков ЗАГЛАВНЫЕ
буквы из-за регистрозависимости ISO9660.
Установка на USB
Flash drive:
Для
установки
консоли
на мультизагрузочную флэшку используются
вышеописанные пункты, кроме пунктов 3 и 7, заменяя путь назначения с
C:\BootCDRoot на X:, где X - буква флэш диска.
Кроме того возможна установка (только на флэшку) по второму типу см.
"Как это работает", которая описана ниже:
- Копируем директорию с консолью c:\cmdcons\* на флэшку
X:\xprcons\* (Используем в названии точно 7 латинских букв!)
- Копируем ntdetect.com в корень флэшки. Без Bootsect.bin грузится,
но копируем его тоже на всякий случай.
- Редактируем в HEX-редакторе загрузчик setupldr.bin заменяя слова
cmdcons на xprcons (те самые 7 букв из пункта 1) в двух местах:
SetupSourceDevice...\xprcons
и \minint\system32\...\XPRCONS\
- Файлы-метки - WIN51IP копировать в X:\xprcons\ и делать изменения
в TXTSETUP.SIF (см. выше пункт 4) не обязательно.
- Скопировать в X:\xprcons файл winnt.sif (который советуют
удалять) - это сценарий установки, позволяет настроить установку чтобы
она проходила без запросов ключа, места установки и т.д. В этом файле
находится метка загрузчику CmdCons="1",
без
которой загрузчик будет пытаться найти диск с установочными файлами
(редактирование местоположения файлов-меток не поможет. Можно оставить
в этом файле только одну строчку CmdCons="1".
- Grub4Dos умеет
цепочно-грузить (chainload) загрузчики MS - ntldr. Загружаем загрузчик
MS ntldr из Grub4Dos с передачей аргумента /cmdcons точно так же, как
это делается после установки консоли из boot.ini:
Пример пункта меню в конфиг-файле menu.lst Grub4Dos:
title Recovery Console of Windows
NT/2K/XP/2003 from USB
find --set-root /CM_Boot.mrk
chainloader /xprcons/setupldr.bin
# write string "cmdcons" to memory 0000:7C03 in 2 steps:
# step 1. Write 4 chars "cmdc" at 0000:7C03
write 0x7C03 0x63646D63
# step 2. Write 3 chars "ons" and an ending null at 0000:7C07
write 0x7C07 0x00736E6F
Сравнить
и увидеть изменения в оригинальных и измененных файлах загрузчика
(setupldr.bin) и сценария загрузки (txtsetup.sif) можно в архивах
Orig_cmdcons_XPSP3Eng.zip
и
Usb_cmdcons_XPSP3Eng.zip
Использовать в названиях директорий и при правке загрузчиков ЗАГЛАВНЫЕ
буквы необязательно из-за регистронезависимости FAT16/32/NTFS, которая
будет на флэшке.
Как это работает. Дополнительная информация.
Есть два типа загрузки консоли:
- Загрузка с аргументом /cmdcons загрузчиком MS ntldr (пункт меню
после
установки консоли на локальный ЖД) или Grub4Dos. Ограничение данного
метода в том, что
этот способ не работает с загрузочным CD! - видимо загрузчик не находит
директории c:\cmdcons так, как не эмулируется первый ЖД??
Этот метод используется для USB-Flash, для CD/DVD не подходит!
- Загрузка установки дистрибутива (точно как загружается оф.
дистрибутив Windows CD) из измененной директории I386 и вызов консоли
нажатием в диалоге "R".
Удаление файла winnt.sif не исключает необходимости нажатия "R", хотя
утверждают обратное. Скорее всего запуск с аргументом /cmdcons сообщает
загрузчику пропустить диалог запроса юзера, но как уже говорилось этот
вариант не работает с CD.
Этот метод используется для CD/DVD, для USB-Flash не подходит!
Так же второй тип
используется для изготовления мультизагрузочного диска с несколькими
установочными дистрибутивами Windows на одном DVD, описано это на
русском в
ixbt_MuliBCD_Win_bootscriptor.html
Как происходит загрузка по пунктам с
CD:
При загрузке с CD загрузчик не может использовать директории \cmdcons и
\minint (в случае с WinPE), а используется директория I386 из которой
грузится официальный загрузочный дистрибутивный диск MS Windows (в
случае загрузки с USB флэшки все наоборот). Поэтому алгоритм загрузки
следующий:
0. Из
isolinux загружается
модфицированный bootsect.bin (см. пункт 6),
который в свою очередь находит файл загрузчик в ФС ISO9660 (поэтому с
USB-flash FAT и syslinux этот вариант не работает, да и потому что не
используются директории с 4мя буквами I386) передает загрузку ntldr -
/XPRC/setupldr.bin. либо
Из
Grub4Dos сразу
chainload-ится
/XPRC/setupldr.bin
1. Далее тоже модифицированный /XPRC/setupldr.bin (правка I386 на XPRC)
начинает работать с этой директорией - подгружает файл-сценария
txtsetup.sif
2. Модифицированный txtsetup.sif говорит загрузчику где находятся
файлы-метки дистрибутива (которые могут быть где угодно, но для
исключения конфликтов разных версий windows на мультизагрузочном диске
копируем метки не в корень, а в свои директории XPRC...2KRC).
3. Далее загружается интерфейс установки Windows, в котором можно
нажать "R" и войти в консоль.
Исходя из вышесказанного понятно, что можно делать загрузочный диск с
несколькими консолями восстановления от разных версий Windows, изменяя
названия директорий и правя соответственно директории в загрузчике:
XPRC 2KRC
Как происходит загрузка по пунктам с
USB-Flash:
0. Из Grub4Dos сразу chainload-ится X:\xprcons\setupldr.bin. Syslinux
не умеет chainload-ить ntldr.
1. Модифицированный X:\xprcons\setupldr.bin (правка cmdcons на xprcons)
начинает работать с этой директорией - подгружает файл-сценария
txtsetup.sif
2. Далее загружается сразу консоль восстановления (в отличие от
варианта с CD, когда
загружается
интерфейс установки Windows, в котором можно
нажать "R" и войти в консоль) так же, как это происходит с
локального ЖД после установки консоли.
Исходя из вышесказанного понятно, что можно делать загрузочный диск с
несколькими консолями восстановления от разных версий Windows, изменяя
названия директорий и правя соответственно директории в загрузчике:
xprcons xprcons
? Кроме того видимо есть возможность загружать интерфейс
установки дистрибутива Windows с Usb-flash из измененной директории
I386. Найти в инете информацию - установка Windows с флэшки. ??
Дополнительная информация по теме:
Будьте внимательны с регистрами букв путей и файлов в конфигурационных
файлах isolinux/syslinux и Grub4Dos при создании CD. Следите чтобы
регистры в конфигах и реальных путей точно! совпадали, а то загрузчик
не найдет необходимы файлов так как ISO9660 регистрозависма
Рекомендуется прочитать для понимания процедуры мультизагрузки
следующие материалы!:
Описание
команд и самой консоли восстановления MSDN
Изготовление
мультизагрузочного
диска
с
несколькими
установочными
дистрибутивами Windows на одном DVD, описано это на
русском в ixbt_MuliBCD_Win_bootscriptor.html
Как
самостоятельно
сделать
Bootable
CD-ROM
ixbt (подробно! рассмотрены типы
эмуляции CD как FDD HDD elTorito)