Как проверить поддержку расширенного режима работы с int 13h из-под Windows?

Тема в разделе "WASM.WIN32", создана пользователем Jin X, 28 июн 2018.

  1. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    224
    Адрес:
    Кольца Сатурна
    Всем привет.
    Необходимо из-под Windows (x86 и x64) проверить - поддерживает ли BIOS'овский int 13h расширенные функции работы с дисками (ah=4xh... 64-битную LBA-адресацию, по сути). Можно ли это сделать? И как?

    Т.е. пишется код для MBR, который будет использовать эти функции, но инсталлироваться он будет из-под Windows.
    Соответственно, если BIOS не поддерживает такие функции, загрузка будет невозможна.
    Поэтому нужна предварительная проверка.

    Я понимаю, что такая поддержка появилась уже давным-давно, но всё же для надёжности хочется сделать проверку.
    И я понимаю, что диск можно перенести на другой комп, где может быть по-другому, тем не менее.
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.215
    Адрес:
    Fryazino
    Если диск меньше 8.4 ГБ, то виндоус использует базовый сервис Int 13h, а если больше то расширенный. И это правильно по двум причинам во-первых стандарт (см вот эту версию), во-вторых вы можете диск перенести на другой компьютер. И что тогда? Он перестанет работать?

    Функции для проверки в виндоусе насколько помню нет.

    А так у меня свой асcембле/дизассемблер и эмулятор x386 я себе не в чём не отказываю, и даже в трассировки и эмуляции биоса.

    [​IMG]
     
  3. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    224
    Адрес:
    Кольца Сатурна
    Pavia, 8.4 ГБ – это имеется в виду 8 ГиБ (тогда 8.5, почти 8.6 получается)?
    А почему диск до 8 Гб должен перестать работать, если его перенести с компа, где используются расширенные функции, на комп, где используются базовые?

    Что за инструменты?
    Поделись с общественностью :)
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.215
    Адрес:
    Fryazino
    Я ссылку оставил там все расчёты есть CHS адресация имеет предел в 8.4 ГБ
    Согласно разделу 8 базовый сервис может адресовать только к
    C=16,383, H=16, S=63, откуда в разделе 3٫2٫6 даны следующие расчёты
    resulting in a maximum device capacity of 8.4 gigabytes (16,383 ∗ 16 ∗ 63 ∗ 512 bytes per sector ≈ 8.4
    gigabytes).
    Из практики тех времён. Если диск меньше 8٫4 то биос не предоставляет к нему расширенный сервис. В лучшем случае расширенный возвращает ошибку. В худшем, что было номера дисков не совпадали.
     
    Jin X нравится это.
  5. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    224
    Адрес:
    Кольца Сатурна
    Точно, сектора же с 1 считаются!
    p.s. Ссылку гляну, спасибо.
     
  6. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    224
    Адрес:
    Кольца Сатурна
    Кстати, ещё вопросы у меня возникли:
    1. Все ли диски имеют 63 сектора на дорожке? Или бывает меньше?
    2. Всегда ли между MBR и первым разделом расстояние минимум 63 сектора (т.е. 62 сектора между ними)? Или бывает меньше (в каких-то системах)?
    3. Возможно ли установить винду на диск с размером сектора, не равным 512 байт (и вообще, встречаются ли такие жёсткие диски?)
    4. Встречается ли между MBR и первым разделом не нулевые заполнители, а какие-либо другие (скажем, из символов 255 или в виде повторяющихся слов а-ля 0x8000)? Кроме секторов со служебными данными, естественно.
    5. Можно ли установить и успешно загружать винду с USB, имеющим формат не HDD-USB, а FDD-USB, т.е. с boot-сектором в начале, а не MBR? Полагаю, что как минимум Win95/98 можно.
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.215
    Адрес:
    Fryazino
    Согласно разработчику биоса Phoenix стр 3 (стр 9) всегда 63 сектора.
    http://www-pc.uni-regensburg.de/hardware/TECHDOK/ATA_EDD_11.PDF
    Просто у виндоса крышу сносит если меньше сделать.

    Да встречаются 2К или 4К. Возможно через UEFI - сам не проверял но народ писал что удачно. Там Boot протокол обязан эммулировать размер сектора 512.
    Раз в год и палка стреляет. Но груб всех вытеснил.
    MBR. GPT, загрузчик такой как GRUB ,копия MBR, далее GRUB до 63 сектора включительно. Последнее число в настройках груба задаётся.

    А шаблоны заполнителя всякие бывают. Есть программы для полной очистке где можно свою фразу указать. А заводские диски они идут с 0000h
     
    Jin X нравится это.
  8. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    224
    Адрес:
    Кольца Сатурна
    А у Линукса и пр?

    А, ну то есть мы всё равно будем видеть 512 всегда?

    Кстати, а можно ли вообще заставить грузить систему через MBR, если включен UEFI? Ну, например, убрать раздел GPT из partition table? Или ещё как-то.
    Не меняя настроек BIOS'а.

    А про это что-нибудь знаешь?
     
  9. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    502
    Адрес:
    Russia
    Pavia не ответил, отвечу - загрузить ОС через Mbr, если включена загрузка через Uefi, нельзя, имхо. Оно будет ориентироваться не по секторам, а по файловой системе, находя и загружая EFI-файл. ГУАШ (UEFI в русской раскладке) для того и делался, чтобы сделать все по-новому. Кастомный же EFI-файл, если все правильно понимаю, ГУАШ скормить не получится, он должен быть хитро подписан.

    Повредите таблицу разделов - биос будет тупо искать Windows Boot Manager, и не найдет его.

    Пишете криптоутилиту для разделов?
     
    Последнее редактирование: 1 июл 2018
  10. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    224
    Адрес:
    Кольца Сатурна
    Вроде того. Но не для себя.
    Человек пока сам не до конца понимает, что хочет (вернее, хочет нереальных вещей: шифрования ВСЕГО харда на пару минут... или каких-то других альтернатив, но быстрых, при этом надёжных).
     
  11. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    224
    Адрес:
    Кольца Сатурна
    Говорят, были раньше диски с 17- и 28-секторными дорожками.

    Посмотрел сейчас XP под виртуалкой. Там первый раздел начинается с 56-го сектора. И всё работает.
    А 7 и 10 (надо думать, и 8-ка) размечают с 2048-го.

    Как я понял, в SSD минимальный блок (стало быть и сектор) – 4Кб. Но под DOS показывает, что сектор имеет размер 512 байт.

    При форматировании (если не перезаписывать потом) сектора вроде как 0E6h заполняются же (источник). Так что действительно лучше рассчитывать на то, что заполнено может быть чем угодно.