Создание диска восстановления

Опубликовано: 10.12.2009
Автор: Виталий Бочкарев
Поддержать автора статьи по этой ссылке
В данной статье используется WAIK 1.0 для Windows Vista. Обратите внимание, что команды и загрузчики WAIK версий 1.0 и 2.0 существенно различаются.
Содержание
Введение

Загрузочный диск - это съемный носитель, например компакт-диск или Flash-накопитель, содержащий файлы загрузки, которые компьютер может использовать для запуска Windows без дополнительных ресурсов с жесткого диска компьютера. Файлы загрузки хранятся и на жестком диске компьютера, но если они окажутся поврежденными, система не запустится и забрать важные документы с компьютера будет невозможно. Чтобы решить эту проблему, можно использовать для запуска файлы загрузочного диска Windows PE.

В этой статье я расскажу, как создать загрузочный диск с системой Windows PE на основе пакета WAIK.

Инструменты и технологии для создания загрузочного диска
Windows Automated Installation Kit

Windows Automated Installation Kit (Windows AIK или WAIK) - это коллекция инструментальных средств и технологий, созданных Microsoft, которые были разработаны с целью помочь в развертывании Windows. С помощью WAIK можно автоматизировать процесс установки Windows, сделать захват образа системы, конфигурировать и изменить установочный образ, создать образы Windows PE, а также осуществлять перенос профиля и настроек пользователя.

Пакет WAIK работает со специальным типом образов дисков - WIM, который переводится какWindowsIMaging. Для получения образа используется технология копирования файлов в архив-образ диска. Однако в отличие от обычных архивных файлов, в формате WIM содержатся не только сжатые копии файлов и папок, но и все связанные с ними метаданные (списки контроля доступа (ACL), короткие и длинные имена файлов, атрибуты и т.д.). Подобная структура хранения содержимого диска позволяет редактировать файл образа - удалять и добавлять файлы. Также на содержимое WIM-образа не накладывается ограничений, например, он может содержать несколько томов.

Важной особенностью при этом является отслеживание одинаковых файлов (технология однократного копирования - Single Instancing). То есть, если на диске встречается один и тот же файл в нескольких папках, то в файле образа он будет сохранен только один раз, а места его расположения будут помечены специальными идентификаторами, это означает, что при развертывании образа такой файл извлекается несколько раз по его идентификатору в разные места диска компьютера - файл скопируется во все директории назначения по его идентификатору.

Еще одной особенностью WIM-образов является независимость от файловой системы и размера тома, что позволяет разворачивать архив на тома различных форматов и размеров, если, конечно, загрузчик сможет опознать файловую систему диска компьютера. Так же следует учесть, что процесс развертывания - это копирование файлов из архива, то есть этот процесс не уничтожает старую файловую систему компьютера, а лишь копирует новые файлы или заменяет старые. Такой подход позволяет сохранить пользовательские данные, а может и превратить диск компьютера в "бардак" (хотя, если распаковщик встретит папку с названием "Windows", он ее переименует в "Windows.old").

Sysprep

Sysprep - это программа подготовки системы, которая применяется в целях подготовки установленной копии Windows для создания образа (для обезличивания системы). Программа предоставляет следующие возможности:

  • удаление из Windows системных данных - удаляются все сведения, относящиеся к операционной системе, из установленного образа Windows, включая идентификатор безопасности компьютера (SID) - обезличивание компьютера, что позволяет использовать образ системы одного компьютера для распространения по всей организации;
  • настройка Windows для загрузки в режиме аудита - режим аудита позволяет устанавливать приложения сторонних лиц и драйверы устройств, а также проверять работоспособность компьютера;
  • настройка загрузки экрана приветствия Windows;
  • сброс активации Windows (не более трех раз).
My Drivers

My Drivers - это программа, которая позволяет собрать драйвера с установленной системы.

Если диск с драйверами компьютера потерян, или его просто не было в поставке, то драйвера для компьютера можно собрать с помощью программы My Drivers, если, конечно система на компьютере еще запускается. Программа сканирует устройства, установленные в операционной системе и сохраняет драйвера, используемые каждым устройством в отдельную папку. После чего, собранные драйвера можно записать на компакт диск и использовать при переустановке системы. Эта программа имеет условно-бесплатную лицензию, но так как нам она потребуется только один раз, то лицензию покупать не нужно.

Windows Preinstallation Environment

Windows Preinstallation Environment (Windows PE) - это легкая по размеру версия операционной системы Windows, которая позволяет загружаться с компакт диска. Эта система в основном используется как предустановочная платформа, но также может выполнять функции операционной системы для восстановления работоспособности компьютера.

