Задача: загрузка с некого устройства (hdd, usb, cdrom) при помощи mbr и эмуляция cdrom'а из образа iso с последующей передачей управления на этот образ. т.е. например загрузка winpe или systemrescuecd которые находятся в iso'шке. Собственно вопрос к гуру асма, что для этого необходимо??? Логично перехватить прерывания bios, которые отвечают за опрос что есть в системе и это все (обработчики) должно оставаться в памяти ни смотря ни на какие действия guest систем. Далее надо "убедить" систему, что есть cdrom который будет читать данные из iso и работает он только в режиме PIO. Но guest системы могут использовать какие нибудь другие методы доступа к данным (есть режим DMA) и возникает вопрос как его свести к PIO режиму через свой обработчик? PS Читал статью что 9x системы при выборе как работать через прерывания или свой драйвер читает сведения через int и через драйвер сравнивает результат и если не совпадает то использует прерывания. Верно ли это для других ОС???
а как ты это эмулировать то буишь.. если система не будет юзать биос для доступа к сдрому, то ты вряд ли ченить сделаешь. например если это винда.. тут уже помоему хардварная эмуляция нужна) винда, как я помню, использует всегда свои драйвера, по крайней мере начиная с нт точно. линукс вроде как тоже биос не использует..
Свои драйвера тоже через что то работают... я не могу придумать методику отслеживания через что оно работает как я понимаю это надо захватить int 13, 25, 26, на всякий случай 21, работу через pci dma(как???), in/out инструкции??? хардварная эмуляция это не выход... bios используется всегда на первых этапах загрузки(опрос системы) иначе ОС будет разная для каждой железяки
через порты. и как ты захватишь in/out инструкции, когда ОС сама перейдет в защищенный режим и не оставит тебе шанса "на выживание" Контроллер DMA управляется тоже через порты. предложишь другие варианты как контролировать ввод-вывод в порты? на первых - да, дальше обычно нет.
__sergey__ Если действительно интересует - возьми исходники bochs. VmWare в Виндах работает с "собственными драйверами", т.ч. явно эмуляция упрощенная. Но и в Virtual PC и в VmWare эмуляция заточена под ограниченный набор функций и любая "кривая" программа расколет это запросто. Просто драйвера же адаптивные : достаточно сказать что устройство чего-то не поддерживает и они не будут лезть в "дебри". И по поводу PIO сказал не глядя, наверное. И в VmWare и в Virtual для харда - режим UDMA.