Создаём установочный носитель с множеством версий Windows NT 6.0+ без использования стороннего софта / Хабр

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

Где скачать WinSetupFromUSB

Для того, чтобы скачать WinSetupFromUSB, достаточно зайти на официальный сайт программы http://www.winsetupfromusb.com/downloads/, и загрузить её там. На сайте всегда доступна как последняя версия WinSetupFromUSB, так и предыдущие сборки (иногда бывает полезно).

Программа не требует установки на компьютер: достаточно распаковать архив с ней и запустить нужную версию — 32-разрядную или же x64.

План

Мы не будем играться с монтированием ISO, а просто разместим файлы для загрузки на установочном носителе. Но не просто перенесём эти файлы с установочных ISO (как было до этого), а немного переделаем их структуру так, чтобы можно было просто выбирать версию Windows для установки, не делая больше никаких рутинных действий (см. предысторию).
 
Также мы не будем здесь рассматривать создание дистрибутива Windows AiO (когда в одном sourcesinstall.wim располагается множество разных версий системы), поскольку такой способ имеет много недостатков, среди которых:

  • один файл огромного размера
    • нельзя использовать FAT32, а следовательно и UEFI
    • невозможно впоследствии использовать флешку меньшего объёма пропустив копирование ненужных дистрибутивов
  • трудности с обновлением конкретного дистрибутива (надо удалить из образа старый, и добавить новый)
  • не факт, что вообще можно поселить в одном образе, например, Win7 и Win10 (не проверял)

One more thingДелать мы всё будем руками и, как было обещано, без стороннего ПО. А то есть куча разных прог для создания супер мега крутых мультизагрузочных дисков, но толком не ясно что они делают и как. А у нас план — без стороннего софта и с минимальным вмешательством!
 
 

Режимы загрузки UEFI и Legacy

Исторически так сложилось, что компьютер может загружаться в двух режимах:

  • Современный режим : поддерживается практически всеми компьютерами после 2010 года выпуска;
  • : для старых компьютеров под управлением

Чтобы не было путаницы, BIOS и UEFI выполняют одну и ту же функцию – управляют запуском компьютера и настройкой базовых параметров системы. Но UEFI это новая версия BIOS’а. Для загрузки с UEFI флешки, управляющей программе достаточно найти в корне файловой системы некоторые системные файлы. Старым BIOS’ам обязательно нужна загрузочная запись (MBR) в ‘0’ секторе диска, при отсутствии которого запуск был невозможен.

Загрузочную флэшку можно записать в режиме совместимости UEFI (GPT), BIOS (MBR) или обоих одновременно. Поэтому, если носитель записан по типу UEFI, то загрузка на компьютере с BIOS будет невозможна, флешку нужно перезаписать под MBR, об этом будет ниже.

На компьютерах UEFI есть настройка, которая переключает режимы между UEFI и Legacy. Здесь должно быть выбрано значение, соответствующее формату вашего загрузочного диска. Необязательно знать какой там формат, просто попробуйте переключиться с одного на другой. Зайдите в UEFI (буду называть его ‘биос’, по-народному) с помощью горячих клавиш для вашего компьютера. Название раздела внутри биоса зависит от его версии: , , , .

uefi legacy boot

Вам нужно найти параметр и выставить значение:

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

Режим может называться по-другому: , , . Если же стоит выбор между названиями операционной системы, то это трактуется так:

  • Windows 10, Windows 8 означает UEFI;
  • Windows 7 или Other OS означает Legacy-режим.

После выбора верного режима ваш биос увидит самозагрузочную флешку в Boot Menu после перезагрузки.

Как восстановить загрузчик Windows.

Есть два пути восстановления: с помощью стандартных средств от Microsoft и с помощью сторонних программ. В первом варианте Вам понадобиться загрузочный диск или флешка со оригинальным образом Windows 7 или Windows 8. Сторонняя сборка Windows может не подойти, так как на многих сборках все начинается сразу с начала установки операционной системы. В случае использования сторонними программами — Вам подойдет загрузочный диск Hiren’s Boot CD.

MBR горит красным или желтым 

      В этом случае диск был отформатирован правильно, но на нем не установлена загрузочная запись. Чтобы это исправить, понадобиться программа bootice. Скачать ее можно по ссылке ниже или с официального сайта разработчика.

bootice скачать с нашего сайта или с сайта разработчика

      После того как вы скачали программу, распаковываем архив в любое удобное место, и в зависимости от разрядности системы запускаем BOOTICEx64_2016.06.17_v1.3.4.0.exe для 64 разрядных систем и BOOTICEx86_2016.06.17_v1.3.4.0.exe для 32 разрядных.

      После запуска в разделе «Destination disk» нужно выбрать свой накопитель, на который вы будете или уже установили Windows. В нашем случае это флешка.

      Затем нажимаем кнопку «Process MBR», откроется окно с выбором типа загрузочной записи, выбираем последний вариант, как на картинке ниже, и нажимаем кнопку «Instal/Config»

      Затем в открывшемся окошке нажимаем на кнопку «Windows NT 6.x MBR».

      После завершения процесса записи загрузочной части утилита уведомит вас об этом уведомлением. Нажимаем ОК.

      После этого закрываем программу и заново выбираем диск в WinNTSetup. Теперь огонек около MBR, должен гореть зеленым.