Если говорить более развернуто, то Windows Preinstallation Environment позволяет:

  • получить доступ к файловой системе диска компьютера;
  • создавать и форматировать разделы диска компьютера;
  • получить доступ к локальной сети для подключения сетевого ресурса;
  • запускать простые программы;
  • выполнять сценарии типа BAT и VBS;
  • развертывать WIM-образы на диск компьютера.

Одним из ограничений на применение Windows PE является размер оперативной памяти компьютера - для запуска Windows PE 2.0 необходимо не менее 512 МБ ОЗУ. Помимо этого, под Windows PE нельзя запускать сложные программы, которые требуют дополнительных библиотек и служб для своей работы.

Файл ответов

Файл ответов (WinNT.sif - для Windows XP, Unattend.xml - для Windows Vista) - это текстовый файл, содержащий ответы для диалоговых окон графического интерфейса пользователя. С помощью такого файла можно полностью автоматизировать установку новой операционной системы. То есть при правильной настройке файла ответов, установщик не будет выдавать окна с запросом ввести нужную информацию, а сам подставит нужные значения из файла ответов.

HTML Application

HTML Application (Hyper Text Application, HTA) - приложение Microsoft Windows, написанное на HTML или Dynamic HTML. HTA-приложение является HTML-документом со встроенными в заголовке атрибутами HTA, файл такого приложения имеет расширение ".hta". Для настройки внешнего вида приложения используется специальный HTML-тег <hta:application>, который располагается в секции <head>. Приложение HTA может быть сделано из обычного файла HTML сменой расширения на .hta. Такое приложение, в отличие от страниц для вэб-браузера, запускается, как полностью надёжное и безопасное приложение, и, следовательно, имеет больше привилегий в системе, чем обычная HTML-страница. Например, HTA может создавать, редактировать и удалять файлы и записи системного реестра Windows, выполнять Visual Basic и Java скрипты. Следует помнить, что, так как приложения HTA поддерживают исполнение сценариев, они могут являться носителем вредоносного кода и могут использоваться для создания вирусов.

BAT-сценарии

BAT-сценарии - это наиболее быстрый и простой способ автоматизации действий пользователя, который представляет из себя список последовательно выполняемых команд, понимаемых операционной системой.

Создание интерфейса пользователя для загрузочного диска

Для удобной работы в системе загрузочного диска нам потребуется создать собственную программу - интерфейс пользователя, так как по умолчанию пакет Windows PE 2.0 содержит только командную строку. Оболочку создадим, используя технологию HTA. Ниже приведен листинг приложения "Starter.hta", которое запускается системой во время загрузки.

