Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CHS->LBA and MBR

18K
20 февраля 2009 года
logree
102 / / 27.09.2008
начнём с MBR согласноэтому
00h 1 Признак активности раздела
01h 1 Начало раздела - головка
02h 1 Начало раздела - сектор (биты 0-5), дорожка (биты 6,7)
03h 1 Начало раздела - дорожка (старшие биты 8,9 хранятся в байте номера сектора)
04h 1 Код типа раздела
05h 1 Конец раздела - головка
06h 1 Конец раздела - сектор (биты 0-5), дорожка (биты 6,7)
07h 1 Конец раздела - дорожка (старшие биты 8,9 хранятся в байте номера сектора)
08h 4 Смещение первого сектора
0Ch 4 Количество секторов раздела

если я использую LBA адресацию зачем нужны 1 2 3 5 6 7 если можно как я понял использовать 08h и 0Сh?

я нашёл формулу CHS->LBA
LBA = ( (cylinder * heads_per_cylinder + heads ) * sectors_per_track ) + sector - 1

что такое sectors_per_track разве дорожка это не целиндр?
что такое в физическом представление головка?
что-то я запутался
551
21 февраля 2009 года
Pavia
357 / / 22.04.2004
CHS устарел. И стоет его забыть.
Используй LBA

Смотри стандарты EFI (UEFI)
349
21 февраля 2009 года
Phantom-84
656 / / 27.10.2005
...а именно описание GPT.

Цитата:
если я использую LBA адресацию зачем нужны 1 2 3 5 6 7 если можно как я понял использовать 08h и 0Сh?

По устаревшим полям можно проверить непротиворечивость геометрии диска, при которой выполнялась его разметка, с текущей внешней геометрией диска - это убережет от возможности повредить данные на диски.

Цитата:
что такое sectors_per_track разве дорожка это не целиндр?

Здесь просто есть некоторая неоднозначность в трактовке понятий. Имеется в виду не общее количество секторов на всем цилиндре (в смысле на всех поверхностях), а количество секторов на одной поверхности в цилиндре (т.е. обычно 63).

Цитата:
что такое в физическом представление головка?

Думаю, тебя интересует не что такое головка, а что означает параметр head в CHS - это фактически номер поверхности:
heads_per_cylinder - по смыслу это number of heads (общее число головок/поверхностей)
heads - а это head number (номер головки/поверхности, под/на которой находится сектор)

18K
21 февраля 2009 года
logree
102 / / 27.09.2008
Цитата:
По устаревшим полям можно проверить непротиворечивость геометрии диска


те перевести CHS->LBA и сравнить с 8?

сейчас поля 123567 используются?

Цитата:
CHS устарел. И стоет его забыть.


я думаю что так и сделаю :)

349
21 февраля 2009 года
Phantom-84
656 / / 27.10.2005
Цитата:
те перевести CHS->LBA и сравнить с 8?

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

18K
21 февраля 2009 года
logree
102 / / 27.09.2008
не совсем я по позже перечитаю и постараюсь вникуть :)
а что за Partition Table Header у меня плоховато с английским по этому можно вкратце об этом? :)
18K
07 марта 2009 года
logree
102 / / 27.09.2008
Я думаю ничего страшного если я сделаю свой формат mbr :)
349
07 марта 2009 года
Phantom-84
656 / / 27.10.2005
Чего мелочиться-то, можешь и свою разметку диска гвоздиком нацарапать :)
18K
07 марта 2009 года
logree
102 / / 27.09.2008
Это намёк на то, что лучше этого не делать? :)
349
07 марта 2009 года
Phantom-84
656 / / 27.10.2005
Угу, сам посуди, каковы будут последствия такого подхода. В самом лучшем случае тебе придется писать драйверы для всех популярных систем, чтобы разделы диска могли быть ими распознаны. Но самое интересное, зачем тебе все это нужно? Че не устраивают существующие на данный момент соглашения? Или речь вообще идет не о формате mbr, а о mbr-загрузчике? Если так, то тогда дерзай. Существующие загрузчики очень несовершенны функционально. Про код я вообще молчу... такое ощущение, что люди на ассемблере писать почти разучились. Лично я уже написал свой основной mbr-загрузчик. На днях по просьбе моих товарищей быстро слепил из mbr-загрузчика для WinXP еще один загрузчик, расширяющий возможности загрузки. По ходу проанализировал оригинальный код и понял, что если будет время, нужно переписать загрузчик с нуля, включив в него эти же функции. На wasm'е недавно оставил пост на эту тему... если хочешь, можешь посмотреть. Название загрузчика alter.
18K
08 марта 2009 года
logree
102 / / 27.09.2008
Нет речь шла о mbr, я просто не понимаю зачем нужны поля CHS
Цитата:
проверить, совпадают ли heads_per_cylinder и sectors_per_track, хранящиеся на диски с аналогичными значениями, установленными или сэмулированными BIOS