Как сделать загрузочную флешку с помощью программы WinSetupFromUSB

Несмотря на то, что создание загрузочной флешки — это не все, что можно делать с использованием данной утилиты (которая включает в себя еще 3 дополнительных инструмента для работы с USB накопителями), данная задача все-таки является основной. А потому я продемонстрирую самый быстрый и простой способ ее выполнить для начинающего пользователя (в приведенном примере использования флешка будет отформатирована перед записью на неё данных).

  1. Подключите флешку и запустите программу в нужной вам разрядности.
  2. В главном окне программы в верхнем поле выберите тот USB накопитель, на который будет производиться запись. Учтите, что все данные на нем будут удалены. Также отметьте галочкой пункт AutoFormat it with FBinst — это автоматически отформатирует флешку и приготовит ее к превращению в загрузочную, когда вы начнете. Для создания флешки для UEFI загрузки и установки на GPT диск используйте файловую систему FAT32, для Legacy — NTFS. На самом деле, форматирование и подготовку накопителя можно выполнить вручную с помощью утилит Bootice, RMPrepUSB (а можно сделать флешку загрузочной и без форматирования), но для начала самый простой и быстрый способ. Важное примечание: отмечать пункт для автоматического форматирования следует только если вы впервые записываете образы на флешку с помощью данной программы. Если у вас уже есть загрузочная флешка, созданная в WinSetupFromUSB и на нее требуется добавить, например, еще одну установку Windows, то просто выполняете действия ниже, без форматирования. Главное окно WinSetupFromUSB
  3. Следующий шаг — указать, что именно мы хотим добавить на флешку. Это может быть сразу несколько дистрибутивов, в результате чего мы получим мультизагрузочную флешку. Итак, отмечаем галочкой нужный пункт или несколько и указываем путь к нужным для работы WinSetupFromUSB файлам (для этого нажимаем кнопку с многоточием справа от поля). Пункты должны быть понятны, но если нет, то далее будет приведено их описание по отдельности.
  4. После того, как все необходимые дистрибутивы были добавлены, просто нажимаем кнопку Go, утвердительно отвечаем на два предупреждения и начинаем ждать. Замечу, если вы делаете загрузочный USB накопитель, на котором присутствует Windows 7, 8.1 или Windows 10, при копировании файла windows.wim может показаться, что WinSetupFromUSB завис. Это не так, наберитесь терпения и ожидайте. По завершении процесса вы получите сообщение как на скриншоте ниже. Создание загрузочной флешки завершено

Далее о том, в какие пункты и какие образы вы можете добавить в различные пункты в главном окне WinSetupFromUSB.

Образы, которые можно добавить на загрузочную флешку WinSetupFromUSB

  • Windows 2000/XP/2003 Setup — используем для того, чтобы разместить дистрибутив одной из указанных операционных систем на флешке. В качестве пути требуется указать папку, в которой находятся папки I386/AMD64 (или только I386). То есть вам нужно либо смонтировать ISO образ с ОС в системе и указать путь к виртуальному приводу дисков, либо вставить диск с Windows и, соответственно, указать путь к нему. Еще один вариант — открыть образ ISO с помощью архиватора и извлечь все содержимое в отдельную папку: в этом случае в WinSetupFromUSB нужно будет указать путь к этой папке. Т.е. обычно, при создании загрузочной флешки Windows XP, нам просто требуется указать букву диска с дистрибутивом.
  • Windows Vista/7/8/10/Server 2008/2012 — для установки указанных операционных систем нужно указать путь к файлу образа ISO с нею. Вообще, в предыдущих версиях программы это выглядело иначе, но сейчас сделали проще.
  • UBCD4Win/WinBuilder/Windows FLPC/Bart PE — также, как и в первом случае, потребуется путь к папке, в которой содержится I386, предназначено для различных загрузочных дисков на основе WinPE. Начинающему пользователю навряд ли потребуется.
  • LinuxISO/Other Grub4dos compatible ISO — потребуется, если вы хотите добавить дистрибутив Ubuntu Linux (или другой Linux) или же какой-либо диск с утилитами для восстановления компьютера, проверки на вирусы и аналогичный, например: Kaspersky Rescue Disk, Hiren’s Boot CD, RBCD и другие. На большинстве из них используется именно Grub4dos.
  • SysLinux bootsector — предназначен для добавления дистрибутивов Linux, в которых используется загрузчик syslinux. Скорее всего, не пригодится. Для использования требуется указать путь к папке, в которой находится папка SYSLINUX.

Обновление: в WinSetupFromUSB 1.6 beta 1 появилась возможность записать ISO более 4 Гб на флешку FAT32 UEFI.

Подготовка флешки

Определитесь с файловой системой

Выбор-то и не большой:

  • FAT32
  • exFAT
  • NTFS