<html>
	   <head>
	       <title>Starter</title>
	       
	       <!-- параметры HTA-приложения -->
	       <hta:application
	       id="oStarter"
	       border="none"
	       caption="no"
	       contexmenu="no"
	       icon="Starter_files\starter.ico"
	       innerborder="no"
	       maximizebutton = "no"
	       minimizebutton = "no"
	       scroll="no"
	       />
	       
	       <!-- сценарий обработки действий пользователя, динамическая часть приложения -->
	       <script type="text/vbscript" language="VBScript.Encode">
	           
	           ' модель компьютера, для которого сделан диск восстановления
	           Const gComputerType = "Fujitsu-Siemens Amilo A3667G"
	       
	           ' изменение размеров окна приложения при запуске
	           sub windowOnLoad
	               iWidth = 640
	               iHeight = 480
	               iHorizontal = 800
	               iVertical = 600
	               iLeft = (iHorizontal - iWidth) / 2
	               iTop = (iVertical - iHeight) / 2
	               Self.Focus()
	               Self.resizeTo iWidth, iHeight
	               Self.moveTo iLeft, iTop
	           end sub
	
	           ' определение буквы DVD-привода
	           function DetectDVD
	               sTempValue = ""
	               sComputer = "."
	               set oWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
	                 sComputer & "\root\cimv2")
	               set colDisks = oWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
	               for Each oDisk in colDisks
	                   if oDisk.DriveType = 5 then
	                       if UCase(oDisk.VolumeName) = UCase("Deployment") then sTempValue = _
	                         oDisk.Name
	                   end if
	               Next
	               DetectDVD = sTempValue
	           end function
	
	           ' прорисовка служебной зоны приложения
	           sub DrawExtendedZone(sCommand)
	               select case sCommand
	                   case "Restoration"
	                       sContent = sContent & "<div class=""header4"">Restoration</div>"
	                       sContent = sContent & "<div class=""NormalText""><br />" & _
	                         "</div>"
	                       sContent = sContent & "<div class=""NormalText"">" & _
	                         "This option deploys the image on the computer.</div>"
	                       sContent = sContent & "<div class=""NormalText""><br /></div>"
	                       sContent = sContent & "<div class=""NormalText"">" & _
	                         "Are you sure to deploy this image?</div>"
	                       sContent = sContent & "<div class=""NormalLink"" id=""Restore"" " & _
	                         "onclick=RunApplication(me.id) onmouseover=me.className=" & _
	                         "'NormalLinkMouseOver' onmouseout=me.className='NormalLink'>" & _
	                         "- Yes, restore Fujitsu-Siemens  Amilo  A3667G - FS0001.</div>"
	                       sContent = sContent & "<div class=""NormalLink"" onclick=" & _
	                         "DrawExtendedZone(AGCLogo) onmouseover=me.className=" & _
	                         "'NormalLinkMouseOver' onmouseout=me.className=" & _
	                         "'NormalLink'>- Cancel this action.</div>"
	                   case else
	                       sContent = sContent & "<div class=""NormalText"">" & _
	                         "The deployment disk intends for restoration " & gComputerType & _
	                         " computer.</div>"
	                       sContent = sContent & "<div class=""NormalText""" & _
	                         "><br /></div>"
	                       sContent = sContent & "<div class=""NormalText"">" & _
	                         "Restoration procedure will erase all data on the computer and " & _
	                         "return the system to the factory defaults state.</div>"
	                       sContent = sContent & "<div class=""NormalText""><br /></div>"
	                       sContent = sContent & "<div class=""NormalText"">" & _
	                         "To restore your computer push ""Restore"" button.</div>"
	               end select
	               ExtendedZone.innerHTML = sContent
	           end sub
	
	           ' запуск выбранной программы
	           sub RunApplication(sApplication)
	               sCommandLine =""
	               sContent = ""
	               sDVDLetter = DetectDVD
	               set oShell = CreateObject("Wscript.Shell")
	               ' пути к запускаемым программам и сценариям
	               select case sApplication
	                   case "Restore"
	                       if CheckFile(sDVDLetter & "\Deployment\Image\Restore.bat") = true _
	                         then sCommandLine = "%COMSPEC% /C " & sDVDLetter & _
	                         "\Deployment\Image\Restore.bat"
	                   case "CommandPrompt"
	                       sCommandLine = "%ComSpec%"
	                   case "FarManager"
	                       if CheckFile(sDVDLetter & "\FarManager\Far.exe") = true then _
	                         sCommandLine = sDVDLetter & "\FarManager\Far.exe"
	                   case "NetworkInitialization"
	                       if CheckFile(sDVDLetter & "\Deployment\Utils\NetInit.bat") = true _
	                         then sCommandLine = sDVDLetter & "\Deployment\Utils\NetInit.bat"
	                   case else
	                       sCommandLine =""
	               end select
	               ' запуск программы или сценария и перерисовка служебной зоны приложения
	               if Len(sCommandLine) > 0 then
	                   oShell.Run sCommandLine,1,0
	                   sContent = sContent & "<div class=""NormalText"">The deployment " & _
	                     "disk intends for restoration " & gComputerType & " computer.</div>"
	                   sContent = sContent & "<div class=""NormalText""><br /></div>"
	                   sContent = sContent & "<div class=""NormalText"">Restoration " & _
	                     "procedure will erase all data on the computer and return the " & _
	                     "system to the factory defaults state.</div>"
	                   sContent = sContent & "<div class=""NormalText""><br /></div>"
	                   sContent = sContent & "<div class=""NormalText"">To restore your " & _
	                     "computer push ""Restore"" button.</div>"
	               else
	                   sContent = sContent & "<div class=""header4"">Warning</div>"
	                   sContent = sContent & "<div class=""NormalLink"">Sorry, but this " & _
	                     "disk does not support this function. For more information please " & _
	                     "apply to the disk provider.</div>"
	               end if
	               ExtendedZone.innerHTML = sContent
	           end sub
	
	           ' пауза в работе сценария
	           sub ccSleep(seconds)
	               set oShell = CreateObject("Wscript.Shell")
	               cmd = "%COMSPEC% /c ping -n " & 1 + seconds & " 127.0.0.1>nul"
	               oShell.Run cmd,0,1
	           end Sub
	
	           ' проверка наличия файла
	           function CheckFile(sFilePath)
	               set oFSO = CreateObject("Scripting.FileSystemObject")
	               if oFSO.FileExists(sFilePath) then
	                   CheckFile = true
	               else
	                   CheckFile = false
	               end if
	           end function
	       </script>
	       
	       <!-- стили отображения элементов приложения -->
	       <style>
	           body
	           {
	               font-family: Tahoma;
	               background-color: #f6f8ff;
	               margin: 0px 0px 0px 0px;
	               padding: 5px 5px 5px 5px;
	           }
	           .button
	           {
	               border: 0px;
	               padding: 2px 3px 2px 3px;
	               margin: 0px 3px 0px 3px;
	               font-size: 95%;
	               text-align: center;
	               color: #f6f8ff;
	               background-color: #004c99;
	           }
	           .header1
	           {
	               font-size: 24pt;
	               font-weight: bold;
	               color: #3f52b8;
	               height: 48px
	           }
	           .header2
	           {
	               font-size: 20pt;
	               color: #3f52b8;
	               height: 32px;
	           }
	           .header3
	           {
	               font-size: 14pt;
	               color: #ff6633;
	           }
	           .header4
	           {
	               font-size: 14pt;
	               color: #3f52b8;
	           }
	           .NormalLink
	           {
	               font-size: 10pt;
	               color: black;
	               cursor: default;
	               text-align: left;
	               padding-right: 20px
	           }
	           .NormalLinkMouseOver
	           {
	               font-size: 10pt;
	               color: darkblue;
	               text-decoration: underline;
	               cursor: hand;
	               text-align: left;
	               padding-right: 20px
	           }
	           .ExitLink
	           {
	               font-size: 10pt;
	               color: #FF3300;
	               cursor: default;
	               text-align: right;
	               padding-right: 20px
	           }
	           .ExitLinkMouseOver
	           {
	               font-size: 10pt;
	               color: darkblue;
	               text-decoration: underline;
	               cursor: hand;
	               text-align: right;
	               padding-right: 20px
	           }
	           .NormalText
	           {
	               font-size: 10pt;
	               text-align: left;
	           }
	           .NormalButton
	           {
	               font-size: 200%;
	               text-align: center;
	               color: darkblue;
	               font-weight: bold;
	           }
	       </style>
	</head>
	
	<!-- статическая часть приложения приложения -->
	<body onload=windowOnLoad()>
	   <div class="header1">Fujitsu-Siemens Amilo A3667G</div>
	   <table style="width: 100%;">
	       <tr>
	
	           <!-- прорисовка кнопок и ссылок -->
	           <td style="width: 170px; text-align: right; vertical-align:top; height: 380px;">
	               <table>
	                   <tr>
	                       <td><input class="NormalButton" id="Restoration" type="button"
	                         value="Restore" onclick=DrawExtendedZone(me.id) /></td>
	                   </tr>
	                   <tr>
	                       <td>
	                           <div class="header3">Additional</div>
	                           <table>
	                               <tr>
	                                   <td><div class="NormalLink" id="NetworkInitialization"
	                                     onclick=RunApplication(me.id)
	                                     onmouseover=me.className='NormalLinkMouseOver'
	                                     onmouseout=me.className='NormalLink'>Network
	                                     initialization
	                                   </div></td>
	                               </tr>
	                               <tr>
	                                   <td><div class="NormalLink" id="CommandPrompt"
	                                     onclick=RunApplication(me.id)
	                                     onmouseover=me.className='NormalLinkMouseOver'
	                                     onmouseout=me.className='NormalLink'>Command prompt
	                                   </div></td>
	                               </tr>
	                               <tr>
	                                   <td><div class="NormalLink" id="FarManager"
	                                     onclick=RunApplication(me.id)
	                                     onmouseover=me.className='NormalLinkMouseOver'
	                                     onmouseout=me.className='NormalLink'>Far manager
	                                   </div></td>
	                               </tr>
	                           </table>
	                       </td>
	                   </tr>
	               </table>
	           </td>
	           
	           <!-- прорисовка основы служебной зоны приложения -->
	           <td style="text-align: center; vertical-align:top;">
	               <div id="ExtendedZone">
	                   <div class="NormalText">The deployment disk intends for restoration
	                     Fujitsu-Siemens Amilo A3667G computer.</div>
	                   <div class="NormalText"><br /></div>
	                   <div class="NormalText">Restoration procedure will erase all data
	                     on the computer and return the system to the factory defaults state.
	                   </div>
	                   <div class="NormalText"><br /></div>
	                   <div class="NormalText">To restore your computer push "Restore"
	                     button.</div>
	               </div>
	           </td>
	       </tr>
	       <tr>
	           <td>
	               <div class="NormalText">version 1.0</div>
	           </td>
	           <td>
	               <div class="ExitLink" id="LinkExit" onclick=self.close()
	                 onmouseover=me.className='ExitLinkMouseOver'
	                 onmouseout=me.className='ExitLink'>Reboot</div>
	           </td>
	       </tr>
	   </table>
	</body>
	</html>

Данное приложение представляет собой форму с кнопкой "Restore" и несколькими ссылками для запуска дополнительных программ и сценариев.

starter.png

К сожалению Windows PE в сборке, которую мы будем делать, не может отобразить русские шрифты, поэтому все надписи сделаны на английском языке. Но интерфейс приложения очень прост для понимания:

  • кнопка "Restore" - запуск процесса восстановления системы;
  • ссылка "Network initialization" - инициализация сетевой карты;
  • ссылка "Command prompt" - запуск командной строки;
  • ссылка "Far manager" - запуск программы Far manager;
  • ссылка "Reboot" - выход из программы и перезагрузка компьютера.

Первой программой, которая запускается при запуска системы, является "Winpeshl.exe", которая является оболочкой системы Windows PE. Если при загрузке программа "Winpeshl.exe" не найдет своего конфигурационного файла, то будет выполнен запуск программы Wpeinit.exe, которая загружает сетевые ресурсы и координирует свою работу с сетевыми компонентами, а после этого откроется окно командной строки и процесс загрузки Windows PE завершится. Для того, чтобы загрузчик запустил форму "Starter.hta" при запуске операционной системы, ему нужно указать путь к приложению. Для этого нам потребуется файл "winpeshl.ini", который мы создадим в блокноте:

