Детали IDE - семь геометрий
Драйвер IDE имеет пять источников информации о геометрии. Первый (G_user) указывается пользователем в командной строке. Второй (G_bios) - это таблица с фиксированными параметрами диска в BIOS (только для первого и второго дисков),которая считывается при запуске, до переключения в 32битный режим. Третий (G_phys) и четвертый (G_log) - возвращаются IDE контроллером, в ответ на команду IDENTIFY,это 'физическая' и 'текущая логическая' геометрии.
С другой стороны драйверу нужны две величины для определения геометрии - это G_fdisk,возвращаемая HDIO_GETGEO ioctl, и G_used,которая непосредственно используется при операциях ввода вывода.Оба этих параметра инициализируются для G_user если таковой указан,или для G_bios,когда информация предоставлена в CMOS, и G_phys в любом другом случае. Если использование G_log выглядит разумным,то G_used устанавливается для него. В случае же если G_phys выглядит оптимальным, то G_used устанавливается для G_phys. Примечание: термин 'выглядит оптимальным,разумным' - означает, что число головок лежит в пределах 1-16.
Говоря проще : параметры переданные в командной строке имеют больший приоритет, чем параметры полученные от BIOS,и будут определять геометрию которую видит fdisk,но если будет указана преобразованная геометрия (более 16 головок),то при операциях ввода/вывода она будет замещена геометрией полученной от команды IDENTIFY.
Заметит что G_bios достаточно ненадежен: для систем загружающихся с SCSI первый и второй диски, могут быть SCSI дисками,и геометрия которую BIOS сообщает для sda будет использована ядром для hda. Более того,диски которые не упомянуты в BIOS Setup,не будут видны BIOS. Это означает, что например на IDE системе,где hdb не упомянут в Setup, геометрия сообщаемая BIOS для первого и второго дисков, будет геометрий hda и hdc.