Делаем из образа CM_MultiBoot.iso загрузочную USB - флэшку
[by  microsaint{at}gmail.com  microsaint.narod.ru]

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

  1. Подготавливаем домашнюю директорию нашей флэшки:
    1. Если есть скаченный из инета или сделанный самим (по этому описанию) файл образа CM_MultiBoot.iso, то разархивируем его в директорию, например C:\BootCDRoot или монтируем в любой Virtual Drive.
    2. Если есть подготовленная для создания образа директория и стоит задача сделать только флэшку, то создание самого файла CM_MultiBoot.iso можно пропустить, а воспользоваться этой директорией, допустим C:\BootCDRoot.
  2. Освобождаем флэшку от файлов.
  3. Запускаем скрипт установки CM_MultiBoot на флэшку (Внимание! Скрипт отформатирует ее, сохраните свои файлы!):
    CM_Multiboot_ISO2USB C:\BootCDRoot X:
    где C:\BootCDRoot - source директория, содержащая контент CM_MultiBoot.iso
    x: - destination директория, то есть буква нашего флэш диска.

    !Последним символом в аргументах не может быть слэш "\":
    То есть следующий пример ошибочен: CM_Multiboot_ISO2USB C:\BootCDRoot\ X:\

Текст и описание работы скрипта CM_Multiboot_ISO2USB.bat


Жирным текстом текст скрипта, тонким - пояснения.

@echo off
Выводим информацию о том, как использовать скрипт:
echo CM Multiboot CD 2 bootable USB-flash installer
echo Usage: CM_Multiboot_ISO2USB.bat [src-path] [dst-path]
echo        [src-path] - Path to ISO root  [dst-path] - Path to USB root! e.g. i:

Если задано неверное количество аргументов -выходим. Аргумента должно быть 2.
If "%2"=="" Echo Too few arguments. See usage. & goto :EOF
If NOT "%3"=="" Echo Too many arguments. See usage. & goto :EOF

Создаем временную директорию в каталоге со скриптом и извлекаем туда файлы из Hiren144.img
echo Extract files from Hiren144.img to temp folder
mkdir .\hirensys
.\EXTRACT.EXE -x %1\boot\Hiren144.img %CD%\hirensys *.*

Форматируем флэшку в FAT32 (NTFS не подходит ибо с ней не дружат dos-загрузчики и linux). Вас попросят ввести текущий disklabel  и 2а раза согласиться с форматированием. Существует множество способов как сделать флэшку загрузочной, например:
  1. Использовать mkbt.exe от Bart Lagerweij. Вытащив бутсектор с Hiren144.img и скопировав на флэшку, но остается хитро скопировать io.sys и command.com - они должны находиться в начале диска. Кроме того эта программа постоянно выдает ошибки, может быть из-за большого объема моей флэшки - 8 Гб.
  2. Использовать makebootfat.exe, которая делает то же, что и первая, но тоже частенько ругается и заканчивается отрицательным резултатом. После ее применения некоторые разбивальщики дисков (paragon HDM, partition magic) будут выдавать ошибки (из-за нестандартной таблицы - с чем связано?) на флэшке, впрочем и выбранный мною метод от этого не спасает.
    В принципе этот метод не хуже выбранного. Читайте о его применении в CM_AnyImgOnUsb.html ыв
  3. За-enable-ить контрол в диалоге форматирования флэшки MS - выбрать из контекстного меню, вызванного на флэшке пункт "Форматировать...". За-enable-ить чекбокс "Создание загрузочного диска MS-DOS" (который доступен в XP только на дискетках) и отформатировать флэшку. У меня файлы скопировались на флэшку, но загрузиться с нее не удалось (многие в интернете уверяют что получается). Кстати, то же самое, сделанное из win98 (где к тому же за-enable-ать ничего не надо) закончилось успешной загрузской с USB.
  4. Выбранный мной способ с помощью общеизвестной "HP USB Disk Storage Format Tool". Она почти всегда срабатывает отлично и без ошибок. Я использую консольный вариант, в той же директории есть и диалоговый аналог.
Если кто-то делает загрузочную DOS флэшку еще каким-то способом, особенно без форматирования и ребутов, отпишитесь.
echo Formatting USB Flash. Enter your disk label & agree "y"..."y"
HPUSBF.EXE %2 -FS:FAT32 -Q -B:.\hirensys

Копируем все файлы из Hiren144.img в корень флэшки. Удалив при этом системные io.sys, comman.com чтобы не затереть скопированные специально в начало эти же файлы утилитой HPUSBF.EXE. Мапить из загрузчиков с помощью memdisk сам Hiren144.img бесполезно т.к. bat-ники Hiren-а не найдут диска усбшки. Прочитайте мануал по установке на USB от Hiren-a.
echo Copy Hirens floppy-img files from temp folder to destination root
echo Delete system files io.sys, comman.com first (don't overwrite it!).
del /F /Q .\hirensys\command.com
del /F /Q .\hirensys\io.sys
copy /B /Y .\hirensys\*.* %2

Копируем всю информацию со структурой директорий из src-директории на флэшку
echo Copy all data from cd to usb
xcopy %1 %2 /E /D /H

Переименовываем директорию XPPE в xppenv из-за разницы в использовании загрузчиков и наименований директорий. Замещаем заточенный на CD подправленным SETUPLDR.BIN, заточенным на USB. Подробнее читаем CM_WinBartsPE.html.
move /Y %2\XPPE %2\xppenv
copy /B /Y .\SETUPLDR.BIN.XPPENV.USB %2\xppenv\SETUPLDR.BIN

Переименовываем директорию XPRC в xprcons из-за разницы в использовании загрузчиков и наименований директорий. Замещаем заточенный на CD подправленным SETUPLDR.BIN, заточенным на USB. Подробнее читаем CM_WinRecoveryConsole.html.
move /Y %2\XPRC %2\xprcons
copy /B /Y .\SETUPLDR.BIN.XPRCONS.USB %2\xprcons\SETUPLDR.BIN

Перемещаем файл isolinux.cfg в корень syslinux.cfg и удаляем ненужную \boot\isolinux директорию. Это разные модификации одного загрузчика isolinux - для CD DVD, syslinux - для HDD USB. Синтаксис их конфигов одинаковый.
echo Copy isolinux.cfg to syslinux.cfg
move /Y %2\boot\isolinux\isolinux.cfg %2\syslinux.cfg
rmdir /S /Q %2\boot\isolinux

Копируем NTDETECT.COM в корень флэшки - без него не загрузятся WinPE, WinRecoveryConsole.
copy /B /Y %2\xppenv\NTDETECT.COM %2\NTDETECT.COM

Копируем отредактированный WINNT.SIF. Многие советуют его удалить, в случае с флэшкой это не подходит. В нем содержится метка CmdCons="1", означающая грузить консоль восстановления, в противном случае попытается вести установку винды и попросит вставить диск с дистрибутивом.
echo Copy \xprcons\WINNT.SIF with point CmdCons="1"
copy /B /Y .\WINNT.SIF.XPRCONS.USB %2\xprcons\WINNT.SIF

Устанавливаем загрузчик syslinux на флэшку, он затирает! предыдущий установленный нами DOS с помощью HPUSBF.EXE. Возникает вопрос - зачем ставили первый. Ответ - в нем нет необходимости, но при его установке копируются в начало io.sys command.xom, а это необходимо, иначе Grub4Dos при команде "chainloader io.sys" выдаст ошибку. Поэтому, если кто научится копировать сис-файлы "правильно" сообщите мне.
echo Add syslinux loader to USB-flash
.\syslinux.exe -sma %2

Теперь удаляем не нужные - временную директорию \hirensys и файл-образа Hiren144.img
echo Now delete Hiren144.img from USB
del /F /Q %2\boot\Hiren144.img
echo Delete local temp folder - .\hirensys
rmdir /S /Q .\hirensys

На этом скрипт установки на флэшку закончен.

Сайт создан в системе uCoz