как написать загрузчик

Discussion in 'WASM.OS.DEVEL' started by hawk, Jan 6, 2009.

  1. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    А в чем проблема посмотреть в исходниках nt4 или дизасмнуть бутсектор
     
  2. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    Great
    Загрузчик CD грузит целиком. Загрузчик FAT 12\16 грузит первые 512 байт и передает по смещению 3. Там уже сам NTLDR.bin сам себя до загружает.
     
  3. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    Phantom_84
    Их фиг раскрутишь. Там чтобы одну функцию найти по 5-15 модулям ползаешь. Искал как чтение сделано. Так там идет ARC специфиуация ряд функций типа фирмваре ввиде структур. Так вот для x86 они эмуляцию делают. Которая вызывает функции из структуры которая скопировала из реального режима. Там эта структура определена в одном модуле. Но присвоение совсем в другом.!!!!
    Просто интересно как они извратились и сравнить со своим.
     
  4. Phantom_84

    Phantom_84 New Member

    Blog Posts:
    0
    Joined:
    Jun 6, 2007
    Messages:
    820
    То что в M$ работает много "извращенцев", это всем давно известно :) Мне кажется, что нужно разобраться не в загрузке ntldr, а в загрузке setupldr. Хотя думаю, что по своей структуре они похожи. Недаром программисты из M$ их сами иногда путают. Тут Great предложил то, о чем я уже ранее сказал дважды. Нужно попробовать объединить код по формированию всех необходимых условий для нормальной работы setupldr и его загрузке и код работы с файловой системой флешки (FAT16 и/или FAT32), причем уместить этот код в первичный загрузчик раздела флешки или сделать поэтапную загрузку. Мне не привыкать к тому, чтобы умещать много кода в малом объеме, но не думаю, что написание собственного загрузчика будет более простым делом по сравнению с использованием ms-dos и запуском winnt.
     
  5. z0mailbox

    z0mailbox z0

    Blog Posts:
    0
    Joined:
    Feb 3, 2005
    Messages:
    635
    Location:
    Russia СПБ
    во-во, учитывая все радости отладки этих малышей
    на варе допустим через месяц оно задышыт кое как, а у заказчика встанет как мост за день до заключения договора
    "а у меня скажет при втыкании вашей флешы ноут делает повер-офф (_/\_)"
    на, хакеръ, дебажь ';)
     
  6. z0mailbox

    z0mailbox z0

    Blog Posts:
    0
    Joined:
    Feb 3, 2005
    Messages:
    635
    Location:
    Russia СПБ
    я сам очень люблю загрузчики и десяток своих кодировал и чужие разбирал и ntldr дебажил (в досовском софтайсе :)) и патчил, без всяких сорцов. С сорцами и дурак справится ;-D

    но здесь имхо это все неоправданно и может привести к неприятностям
     
  7. bugaga

    bugaga New Member

    Blog Posts:
    0
    Joined:
    Jul 1, 2007
    Messages:
    361
    да что толку от исходников?

    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).
     
  8. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    bugaga
    Это надо смотреть что нетак. Там привязка к CD серьезная.
    А вот загрузку можно убыстрить. Preinstall Environment. Класический NTLDR использует вызов части функций через
    реальный режим вызов функции биос защищенный режим. Если пересобрать можно убыстрить NTLDR. Это сделано для того чтобы была возможность загружать ОС на различном железе базывые функции передаются в загрузчик и тот ими уже пользуется можно ARC спецификацию почитать.
    А еще можно поступить по другому при загрузки он ищет дров жесткого и грузит его. Подробнее ищим по setupdd.sys
    и bootdd.sys соответсвенно.

    http://support.microsoft.com/kb/100323