Загрузка первого байта первого сектора

Тема в разделе "WASM.OS.DEVEL", создана пользователем Antoniosis, 7 авг 2010.

  1. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Вот что я писал об этом интерфейсе.
     
  2. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Vic3Dexe
    У мня ah = 0 Это значит что операция успешна....
     
  3. Vic3Dexe

    Vic3Dexe New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2009
    Сообщения:
    53
    То, что операция успешна, показывает cf=0 и никто другой. Впрочем, если Error у тебя не выводит, то ошибки нет.
    Что в al после чтения? Там лежит число фактически считанных секторов.
    Попробуй прочитать не 50, а 3, например. Получится или нет. Далее увеличиваем число секторов и ищем момент облома.
    Короче, отладка, отладка и еще раз отладка.
     
  4. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    а не проще взять multiboot спецификацию. она уже как стандарт, и глузиться можно даже grubом.
    там и слово передается с описанием откуда загрузился...
    и еще если у тебя свой вторичный загрузчик с индификатором(8855h), то получается, что стандартный mbr твою систему уже не загрузит? не проще ли по dl посмотреть номер диска, а потом проверить где стоит флаг активности, то и грузить, или использовать стандартную ссылку ds:si на описание раздела.
    а если ты хочешь когда загружен твой драйвер знать какой диск каким дискам биоса соответствует. можно просто использовать edd bios. там есть таблица и порты описаны, или в mbr использовать слово перед PT. и писать туда номер диска биос.
     
  5. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Во-первых, используемый мной порядок загрузки был определен достаточно давно, еще до широкого распространения (а возможно и появления) grub'а. Во-вторых, был нужен механизм загрузки, не использующий сторонний софт, хотя бы как возможность. В-третьих, не устраивает, что grub в процессе установки порой приходится буквально "вшивать" в диск - все мои загрузчики используют исключительно структуры самой ФС для поиска загружаемых файлов (метод grub'а пока используется только в CD/DVD, но это ненадолго, т.к. сейчас внедряются усовершенствованные загрузчики).

    Про вторичный загрузчик я вообще не говорил. Для его загрузки или загрузки ядра применяются первичные загрузчики, реализующие совсем другой интерфейс, также описанный в спецификации. Стандартный MBR-загрузчик может грузить мою систему напрямую (без использования вторичного загрузчика) только с активного раздела. Улучшенный MBR-загрузчик типа alter'а может грузить мою систему напрямую с неактивного раздела, если на нем установлен первичный загрузчик, также использующий новые возможности. Раньше первичные загрузчики делали просто mov dh,0, разумно полагая, что они грузятся сами и используются для загрузки с активного раздела, в противном случае ядру не удавалось найти загрузочный раздел. Сейчас первичные загрузчики делают так:
    Код (Text):
    1.   ...
    2.   cmp byte [7DFFh],88h
    3.   je @f
    4.   mov dh,0
    5. @@:
    6.   ...
    Значение dh не используется непосредственно первичными загрузчиками, а просто передается дальше по цепочке ядру или вторичному загрузчику.

    Многочисленные тесты также показали, что изменяемая в памяти сигнатура 8855h "проглатывается" первичными загрузчиками популярных ОС и самостоятельных вторичных загрузчиков (grub, lilo) без каких-либо последствий, хотя теоретически риск конечно остается.

    Просто так ds:si использовать нельзя, потому что если диск не разбит на разделы, то первичный загрузчик получит управление непосредственно от BIOS, которая не передает этот указатель. К тому же подход с использованием этого указателя менее надежен и универсален по сравнению с использованием идентификатора загрузочного раздела (для "неделимых" устройств идентификатор всегда равен нулю).

    У меня ядро определяет физическое загрузочное устройство именно по номеру диска, который передается от BIOS (загрузчики транслируют этот номер в ядро, дополняя его номером загрузочного раздела). В реальном режиме на основе этого номера строится специальная таблица (с использованием функций EDD и множества других методов идентификации). В защищенном режиме на основе этой таблицы и номера загрузочного раздела происходит поиск загрузочного виртуального устройства среди созданных драйверами устройств хранения и менеджером томов (у драйверов есть функция, возвращающая аналогичную по формату таблицу для каждого устройства, - остается только сравнивать плюс при нулевом идентификаторе раздела ядру нужно определить, является ли устройство цельным или нужно использовать его активный раздел).

    Номер диска BIOS сохранять на самом диске незачем за исключением ситуации, когда BIOS передает при загрузке некорректный номер. Эта проблема успешно решается с помощью пропатченных загрузчиков.
     
  6. abcd008

    abcd008 New Member

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

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    я хотел узнать а ты используешь слово перед PT. я знаю что windows туда тоже пишет свои данные. ты не боишся что он сотрет правильное значение.
    и еще я бы рекомендовал сделать не значение, а бит на раздел. и тогда ты мог бы выбирать не 2 а все разделы.
    а если у тебя расширенный раздел, то там тебе не кто не мешает тоже установить бит активности.
    зато потом тебе не надо передавать значение (0-3 основной >4 расширенный). достаточно передать в dl номер диска,
    а dh номер загруженного раздела.
    а там система сама пройдет по таблицам и все поймет. и это будет быстрее, чем ты будешь переберать все расширенные разделы, и самое главное исключает плавание номера раздела при создании или удалении раздела.
     
  8. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Про слово перед PT я уже писал здесь, описывая структуру бутсектора с alter'ом. Используется именно оно, чтобы можно было настраивать загрузчик даже без инсталлятора. Загрузчик успешно работает с Windows. Более того, при переустановке Windows это слово не меняется. С возможностью загрузки более чем с двух разделов я даже экспериментальную версию alter'а делал, но в очередной раз убедился что текущий функционал оптимален. Далее alter вообще не поддерживает загрузку с расширенного раздела. Это делает другой мой MBR-загрузчик, который входит в дистрибутив системы. Он не распространяется отдельно, а следовательно в данный момент недоступен широкому кругу лиц. По сути alter его облегченная версия, ориентированная прежде всего на популярные ОС.
     
  9. abcd008

    abcd008 New Member

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

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Разработка закрытая.
     
  11. abcd008

    abcd008 New Member

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

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    С наступившим!

    Дружу нормально, но без нестандартных форматов. Стандартный драйвер не поддерживает низкоуровневое форматирование. При доступе к новому диску просто контроллирую (путем чтения нулевой дорожки), чтобы читался 1 сектор нулевой стороны и 18 сектор первой стороны, а 19 уже отсутствовал на дорожке. Если ты пишешь какой-то продвинутый драйвер, было бы интересно почитать про это, хотя серьезно флоппиками я уже давно не занимаюсь.
     
  13. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    С НОВЫМ ГОДОМ!!!
    а у твоей системы есть сайт? хотелось бы глянут.
    ты ее на асме пишешь или на С?
    я с флоппи пока опыты ставлю.
    я разобрался но не могу понять как линух форматирует на 24 сектора\дорожку
    я начал писать драйвер, после того как я на своем компе из под дос навигатор отформатировал диск 144 в 288 формат. отсюда и весь интерес, ведь это почти 3 метра на обычном фиске.

    посмотри пост, может поможешь?-http://wasm.ru/forum/viewtopic.php?id=39657
    http://wasm.ru/forum/viewtopic.php?id=39260&p=2
     
  14. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Зачем мне сайт, если я пока ничего выкладывать не собираюсь. К тому же разрабатываемое мной ядро может лечь в основу совсем другого проекта. Ядро написано на ассемблере (fasm). Драйверы тоже, но в принципе есть компоновщик для сборки из object elf, поэтому написать драйвер на си не проблема. Что касается флоппиков, то думаю и на 24 сектора можно форматировать, если информационной емкости дорожки для этого достаточно, вот только вопрос, будет ли это также надежно.
     
  15. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    в том и прикол, что по документации на дорожке всего 12500 байт(21-22 сектора по 512)
     
  16. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Ну тогда все предельно понятно. Либо про Линукс информация недостоверная, либо документация неполная или вообще не та. Также возможно, что разработчики выпускали дискеты с определенным "запасом прочности" по сравнению с тем, что написано в документации, но это лишь мое предположение, т.к. про физический формат хранения данных на дисках я мало что помню. Если откопаю что-нибудь интересное, напишу в указанной ветке форума.
     
  17. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    посмотри этот пост может если время будет поможешь. а то я только эту команду понять не могу http://wasm.ru/forum/viewtopic.php?id=39657
    самое интересное написал в линух, а там все ящики нерабочие.
     
  18. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    OK, только по существу смогу ответить только числа десятого.
     
  19. abcd008

    abcd008 New Member

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

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    ты не забыл?