[LaunchApps]
	%systemroot%\system32\mshta.exe, "%systemdrive%\Starter.hta"

Так как при нажатии элементов управления форма запускает программы, то на загрузочном диске должны присутствовать вызываемые программы и сценарии. Ниже представлена структура будущего загрузочного диска с указанием месторасположения всех требуемых объектов:

[Deployment]:\
	   Deployment\
	   |   Image\
	   |   |   Image.wim
	   |   |   Restore.bat
	   |   ImageX\
	   |   |   файлы программы ImageX
	   |   Utils\
	   |       NetInit.bat
	   |       файлы дополнительных программ
	   Drivers\
	   |   файлы драйверов
	   FarManager\
	   |   файлы программы Far Manager
	   Starter\
	       Starter.hta

Сценарий форматирования диска и распаковки образа операционной системы (файл "Restore.bat"):

@ECHO OFF
	ECHO.
	ECHO.
	ECHO "Formating the disk"
	ECHO Y | FORMAT C: /Q /FS:NTFS /V:>nul
	ECHO.
	ECHO.
	ECHO "The image deployment"
	"%~DP0..\ImageX\imagex.exe" /apply "%~DP0Image.wim" 1 C:\
	ECHO.
	ECHO.
	ECHO "Please remove DVD from the DVD-drive and reboot the computer"
	ECHO.
	ECHO.
	PAUSE

Сценарий инициализации сетевого адаптера (файл "NetInit.bat"):

@ECHO OFF
	ECHO.
	ECHO.
	ECHO "Initializing the network adapter"
	WPEUTIL InitializeNetwork>nul
	PING -n 20 127.0.0.1>nul
	WPEUTIL DisableFirewall>nul
	ECHO.
	ECHO.
	IPCONFIG /renew
	ECHO.
	ECHO.
	ECHO "The network initialization is complete. Please review the log in this window."
	PAUSE

Для адаптации этого сценария к своему загрузочному диску везде в коде формы "Starter.hta" замените "Fujitsu-Siemens Amilo A3667G" на модель требуемого компьютера, также на форму можно добавить дополнительные ссылки и кнопки для запуска других программ, но не забывайте, что Windows PE ограничен в ресурсах и не может запускать сложные программы.

Создание загрузочного диска

Итак, оболочка для загрузочного диска готова, теперь необходимо создать сам загрузочный диск. Загрузочный диск - это основа диска для восстановления компьютера. С помощью этого диска мы выполним два этапа создания средства восстановления компьютера: снятие образа с существующей системы и восстановление системы с образа.

Для создания загрузочного диска нам потребуются:

  • установленный пакет WAIK;
  • драйвера компьютера (все файлы драйверов нужно скопировать в папку без подпапок);
  • файл HTA-приложения "Starter";
  • сценарии "NetInit.bat" и "Restore.bat";
  • программа ImageX (файлы программы ImageX можно скопровать из папки "\Program Files\Windows AIK\Tools\x86");
  • программа для записи ISO-образов на DVD и пишущий DVD-привод.

