dialmak
BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Bootfile входит в пакет TeraByte OSD Tool Suite Pro (TBOSDTS). Есть версия DOS/Linux и Windоws. Там же есть и скудные доки. Пару слов как работает запуск образов через bootfile. Кто откроет мой файл выше run_ifd.bat - тот найдёт строки запуска образа. Код: "%~dp0bootfile" "%~dp0ifd.bin" /keep /noui /retry /delay if %errorlevel% NEQ 0 ( "%~dp0bootfile" "%~dp0ifd.bin" /retry /delay ) | Почему записано так, а не иначе я напишу в конце. Сейчас важно понять, что для запуска образа достаточно в принципе одной строчки: Код: "путь\bootfile" "путь\ifd.bin" | Должен отметить, что наш образ имеет два "секрета". Секрет 1. Размер файла образа на 512 байт больше, чем занимает сам образ. Размер образа согласно UltraISO 4096*512=2097152, истинный размер файла 2097664. Естественный вопрос - зачем эти 512 байт? В данную область файла bin 512 байт будет записан нулевой сектор диска при запуске образа. Запишет это всё автоматом bootfile. Кто в курсе - в нулевом секторе диска расположен код MBR и таблица разделов. Как они делаются - эти 512 байт. Вообще то есть спец-аргумент /B для этого в команде ADD VIRTDRV из TBOSDT Pro (который входит в пакет TBOSDTS) при создании FAT/FAT32 виртуального диска. НО. Если ФС нужна другая или образ уже готов? Это можно сделать тривиальной командой copy. Нужно подготовить в НЕX редакторе файл-пустышку 512.bin размером 512 байт и выполнить Код: copy /b my.img + 512.bin my.bin | Секрет 2. В образ нужно добавить файл bootfile для соответствующей ОС. И где-то должна быть команда bootfile /restore. Что это и зачем - напишу позже. Теперь, когда мы узнали о секретах - можно проследить и кратко логику работы. 1. После запуска из винды "путь\bootfile" "путь\мой образ" утилита bootfile проверяет образ на резервную область 512 байт (секрет 1) и если не находит - заканчивает работу с соответствующим сообщением. 2. Далее проверяется, что образ непрерывен, если образ фрагментирован - утилита bootfile заканчивает работу с соответствующим сообщением. 3. Далее проверяется, что запуск произведён из HDD, а не из сьёмных устройств - если из сьёмных устройств утилита bootfile заканчивает работу с соответствующим сообщением.. 4. Производится копирование нулевого сектора диска в последний сектор образа! Это бекап. 5. Наконец проверяется есть ли ключ /keep. Если ключ есть - код MBR текущего диска переписывается на простейший, в таблицу разделов добавляется новый основной активный раздел с координатами начала и конца образа. Если добавление нового основного активного раздела невозможно - утилита bootfile заканчивает работу с соответствующим сообщением. 6. Кто внимательно смотрел на код run_ifd.bat, тот увидел, что вначале я пробую запустить образ с ключём /keep, но если это невозможно (например это невозможно для GPT дисков или для MBR дисков с 4 основными разделами), то будет запуск БЕЗ ключа /keep. В таком виде запустится по-любому. Bootfile код MBR текущего диска переписывает на простейший, старую таблицу разделов обнуляет и в таблицу разделов добавляется новый один основной активный раздел с координатами начала и конца образа. 7. Перегрузка и запуск из MBR. Так как активный раздел - это раздел образа, то он и запустится. 8. И последнее. Нужно ведь когда-то вернуть родной код MBR и родную таблицу разделов (для GPT диска возвращается фиктивный наследственный/protective MBR). Обычно это делается первой командой после загрузки образа bootfile /restore. То есть данная команда возьмёт бекап нулевого сектора и восстановит его взад. НО. Не всегда это выгодно делать сразу же первой командой. В некоторых случаях это удобнее сделать перед выключением и перегрузкой. Смотря от образа. Примеры образов для запуска из bootfile Running Image for DOS Without a Boot Disk Running Image for Linux Without a Boot Disk Image for Windоws для запуска из bootfile делается просто из 3 пункта меню TBWinRE Builder | Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 15:33 19-10-2014 | Исправлено: dialmak, 16:36 19-10-2014 |
|