FAT32: это ваш выбор, если вам нужна загрузка по UEFI. Но помните: в этой ФС максимальный размер файла — 4 ГиБ.
exFAT: здесь нет столь ощутимого ограничения на размер файла, но загрузка по UEFI невозможна. Кроме того, некоторые загрузчики (например, Grub4Dos) не могут корректно с ней работать. Но BOOTMGR работает. Upd: По крайней мере, некоторые Live Linux ISO не запускаются .
NTFS: тут всё хорошо, за исключением того, что не все компьютеры поддерживают загрузку по UEFI с этой ФС.

Вот и получается:
обязательно нужен UEFI — FAT32, не обязательно или не нужен вовсе — NTFS.

Отформатируйте флешку в выбранную вами ФС.
Примечание: если ваша флешка уже имеет нужную ФС, то форматировать её необязательно. Но я бы всё-таки отформатировал ;)
 
 

Сделайте раздел активным

Это нужно для того, чтобы компьютер мог загрузиться с него (ну, или хотя бы попытаться…).
Тут есть различие между USB-HDD и флешками.

Для USB-HDD это можно сделать так:
Откройте оснастку Управление дисками (diskmgmt.msc). Щёлкните правой кнопкой мыши по нужному разделу своего USB-HDD и выберите «Сделать раздел активным». Если этот пункт контекстного меню неактивен — значит раздел уже активен.

Для флешки этот вариант не пройдёт. Тут пункт контекстного меню «Сделать раздел активным» будет всегда неактивен. Поэтому нужно использовать универсальный способ:
Откройте Командную строку (cmd.exe). Выполните такие команды:
 

DiskPartlist diskselect disk <номер вашей флешки (можно идентифицировать по размеру из предыдущей команды)>list partselect part <номер раздела, который требуется сделать активным (обычно 1)>activeexit

Пример
Пример активации раздела с помощью DiskPart

Теперь ваша флешка является загрузочной. Но она пока пуста. Самое время наполнить её смыслом.
 
 

Отключение Secure Boot

Функция материнской платы (безопасный запуск) была задумана для предотвращения запуска несанкционированных операционных систем (вирусов) при загрузке ноутбука. Всё бы ничего, но именно из-за этой функции, иногда, BIOS не может загрузиться с флешки в случаях, когда вам требуется установить Windows, Linux или просто запустить портативную ОС.

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

Восстановление загрузчика с помощью средств Microsoft.

Способ для Windows 8 и Windows 8.1

Шаг 1. Перезагружаем компьютер, при загрузке нажимаем кнопку Delete и попадаем в BIOS. В разделе «Boоt Device Priоritу» надо выставить значение CDROM в случае диска или USB в случае использования загрузочной флешки.

Нужно параметру «1st Boot Device» присвоить значение «CDROM» (или USB-HDD для флешки). Нажимаем F10 для сохранения конфигурации BIOS. Перезагружаем компьютер.

Шаг 2. При загрузке с диска должно открыться окно Установка Windows:

В самом низу выбираем пункт «Восстановление системы».
Будет проведена проверка жестких дисков и будет отображен список доступных операционных систем. Зачастую в списке один пункт, его и надо выбрать:

Откроется окно «Выбор действия»:

Кликаем на значок «Диагностика» — откроется меню раздела:

 Выбираем пункт «Дополнительные параметры».

Шаг 3. Выбираем пункт «Автоматическое восстановление»:

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

Шаг 4. В случае, если автоматическое восстановление не выявило проблем при диагностике либо не помогло и  при запуске все равно Windows 8 не загружается и появляется ошибка «Bootmgr is Missing», то снова загружаемся с диска и в разделе «Дополнительных параметров» диагностики выбираем пункт «Командная строка»:

Откроется командная строка Windows 8 или Windows 8.1.

Шаг 5. В Командной строке Windows 8 вводим команду:
bootrec.exe /FixMbr
Нажимаем Enter.
Ключ «/FixMbr» используется для записи в системный раздел основной загрузочной записи, совместимой с Windows 8 и Windows 8.1. Этот параметр не перезаписывает существующую таблицу разделов.
Затем вводим команду:
bootrec.exe /FixBoot 
и снова нажимаем Enter.
Ключ «/FixBoot» используется для записи в системный раздел нового загрузочного сектора с использованием загрузочного сектора, совместимого с Windows 8 и Windows 8.1.

Перезагружаем компьютер и проверяем загрузку Windows 8.

Шаг 6. Если после перезагрузки ошибка «BOOTMGR is missing — Press Ctrl+Alt+Del to restart» не устранилась — снова запускаем командную строку, где набираем команду
bootrec.exe /RebuildBcd
Ключ «/RebuildBcd» используется для полного перестроения данных конфигурации. Результатом выполнения программы с этим ключом будет сканирование жесткого диска на наличие операционной системы Windows и запрос на добавление её в список загрузки.

Нажимаем — Да (Y) и перезагружаем компьютер и проверяем.

После выполненных выше операций обычно удается восстановить загрузчик Windows 8 и Windows 8.1. Если же приведенные способы не помогли, то нужно пробовать восстанавливать загрузку с помощью сторонних программ. И если и они не помогут — переустанавливать Windows 8, так как скорее всего ничего больше не поможет.

