Вы здесь: Онлайн Уголок программиста Практика создания загрузочного внешнего USB носителя с ERD Commander.
Это не учения, боец! Добро пожаловать в реальный мир!
Для начала немного теории...
При включении электропитания компьютера выполняется общий сброс оборудования и управление передается специальной программе, прошитой в постоянном запоминающем устройстве (ПЗУ) BIOS, называемой базовой системой ввода-вывода (Basic Input/Output System). Основное назначение BIOS - проверка работоспособности оборудования компьютера, сброс и инициализация основных контроллеров и выполнение начальной загрузки операционной системы. Проверка оборудования выполняется подпрограммой самотестирования (POST - Power On Self Test). POST выполняет группы тестов, проверяющих работоспособность процессора, памяти, основных контроллеров чипсета а также некоторых периферийных устройств, необходимых для выполнения начальной загрузки (диски, клавиатура, видеоадаптер и т.п.).
Если в процессе выполнения POST обнаружены ошибки, не позволяющие выполнить загрузку - выполняется останов с выдачей специального звукового сигнала, позволяющего идентифицировать неисправное оборудование. Коды ошибок POST не стандартизированы и определяются версией BIOS. Если же тестирование выполнилось успешно, практически на всех версиях BIOS выдается одиночный короткий звуковой сигнал ("короткий писк") и начинается процедура начальной загрузки операционной системы.
Для выполнения начальной загрузки, в общем случае, подпрограмма BIOS должна считать определенным образом оформленную программу с внешнего носителя в оперативную память и передать ей управление. Для загрузки с внешнего USB диска, необходимо, чтобы подпрограмма начальной загрузки BIOS могла обнаружить устройство загрузки, содержащее в своем первом секторе специальную запись Master Boot Record или MBR.
Стандартно MBR располагается в первом секторе загрузочного диска и занимает 512 байт (стандартная длина сектора). Это не обязательное условие - MBR может занимать более одного сектора, что зависит от конкретной разновидности загрузчика. Хотя запись MBR не является строго зависимой от платформы загружаемой ОС, она отличается для DOS, файловых систем Windows и Linux. Обязательным признаком наличия записи MBR в первом (иногда его называют нулевым) секторе диска является специальный код (сигнатура) в двух последних байтах - 55AA. Наличие сигнатуры проверяется подпрограммой BIOS в первую очередь, и при ее отсутствии, диск считается не загрузочным, даже если соблюдены все остальные условия возможности загрузки. Многие программы работы с жесткими дисками позволяют просматривать и редактировать данные выбранных секторов. Так, например, выглядит запись MBR, просматриваемая с помощью бесплатной версии Victoria for Widows.
Строго говоря, наличие сигнатуры является не столько признаком присутствия MBR, сколько признаком наличия каких-либо разделов на диске. Если изменить, например, с помощью редактора дисков, сигнатуру сектора, то и BIOS, и операционная система, будут считать такой диск "неформатированным". Перед сигнатурой (по смещению 0x1BE относительно начала сектора) располагается таблица разделов (Partition Table), состоящая из 4-х элементов по 16 байт каждый, что определяет максимальное число (не более4-х) разделов на жестком диске. Каждый элемент описывает тип раздела (00h - раздел неопределенного типа, попросту - свободное место, 01h - 12 битный FAT, 05h - расширенный раздел, 07h - NTFS и т.п.), признак активности (возможности загрузки) - код 80h, адрес начала, адрес конца, смещение относительно MBR и количество блоков раздела. Упрощенно, структуру MBR можно представить так:
Программа начальной загрузки ищет активный (Active) раздел, считывает в оперативную память данные из первого сектора данного раздела, и передает управление начальной инструкции кода данного загрузчика. Содержимое загрузочного сектора активного раздела, как правило, зависит от загружаемой операционной системы. Его задача - загрузить в память ядро ОС и передать ему управление.
Таким образом, чтобы загрузиться с внешнего USB диска, нужно:
Из вышеперечисленного следует, что простое копирование файлов какой-либо ОС на флэшку (или другой носитель), не приведет к возможности загрузки этой операционной системы с нее, поскольку, при копировании файлов не производится модификация основной загрузочной записи MBR и загрузочной записи активного раздела. И наоборот, если имеется MBR и начальный загрузчик раздела, возможна замена файлов загружаемой системы. Например, если у вас умеется загрузочная флэшка с Windows XP, то можно полностью удалить все ее файлы из раздела и заменить их другими такой же операционной системы. Возможность загрузки с такой флэшки сохранится.
На сегодняшний день не существует универсальной программы для быстрого и удобного создания загрузочного USB диска. Но имеется немалое количество различных программных продуктов, в том числе и не предназначенных напрямую для решения данной задачи, и тем не менее, позволяющих, при умелом использовании, ее решить. Наиболее распространенный случай, когда имеется компакт диск или его образ ISO и нужно на его основе создать свою загрузочную флешку. Файл ISO - это образ данных CD или DVD диска, основан на международном стандарте ISO-9660. Файл-образ содержит точную копию физического компакт-диска: данные, информацию о файловой системе, структуру каталогов, атрибуты файлов и, что важно - загрузочную информацию. При создании образа ISO, копируется каждый бит CD/DVD диска в соответствии с оригинальным носителем. Формат ISO - самый распространенный формат образов компакт дисков, поэтому существует огромное количество программ, позволяющих получить из существующего диска его ISO-образ.
Существуют также программные продукты, позволяющие выполнять редактирование образов и создавать на его основе загружаемые носители. Одной из наиболее популярных программ для создания загружаемых носителей является UltraISO, компании EZB Systems Inc. Программа платная, однако, незарегистрированная версия позволяет работать с файлами до 300 мб, и может эмулировать виртуальный CD объемом до 600 Мб.
Для примера создадим с использованием UltraISO, загрузочную флэшку на основе загрузочного компакт диска ERD Commander 2008.
Сначала необходимо создать ISO-образ, для чего в основном меню программы выбираем вкладку Инструменты и пункт Создать образ CD. После чего выбираем привод с загрузочным компакт диском, а также указываем имя и путь файла образа ISO.
После нажатия кнопки "Сделать" начнется создание образа ISO из имеющегося CD. Ход процесса отображается программой.
После завершения создания образа, программа предложит открыть его содержимое.
В данном случае, поскольку нет необходимости работать с содержимым ISO-образа можно ответить "Нет" и перейти к следующему шагу - созданию на основе образа диска загрузочной флешки с ERD Commander 2008.
Выбираем вкладку Самозагрузка и пункт Write Disk Image (Записать образ на диск).
Disk Drive - выбираем USB диск, на который нужно записать образ ISO.
В поле Файл образа отображается имя и путь файла образа ISO. Это поле изменить в данном контексте нельзя. Его значение задается выбранным (открытым) файлом ISO. Если необходимо выбрать другой файл образа, то это выполняется через основное меню программы Файл - Открыть - имя файла образа.
Метод записи - нужно выбрать USB HDD или USB HDD+.
В нижней части окна жмем кнопку "Форматировать" и задаем параметры форматирования сменного диска.
После завершения форматирования, закрываем его окно и жмем кнопку "Записать". Программа выводит предупреждение о том, что все данные на диске будут уничтожены и требует подтверждения продолжения работы.
После нажатия "Да" начинается процесс записи образа на съемный диск. Ход процесса отображается в виде протокола в верхней части основного окна.
После завершения операции записи становится активной кнопка "Назад" и при ее нажатии окно записи образа закрывается. Подобная методика позволяет легко создавать загрузочные USB диски аварийного восстановления системы из образов ERD версий 6.0 и 6.5 комплекта Microsoft Diagnostic And Recovery Toolset (MS DART). Однако, попытка создать загрузочную флешку из образа ERD Commander 2005/2008 или ERD версии 5.0 заканчивалась неудачей. Диск создавался успешно, но попытка загрузки с него заканчивалась выводом на экран дисплея сообщения: "Start booting from USB device: Remove disk or other media. Press any key to restart".
Образы ERD 6.X создаются на основе Windows Preinstallation Environment (WinPE) версии 2.0 и старше. WinPE - это усеченная версия Windows XP, которая может быть загружена без установки на жесткий диск, а с использованием CD/DVD привода или внешнего USB носителя. Версия 2.x и старше использует загрузчик в стиле Windows Vista/Windows 7. Предыдущие версии - загрузчик в стиле Windows NT/2000/XP. Напомню, что при записи образа ISO на флешку, программа UltraISO выводила протокол своей работы, в котором присутствовала запись о типе загрузочного сектора раздела. В приведенном примере, это строка - Boot Sector: WinNT. Это означает, что использовался загрузочный сектор раздела, применяемый для загрузки Windows NT/2K/XP.
Процесс загрузки системы с жесткого диска в данном случае происходит следующим образом:
Механизм загрузки WinNT/2K/XP с использованием жесткого диска один и тот же - в корневом разделе диска ищется файл загрузчика ntldr, загружается в память, и управление передается ему. Дальше, уже код загрузчика занимается поиском и загрузкой необходимых файлов Widows. В случае с Windows PE на компакт диске, используется код загрузочного сектора CD (файл bootsect.bin) и вместо файла начального загрузчика ntldr используется файл setupldr.bin из каталога I386. Причем файл setupldr.bin полностью функционально идентичен файлу ntldr. Напрашивается простое решение - удалить из корня флешки файл bootsect.bin и скопировать из каталога I386 файл setupldr.bin в ее корень под именем ntldr. Программный код загрузочного сектора активного раздела должен обнаружить файл начального загрузчика ntldr в корне флешки и передать управление ему.
При попытке загрузиться в таком варианте ситуация изменилась. Загрузка началась, выдалось сообщение Setup is inspecting your computer's hardware configuration:
И через несколько секунд NTDETECT failed. Все верно, setupldr.bin в виде загрузчика ntldr в корне флешки, сработал, но не найден файл NTDETECT, что вполне ожидаемо, поскольку механизм загрузки в стиле WinNT предполагает, что кроме файла ntldr в корневом разделе диска должен присутствовать файл ntdetect.com
Это файл также находится в каталоге I386 флешки. Просматривается закономерность, что при использовании setupldr.bin в качестве ntldr, все файлы, необходимые для загрузки и инициализации ядра, должны находиться в корневом каталоге диска, а не в каталоге I386. После копирования их в корневой раздел съемного диска загрузка завершилась сообщением File \minint\system32\biosinfo.inf could not be Loaded. Отсутствует файл \minint\system32\biosinfo.inf. Однако и каталога minint на флешке нет, а есть I386, в котором как раз и расположен искомый файл. Напрашивается вывод, что вместо имени каталога системы I386 используется имя minint.
Вообще-то, можно было бы разобраться со структурой записей в файле txtsetup.sif и изменить путь к системным файлам, но есть более простой и универсальный способ. Попробуем переименовать каталог и снова попытаемся загрузиться с флешки. Все прекрасно работает! Загрузка с внешнего USB диска ERD Commander 2005/2008/ERD5.0 выполняется без каких-либо проблем, гораздо быстрее и появляется прекрасная возможность переделать полученную загрузочную ERD-флешку под свои предпочтения.
Понимание механизма загрузки позволяет решить "вручную" большинство проблем без поиска и установки дополнительного программного обеспечения. Для примера, если на полученной флешке понадобилось заменить версию ERD Commander, то сделать это, можно без использования какого либо ПО. Основная загрузочная запись MBR и код загрузочного сектора активного раздела на данной флешке уже имеются. Следовательно, достаточно просто удалить с нее все файлы и каталоги одной версии ERDC и "подсунуть" нужные из состава другой. Естественно, нельзя использовать форматирование, а именно удалить старые файлы и папки и на их место скопировать новые. Для создания загрузочных съемных USB носителей можно обойтись и без использования записи образов компакт-дисков.
Предыдущую задачу можно решить и без использования программы UltraISO. Для получения на флешке MBR и загрузочного сектора раздела можно воспользоваться, например, простой и бесплатной программой PeToUSB (около 100кб в архивированном виде), позволяющей выполнять форматирование USB носителей c записью загрузочных секторов. Программа не требует инсталляции и очень проста в использовании.
После завершения форматирования, у нас будет пустая флэшка с записью MBR, признаком активности и загрузочным сектором раздела в стиле WinNT. Для создания загрузочного диска ERD Commander остается выполнить следующее: