Здравствуйте!
Облазил наверно весь инет и на спец.форумах побывал, но нигде не нашёл информации, никто не навёл на путь истинный.
Проблема.
Имеется на свете куча полезных загрузочных дискеток. Это могут быть - установочные дискеты для ОС, тесты разные (MemTest86+,), утилиты (cia,offline,pqpm...), рекавери-утиль и пр. без чего жить трудно.
Дискеты вещь ненадёжная и тормозная, хрупкая и объёмная. Иметь с ними дело не охота.
Всем известно, что можно создать образы дискеток (*.IMA,*.IMZ,*.FLP, *.IMG...), например, WinImage'ем.
Существут также великолепная софтина BootCD Wizard, позволяющая создавать мультизагрузочные компакты, при загрузке с которых производится эмуляция FDD, и предоставляется возможность выбора любого образа (IMA,IMG...ISO) для загрузки с этого самого образа, будто бы с реальной дискеты... Т.о. отпадает необходимость использования физических дискеток!
Но вопрос вот в чём.
Эта софтина заточена под CD/DVD. А я хочу использовать подобные возможности без CD-ROM'a. Заместо CD требуется загрузка с HDD партиции, с возможностью выбора образа для загрузки с эмулированного дисковода.
Как это должно выглядеть. Загружаюсь с партиции HDD, появляется менюшка со списком образов (или лучше с возможностью ыбора из любого каталого диска C:), и выбрав образ осуществляется загрузка будто с обычной дискеты.
Сама прога BCDWizard имеет основной модуль, который выполняет эмуляцию, показывает меню и обрабатывает *.ini. Но он заточен для работы с CD. Также имеется начальный загрузчик, который пишется как бутблок на CD (2048 Bytes). Он естественно тоже заточен под CD.
Т.о. не получится записать его в виде BootRecord на партицию HDD...
Есть два пути решения задачи.
1. Дизассемблить эти модули и переделать на работу с ХДД.
2. Найти готовое решение.
Первый способ навряд ли мне под силу (времени уйдёт тьма! а я спешу). Да и нереально будет разобраться с большим модулем (~30K).
Хотя с самим загрузчиком вполне реально (2K).
Второй способ. Собственно на него я и расчитываю. Поэтому я здесь.
Принимаются любые подсказки :)...
Или в Alcogol120 загрузить.
Есть прога для образов дискет - в системе появляется несколько дисководов в котрые можно в ставить образы. Название сейчас не вспомню - поставилось с TotalCommander Podarok Edition
Занялся этим. Пока не нашёл.
Будем считать что через БИОС. Я предполагаю, что именно так и работает вышеупомянутый мною BCDWizard, т.к. он грузится с CD-ROM, ещё до загрузки ДОС. А имитировать или подменять обращение к портам дисковода - я уверен что это нереальный путь.
Давайте исключим эти редкие случаи из обсуждения.
Насколько я понял, Вы предложили просто альтернативный вариант Грабу. Зачем же эти заморочки, если есть Граб?
Что это такое? Не понял совсем.
Пока ещё не разобрался с Грабом, но всё же отвечу.
Каким образом Граб передаёт управление образу? Он считывает его целиком в ОЗУ и делает джамп на начало? Или он считывает только загрузочную часть образа и делает джамп?... В любом случае, рассмотрим пример с тем же мемтестом. Как идёт загрузка с флопика? Просто - загрузочный сектор 512 байт считывается БИОСом в ОЗУ по адресу 0x0000:0x7C00, далее идёт джамп туда же. Очевидно, что эти первые 512 байт образа должны прочитать оставшуюся часть из дискеты в ОЗУ и передать управление далее по цепочке. Или прочитать конкретные файлы на дискете... Как бы то ни было, загрузчик (512 байт начала образа) заточен на работу с дискетой! Либо хардом, либо СД-РОМ, либо другим носителем - зависит от конкретного образа, с какого носителя он снят. В случае МемТеста это флопик. Следовательно, если передать управление на начало образа, считанного в ОЗУ, то код, расположенный там, полезет к ФДД! Следовательно, нужно обеспечить трансляцию запросов к ФДД в запросы к образу, и не важно где этот образ - в ОЗУ или на носителе.
Так вот, не уверен что Граб и пр. вышеприведённое софтино делает эту трансляцию. Хотя непременно воспользуюсь всеми советами и не поленюсь разобраться.
Не понял, raw - альтернатива himem? raw - под какую ОС? ДОС? Чёто запутался я...
Понимаете ли, JAV, есть какие-то нестандартные образы, у них какая-то непонятная ФС, либо полное её отсутствие. Дискета может быть создана в разных ОС, разным софтом, иметь разную структуру... А образ - это полная посектарная копия дискеты, либо её части.
2)Образы то вставить можно, ноу проблем, но вот загрузить с вставленных таким образом образов (сори за каламбур) операционку, записанную на последних, не представляется возможным.
1) Самодостаточный бинарник содержащий ядро ОС + функциональную часть, который достаточно просто загрузить в память и передать ему управление - с нулевого байта.
Примеры: ядро linux, memtest86+ построеный на основе ядра linux или memdisk о котором далее....
Грузится с помощью GRUB, при этом бинарный описывается в конфиге как ядро ОС - GRUB копирует его в память и передает управление ему.
2) Образ блочного устройства содержащий фаловую систему и загрузочный сектор.
Тут чуть сложнее - необходімо чтобы что-то эмулировало это самое блочное устройство со всеми его атрибутами - тип INT13, геометрии и т.п. Для эмуляции блочного устроства используется memdisk. Для загрузки memdisk используется GRUB.
При этом memdisk описывается как ядро операціонной системы, а интересующий нас образ блочного устройства - как initrd. Inintrd - это собственно initial ramdisk. GRUB загружает в память ядро + initrd (т.е. memdisk + образ вашей условной дискетки), далее управление передается memdisk, при этом в качестве параметров ему передается расположение initrd в памяти + стандартный cmdline в котором для memdisk могут быть переданы некоторые параметры. Получив управление, memdisk далее выполняет процедуры по эмуляции блочного устройства и передает управление загрузочному секторы образа дисктеки, после чего код BR DOS работает пребывая в полной уверенности, что загрузка происходит с чего-то стандартного.
Буду придерживаться такого плана:
1 - как всё выглядет при использовании BCDWizard(http://www.bootcd.narod.ru).
2 - как это работает
3 - что требуется
4 - возможное решение
Итак,
1) Создаётся загрузочный образ СД-диска. В образ записывается BCDW и куча полезных образов (дискет). Создаётся специальный ini-file в котором все настройки менеджера BCDW. Далее образ пишетсяна СД-диск. Загружаемся с СД, видем менюшку со списком образов дискеток (или даже париций...загрузчиков). Выбираем нужный. Далее уже идёт загрузка с этого образа, словно это полноценная дискета, вставленная в дисковод А:. После загрузки (в случае если это был образ ДОСа и т.п.)видим, что в дисководе А: находится вставленный образ, словно дискетка, т.е. всё содержимое дискеты, с которой сделан образ, находится в А:. Запись туда запрещена. При чтении файлов идёт обращение к СД-диску. Реальному дисководу назначается B: letter. Всё!
2)Разберёмся, что собой представляет BCDW и как оно работает.
Менеджер состоит из следующего - а) таблицы кодировок (чарсеты), б) набор шрифтов, в)bcdw.ini - основные настройки путей - путь к фонту, к чарсету, к фалу с меню (инишник специальный), г)bcdw.bin - сам менеджер, д) файл с пользовательскими настройками менюшки и пр. визуальности, е) собствнно загрузочный сектор, записываемый на СД-диск - bcdwboot.bin.
а,б - нам неинтересны. в,г - должны располагаться строго в /BCDW/.
Пути к образам прописываются в инишнике с менюшкой.
Самое заслуживающее пристального внимания, это пункты г,е и формат путей, прописываемых в инишках.
Рассмотрим г,е. (далее пошли мои логические предположения)
е) - файл bcdwboot.bin (записывается на СД как бутблок). 2048 bytes. Собственно, он первым получает управление от БИОСа, ищет на СД-диске файл /bcdw/bcdw.bin и считав его в ОЗУ передаёт бразды правления. Возможно он также вешает обработчик БИОСовского прерывания, используемого для еализации служб работы с дисководом/дискетой, для последующего эмулирования.
г) - файл /bcdw/bcdw.bin. ~27 KBytes.
Это сам менеджер мультизагрузки с СД-диска.
Он считывает /BCDW/bcdw.ini и узнаёт путь к menu.ini. Считав menu.ini, Узнаёт все настройки и пути к образам. После выбора образа пользователем, осуществляет монтирование образа в А: и загрузку с последнего.
Как происходит эмуляция? Я думаю, что при обращении к перехваченным функциям БИОСа (а именно через них работает ДОС/загрузчик Винды/большинство прочего софта), на запросы чтения/записи секторов выдаются блоки из файла-образа расположенного на СД.
3) Что же требуется?
Чтобы bcdwboot.bin искал bcdw.bin не на СД, а на ActivePrimaryPartition(FAT16/32), а сам bcdw.bin работал не с СД, а с тем же ActivePrimaryPartition(FAT16/32).
1 - загрузчик BCDW заточен под CDFS, следовательно нужна возможность работы с другими ФС (FAT16/32 - достаточно).
2 - менеджер также заточен под CDFS + стандартные пути к инишкам.
значит и его придётся заставлять работать с другими ФС (FAT16/32-норма).
!! - И ещё было бы здорово, если бы монтированный образ копировался в ОЗУ и обращения на запись к дисководу А: не блокировались, а поизводились над образом в ОЗУ. Хотя, если это переделать для работы с хардом, тогда и в ОЗУ копировать не обязательно - просто при записи на А: происходила бы запись в соответствующие записываемым секторам блоки файла-образа расположенного на харде (ведь это только на СД писать-то нельзя).
4)Возможные решения
1. Брать в руки ИДА или что-то подобное и лезть внутрь
2. Писать такое же, но своё
3. Просить создателя расширить функционал
4. Искать готовое решение
5. альтернатива
1. - всё чаще склоняюсь сюда, но пока ещё надеюсь...
2. - уже возникали мысли, и они всё сильнее
3. - нет связи. мыло уже того. наверное достали его насмерть
4. - вот пока не нашёл
5. - навряд ли возможна, хотя ещё пытаюсь придумать или найти...
На этот раз сказал ВСЁ!
Уж извините за такой объём, но меньше не получилось.
2. Алтернатівный варіант велосипеда изобрели уже? ;)
3. Это проўе всего ;)
4. Он есть и его вам описали.
5. Простіте, чем вас не устрівает варіант с GRUB ?
Я пока не понял честно говоря чего вы так прівязалісь к BCDW - вам описали как можно на коленке при помощи grub и memdisk организовать загрузку чего угодно и откуда угодно. С менюшками, картинками, рюшечками и возможностью правки параметров перед загрузкой, если это надо. В качестве побочного эффекта - можно в командном режиме GRUB вообще грузить что угодно, а не только прописанные в конфиге образы. Поясните мне пожалуйста, что вам не понятно в моем описании ілі чем вам предложеный рецепт не нравится. Если у вас есть вопросы в духе "а можно ли сделать так" - то задавайте их. А то создается впчатление, что у вас некая религиозная привязанность к BCDW ;)
:mrgreen: Пока я постил, Вы ответили уже, а я и не заметил! Вот только что перечитывал тему, гляжу, а Вы успели ответить ещё раз, а пост остался на 1-й странице. Но зато высказался от души я!
Уже скачал memdisk. Щас граб найду и буду изучать всё это.
Судя по всему, Вы попали в точку.
К BCDW я привязался лишь потому, что много опыта с ним имел, он предоставлял удобные возможности... вот и породнился я с ним. Конечно есть и другой подобный утиль, но с ним опыта у меня нету, поэтому пример однобокий получился.
Ладно, иду пробовать...
С уважением.
Добавлено спустя 1 день 14 часов 32 минуты:
Всё получилось!
Всё как я хотел. Даже больше перспектив и свободы. GrUB (+MemDisk) - super!
Успел попробовать несколько образов грузануть (W98, CIA Man., ...) всё пошло. Первый казус возник при попытке грузануть образ DocMem22. Лезет к FDD гад и виснит. Надо ещё разобраться, но помоему напрямую валИт...
Благодарю всех ответивших. Вы мне очень помогли.
Отдельное спасибо 2 K9 ! :mrgreen: Не поленился разжевать.
http://superdos.borda.ru/