Способ для Windows 7.

Шаг 1. Перезагружаем компьютер, при загрузке нажимаем кнопку Delete и попадаем в BIOS. В разделе «Boоt Device Priоritу» надо выставить значение «CDROM» в случае диска или USB в случае использования загрузочной флешки.

Нужно параметру «1st Boot Device» присвоить значение «CDROM» (или USB-HDD для флешки). Нажимаем F10 для сохранения конфигурации BIOS. Перезагружаем компьютер.

Шаг 2. При загрузке с диска Вы увидите вот такое окно начала установки Windows 7:

Здесь нужно выбрать пункт «Восстановление системы».
После проверки жестких дисков Вам будет показан список доступных операционных систем:

Как правило в списке только одна система, хотя встречаются пользователи, у которых на винте 2, 3 а то и больше операционных систем. Но такое встречается реже.
Кликаем кнопку Далее и нам открывается окно «Параметры восстановления системы».

Шаг 3. Выбираем пункт «Восстановление запуска». Будет проведена диагностика системы. Если будет обнаружена ошибка, Вы увидите сообщение:

Нужно будет нажать кнопку «Исправить и перезапустить».
После этого система должна загрузиться в нормальном режиме.

Шаг 4. Если после перезагрузки нормальная загрузка Windows 7 не восстановилась или при диагностике системы проблем не выявлено:

То нужно в окне «Параметры восстановления» системы выбрать пункт «Командная строка»:

Шаг 5. В командной строке Windows вводим команду bootrec.exe /FixMbr и нажимаем Enter. Затем вводим команду bootrec.exe /FixBoot и нажимаем Enter. О том, что означают ключи /FixMbr и /FixBoot я уже писал выше.

Перезагружаем компьютер и проверяем.

Шаг 6. Если после перезагрузки компьютера работа загрузчика не восстановилась и ошибка BOOTMGR is missing не устранилась — снова запускаем командную строку и набираем команду:
bootrec.exe /RebuildBcd

Ключ «/RebuildBcd» выполняет поиск установленных операционных систем, совместимых с Windows 7 и выполнит полную перестройку данных конфигурации загрузки. Результатом работы программы станет сканирование жесткого диска на наличие операционной системы Windows и запрос на добавление её в список загрузки. Нажимаем — Да (Y) и перезагружаем компьютер.

Шаг 7. Если ошибка загрузки Windows 7 не устранилась, то есть ещё один, способ от Microsoft — утилита BCDBoot, которая используется для создания системного раздела или восстановления среды загрузки, расположенной в системном разделе.
В командной строке нужно набрать команду:
bcdboot.exe c:windows (Если у Вас Windows установлена на другом диске — исправьте в команде путь, например на d:windows).

Результатом будет сообщение «Boot file successfully created». Перезагружаем компьютер и проверяем.

Восстановление нормальной загрузки Windows с помощью Hiren’s Boot CD.

К сожалению,  не всегда есть оригинальный загрузочный диск  Windows 7 или Windows 8 под рукой, а выкачивать его из Интернета бывает весьма проблематично. В этом случае на помощь  обычно приходят различные небольшие загрузочные сборки — так называемые liveCD, которые можно так же записать на диск или флешку. На мой взгляд, самый оптимальный, удобный и легкий сервисный набор программ для восстановления операционной системы Windows 7 или Windows 8 — это «Hiren’s Boot CD».  Утилит для восстановления загрузчика Windows на диске немало, поэтому я покажу те, которыми чаще всего пользуются системные администраторы: графическая программа «Paragon Hard Disk Manager» и консольная утилита «MBRfix».
Сначала Вам надо скачать «Hiren’s Boot CD», записать его на флешку или CD-диск и выставить в BIOS загрузку с CDROM или USB-HDD, в зависимости от того — с диска или флешки Вы загружаетесь.
Если всё сделано правильно, Вы увидите стартовое меню «Hiren’s Boot CD»:

Вариант 1. Paragon Hard Disk Manager.

Для запуска программы «Paragon Hard Disk Manager» Вам нужно выбрать пункт «Программы DOS» или «Запуск программ DOS (альтернативный метод)», а затем подраздел «Разбивка дисков (Disk Partition Tools)» и, соответственно пункт «Paragon Hard Disk Manager».

Теперь надо в главном окне программы выбрать пункт меню «Мастера» => «Восстановление загрузки Windows»:

Откроется меню «Восстановление загрузки Windows»:

Выбираем первый пункт — «Поиск установленных копий Windows» и нажимаем кнопку Далее.

Программа сканирует диски и выдаст список операционных систем, в котором обычно только один пункт. Ставим галочку «Изменить загрузочную запись» и нажимаем кнопку Далее.

Программа «Paragon Hard Disk Manager» перезапишет загрузочную запись (MBR). Нажимаем кнопку Готово и перезагружаем компьютер.

Вариант 2. Утилита MBRFix.

Для запуска утилиты MBRFix надо в стартовом меню Hiren’s Boot CD выбрать пункт «Mini Windows XP». После того, как операционная система загрузиться, надо нажать кнопку «Пуск» => «Меню HBCD».