Если все требуемые объекты собраны, то приступим к созданию диска:

  1. Создать папку "C:\RestoreDisk".
  2. Создать папку "C:\RestoreDisk\WinPE_Tools" и скопировать в нее файл "winpeshl.ini"
  3. Создать папку "C:\RestoreDisk\WinPE_Tools\Deployment"
  4. Создать папку "C:\RestoreDisk\WinPE_Tools\Deployment\Image" и скопировать в нее файл "Restore.bat".
  5. Создать папку "C:\RestoreDisk\WinPE_Tools\Deployment\ImageX" и скопировать в нее файлы программы ImageX.
  6. Создать папку "C:\RestoreDisk\WinPE_Tools\Deployment\Utils" и скопировать в нее файл "NetInit.bat" и дополнительные программы.
  7. Создать папку "C:\RestoreDisk\WinPE_Tools\Drivers" и скопировать в нее файлы драйверов (папка "Drivers" не должна содержать подпапок).
  8. Создать папку "C:\RestoreDisk\WinPE_Tools\FarManager" и скопировать в нее файлы программы Far Manager.
  9. Создать папку "C:\RestoreDisk\WinPE_Tools\Starter" и скопировать в нее файл "Starter.hta".
  10. Открыть консоль WAIK ("\Program Files\Windows AIK\Tools\PETools\pesetenv.cmd"), все команды будут выполняться в этой консоли.
  11. Выполнить команду "copype.cmd x86 C:\RestoreDisk\WinPE" (без кавычек) - WAIK скопирует заготовку Windows PE в папку WinPE.
  12. Выполнить команду "imagex /mountrw C:\RestoreDisk\WinPE\winpe.wim 1 C:\RestoreDisk\WinPE\mount" (без кавычек) - WAIK смонтирует заготовку для ее изменения.
  13. Выполнить команду "peimg /install=WinPE-Scripting-Package C:\RestoreDisk\WinPE\mount\Windows" (без кавычек) - WAIK добавит в заготовку поддержку VBS.
  14. Выполнить команду "peimg /install=WinPE-HTA-Package C:\RestoreDisk\WinPE\mount\Windows" (без кавычек) - WAIK добавит в заготовку поддержку HTA.
  15. Выполнить команду "peimg /install=WinPE-WMI-Package C:\RestoreDisk\WinPE\mount\Windows" (без кавычек) - WAIK добавит в заготовку поддержку WMI.
  16. Выполнить команду "peimg /install=WinPE-XML-Package C:\RestoreDisk\WinPE\mount\Windows" (без кавычек) - WAIK добавит в заготовку поддержку XML.
  17. Выполнить команду "peimg /inf=C:\RestoreDisk\WinPE_Tools\Drivers\*.inf C:\RestoreDisk\WinPE\mount\Windows" (без кавычек) - WAIK добавит в заготовку драйвера.
    Внимание! Команда должна завершиться без ошибок, иначе нужно размонтировать заготовку (см. пункт 21), закрыть консоль WAIK, удалить папку "C:\RestoreDisk\WinPE", удалить проблемный драйвер (система использует драйвера для Windows Vista) и начать процедуру от пункта 10.
  18. Выполнить команду "peimg /prep /f C:\RestoreDisk\WinPE\mount\Windows" (без кавычек) - WAIK удалит неиспользуемые пакеты и закроет загрузочный образ.
  19. Выполнить команду "xcopy C:\RestoreDisk\WinPE_Tools\Starter C:\RestoreDisk\WinPE\mount\ /S /Y" (без кавычек) - HTA-приложение скопируется в загрузчик.
  20. Выполнить команду "xcopy C:\RestoreDisk\WinPE_Tools\winpeshl.ini C:\RestoreDisk\WinPE\mount\Windows\System32\ /Y" (без кавычек) - файл "winpeshl.ini" скопируется в загрузчик.
  21. Выполнить команду "imagex /unmount /commit C:\RestoreDisk\WinPE\mount" (без кавычек) - WAIK размонтирует загрузчик.
  22. Выполнить команду "xcopy C:\RestoreDisk\WinPE\winpe.wim C:\RestoreDisk\WinPE\ISO\sources\boot.wim /Y" (без кавычек) - загрузчик скопируется в директорию ISO-образа.
  23. Выполнить команду "xcopy C:\RestoreDisk\WinPE_Tools\FarManager C:\RestoreDisk\WinPE\iso\FarManager\ /Y /S" (без кавычек) - папка "FarManager" скопируется на загрузочный диск.
  24. Выполнить команду "xcopy C:\RestoreDisk\WinPE_Tools\Starter C:\RestoreDisk\WinPE\iso\Starter\ /Y /S" (без кавычек) - папка "Starter" скопируется на загрузочный диск.
  25. Выполнить команду "xcopy C:\RestoreDisk\WinPE_Tools\Deployment C:\RestoreDisk\WinPE\iso\Deployment\ /Y /S"(без кавычек) - папка "Deployment" скопируется на загрузочный диск.
  26. Выполнить команду "oscdimg -m -n -h -lDeployment -bC:\RestoreDisk\WinPE\etfsboot.com C:\RestoreDisk\WinPE\ISO C:\RestoreDisk\WinPE\Deployment.iso" (без кавычек) - WAIK создаст ISO-образ загрузочного диска.
  27. Записать образ загрузочного диска "C:\RestoreDisk\WinPE\Deployment.iso" на DVD.
    Внимание! Загрузочный диск надо создавать как проект из ISO-образа, а не как проект, содержащий файл "Deployment.iso".

