КДПВЗдравствуйте. Сегодня я расскажу как можно создать единый установочный носитель с множеством разных версий 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 (не проверял)


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

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


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



Выбор-то и не большой:
  • 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

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


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

Наполнение дистрибутивами



Файлы диспетчера загрузки 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), то мы просто будем его копировать и изменять.
 
Добавление пунктов

  1. Скопировать пункт по-умолчанию:
    bcdedit /store <буква_диска>:\boot\bcd /copy {Default} /d "<название нового пункта>"
    Будет выдано сообщение с GUID нового пункта. Приблизительно такое:
    Запись успешно скопирована в {<GUID новосозданного пункта>}
     
  2. Изменить в нём вышеупомянутые параметры:
    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, то вам нужно также отредактировать другое хранилище конфигурации загрузки (то, которым руководствуется BootMgr.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


 

Windows PE



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

 

Проблема



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

No Sources Error

Почему это произошло? Дело в том, что программа установки ищет образ 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. Оно делает всякие полезные вещи, как то:
  1. Включает фоновую картинку (запуск WallpaperHost.exe)
  2. Проверяет, есть ли рядом файл winpeshl.ini. Если есть — выполняет из него команды.
  3. Инициализирует PNP
  4. Если файла 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 мы теряем страницу:
image

Разница только в том, что в нашем случае мы язык выбираем уже после запуска установки 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. Но это всё — баловство.

 

Итог



Итак, что мы сделали:
  1. Отформатировали установочный носитель и сделали его загрузочным
  2. Скопировали на него файлы Диспетчера загрузки Windows (взятые из одного из ISO-образов)
  3. Создали структуру папок с файлами дистрибутивов Windows (содержимое [sources] каждого из ISO-образов)
  4. Настроили меню Диспетчера загрузки Windows
  5. Добавили в boot.wim каждого дистрибутива по два своих файла


На этом всё. Вопросы, замечания и пожелания приветствуются (???)
Поделиться с друзьями
-->

Комментарии (108)


  1. eGor007
    01.07.2016 21:19

    Статья отличная, я смотрю, народ всё больше начинает разбираться в новых версиях винды.
    Уже не знаю, стоит ли писать статью о работе в винде или нет?


  1. rockin
    01.07.2016 21:54
    +7

    Неужели кто-то ещё парится с перепаковкой/распаковкой/настройкой образов винды?

    Я уже года так два пользую вот это
    http://www.easy2boot.com/

    Подготовил флешку (при помощи http://www.rmprepusb.com/ )
    — отформатировал как хдд
    — залил груб
    — скопировал файлы e2b

    ВСЁ. Кидай образы в формате .iso (как есть) и они будут загрузочными. Кидай не только винду, но и всякие антивирусные/реанимационные наборы.

    Все мои флешки уже подготовлены как загрузочные — мало ли что придётся.

    p.s. два года назад я очень хотел купить небезызвестный залман, но случайно наткнулся на e2b и залман мне стал совсем не нужен. тем более, что залман — один-два ты купишь, а флешек хоть два десятка и все будут загрузочными


    1. eGor007
      01.07.2016 22:10
      +3

      Бывают случаи, когда будет невозможно (ну или очень трудно и проблемно) использовать сторонний софт.
      И такие тренировки могут помочь потом в таких ситуациях в дальнейшем.


      1. rockin
        01.07.2016 22:12
        +1

        Можно пример такого случая? Честно говоря, ничего на ум не приходит.

        Да и о каком стороннем софте в данном случае идёт речь? Флешка уже подготовлена, образ просто закидывается и идёт загрузка. Софт используется, другими словами, где-то давно, а случай — ну скопировал образ и всё.


        1. eGor007
          02.07.2016 00:15
          -2

          Выполнение заказа для оборонки. Заказчик заранее определил ряд софта и добавлять ничего нельзяю Оборудование уже на объекте.
          Идёт сдача, но заказчик вдруг начинает хотеть что-то проделать новое, для которого требуется новый софт. А ставить этот софт нельзя (он в списке запрещённого). Приёмка зарубит сдачу, когда его увидит, что нужная заказчику операция делается запрещённым софтом (в худшем случае можно попасть под статью о проносе на режимный объект с уровнем секретности ненадлежащего ПО).


          1. rockin
            02.07.2016 01:25
            +2

            В таком случае, я бы тупо зашил все образы, что нужны (и что разрешены) на компакт-бобины, ой, на цеде и деведе.
            И не парился бы ни с e2b, ни с предметом данной статьи, да вообще бы ни с чем не парился.

            Лет десять назад у меня было портмоне для дисков, где чего только не было. Всё самое актуальнейшее на тот момент.


            1. profesor08
              02.07.2016 02:30
              +1

              И добавить пару бонусных битых файликов, которые проявятся не сразу, чтоб обеспечить себе регулярные заказы. Ничего личного, только бизнес.


              1. rockin
                02.07.2016 18:57

                Вы фантазируете.
                Компакт-бобина не сбоит года так два при довольно активном использовании.

                Пользовались же!!! Когда флешки были по 128 мегабайт.


                1. vadimpl
                  04.07.2016 18:04

                  Да как сказать. Был опыт пару месяцев назад. Именно в подобной конторе, где нельзя флешки, только сд-двд.
                  Было весело когда какой-то >10GB образ, закинутый в офисе на 3 двд, так и не поставили — в конце 2-го диска несколько последних 10-ков кБ не прочитались. А из нескольких двд-рв парочка отдала богу душу в первый же день, буквально после нескольких использований. И это только то, что сам увидел; статистику не собирал.
                  Давно не брал в руки [s]шашку[/s] диски, а после такого опыта — только под страхом денег.


          1. Lindon_cano
            02.07.2016 16:49
            +1

            > попасть под статью о проносе на режимный объект с уровнем секретности ненадлежащего ПО

            Просмотрел УК и КоАП РФ не нашел такой статьи. В каких кодексах и фантазиях ее искать?


            1. lostpassword
              02.07.2016 22:53

              Как вариант — это может быть статья из внутренних ЛНД организации. :-)


              1. Lindon_cano
                02.07.2016 22:58

                И что эта внутренняя статья сделает? Штрафы в РФ запрещены. Максимум могут пальцем погрозить.


                1. lostpassword
                  02.07.2016 23:04

                  Как минимум — вынос мозга под названием «внеплановый инструктаж» в службе безопасности.)


            1. vadimpl
              04.07.2016 18:15
              +1

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


    1. Mako_357
      01.07.2016 22:14

      На счёт Zalman не соглашусь. Уже 4 года не пользуюсь загрузочными флешками и очень рад этому.
      п.с. статью все равно в избранное.


      1. rockin
        01.07.2016 23:22

        И сколько у вас залманов? Используете ли их в работе? Что, если с собой нет в наличии?

        Совсем недавно «сделать загрузочную флешку» означало «перепаковать образ(ы) дистрибутива и записать как образ на флешку»
        Но E2B — это совсем не то. Это как залман. Закинул туда образов, они и грузятся себе. Плюс залмана в сравнении с такой флешкой (по словам окружающих) разве в том, что он выступает как odd в системе. И только.

        Поясняю первые вопросы. У меня флешек десятка два. Рассованы по всем сумкам, в машине музычку содержит, на ключах болтается и так далее. И все они загрузочные(!). У меня вообще нереален случай, когда с собой не окажется загрузочного носителя. Образ-то скачать с современными интернетами недолго, а вот загрузиться…


        1. Mako_357
          01.07.2016 23:45

          4 года назад купил VE-200. Он отработал 3 года, потом крыша поехала. Потом приобрел VE-350.
          У меня там много всяких образов. И Linux все, и Windows все (одних только ХР десятка 2 дистрибутивов) и куча maintenance-образов. Короче, чего там только нет. Плюс блокировка от записи — защита от вирусов и защита от потери данных. Диск использую только для образов.
          Если с собой нет в наличии, значит я не работаю, Иначе он всегда есть в наличии.
          Флешки я либо теряю, либо они умирают в неподходящий момент, либо у них умирает файловая система. Хотя чаще я их теряю) по этому отказался от них вообще. Разве что биос записать для перепрошивки.


          1. rockin
            02.07.2016 00:01
            +3

            Короче. Фломастеры у каждого свои.
            Тут хорош и залман, и e2b. Спорить можно бесконечно.
            У каждого своя специфика работы, да и жизни в целом.

            Я вообще-то не против залмана. Я против того, что в статье. Не понимаю, зачем это может понадобиться, честно говоря.


            1. Mako_357
              02.07.2016 00:10
              +1

              Я думаю применение всё равно найдётся.


          1. Flash_CSM
            02.07.2016 07:37

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


            1. istui
              02.07.2016 08:51

              Давно не видел в наших магазинах флешки с переключателем. Разве что заказать с амазона…


              1. technont64
                02.07.2016 12:34
                +1

                Есть такие на али, ищите Netac U235 и U335.
                Переключатель работает как надо


              1. MyFearGear
                02.07.2016 13:24

                В немалом числе контроллеров для флешек выведена нога для конфигурации RO, правда на плате не разведена. Так что можно наколхозить себе переключалку, если очень надо


              1. Flash_CSM
                02.07.2016 19:43

                Вот кстати да, пришлось заказывать с али, раньше была PQI Cooldrive, но к сожалению ушла с концами.


              1. Andrusha
                03.07.2016 08:57

                Полгода назад взял Qumo Yin & Yan. Она, правда, USB 2.0, но для загрузочной мне не принципиально.


                1. chelaxe
                  03.07.2016 14:56

                  Использовал такие. Были 2,4(2 шт.),8,16,32 в живых осталось после 2-3 лет работы только на 8Gb остальные умерли своей смертью.


          1. FaCkeR
            02.07.2016 12:35
            +1

            Какая у Вас версия прошивки стоит на VE-350? Так как бесит уже, то образы не видит, то подпапки. VE-300 по сравнению с ним был идеалом


            1. GennPen
              02.07.2016 12:58

              VE-350 не видит образы с длинными именами, длиннее 30 символов.


            1. Mako_357
              02.07.2016 13:15

              1.11. Но на сайте вижу 2.0. Думаю теперь обновлять или не надо.


          1. iSavik
            03.07.2016 23:23
            +1

            Добавлю свои пять копеек по поводу iodd2541 (залман 400)
            1. Разработчики, до которых можно достучаться (к залману это не относится)
            2. Благодаря п.1, в новых прошивках «защита от записи» реализована так как надо.
            3. Работа с виртуальными дисками и дискетами. Сейчас, например, пишу с хакинтоша, который загружен с vhd образа.
            4. Шифрование. Как бы его не ругали, но от обычных любопытных глаз спасает на ура. Максимальная длина пароля 16 цифр.
            5. В последних прошивках улучшена совместимость со старыми МП (iodd)
            В одно время помогал iodd: переводил интерфейс на русский язык. С тех пор с ними в нормальных отношениях. Реализовали некоторые мои «хотелки». Надеюсь и жду еще одну фичу: что-то типа быстрого набора на обычном телефоне. Только вместо контактов — образы.


        1. dartraiden
          02.07.2016 00:16
          +1

          выступает как odd

          Порой, после «загрузить» нужно «вытащить данные», тут-то и пригождаются оставшиеся сотни гигабайт места на переносном жёстком диске.

          А ещё он выступает, как FDD. И целые образы жёстких дисков может подмонтировать.


          1. rockin
            02.07.2016 00:47

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

            и тут, конечно, сотни гигабайт пригодятся, но куда прикольнее заранее притащить пару-другую терабайт и воткнуть через сата.

            я это к чему. с тем же успехом на залмане можно хранить фильмы.


            1. Goodkat
              02.07.2016 11:25

              В некоторые лэптопы не залезешь, чтобы снять бэкап до загрузки.


              1. TishSerg
                02.07.2016 12:40

                А зачем куда-то лезть? В среде того же WinPE можно спокойно копировать нужные файлы. Кому не нравится WinPE — можно загрузиться с какого-нибудь Live ISO.


              1. rockin
                02.07.2016 19:04

                У меня такой «лэптоп».
                Но и оттуда даже можно выдрать mini-sata-ssd и куда-нить приколхозить. Хотя, нафига, когда можно действительно 1000 и 1 способом слить все нужные данные через тот же загрузочный образ линукса.
                Довольно далеко те времена, когда линукс некорректно читал данные с нтфс.

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


                1. Goodkat
                  02.07.2016 20:11

                  Довольно долгое время я делал бэкапы как-то так:
                  dd if=/dev/hda | gzip --best >hda-Image.gz

                  Но это было во времена Windows XP на HDD.
                  Не знаю, как это будет работать на SSD.

                  Мне как раз принесли лэптоп с Win8.1, который нужно апгрейднуть на Win10, пока ещё можно сделать это бесплатно, и на случай, если что-нибудь сломается или Win10 не понравится, нужно иметь возможность откатить всё как было. Не покупать же акронис ради одной инсталляции :)


                  1. rockin
                    02.07.2016 20:23

                    Хахаха
                    Вы серьёзно?
                    Покупать акронис?
                    Ну скачайте себе с торрента, чесслово.


                    1. Lindon_cano
                      02.07.2016 22:03
                      +1

                      А колбасу своровать в магазине?
                      Призывая воровать ПО вы лишаете денег разработчиков. Либо используйте свободные аналоги, либо покупайте, будьте честным человеком, а не таким как сейчас.


                    1. Goodkat
                      03.07.2016 00:34
                      +2

                      С тех пор, как я стал работать (программистом), я стараюсь ПО не воровать. Всё необходимое ПО я могу себе позволить купить, не самое нужное заменил бесплатными аналогами.

                      У меня и музыка почти вся куплена, кроме старых записей типа Янки :)

                      Но понимаю, когда ты нищий, школьник или студент, тут уж не до жиру — сам был таким :)


                    1. hokum13
                      04.07.2016 11:21

                      ИМХО, призывы скачать, а не купить, такое же зло, как и призывы все заблокировать и засудить.


    1. divanikus
      01.07.2016 23:23

      А UEFI тоже можно поставить таким образом или только Legacy Mode?


      1. rockin
        01.07.2016 23:31

        http://www.easy2boot.com/add-payload-files/adding-uefi-images/
        https://habrahabr.ru/post/240793/


    1. Godless
      04.07.2016 10:26

      Вот спасибо!)))


    1. batja84
      05.07.2016 22:01

      Не могу заставить работать e2b на своей 64 Гб флешке от Самсунг. На 8 Гб флешке работает. Не подскажете в чём может быть проблема?


      1. SkyRE
        06.07.2016 11:32

        Вы бы хоть описали, что именно и как не работает.
        А то так — пальцем в небо.


        1. batja84
          06.07.2016 17:27

          Я не знал ответите ли вы, поэтому не вдавался в подробности.
          Итак. Делаю всё по видеоинструкции https://www.youtube.com/watch?v=qlP4eC6wDWE с сайта http://www.easy2boot.com/. С флешки на 64 гига загрузиться после проделанных манипуляций не представляется возможным, с 8-гиговой проблем нет, она загружается (на подгрузку iso не проверял, но прежде нужно заставить 64 гига работать).


          1. batja84
            06.07.2016 17:39

            Да, забыл сказать. На эту флешку без пробелм устанавливаются любые загрузочные образы (винда, rescue USB), с которых потом без проблем можно загрузиться.


          1. SkyRE
            07.07.2016 12:02

            Скорее всего дело в вашей 64ГБ флешке. Что за модель?
            Что подразумеваете под понятием «не грузиться»: вывод БИОС-в, grub4dos,…
            Сколько партиций (разделов) на флешке получилось, тип файловой системы на них?
            Попробуйте использовать Rufus для создания самой загрузочной флешки, а необходимые файлы Easy2Boot (то что у вас на флешке сейчас находиться) перекиньте вручную, постараясь не перетирать те что появяться после Rufus-а (*.lst можно перетирать).


          1. SkyRE
            07.07.2016 12:09

            Ну и железо бы написать на котором бутаетесь.


            1. batja84
              07.07.2016 17:05

              Флешка Samsung USB 3.0 Flash Drive DUO MUF-64CB http://goo.gl/fTwkcl
              Ноутбук просто пропускает её при загрузке (с других рабочих вариантов, естественно, всё грузится). Тестовая виртуальная машина виснет при попытке с неё подгрузиться. Раздел всегда один, пробовал форматировать средствами e2b в FAT32 и NTFS, разницы никакой. Также пробовал форматировать с помощью RMPrepUSB (рекомендуемую на сайте e2b, тоже ничего не получилось. Варианты установить grub4dos или syslinux не рискнул использовать, испугало сообщение о перезаписи MBR, я подумал, что будет перезаписана MBR системного диска. Такое «счастье» мне не нужно). С какими параметрами посоветуете форматировать в Rufus?


              1. SkyRE
                09.07.2016 11:23

                Т.е. у вас загрузчик — виндовый, а не grub4dos.
                Rufus с дефолтными настройками достаточно использовать, в ИНете валом инструкций.
                MBR есть у всех дисков, и если вы умышленно не выберете (хотя в этих тулзах все заточено на removable) свой системный диск, то и с ним ничего не произойдёт.
                А 8GB флешка у вас случайно не SANDisk?


                1. batja84
                  10.07.2016 18:51

                  Перепробовал, кажется, всё: Rufus, RMPrepUSB. Grub4Dos с MBR, PBR. Толку никакого. Задолбало.
                  На 8 гиг флешка от Adata. Она тоже «веселится», в виртуалке запускается, в реальной загрузке просто не видит. Возможно причина в UEFI. Можно конечно попереключать на UEFI with CMS или Legacy и с большой долей вероятности это сработает. Но мы в 2016-м году и все новые устройства на UEFI и если загрузка не срабатывает, то это минус. Буду дальше по-старинке по необходимости просто записывать нужный образ на флешку. 5-10 минут потраченного времени погоды не сыграют. Не так часто это нужно.
                  Спасибо вам за помощь.


                  1. SkyRE
                    11.07.2016 19:51

                    Ага, UEFI говорите. Ну я и сам не спросил сразу.
                    Попробуйте вот это


                    1. SkyRE
                      11.07.2016 21:11

                      Ещё вот, и вы внимательно ознакомились с доками по Easy2boot при использовании UEFI?


  1. GennPen
    01.07.2016 23:30
    +1

    Одно время возился с мультизагрузочными образами, но однажды раскошелился на Zalman VE300, залил в него все .ISO образы и с тех пор проблем не знаю.


    1. Meklon
      02.07.2016 10:34

      Только некоторые образы не открываются из-за фрагментации.(( У меня так образ DrWeb отказался монтироваться.


      1. Digriz
        02.07.2016 13:20

        Из-за фрагментации обычно не загружаются ISO только на флэшках. Спасает (win)contig.
        VE-300 эмулирует оптический накопитель, подставляя в него iso с HDD/SSD, который в этой коробочке и стоит.
        Всё работает прозрачно — накидал iso, выбрал и грузись с любого, и пофиг, какая там фрагментация.
        Пользую уже года 3 дома и на работе — очень удобно.
        Приятным плюсом идёт то, что виртуальный привод можно загрузить как в режиме uefi, так и в режиме legacy.
        Сейчас 300-я модель снята с продажи, вместо неё — 350-я, имхо — те же яйца, вид сбоку.
        400-е не рекомендую — их, например, старые Пролианты плохо распознают как загрузочные.

        Вообще, 300-я модель — это как Nokia 3310, железобетонный и мощный хит.


        1. Meklon
          02.07.2016 14:24

          У меня версия с клавиатурой и шифрованием. На некоторые образы ругается(


          1. Digriz
            02.07.2016 15:37

            Ага, 4хх/5xx. Прошивку пробовали обновлять? Там ещё есть разные редакции под NTFS и FAT.


          1. smskin
            02.07.2016 15:45

            Проблема действительно в фрагментации образа. У меня Zalman VE200. Использую WinContig 1.35.02 для дефрагментации.
            Уже около 4х лет работает «как часы»


          1. xforce
            03.07.2016 18:53

            Там сам файл образа должен быть записан на ФС диска без фрагментации. Что там внутри образа ему по барабану, нужно просто диск дефрагментировать. У себя батник сделал на лежащий рядом ультадефраг для этого. Пока не подводил.


            1. Meklon
              04.07.2016 07:28

              Хм. А я думал, что речь о внутренней э структуре.


        1. tesla254
          04.07.2016 13:45

          Если на диске сильно фрагментирован фаил ISO, то залман не может его прогрузить. Так что взял за правило — скинул образ, сделал дефрагментацию диска. То же за все 4 года только эта проблема всплывала.


  1. AlexanderS
    02.07.2016 00:34

    Я вручную переименовывать изначально не захотел =)
    В результате за несколько лет допили себе вполне удобное и красивое решение.

    У меня структура флешки такая:
    — linux (в этой папке iso с линуксами)
    — windows (в этой папке iso с виндами, програнные через firadisk integrator)
    grldr
    menu.lst

    Ну а в меню прописано нечто такое:

    title Debian 8.4.0 amd64 — Install DVD
    set ISO=linux/debian-8.4.0/debian-8.4.0-amd64-DVD-1.iso
    ls (hd0,0)/%ISO% && partnew (hd0,3) 0x00 /%ISO%
    map /%ISO% (0xff)
    echo -e \r\n
    map --hook
    root (0xff)
    chainloader (0xff)

    title Windows 8.1 x64 — Install
    map --mem (md)+4 (9)
    map /windows/w8.1-x64-fdi.iso (0xff)
    map (hd0) (hd1)
    map (hd1) (hd0)
    map --rehook
    write (9) [FiraDisk]\nStartOptions=cdrom,vmem=find:/windows/w8.1-x64-fdi.iso;\n\0
    chainloader (0xff)


    grub4dos поддерживает без проблем exFAT. Но только китайский (chenall.net). Я обновился как-то до grub4dos-0.4.6a от апреля сего года — нормально всё. Вроде даже теперь не обязательно образы фирадисковые дефрагментировать.


    1. TishSerg
      02.07.2016 15:54

      Ну, я Grub4Dos уже очень давно использую. Приблизительно так:


      title Acronis BootCD
      set isofile=/grub/iso/Acronis_BootCD.iso
      find --set-root --ignore-floppies --ignore-cd %isofile%
      map %isofile% (hd32)
      map --hook
      chainloader (hd32)
      
      title Linux Mint 17.2 - Release i386 Cinnamon
      set isofile=/grub/iso/linuxmint-17.2-cinnamon-32bit.iso
      find --set-root --ignore-floppies --ignore-cd %isofile%
      map %isofile% (hd32)
      map --hook
      kernel (hd32)/casper/vmlinuz  file=/cdrom/preseed/linuxmint.seed boot=casper iso-scan/filename=%isofile% quiet splash --
      initrd (hd32)/casper/initrd.lz

      Другое дело, что с монтированием Виндов до сих пор не заморачивался:


      iftitle [find --set-root --devices=h /bootmgr && call set bootmgr=%@root^%] load BOOTMGR of Windows NT 6.0+ on %bootmgr%
      chainloader %bootmgr%/bootmgr


    1. maaGames
      02.07.2016 17:03

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


    1. TishSerg
      02.07.2016 22:07

      Кстати, я тут перепроверил: вы правы насчёт поддержки exFAT в Grub4Dos. То, оказалось, Linux Live CD не поддерживает загрузку с него. Меня ввёл в заблуждение тот факт, что абсолютно одинаковая конфигурация не работает с exFAT, но работает с другими двумя ФС.


      Тестировал такой вариант:


      title Linux Mint 17.2 - Release i386 Cinnamon
      set isofile=/grub/iso/linuxmint-17.2-cinnamon-32bit.iso
      find --set-root --ignore-floppies --ignore-cd %isofile%
      map %isofile% (hd32)
      map --hook
      kernel (hd32)/casper/vmlinuz  file=/cdrom/preseed/linuxmint.seed boot=casper iso-scan/filename=%isofile% quiet splash --
      initrd (hd32)/casper/initrd.lz

      FAT32 и NTFS — норм, exFAT — сваливается в BusyBox сразу после сообщения /scripts/casper-premount/20iso_scan: line 46: can't open /dev/sr0: No medium found


      1. AlexanderS
        02.07.2016 23:42

        Посмотрите мой пример выше. Я в грубе создаю вирутальный раздел диска, маппю туда исошник и уже запускаю загрузку с него. Всё! Неважно какая файловая система на флешке) Способ установки из виртуального раздела универсален и можно так запустить любой линукс)


        1. TishSerg
          03.07.2016 01:30

          Спасибо, как-нибудь попробую!)


  1. ValdikSS
    02.07.2016 00:38
    +1

    Если вам нужна загрузка UEFI с NTFS или других ФС, можно на небольшой FAT32-раздел положить UEFI Shell, драйвер NTFS и скрипт, который бы автоматически его загружал и запускал следующий загрузчик с NTFS-раздела.

    Здесь можно скачать драйверы для многих популярных ФС (exFAT тоже есть): http://efi.akeo.ie/


  1. Digriz
    02.07.2016 01:31
    +1

    Я просто оставлю это здесь )

    (сцена первая, конфигурирование bcd)

    Bcdedit не был на праздник похож,
    Пока не появился BootIce!
    BootIce — это радость и веселье!
    Bootice — всем поднимет настроенье!

    (сцена вторая, разметка флэшки)

    Коля любит Rufus
    Толя любит Rufus
    И Серёжа — тоже!!!


    1. TishSerg
      02.07.2016 12:43
      +1

      О, да! Bootice — вещь! Я только им и пользовался. Но, поскольку предмет статьи был выбран без стороннего софта пришлось разобраться с bcdedit. И не такой уж он и страшный :) + можно заскриптовать.


      1. Digriz
        02.07.2016 13:29

        Я тоже в своё время гордился тем, что я знаю кунфуbcdedit :) Статья, безусловно, полезная для понимания того, что и как надо делать. Но работать ручной отвёрткой при наличии аккумуляторной становится лениво…


  1. BlackMetal
    02.07.2016 02:10

    Обожаю Windows-way. :)


  1. electronus
    02.07.2016 05:57

    В свое время много этих «но» заставили найти флешки с контроллером phison, где можно организовать usb cd-rom который не рушится даже при переходе в protected mode и обратно. Т.е. даже XP можно ставить как с обычного CD-ROM.
    Цена: рубль пачка. Каждую флешку можно сконфигурировать как usb-cd + usb-hdd.


  1. viiri
    02.07.2016 10:50

    Чего только люди не придумают, лишь бы MDT не использовать. Статья убогая.


    1. artemlight
      02.07.2016 12:18

      Поддерживаю. Я уже давно ставлю препнутые через мдт образы, в которых есть сразу полные наборы обновлений.

      Сами образы пересобираются на шести виртуалках раз в неделю в ночь с субботы на воскресенье, и тестируются в ночь с воскресенья на понедельник.

      Потом сливаются в виде wim-файлов на dfs и расползаются по регионам, где их цепляет уже локальный ADK + WDS.

      А если нужно вдруг поставить что-то руками — гружу любой PE, дискпартом разбиваю диск и назначаю буквы, бутайсом пишу мбр+пбр+активирую раздел, распаковываю вим и перезагружаюсь. Всё.

      Точно так же без запар можно свичнуть установленную на MBR ос в UEFI (например, при переезде на диск > 3 тб.). Наоборот, правда, чуть сложнее — диск GPT в обычный мбр можно только сторонними утилитами конвертнуть. Но тоже при необходимости возможно.

      Нужно будет статью про MDT написать как-нибудь, короче.


      1. kav4ik
        03.07.2016 23:23
        +1

        Напишите пожалуйста, очень интересно.


      1. hokum13
        04.07.2016 11:29

        Особо круто, если у Вас не одна крупная контора, с кучей филиалов, а 2 десятка мелких, в некоторых из которых и сервера то нету. Или если Вы вообще по вызову работаете.

        И скажите, а зачем Вам целых 6 виртуалок да еще и раз в неделю? Вы же при таких ресурсах можете на одном релизе сидеть (например на 7 или 10).

        Поддержу kav4ik, напишите статью, интересно.


        1. viiri
          05.07.2016 02:21

          Наверное, стоило написать подробнее. MDT не рассчитан только на сетевую установку, но и позволяет создать offline media. Именно этот функционал будет полезен в двух десятках мелких контор или при работе по вызову. Ознакомиться можно, например, тут: https://technet.microsoft.com/en-us/windows/dn481547.aspx


    1. TishSerg
      02.07.2016 12:46
      +1

      Понимаете, не все люди профессиональные эникейшики. Некоторым приходится сталкиваться с установкой Винд максимум раз в месяц. Смысл что-то серьёзное городить?


    1. Mingun
      03.07.2016 14:16
      +3

      Не подскажете ли, чем так убога статья? Тем, что автор чётко и последовательно расписал порядок действий, не преминув прокомментировать, что и зачем мы делаем? Тем, что привёл примеры настроек? Тем, что не поленился и хорошо структурировал и отформатировал текст, что его легко и приятно читать? В чём убогость-то?


      И да, фраза без использования стороннего софта, означает, представьте… барабаная дробь… что сторонний софт не используется от слова вообще! Только то, что есть на установочном диске. Давно ли MDT (я же правильно понял, что вы предлагаете использовать именно его?) стал включаться в дистрибутивы Windows? Вот то то же.


      1. viiri
        04.07.2016 04:45
        -3

        Автор чётко и последовательно расписал, не преминув прокомментировать, как вырезать гланды через задний проход соседа. Текст структурирован и красиво отформатирован, но, увы, не в каждом ярком фантике находится вкусная конфета. В своём опусе, автор городит какой-то бессмысленный и ненужный велосипед. Так как это публикация не в личном бложике, а на крупном и авторитетном ресурсе, то многие начнут бездумно копировать это решение, вместо того, чтобы разобраться в вопросе и изучить существующие для этих целей инструменты. MDT (да тот самый) — фактически набор скриптов, интегрируемых в PE-образ, поэтому назвать его «сторонним софтом» можно с большой натяжкой. Я не вижу причин не использовать удобный инструмент, но если таковые есть, то банальный DISM/Apply-Image (https://technet.microsoft.com/en-us/library/hh824910.aspx) с «менюшкой на батниках» был бы проще и удобнее, чем решение из статьи.


  1. MnogoBukv
    02.07.2016 11:31

    Drivedroid и ни каких флешек. 4 гига на образ, правда, ограничение fat32, к сожалению. 10-тку не запихнул.


    1. TishSerg
      02.07.2016 12:50

      А что не так с 10-кой?
      У меня Windows_10_x64_Th2.iso — 3,4 ГиБ;
      Windows_10_x86_Th2.iso — 2,6 ГиБ


      1. MnogoBukv
        03.07.2016 08:45

        Да, сорри, перепутал. Вин81 не влазит.
        en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso — 4.2 гектара.
        Всё равно драйвдроид удобная штука. Хоть и подглючивает местами.


        1. TishSerg
          03.07.2016 11:56

          А вы попробуйте заглянуть в install.wim/install.esd. М.б. там есть образ, который вам не нужен. Или в другом месте в самом ISO что-то лишнее. Всё-таки 0.2 ГиБ — это слишком мало, чтобы отказываться от удобств :)
          Ещё вариант: если у вас там install.wim — конвертируйте в install.esd. Размер уменьшится где-то на треть.


      1. LightSUN
        03.07.2016 17:03

        10.1511 x64 (7223712) да, влазиет.
        А апрельский билд — нет:
        en_windows_10_multiple_editions_version_1511_updated_apr_2016_x64_dvd_8705583.iso
        Size: 4 458 960 896 bytes
        SHA1: 1b247b5b348e78c9bc3afd3c1cbe10cee3d1b9d5


  1. sisop66
    02.07.2016 12:37

    Вот в этом(в творческом порыве (sic!) ) и отличаются «Окошки» от " «Огрызка»! :-) «Форточки» вынуждают применять всю «извращённость» ума для достижения лучшего эффекта! И все достижения на этом пути лично зависят от тебя! :-) У «Яблока» философия другая: купил у нас «чёрный ящик» с логотипом «Apple» включил и если работает Удача! Иначе стоит паниковать и искать «спеца» по «яблочному продукту» ну никакого «полёта фантазии»! :-)


    1. hokum13
      04.07.2016 11:44

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

      Странно слышать про «извращенность ума» в контексте ОС имеющей в предках BSD.


      1. Lindon_cano
        04.07.2016 13:03

        Apple MacOSX/OSX/macOS не имеет в предках BSD. Это — распространенный миф. Оно использует ядро Mach не имеющее ничего общего с *BSD и набор утилит распространяющихся под BSD license, но не становящихся от этого xBSD принадлежащими. Миф, обычно, распространяют так называемые «фрибздшники», они же виндузятники обыкновенные видевшие FreeBSD только в Putty.


        1. hokum13
          04.07.2016 14:50

          По вашей логике linux не предок android. Ведь кроме ядра ничего не унаследовали.


          1. Lindon_cano
            04.07.2016 15:07

            Android — дистрибутив Linux(но не GNU/Linux), потому что работает на ядре Linux. OS X работает на ядре Mach не имеющем никакого отношения к BSD, вообще никакого, даже рядом не лежали.
            Это у вас с логикой проблемы.


            1. SkyRE
              06.07.2016 14:12

              Если вы уже такой умный, то XNU. Про BSD/не-BSD там же почитайте.


  1. ComodoHacker
    02.07.2016 13:47
    -1

    Хорошая статья. Только не нужно так явно палиться, что устанавливаете нелицензионное ПО. :)


    1. TishSerg
      02.07.2016 14:56
      +2

      Ну, строго говоря, ei.cfg — не обязательно для пиратства… Это способ отложить ввод ключа)


      1. Xaliuss
        02.07.2016 20:55

        Может я чего-то не понимаю, но разве ввод ключа является вообще обязательным по умолчанию? Всегда устанавливал винды с 7 по 10 с стандартных образов, и никогда не было необходимости вводить ключ сразу. На своём текущем компе я вообще не вводил ключ на семерке, вообще не активируя её (1 месяц же вообще без последствий, и можно продлевать ещё 3 месяца), и спокойно потом поставил десятку, когда её бесплатно инсайдерам давали.

        Вроде обязательный ввод ключа на этапе установки был до висты ещё, правда насчёт XP не уверен.


        1. TishSerg
          02.07.2016 21:47
          +1

          Среди Винд с 7 по 10 — обязательно требует 8.1.
          Но даже безотносительно ключа: такой ei.cfg, который я привёл даёт возможность выбирать редакцию среди всех образов в install.wim/install.esd, что тоже удобно.


        1. kvant21
          03.07.2016 02:34

          Ключ при установке требуют Retail и ОЕМ образы. VL — не требуют, MSDN — кажется, тоже. Начиная с Висты такой порядок, как минимум. А XP Enterprise даже без активации была :)


          1. TishSerg
            03.07.2016 12:03

            Retail, ОЕМ и VL обзазы вроде как и отличаются одним только файлом. Это и есть ei.cfg. Если этого файла нет — требуют ключ. Не знаю как Виста, но при отсутствии ei.cfg или секции [Channel] в нём — Win7 и Win10 требуют ключ с возможностью пропустить его ввод, а в Win8 — пропустить нельзя. И не важно MSDN или нет. У меня был образ Win8.1, скачанный с DreamSpark — требовал ключ без возможности пропустить. Образ Win8.1 скачанный Media Creation Tool — то же самое.


      1. ComodoHacker
        06.07.2016 00:22
        +1

        Столько разных версий на флешке плюс история с одногруппницей не оставляют никаких сомнений. :)


  1. u007
    03.07.2016 00:15

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

    1) Создаём Загрузочный Носитель с WinPE
    2) Заливаем в папку ISO множество версий Windows с MSDN (без использования стороннего софта)
    3) Носитель готов.

    Для установки ОС далее загружаемся в PE и запускаем WinNTSetup: http://remontcompa.ru/uploads/posts/2015-04/1428391928_57.jpg
    Который развернёт понравившийся образ на HDD, или VHD, подготовит и настроит загрузчик и сварит вам кофе, пока вы ждёте.


    1. u007
      03.07.2016 00:29

      PS Для разметки диска может понадобиться BootIce, для монтирования ImDisc, ну и там ещё по мелочи.
      PPS Если компик живой, можно обойтись без PE.
      PPPS А для защиты от злых вирусов (Чак Норрис рекомендует) можно одолжить у приятеля Raspberry Pi: http://www.bertold.org/sdtool/


  1. geher
    03.07.2016 10:18

    Внешний Бокс для HDD Zalman ZM-VE300 или Zalman ZM-VE400.
    Нaкидываем на диск ISO образы.
    Выбираем нужный в меню бокса.


  1. Compiller
    03.07.2016 13:37
    +3

    Для справки — файл конфига bcd в папке boot — куст реестра, его можно подключить и править с помощью regedit.


  1. kriz10
    03.07.2016 23:14

    Спасибо за статью! Сразу в избранное.


  1. itshaman
    04.07.2016 11:56
    +2

    Касаемо UEFI и NTFS: есть весьма интересная разработка от автора утилиты Rufus github.com/pbatard/uefi-ntfs


  1. silverjoe
    05.07.2016 10:43
    +1

    > один файл огромного размера
    > нельзя использовать FAT32, а следовательно и UEFI

    Его можно ведь разбить на части!

    D:\>imagex /split d:\win_pex86\ISO\sources\install.wim d:\win_pex86\ISO\sources\install.swm 3500