Для работы проектов iXBT.com нужны файлы cookie и сервисы аналитики.
Продолжая посещать сайты проектов вы соглашаетесь с нашей
Политикой в отношении файлов cookie
Проработав долгое время системным администратором, который был вынужден по совместительству исполнять ещё и обязанности эникейщика, я всегда мечтал о ПО, что избавит меня от неудобной коллекции USB-флешек. Благо, мои молитвы были услышаны. В этом небольшом материале вы познакомитесь с ПО, которое всего в два клика предоставит вам возможность заиметь на одной USB-флешке/диске множество установщиков с различными ОС.
Ventoy — это бесплатное программное обеспечение с открытым исходным кодом, которое позволяет с помощью простого переноса скаченных образов установщиков ОС на любой современный носитель, создать загрузочную USB-флешку/диск со множеством ОС на одном устройстве.
В отличие от похожих программ для создания загрузочных USB-флешек Ventoy не дополняет и не перезаписывает оригинальные файлы установщика на носителе. Принцип работы построен таким образом, что ПО выполняет установку микропрограммы на малую часть вашего носителя, которая при загрузке ПК монтирует и распаковывает из образа диска в оперативную память файлы для последующей установки системы, тем самым не дополняя и не изменяя их оригинальную целостность, что положительно сказывается на безопасности ОС и последующих установках.
В использование Ventoy нет ничего сложного, но пара нюансов могут вызвать небольшие затруднения.
1. Скачиваем нужную версию программы и распаковываем с помощью 7-Zip в любое удобное место.
2. Подключаем наш носитель к ПК и запуска от имени администратора файл Ventoy2Disk.exe. Во вкладке Language выбираем желаемый язык.
3. Выбираем в списке устройств наш носитель и нажимаем на кнопку Установить. Подтверждаем форматирование (Все данные буду уничтожены). В зависимости от типа носителя процесс установки может занять до 5 минут. Пожалуйста, не вынимайте в это время активное устройство, а дождитесь окончания записи.
Если вы всё сделали правильно, то при вводе команды diskmgmt.msc у вашего носителя появится новый скрытый отдельный раздел, а само устройство получит имя Ventoy.
4. Переносим образы диска желаемых ОС в корень подготовленного носителя.
5. Перезагружаем ПК. Выбираем нашу USB-флешку с помощью F11 или F8 и в интерфейсе микропрограммы выбираем образ ОС для последующей установки.
6. Наслаждаемся магией программы.
Затратив минимум усилий, мы разместили множество установочных образов разных ОС на одном носителе и избавили себя от необходимости хранения целой коллекции бесполезных USB-флешек. Уважайте свободу, используйте только проверенное ПО и ни в коем случае не предавайте себя.
Время на прочтение18 мин
Количество просмотров126K
Здравствуйте. Сегодня я расскажу как можно создать единый установочный носитель с множеством разных версий Windows не прибегая к использованию стороннего ПО. Таким образом вы будете полностью понимать какие манипуляции мы выполняем.
Также я сделаю упор на то, чтобы как можно меньше энтропии привносить в этот мир изменять структуру оригинальных установочных дистрибутивов.
Кому интересно — прошу под кат.
Предыстория
Последние пару лет я устанавливал ОС линейки Windows NT 6.0+ исключительно с USB носителя. Иногда это была флешка, чаще — USB-HDD. (Далее для простоты буду называть установочный USB носитель просто — флешка).
Но в установочных носителей Windows есть неприятная особенность — жёстко прописаны пути к установочным файлам. Т.е. как минимум в корне флешки должны быть:
[boot]
[sources]
bootmgr
Если нужна загрузка по UEFI (например, для установки системы на диск с GPT-стилем разделов), то — плюс ещё [efi]
.
Без хакинга эти имена не поменять. Для чего это может понадобиться? Да для того, чтобы иметь несколько дистрибутивов Windows на одной флешке! Ведь кто-то не переваривает Win8, ему Win7 ставь, а кто-то хочет систему поновее и пошустрее…
Раньше я особо не заморачивался и просто скопировал эти файлы и папки с одного установочного ISO-шника (скажем, Win 8.1 x64). Переименовал [sources]
в [sources_w8x64]
. Потом покопировал с остальных ISO-шников только [sources]
, попутно переименовывая их. И всё. Больше никаких телодвижений кроме записи загрузочного сектора и активации раздела флешки я не делал. В результате у меня была приблизительно такая структура файлов на флешке:
[boot]
[sources]
[sources_w7x86]
[sources_w8x64]
[sources_w8x86]
bootmgr
Когда надо было установить какую-то из систем, я просто переименовывал соответствующие папки так, чтобы файлы требуемой Windows были в папке [sources]
.
Так продолжалось пару лет. Хорошо, что делать это приходилось не часто. Но настал день, когда нужно было погонять ноутбук одногрупницы на предмет неисправностей диска. Среди всего прочего было проведено и стирание информации без разбору — последовательное перезаписывание секторов по LBA, не взирая на такие мелочи как MBR, разделы и т.п. Естественно, после всех истязаний надо бы подготовить компьютер к использованию: разметить диск, поставить систему, приложения и т.п. Но надо ставить не что иное, как Windows 10! А то ведь точно забракует! Оно-то и не удивительно: если уже пользовалась 10-кой, то на старую винду возвращаться не будет. Скачал Media Creation Tool и принялся с его помощью качать образы 10-ки. Скачал. Поставил ей систему, драйверы и некоторые самые необходимые приложения. Visual Studio и остальное сама поставит. Но бардак на флешке совсем не радовал:
[boot]
[sources]
[sources_w7x64]
[sources_w7x86]
[sources_w8x64]
[sources_w8x86]
[sources_w10x86]
bootmgr
Эти обстоятельства послужили тригером к решению:
Хватит это терпеть!
После прочтения нескольких статей в интернете о том, как это можно организовать, некоторые решения мне показались уж слишком извращенскими.
Например: с помощью Grub4Dos копировать файл ответов, записывать в файл путь к нужному ISO, монтировать этот ISO, загрузиться в WinPE, после этого снова монтировать этот же ISO (т.к. предыдущий теряется из-за перехода из реального режима в защищённый), потом искать букву диска с файлами установки… Ах, да! Если установочный носитель — это USB-HDD, а не флешка, то нужно перед этим ещё и подключать флешку, в корне которой лежит файл ответов… Словом — ужас.
Конечно, в этом можно найти определённую логику: такой подход позволяет не распаковывать ISO-шки, а положить их в отдельную папку на флешке… Но надо поддерживать кучу других файлов…
Короче, это не наш путь.
Творим
План
Мы не будем играться с монтированием ISO, а просто разместим файлы для загрузки на установочном носителе. Но не просто перенесём эти файлы с установочных ISO (как было до этого), а немного переделаем их структуру так, чтобы можно было просто выбирать версию Windows для установки, не делая больше никаких рутинных действий (см. предысторию).
Также мы не будем здесь рассматривать создание дистрибутива Windows AiO (когда в одном sources\install.wim
располагается множество разных версий системы), поскольку такой способ имеет много недостатков, среди которых:
- один файл огромного размера
- нельзя использовать FAT32, а следовательно и UEFI
- невозможно впоследствии использовать флешку меньшего объёма пропустив копирование ненужных дистрибутивов
- трудности с обновлением конкретного дистрибутива (надо удалить из образа старый, и добавить новый)
- не факт, что вообще можно поселить в одном образе, например, Win7 и Win10 (не проверял)
Делать мы всё будем руками и, как было обещано, без стороннего ПО. А то есть куча разных прог для создания супер мега крутых мультизагрузочных дисков, но толком не ясно что они делают и как. А у нас план — без стороннего софта и с минимальным вмешательством!
Подготовка флешки
Определитесь с файловой системой
Выбор-то и не большой:
- 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). Выполните такие команды:
DiskPart
list disk
select disk <номер вашей флешки (можно идентифицировать по размеру из предыдущей команды)>
list part
select part <номер раздела, который требуется сделать активным (обычно 1)>
active
exit
Пример
Теперь ваша флешка является загрузочной. Но она пока пуста. Самое время наполнить её смыслом.
Наполнение дистрибутивами
Файлы диспетчера загрузки Windows
Нам нужен набор файлов менеджера загрузки. Это:
[boot]
[efi] - только если нужна загрузка по UEFI (ФС флешки должна быть FAT32! (на некоторых компьютерах работает и с NTFS))
bootmgr
bootmgr.efi - только если нужна загрузка по UEFI (ФС флешки должна быть FAT32! (на некоторых компьютерах работает и с NTFS))
Я скопировал эти файлы из самого свежего дистрибутива — Windows 10 x64 (Threshold 2).
После этого уже можно протестировать как грузится флешка.
Если всё сделано правильно — вы увидите экран Windows Boot Manager c сообщением об ошибке. Ошибка — из-за того, что мы ещё не скопировали [sources]
. Но нам просто важен факт, что bootmgr
получает управление.
Если вы не увидите экран Windows Boot Manager, то возможно дело в том, что при форматировании система не записала загрузочный сектор совместимый с BOOTMGR. Чтобы сделать это вручную, выполните команду bootsect /nt60 <буква_диска>:
, где <буква_диска> — ваша флешка.
Дистрибутивы
Файлы дистрибутива находятся в [sources]
. Значит надо создать структуру папок, содержащую [sources]
из разных версий Windows под разными именами. Эту структуру можно делать как захочется. Но важно потом соблюдать соответствие путей. Я сделал так:
[WinDists]
|- [Win_7_ia32]
|- [Win_7_x64]
|- [Win_8.1_ia32]
|- [Win_8.1_x64]
|- [Win_10_ia32]
|- [Win_10_x64]
Теперь в каждую из этих папок надо скопировать содержимое [sources]
из соответствующих ISO-шников. До сих пор на флешке было занято лишь несколько десятков МиБ. А теперь — несколько ГиБ.
Настройка
Меню
Мы хотим, чтобы можно было выбирать любую из этих систем просто из меню. Без переименовывая папок и т.п. рутины. Значит, надо добавить пункт меню для каждой из Windows.
Помните, раньше мы копировали файлы диспетчера загрузки? Теперь нужно отредактировать файлы данных конфигурации загрузки. Это:
[boot]
|- bcd
[efi]
|- [microsoft]
|- [boot]
|- bcd - только если нужна загрузка по UEFI (ФС флешки должна быть FAT32! (на некоторых компьютерах работает и с NTFS))
Редактируем BCD
Сначала включим отображение меню. И уберём таймаут, чтобы оно отображалось столь угодно долго до совершения выбора пользователем (мы ведь не просто загружаемся, а систему устанавливаем! Выбор должен быть осознанным ◕‿◕).
Чтобы сделать это выполните команды:
bcdedit /store <буква_диска>:\boot\bcd /set {bootmgr} DisplayBootMenu True
bcdedit /store <буква_диска>:\boot\bcd /deletevalue {bootmgr} Timeout
где <буква_диска> здесь и далее — ваша флешка.
Дальше будем добавлять пункты установки для каждой из систем. Сначала выполним команду
bcdedit /store <буква_диска>:\boot\bcd /enum {default}
чтобы узнать значение device
и osdevice
пункта по-умолчанию. Они будут приблизительно такими:
device ramdisk=[boot]\sources\boot.wim,{<GUID параметров ramdisk>}
osdevice ramdisk=[boot]\sources\boot.wim,{<GUID параметров ramdisk>}
Как правило, значения этих параметров в одном пункте загрузки одинаковые.
Мы будем для каждого дистрибутива Windows изменять путь к образу c WinPE (boot.wim
), при этом оставляя таким же <GUID параметров ramdisk>. Это будут единственные различия между пунктами загрузки разных дистрибутивов.
Подробнее об этих параметрах
Параметр device
определяет устройство, на котором лежит \windows\system32\boot\winload.exe
(это значение указано в параметре path
).
Параметр osdevice
определяет устройство, на котором лежит \windows
(это значение указано в параметре systemroot
).
В нашем случае значения device
и osdevice
состоят из пути к WIM-образу системы (в данном случае WinPE), который загружается в оперативную память (ramdisk). После запятой указан GUID записи, которая определяет параметры устройства, с которого будет загружаться WinPE (в нашем случае — ramdisk). На неё можно взглянуть подробнее:
bcdedit /store <буква_диска>:\boot\bcd /enum {<GUID параметров ramdisk>}
Параметры устройств
-------------------
идентификатор {<GUID параметров ramdisk>}
ramdisksdidevice boot
ramdisksdipath \boot\boot.sdi
Ничего особенного. Будем использовать эти же параметры устройства для других пунктов загрузки.
boot.sdi
— Это по-сути образ пустого NTFS-тома. А в этот том уже монтируется образ из boot.wim
.
Поскольку пункт по-умолчанию уже полностью настроен (кроме значений device
и osdevice
), то мы просто будем его копировать и изменять.
Добавление пунктов
- Скопировать пункт по-умолчанию:
bcdedit /store <буква_диска>:\boot\bcd /copy {Default} /d "<название нового пункта>"
Будет выдано сообщение с GUID нового пункта. Приблизительно такое:
Запись успешно скопирована в
{<GUID новосозданного пункта>}
- Изменить в нём вышеупомянутые параметры:
bcdedit /store <буква_диска>:\boot\bcd /set {<GUID новосозданного пункта>}
device
ramdisk=[boot]\<путь к дистрибутиву>\boot.wim,{<GUID параметров ramdisk>}
bcdedit /store <буква_диска>:\boot\bcd /set {<GUID новосозданного пункта>}
osdevice
ramdisk=[boot]\<путь к дистрибутиву>\boot.wim,{<GUID параметров ramdisk>}
Эти две команды отличаются только одним словом (выделено).
Примеры
Здесь приведено несколько примеров создания новых пунктов загрузки на основе пункта по-умолчанию.
Не копируйте тупо команды отсюда! У вас будут другие GUID-ы. Эти примеры только чтобы понять что к чему.
bcdedit /store <буква_диска>:\boot\bcd /copy {Default} /d "Windows 7 (32-bit) Setup"
Запись успешно скопирована в {90fff3ef-3b91-11e6-839b-d850e607fea0}.
bcdedit /store <буква_диска>:\boot\bcd /set {90fff3ef-3b91-11e6-839b-d850e607fea0} device ramdisk=[boot]\WinDists\Win_7_ia32\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /set {90fff3ef-3b91-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]\WinDists\Win_7_ia32\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /copy {Default} /d "Windows 7 (64-bit) Setup"
Запись успешно скопирована в {e5f9b9b7-3bb1-11e6-839b-d850e607fea0}.
bcdedit /store <буква_диска>:\boot\bcd /set {e5f9b9b7-3bb1-11e6-839b-d850e607fea0} device ramdisk=[boot]\WinDists\Win_7_x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /set {e5f9b9b7-3bb1-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]\WinDists\Win_7_x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /copy {Default} /d "Windows 8.1 (32-bit) Setup"
Запись успешно скопирована в {cda5bc88-3bb4-11e6-839b-d850e607fea0}.
bcdedit /store <буква_диска>:\boot\bcd /set {cda5bc88-3bb4-11e6-839b-d850e607fea0} device ramdisk=[boot]\WinDists\Win_8.1_ia32\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /set {cda5bc88-3bb4-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]\WinDists\Win_8.1_ia32\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /copy {Default} /d "Windows 8.1 (64-bit) Setup"
Запись успешно скопирована в {330e8636-3bb5-11e6-839b-d850e607fea0}.
bcdedit /store <буква_диска>:\boot\bcd /set {330e8636-3bb5-11e6-839b-d850e607fea0} device ramdisk=[boot]\WinDists\Win_8.1_x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /set {330e8636-3bb5-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]\WinDists\Win_8.1_x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /copy {Default} /d "Windows 10 (32-bit) Setup"
Запись успешно скопирована в {87c0826c-3bb5-11e6-839b-d850e607fea0}.
bcdedit /store <буква_диска>:\boot\bcd /set {87c0826c-3bb5-11e6-839b-d850e607fea0} device ramdisk=[boot]\WinDists\Win_10_ia32\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /set {87c0826c-3bb5-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]\WinDists\Win_10_ia32\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /copy {Default} /d "Windows 10 (64-bit) Setup"
Запись успешно скопирована в {dd7288b2-3bb8-11e6-839b-d850e607fea0}.
bcdedit /store <буква_диска>:\boot\bcd /set {dd7288b2-3bb8-11e6-839b-d850e607fea0} device ramdisk=[boot]\WinDists\Win_10_x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /set {dd7288b2-3bb8-11e6-839b-d850e607fea0} osdevice ramdisk=[boot]\WinDists\Win_10_x64\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
bcdedit /store <буква_диска>:\boot\bcd /copy {Default} /d "Other Windows Setup (from \sources)"
The entry was successfully copied to {c9ff9b3a-3c53-11e6-839c-d850e607fea0}.
Завершение редактирования BCD
После того, как все пункты добавлены удаляем пункт по-умолчанию:
bcdedit /store <буква_диска>:\boot\bcd /delete {default}
Редактируем BCD для UEFI
Если вам нужна загрузка по UEFI, то вам нужно также отредактировать другое хранилище конфигурации загрузки (то, которым руководствуется BootMgFw.efi
).
Тут всё точно так же как и там, за исключением пути к файлу BCD
.
Т.е. вместо
bcdedit /store <буква_диска>:\boot\bcd
следует использовать
bcdedit /store <буква_диска>:\efi\microsoft\boot\bcd
.
Примечание. Вы не можете просто так взять и скопировать \boot\bcd
в \efi\microsoft\boot\bcd
! Они должны различаться как минимум параметрами path
во всех пунктах, включая {memdiag}
.
\windows\system32\boot\winload.exe
vs\windows\system32\boot\winload.efi
\boot\memtest.exe
vs\efi\microsoft\boot\memtest.efi
Update
Посредством UEFI могут загружаться все 64-битные версии Windows NT 6.0+, а из 32-битных — только Windows 8+.
Кроме того, в пунктах установки ОС, предшествующих Windows 8, не должно быть параметра IsolatedContext со значением Yes. Иначе, у вас просто не запустится среда предустановки этой системы (т.е. вы не сможете установить, например, Windows 7 x64 в режиме UEFI).
Windows PE
Итак, у нас при загрузке с флешки уже есть рабочее меню, где мы можем выбирать нужную версию Windows. Загрузитесь и убедитесь, что при выборе определённого пункта меню загружается соответствующая Windows PE.
Проблема
Мы ещё не всё сделали. Ведь, если попытаться установить какую-то из систем, то получим неприятный сюрприз:
Почему это произошло? Дело в том, что программа установки ищет образ install.
wim
или сжатый install.
esd
в папке sources
на всех доступных томах. Windows 10 в случае неудачи ещё пытается искать в папках x64\sources
или x86\sources
в зависимости от разрядности. В нашем случае — не находит нигде.
Она думает, что, наверное, нет драйвера от установочного носителя и предлагает его загрузить.
Варианты решения
Вы уже можете установить Windows из своей флешки, вручную правильно запустив программу установки. Есть несколько вариантов.
- Файл ответов
С помощью файла ответов можно указать множество параметров установки. В том числе образ, откуда устанавливать систему.
Путь к образу указывается в элементеMicrosoft-Windows-Setup | ImageInstall | OSImage | InstallFrom | Path
.
Заставить программу установки использовать файл ответов можно либо явно:
setup.exe /unattend:<путь к файлу ответов>
Либо поместив его по одному из заранее определённых путей.
Но в этом способе есть проблема. В файле ответов должен быть абсолютный путь. Удобно, когда надо устанавливать из сети. Но не практично для нашего случая. Компьютеры разные — буква флешки будет меняться. Не наш вариант. А ещё и явно указывать путь к файлу ответов — ну вообще не вариант.
- Запуск программы установки с параметром
Можно найти образ с помощью сценарияcmd.exe
. А потом запустить установщик, явно указав ему куда смотреть:
X:\sources\setup.exe /installFrom:<путь к install.wim или install.esd>
Этот вариант подходит. Вы сможете установить систему как с обычного установочного ISO.
Но есть вариант ещё лучше.
- Запуск программы установки с флешки
Можно запустить установку не сX:
(монтированный образboot.wim
), а прямо с флешки! Таким образом не придётся явно указывать путь кinstall.wim
илиinstall.esd
. Программа установки сама найдёт этот файл рядом с собой (в папке запуска)!
Так, например, для установки Win 10 x64 нужно выполнить:
<буква флешки>:\WinDists\Win_10_x64\setup.exe
У этого способа много преимуществ. Ведь мы фактически полностью отказываемся от использования чего-либо изX:\sources
, в пользу соответствующей папки на флешке. А это значит, что мы впоследствии можем модифицировать её без внесения изменений в образboot.wim
. Удобно же! Например, можно положить сюда индивидуальный (для этого конкретного дистрибутива) файл ответов (рядом сsetup.exe
) и он будет подхвачен согласно 6-му пункту отсюда.
Решение
Это всё хорошо, но мы же не хотим вручную запускать установку, правда? Хотим чтобы оно само. Значит надо сделать так, чтобы оно само запускало установку откуда надо.
Варианты автоматизации
Рассмотрим запуск Windows PE, чтобы понять, как с минимальным вмешательством заставить её выполнять то, что нам нужно.
В параметре реестра HKLM\SYSTEM\Setup\CmdLine
указано первое приложение, которое выполняется после запуска WinPE. Это winpeshl.exe
. Оно делает всякие полезные вещи, как то:
- Включает фоновую картинку (запуск
WallpaperHost.exe
) - Проверяет, есть ли рядом файл
winpeshl.ini
. Если есть — выполняет из него команды. - Инициализирует PNP
- Если файла
winpeshl.ini
не было — пытается запустить одно из приложений (в порядке приоритета):- X:\$Windows.~BT\sources\setup.exe
- X:\setup.exe
- X:\windows\system32\cmd.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:<буква_флешки>:\WinDists\Win_10_x64\boot.wim
Cистема DISM
Версия: 6.3.9600.17031
Сведения об образе : <буква_флешки>:\WinDists\Win_10_x64\boot.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:<буква_флешки>:\WinDists\Win_10_x64\boot.wim /index:2 /mountDir:C:\mnt
Cистема DISM
Версия: 6.3.9600.17031
Подключение образа
[==========================100.0%==========================]
Операция успешно завершена.
Теперь, как и запланировали, копируем в C:\mnt\Windows\System32\
файлы winpeshl.ini
и свой файл сценария (я назвал его runsetup.cmd
).
Содержимое winpeshl.ini
[LaunchApps]
cmd.exe, "/k runsetup.cmd"
Содержимое runsetup.cmd
@echo off
Title TishSerg Windows Setup Bootstrapper v1.0
color 9f
ver
echo.
echo [%time%] Initializing Windows PE...
Wpeinit
echo.
Wpeutil UpdateBootInfo > nul
for /f "tokens=3" %%a in (
'reg query "HKLM\System\CurrentControlSet\Control" /v PEBootRamdiskSourceDrive'
) do set RamdiskSourceDrive=%%a
echo [%time%] Detected setup media: %RamdiskSourceDrive%
echo.
:: Windows dist path Affix
set WinDistAfx=WinDists\Win
:: Find Windows arch Affix
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
set WinArchAfx=ia32
) else (
set WinArchAfx=x64
)
:: Find Windows version Affix
for /f "tokens=3" %%b in (
'reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentBuildNumber'
) do set /a CurrentBuildNumber=%%b
if %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 Setup
color 2e
echo.
echo [%time%] Windows Setup closed
echo 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.vbs
cscript msgdlg.vbs > nul
if %errorLevel% == 6 (
echo [%time%] Here is Task Manager for you :^)
start taskmgr
echo [%time%] Run 'System restore' (%SystemDrive%\Sources\recovery\RecEnv.exe^)
%SystemDrive%\Sources\recovery\RecEnv.exe
) else if %errorLevel% == 7 (
echo [%time%] Will reboot now...
Wpeutil Reboot
)
Зачем такой сложный `runsetup.cmd`?
А за тем, чтобы файлы winpeshl.ini
и runsetup.cmd
были универсальны для всех дистрибутивов Windows NT 6.0+. Т.е. их не нужно отдельно модифицировать под установку Win7, Win8 и т.п. Путь к папке дистрибутива определяется автоматически.
Также добавлен простой способ запуска Восстановления системы, т.к. из-за прямого запуска \sources\setup.exe
вместо X:\setup.exe
мы теряем страницу:
Разница только в том, что в нашем случае мы язык выбираем уже после запуска установки Windows или Восстановления системы. В оригинальных ISO образах X:\setup.exe
сообщает языковые настройки запускаемым через него приложениям.
Внимание! В предоставленном мной runsetup.cmd
путь к программе установки определяется по шаблону <буква_флешки>:\\<путь_и_префикс_к_папкам_дистрибутивов>_<версия>_<архитектура>\setup.exe
(строка %RamdiskSourceDrive%\%WinDistAfx%_%WinVerAfx%_%WinArchAfx%\setup.exe
). Т.е. в моём случае сценарий будет формировать пути (в зависимости от того, из какого дистрибутива был запущен) наподобие:
- D:\WinDists\Win_7_ia32\setup.exe
- D:\WinDists\Win_10_x64\setup.exe
Если вы создавали на флешке другую структуру папок и их названий — сделайте соответствующие изменения.
Осталось отмонтировать образ с сохранением изменений:
dism /unmount-wim /mountDir:C:\mnt /commit
Cистема DISM
Версия: 6.3.9600.17031
Файл образа: <буква_флешки>:\WinDists\Win_10_x64\boot.wim
Индекс образа: 2
Сохранение образа
[==========================100.0%==========================]
Отключение образа
[==========================100.0%==========================]
Операция успешно завершена.
Готово! Теперь нужно повторить эти действия для остальных boot.wim
. После этого у вас на флешке будут все желаемые дистрибутивы, которые вы сможете просто выбирать из меню и продолжать установку как будто на флешке только одна версия Windows!
Чего бы улучшить?
Тут ещё несколько советов по улучшению вашей установочной флешки.
Пропуск ввода ключа продукта и выбор любой редакции Windows
Для этого нужно поместить файлик ei.cfg
рядом с программой установки
Содержимое `ei.cfg`
[Channel]
Retail
Помещать нужно в папку откуда запускается setup.exe
. Постольку у нас он запускается с флешки, а не с ramdisk-а (boot.wim
), то и кладём ei.cfg
в папки дистрибутивов на флешке. (+1 преимущество от запуска установки прямо с флешки, вместо запуска с ramdisk-а с параметром /installFrom
).
Запуск приложения реального режима из меню Диспетчера загрузки Windows
На примере `Grub4Dos`
bcdedit /store <буква_флешки>:\boot\bcd /create /d "Grub4Dos Menu" /application BootSector
Запись {b3923807-3ebb-11e6-83a0-d850e607fea0} успешно создана.
bcdedit /store <буква_флешки>:\boot\bcd /set {b3923807-3ebb-11e6-83a0-d850e607fea0} device boot
bcdedit /store <буква_флешки>:\boot\bcd /set {b3923807-3ebb-11e6-83a0-d850e607fea0} path \grldr
bcdedit /store <буква_флешки>:\boot\bcd /DisplayOrder {b3923807-3ebb-11e6-83a0-d850e607fea0} /AddFirst
Таким образом можно сделать возможность циклического перехода из одного меню в другое без перезагрузки компьютера. И уже не важно какой из загрузчиков был запущен первым: BOOTMGR
или GRLDR
.
Прогрессбар при загрузке boot.wim
на ramdisk
В новейших BootMgr
сделали загрузку образа boot.wim
на ramdisk без анимации. Т.е. просто выводится статический логотип Windows и всё, ждите. Можно вернуть прогрессбар, как было раньше. Он хоть будет давать информацию о степени загрузки WinPE в оперативную память.
bcdedit /store <буква_флешки>:\boot\bcd /set {<GUID пункта установки Windows>} BootMenuPolicy Legacy
Правда, вместе с этим вы отключите новый стиль меню дополнительных параметров и сообщений об ошибках (на голубом фоне, с управлением функциональными клавишами), но то такое (^̮^)
Подробный вывод загружаемых файлов
Это в дополнение к предыдущему украшательству. Работает по Windows 7 включительно. В Windows 8+ майки это выпилили почему-то (не даёт эффекта).
bcdedit /store <буква_флешки>:\boot\bcd /set {<GUID пункта установки Windows>} Sos True
Применив предыдущие два украшательства прикольнее всего грузится Windows 7. Но это всё — баловство.
Итог
Итак, что мы сделали:
- Отформатировали установочный носитель и сделали его загрузочным
- Скопировали на него файлы Диспетчера загрузки Windows (взятые из одного из ISO-образов)
- Создали структуру папок с файлами дистрибутивов Windows (содержимое
[sources]
каждого из ISO-образов) - Настроили меню Диспетчера загрузки Windows
- Добавили в
boot.wim
каждого дистрибутива по два своих файла
На этом всё. Вопросы, замечания и пожелания приветствуются (ʘ‿ʘ)
Способ 1: WinSetupFromUSB
Запись двух и более образов операционной системы Windows можно произвести при помощи специализированного приложения WinSetupFromUSB. Помимо прочего, с его помощью создают загрузочные флешки с другими образами портативных операционных систем. Для этого требуется скачать WinSetupFromUSB и запустить версию, соответствующую разрядности ОС.
Скачать WinSetupFromUSB
- Вставьте флеш-накопитель в USB-порт и выберите его из списка переносных носителей информации в интерфейсе программ. Если вы устанавливаете Windows на флешку в первый раз, желательно её перед этим переформатировать: поставьте галочку в настройке «Auto format it with FBinst» и задайте тип файловой структуры «FAT32» или «NTFS» на выбор.
Подробнее: Всё о форматировании флешки в NTFS / FAT32
- После отметьте, к какому именно семейству систем принадлежит та, которую хотите устанавливать (в нашем случае это пункт «Windows Vista/7/8/10/11/Server 2008/2012+based ISO») и укажите путь для неё. Легче всего это сделать через средство просмотра диалоговых окон при помощи кнопки «…».
- В новом окне найдите и выберите ОС, которая будет записана на флешку первой, а затем кликните «Открыть».
- После того как выбрали систему, нажимайте кнопку «GO».
- Несколько раз согласитесь с тем, что ваше запоминающее устройство будет перезаписано, подтвердив свои намерения кнопкой «Да».
- Далее дождитесь окончания записи флешки.
- Загрузочный образ будет готов, как только появится окошко «Done». Нажмите «OK» в этом окне.
- Снимите галочку с настройки «Auto format it with FBinst» и укажите вторую устанавливаемую Windows. После этого вам остаётся только снова нажать «GO» и дождаться записи образа на флешку.
Способ 2: XBoot
Ещё один способ установить несколько операционных систем на флешку – воспользоваться программой XBoot. Она поможет создать загрузочный диск с любыми образами системы, включая всё семейство Windows. Единственный минус: приложение поддерживает только английский язык.
- Скачайте XBoot с официального сайта и запустите его у себя на компьютере. В горизонтальном меню сверху выберите вкладку «File», затем пункт «Open».
- Зажмите и удерживайте клавишу «Ctrl» у себя на клавиатуре, параллельно при этом левой кнопкой мыши выбирая загрузочные образы ОС, которые хотелось бы установить, после чего кликните кнопку «Открыть».
- Откройте стандартное средство форматирования дисков Windows: для этого нужно нажать правой кнопкой мыши по соответствующему носителю информации в разделе «Этот Компьютер» и выбрать пункт «Форматировать». Затем укажите тип файловой системы: «NTFS» или «FAT32» на выбор и кнопкой «Начать» произведите форматирование.
- Теперь в приложении XBoot кликните по кнопке «Create USB».
- В открывшемся окне «Select USB Drive» укажите свою USB-флешку, после чего в списке «Select Bootloader» нужно выбрать тип загрузчика. Рекомендуется ставить «Syslinux», но вы можете выбрать другой по своему усмотрению. Под конец нажмите «OK».
- Далее остаётся только подождать, пока операционные системы запишутся на ваше запоминающее устройство.
- Когда программа завершит работу, она предложит запустить виртуальную среду, в которой можно посмотреть, как будет выглядеть меню загрузки при запуске компьютера с флеш-накопителя.
Способ 3: YUMI Multiboot USB Creator
Ещё одно хорошее средство для установки нескольких Windows на флешку – это YUMI Multiboot USB Creator. Данная программа имеет в своём распоряжении определённое количество инструментов для записи запоминающих USB-устройств, в том числе функции по работе с двумя образами операционной системы.
Скачать YUMI Multiboot USB Creator с официального сайта
- Скачайте данное приложение и запустите его двойным кликом, далее в разделе «Step 1: You Selected D: on (Disk 2) your USB» выберите название своей флешки.
- Следом укажите тип файловой системы для носителя информации — «NTFS» или «FAT32», а в пункте «Step 2: Select a Distribution to put on F:» нужно назвать вид семейства желаемых ОС.
- В нашем случае указывается «Multiple Windows Vista/7/8/10» или другой в зависимости от того, какой у вас образ Windows.
- Теперь кнопкой «Browse» откройте обозреватель диалоговых окон и выберите первый образ Виндовс, который установится на флешку.
- Когда образ выбран, нажмите кнопку «Create».
- Дождитесь записи образа на своё устройство хранения информации и нажмите «Next».
- Кнопкой «Да» подтвердите запрос программы на создание каталога второй операционной системы на флешке.
- Наконец выберите образ второй Виндовс и снова нажмите «Create» для записи следующей Windows.
Наша группа в TelegramПолезные советы и помощь
Содержание статьи:
- Мультизагрузочная флешка за 3 шага
- ШАГ 1: подготовка. Выбор флешки, ПО и образов ISO
- ШАГ 2: запись первой ОС на флешку
- ШАГ 3: запись второй ОС (и последующих)
- Тестирование
- Вопросы и ответы: 5
Доброго времени суток!
Многие пользователи разные версии Windows записывают на отдельные флешки (накопители), что не всегда удобно. То ли дело, вместо 4-5 флешек иметь одну, на которой будет всё, что необходимо.
Кстати, подобные флешки, на которых записано несколько загрузочных образов с Windows (и др. ОС) называют мультизагрузочными.
Так вот, чтобы создать такую мультизагрузочную флешку — требуется не так уж и много: полчаса свободного времени, одна спец. утилита и установочные образы ISO (которые планируется записать). Ниже, в этой заметке, рассмотрю этот вопрос несколько подробнее ✌…
Примечание:
1) приведенный в статье способ актуален для современных компьютеров (работающих под UEFI) и ОС Windows 8/10;
2) если нужна универсальная загрузочная флешка (Legacy + UEFI) — см. этот вариант.
*
Мультизагрузочная флешка за 3 шага
ШАГ 1: подготовка. Выбор флешки, ПО и образов ISO
1) Флешку рекомендуется взять не менее 8-16 ГБ (8 ГБ в ряде случаев может не хватить) и крайне желательно поддерживающую USB 3.0 (скорость ее работы заметно выше, и установка ОС с нее будет идти быстрее). Конечно, это актуально, если вы будете работать с современными ОС Windows 8+.
Кстати, если вы хотите создать мультизагрузочный внешний диск — тогда выполните всё по этой инструкции, а затем переходите к шагу 3 в этой статье.
Выбор флешки (16 ГБ, USB 3.0)
2) Что касается программы для записи, то я бы порекомендовал остановиться на WinSetupFromUSB (ссылка на официальный сайт). Почему:
- не нуждается в установке, легкий и простой интерфейс;
- поддерживает все современные ОС Windows;
- видит абсолютное большинство флешек и внешних дисков;
- позволяет создавать как UEFI (GPT) флешки (для новых ПК), так и BIOS (MBR). Если вы не совсем поняли, о чем идет речь, рекомендую это к ознакомлению;
- большие образы ISO (больше 4 ГБ) она разбивает на части и записывает на флешки, форматированные в FAT 32 (это делают не все утилиты подобного толка).
3) Образы ISO c ОС Windows
В своем примере ниже я запишу флешку с ОС Windows 8 и Windows 10. Образы с ISO рекомендую брать официальные, которые содержат одну версию системы. Например:
- «Windows 10 x64 home» — это хороший вариант;
- «Windows 10 x64+x32 home+pro, 5 in 1» — это плохой вариант (при записи и последующей установке ОС могут возникнуть различные ошибки).
Кстати, о том, как загрузить Windows 10 с официального сайта Microsoft можете узнать в одной моей прошлой статье (ссылка на нее ниже).
👉 В помощь!
Как скачать ISO-образ с ОС Windows 10 [официально и легально]
ШАГ 2: запись первой ОС на флешку
И так, флешка есть, программа есть, образы с Windows тоже есть. Теперь можно переходить непосредственно к процессу… 👌
1) Сначала запустите WinSetupFromUSB от имени администратора — для этого просто кликните правой кнопкой мышки по исполняемому файлу и выберите соответствующее в меню (пример ниже).
Запуск от имени администратора
2) Далее откроется окно настроек программы, необходимо:
- нажать на кнопку «Refresh» и выбрать флешку (Важно! Все данные на ней будут удалены!);
- поставить режим «Auto Format it wish FBinst» и выбрать файловую систему FAT 32;
- указать образ ISO с нужной ОС;
- нажать кнопку GO. Все действия запечатлены на скриншоте ниже.
Настройки WinSetupFromUSB
3) Далее программа 2 раза вас предупредит о том, что все данные на флешке будут удалены. После вашего согласия начнется процесс записи (в среднем требуется около 5-15 мин. на запись одной ОС).
Предупреждение
4) Если все прошло успешно — по завершению операции увидите сообщение «Job Done» (работа выполнена). В общем-то, флешка готова, и вы уже можете ее использовать (просто на ней пока что еще только одна система).
Работа выполнена
ШАГ 3: запись второй ОС (и последующих)
После выполнения шага 2 на нашей флешке (диске) только 1 ОС. Запись второй ОС (и 3-й, и 4-й и т.д.) будет несколько отличаться:
- сначала нужно выбрать ту флешку, на которую мы ранее записали ОС в шаге 2;
- после снять галочку с пункта «Auto Format it wish FBinst» (вообще, по умолчанию, она не должна ставится!);
- указать образ ISO с другой ОС Windows (в своем примере я к Windows 8 на флешке добавляю Windows 10);
- нажать GO.
Дописываем вторую ОС (третью аналогично)
Подчеркиваю: программа не должна спрашивать и предупреждать вас о том, что данные на флешке будут удалены (как в шаге 2). В идеале, она сразу же приступит к записи…
Если все прошло удачно — появится такое же сообщение «Job Done».
Работа выполнена
Тестирование
1) Подключаем флешку к ноутбуку (ПК), на котором нужно переустановить ОС (либо восстановить в следствии какой-то ошибки…). Если вы работаете с ОС Windows 8/10 — лучше ее подключить к USB 3.0.
Флешка подключена
2) Включаем устройство и открываем Boot Menu* (загрузочное меню/список).
Если флешка была правильно записана, а в BIOS не отключена загрузка с USB — в списке должна присутствовать наша флешка. Обратите внимание, ее название может несколько отличаться от привычного: в моем случае ее имя — «UEFI: 1.0, Partition 1».
* 👉 В помощь!
1) Горячие клавиши для входа в меню BIOS, Boot Menu
2) Как загрузиться с USB-флешки или внешнего HDD
Boot Menu — выбор флешки для загрузки
3) В общем-то, после выбора загрузки с флешки появится еще одно меню (уже от нашей флешки) с выбором ОС: в моем примере Windows 8 и 10. После указания нужной — начнется ее загрузка и предстанет классическое окно с выбором языка (дальше можно либо переходить к установке Windows, либо к ее восстановлению…).
Выбор ОС для загрузки… (флешка работает)
Разумеется, вы можете на такую флешку записать еще 3-4 доп. версий ОС (лишь бы на флешке хватило места…).
*
Удачной работы!
👋
Первая публикация: 12.07.2019
Корректировка: 25.05.2020
Item Preview
There Is No Preview Available For This Item
This item does not appear to have any files that can be experienced on Archive.org.
Please download files in this item to interact with them on your computer.
Show all files
101,729
Views
43
Favorites
1
Review
DOWNLOAD OPTIONS
Uploaded by
cmteampk playout
on