Great Загрузчик CD грузит целиком. Загрузчик FAT 12\16 грузит первые 512 байт и передает по смещению 3. Там уже сам NTLDR.bin сам себя до загружает.
Phantom_84 Их фиг раскрутишь. Там чтобы одну функцию найти по 5-15 модулям ползаешь. Искал как чтение сделано. Так там идет ARC специфиуация ряд функций типа фирмваре ввиде структур. Так вот для x86 они эмуляцию делают. Которая вызывает функции из структуры которая скопировала из реального режима. Там эта структура определена в одном модуле. Но присвоение совсем в другом.!!!! Просто интересно как они извратились и сравнить со своим.
То что в M$ работает много "извращенцев", это всем давно известно Мне кажется, что нужно разобраться не в загрузке ntldr, а в загрузке setupldr. Хотя думаю, что по своей структуре они похожи. Недаром программисты из M$ их сами иногда путают. Тут Great предложил то, о чем я уже ранее сказал дважды. Нужно попробовать объединить код по формированию всех необходимых условий для нормальной работы setupldr и его загрузке и код работы с файловой системой флешки (FAT16 и/или FAT32), причем уместить этот код в первичный загрузчик раздела флешки или сделать поэтапную загрузку. Мне не привыкать к тому, чтобы умещать много кода в малом объеме, но не думаю, что написание собственного загрузчика будет более простым делом по сравнению с использованием ms-dos и запуском winnt.
во-во, учитывая все радости отладки этих малышей на варе допустим через месяц оно задышыт кое как, а у заказчика встанет как мост за день до заключения договора "а у меня скажет при втыкании вашей флешы ноут делает повер-офф (_/\_)" на, хакеръ, дебажь '
я сам очень люблю загрузчики и десяток своих кодировал и чужие разбирал и ntldr дебажил (в досовском софтайсе ) и патчил, без всяких сорцов. С сорцами и дурак справится ;-D но здесь имхо это все неоправданно и может привести к неприятностям
да что толку от исходников? NTLDR/NTLRD-у рознь.. и даже SETUPLDR/SETUPLDRу.. попалось как то поделие с LiveCD экспихой. Грузиться c надписью "Starting Windows Preinstall Environment..." ram-диск чтоль со всеми делами. причем 80MB iso-шка, осилила стартануть в Virtual PC 2004 со 128мб оперативы. посмотрел а SETUPLDR в ней какойто левый, "x64-based version of Windows" что интересно распаковываю все это дело на винт, пробую стартануть - фига, зато c дефолтовым SETUPLDR (xp-sp2) стартануло. хм, интересно былобы проделать такое с win2k.. даж NTLDR исползую от XP-шки, с ним чето побыстрее грузиться. (15-20 сек от нажатия power).
bugaga Это надо смотреть что нетак. Там привязка к CD серьезная. А вот загрузку можно убыстрить. Preinstall Environment. Класический NTLDR использует вызов части функций через реальный режим вызов функции биос защищенный режим. Если пересобрать можно убыстрить NTLDR. Это сделано для того чтобы была возможность загружать ОС на различном железе базывые функции передаются в загрузчик и тот ими уже пользуется можно ARC спецификацию почитать. А еще можно поступить по другому при загрузки он ищет дров жесткого и грузит его. Подробнее ищим по setupdd.sys и bootdd.sys соответсвенно. http://support.microsoft.com/kb/100323