Создание загрузочного ISO-файла из командной строки?

Вопрос или проблема

У меня есть загрузочная флешка с установкой 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"

Но затем я получаю следующую ошибку:
boot
Это, вероятно, происходит потому, что я добавил 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"
  1. Получить ISO из VLC с файлом install.wim вместо install.edf
  2. Подключите ISO и скопируйте файлы в папку
    (моя: C:\TempPath\WindowsImages\ExtractedOriginalISO\Windows10)
  3. Подключите извлеченные файлы ISO к папке, предназначенной для монтирования:
Dism /Mount-Image /ImageFile:C:\TempPath\WindowsImages\ExtractedOriginalISO\Windows10\sources\install.wim /Index:5 /MountDir:C:\TempPath\Mount
  1. Откройте смонтированное изображение в папке монтирования и перейдите в C:\Windows и создайте папку Panther/Unattend, затем добавьте файл unattend.xml.
  2. Отключите изображение: Dism /Unmount-Image /MountDir:C:\TempPath\Mount /Commit
  3. Создайте 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-накопители. Он содержат все необходимые для загрузки файлы и образ системы. Чтобы создать такой файл, нам необходимо сделать несколько шагов:

  1. Получение и копирование данных: Сначала требуется скопировать все данные с загрузочного USB-накопителя в локальную папку на вашем компьютере.

  2. Настройка загрузочных файлов: Необходимо убедиться, что все необходимые для загрузки файлы, такие как bootmgr, boot\BCD, а также загрузочные образы boot.wim, готовы к использованию.

  3. Утилита создания ISO: Для создания загрузочного ISO-файла рекомендуется использовать утилиту oscdimg, которая позволяет создавать образы Windows PE и другие загрузочные ISO.

  4. Правильная конфигурация 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

Советы:

  1. Проверьте доступность утилиты oscdimg: Она обычно находится в составе Windows Assessment and Deployment Kit (ADK).

  2. Убедитесь, что все необходимые файлы на месте: Например, файлы etfsboot.com и efisys.bin должны быть правильной версией для вашей конфигурации.

  3. Тестируйте итоговый ISO: Используйте виртуальные машины, такие как VirtualBox или VMware, чтобы проверить, загружается ли ISO корректно.

Следуя этим шагам и рекомендациям, вы сможете создать рабочий загрузочный ISO из вашего USB-накопителя. Этот метод не только надежен, но и позволяет автоматизировать процесс создания ISO, что делает его идеальным для системного администрирования и большой инфраструктуры.

Оцените материал
Добавить комментарий

Капча загружается...