OSDev
http://osdev.su/

INT 13h, AH=42h - extended read sectors
http://osdev.su/viewtopic.php?f=6&t=506
Страница 3 из 4

Автор:  phantom-84 [ 11 мар 2012, 14:28 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

А эмулятор справится с таким образом? Ведь для него он будет выглядеть, как огромный файл.

Автор:  Himik [ 11 мар 2012, 14:29 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

Я имел ввиду атрибут "Compress", который есть в диалоге "Свойства". А Sparse это где?

Сам я не пробовал такой большой диск. Для VMware образ не выглядит как большой файл, если использовать режим поблочного роста, там начальный размер файла 2ГБ.

Автор:  phantom-84 [ 11 мар 2012, 14:36 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

Himik писал(а):
А Sparse это где?
В самой NTFS такая возможность есть.

Автор:  Yoda [ 11 мар 2012, 16:35 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

phantom-84 писал(а):
А эмулятор справится с таким образом?

Вот уж не знаю. Пока не проверишь - не поймёшь.

Himik писал(а):
А Sparse это где?

Sparse-файлы получаются автоматически. При записи на диск ОС проверяет, что пишешь, и если видит большое количество нулевых секторов, их на диск не пишет, а в размещении файла (data run list) помещает соответствующие идентификаторы пустых блоков.

Автор:  Yoda [ 25 апр 2012, 11:23 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

Отчитываюсь.
Большинство БИОСов не работает с LBA48! Старшие 32 бита просто игнорируются. Из протестированных только одна мамка (самая свежая, которая закуплена в комплект к тому же винчестеру) действительно работает с запросами LBA48.
Но т.к. большинство протестированных мамок достаточно старые, я думаю, что ситуация не так плоха. Вполне возможно, что многие из последних мамок будут работать с запросами INT13 LBA48.

Автор:  grindars [ 25 апр 2012, 13:09 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

Я вас не обрадую. Моя новейшая мать на X79 тоже не поддерживает.

Автор:  SII [ 25 апр 2012, 13:44 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

Забили в связи с внедрением UEFI?

Автор:  phantom-84 [ 25 апр 2012, 15:09 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

Да, просто забили в связи с неактуальностью (в свое время), да так и не переписали. Хотя, если я не ошибаюсь, где-то проскакивало требование к системному разделу EFI, чтобы он не располагался "слишком высоко".

Yoda, то что такие случаи точно будут, я почти не сомневался. Вопрос в том, как BIOS'ы реагируют на появление большого номера. Если ругаются, то это еще ничего, а если молча проглатывают, обнуляя старшие 32 бита, то это уже хуже. В последнем случае, как вариант, можно делать что-то такое: "Загружаемый файл/каталог частично или полностью лежит за пределами пространства 2 тб. Продолжить (Y/N)?" Еще можно попробовать проверять количество секторов на устройстве, возвращаемое функцией 48h (кстати интересно, какое значение возвращают в этом поле BIOS'ы для больших дисков).

Автор:  grindars [ 25 апр 2012, 15:32 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

Я думаю, стоит рассчитывать на худший случай и предполагать, что биос отбрасывает старшие 32 бита.

Автор:  Yoda [ 25 апр 2012, 23:26 ]
Заголовок сообщения:  Re: INT 13h, AH=42h - extended read sectors

phantom-84 писал(а):
Вопрос в том, как BIOS'ы реагируют на появление большого номера. Если ругаются, то это еще ничего, а если молча проглатывают, обнуляя старшие 32 бита, то это уже хуже.

Все БИОСы, которые отказались работать с LBA48, ведут себя по наихудшему сценарию: просто игнорируют старшие 32 бита (обнуляют). Bochs выдаёт ошибку (и это правильно!), правда я пока не пробовал работать внутри Бокса с дисками больше 2 TiB, но в Боксе это и не актуально.

phantom-84 писал(а):
можно делать что-то такое: "Загружаемый файл/каталог частично или полностью лежит за пределами пространства 2 тб. Продолжить (Y/N)?" Еще можно попробовать проверять количество секторов на устройстве, возвращаемое функцией 48h (кстати интересно, какое значение возвращают в этом поле BIOS'ы для больших дисков).

Функцию 48h не проверял. Да и по большому счёту чем она поможет? Варианта два - либо int13 LBA48 работает, тогда legacy загрузка с диска возможна, либо не работает, тогда упс.

Я думаю, возможна определённая корреляция - UEFI-системы могут поддерживать также и LBA48 доступ по INT13.
grindars, а ваша мамка UEFI поддерживает?

Страница 3 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/