Вопрос или проблема
У меня есть загрузочная флешка с установкой WINPE, и я хотел бы преобразовать эту загрузочную USB в ISO файл из batch или powershell файла. Я пробовал использовать такие инструменты, как Folder2iso, но он не поддерживает создание загрузочного ISO файла. ImgBurn казался многообещающим, но как бы я ни играл с конфигурацией, ISO никогда не загружается, плюс его сложно сделать портативным, что необходимо для программы, которую я создаю.
После дополнительных исследований я могу создать ISO следующим образом:
pushd C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg
xcopy "F:\" "%temp%\WinPECopy\media\"
xcopy "C:\WinPE_amd64\fwfiles" "%temp%\WinPECopy\fwfiles\"
"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\MakeWinPEMedia.cmd" /ISO "%temp%\WinPECopy" "C:\WinPE_Copy.iso"
Но затем я получаю следующую ошибку:
Это, вероятно, происходит потому, что я добавил NET framework и пользовательские файлы на USB-накопитель, но использовал стандартный неизмененный файл efisys.bin из C:\WinPE_amd64\fwfiles.
Вы можете увидеть это в файле CreateWinPEMedia.cmd
здесь:
:ISOWorker_OscdImgCommand
rem
rem Установить правильный аргумент загрузки в зависимости от доступности загрузочных приложений
rem
set BOOTDATA=1#pEF,e,b"%WORKINGDIR%\%FWFILES%\efisys.bin"
if exist "%WORKINGDIR%\%FWFILES%\etfsboot.com" (
set BOOTDATA=2#p0,e,b"%WORKINGDIR%\%FWFILES%\etfsboot.com"#pEF,e,b"%WORKINGDIR%\%FWFILES%\efisys.bin"
)
rem
rem Создать ISO файл, используя соответствующую команду OSCDImg
rem
echo Создание %DEST%...
echo.
oscdimg -bootdata:%BOOTDATA% -u1 -udfver102 "%WORKINGDIR%\%TEMPL%" "%DEST%" >NUL
if errorlevel 1 (
echo ОШИБКА: Не удалось создать файл "%DEST%".
goto fail
)
Кто-нибудь знает, как с этим справиться? Я пробовал удалить файл etfsboot.com
, так как кажется, что он управляет наличием файла, но затем получаю ошибку Failed to boot: No bootable medium found.
.
Еще одно обновление
Я думаю, что на правильном пути, когда разбираюсь с этим, я вижу, что это своего рода XY-вопрос (подсказал @Biswapriy). Думаю, я могу сделать его не XY-вопросом, но сначала надо немного больше исследовать.
Пока что я думаю:
setps:
1. Подключить USB-накопитель
2. Скопировать все в папку (скрипт backup2)
3. Отключить USB-накопитель
4. Создать новую базу WinPE: copype amd64 C:\WinPE_ISO_START
5. подключить новый образ: dism /Mount-Image /ImageFile:"C:\WinPE_ISO_START\media\boot.wim" /index:1 /MountDir:"C:\WinPE_ISO_START\mount"
6. восстановить из копии
7. Отключить изображение: dism /Unmount-Image /MountDir:"C:\WinPE_ISO_START\mount: /commit
8. Создать iso: makewinpemedia /iso "C:\WinPE_ISO_START" "C:\Changed iso.iso"
- Получить ISO из VLC с файлом install.wim вместо install.edf
- Подключите ISO и скопируйте файлы в папку
(моя: C:\TempPath\WindowsImages\ExtractedOriginalISO\Windows10) - Подключите извлеченные файлы ISO к папке, предназначенной для монтирования:
Dism /Mount-Image /ImageFile:C:\TempPath\WindowsImages\ExtractedOriginalISO\Windows10\sources\install.wim /Index:5 /MountDir:C:\TempPath\Mount
- Откройте смонтированное изображение в папке монтирования и перейдите в C:\Windows и создайте папку Panther/Unattend, затем добавьте файл unattend.xml.
- Отключите изображение:
Dism /Unmount-Image /MountDir:C:\TempPath\Mount /Commit
- Создайте ISO из папки C:\TempPath\WindowsImages\ExtractedOriginalISO\Windows10:
Запустите инструмент Deployment Imaging от имени администратора
Выполните команду:
oscdimg.exe -m -o -u2 -udfver102 -bootdata:2#p0,e,bC:\TempPath\WindowsImages\ExtractedOriginalISO\Windows10\boot\etfsboot.com#pEF,e,bC:\TempPath\WindowsImages\ExtractedOriginalISO\Windows10\efi\microsoft\boot\efisys.bin C:\TempPath\WindowsImages\ExtractedOriginalISO\Windows10 C:\TempPath\WindowsImages\WindowsLVT.iso
Ответ или решение
Создание загрузочного ISO-файла из загрузочной флешки с помощью командной строки может быть сложной задачей, особенно если необходимо учесть различные параметры и обходные пути. Давайте подробно рассмотри процесс решения этой проблемы с использованием командной строки и PowerShell.
Теория
ISO-файл — это образ диска, который можно использовать для создания загрузочных носителей, таких как CD, DVD или USB-накопители. Он содержат все необходимые для загрузки файлы и образ системы. Чтобы создать такой файл, нам необходимо сделать несколько шагов:
-
Получение и копирование данных: Сначала требуется скопировать все данные с загрузочного USB-накопителя в локальную папку на вашем компьютере.
-
Настройка загрузочных файлов: Необходимо убедиться, что все необходимые для загрузки файлы, такие как
bootmgr
,boot\BCD
, а также загрузочные образыboot.wim
, готовы к использованию. -
Утилита создания ISO: Для создания загрузочного ISO-файла рекомендуется использовать утилиту
oscdimg
, которая позволяет создавать образы Windows PE и другие загрузочные ISO. -
Правильная конфигурация Boot Sector: Особенно важно правильно указать параметры загрузочных секторов, чтобы ваша ISO была действительно загрузочной. Для это используются файлы
etfsboot.com
(для BIOS) иefisys.bin
(для UEFI).
Пример
Вам уже известна команда oscdimg
, которую вы привели. Чтобы она работала максимально эффективно, необходимо учесть несколько важных моментов.
Копирование данных
Предположим, ваш USB-накопитель имеет букву диска F:. Вам нужно скопировать содержимое USB в временную папку:
xcopy "F:\" "%temp%\WinPECopy\media\" /e /h /k
Эта команда осведомлено о переносе всех файлов, включая скрытые и системные, с сохранением атрибутов.
Настройка и применение утилиты oscdimg
Пусть папка, куда вы скопировали данные, будет %temp%\WinPECopy
. Чтобы создать загрузочное ISO, выполните:
oscdimg -m -o -u2 -udfver102 -bootdata:2#p0,e,b"%temp%\WinPECopy\fwfiles\etfsboot.com"#pEF,e,b"%temp%\WinPECopy\fwfiles\efisys.bin" "%temp%\WinPECopy\media" "C:\FinalISO\WindowsPE.iso"
Объяснение параметров:
-m
: игнорировать ограничения размера файла.-o
: оптимизация дубликатов файлов.-u2
: использование формата UDF версии 2.01.bootdata
: указывает путь к загрузочным секторамetfsboot.com
иefisys.bin
.
Применение
Используйте этот метод для обеспечения надежного процесса создания ISO. Попробуйте организовать ваши скрипты в единую PowerShell или Batch файл для автоматизации процесса.
# PowerShell скрипт для автоматизации
$usbDrive = "F:"
$tempPath = "$env:TEMP\WinPECopy"
# Скопировать данные с USB
Copy-Item -Path $usbDrive\* -Destination "$tempPath\media" -Recurse -Force -PassThru
# Создать ISO
Start-Process "oscdimg" -ArgumentList "-m -o -u2 -udfver102 -bootdata:2#p0,e,b'$tempPath\fwfiles\etfsboot.com'#pEF,e,b'$tempPath\fwfiles\efisys.bin' '$tempPath\media' 'C:\FinalISO\WindowsPE.iso'" -NoNewWindow -Wait
Советы:
-
Проверьте доступность утилиты
oscdimg
: Она обычно находится в составе Windows Assessment and Deployment Kit (ADK). -
Убедитесь, что все необходимые файлы на месте: Например, файлы
etfsboot.com
иefisys.bin
должны быть правильной версией для вашей конфигурации. -
Тестируйте итоговый ISO: Используйте виртуальные машины, такие как VirtualBox или VMware, чтобы проверить, загружается ли ISO корректно.
Следуя этим шагам и рекомендациям, вы сможете создать рабочий загрузочный ISO из вашего USB-накопителя. Этот метод не только надежен, но и позволяет автоматизировать процесс создания ISO, что делает его идеальным для системного администрирования и большой инфраструктуры.