Пройдемся еще немножко по теме установки ОС Windows. На этот раз, речь пойдет о использовании стандартного установщика для организации мультиустановки. И напоследок рассмотрим ручную установку из *.wim или *.esd архива.
Содержание
- Как Происходит Установка ОС Windows
- Стандартный Установщик Windows
- Мультиустановка с Помощью Установщика Windows
- Уменьшение Размера WIM-архива
- Ручная Установка
- Создание Разделов
- Diskpart
- MBR
- GPT
- Diskpart
- Извлечение Файлов
- Dism
- Установка Загрузчика
- BIOS
- UEFI
- Тестовый Запуск
- Создание Разделов
- Итог
Как Происходит Установка ОС Windows
Разберем процесс установки детально. Сначала происходит подготовка установочного диска. Под диском я подразумеваю любой накопитель, с которого возможна установка Windows, будь то флешка, CD-диск и т.д. Выглядит данный процесс следующим образом.
Скачивается ISO-образ, с необходимой редакцией ОС. С помощью данного образа подготавливается установочная флешка, или установочный CD-диск. Либо скачивается официальная программа от Microsoft, для создания установочного диска. И уже с ее помощью происходит подготовка установочного диска.
Следующий этап, загрузка с подготовленного установочного диска. На этом этапе происходит запуск среды предустановки (WinPE), и выполнение установочной программы Windows.
Установочная программа, в свою очередь, выполняет следующие действия. Выбор диска, на который будет происходить установка. Создание разделов. Копирование файлов ОС Windows на созданный или указанный раздел. Установка загрузчика.
Работа с установочным диском на этом завершается. Поэтому, формально сам процесс установки на этом завершается. Все последующее, это просто инициализация скопированной копии ОС Windows.
Стандартный Установщик Windows
Представлен исполняемым файлом \sources\setup.exe установочного диска Windows.
И ссылающийся на него файл \setup.exe в корне диска.
Стандартный установщик, так же присутствует в образе среды предустановки boot.wim. Пути расположения идентичны.
\sources\setup.exe
\setup.exe
Как говорилось ранее, задача у данной программы выполнить установку ОС Windows. Теперь немного фактов о стандартном установщике Windows.
Windows-установщик является обычной программой. То есть при желании, его можно сохранить как отдельную программу вне установочного диска, например на флешке, и запускать по мере необходимости. Все файлы стандартного установщика расположены в папке \sources.
Файл \setup.exe в корне установочного диска, или среды предустановки, на самом деле не является самостоятельным установщиком. Все что он делает, это запускает файл \sources\setup.exe.
Для Windows-установщика не важна разрядность устанавливаемой ОС. К примеру, 32-битный установщик, без проблем выполнит установку 64-битной версии ОС Windows из указанного *.wim/*.esd архива.
Установочный *.wim/*.esd архив, не обязательно должен находиться в папке \sources для выполнения установки. Установщику можно указывать путь до архива, который он в последствии будет извлекать.
Установщик Windows расположенный в boot.wim образе содержит в себе функционал восстановления системы. Исполняемый файл, запускающий утилиту восстановления системы, расположен по пути \sources\recovery\RecEnv.exe.
Мультиустановка с Помощью Установщика Windows
Теперь, когда нам известно о возможностях стандартного установщика, попробуем организовать с его помощью установку различных версий ОС Windows. Для теста, я взял четыре установочных *.wim/*.esd (располагаются в папке \sources установочного ISO-образа, и обычно имеют имя install.wim или install.esd) архива операционных систем
Windows 7 64-bit
,
Windows 8.1 64-bit
,
Windows 10 64-bit
и
Windows 10 32-bit
.
Установочные файлы были размещены в директории WinSetup\WinImage. Пути не обязательно должны быть такими же, меняйте их по своему усмотрению, просто учитывайте ваши изменения с дальнейшим описанием.
Скопируем стандартный установщик Windows с boot.wim образа, 32-x битной версии установочного диска, в папку WinSetup. Весь установщик, с необходимыми ему файлами, расположен в папке \sources, в корне самого объемного по размеру индекса, файла boot.wim.
Почему копировать папку sources лучше из файла boot.wim, а не из корня установочного ISO-образа? Ответ банален — из-за размера. Папка sources из файла образа boot.wim имеет вдвое меньший объем, чем аналогичная в корне установочного диска. Учитывая, что обе версии одинаково справляются со своей задачей, выбор пал на меньшую по размерам.
Перейдем в скопированную папку sources, и запустим установщик setup.exe.
В результате, получаем ошибку о том, что системе Windows не удалось найти файл boot.wim, очень необходимый, по мнению установщика.
«Windows не может найти требуемый файл установки [boot.wim]. Убедитесь, что источник установки действителен и запустите установку заново. Код ошибки: 0x80070002»
Дело в том, что установщик понимает, что он выполняется в полноценной версии Windows, а не в среде предустановки. И ожидает увидеть файлы boot.wim и install.wim (esd), в папке sources. Если он их не находит, то считает, что установка не может быть выполнена, так как установочный диск является не полноценным. К сведению, аналогичные действия в загруженной WinPE, не вызвали бы таких ошибок.
Придется дать установщику то, что он просит. Сама мысль о том, что папка sources будет увеличена в размере на на 350 МБ, приводит в ужас. Ведь немного ранее мы уже экономили на папке sources.
Попробуем обмануть установщик. Самое первое, что может прийти в голову, это создать пустой файл с именем boot.wim, и подложить в папку sources.
Но, установщик не так прост как кажется. Получаем ошибку — «Системе Windows не удается создать требуемую папку установки. Код ошибки: 0x8007000B«.
То есть, он не просто проверяет наличие файла boot.wim, но проверяет его содержимое на валидность. Тогда остается последний вариант. Скопировать корректный файл boot.wim с установочного диска, и опустошить его, то есть максимально уменьшить его размер.
Если нет желания возиться с командной строкой, то можете скачать уже максимально опустошенный мною файл boot.wim (2.44 KB). Информацию о том, как уменьшить размер файла boot.wim, и в принципе любого другого *.wim архива, можно прочесть в этом разделе.
После того, как у нас на руках есть уменьшенный в размере файл boot.wim, копируем его в папку sources.
Запускаем setup.exe и получаем сообщение — «Windows не удалось собрать данные для [OSImage], так как указанный файл образа [install.wim] не существует.».
Из текста сообщения понятно, что теперь все хорошо, не хватает лишь файла install.wim для осуществления установки.
На этом этапе никаких хитростей не понадобится. Ранее уже говорилось, что установщику можно указать с какого файла производить установку. Делается это с помощью запуска файла sources\setup.exe с параметром /installfrom:«путь_до_wim_или_esd_архива». Остальные параметры установщика можно посмотреть по адресу https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-setup-command-line-options.
Так как у нас четыре установочных архива, создадим рядом с папкой sources четыре *.cmd скрипта, для запуска установки каждого из них. Перечислим их с описанием их содержимого, и примером запуска:
Win7x64.cmd — Запуск установки Windows 7 64-bit.
@echo off
@pushd %~dp0
cd sources
setup.exe /installfrom:..\WinImage\Win7Ult64.esd
Win8x64.cmd — Запуск установки Windows 8 64-bit.
@echo off
@pushd %~dp0
cd sources
setup.exe /installfrom:..\WinImage\Win81Pro64.wim
Win10x64.cmd — Запуск установки Windows 10 64-bit.
@echo off
@pushd %~dp0
cd sources
setup.exe /installfrom:..\WinImage\Win10Pro64.esd
Win10x86.cmd — Запуск установки Windows 10 32-bit.
@echo off
@pushd %~dp0
cd sources
setup.exe /installfrom:..\WinImage\Win10Pro86.esd
Все работает! Последнее, что можно сделать, это создать либо единый *.cmd скрипт, либо приложение с графическим интерфейсом, с возможностью выбора устанавливаемой версии Windows.
Пример графического меню созданного с помощью AutoIt.
Исходный код следующий:
#NoTrayIcon
#RequireAdmin
#include <buttonconstants.au3>
#include <guiconstantsex.au3>
#include <staticconstants.au3>
#include <windowsconstants.au3>
$MainWin = GUICreate("Install Menu", 297, 322,- 1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU))
$b1 = GUICtrlCreateButton("Windows 7 64-bit", 8, 8, 281, 65)
$b2 = GUICtrlCreateButton("Windows 8.1 64-bit", 8, 80, 281, 65)
$b3 = GUICtrlCreateButton("Windows 10 64-bit", 8, 152, 281, 65)
$b4 = GUICtrlCreateButton("Windows 10 32-bit", 8, 224, 281, 65)
$link = GUICtrlCreateLabel("http://www.BootDev.ru/", 88, 296, 121, 17)
GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUISetIcon("icon.ico")
GUISetState(@SW_SHOW)
FileChangeDir(@ScriptDir)
Global $setup = "sources\setup.exe /installfrom:"
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $b1 ; Windows 7 64-bit
Run($setup & "WinImage\Win7Ult64.esd")
Case $b2 ; Windows 8.1 64-bit
Run($setup & "WinImage\Win81Pro64.wim")
Case $b3 ; Windows 10 64-bit
Run($setup & "WinImage\Win10Pro64.esd")
Case $b4 ; Windows 10 32-bit
Run($setup & "WinImage\Win10Pro86.esd")
Case $link
ShellExecute("http://www.bootdev.ru")
EndSwitch
WEnd
Скрипт скомпилирован в исполняемый файл WinSetup.exe. Располагаться он должен рядом с папкой sources.
Созданное меню более удобно для использования, и заменяет по функционалу все написанные ранее *.cmd скрипты. Особенно, данное удобство будет заметно при интеграцию его в среду предустановки, немного доработав поиск установочных архивов на поиск их на внешнем носителе. В общем, какой вариант запуска использовать, это дело конкретной потребности.
Уменьшение Размера WIM-архива
Единственный способ уменьшить размер wim-архива, это избавиться от ненужного содержимого в нем. Но здесь есть один подвох. При удалении данных, они физически не удаляются, а как бы перемещаются в раздел удаленных. Размер wim-файла при этом даже немного увеличивается. Разберем все более подробно на примере файла boot.wim. Текущая цель создать пустой wim-файл.
Создадим папку (это скорее для удобства), в моем случае это папка E:\WIM, и поместим в нее оригинальный файл boot.wim.
Размер его на данный момент составляет 336 MB. Запустим командную, строку от имени администратора, и перейдем в ней в каталог с нашим файлом boot.wim.
Посмотрим информацию о файле boot.wim, выполнив команду dism /get-wiminfo /wimfile:boot.wim.
Видим, что архив содержит две версии Windows — первая Microsoft Windows PE размером ~1395 MB (среда предустановки), вторая Microsoft Windows Setup размером ~1580 MB (среда предуставновки + установщик).
Через 7-Zip, boot.wim на данный момент выглядит так:
Удалим второй индекс, вместе со всем его содержимым. Выполним для этого команду dism /delete-image /imagefile:boot.wim /index:2.
Снова выведем информацию о boot.wim, и проверим содержимое через 7-Zip.
Командная строка показывает то что индекса 2 больше нет. Размер boot.wim при этом вырос на 1 MB. И только 7-Zip показывает, что удаленные данные, размером в ~100 MB, находятся в секции [DELETED].
Индекс 1 удалить невозможно (наша цель, напомню, уменьшить максимально файл boot.wim), потому что он обязательно должен присутствовать в wim-архиве. Поэтому остается только смонтировать 1-й индекс, и удалить файлы вручную с сохранением проделанных изменений.
Для монтирования нам потребуется какая-нибудь папка. Содержимое смонтированного архива, будет отображено в ней. Создадим папку с именем mnt рядом с файлом boot.wim.
Смонтируем первый индекс в папку mnt, выполнив команду dism /mount-image /imagefile:boot.wim /index:1 /mountdir:mnt.
В папке mnt появится содержимое архива boot.wim.
Открываем Far Manager от имени администратор, переходим в папку mnt и удаляем ее содержимое. Именно он позволяет полностью, без проблем, удалить все файлы.
Закрываем Far Manager. Закрываем все окна, в которых открыта папка mnt. Возвращаемся в командную строку, выполняем размонтирование файла boot.wim с сохранением проделанных изменений. Вводим для этого команду dism /unmount-image /mountdir:mnt /commit.
Снова проверим информацию о boot.wim.
Размер первого индекса 0. Сам архив увеличился еще на 1 MB.
Последнее что нужно сделать, это экспортировать первый индекс в новый архив. Данное действие позволит избавится от так называемого раздела [DELETED], который хранит в себе удаленные данные.
Выполняем команду dism /export-image /sourceimagefile:boot.wim /sourceindex:1 /destinationimagefile:new_boot.wim.
Появится новый архив new_boot.wim размером 2.44 KB. Операция уменьшения boot.wim архива на этом, успешно выполнена.
Ручная Установка
Все рассказанное до этого момента, предполагало наличие установщика. То есть программы, которая за вас выполнит разметку диска, копирование файлов и установку загрузчика. В этой главе, и ее подглавах, мы рассмотрим как выполнить установку с *.wim или *.esd архива вручную.
Сразу напрашивается вопрос — А зачем нужна установка вручную, ведь много программ которые могут автоматизировать данный процесс, WinNTSetup или тот же стандартный установщик? Данный вариант можно рассматривать как «аварийный». Например, у вас нет под рукой необходимого ПО, или используемый вами WinPE не содержит его. Или вы находитесь в ситуации когда нет времени, а установку уже надо делать. Я это все к тому, что знать о ручной установке все же будет полезно.
Все дальнейшие действия будут проводиться на виртуальном жестком диске VHD. Так же, будет производиться загрузка данного VHD в виртуальной машине VirtualBox, для проверки корректности работы, после проделанных действий.
Разметка Диска
Возможные таблицы разделов на данный для дисков, это MBR или GPT. С MBR-диска можно загружаться как в BIOS, так и в UEFI системах (legacy mode). С GPT-диска, только в UEFI. Рассмотрим создание обоих типов таблиц разделов.
Diskpart
Рассмотрим создание таблицы разделов с помощью консольной утилиты diskpart. Предназначена она для выполнения различных манипуляций с дисками и разделами. Присутствует в Windows с 2000-й версии.
Все дальнейшие действия в данной программе, будут проводиться для диска под номером 2 (виртуальный жесткий диск, о котором говорилось выше).
Узнать номер целевого диска можно командой list disk, а командой select disk X, где X номер диска, можно выбрать указанный диск для выполнения дальнейших манипуляций над ним.
MBR
Для диска в формате MBR потребуется 2 раздела. Первый системный, размером в 100 MB, на котором будут располагаться файлы загрузчика. И второй основной, для операционной системы. Хотя можно обойтись и одним разделом для всего.
Запускаем diskpart (Win+R, вводим diskpart и нажимаем ENTER) и выполняем следующую последовательность команд:
rem Выбираем целевой диск
select disk 2
rem Очищаем выбранный диск от таблицы разделов
clean
rem Создаем первый раздел размером в 100 MB
create partition primary size=100
rem Помечаем раздел как активный
active
rem Форматируем раздел в файловую систему NTFS и выставляем метку System
format quick fs=ntfs label="System"
rem Присваиваем разделу букву S
assign letter="S"
rem Создаем второй раздел занимающий все оставшееся пространство диска
create partition primary
rem Форматируем раздел в файловую систему NTFS и выставляем метку Windows
format quick fs=ntfs label="Windows"
rem Присваиваем разделу букву W
assign letter="W"
GPT
Для диска в GPT формате потребуется 3 раздела. Первый EFI раздел, с файловой системой FAT32, размером 100 MB. В нем будет располагаться загрузчик. Второй MSR раздел, размером в 128 MB. Служебный раздел для ОС Windows, не предназначен для хранения данных. И последний основной раздел, для операционной системы.
Запускаем diskpart (Win+R, вводим diskpart и нажимаем ENTER) и выполняем следующую последовательность команд:
rem Выбираем целевой диск
select disk 2
rem Очищаем выбранный диск от таблицы разделов
clean
rem Конвертируем таблицу разделов в GPT формат
convert gpt
rem Создаем EFI раздел размером в 100 MB
create partition efi size=100
rem Форматируем раздел в файловую систему FAT32 и выставляем метку System
format quick fs=fat32 label="System"
rem Присваиваем разделу букву S
assign letter="S"
rem Создаем служебный раздел MSR размером в 128 MB
create partition msr size=128
rem Создаем третий раздел занимающий все оставшееся пространство диска
create partition primary
rem Форматируем раздел в файловую систему NTFS и выставляем метку Windows
format quick fs=ntfs label="Windows"
rem Присваиваем разделу букву W
assign letter="W"
Пару слов по поводу MSR раздела, команда create partition msr size=128. При выполнении команды convert gpt, MSR раздел создается автоматически.
Как можно заметить, до выполнения команды convert gpt, разделы на жестком диске отсутствовали. А после выполнения, появился раздел размером в 128 MB.
Вывод детальной информации о созданном разделе, только подтверждает, что это MSR раздел.
Возможно, я не уверен, старые версии diskpart не обладали таким поведением. Хотя в Windows 7 поведение полностью аналогичное, но ОС при этом была обновленная. Поэтому команду в списке я все же оставил.
Извлечение Файлов
Данный шаг, является следующим после разметки диска. Выполнять извлечение установочного архива будем выполнять с помощью консольной утилиты DISM.
Можно попробовать использовать для этих целей 7-Zip. Собственно я планировал добавить далее описание данного процесса. Но при тестировании выявил, что операционная система Windows 10, распакованная таким образом, выдавала ошибку при первом старте. Поэтому от вариантов распаковки установочного образа с помощью архиваторов и файл менеджеров, было решено отказаться.
Сам процесс извлечения состоит из двух этапов. Определение извлекаемой версии архива. Как известно *.wim/*.esd архивы могут содержать несколько версий содержимого, разбитого по индексам. И последний этап, извлечение выбранного индекса в указанный раздел.
DISM
Для работы dism нужны права администратора, поэтому все дальнейшие действия необходимо выполнять в командной строке запущенной с соответствующими правами.
В командной строке, переходим в директорию, в которой расположен установочный архив. В моем случае это директория WinSetup\WinImage.
Выполнив команду dir, выводим список файлов, чтобы посмотреть имя архива с которым будем работать далее.
Выводим информацию о выбранном архиве введя команду dism /get-wiminfo /wimfile:Win10Pro64.esd, чтобы определить индекс извлекаемого содержимого.
Выполняем извлечение выбранного индекса командой dism /apply-image /imagefile:Win10Pro64.esd /index:4 /applydir:W:\. W:\ в данном случае, это раздел, который создавался в предыдущей главе, и предназначался для размещения ОС Windows.
Извлечение файлов на этом завершено. Содержимое диска W:\ представлено на скриншоте ниже.
Установка Загрузчика
Перед установкой загрузчика, в системе должны быть подключены, оба созданных ранее раздела S:\ и W:\. Подключить разделы можно с помощью программы diskpart, либо в оснастке Управление дисками.
Для diskpart, делается с помощью следующих команд:
rem Узнаем номер необходимого диска
list disk
rem Выбираем необходимый диск
select disk 2
rem Выводим список разделов выбранного диска
list partition
rem Выбираем первый раздел диска
select partition 1
rem Монтируем первый раздел под буквой S
assign letter=S
rem Выыбираем второй раздел диска
select partition 2
rem Монтируем второй раздел под буквой W
assign letter=W
rem Выходим из diskpart
exit
В оснастке Управление дисками, все делается через контекстное меню нужного раздела.
Процесс довольно простой и понятный, поэтому не нуждается в подробном описании.
Теперь, когда подключены оба раздела, можно приступать к установке загрузчика. Возможны два варианта, в зависимости от используемой таблицы разделов — установка BIOS версии (MBR), или установка EFI версии (GPT).
BIOS
Для дисков размеченных в стиле MBR, потребуется установить MBR-запись, и выполнить копирование файлов загрузчика на раздел S:\. Делается это довольно просто, с помощью консольных программ bootsect и bcdboot. Сами команды будут иметь следующий вид, выполнять их нужно в командной строке, запущенной от имени администратора:
:: Устанавливаем загрузочный код Windows Boot Manager в MBR область диска
bootsect /nt60 S: /mbr
:: Переходим в раздел W:\ с распакованными файлами Windows
W:
:: Переходим в директорию System32 распакованной системы
cd W:\Windows\System32
:: Устанавливаем BIOS версию загрузчка Windows Boot Manager в раздел S:\
bcdboot W:\Windows /s S: /f BIOS
Загрузчик установлен. На диске S:\ появятся файлы загрузчика.
UEFI
Для дисков с таблице разделов GPT, для установки загрузчика достаточно выполнить только копирование файлов загрузчика на раздел S:\. Выполняется эта операция с помощью консольной утилиты bcdboot. Выполнять ее запуск нужно в командной строке запущенной от имени администратора. Полный пример команд будет выглядеть так:
:: Переходим в раздел W:\ с распакованными файлами Windows
W:
:: Переходим в директорию System32 распакованной системы
cd W:\Windows\System32
:: Устанавливаем BIOS версию загрузчка Windows Boot Manager в раздел S:
bcdboot W:\Windows /s S: /f UEFI
Загрузчик установлен. На диске S:\ появится папка с UEFI загрузчиком.
Тестовый Запуск
Проверим ручную установку, подключив подготовленный VHD-образ в виртуальную машину VirtualBox.
Результат загрузки.
Операционная система успешно установилась и загрузилась.
Итог
Процесс установки Windows, достаточно многогранен. Реализовать данную процедуру можно различными способами. Сегодня мы рассмотрели, несколько нестандартное, применение стандартных средств установки, а так же целиком ручную установку. Оба метода по своему интересны, и в зависимости от ситуации, обязательно найдут применение в реальных задачах.
Введение
Пожалуй, у любого сисадмина периодически появляется необходимость ставить Windows XP на комп, который не получается загрузить с установочного диска. Будь то нетбук или комп со сдохшим сидюком, или просто лень.
В Интернете существует много руководств на тему установки Windows XP с флэшки, и большинство из них — копипаст весьма сложного, на мой взгляд, метода, который, помимо сложности, еще и требует достаточно много времени и удаления данных с флэшки. Поэтому пришлось придумывать что-то свое. Не исключено, что столь же, а может и более сложное. Но, для меня, профит с лихвой оправдывает затраты времени на подготовку. Благо, подготовка выполняется всего 1 раз, а ставить полученный образ можно на сколь угодно много компов.
Теория
Все сказанное ниже касается, в первую очередь, установки Windows XP SP3 OEM.
Основная проблема в том, что при загрузке с установочного диска Windows XP программа установки сразу создает структуру папок Windows и копирует все необходимое в системные папки (windows, program files и т.п.), и это несколько усложняет задачу. К счастью, при запуске установки из DOS или из под уже установленной Windows (не старше XP), установщик сначала копирует все необходимое во временные папки, создает кое-какие файлы в корне диска и прочие мелочи, и только потом, после перезагрузки, начинает установку. Если скопировать временные файлы установщика до первой перезагрузки, то в последствии их можно будет использовать для установки XP на любой другой компьютер.
Для подготовки образа установки я использовал:
- загрузочную флэшку или диск с Windows PE 3.0
- утилиту imagex.exe из пакета Microsoft AIK. У меня она была встроена в образ WinPE, но никто не мешает запустить ее с флэшки, после загрузки WinPE,
- виртуальную машину для подготовки установки. Можно обойтись и без виртуалки — дело вкуса.
Приготовление образа
- На виртуальной машине ставим XP. Для простоты: 1 раздел, NTFS
- Запускаем программу установки Windows XP
- Когда установщик закончит приготовления и попросит перезагрузиться, перезагружаем компьютер в Windows PE.
Необходимо, с помощью утилиты ImageX захватить следующие папки и файлы с жесткого диска:Папки:
$WIN_NT$.~BT
$WIN_NT$.~LSФайлы:
$LDR$
Bootfont.bin
ntdetect.com
ntldr
txtsetup.sif
Поскольку я работал с виртуалкой, для простоты захвата я удалил все лишние файлы и папки, кроме перечисленных и сделал захват всего диска.
На этом подготовка образа установки закончена, и мы получили wim-образ, который теперь можно разворачивать на любом компьютере.
Развертывание образа и установка
- Загружаемся в Windows PE
- С помощью ImageX разворачиваем образ на жесткий диск (при развертывании, имеющиеся данные не удаляются)
- В зависимости от того, есть ли на компьютере еще ОС, настраиваем загрузчик. В самом простом случае делать ничего не придется. Если загрузка не удалась, значит необходимо подправить boot-сектор на разделе с распакованным образом установки. Для этого достаточно выполнить в WinPE команду:
bootsect.exe /nt52 <диск>:
где <диск> — буква диска, на который был развернут образ установки
После перезагрузки запустится обычная установка Windows XP.
В некоторых случаях загрузка может не удастся и появится сообщение о том, что не удается загрузиться/найти ntldr. Чаще всего такая ошибка связана с неправильными настройками в boot.ini. Проверить корректность и/или подправить этот файл можно в той же WinPE.
Читайте также статью о новой версии Windows PE, использующейся с Windows 8: Создание загрузочного диска Windows PE 4.0 с .NET Framework и PowerShell 3
Windows PE — это среда предустановки Windows, использующаяся для подготовки к установке операционных систем Windows Vista, Windows Server 2008 и Windows 7. Однако с помощью Windows PE можно выполнять разнообразные задачи. Например,
- управление разделами жесткого диска с помощью утилиты Diskpart или сторонних средств,
- захват томов в WIM-образ с помощью утилиты ImageX и их сохранение на другой раздел жесткого диска или USB-диск,
- применение WIM-образов к тому с помощью утилиты ImageX,
- запуск автоматической установки Windows XP, Windows Vista, Windows Server и Windows 7,
- копирование и замену файлов, а также правку реестра установленной операционной системы, если она не загружается.
Среду Windows PE также часто используют ОЕМ-производители для восстановления системы к заводским настройкам с помощью собственных средств. Особую ценность для диагностики и восстановления операционной системы Windows PE приобретает при включении в ее состав набора Microsoft Diagnostics and Recovery Toolset (MSDaRT), входящего в пакет Desktop Optimization Pack. К сожалению, MSDaRT для Windows Vista доступен только по программе Software Assurance или по корпоративным лицензиям VL/OL/EA.
В статье рассматривается работа с WAIK для Windows 7 и утилитиой DISM, входящей в состав этой ОС. Руководство по созданию диска Windows PE на основе WAIK для Windows Vista находится здесь.
Так или иначе, диск с Windows PE может пригодиться вам для работы с WIM-образами или восстановления операционной системы, поэтому ниже я рассмотрю процесс его создания с помощью пакета автоматической установки Windows (WAIK). Процесс создания базового диска Windows PE довольно прост — он занимает буквально 10 минут.
На этой странице
- Создание базового набора файлов
- Подключение образа Windows PE и работа с ним
- Настройка запуска собственных приложений и сценариев
- Сохранение образа Windows PE и замена boot.wim
- Создание ISO-образа Windows PE
- Создание загрузочного USB-диска Windows PE
- Полезная информация о Windows PE
- Связанные ресурсы
Создание базового набора файлов
В статье рассматривается создание диска с 32-разрядной версией Windows PE. Кроме того, я предполагаю, что у вас на диске создана папка C:\7Work. Если вы создаете диск с 64-разрядной версией Windows PE и/или используете другую папку, вам необходимо будет заменить во всех командах архитектуру (х86 на amd64) и пути к папкам.
В меню Пуск последовательно щелкните Все программы, Microsoft Windows AIK и Утилиты командной строки Windows PE — все последующие команды будут вводиться в это окно командной строки.
Примечание. Если вы работаете в Windows Vista или более поздних, Утилиты командной строки Windows PE следует запускать от имени администратора, щелкнув правой кнопкой мыши на ярлыке и выбрав в контекстном меню пункт Запуск от имени администратора. Это позволит избежать проблем с правами доступа к папкам и файлам.
Базовый набор файлов создается одной командой:
copype.cmd x86 c:\7Work\winpe_x86
После ее завершения в папке winpe_x86 будет создана такая структура, как показано на скриншоте.
Для изменения исходного образа Windows PE его необходимо подключить командой
Dism /Mount-Wim /WimFile:c:\7Work\winpe_x86\winpe.wim /index:1 /MountDir:c:\7Work\winpe_x86\mount
Подключив образ, вы можете устанавливать в него пакеты и добавлять собственные файлы.
Установка пакетов
С помощью утилиты DISM в подключенный образ можно добавлять дополнительные пакеты, расширяющие возможности Windows PE, а также интегрировать драйверы контроллеров устройств хранения (mass storage). Последнее может понадобиться в том случае, если вы используете контроллеры, драйверы которых не включены в состав Windows PE. Ниже приводится список пакетов, которые можно установить.
| Имя пакета | Описание |
|---|---|
| WinPE-HTA-Package | Поддержка HTML-приложений |
| WinPE-MDAC-Package | Поддержка компонентов доступа к данным (Microsoft) |
| WinPE-Scripting-Package | Поддержка сервера сценариев Windows |
| WinPE-SRT-Package | Компонент среды восстановления Windows (доступен только по корпоративным лицензиям) |
| WinPE-WMI-Packages | Поддержка WMI (Windows Management Instrumentation) |
| WinPE-XML-Package | Поддержка программы разбора Microsoft XML (MSXML) |
Например, если вы планируете выполнять в Windows PE сценарии WSH, следует установить WinPE-Scripting-Package. Делается это одной командой:
Dism /image:c:\7Work\winpe_x86\mount /Add-Package /PackagePath:<путь>WinPE-Scripting-Package
В качестве значения для параметра /PackagePath: указывается полный путь к:
- CAB- или MSU-файлу
- папке с одним распакованным CAB-файлом
- папке с одним MSU-файлом
- папке с несколькими CAB- или MSU-файлами
Просмотреть список установленных в образе пакетов можно командой
Dism /image:c:\7Work\winpe_x86\mount\ /Get-Packages
Добавление собственных файлов
Вы можете расширить функциональные возможности Windows PE за счет добавления собственных файлов. Например, для того чтобы иметь возможность захвата томов в WIM-образ, необходимо включить в состав диска утилиту ImageX.
Добавлять файлы можно как непосредственно в WIM-образ Windows PE, так и на диск, на котором размещается предустановочная среда. Преимущества и недостатки обоих способов я рассмотрю подробнее.
Добавление файлов в WIM-образ Windows PE. В этом случае увеличивается размер WIM-образа Windows PE, который изначально составляет около 200 Мб. Поскольку при запуске Windows PE содержимое образа целиком загружается в оперативную память компьютера, размер WIM-образа не стоит увеличивать без необходимости. Преимущество добавления файлов в WIM-образ заключается в том, что заранее известна буква диска загруженной среды Windows PE (это всегда X:\) и удобно использовать переменные среды (%SystemRoot%, %SystemDrive% и т. д.). Целевой папкой для добавления файлов к WIM-образу является winpe_x86\mount\Windows.
Добавление файлов на диск. Добавляя файлы на диск, вы избегаете увеличения размера WIM-образа Windows PE и экономите оперативную память при запуске предустановочной среды. Все ваши файлы будут доступны — они включаются в состав загрузочного диска. Недостатком такого подхода является то, что заранее неизвестна буква диска, с которого производится запуск Windows PE. При желании можно обойти и это препятствие. Целевой папкой для добавления файлов на диск является winpe_x86\ISO — она эквивалентна корню загрузочного диска (конечно, вы можете создавать в ней подпапки).
Давайте рассмотрим пример добавления файлов на диск. Начнем с ImageX. Поскольку утилита входит в состав WAIK, достаточно выполнить команду:
xcopy "%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe" c:\7Work\winpe_x86\iso\
Если вы планируете использовать утилиту ImageX для захвата образов, можно (но не обязательно) сразу подготовить список исключений — файлов и папок, которые не будут включаться в сохраняемый образ. Создайте в любом текстовом редакторе файл Wimscript.ini и укажите в нем файлы и папки, которые вы хотите исключить из образа. По умолчанию ImageX использует следующие исключения:
[ExclusionList] \$ntfs.log \hiberfil.sys \pagefile.sys "\System Volume Information" \RECYCLER \Windows\CSC [CompressionExclusionList] *.mp3 *.zip *.cab \WINDOWS\inf\*.pnf
Файл Wimscript.ini размещается в одной папке с ImageX.
Для добавления диспетчера пакетов (PkgMgr) необходимо целиком скопировать папку Servicing, а также файлы MSXML6:
xcopy "%ProgramFiles%\Windows AIK\Tools\x86\Servicing" c:\7Work\winpe_x86\iso\Servicing /s xcopy %windir%\system32\msxml6*.dll c:\7Work\winpe_x86\iso\Servicing
Теперь рассмотрим пример добавления файлов в образ Windows PE. Допустим, я хочу включить в состав WIM-образа файловый менеджер Total Commander. Я копирую его папку TotalCmd в корень папки winpe_x86\mount. Это можно сделать вручную или из командной строки:
xcopy "%ProgramFiles%\TotalCmd" c:\7Work\winpe_x86\mount\TotalCmd /s
Настройка запуска собственных приложений и сценариев
Если вы впервые создаете диск Windows PE, можете пропустить этот раздел, чтобы материал не казался вам сложнее, чем он есть на самом деле. Успешно создав свой первый диск Windows PE и насладившись ее волшебным интерфейсом командной строки, вы сможете вернуться к настройке запуска приложений.
Запуск собственных приложений и сценариев в Windows PE можно организовать различными способами.
startnet.cmd
Файл startnet.cmd расположен в папке Windows\System32 подключенного образа Windows PE и уже содержит одну команду — wpeinit. Эта команда нужна для инициализации поддержки сети и устройств Plug-and-Play. В качестве параметра командной строки для wpeinit.exe можно указать путь к файлу ответов, настраивающему параметры Windows PE, о чем речь пойдет чуть ниже. При загрузке Windows PE файл startnet.cmd выполняется автоматически, поэтому его удобно использовать для выполнения собственных команд.
Вы можете добавить в этот файл команды, используя стандартный синтаксис командных файлов. Например, для запуска Total Commander, который я включил в состав образа ранее, можно добавить такую команду:
%SystemDrive%\TotalCmd\TOTALCMD.EXE "I=%SystemDrive%\TotalCmd\Profiles\PE\main.ini"
В данном примере в качестве параметра командной строки указывается путь к конфигурационному файлу Total Commander (это описано в справке программы).
winpeshl.ini
Стандартной оболочкой Windows PE является командная строка. Однако можно задать собственную оболочку при помощи файла winpeshl.ini, указав в нем командный файл или программу для запуска. Файл не входит в состав Windows PE. Его нужно создать в любом текстовом редакторе и разместить в папке Windows\System32 подключенного образа Windows PE. Пример запуска программы myshell.exe, выступающей в роли оболочки, приводится ниже.
[LaunchApp] AppPath = %SystemDrive%\myshell.exe
В этом примере программа размещается в корне подключенного образа Windows PE, т. е. в корне папки winpe_x86\mount.
Примечание. При запуске собственной оболочки не происходит выполнения файла startnet.cmd.
Если вам нужна поддержка сети или устройств Plug-and-Play, необходимо настроить выполнение команды wpeinit. В этом случае лучше использовать раздел [LaunchApps], позволяющий не только выполнять несколько команд, но и указывать параметры командной строки для приложений.
Например, запуск wpeinit и файлового менеджера Total Commander, который я включил в состав образа ранее, можно реализовать так:
[LaunchApps] wpeinit %SystemDrive%\TotalCmd\TOTALCMD.EXE,"I=%SystemDrive%\TotalCmd\Profiles\PE\main.ini"
Обратите внимание на то, как в winpeshl.ini задаются параметры командной строки для приложений.
Примечание. Поскольку приложение, запущенное из файла winpeshl.ini выполняет роль оболочки, его закрытие ведет к завершению сессии Windows PE.
Внимание! Не используйте разделы [LaunchApp] и [LaunchApps] одновременно, поскольку в этом случае приложения могут не запуститься. Этот момент не отражен в документации.
Файл ответов
Для автоматизации выполнения команд в среде Windows PE можно использовать файл ответов. При запуске Windows PE автоматически выполняется поиск файла Unattend.xml в корне диска, с которого выполнялась загрузка. Кроме того, путь к файлу ответов можно явно указать в качестве параметра командной строки следующим образом:
wpeinit -unattend=<путь\ФайлОтветов.xml>
Для запуска собственных приложений и сценариев можно использовать синхронные команды, добавляемые к проходу 1 windowsPE. Продолжая пример с запуском Total Commander, синхронная команда будет выглядеть так:
%SystemDrive%\TotalCmd\TOTALCMD.EXE "I=%SystemDrive%\TotalCmd\Profiles\PE\main.ini"
Пример файла ответов, запускающего синхронную команду, вы найдете на странице Примеры. Этот файл можно сохранить с именем Unattend.xml в папке winpe_x86\ISO, и он будет распознан автоматически.
На этом обзор способов запуска собственных программ можно считать законченными.
Сохранение образа Windows PE и замена boot.wim
После того, как вы добавите собственные файлы в образ Windows PE и настроите остальные параметры запуска предустановочной среды, необходимо сохранить образ.
Dism /unmount-Wim /MountDir:c:\7Work\winpe_x86\mount /Commit
Если вы помните, вся работа велась с образом winpe.wim. А для загрузочного диска Windows PE используется файл boot.wim, расположенный в папке winpe_x86\ISO\sources. Поэтому необходимо заменить файл boot.wim файлом winpe.wim, выполнив при этом переименование.
xcopy /y c:\7Work\winpe_x86\winpe.wim c:\7Work\winpe_x86\ISO\sources\boot.wim
Теперь у вас все готово к созданию загрузочного диска Windows PE. Ваши дальнейшие действия зависят от того, какой тип носителя вы изберете. Можно создать ISO-образ и записать его на компакт-диск, а можно создать загрузочный USB-диск.
Создание ISO-образа Windows PE
Поскольку все файлы уже подготовлены, остается выполнить команду:
oscdimg -n -bc:\7Work\winpe_x86\etfsboot.com c:\7Work\winpe_x86\ISO c:\7Work\winpe_x86\winpe_x86.iso
Примечание. Для 64-разрядной версии Windows PE, предназначенной для процессоров Itanium (IA-64), необходимо указывать в качестве загрузчика файл efisys.bin.
Теперь вы можете подключить образ к виртуальной машине и протестировать работу Windows PE.
Создание загрузочного USB-диска Windows PE
Учитывая повсеместное распространение компьютеров, поддерживающих загрузку с USB-дисков, Windows PE вполне можно разместить на «флэшке». Суть описанных далее операций сводится к форматированию USB-диска и созданию на нем активного раздела с файловой системой FAT32 с помощью утилиты Diskpart. Ее подробное описание вы найдете в статье Описание программы Diskpart с интерфейсом командной строки.
Примечание. Описанную ниже процедуру можно проводить только в Windows Vista, Windows Server 2008 и более новых операционных системах. Это связано с тем, что в Windows XP утилита Diskpart определяет флэш-диски как съемные, поэтому в списке дисков они не отображаются. Копирование утилиты из Windows Vista в Windows XP не решает проблему. Если вы работаете в Windows XP, воспользуйтесь альтернативными средствами (например, программой Swissknife).
В командной строке последовательно вводите приведенные ниже команды.
diskpart
Затем отобразите список дисков.
list disk
Список и нумерация дисков зависит от количества подключенных в системе дисков. В моем примере USB-диск — это Диск 1. Это несложно определить по размеру диска. В приведенных ниже командах производятся операции с «Диск 1». Вам необходимо внести изменения, если ваш USB-диск имеет другой индекс.
select disk 1
Внимание! Дальнейшие действия приведут к полному удалению информации на выбранном вами диске.
Очистите диск.
clean
Создайте основной раздел.
create partition primary
Раздел займет все пространство на диске. Если вы хотите создать раздел определенного размера, добавьте к команде параметр size=N, где N — число в мегабайтах. Впрочем, Windows XP и Vista видят на съемных USB-дисках только один раздел и не позволяют создавать другие. Эту проблему можно преодолеть, если вам нужна мультизагрузка с USB-диска, но рассказ о решении выходит за рамки статьи. Поэтому я ограничусь ссылкой на одно из возможных решений.
Выберите первый раздел.
select partition 1
Сделайте его активным.
active
Отформатируйте в FAT32.
format fs=fat32 quick
Инициализируйте назначение буквы.
assign
Завершите работу утилиты.
exit
Остается лишь скопировать файлы Windows PE на USB-диск. Все файлы находятся в папке winpe_x86\ISO. Вы можете их скопировать с помощью проводника или другого файлового менеджера, либо такой командой:
xcopy c:\7Work\winpe_x86\iso\*.* /s /e /f К:\
В этом примере USB-диск имеет букву К.
На этом создание загрузочного USB-диска с Windows PE можно считать законченным.
Полезная информация о Windows PE
В заключение я приведу ряд фактов о Windows PE, которые могут оказаться полезными для вас.
- Исходная версия Windows PE занимает менее 200 Мб на диске.
- Все содержимое образа Windows PE (WIM-файла) загружается в оперативную память, т. е. при этом создается RAM-диск. Этому диску назначается буква Х. В Windows PE эта буква эквивалентна букве системного раздела в ОС Windows.
- Минимальный объем оперативной памяти для компьютера, на котором выполняется загрузка в Windows PE, составляет 256 Мб. Желательно — не менее 512 Мб.
- Windows PE автоматически перезагружается после 72 часов работы.
- Параметры запущенной Windows PE можно настраивать с помощью утилиты wpeutil, которая подробно описана в справочной документации.
- Для перезагрузки компьютера с запущенной Windows PE можно использовать команду wpeutil reboot, а для выключения — wpeutil shutdown. Кроме того, к перезагрузке приводит закрытие командной строки или собственной оболочки.
- Раскладку клавиатуры можно задать с помощью команды wpeutil SetKeyboardLayout <код языка>. Например, разместив в файле startnet.cmd команду wpeutil SetKeyboardLayout 0409:00000409, вы назначите английскую раскладку. Это удобно для работы с командной строкой, поскольку образ Windows PE, поставляемый с русским WAIK, по умолчанию имеет русскую раскладку клавиатуры.
- Для запуска Windows PE с USB-диска необходимо настроить в BIOS порядок загрузочных устройств таким образом, чтобы USB-устройство было первым в списке.
- При запуске Windows PE с USB-диска не предлагается нажать любую клавишу для загрузки.
- Если вы хотите, чтобы при запуске Windows PE с компакт-диска не предлагалось нажать любую клавишу для загрузки, удалите файл bootfix.bin из папки ISO\boot перед созданием ISO-образа.
- Если в вашей сети не применяется DHCP, вы можете использовать статические IP-адреса. Например, можно задать статический адрес командой:
netsh int ip set address local static 10.80.10.35 255.255.255.0 10.80.10.1
- Вы можете использовать команду net use для подключения сетевых дисков:
net use * \\server\share /user:mydomain\username
Дополнительную информацию о Windows PE вы найдете в справочном CHM-файле «Руководство пользователя Windows PE», входящем в состав пакета автоматической установки Windows (WAIK).
Связанные ресурсы
- Техническое руководство по Windows PE
- Двойная загрузка с Windows XP и Windows PE 2.0 (Technet Magazine)
- Восстановление компьютера при помощи Windows PE (Technet Magazine)
- Использование DART для восстановления Windows Vista (Windows IT Pro)
Вариант для редких одиночных развертываний — настроили систему, потвикали и установили все проги, загрузились с любого WinPE, почистили системный раздел от всего лишнего, скриптом OSDTool.tbs (из TeraByteImage) удалили все драйвера и захватили диск гуевой утилой GimageX. На новом железе после развертывания запустить утилу SkyIAR или скрипт FixHDC во избежание синьки 7b. Профит.
Второй вариант (хорошо подходит для развертывания на много компов) — перед захватом wim воспользоваться набором MyFactory от Boa Soft (уже с пакетом massstorage дров, а также можно докинуть своих для всего нужного железа), тоже проверен — работает.
