OSDev
http://osdev.su/

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

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

28 бита это 268 435 455*512=137 438 952 960 байт сейчас винты на 500 000 000 000 считаются стандартными.
в магазин за 2Тб я не пойду, мне ни к чему

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

Yoda, меня давно интересовал вопрос, можно ли использовать двойное слово по смещению 20h в NTFS Boot Rec. для хранения старших 32 бит номера начального сектора раздела. Просто, если этого не делать, то тебе по-любому будет нужен GPT(гибридный MBR)-загрузчик (если конечно не "вшивать" номер начального сектора раздела прямо в MBR для последующей его передачи загрузчику раздела, что будет выглядеть весьма криво, прям как в GRUB'е).

P.S. Ну что ответы на буржуйском форуме вселили в тебя уверенность использовать 64-разрядную адресацию или по-прежнему сильно сомневаешься, делать это или нет?

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

phantom-84 писал(а):
Yoda, меня давно интересовал вопрос, можно ли использовать двойное слово по смещению 20h в NTFS Boot Rec. для хранения старших 32 бит номера начального сектора раздела.

На этот вопрос могут ответить только Билл Гейтс и его приспешники :)
Но не станут отвечать, т.к. им Билл Гейтс запретил :)

phantom-84 писал(а):
Просто, если этого не делать, то тебе по-любому будет нужен GPT(гибридный MBR)-загрузчик

Дык, он уже сделан :)

phantom-84 писал(а):
P.S. Ну что ответы на буржуйском форуме вселили в тебя уверенность использовать 64-разрядную адресацию или по-прежнему сильно сомневаешься, делать это или нет?

Уверенности быть не может, пока на практике не попробуешь. Это как 2*2=4, все говорят, что так должно быть, но пока сам не проверишь, гложет червяк сомнения. Но для себя я уже так и решил, как там советуют. Сделаю, если не заработает - вините BIOS, у меня всё в соответствии со спецификациями.

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

Yoda писал(а):
На этот вопрос могут ответить только Билл Гейтс и его приспешники :)
Но не станут отвечать, т.к. им Билл Гейтс запретил :)
Опять-таки было бы интересно посмотреть на значение этого поля для раздела, лежащего выше отметки 2 тб.

Цитата:
Дык, он уже сделан :)
А что не выкладываешь? Поддерживается интерфейс, описанный в EDD Spec.? Определяешь загрузочный раздел по флагу или по гуиду? Используешь резервную таблицу разделов? ...Я тоже планирую написать.

Цитата:
Сделаю, если не заработает - вините BIOS, у меня всё в соответствии со спецификациями.
...О чем я и говорил.

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

phantom-84 писал(а):
Опять-таки было бы интересно посмотреть на значение этого поля для раздела, лежащего выше отметки 2 тб.

Я уверен, там будет 0. Во-первых, ни для чего, кроме начальной загрузки это поле не нужно, а даже родной бут не поддерживает загрузку с разделов за пределами 2Тб. Во-вторых, там полное количество секторов FAT-32. Т.е. конфликт с другой ФС и с возможным детектированием типа ФС как NTFS.

phantom-84 писал(а):
А что не выкладываешь? Поддерживается интерфейс, описанный в EDD Spec.? Определяешь загрузочный раздел по флагу или по гуиду? Используешь резервную таблицу разделов? ...Я тоже планирую написать.

Я в своей теме отвечу. Вроде там обсуждать логичней.

phantom-84 писал(а):
Цитата:
Сделаю, если не заработает - вините BIOS, у меня всё в соответствии со спецификациями.
...О чем я и говорил.

Но червяк сомнения всё равно будет глодать – может где допустил простой ляп, а в реальных условиях не обкатал.

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

Yoda писал(а):
Я уверен, там будет 0. Во-первых, ни для чего, кроме начальной загрузки это поле не нужно, а даже родной бут не поддерживает загрузку с разделов за пределами 2Тб. Во-вторых, там полное количество секторов FAT-32. Т.е. конфликт с другой ФС и с возможным детектированием типа ФС как NTFS.
Да, я проверил, и экспишка, и семерка ругаются при обращении к NTFS-разделу с ненулевым значением этого поля. Т.е. это поле все-таки используется для детекта. Что касается "родного бута", то не следует забывать, что для другой ОС/ФС первичные загрузчики разделов для MBR-разметки и GPT-разметки могут отличаться. К примеру в своем загрузчике для NTFS ты можешь использовать 32-разрядную адресацию, оговорившись, что этот загрузчик предназначен для MBR-разметки. Хотя лично мне кажется, что лучше сразу делать универсальный загрузчик. Если обнаружены параметры от GPT-загрузчика, использовать 64-разрядный номер начального сектора раздела, иначе - 32-разрядный (который в случае чего можно взять и непосредственно из Boot Rec.).

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

Я именно универсальный и делаю. Так проще. Спеки напишу сразу по публикации.

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

Yoda писал(а):
Я именно универсальный и делаю. Так проще. Спеки напишу сразу по публикации.
Я писал(а):
иначе - 32-разрядный (который в случае чего можно взять и непосредственно из Boot Rec.).
Кстати, мне сейчас пришла идея даже в этом случае не явно обнулять старшие 32 бита, а добавить к Boot Rec. дополнительное поле для хранения старших 32 бит (изначально обнуленное) - будет еще универсальнее.

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

Может быть и ничего не получится, но для проверки можно попробовать сделать виртуальный диск в каком-нибудь эмуляторе PC (Bochs, VMware и т.п.). А чтобы образ диска уместился на небольшом физическом диске, нужно использовать атрибут "сжатия" на ФС, а также поблочный рост файла (есть в VMware).

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

NTFS поддерживает разрежённые (sparse) файлы, в них пустые сектора (заполненные нулями), не хранятся физически на диске. Т.о. в NTFS формально можно сделать пустой или почти пустой файл любого размера. Надо будет проверить.

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