CHS->LBA and 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 разве дорожка это не целиндр?
что такое в физическом представление головка?
что-то я запутался
Используй LBA
Смотри стандарты EFI (UEFI)
По устаревшим полям можно проверить непротиворечивость геометрии диска, при которой выполнялась его разметка, с текущей внешней геометрией диска - это убережет от возможности повредить данные на диски.
Здесь просто есть некоторая неоднозначность в трактовке понятий. Имеется в виду не общее количество секторов на всем цилиндре (в смысле на всех поверхностях), а количество секторов на одной поверхности в цилиндре (т.е. обычно 63).
Думаю, тебя интересует не что такое головка, а что означает параметр head в CHS - это фактически номер поверхности:
heads_per_cylinder - по смыслу это number of heads (общее число головок/поверхностей)
heads - а это head number (номер головки/поверхности, под/на которой находится сектор)
те перевести CHS->LBA и сравнить с 8?
сейчас поля 123567 используются?
я думаю что так и сделаю :)
нет - проверить, совпадают ли heads_per_cylinder и sectors_per_track, хранящиеся на диски с аналогичными значениями, установленными или сэмулированными BIOS (если работа с диском хотябы частично выполняется посредством CHS-функций BIOS), или установленными BIOS или хотябы поддердивающимися оборудованием, чтобы их можно было установить самостоятельно (если работа с диском ведется напрямую с использованием хотябы частично CHS-геометрии при посылке команд). Надеюсь, ты меня понял :)
а что за Partition Table Header у меня плоховато с английским по этому можно вкратце об этом? :)
зачем их проверять если работа с хардом всё равно через порты?
Но мс продолжала поддерживать дос. до 2000 года.
CHS поля можно забить нулями так как они всеравно больше 8гб не поддерживают.
Еслли ты читал UFI то там написанно чем их забить.
Так как диски выросли до 2Тбайт то 32битного LBA мало ввели новый стандарт в 2006 году.
2^32 адресс кластера и 512байт в каждом кластере итого имеем 2ТБайта придел старой структуры.
2^28 *512=2^37 =128ГГбайт.
Проверять и заботиться о CHS не стоит. Так как она всеравно не соответствует действительности. Да и имеет ограничение в 8ГБ.
Фантом ты не путаешь MBR и BootRecord?
Лучше CHS забить нулями. Чтобы старые программы несталибы некорректно работать. Что-бы они вообще диск не видили.
Тем более, раз в неявном виде. А во-вторых эти данные никак не используются. Смысла в них нету. Если нужна совместимость с дос 1-5 тогда можно. Но это глупо. Зачем поддерживать совместимость с тем что еще в 80-х было разработанно? И сейчас не используется. У меня уже непомню сколько лет первый раздел больше 8ГБ так что там CHS не запишешь.
Так как StartingCHS и EndingCHS не указывают то геометри диска, а только ссылаются на номер первого и конечного. То они нужны для дисков менее 8Гб. Там используется CHS. Иначе ненужно.
Из UEFI StartingCHS =200h что соответствует LBA=1
EndingCHS=0FFFFFFh что означает что значение больше или не соответсвует данному полю.
Для дисков менее 8ГБ, можно оставить эти поля любыми. Так как в нормальных ОС и дисковых утилитах используется LBA. Остается момент загрузки.
А что требуется? Загрузить первый раздел. У нас наш загрузчик. Виндовский выбирает один активный раздел и грузит его по CHS. А в своем загрузчикы мы вольны загрузить что хотим и как хотим.