В открывшемся меню HBCD надо выбрать пункт «Partition/Boot/MBR» => «Commandline» => «MBRFix»:

Для восстановления загрузочной записи Windows (MBR) и загрузчика Windows на диске C: для Windows 7параметры команды должный быть такие:
MBRFix.exe /drive 0 fixmbr /win7 /yes.
Чтобы посмотреть информацию о диске — можно ввести команду:
MBRFix.exe /drive 0 driveinfo.
На Windows 8 и Windows 8.1 эту утилиту я ещё не проверял, потому рекомендовать не могу.

Настройка

Меню

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

Помните, раньше мы копировали файлы диспетчера загрузки? Теперь нужно отредактировать файлы данных конфигурации загрузки. Это:
 

[boot] |- bcd[efi] |- [microsoft] |- [boot] |- bcd — только если нужна загрузка по UEFI (ФС флешки должна быть FAT32! (на некоторых компьютерах работает и с NTFS))

Редактируем BCD

Сначала включим отображение меню. И уберём таймаут, чтобы оно отображалось столь угодно долго до совершения выбора пользователем (мы ведь не просто загружаемся, а систему устанавливаем! Выбор должен быть осознанным ◕‿◕).
Чтобы сделать это выполните команды:
 

bcdedit /store <буква_диска>:bootbcd /set {bootmgr} DisplayBootMenu Truebcdedit /store <буква_диска>:bootbcd /deletevalue {bootmgr} Timeout

где <буква_диска> здесь и далее — ваша флешка.

Дальше будем добавлять пункты установки для каждой из систем. Сначала выполним команду
bcdedit /store <буква_диска>:bootbcd /enum {default}
чтобы узнать значение device и osdevice пункта по-умолчанию. Они будут приблизительно такими:

device ramdisk=[boot]sourcesboot.wim,{<GUID параметров ramdisk>}osdevice ramdisk=[boot]sourcesboot.wim,{<GUID параметров ramdisk>}

Как правило, значения этих параметров в одном пункте загрузки одинаковые.
Мы будем для каждого дистрибутива Windows изменять путь к образу c WinPE (boot.wim), при этом оставляя таким же <GUID параметров ramdisk>. Это будут единственные различия между пунктами загрузки разных дистрибутивов.
 

Подробнее об этих параметрах

Параметр device определяет устройство, на котором лежит windowssystem32bootwinload.exe (это значение указано в параметре path).
Параметр osdevice определяет устройство, на котором лежит windows (это значение указано в параметре systemroot).

В нашем случае значения device и osdevice состоят из пути к WIM-образу системы (в данном случае WinPE), который загружается в оперативную память (ramdisk). После запятой указан GUID записи, которая определяет параметры устройства, с которого будет загружаться WinPE (в нашем случае — ramdisk). На неё можно взглянуть подробнее:

bcdedit /store <буква_диска>:bootbcd /enum {<GUID параметров ramdisk>}Параметры устройств——————-идентификатор {<GUID параметров ramdisk>}ramdisksdidevice bootramdisksdipath bootboot.sdi

Ничего особенного. Будем использовать эти же параметры устройства для других пунктов загрузки.

boot.sdi — Это по-сути образ пустого NTFS-тома. А в этот том уже монтируется образ из boot.wim.

Поскольку пункт по-умолчанию уже полностью настроен (кроме значений device и osdevice), то мы просто будем его копировать и изменять.
 

Добавление пунктов

  1. Скопировать пункт по-умолчанию:
    bcdedit /store <буква_диска>:bootbcd /copy {Default} /d «<название нового пункта>»
    Будет выдано сообщение с GUID нового пункта. Приблизительно такое:
    Запись успешно скопирована в {<GUID новосозданного пункта>}
     
  2. Изменить в нём вышеупомянутые параметры:
    bcdedit /store <буква_диска>:bootbcd /set {<GUID новосозданного пункта>} device ramdisk=[boot]<путь к дистрибутиву>boot.wim,{<GUID параметров ramdisk>}
     
    bcdedit /store <буква_диска>:bootbcd /set {<GUID новосозданного пункта>} osdevice ramdisk=[boot]<путь к дистрибутиву>boot.wim,{<GUID параметров ramdisk>}
     
    Эти две команды отличаются только одним словом (выделено).

Примеры

Здесь приведено несколько примеров создания новых пунктов загрузки на основе пункта по-умолчанию.
Не копируйте тупо команды отсюда! У вас будут другие GUID-ы. Эти примеры только чтобы понять что к чему.

bcdedit /store <буква_диска>:bootbcd /copy {Default} /d «Windows 7 (32-bit) Setup»Запись успешно скопирована в {90fff3ef-3b91-11e6-839b-d850e607fea0}.bcdedit /store <буква_диска>:bootbcd /set {90fff3ef-3b91-11e6-839b-d850e607fea0} device ramdisk=[boot]WinDistsWin_7_ia32boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}bcdedit /store <буква_диска>:bootbcd /set {90fff3ef-3b91-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]WinDistsWin_7_ia32boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:bootbcd /copy {Default} /d «Windows 7 (64-bit) Setup»Запись успешно скопирована в {e5f9b9b7-3bb1-11e6-839b-d850e607fea0}.bcdedit /store <буква_диска>:bootbcd /set {e5f9b9b7-3bb1-11e6-839b-d850e607fea0} device ramdisk=[boot]WinDistsWin_7_x64boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}bcdedit /store <буква_диска>:bootbcd /set {e5f9b9b7-3bb1-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]WinDistsWin_7_x64boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:bootbcd /copy {Default} /d «Windows 8.1 (32-bit) Setup»Запись успешно скопирована в {cda5bc88-3bb4-11e6-839b-d850e607fea0}.bcdedit /store <буква_диска>:bootbcd /set {cda5bc88-3bb4-11e6-839b-d850e607fea0} device ramdisk=[boot]WinDistsWin_8.1_ia32boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}bcdedit /store <буква_диска>:bootbcd /set {cda5bc88-3bb4-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]WinDistsWin_8.1_ia32boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:bootbcd /copy {Default} /d «Windows 8.1 (64-bit) Setup»Запись успешно скопирована в {330e8636-3bb5-11e6-839b-d850e607fea0}.bcdedit /store <буква_диска>:bootbcd /set {330e8636-3bb5-11e6-839b-d850e607fea0} device ramdisk=[boot]WinDistsWin_8.1_x64boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}bcdedit /store <буква_диска>:bootbcd /set {330e8636-3bb5-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]WinDistsWin_8.1_x64boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:bootbcd /copy {Default} /d «Windows 10 (32-bit) Setup»Запись успешно скопирована в {87c0826c-3bb5-11e6-839b-d850e607fea0}.bcdedit /store <буква_диска>:bootbcd /set {87c0826c-3bb5-11e6-839b-d850e607fea0} device ramdisk=[boot]WinDistsWin_10_ia32boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}bcdedit /store <буква_диска>:bootbcd /set {87c0826c-3bb5-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]WinDistsWin_10_ia32boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:bootbcd /copy {Default} /d «Windows 10 (64-bit) Setup»Запись успешно скопирована в {dd7288b2-3bb8-11e6-839b-d850e607fea0}.bcdedit /store <буква_диска>:bootbcd /set {dd7288b2-3bb8-11e6-839b-d850e607fea0} device ramdisk=[boot]WinDistsWin_10_x64boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}bcdedit /store <буква_диска>:bootbcd /set {dd7288b2-3bb8-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]WinDistsWin_10_x64boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:bootbcd /copy {Default} /d «Other Windows Setup (from sources)»The entry was successfully copied to {c9ff9b3a-3c53-11e6-839c-d850e607fea0}.

Завершение редактирования BCD

После того, как все пункты добавлены удаляем пункт по-умолчанию:
bcdedit /store <буква_диска>:bootbcd /delete {default}

Редактируем BCD для UEFI

Если вам нужна загрузка по UEFI, то вам нужно также отредактировать другое хранилище конфигурации загрузки (то, которым руководствуется BootMgFw.efi).

Тут всё точно так же как и там, за исключением пути к файлу BCD.
Т.е. вместо
bcdedit /store <буква_диска>:bootbcd
следует использовать
bcdedit /store <буква_диска>:efimicrosoftbootbcd.

Нельзя просто так взятьПримечание. Вы не можете просто так взять и скопировать bootbcd в efimicrosoftbootbcd! Они должны различаться как минимум параметрами path во всех пунктах, включая {memdiag}.

windowssystem32bootwinload.exe vs windowssystem32bootwinload.efi
bootmemtest.exe vs efimicrosoftbootmemtest.efi

Update
Посредством UEFI могут загружаться все 64-битные версии Windows NT 6.0+, а из 32-битных — только Windows 8+.
Кроме того, в пунктах установки ОС, предшествующих Windows 8, не должно быть параметра IsolatedContext со значением Yes. Иначе, у вас просто не запустится среда предустановки этой системы (т.е. вы не сможете установить, например, Windows 7 x64 в режиме UEFI).

Windows PE

Итак, у нас при загрузке с флешки уже есть рабочее меню, где мы можем выбирать нужную версию Windows. Загрузитесь и убедитесь, что при выборе определённого пункта меню загружается соответствующая Windows PE.

Проблема

Мы ещё не всё сделали. Ведь, если попытаться установить какую-то из систем, то получим неприятный сюрприз:

No Sources Error

Почему это произошло? Дело в том, что программа установки ищет образ install.wim или сжатый install.esd в папке sources на всех доступных томах. Windows 10 в случае неудачи ещё пытается искать в папках x64sources или x86sources в зависимости от разрядности. В нашем случае — не находит нигде.
Она думает, что, наверное, нет драйвера от установочного носителя и предлагает его загрузить.

Варианты решения

Вы уже можете установить Windows из своей флешки, вручную правильно запустив программу установки. Есть несколько вариантов.
 

  • Файл ответов
    С помощью файла ответов можно указать множество параметров установки. В том числе образ, откуда устанавливать систему.
    Путь к образу указывается в элементе Microsoft-Windows-Setup | ImageInstall | OSImage | InstallFrom | Path.
    Заставить программу установки использовать файл ответов можно либо явно:
    setup.exe /unattend:<путь к файлу ответов>
    Либо поместив его по одному из заранее определённых путей.
    Но в этом способе есть проблема. В файле ответов должен быть абсолютный путь. Удобно, когда надо устанавливать из сети. Но не практично для нашего случая. Компьютеры разные — буква флешки будет меняться. Не наш вариант. А ещё и явно указывать путь к файлу ответов — ну вообще не вариант.
     
  • Запуск программы установки с параметром
    Можно найти образ с помощью сценария cmd.exe. А потом запустить установщик, явно указав ему куда смотреть:
    X:sourcessetup.exe /installFrom:<путь к install.wim или install.esd>
    Этот вариант подходит. Вы сможете установить систему как с обычного установочного ISO.
    Но есть вариант ещё лучше.
     
  • Запуск программы установки с флешки
    Можно запустить установку не с X: (монтированный образ boot.wim), а прямо с флешки! Таким образом не придётся явно указывать путь к install.wim или install.esd. Программа установки сама найдёт этот файл рядом с собой (в папке запуска)!
    Так, например, для установки Win 10 x64 нужно выполнить:
    <буква флешки>:WinDistsWin_10_x64setup.exe
    У этого способа много преимуществ. Ведь мы фактически полностью отказываемся от использования чего-либо из X:sources, в пользу соответствующей папки на флешке. А это значит, что мы впоследствии можем модифицировать её без внесения изменений в образ boot.wim. Удобно же! Например, можно положить сюда индивидуальный (для этого конкретного дистрибутива) файл ответов (рядом с setup.exe) и он будет подхвачен согласно 6-му пункту отсюда.

Решение

Это всё хорошо, но мы же не хотим вручную запускать установку, правда? Хотим чтобы оно само. Значит надо сделать так, чтобы оно само запускало установку откуда надо.

Варианты автоматизации

Рассмотрим запуск Windows PE, чтобы понять, как с минимальным вмешательством заставить её выполнять то, что нам нужно.
В параметре реестра HKLMSYSTEMSetupCmdLine указано первое приложение, которое выполняется после запуска WinPE. Это winpeshl.exe. Оно делает всякие полезные вещи, как то:

  1. Включает фоновую картинку (запуск WallpaperHost.exe)
  2. Проверяет, есть ли рядом файл winpeshl.ini. Если есть — выполняет из него команды.
  3. Инициализирует PNP
  4. Если файла winpeshl.ini не было — пытается запустить одно из приложений (в порядке приоритета):
    • X:$Windows.~BTsourcessetup.exe
    • X:setup.exe
    • X:windowssystem32cmd.exe /k startnet.cmd

Нам нужно выполнить свой сценарий, который найдёт на флешке нужный файл и запустит его. Как видите, у нас не один вариант:

  • добавить файл сценария и winpeshl.ini с командой на запуск cmd.exe для выполнения нашего сценария
  • удалить/переименовать X:setup.exe и отредактировать startnet.cmd

Я продемонстрирую вариант только с добавлением файлов (минимальное вмешательство, да).
 

Модифицируем boot.wim

На примере дистрибутива Windows 10 x64.
Итак, нам нужно редактировать содержимое тома X:, которое монтируется из boot.wim. Сначала узнаем индекс образа для монтирования:
 

dism /get-wimInfo /wimFile:<буква_флешки>:WinDistsWin_10_x64boot.wimCистема DISMВерсия: 6.3.9600.17031Сведения об образе : <буква_флешки>:WinDistsWin_10_x64boot.wimИндекс: 1Имя : Microsoft Windows PE (x64)Описание : Microsoft Windows PE (x64)Размер (байт): 1 357 917 901Индекс: 2Имя : Microsoft Windows Setup (x64)Описание : Microsoft Windows Setup (x64)Размер (байт): 1 540 370 231Операция успешно завершена.

Нам нужен не чистый Windows PE, а установочный — Windows Setup. Т.е. индекс — 2.
Ещё нам нужно создать папку, куда будем монтировать образ. Я создал C:mnt.
 

dism /mount-wim /wimFile:<буква_флешки>:WinDistsWin_10_x64boot.wim /index:2 /mountDir:C:mntCистема DISMВерсия: 6.3.9600.17031Подключение образа[==========================100.0%==========================]Операция успешно завершена.

Теперь, как и запланировали, копируем в C:mntWindowsSystem32 файлы winpeshl.ini и свой файл сценария (я назвал его runsetup.cmd).
 

Содержимое winpeshl.ini
[LaunchApps]cmd.exe, «/k runsetup.cmd»