зачем их проверять если работа с хардом всё равно через порты?

349
08 марта 2009 года
Phantom-84
656 / / 27.10.2005
Я уже ответил на этот вопрос. Внешняя CHS-геометрия диска сохраняется аппаратно. Она не должна противоречить параметрам геометрии, хранимым на самом диске в MBR. Может показаться, что различия в CHS-геометрии никак не влияют на линейную адресацию, т.к. при пересчете на линеные адреса последовательность секторов будет всегда одинаковой при любой CHS-геометрии, но все равно такого противоречия следует опасаться, т.к. CHS-геометрия могла быть искаженной изначально.
551
08 марта 2009 года
Pavia
357 / / 22.04.2004
Устаревшая структура когда адресация шла через CHS давно пора про нее забыть так как LBA поаявилась чуть ли не в 80 годах. В 90 точно.
Но мс продолжала поддерживать дос. до 2000 года.
CHS поля можно забить нулями так как они всеравно больше 8гб не поддерживают.

Еслли ты читал UFI то там написанно чем их забить.

Так как диски выросли до 2Тбайт то 32битного LBA мало ввели новый стандарт в 2006 году.
2^32 адресс кластера и 512байт в каждом кластере итого имеем 2ТБайта придел старой структуры.
2^28 *512=2^37 =128ГГбайт.
551
08 марта 2009 года
Pavia
357 / / 22.04.2004
Цитата: Phantom-84
Я уже ответил на этот вопрос. Внешняя CHS-геометрия диска сохраняется аппаратно. Она не должна противоречить параметрам геометрии, хранимым на самом диске в MBR. Может показаться, что различия в CHS-геометрии никак не влияют на линейную адресацию, т.к. при пересчете на линеные адреса последовательность секторов будет всегда одинаковой при любой CHS-геометрии, но все равно такого противоречия следует опасаться, т.к. CHS-геометрия могла быть искаженной изначально.


Проверять и заботиться о CHS не стоит. Так как она всеравно не соответствует действительности. Да и имеет ограничение в 8ГБ.

Фантом ты не путаешь MBR и BootRecord?

Лучше CHS забить нулями. Чтобы старые программы несталибы некорректно работать. Что-бы они вообще диск не видили.

349
08 марта 2009 года
Phantom-84
656 / / 27.10.2005
Я ничего не путаю. Нулями забивать не нужно! MBR неявно содержит параметры SPT и Heads. Специальное значение, не соответствующее действительности, может храниться только в составляющей Cylinder из тройки CHS. Это основано на соглашении, что любой раздел на диске должен заканчиваться в "конце" цилиндра. CHS-координаты концов всех разделов на диске должны совпадать по составляющим Head и Sector, причем Head=Heads-1, Sector=SPT.
551
08 марта 2009 года
Pavia
357 / / 22.04.2004
Цитата:
MBR неявно содержит параметры SPT и Heads.


Тем более, раз в неявном виде. А во-вторых эти данные никак не используются. Смысла в них нету. Если нужна совместимость с дос 1-5 тогда можно. Но это глупо. Зачем поддерживать совместимость с тем что еще в 80-х было разработанно? И сейчас не используется. У меня уже непомню сколько лет первый раздел больше 8ГБ так что там CHS не запишешь.
Так как StartingCHS и EndingCHS не указывают то геометри диска, а только ссылаются на номер первого и конечного. То они нужны для дисков менее 8Гб. Там используется CHS. Иначе ненужно.
Из UEFI StartingCHS =200h что соответствует LBA=1
EndingCHS=0FFFFFFh что означает что значение больше или не соответсвует данному полю.

Для дисков менее 8ГБ, можно оставить эти поля любыми. Так как в нормальных ОС и дисковых утилитах используется LBA. Остается момент загрузки.
А что требуется? Загрузить первый раздел. У нас наш загрузчик. Виндовский выбирает один активный раздел и грузит его по CHS. А в своем загрузчикы мы вольны загрузить что хотим и как хотим.

349
09 марта 2009 года
Phantom-84
656 / / 27.10.2005
Лично я от совместимости не тороплюсь отказываться. Конечно, приоритетным в драйверах является LBA-режим адресации, более того в сервисе, предоставляемом драйверами, фигурирует только линейная адресация, однако при невозможности использовать LBA-адресацию при взаимодействии с аппаратурой драйвер прежде всего пытается активизировать CHS-адресацию на основе данных из MBR, и только если оборудование отвергает предложенную геометрию или геометрия просто не проходит проверку по Heads, подбор геометрии идет относительно произвольно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог