Загрузка по сети PXE

Тема в разделе "WASM.OS.DEVEL", создана пользователем abcd008, 24 июн 2011.

  1. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    хочу разобраться с загрузкий по сети.
    в то как это работает я разобрался. попробовал на практике с pxelinux.

    теперь хочу написать свой загрузчик.
    из спецификации по pxe я понял что мой образ загрузчика грузится по адресу 7c00h и ему передают в стеке 32 битный адрес структуры !pxe.

    теперь вопросы:
    -в каком формате передается адрес !pxe в стеке? в виде линейного или сегмент:смещение?
    -как вызывать процедуры?
    -как нужно запрашивать оставшиеся файлы по сети?

    буду рад всем примерам(желательно простым и на asm). где можно почитать про программирование pxe на русском?
    заранее спасибо
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Не разобрался, а попробовал :) Ключевое слово tftp - это протокол для закачки PXE.
    Если бы разобрался, то не спрашивал. Нигде ты не найдешь информации, особенно на русском.
    А исходники : при достаточном упорстве найдешь в исходниках pxelinux. И комментарии - на инглише.
    Но думаю, что там все просто : загрузчик грузит ядро в память и запускает его.
     
  3. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    с тем как и по каким протаколам я разобрался.
    я несовсем понимаю как передавать параметры функциям pxe (как правильно их выхывать)
    и какими нужно пользоваться
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    abcd008
    Какие функции PXE? В википедии написано, что PXE сидит в БИОС-е встроенной сетевой карты. Вряд ли они документированы
     
  5. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Я с загрузкой по сети не разбирался, но скачав PXE Spec. и просто ее пролистав, я увидел ответы (как мне представляется) на почти все вопросы, озвученные автором топика. Чтобы не быть голословным:
     
  6. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    я уже с этим разбираюсь. просто с английским туговато
     
  7. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Мне кажется, это очень простой английский. Когда разберешься, может напишешь небольшую статью?
     
  8. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    пока времени мало. но разберусь отпишу
     
  9. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    не могу понять. написал небольшую программу. она просто выводит сообщение на экран и зацикливается.
    но проблема в том что она даже не запускается на удаленной машине.
    почему не могу понять? ведь в документации ясно написано, что nbp грузится по 7c00h и запускается.

    что может быть не так. использую сервер tftpd32
     
  10. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Толком объясни , что ты сделал. Я же сказал, что ты ничего не понял. Где прога выводит сообщение, если она даже не запускается? На сервере твой загрузчик( а не прогу) просто кладут в виде файла. Этот файл-загрузчик загрузчик уже из БИОС-а перекачивает по сети, пишет по адресу 7C00 и запускает. Если циклит на этом месте - значит протокол неверно реализовал. Ставь на сервере сниффер или лог просто включи и ищи ошибки.
    Возможно ты в обход БИОС-а все делаешь, тогда сам разбирайся.
     
  11. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    в протоколе я разобрался.
    пробовал на примере pxelinux.0 через сервер tftpd32

    но почемуто пеперь он перестал работать.
    немогу понять почему. есть ли еще какие бесплатные серверы или может подскажите как настроить в virtualbox загрузку по сети.
     
  12. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    вот "верни" (добейся) сначала работу до нормального состояния.
    Считай это, как исходная точка для дальнейших "опытов" ), на которую всегда можно вернуться.
    И еще.
    tftpd32 сложноват для настройки и стабильной работы, если не знаешь сути каждого включенного\выключенного чекера.
    Что то изменил, типа в лучшую сторону и подзазабыл... затем спустя ... кинулся включать, юзать, а оно не фурычит. Попадался на этом несколько раз.
    Файерволл!
    Не было ли изменений в этом смысле или еще что либо по пути следования пакетов? Вдруг их кто то, что то "режет", т.к. сетевой коннект не чисто точка-точка и т.п....

    virtualboxОМ крайне не советую заниматься. Разве, что лишнего времени много и хочется и эту гору проблем преодолеть...

    Сниффер(Ы) - крайне желательны! ДА что там говорить, просто НУЖНЫ! Доки доками, а реалити это увидеть и с доками в уме связать, это +++!

    В правильно настроенном tftpd32 (в нете есть масса доходчивых и хороших статей по его настройке) вместо реального pxelinux.0 подсовываем своё ядро своей ОС (монолит), например, но под этим именем и грузится и запускается на ура.
    Единственно в стартовой точке кода ядра сделать REP MOVSW всего тела ядра в нужный, рабочий сегмент, а не 0x07C0. Ну и JMP FAR (RETF) затем естественно.

    Если научить (уметь) ядро работать с сетевухой + протокол, то можно ядру подгружать из tftpd32 нужные "вещи" динамически, например нужный PCI драйвер, нужного ID...

    Но, самое "вкусное", пожалуй видится - это удаленный дебаг ядра (какой отладчик и как прикрутить не знаю, но думаю реально), его ядерных багов вплоть до эксепшенов, сброс дампов памяти по сети на машину разработчика, реальный живой "слив" отладочных потоков данных с проблемных утройств и т.п.
     
  13. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    tftpd32 два дня назад работал.
    потом переста.
    я выключаю на обеих компах все сетевухи кроме рабочих.
    на сервере прописываю ip на клиенте оставляю автомат.
    программу tftpd32 настраиваю по статьям про pxelinux. все работало. а тут виснет на dhcp и не доходит до tftp.
    почему не пойму. фаервол отключил вообще, прогу запустил от админа. чего еще не так не знаю.
    про то что файл pxelinux.0 можно заменить своим я знаю. это и делаю. но как выяснилось неработает сама сеть меж компами. почему, если нечего не менял??
    что такое Сниффер
     
  14. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    Сниффер-понял что это)
     
  15. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Ну так два дня, не два месяца!
    Хронологически "отматывай" все свои "злодеяния" ))) на предмет сети на обоих аппаратах, пока не вернешь все в зад!
    Сниффер тебе в помощь, к стати!
    Если есть 3я машинка, хоть на время взять и поочередно учинить аппаратно-программную подмену, то в одной стороне, то другой, то возможно сразу и установишь, какая сторона поганит тебе нервы.
     
  16. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    сегодня опять пару раз сработало и опять перестало. пробовал менять компы местами и нечего не меняется.
    грешил на провод, но подключил его в сети через роутер все работает.
    значет глюк в программе.
    завтра попробую еще один комп задействовать. я уже думаю linux поставить. там всегда все работает, но хочется обойтись без смены системы
     
  17. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    менять местами - не то!
    Я ведь писал про 3-й!!! Это именно с целью избежать неких проблем...

    А на счет вирусяк всяких сетевых как? Мож хватанул паразита и он тебе подставу лепит в сети или гадит тупо...???
    "Сработало и перестало" - это как раз в ту тему! Я так думаю. Проявление всякой пакостности, наверное...
     
  18. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    все я сново в деле. вкачал tftp32 старой версии и поставил на другой комп. теперь все работает и файл мой наконец то качается и запускается. теперь буду эксперементировать с pxe api))) УРА. НАДЕЮСЬ ВСЕ ТАК И БУДЕТ РАБОТАТЬ
    спасибо за помошь. третий комп помог. а в моем видно чтото нетак стало. я теда много прог поставил они наверно мешают друг другу
     
  19. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    VaStaNi
    а ты сам писал загрузчик или просто иполняемый файл и грузил его?
    я имею ввиду пользовался pxe api? есть какие нюансы или чем предпочтительнее пользоваться
     
  20. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Когда я разбирался в PXE (более года уже, многое подзабыто уже, т.к. заморожено), акцент был именно на серверной стороне, т.е. стороне разработчика, о чем сбросил тебе в приват.
    В чистом виде слово загрузчик, это как бы клиент, получается, а не сервер. Поэтому писать аналог pxelinux смысла не вижу.
    Тем более, что именно самопальный сервер может выдавать либо оригинальный pxelinux, что тоже необходимо, либо нечто другое опционально.
    Например ядро системы, или образ дискеты... главное мне было ОВЛАДЕТЬ этим на уровне протоколы + свои сорцы со стороны разработчика + опыт сниффа + практика в сети на самом низком уровне...
    Где то так.
    В принципе я больше "медициной" занимался, а не чтением доков. Доки так только посмотреть, что то если непонятна суть нюанса где то.
    Реальную работу pxelinux по этапам сбрасывал в логи их медицинил и добивался от своего кода сначала полного аналога, а уж затем пошли вариации некоторые.