Изначально поводом к написанию данной статьи послужил тот факт, что диск, созданный с помощью файла ответов winnt.sif, не содержит функции восстановления системы (Repair) с помощью установочного диска. Конкретнее, как выяснил vserd, эта функция пропадает при наличии в файле ответов секции [Unattended] (даже пустой).
Увеличить
Единственным способом заполучить функцию восстановления системы является создание мультизагрузочного диска с выбором загрузки в автоматическую или обычную установку. Так или иначе, обычная установка тоже может понадобиться, а если готовить диск с различными операционными системами или наборами устанавливаемых программ, то без мультизагрузочного диска не обойтись. Не удивительно, что тема мультизагрузки оказалась весьма популярна в форуме Автоматической Установки. Это повлекло появление других статей о мультизагрузке, а данная статья перетерпела уже две редакции.
Для работы нам понадобятся HEX редактор (я использовал бесплатный xvi32) и менеджер загрузки Bootable CD Wizard.
В статье излагается способ маркерных файлов-пустышек, о котором рассказал участник конференции Oszone EgOrus.
О процессе загрузки
При создании загрузочного диска (образа) формируется загрузочный сектор, который обращается к файлу SETUPLDR.BIN в директории i386. В свою очередь, SETUPLDR.BIN содержит инструкции об обращении к файлу winnt.sif, и если такой файл существует в i386, то установка происходит автоматически с учетом ответов, обозначенных в winnt.sif. Вкратце, идея мультизагрузки с выбором автоматической и обычной установки состоит в том, чтобы создать два файла SETUPLD*.BIN, один из которых будет обращаться к файлу ответов, а другой – нет. Затем с помощью менеджера загрузки мы пропишем пути к каждому из файлов.
Я рекомендую вам прочитать статью Создание мультизагрузочного CD на основе Bootable CD Wizard, т.к. именно этот менеджер загрузки мы будем использовать для выбора нужного нам загрузчика. В указанной статье вы найдете ссылки на все необходимое для работы. А раз уж мы избрали BCDW, то я считаю совершенно необходимым вас предупредить:
| Версия BCDW 1.50z несовместима с SETUPLDR.BIN от SP2. Новая версия BCDW 2.0a1 нормально загружает SETUPLDR.BIN от SP2, поэтому рекомендуется использовать именно ее. Если же вы хотите использовать 1.50z для загрузки Windows XP SP2, то вам придется забросить в i386 SETUPLDR.BIN от SP1 и согласиться на перезапись. |
Изменение SETUPLDR.BIN
В HEX редакторе открываем файл и заменяем все winnt.sif на winn1.sif, а затем сохраняем файл как SETUPLD1.BIN в i386
Теперь переименовываем файл winnt.sif, находящийся в i386, в winn1.sif. Таким образом, SETUPLDR.BIN не найдя файла winnt.sif запустит обычную установку, а файл SETUPLD1.BIN обратится к winn1.sif для получения ответов для автоматической установки. О том, как осуществить выбор нужного загрузчика вы узнаете чуть позже, а пока поговорим о планировании мультизагрузки.
Отступление о различных вариантах установки программ
Если вы хотите создать диск с различными вариантами установки программного обеспечения (ПО), то нужно это спланировать заранее. У меня на сайте описаны несколько методов установки ПО: Выбор устанавливаемых приложений, GuiRunOnce и RunOnceEx. Давайте рассмотрим их подробнее применительно к мультизагрузке.
Выбор устанавливаемых приложений
Если выбор приложений, единственное что вам нужно, то наверное не стоит ради этого затевать мультизагрузку. Подробнее о выборе приложений при установке рассказано в соответствующей статье.
GuiRunOnce
Учитывая, что у нас уже подготовлены разные файлы ответов winn*.sif, логично использовать данный метод. Все что требуется, это включить в каждый файл ответов секцию GuiRunOnce и указать в ней путь к пакетному файлу с командами на установку ПО. Иными словами в winn1.sif у вас должно быть
[GuiRunOnce]
DetachedProgram=".\system32\cmd.exe"
Arguments="/Q /C %systemdrive%\Install\batch_file1.cmd"
и соответственно в winn2.sif должно быть
[GuiRunOnce]
DetachedProgram=".\system32\cmd.exe"
Arguments="/Q /C %systemdrive%\Install\batch_file2.cmd"
В этом примере предполагается, что вы поместили пакетные файлы в директорию $OEM$\$1\Install, и они были успешно скопированы на жесткий диск во время текстового этапа установки Windows.
RunOnceEx
Этот метод подразумевает наличие команды на запуск файла RunOnceCmd.cmd в файле cmdlines.txt. Однако, cmdlines.txt, находящийся в корне $OEM$, будет прочитан при любом из вариантов установки независимо от ваших файлов ответов и все перечисленные в нем команды будут выполнены. Следовательно создать различные варианты установки ПО не получится.
Аналогичная ситуация возникает с твиками реестра или MUI, если они устанавливаются из cmdlines.txt на Т-12. Что делать, если нужно применять разные твики или не ставить MUI для каких-то конфигураций? Есть обходной путь, который описан ниже.
Маркерные файлы-пустышки
Если вы используете несколько файлов ответов с OEM установкой (т.е. предположим вам нужны разные наборы настроек и софта), то вам нужны и разные папки $OEM$, но, к сожалению, при установке с CD (DVD), OEM файлы могут находиться только в корне диска в папке $OEM$ (переменная OemFilesPath= в winnt.sif почему-то игнорируется, видимо используется только при локальных и сетевых установках).
Для того чтобы обойти это ограничение я решил использовать батник, который по маркерному файлу определяет какой из файлов ответов использовался и в соответствии с этим ищет инфу в той или другой папке. Маркерный файл - это файл пустышка, который распаковывается из SFX архива за 39 минут до окончания установки.
Для этого есть специальный ключ:
[GuiUnattended]
DetachedProgram = "%SystemDrive%\Temp\dummy1.exe"
Из примера видно, что файл распаковывается с жесткого диска, т.к. все архивы попадают туда во время текстового этапа установки вместе со всеми другими OEM файлами (в моем случае из папки $OEM$\$1\Temp). В это время копируются все архивы, содержащие в себе по одному маркерному файлу (dummy1.exe, dummy2.exe и т.д.), а на этапе Т-39 распаковывается только нужный, указанный в файле ответов. Чтобы файл распаковался в нужную директорию (Temp), необходимо задать соответствующие настройки SFX архиву. Для WinRAR это можно сделать во время создания архива через закладку Дополнительно) или прямо в закладке Комментарий:
;The comment below contains SFX script commands
Path=%SystemDrive%\Temp
Silent=1
Overwrite=1
Таким образом, когда наступает время применения файлов настроек и установки программ, с помощью пакетного файла можно направить установку в нужную папку к нужным файлам. В моем случае используется bat-файл choice.bat, который запускается из cmdlines.txt
[COMMANDS]
"choice.bat"
и содержит следующие условия:
cmdow @ /HID
@echo off
if exist %systemdrive%\Temp\dummy1.fle goto START1
if exist %systemdrive%\Temp\dummy2.fle goto START2
....
goto END
:START1
REGEDIT /S Tweaks1.reg
.\RunOnce1.cmd
.\WinMUI\Muisetup.exe /i 0419 /d 0419 /l /f /r /s
goto END
:START2
REGEDIT /S Tweaks2.reg
.\RunOnce2.cmd
goto END
...
:END
dummy1.fle - это и есть маркерный файл, распакованный из dummy1.exe. Можно использовать и копирование вместо распаковки, но при копировании появляется консольное окно, а я использовал WinRAR SFX архив, поэтому распаковка происходит незаметно. Впрочем, консольные окна мы тоже умеем скрывать, но речь сейчас не об этом.
Директория $ОЕМ$ в нашем случае выглядит так:
В данном примере при первом варианте установки (START1) будет использован RunOnce1.cmd для инсталляции ПО, импортированы твики реестра из Tweaks1.reg, а также установлен MUI. При втором варианте установки (START2) соответственно используются RunOnce2.cmd и Tweaks2.reg, а MUI не устанавливается вовсе. Как вы понимаете, это всего лишь пример, приведенный для наглядности. Расположение файлов и команды измените на ваше усмотрение.
Теперь, когда структура диска готова, нужно подготовить мультизагрузку при помощи Bootable CD Wizard)
Создание мультизагрузочного диска с помощью Bootable CD Wizard (BCDW)
Если вы используете другой загрузочный менеджер, то приведенные ниже инструкции вам мало чем помогут. Надеюсь, что поняв идею, вы разберетесь как реализовать ее в другой программе. Подробнее о работе с BCDW вы узнаете из уже упоминавшейся выше статьи, а здесь мы сосредоточимся только на мультизагрузке различных вариантов Windows XP. Нас в первую очередь интересует файл bcdw.ini, в который мы и должны прописать пути к нашим загрузочным файлам. Распаковав архив с программой, вы увидите, что там уже такой файл существует. Вам надо лишь изменить его соответствующим образом или создать новый. Синтаксис будет примерно такой
\i386\setupldr.bin ; Windows XP Pro Regular; ^ Regular installation of Windows XP Professional.
\i386\setupld1.bin ; Windows XP Pro Unattended; ^ Unattended installation of Windows XP Professional.
В каждой строке вы видите три параметра, разделенные точкой с запятой. Первый указывает путь к загрузчику, второй отобразит текст в меню выбора загрузок, а третий (необязателен) является описанием типа загрузки. Полный текст своего bcdw.ini я привожу ниже (BCDW 2.0a1).
[InitOptions]
; *** Настройки языка по умолчанию
Font = \BCDW\FONTS\RUSSIAN.FNT ; Русский шрифт 8x16 (25 строк на экране)
CharSet = \BCDW\CHARSETS\CP1251R.CPF ; Русская кодировка Windows
;PasswordMD5Hash = 5ebe2294ecd0e0f08eab7690d2a6ee69 ; MD5 Hash of Main Password (for 'secret' word in this example)
;Logo = bcdw\logo.gif
;RootMenu = \BootCat.ini
[MenuItems]
: ;
C:\ ; Boot from drive C: ; ^ Boots the computer from the C drive
A:\ ; Boot from drive A: ; ^ Boots the computer from the floppy drive, if one exists.
: Reboot ; Reboot ; ^ Reboots the computer
: ;
: ; >>> Windows XP Installations
\i386\setupld1.bin ; Windows XP Pro Unattended (Personal); ^ Unattended installation of Windows XP Professional. ^ All my personal tweaks and settings applied. ^ My CD-KEY is used.
\i386\setupld2.bin ; Windows XP Pro Unattended (Tweaked); ^ Unattended installation of Windows XP Professional. ^ All my personal tweaks and settings applied, including Russian locale. ^ Will prompt for the CD-KEY.
\i386\setupld3.bin ; Windows XP Pro Unattended (Defaults); ^ Unattended installation of Windows XP Professional. ^ No tweaks apllied. Enlgish locale by default, ^ regional settings for Indianapolis.
\i386\setupldr.bin ; Windows XP Pro Regular; ^ Regular installation of Windows XP Professional. ^ Service Pack 2 and the important updates are integrated into the source. ^ Some system files replaced for better system customization.
: ;
: ; >>> Live CDs
\1XPE\setupldr.bin ; XPE ; ^ Windows Live CD with Network support, antivirus and antispyware programs ^ and numerous other tools
: ;
: ; >>> Utilities
\img\acr_ti10.iso ; Acronis True Image 10 ; ^ Create and restore partition images, clone hard drives.
\img\adds_10.iso ; Acronis Disk Director Suite 10; ^ Automatically or manually resize, copy, and move partitions without ^ losing data.
\img\PMAGIC8.IMA ; Partition Magic 8; ^ Another tool for working with partitions
\img\win98.ima ; Windows 98 SE boot floppy ; ^ Includes new fdisk with large HDD support
\img\memtest.iso ; Memtest ; ^ Stand alone memory test for x86 architecture computers.
[MenuOptions]
; *** Настройки фона под окнами
BGColors = 80, 80, 80, 80 ; Цвета фона: бордюр, фон, верхняя строка, нижняя строка
BGSymbol = 32 ; Десятичный код символа-заполнителя фона: 32, 176, 177, 178
;TopText = ;[ Multiboot XP DVD ] by Vadikan 2006 ; Текст верхней строки
BottomText = ; Текст нижней строки
; *** Настройки окна "Вариант загрузки"
MenuPosition = 01, 04, 78, 13 ; Расположение окна: X, Y, ширина, высота
MenuColors = f2, 2f, 9f, f9, cf, fd, f9 ; Цвета окна: рамка, заголовок окна при получении фокуса, заголовок окна при потере фокуса, строки, текущая строка при получении фокуса, текущая строка при потере фокуса, недоступные строки
MenuBorderStyle = 1 ; Стиль рамки окна: 0, 1, 2, 3, 4, 5
MenuShadowStyle = 0 ; Стиль тени под окном: 0, 1, 2
MenuTitle = Boot Options ; Текст заголовка окна
MenuDefault = 0 ; Индекс пункта меню по умолчанию
menutimerlabel = Time remaining:
menutimer = 60
; *** Настройки окна "О варианте загрузки" (если окно не нужно - закомментируйте строки Help*)
HelpPosition = 01, 18, 78, 06 ; Расположение окна: X, Y, ширина, высота
HelpColors = e1 9f, 1f, e0, 0f, e0 ; Цвета окна: рамка, заголовок окна при получении фокуса, заголовок окна при потере фокуса, строки, текущая строка при получении фокуса, текущая строка при потере фокуса
HelpBorderStyle = 1 ; Стиль рамки окна: 0, 1, 2, 3, 4, 5
HelpShadowStyle = 0 ; Стиль тени под окном: 0, 1, 2
HelpTabSkip = 1 ; Пропуск окна при переключении по Tab: 0 - выкл., 1 - вкл.
HelpTitle = Description ; Заголовок окна
; *** Настройки окна "О компакт-диске" (если окно не нужно - закомментируйте строки About*)
AboutPosition = 01, 01, 78, 03 ; Расположение окна: X, Y, ширина, высота
AboutColors = e1, 2f, 1f, e0, 0f, e0 ; Цвета окна: рамка, заголовок окна при получении фокуса, заголовок окна при потере фокуса, строки, текущая строка при получении фокуса, текущая строка при потере фокуса
AboutBorderStyle = 1 ; Стиль рамки окна: 0, 1, 2, 3, 4, 5
AboutShadowStyle = 0 ; Стиль тени под окном: 0, 1, 2
AboutTabSkip = 1 ; Пропуск окна при переключении по Tab: 0 - выкл., 1 - вкл.
AboutTitle = Multiboot XP DVD: Boot option selection ; Заголовок окна
AboutText = Use UP and DOWN arrows to select the boot option ; Содержимое окна
~
; *** Настроки окна "Бегущая строка" (если окно не нужно - закомментируйте строки Scroll*)
ScrollPosition = 02, 24, 76, 02 ; Расположение окна: X, Y, ширина, высота
ScrollColors = 30, 30, 30, 30, 0f, 1e ; Цвета окна: рамка, заголовок окна при получении фокуса, заголовок окна при потере фокуса, строки, текущая строка при получении фокуса, текущая строка при потере фокуса
ScrollBorderStyle = 0 ; Стиль рамки окна: 0, 1, 2, 3, 4, 5
ScrollShadowStyle = 0 ; Стиль тени под окном: 0, 1, 2
ScrollTabSkip = 1 ; Пропуск окна при переключении по Tab: 0 - выкл., 1 - вкл.
ScrollMode = 0 ; Режим окна: 0 - бегущая строка, 1 - окно с текстом
ScrollTitle = ; Заголовок окна
ScrollText = ~ ; Содержимое окна
***Info: Multiboot XP DVD. Vadikan. 2006. unattended.oszone.net***
Также, вы можете посмотреть скриншот загрузочного меню, которое получается при использовании такого bcdw.ini. Мой файл содержит и другие загрузочные опции, чтобы вам не скучно было смотреть на картинку :)
Увеличить
Настройку внешнего вида оболочки я оставляю на ваше усмотрение. Для предварительного просмотра можно запустить файл initest.bat. Когда вы сочтете, что ваша оболочка достойна номинации на конкурсе красоты загрузочных дисков, можете переходить к следующему шагу.
Запись мультизагрузочного диска
Существует масса способов для записи мультизагрузочного диска> Я излагаю свой, нисколько не претендуя на уникальность. Он основан на использовании программы CDImage и нравится мне, в первую очередь, простотой. Подробно метод расписан в уже знакомой вам статье Создание мультизагрузочного CD на основе BCDW.
Если вы внимательно следовали данному руководству, то в итоге у вас должен получиться мультизагрузочный диск с возможностью выбора автоматической или обычной установки Windows XP. Другие варианты загрузки Windows XP можно легко добавить аналогичным образом.