Если все команды выполнены правильно и не выдали ошибок, то мы имеем готовый загрузочный диск размером около 230 МБ. Вставим его в DVD-привод компьютера и загрузимся с него. Если при сборке все драйвера внедрены корректно и соответствуют устройствам компьютера, то через несколько минут на экране появится форма "Starter.hta".

starteratboot.png
Создание образа системы
Подготовка системы для создания файла-образа

Теперь, когда у нас есть загрузочный диск, можно приступить к созданию образа операционной системы. Образ системы - это своего рода снимок с системного диска компьютера. При использовании данного снимка компьютер будет возвращен к моменту времени, когда данный снимок был сделан. Исходя из вышесказанного, проделаем некоторую работу над своей системой:

  • необходимо удалить все ненужные программы;
  • необходимо удалить с системного диска или перенести на другой диск все документы, фотографии и фильмы;
  • необходимо удалить кэш браузеров и прочих программ;
  • необходимо очистить временные папки пользователя и системы.

В итоге проделанной работы общий размер файлов и папок на системном диске не должен превышать 4Гб, а свободное место на диске C: должно превышать 6Гб.

Примечание. Более правильно было бы отформатировать системный диск, установить операционную систему и требуемые программы заново, настроить их, и уже с "чистой" системы делать снимок.
Примечание. Если требуется создать файл-образ для развертывания на нескольких компьютерах, то перед выключением системы необходимо выполнить процедуру "SysPrep" - обезличить компьютер. То есть при первой загрузке системы будет предложено ввести новое имя компьютера, пользователя и т.п.
Создание файла-образа

Итак, приступим к созданию образа системы для диска восстановления.

  1. Вставить загрузочный диск в DVD-привод и загрузить с него компьютер.
    Внимание! Не нажимайте кнопку "Restore"! При нажатии на эту копку форма запустит процедуру восстановления, то есть отформатирует жисткий диск компьютера и попытается развернуть файл image.wim, который еще не создан.
  2. Запустить командную строку - щелкнуть на форме ссылку "Command prompt".
  3. В командной строке перейти в каталог [Deployment]:\Deployment\ImageX загрузочного диска.
    Обычно диск компьютера имеет 2 раздела, следовательно DVD-привод подключен к букве E:, потому команды для перевода консоли в нужный каталог будут такими:
    E:
    CD E:\Deployment\ImageX
  4. Выполнить команду создания образа системного диска:
    "imagex /CAPTURE C:\ C:\imagex.wim DiskC" (без кавычек)
    Примечание. Образ системного раздела можно сохранить на любой диск, в том числе на сетевой ресурс. Но при использовании сетевого ресурса, сначала необходимо инициализировать сетевую карту и подключить ресурс как диск с помощью команды "net use H: \\<Server>\<Share>". Тогда команда снятия образа будет выглядеть так: "imagex /CAPTURE C:\ H:\imagex.wim DiskC"
    Если другие разделы диска компьютера также содержат важную информацию для восстановления, то их тоже можно добавить в образ системного диска. Например для добавления раздела D: нужно выполнить команду "imagex /APPEND D:\ C:\imagex.wim DiskD", но следует помнить, что размер образа не должен превышать 4Гб!
  5. Перезагрузить компьютер в обычном режиме - загрузить стандартный Windows.

В результате проделанных операций на диске C: появился образ системы, который называется "image.wim". Для просмотра и редактирования файлов *.wim используется специальная программа ImageX, которая входит в состав пакета WAIK. Также содержимое файлов образов можно просматривать с помощью архиватора 7z.

Использование программы ImageX для редактирования образа диска

Использование утилиты ImageX позволяет просматривать и изменять WIM-образы в виде обычной файловой системы на диске. При этом создается файл каталога, соответствующий образу, при обращении файловой системы к данным, содержащимся в образе, фильтр используя файл каталога, производит чтение из WIM-образа и возвращает эти данные в привычном виде обычных папок и файлов. Это позволяет легко модифицировать файлы образов стандартными средствами - например, проводником Windows.

Ниже перечислены операции, которые можно выполнять с помощью ImageX, где
<Disk> - буква диска для снятия образа,
<ImageFile> - путь с именем файла-образа,
<SplitedFile> - путь с именем разрезанного файла-образа,
<Lable> - метка имени образа,
<SplitedSize> - размер разрезанного файла-образа в Мб,
<MountPath> - путь монтирования образа.

Создание нового образа:

ImageX /CAPTURE <Disk> <ImageFile> <Lable>

Добавление раздела к существующему образу:

ImageX /APPEND <Disk> <ImageFile> <Lable>

Удаление раздела из существующего образа:

ImageX /DELETE <ImageFile> <Lable>

Вывод информации об образе:

ImageX /INFO <ImageFile>

Вывод информации и списка файлов и папок в выбранном разделе образа:

ImageX /DIR <ImageFile> <Lable>

Разделение файла-образа на несколько частей, например для записи на несколько DVD:

ImageX /SPLIT <ImageFile> <SplitedFile> <SplitedSize>

Копирование раздела из одного файла-образа в другой:

ImageX /EXPORT <ImageFile> <Lable> <ImageFile> <Lable>

Подключение раздела файла-образа как части локальной файловой системы в режиме чтения:

ImageX /MOUNT <ImageFile> <Lable> <MountPath>

Подключение раздела файла-образа как части локальной файловой системы в режиме редактирования:

ImageX /MOUNTRW <ImageFile> <Lable> <MountPath>

Отключение раздела файла-образа от локальной файловой системы без сохранения изменений:

ImageX /UNMOUNT <MountPath>

Отключение раздела файла-образа от локальной файловой системы c сохранением изменений:

ImageX /UNMOUNT /COMMIT <MountPath>

Восстановление (развертывание) раздела файла-образа на диск:

ImageX /APPLY <ImageFile> <Lable> <Disk>

Исходя из вышеперечисленного, чтобы отредактировать файл-образ программой ImageX, необходимо:

  1. Создать каталог для монтирования образов, например "C:\RestoreDisk\Mount".
  2. Убедиться, что существует файл-образ, например "C:\image.wim".
  3. Запустить консоль WAIK.
  4. Смонтировать раздел файла-образа в каталог для монтирования образов, например
    "imagex /mount C:\imagex.wim DiskC C:\RestoreDisk\Mount".
  5. Открыть папку "C:\RestoreDisk\Mount", внести необходимые изменения и закрыть папку.
  6. Размонтировать раздел файла-образа с сохранением внесенных изменений, например
    "imagex /unmount /commit C:\RestoreDisk\Mount".
Создание диска восстановления

Итак, мы создали загрузочный диск, образ диска компьютера, теперь можно приступить к завершающему этапу - объединению проектов и созданию диска восстановления.

Чтобы добавить образ системного диска выполнить следующие операции:

  1. Скопировать файл-образ "image.wim" папку "C:\RestoreDisk\WinPE\ISO\Deployment\Image".
  2. Запустить консоль WAIK.
  3. Выполнить команду сборки ISO-образа
    "oscdimg -m -n -h -lDeployment -bC:\RestoreDisk\WinPE\etfsboot.com C:\RestoreDisk\WinPE\ISO C:\RestoreDisk\WinPE\Deployment.iso" (без кавычек).
  4. Записать полученный образ на DVD.

Диск восстановления готов! Теперь у Вас есть средство для восстановления системы к состоянию, когда был сделан "снимок" системы в файл "image.wim". Все что потребуется для восстановления - это вставить диск восстановления в DVD-привод, загрузиться с него, нажать кнопку "Restore", дождаться окончания операции восстановления и перезагрузить компьютер.

Этот диск также можно использовать для восстановления документов с компьютера с испорченной операционной системой: загрузитесь с диска восстановления, инициализируйте сеть, подключите сетевой диск компьютера с исправной системой и скопируйте на него требуемые документы с испорченного компьютера.

 

В данной статье мы научились создавать диск восстановления компьютера на основе стандартных средств от Microsoft. Конечно, существуют специальные программы для сборки загрузочных дисков с более богатым интерфейсом пользователя и даже проводником Windows Explorer и веб-браузерами такими как Internet Explorer, Opera и FireFox, но такие сборщики дисков, по сути, являются "черными ящиками" для конечного пользователя. Так же непонятно обстоит дело с лицензированием программ, внедренных в диск восстановления. Поэтому я предлагаю пользоваться общепринятыми методами создания загрузочных дисков, которыми пользуются все крупные компании, а именно: использованием WAIK и собственной оболочки диска восстановления.

Продолжение темы смотрите по адресу в статье "Диск восстановления".
Виталий Бочкарев