Если ядро Линукс обнаруживает наличие какого либо менеджера
диска на IDE диске,он попытается разметить диск так же
как и программа менеджер. Например OnTrack или EZ-Drive.
В тоже время если геометрия была задана в явном виде в
командной строке, то используется именно она.
Например строка :
`hd=
cyls,
heads,
secs'
может быстро избавить вас от совместимости с менеджером диска.
Переразметка производиться путем подбора,(последовательно пробуеться
4,8,16,32,64,128,25 головок, с H*
C константой) пока C <= 1024
или H = 255.
Далее в тексте приводятся детали в следующем порядке, заголовки подсекций - это фразы появляющиеся в соответствующих загрузочных сообщениях. Здесь и во всем остальном документе,типы разделов указываются в смешанном - двоично-десятичном виде.
Наличие EZ-Drive определяется по типу первого основного раздела.
Если EZ-Drive установлен,то тип будет равен 55.
Геометрия переразмечаеться как описано выше,и таблица разделов
в секторе 0 игнорируется,вместо неё считывается таблица разделов из
сектора 1.
Номера блоков диска не изменяются но операции записи обращенные
к сектору 0 перенаправляются на сектор 1.
Такое поведение можно изменить перекомпилировав ядро с :
#define FAKE_FDISK_FOR_EZDRIVE 0
в ide.c
.
Менеджер диска OnTrack (на первом диске) определяется по типу первого главного раздела - 54. Геометрия переразмечаеться как описано выше и диск "сдвигается" на 63 сектора (так что 63 сектор становиться сектором 0). После этого новый MBR (с таблицей разделов) считывается из нового сектора 0. Сдвиг производиться только для того чтобы высвободить место для DD0, поэтому на других дисках сдвига нет.
Наличие менеджера диска OnTrack (на других дисках) определяется по типу первого главного раздела, он имеет тип 51 или 53. Геометрия перераспределяется как описано выше.
Наличие старых версий OnTrack Diskmanager определяется не по типу раздела,а о по специальной подписи.(Проверьте что смещение записанное в 2 и 3м байтах MBR не превышает 430 и слово найденное по этому смещению эквивалентно 0x55AA + следующий байт четный). Геометрия опять-же разпределяеться как описано выше.
Также существует тест с помощью которого можно
вычислить производиться ли преобразования анализируя значения
start
и end
основных разделов:
Если некий раздел имеет значения начального и конечного секторов
1 и 63 и 31,63,127 или 254 головки,тогда,т.к. обычно разделы
оканчиваются на границе цилиндра, а интерфейс IDE использует
не более 16 головок, то вероятно задействовано BIOS преобразование
,и геометрия преразмечена для использования 32,64,128,255 головок.
Переразметка геометрии не производиться,если текущая геометрия
уже имеет 63 сектора на дорожку и соответственное число головок.
(обычно это означает,что переразметка уже была проведена)