В этом материале мы разберем как создать установочную Windows флешку. Так же рассмотрим вариант реализации установки нескольких версий ОС Windows с одной флешки. При этом установка будет возможна как в BIOS (MBR разметка диска) режиме, так и в UEFI BIOS (GPT разметка диска).
Необходимые инструменты.
Нам потребуются следующие программы. DISKPART - встроенная в Windows консольная программа для работы с дисками. BCDEDIT - тоже встроенная консольная программа для создания и редактирования BCD меню загрузчика BOOTMGR, который мы будем использовать в качестве меню установочной флешки. Far Manager - будет выступать в привычной для себя роли менеджера файлов, командной строки, а так же в роли инструмента распаковки *.iso и *.wim образов . DISM - инструмент для работы с *.wim образами и системой в целом, подробнее тут.
Для создания установочной Windows флешки я буду использовать образы Windows 10 x64, Windows 8.1 x64 и Windows 7 x64.
Подготовка флешки.
Неважно, будет ли на флешке один установочный дистрибутив, или несколько, предварительная подготовка ее будет всегда одной и той же. Главные условия - это возможность установки в UEFI BIOS и в обычном BIOS. А это уже означает что либо мы используем файловую систему FAT32 на основном разделе, либо подготавливаем флешку так как рассказано в материале "Загрузка в UEFI режиме с NTFS раздела". В данной статье я опишу первый вариант.
Как было сказано выше, все файловые манипуляции, а так же ввод консольных команд будет осуществляться с помощью Far Manager. Советую прочитать эту небольшую инструкцию по его использованию "Far Manager - инструкция".
Ну что, начнем😊?
Форматирование флешки.
Подключаем флешку. Запускаем FAR от имени администратора. Переключаемся в режим командной строки (CTRL+O).
Воспользуемся консольной программой DISKPART для создания первичного активного раздела и форматирования флешки. И так, вводим команду diskpart и жмем ENTER. Откроется консоль DISKPART'а.
Выведем список дисков, чтобы позже выбрать тот с которым мы будем работать. Пишем list disk и жмем ENTER.
В полученном списке смотрим под каким номером дисков расположена наша флешка. В моем случае это диска 2. Укажем программе что дальнейшие операции нужно производить со вторым диском. Пишем select disk 2 и нажимаем ENTER.
Очистим диск от всех разделов. Для этого вводим clean и нажимаем ENTER.
Создадим первичный раздел. Пишем create partition primary и жмем ENTER.
Сделаем созданный раздел активным. Вводим active и жмем ENTER.
Отформатируем созданный раздел в файловую систему FAT32. Пишем format fs=fat32 quick и нажимаем ENTER.
По завершении выходим из DISKPART. Пишем exit и жмем ENTER.
Установочная флешка с одним дистрибутивом Windows.
Если необходимо было создать установочную Windows флешку с одним установочным дистрибутивом, то остается только скопировать файлы с установочного образа диска в корень флешки.
К примеру, сделаем установочную флешку с одним дистрибутивом Windows 7 x64, и проверим ее загрузку в EFI и BIOS режимах.
Возвращаемся в FAR, открываем в одной файловой панели (ALT+F1) флешку, а во второй (ALT+F2) образ диска с копией Windows 7.
Теперь скопируем все содержимое образа диска в корень флешки (CTRL+*, F5).
По завершении копирования переходим в папку efi на флешке.
В данной директории отсутствует папка boot, а это означает что загрузиться в UEFI режиме не получится. Исправим это. Создадим данный каталог (F7) и перейдем в него.
В файловой панели с открытым образом, перейдем в каталог sources и провалимся внутрь файла boot.wim (CTRL+PgDown). В данном файле будут несколько версий образов обозначенными в виде директорий с цифрами. Заходим в ту которая больше по размеру (размер папки проверяется клавишей F3).
И переходим по пути Windows\Boot\EFI.
Копируем (F5) оттуда файл bootmgfw.efi в папку efi\boot на флешке.
Переименовываем (SHIFT+F6) скопированный файл в bootx64.efi.
Установочная флешка готова. Проверим ее. К сожалению проверка в виртуальной машине VirtualBox такой флешки вызвала проблемы. Поэтому приведу фотоснимки загрузки подготовленной флешки на реальной машине.
BIOS.
Доказательства того что загрузка производилась с той самой флешки 😊. |
UEFI BIOS.
Получаем сообщение о том что UEFI BIOS не понимает MBR диски.
Ошибка установки, так как диск размечен в MBR стиле. |
Конвертирование MBR в GPT.
Первым делом нужно открыть командную строку. В режиме установки она открывается сочетанием клавиш SHIFT+F10. Далее вводим в открывшемся окне diskpart. Перейдя в консоль diskpart'а выводим список дисков командой list disk, выбираем нужный командой select disk N (где N номер диска), выполняем очистку диска командой clean, и конвертируем диск в GPT формат командой convert gpt.
В итоге в окне установщика будет присутствовать неразмеченный диск, на который можно будет осуществить установку.
Важно! На GPT диск можно устанавливать только 64-битные ОС.
На этом создание установочной флешки с одним дистрибутивом Windows закончено.
Установочная флешка с несколькими дистрибутивами Windows.
Теперь рассмотрим ситуацию, когда необходимо чтобы на одной флешке присутствовало несколько установочных дистрибутивов ОС Windows. Естественно при таком подходе каждый дистрибутив будет располагаться в своей отдельной директории, глубина вложенности при этом значения не имеет. Но сначала немного теории.
Как устроен установочный диск с ОС Windows?
В корне установочного диска располагается загрузчик Windows Boot Manager (BOOTMGR).Он в свою очередь при загрузке считывает файл конфигурации bcd который располагается в папке boot для BIOS версии, и efi\microsoft\boot для EFI версии.
Оба bcd файла содержат параметры запуска среды установки.
Среда установки представлена в виде файла образа boot.wim, который располагается в директории sources. Данный образ представляет собой минимальную версию ОС Windows (Windows PE) с программой установки конкретного дистрибутива.
А сам дистрибутив, установка которого осуществляется после загрузки среды предустановки, располагается в файле install.wim или install.esd в директории sources.
Все файлы установочного дистрибутива жестко привязаны к своему местоположению. Поэтому в варианте установочной флешки с одним дистрибутивом, достаточно перенести файловую структуру с образа диска на флешку в неизменном виде, для нормального функционирования установочной флешки.
При мульти-установочном варианте, дистрибутивы будут располагаться каждый в своей директории. Это означает, что среда предустановки каждого из дистрибутивов должна знать в каком каталоге располагаются необходимые ей установочные файлы. И то, что нужен общий загрузчик, сконфигурированный на возможность выбора варианта загрузки необходимой установочной среды конкретного дистрибутива.
План действий.
Определимся с процессом создания. На данный момент подразумевается, что флешка только что после форматирования. Разобьем на шаги весь процесс.
1. Создать структуру директорий для каждого из дистрибутивов.
2. Скопировать установочные файлы дистрибутивов в подготовленные для них директории.
3. Установить и настроить единый загрузчик.
4. Сконфигурировать среду предустановки образа boot.wim каждого из дистрибутивов для возможности производить установку из заданных директорий.
Приступим...
Создание структуры директорий.
Далее я буду реализовывать придуманную мной структуру директорий, вы естественно можете использовать свою. Просто учитывайте это при конфигурировании загрузчика.
Удобнее всего чтобы все дистрибутивы располагались в поддиректориях одной общей директории в корне флешки.
Переходим в FAR и создаем (F7) в корне флешки папку WININST.
Создадим поддиректории (F7) 10x64, 8.1x64, 7x64 в директории WININST для установочных дистрибутивов.
Переходим к копированию файлов.
Копирование файлов.
Начнем с образа диска Windows 7 x64. Открываем в левой панели FAR папку WININST\7x64, а в правой проваливаемся (CTRL+PgDown) в файл образ с Windows 7 x64.
Есть два варианта, копировать с образа все файлы, или же только файлы boot.wim и install.wim/install.esd из директории sources. При втором варианте экономится около 200 МБ свободного места на флешке.
Скопируем файлы с образа по второму варианту.
Теперь скопируем дистрибутив Windows 8.1 x64. На этот раз, для примера скопируем все файлы с установочного iso образа в директорию WININST\8.1x64.
И последний дистрибутив Windows 10 x64. Скопируем только файлы boot.wim и install.esd из установочного iso образа в папку WININST\10x64.
Итоговая структура файлов выглядит так.
Установка загрузчика BOOTMGR на флешку.
В каждом из установочных windows iso образах, присутствует загрузчик BOOTMGR, с настроенной загрузкой среды предустановки из файла boot.wim. Воспользуемся загрузчиком от более свежей редакции установочного Windows образа. В моем случае это загрузчик iso образа Windows 10.
Откроем в левой панели FAR корень флешки, а в правой установочный iso образ Windows 10 x64.
Скопируем из iso образа в корень флешки файлы bootmgr и bootmgr.efi, а так же папки boot и efi.
Загрузчик установлен. Если сейчас загрузиться с флешки, то загрузчик выдаст сообщение об ошибке. (Загрузка с флешки в VirtualBox)
Так и должно быть, так как загрузчик не настроен. Настроим его.
Конфигурирование файла BCD загрузчика BOOTMGR.
Для этого перейдем в папку boot на флешке и включим режим командной строки (CTRL+O). В данной папке, как говорилось ранее, находится файл конфигурации bcd BIOS версии загрузчика BOOTMGR.
Выведем текущую конфигурацию файла bcd выполнив команду bcdedit /store bcd.
В выводе команды присутствуют две записи. Первая с идентификатором {bootmgr}, она отвечает за настройку загрузчика в целом, и вторая {default} представляющую собой загрузочную запись выполняющую запуск среды предустановки.
По умолчанию, файл конфигурации bcd взятый с установочного диска Windows настроен на загрузку среды предустановки без вывода меню. Включим отображение загрузочного меню. Для этого нам нужно добавить к записи {bootmgr} параметр displaybootmenu и выставить ему значение yes. Выполним команду bcdedit /store bcd /set {bootmgr} displaybootmenu yes.
Cнова выведем конфигурацию загрузчика командой bcdedit /store bcd. В FAR можно вывести меню с историей команд сочетанием клавиш ALT+F8. Выбираем нужную команду в истории и нажимаем ENTER для повторного выполнения, или сочетание клавиш CTRL+ENTER для вставки в командную строку.
Из вывода видно, что параметр добавлен. Загрузимся с флешки и посмотрим как теперь будет выглядеть загрузчик.
Теперь отключим таймер обратного отсчета. Делается это с помощью удаления параметра timeout из записи {bootmgr}. Выполним для этого команду bcdedit /store bcd /deletevalue {bootmgr} timeout.
Загрузимся с флешки и проверим результат.
Как видно, обратного отсчета больше нет.
Теперь настроим загрузочную запись по умолчанию для запуска среды предустановки дистрибутива Windows 10 x64. Для этого нам потребуется изменить три параметра записи {default}. Первый description отвечающий за отображаемое имя в загрузочном меню (сейчас он имеет значение Windows Setup), второй device и третий osdevice отвечающие за загрузку файла образа среды предустановки boot.wim.
Выполним последовательно команды.
bcdedit /store bcd /set {default} description "Установка Windows 10 x64"
bcdedit /store bcd /set {default} device "ramdisk=[boot]\WININST\10x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}"
bcdedit /store bcd /set {default} osdevice "ramdisk=[boot]\WININST\10x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}"
В последних двух командах мы берем оригинальные значения заданных параметров device, osdevice (с вывода команды bcdedit /store bcd) и меняем лишь путь до файла boot.wim.
Проверим результат в виртуальной машине.
В результате у нас есть один рабочий пункт меню.
Перейдем к созданию загрузочной записи для дистрибутива Windows 8.1 x64. Чтобы облегчить себе задачу, и не возиться с созданием загрузочной записи с нуля, выполним копирование имеющейся, с последующим изменением необходимых параметров.
Сделаем копию записи {default} выполнив команду bcdedit /store bcd /copy {default} /d "Установка Windows 8.1 x64".
При успешном завершении мы получим идентификатор новой записи. В моем случае идентификатор такой {3972e2ea-e2f7-11e6-a79c-94de80b88542}. Он нам понадобится для выполнения следующих команд.
Снова выполним команду bcdedit /store bcd и посмотрим как выглядит скопированная запись.
Из результата понятно что нам нужно изменить параметры device и osdevice новой записи. Выполним для этого следующие команды:
bcdedit /store bcd /set {3972e2ea-e2f7-11e6-a79c-94de80b88542} device "ramdisk=[boot]\WININST\8.1x64\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}"
bcdedit /store bcd /set {3972e2ea-e2f7-11e6-a79c-94de80b88542} osdevice "ramdisk=[boot]\WININST\8.1x64\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}"
Изменения заключаются в исправлении пути до файла boot.wim дистрибутива Windows 8.1.
Проверим результат выполнив команду bcdedit /store bcd.
Все правильно. Загрузимся в вируальной машине и проверим работоспособность созданной записи.
И последняя загрузочная запись, для дистрибутива Windows 7 x64. Все аналогично предыдущей записи. Приведу лишь команды.
bcdedit /store bcd /copy {default} /d "Установка Windows 7 x64"
bcdedit /store bcd /set {ece1124d-e31b-11e6-a79c-94de80b88542} device "ramdisk=[boot]\WININST\7x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}"
bcdedit /store bcd /set {ece1124d-e31b-11e6-a79c-94de80b88542} osdevice "ramdisk=[boot]\WININST\7x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}"
Выведем список всех записей командой bcdedit /store bcd и посмотрим на итоговый результат.
Все верно. Проверяем в виртуальной машине.
Подготовка загрузочного меню на этом закончена. Так как мы подготавливали данное меню для BIOS версии загрузчика, аналогичное меню нужно сделать и для EFI версии. Поспешу вас успокоить. Нет необходимости проделывать все вышеописанное с другим bcd файлом, достаточно просто скопировать текущий, из директории boot в директорию efi\microsoft\boot, и исправить параметр path каждой загрузочной записи установив ему значение \windows\system32\boot\winload.efi.
Скопируем файл bcd из директории boot в директорию efi\microsoft\boot.
Теперь перейдем в директорию efi\microsoft\boot и переключимся в режим командной строки (CTRL+O). Выполним последовательно команды изменения параметра path каждой загрузочной записи.
bcdedit /store bcd /set {default} path "\windows\system32\boot\winload.efi"
bcdedit /store bcd /set {3972e2ea-e2f7-11e6-a79c-94de80b88542} path "\windows\system32\boot\winload.efi"
bcdedit /store bcd /set {ece1124d-e31b-11e6-a79c-94de80b88542} path "\windows\system32\boot\winload.efi"
Выведем список всех загрузочных записей командой bcdedit /store bcd чтобы убедиться что все сделано правильно.
Проверим результат в виртуальной машине загрузившись в EFI режиме.
Загрузчик на этом полностью настроен.
Редактирование файлов boot.wim.
Это заключительный этап подготовки мульти-установочной Windows флешки. Что нужно будет сделать? Первое, смонтировать файл образ среды предустановки boot.wim. Второе, скопировать специальный командный файл mysetup.cmd и файл параметров среды предустановки winpeshl.ini в папку Windows\System32 смонтированного образа. Причем командный файл нужно предварительно отредактировать под конкретный установочный дистрибутив. Третье, размонтировать смонтированный раннее файл образ с сохранением внесенных изменений.
Для монтирования образов будет использоваться консольная программа DISM. Она по умолчанию присутствует в ОС Windows начиная с Windows 7. Если по какой то причине у вас данная программа отсутствует, то вы можете достать ее из установочного образа в папке sources, либо из того же файла boot.wim по пути Windows\System32.
Начнем с дистрибутива Windows 10 x64. В одной панели FAR перейдем в директорию содержащую файл boot.wim, для данного дистрибутива это директория WININST\10x64. Во второй панели создадим папку к которой мы будем монтировать образ boot.wim. В моем случае это будет папка E:\mnt. Активной должна быть панель с файлом boot.wim.
Перейдем в режим командной строки (CTRL+O) и выполним команду cls для очистки экрана от вывода предыдущих команд.
Для монтирования *.wim файлов нам необходимо указывать внутренний числовой индекс версии содержимого образа. Иными словами в одном *.wim файле может содержаться несколько образов, у каждого из которых свой индекс.
Отобразим информацию о файле boot.wim, чтобы узнать какой индекс указывать при его монтировании. Выполним для этого команду dism /get-wiminfo /wimfile:boot.wim.
Как видно, среда предустановки располагается вод индексом с номером 2.
Индекс: 2
Имя : Microsoft Windows Setup (x64)
Описание : Microsoft Windows Setup (x64)
Размер (байт): 1 504 124 999
Смонтируем образ. Выполним команду dism /mount-wim /wimfile:boot.wim /index:2 /mountdir:E:\mnt.
Вернемся к файловым панелям (CTRL+O). Как можно наблюдать в папке E:\mnt появилось содержимое. Файловая структура смонтированного образа.
Перейдем в папку E:\mnt\Windows\System32 и создадим (SHIFT+F4) в ней файл winpeshl.ini cо следующим содержимым.
[LaunchApps]
startnet.cmd
mysetup.cmd
Данный конфигурационный файл указывает среде предустановки какие программы необходимо запустить всесто тех, что запускаются по умолчанию.Из этого списка, файл startnet.cmd отвечает за инициализацию сети, и уже присутствует в директории E:\mnt\Windows\System32, нам остается создать файл mysetup.cmd. отвечающий за возможность установки Windows из указанной директории.
И так, создадим (SHIFT+F4) файл mysetup.cmd со следующим содержимым.
:::::::::::::::::::::::::::::::::
set InstallDir=WININST\10x64
:::::::::::::::::::::::::::::::::
@title BootDev - Windows install
@echo off
@color 37
@cls
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%I:\%InstallDir% set BootDev=%%I:
if exist %BootDev%\%InstallDir%\install.wim (
set WinImage=%BootDev%\%InstallDir%\install.wim
goto :installwim
)
if exist %BootDev%\%InstallDir%\install.esd (
set WinImage=%BootDev%\%InstallDir%\install.esd
goto :installwim
)
if exist %BootDev%\%InstallDir%\sources\setup.exe (
goto :virtualdrive
)
:installwim
echo Found %WinImage%, continue installation...
If exist %BootDev%\%InstallDir%\setup.exe (
%BootDev%\%InstallDir%\setup.exe /installfrom:%WinImage%
goto :reboot
)
if not exist X:\setup.exe (
goto :error
) else (
X:\setup.exe /installfrom:%WinImage%
goto :reboot
)
:virtualdrive
echo Creating virtual drive z: for %BootDev%\%InstallDir%
subst z: %BootDev%\%InstallDir%
echo Start installation...
cd z:\sources
z:\setup.exe || z:\sources\setup.exe
goto :reboot
:error
echo Cannot find "setup.exe" !
echo Press any key to reboot...
:reboot
wpeutil reboot
pause
На этом модификация образа boot.wim закончена. Перейдем в корень диска (в моем случае E:\), вернемся в командную строку и выполним команду dism /unmount-wim /mountdir:E:\mnt /commit для размонтирования образа с сохранением проделанных изменений.
Изменение файла boot.wim дистрибутива Windows 10 x64 на этом завершено.
Займемся дистрибутивом Windows 8.1 x64. Схема действий такая же.
Переходим в каталог содержащий файл boot.wim, а именно в WININST\8.1x64\sources. Переключаемся в командную строку и выполняем команду отображения информации о *.wim файле dism /get-wiminfo /wimfile:boot.wim для определения нужного индекса.
Нужный нам индекс второй. Монтируем образ boot.wim командой dism /mount-wim /wimfile:boot.wim /index:2 /mountdir:E:\mnt.
Создаем в директории E:\mnt\Windows\System32 файл winpeshl.ini с таким же содержанием как и в предыдущий раз.
И файл mysetup.cmd с аналогичным содержимым, с единственной поправкой. Во второй строке вместо set InstallDir=WININST\10x64 пишем set InstallDir=WININST\8.1x64. Эта строка отвечает за расположение установочного дистрибутива.
Изменение файла boot.wim дистрибутива Windows 8.1 x64 на этом завершено.
И последний дистрибутив Windows 7 x64. Проделываем все тоже самое, Переходим в каталог с файлом boot.wim (WININST\7x64). Выводим информацию об образе чтобы узнать нужный индекс dism /get-wiminfo /wimfile:boot.wim. Выполняем монтирование образа dism /mount-wim /wimfile:boot.wim /index:2 /mountdir:E:\mnt.
Создаем в папке E:\mnt\Windows\System32 файл winpeshl.ini и mysetup.cmd с содержимым представленным выше, с единственной разницей у второго во второй строке. Она должна быть изменена под расположение установочного дистрибутива, то есть выглядеть так set InstallDir=WININST\7x64.
Выходим в корень диска (в моем случае E:\), и выполняем размонтирование образа командой dism /unmount-wim /mountdir:E:\mnt /commit.
На этом мы отредактировали все файлы boot.wim каждого из дистрибутивов. Проверим запускается ли скрипт mysetup.cmd при загрузке среды предустановки каждого образа.
Установщик Windows 10 x64 |
Установщик Windows 8.1 x64 |
Установщик Windows 7 x64 |
Как видно из скриншотов, все работает. Мульти-установочная Windows флешка готова к использованию.
На этом все😊.
Комментариев нет :
Отправить комментарий