Windows Recovery Console на загрузочной USB-Flash или CD/DVD
[by  microsaint{at}gmail.com  microsaint.narod.ru]

Как установить и запустить консоль восстановления Windows (ту, что вызывается с загрузочного дистрибутива windows по кнопке "R") на USB-флэшку или cd-rom и запутить ее из grub4dos:

Установка на CD/DVD:
  1. Проинсталлировать консоль на локальный компьютер запуском с дистрибутива windows:
    X:\i386\Winnt32.exe с параметром /cmdcons (возможна установка английской консоли на
    русскую винду и другой версии - консоли с дистриба XP SP3 на локальную систему XP SP2
    при этом сетап ругнется на несоответствие языка..соглашаемся и идем дальше).
  2. На диске откуда грузится 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\*. Обязательно назовите директорию, куда копируете четырьмя заглавными латинскими буквами, не больше и не меньше!
  3. Переименовываем ВСЕ! названия файлов в ЗАГЛАВНЫЕ буквы C:\BootCDRoot\XPRC\*. Это необходимо потому, что файловая система ISO9660/Joliet регистрозависима (с этим же возникают проблемы в menu.lst Grub4Dos в используемых путях - на флэшке с регистронезависимой FAT такой конфиг работать будет, а на загрузочном диске нет).
  4. Эту операцию легко выполнить в TotalCmd:
    1. Открываем директорию C:\BootCDRoot\XPRC
    2. Выбираем меню Команды-> Показать все файлы без каталогов (Ctrl+B)
    3. Выбираем меню Файлы-> Пакетное переименование файлов (Ctrl+M)
    4. Посредине открывшегося диалогового окна выбираем Регистр -> ВСЕ ЗАГЛАВНЫЕ
    5. Жмем кнопку Выполнить.
      Пункты 4 и 5 объясняют как поправить пути файлов-меток MS Win CD
  5. Редактируем сценарий загрузки 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 менять нет необходимости, хотя многие уверяют в обратном.
  6. Копируем файлы-метки (из списка в пункте 4) из корня дистрибутивного диска Windows в C:\BootCDRoot\XPRC\
    WIN51IP.SP3, WIN51IP некоторых файлов может и не быть, их можно сделать самому 0-го размера.
  7. Редактируем в 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) необходимо:
    1. Извлечь загрузочный образ оригинального загрузочного диска с инсталляцией Windows (лучше из того, с которого установили X:\i386\Winnt32.exe /cmdcons). И сохраним в файл C:\BootCDRoot\xprc.bin (расширение важно!) получим файл размером 2048 байт.
    2. Редактируем в HEX-редакторе этот файл. Заменяем I386 на XPRC.
    3. Добавляем пункт меню в isolinux/syslinux \boot\isolinux\isolinux.cfg:
      label 3
          kernel /xprc.bin

  8. Генерируем 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 - буква флэш диска.
Кроме того возможна установка (только на флэшку) по второму типу см. "Как это работает", которая описана ниже:

  1. Копируем директорию с консолью c:\cmdcons\* на флэшку X:\xprcons\*  (Используем в названии точно 7 латинских букв!)
  2. Копируем ntdetect.com в корень флэшки. Без Bootsect.bin грузится, но копируем его тоже на всякий случай.
  3. Редактируем в HEX-редакторе загрузчик setupldr.bin заменяя слова cmdcons на xprcons (те  самые 7 букв из пункта 1) в двух местах:
      SetupSourceDevice...\xprcons       и      \minint\system32\...\XPRCONS\
  4. Файлы-метки - WIN51IP копировать в X:\xprcons\ и делать изменения в TXTSETUP.SIF (см. выше пункт 4) не обязательно.
  5. Скопировать в X:\xprcons файл winnt.sif (который советуют удалять) - это сценарий установки, позволяет настроить установку чтобы она проходила без запросов ключа, места установки и т.д. В этом файле находится метка загрузчику CmdCons="1", без которой загрузчик будет пытаться найти диск с установочными файлами (редактирование местоположения файлов-меток не поможет. Можно оставить в этом файле только одну строчку CmdCons="1".
  6. 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, которая будет на флэшке.

Как это работает. Дополнительная информация.

Есть два типа загрузки консоли:
  1. Загрузка с аргументом /cmdcons загрузчиком MS ntldr (пункт меню после установки консоли на локальный ЖД) или Grub4Dos. Ограничение данного метода в том, что этот способ не работает с загрузочным CD! - видимо загрузчик не находит директории c:\cmdcons так, как не эмулируется первый ЖД??
    Этот метод используется для USB-Flash, для CD/DVD не подходит!
  2. Загрузка установки дистрибутива (точно как загружается оф. дистрибутив 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)


Сайт создан в системе uCoz