Содержимое runsetup.cmd
@echo offTitle TishSerg Windows Setup Bootstrapper v1.0color 9fverecho.echo [%time%] Initializing Windows PE…Wpeinitecho.Wpeutil UpdateBootInfo > nulfor /f «tokens=3» %%a in ( ‘reg query «HKLMSystemCurrentControlSetControl» /v PEBootRamdiskSourceDrive’) do set RamdiskSourceDrive=%%aecho [%time%] Detected setup media: %RamdiskSourceDrive%echo.:: Windows dist path Affixset WinDistAfx=WinDistsWin:: Find Windows arch Affixif «%PROCESSOR_ARCHITECTURE%» == «x86» ( set WinArchAfx=ia32) else ( set WinArchAfx=x64):: Find Windows version Affixfor /f «tokens=3» %%b in ( ‘reg query «HKLMSOFTWAREMicrosoftWindows NTCurrentVersion» /v CurrentBuildNumber’) do set /a CurrentBuildNumber=%%bif %CurrentBuildNumber% lss 6100 ( :: Build < 6100 is Vista set WinVerAfx=Vista echo [%time%] Determined version of Windows: Vista (build %CurrentBuildNumber%^) %PROCESSOR_ARCHITECTURE%) else if %CurrentBuildNumber% lss 7700 ( :: Build < 7700 is 7 set WinVerAfx=7 echo [%time%] Determined version of Windows: 7 (build %CurrentBuildNumber%^) %PROCESSOR_ARCHITECTURE%) else if %CurrentBuildNumber% lss 9300 ( :: Build < 9300 is 8 set WinVerAfx=8 echo [%time%] Determined version of Windows: 8 (build %CurrentBuildNumber%^) %PROCESSOR_ARCHITECTURE%) else if %CurrentBuildNumber% lss 9700 ( :: Build < 9700 is 8.1 set WinVerAfx=8.1 echo [%time%] Determined version of Windows: 8.1 (build %CurrentBuildNumber%^) %PROCESSOR_ARCHITECTURE%) else ( :: Build > 9700 is 10 set WinVerAfx=10 echo [%time%] Determined version of Windows: 10 (build %CurrentBuildNumber%^) %PROCESSOR_ARCHITECTURE%)echo.echo [%time%] Launching Windows Setup (%RamdiskSourceDrive%%WinDistAfx%_%WinVerAfx%_%WinArchAfx%setup.exe^)%RamdiskSourceDrive%%WinDistAfx%_%WinVerAfx%_%WinArchAfx%setup.exe:: When closed Windows Setupcolor 2eecho.echo [%time%] Windows Setup closedecho WScript.Quit MsgBox(«You have closed Windows Setup.»+vbCrlf+»Run ‘System restore’ instead? Or reboot?»+vbCrlf+vbCrlf+»Yes — Run ‘System restore'»+vbCrlf+»No — Reboot»+vbCrlf+»Cancel — ‘Just give me a Command line!'», vbQuestion+vbYesNoCancel, «Setup cancelled») > msgdlg.vbscscript msgdlg.vbs > nulif %errorLevel% == 6 ( echo [%time%] Here is Task Manager for you :^) start taskmgr echo [%time%] Run ‘System restore’ (%SystemDrive%SourcesrecoveryRecEnv.exe^) %SystemDrive%SourcesrecoveryRecEnv.exe) else if %errorLevel% == 7 ( echo [%time%] Will reboot now… Wpeutil Reboot)

Зачем такой сложный `runsetup.cmd`?

А за тем, чтобы файлы winpeshl.ini и runsetup.cmd были универсальны для всех дистрибутивов Windows NT 6.0+. Т.е. их не нужно отдельно модифицировать под установку Win7, Win8 и т.п. Путь к папке дистрибутива определяется автоматически.

Также добавлен простой способ запуска Восстановления системы, т.к. из-за прямого запуска sourcessetup.exe вместо X:setup.exe мы теряем страницу:
image

Разница только в том, что в нашем случае мы язык выбираем уже после запуска установки Windows или Восстановления системы. В оригинальных ISO образах X:setup.exe сообщает языковые настройки запускаемым через него приложениям.

Внимание! В предоставленном мной runsetup.cmd путь к программе установки определяется по шаблону <буква_флешки>:\<путь_и_префикс_к_папкам_дистрибутивов>_<версия>_<архитектура>setup.exe
(строка %RamdiskSourceDrive%%WinDistAfx%_%WinVerAfx%_%WinArchAfx%setup.exe). Т.е. в моём случае сценарий будет формировать пути (в зависимости от того, из какого дистрибутива был запущен) наподобие:

  • D:WinDistsWin_7_ia32setup.exe
  • D:WinDistsWin_10_x64setup.exe

Если вы создавали на флешке другую структуру папок и их названий — сделайте соответствующие изменения.

Осталось отмонтировать образ с сохранением изменений:
 

dism /unmount-wim /mountDir:C:mnt /commitCистема DISMВерсия: 6.3.9600.17031Файл образа: <буква_флешки>:WinDistsWin_10_x64boot.wimИндекс образа: 2Сохранение образа[==========================100.0%==========================]Отключение образа[==========================100.0%==========================]Операция успешно завершена.

Готово! Теперь нужно повторить эти действия для остальных boot.wim. После этого у вас на флешке будут все желаемые дистрибутивы, которые вы сможете просто выбирать из меню и продолжать установку как будто на флешке только одна версия Windows!

Видео инструкция по использованию WinSetupFromUSB

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: