Валялась у меня РеактОсь, и решил я ее заюзать...
В чистом виде она мне не нужна, только, как справочник по внутренним структурам мастдая, но вот, хотел я сделать вот что: подсунуть отдельные файлы (начиная с Ntoskrnl) в "родной" Мастдай и посмотреть, что получится.
А не получилось ни XYZа!
Не буду, говорит, за гружаться, пока Ntoskrnl missing or corrupt!
Я, пока не приглядывался, но точки входа у них сильно различаются:
родная по адр 40D010 а в ReactOS - C0001000, ну и далее, я пока не приглядывался (завтра начну).
И так, вопрос:
Может, кто уже пробовал что-нить подобное и добился каких-нить успехов, или, хотя бы имеет идеи на этот счет?
Хотя в DDK есть какой-то ntldr_dbg, но я не знаю, что с ним делать :-)
Единственной ВМ со встроенным отладчиком, из тех что я знаю (2 штуки :-)) ) является bochs. Да и там отладчик на любителя. Хотя сырцы то вот они. Бери и меняй по своему вкусу - остальные только спасибо скажут :-)
Кста, о боксе. Там вообще не используется аппаратная эмуляция. То бишь процессор в режиме трейса. Это снижает производительность, но покажите мне хоть одного человека думающего о производительности в ВМ :-) В ВМ лезут не от хорошей жизни. Зато такая обработка инструкций дает массу преимуществ, в числе которых очень гибкая система точек прерывания.
Мдя, немного на рекламу смахивает, тем более что в реальной жизни мне хватает VM Ware :-)
[NT] А если10.07.03 12:55 Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
Как он их одупляет - другой вопрос. Потому как точка входа может быть любой (если в ms-е в проекте винды поменяют порядок объектников для линкера - она тоже поменяется).
> Валялась у меня РеактОсь, и решил я ее заюзать... > В чистом виде она мне не нужна, только, как справочник по > внутренним структурам мастдая, но вот, хотел я сделать вот > что: подсунуть отдельные файлы (начиная с Ntoskrnl) в > "родной" Мастдай и посмотреть, что получится. > А не получилось ни XYZа! > Не буду, говорит, за гружаться, пока Ntoskrnl missing or > corrupt! > Я, пока не приглядывался, но точки входа у них сильно > различаются: > родная по адр 40D010 а в ReactOS - C0001000, ну и далее, я Я, кста, давно заметил, что драйвера (и ядро вот) компилятся с произвольным Base Address-ом, в память они все равно по этому адресу никогда не попадают. А реактос, я так понял, честно указывает куда собирается грузиться.
> пока не приглядывался (завтра начну). Кроме этого в реактосовском ntoskrnl.exe нет битмапов для вывода бегущих кубиков. Если б проблема только в этом, то /noguiboot помогло бы. Так ведь и hal не заменяется. Еще вспомнилось, что структура реестра у реактоса - plain text. А работа с реестром идет именно из ядра. И даже если удастся заставить кернел загружаться, первый же дривер, который попытается считать свою конфигурацию испортит всю малину. Я так подозреваю, что это не единственные грабли, с которыми предстоит встретиться, если пытаться заменить любую часть (как это в свое время делали с юнихом). Может это временно, а может и by design. Типа упор делается на то, чтоб софта внутри НОВОЙ ОС-и чувствовала себя нормально, а не ось была ТОЧНО ТАКОЙ же как NT-я (что было задачей при переписывании юниха).
А начинать лучше сразу с ntldr-а, только вот никак не дойдут руки поставить bochs с внешним отладчиком - все в vmware-и делаю (вот чего там реально не хватает так это встроенного отладчика). А вообще неплохо бы потрейсить ntldr в том месте, где он выводит это самое missing. Это бы могло дать ответ на тот самый "другой вопрос" (что винде мешает загружать чужой кернел). Приятнее всего было бы если это какая-то явная проверка, а не нехватка чего то где-то.
> И так, вопрос: > > Может, кто уже пробовал что-нить подобное и добился > каких-нить успехов, или, хотя бы имеет идеи на этот счет? Похоже пока реактос можно ставить только полностью, совместимостью там еще не очень пахнет. И не уверен, что когда нибудь можно будет вытворять такие вещи. Вот реактосовские примеры я запускал в винде - работают. Скорее всего будут работать и виндовые проги, если они не используют unimplemented функций. Насколько видно из дизайна реактоси там будут также работать и большинство дриверов. Но самые низкоуровневые штуки типа ядра, хала и т.д. - вряд ли. Хотя время покажет...
[NT] Да кстати08.07.03 13:11 Автор: amirul <Serge> Статус: The Elderman
> Т.е. если я даже заставлю его грузиться, то с существующим > реестром он работать не будет? А как же оно тогда рег-файлы > импортирует? > > Кстати, я потом Kernel32.dll подменить попробовал - упало! Вот кусок system.hiv: